From 75b071796b2978fdbadd2018568d7163cb536d95 Mon Sep 17 00:00:00 2001 From: Ostap Piatkovskyi <44294945+ost-ptk@users.noreply.github.com> Date: Wed, 23 Aug 2023 15:30:40 +0300 Subject: [PATCH 001/243] added listener for window closing (#752) Co-authored-by: ost-ptk Co-authored-by: Vynnyk Dmytro --- .../signature-request/pages/sign-deploy/index.tsx | 9 +++++++-- .../signature-request/pages/sign-message/index.tsx | 11 ++++++++--- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/apps/signature-request/pages/sign-deploy/index.tsx b/src/apps/signature-request/pages/sign-deploy/index.tsx index 8f1fa65fa..af110d766 100644 --- a/src/apps/signature-request/pages/sign-deploy/index.tsx +++ b/src/apps/signature-request/pages/sign-deploy/index.tsx @@ -33,8 +33,7 @@ export function SignDeployPage() { const signingPublicKeyHex = searchParams.get('signingPublicKeyHex'); if (!requestId || !signingPublicKeyHex) { - const error = Error('Missing search param'); - throw error; + throw Error('Missing search param'); } const renderDeps = [requestId, signingPublicKeyHex]; @@ -125,6 +124,12 @@ export function SignDeployPage() { closeCurrentWindow(); }, [requestId]); + useEffect(() => { + window.addEventListener('beforeunload', handleCancel); + + return () => window.removeEventListener('beforeunload', handleCancel); + }, [handleCancel]); + return ( } diff --git a/src/apps/signature-request/pages/sign-message/index.tsx b/src/apps/signature-request/pages/sign-message/index.tsx index 1d8e5d8ae..2946a9d6b 100644 --- a/src/apps/signature-request/pages/sign-message/index.tsx +++ b/src/apps/signature-request/pages/sign-message/index.tsx @@ -1,4 +1,4 @@ -import React, { useCallback, useMemo } from 'react'; +import React, { useCallback, useEffect, useMemo } from 'react'; import { Trans, useTranslation } from 'react-i18next'; import { useSelector } from 'react-redux'; @@ -29,10 +29,9 @@ export function SignMessagePage() { const signingPublicKeyHex = searchParams.get('signingPublicKeyHex'); if (!requestId || !message || !signingPublicKeyHex) { - const error = Error( + throw Error( `Missing search param: ${requestId} ${message} ${signingPublicKeyHex}` ); - throw error; } const renderDeps = [requestId, signingPublicKeyHex]; @@ -108,6 +107,12 @@ export function SignMessagePage() { closeCurrentWindow(); }, [requestId]); + useEffect(() => { + window.addEventListener('beforeunload', handleCancel); + + return () => window.removeEventListener('beforeunload', handleCancel); + }, [handleCancel]); + return ( } From 606cb692972c1892a4cb8508f55faff4936f055b Mon Sep 17 00:00:00 2001 From: Ostap Piatkovskyi <44294945+ost-ptk@users.noreply.github.com> Date: Wed, 23 Aug 2023 15:34:16 +0300 Subject: [PATCH 002/243] fix displaying amount in CSPR only for Casper (#753) Co-authored-by: ost-ptk Co-authored-by: Vynnyk Dmytro --- src/apps/signature-request/pages/sign-deploy/deploy-value.tsx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/apps/signature-request/pages/sign-deploy/deploy-value.tsx b/src/apps/signature-request/pages/sign-deploy/deploy-value.tsx index 8077ee261..c883bfbfa 100644 --- a/src/apps/signature-request/pages/sign-deploy/deploy-value.tsx +++ b/src/apps/signature-request/pages/sign-deploy/deploy-value.tsx @@ -42,6 +42,10 @@ export function DeployValue({ } if (isKeyOfCurrencyValue(id)) { + if (isContractCall && id === 'amount' && showSimpleAmount) { + return {formatNumber(value)}; + } + const cspr = `${formatNumber(motesToCSPR(value), { precision: { max: 5 } })} CSPR`; From 1540c877162f10c118b4a0f247441d9abc054db5 Mon Sep 17 00:00:00 2001 From: Ostap Piatkovskyi <44294945+ost-ptk@users.noreply.github.com> Date: Wed, 23 Aug 2023 15:35:48 +0300 Subject: [PATCH 003/243] UI changed based on a new design (#754) Co-authored-by: ost-ptk Co-authored-by: Vynnyk Dmytro --- .../components/account-list/account-list.tsx | 43 ++++++------------- 1 file changed, 13 insertions(+), 30 deletions(-) diff --git a/src/libs/ui/components/account-list/account-list.tsx b/src/libs/ui/components/account-list/account-list.tsx index 3bdff04c6..0f04ec0d7 100644 --- a/src/libs/ui/components/account-list/account-list.tsx +++ b/src/libs/ui/components/account-list/account-list.tsx @@ -37,18 +37,15 @@ import { useWindowManager } from '@src/hooks'; const ListItemContainer = styled(FlexColumn)` min-height: 68px; height: 100%; + + padding: 12px 8px 12px 16px; `; -const ListItemClickableContainer = styled(FlexRow)<{ isConnected: boolean }>` +const ListItemClickableContainer = styled(FlexRow)` width: 100%; cursor: pointer; - padding-top: 12px; - padding-bottom: ${({ isConnected }) => (isConnected ? '8px' : '12px')}; - padding-left: 16px; `; -// Hidden account balance until a solution for fetching many balances will be ready -// https://github.com/make-software/casper-wallet/issues/374 -// const AccountBalanceListItemContainer = styled(LeftAlignedFlexColumn)``; + const AccountNameWithHashListItemContainer = styled(LeftAlignedFlexColumn)` width: 100%; @@ -56,16 +53,7 @@ const AccountNameWithHashListItemContainer = styled(LeftAlignedFlexColumn)` `; const ConnectionStatusBadgeContainer = styled.div` - padding-bottom: 8px; - margin-left: 56px; -`; - -const HashContainer = styled.div` - //margin-top: 4px; -`; - -const PopoverContainer = styled.div` - padding-right: 8px; + margin-left: 44px; `; const ButtonContainer = styled(CenteredFlexRow)` @@ -123,7 +111,6 @@ export const AccountList = ({ closeModal }: AccountListProps) => { changeActiveAccount(account.name); closeModal(event); }} - isConnected={isConnected} > { : false } /> - + { > {account.name} - - - + - - - + {isConnected && ( From 9c3058ca8afc597e07d6e5c1f0bf75a5db46d7a5 Mon Sep 17 00:00:00 2001 From: Ostap Piatkovskyi <44294945+ost-ptk@users.noreply.github.com> Date: Wed, 23 Aug 2023 15:36:17 +0300 Subject: [PATCH 004/243] fixed skeleton for NFT image and made small changes (#755) Co-authored-by: ost-ptk Co-authored-by: Vynnyk Dmytro --- src/apps/popup/index.tsx | 5 ++- .../components/nft-list/nft-preview-image.tsx | 3 +- .../components/nft-list/nft-token-card.tsx | 31 +++---------------- src/apps/popup/pages/home/index.tsx | 6 ---- src/apps/popup/pages/nft-details/index.tsx | 3 +- src/apps/popup/pages/transfer/index.tsx | 8 ++--- .../nft-media-placeholder.tsx | 27 +++++++++++----- src/libs/ui/components/tabs/tabs.tsx | 6 ++++ 8 files changed, 41 insertions(+), 48 deletions(-) diff --git a/src/apps/popup/index.tsx b/src/apps/popup/index.tsx index ac6ff4648..382df91bf 100644 --- a/src/apps/popup/index.tsx +++ b/src/apps/popup/index.tsx @@ -5,12 +5,15 @@ import { ThemeProvider } from 'styled-components'; import { GlobalStyle, themeConfig } from '@libs/ui'; import { ErrorBoundary } from '@src/libs/layout/error'; +import { useSubscribeToRedux } from '@src/hooks/use-subscribe-to-redux'; import { createMainStoreReplica, PopupState } from '@background/redux/utils'; import { popupWindowInit } from '@background/redux/windowManagement/actions'; import { AppRouter } from './app-router'; -import { useSubscribeToRedux } from '@src/hooks/use-subscribe-to-redux'; + +// skeleton styles +import 'react-loading-skeleton/dist/skeleton.css'; const Tree = () => { const [state, setState] = useState(null); diff --git a/src/apps/popup/pages/home/components/nft-list/nft-preview-image.tsx b/src/apps/popup/pages/home/components/nft-list/nft-preview-image.tsx index 86ceecfc1..2fa7a100e 100644 --- a/src/apps/popup/pages/home/components/nft-list/nft-preview-image.tsx +++ b/src/apps/popup/pages/home/components/nft-list/nft-preview-image.tsx @@ -27,11 +27,10 @@ export const NftPreviewImage = ({ }) => { const [error, setError] = useState(false); const [thumbnail, setThumbnail] = useState(null); - const [loading, setLoading] = useState(false); + const [loading, setLoading] = useState(true); const onError = useCallback(async () => { try { - setLoading(true); // TODO: check this error. It`s happening when we load thumbnail for video // index.js:1 Uncaught TypeError: Failed to execute 'readAsDataURL' on 'FileReader': parameter 1 is not of type 'Blob'. const thumbnails = await generateVideoThumbnails( diff --git a/src/apps/popup/pages/home/components/nft-list/nft-token-card.tsx b/src/apps/popup/pages/home/components/nft-list/nft-token-card.tsx index 01ffa237e..8f08b3914 100644 --- a/src/apps/popup/pages/home/components/nft-list/nft-token-card.tsx +++ b/src/apps/popup/pages/home/components/nft-list/nft-token-card.tsx @@ -44,31 +44,6 @@ export const NftTokenCard = forwardRef< const cachedUrl = getImageProxyUrl(preview?.value); - if (preview) { - return ( - { - navigate( - RouterPath.NftDetails.replace( - ':tokenId', - nftToken?.token_id || '' - ).replace( - ':contractPackageHash', - nftToken?.contract_package_hash || '' - ) - ); - }} - > - - - {metadataKeyValue?.name} - - - ); - } - return ( - + {preview ? ( + + ) : ( + + )} {metadataKeyValue?.name} diff --git a/src/apps/popup/pages/home/index.tsx b/src/apps/popup/pages/home/index.tsx index 19b3d647f..d6e9ac67c 100644 --- a/src/apps/popup/pages/home/index.tsx +++ b/src/apps/popup/pages/home/index.tsx @@ -71,12 +71,6 @@ const ButtonContainer = styled(CenteredFlexColumn)` cursor: pointer; `; -export const HomePageTabsId = { - Tokens: 0, - Deploys: 1, - NFTs: 2 -}; - export function HomePageContent() { const navigate = useTypedNavigate(); const { t } = useTranslation(); diff --git a/src/apps/popup/pages/nft-details/index.tsx b/src/apps/popup/pages/nft-details/index.tsx index 150ad39b4..54bd7ad73 100644 --- a/src/apps/popup/pages/nft-details/index.tsx +++ b/src/apps/popup/pages/nft-details/index.tsx @@ -10,6 +10,7 @@ import { } from '@libs/layout'; import { selectAccountNftTokens } from '@background/redux/account-info/selectors'; import { RouterPath, useTypedNavigate } from '@popup/router'; +import { HomePageTabsId } from '@libs/ui'; import { NftDetailsContent } from './content'; @@ -42,7 +43,7 @@ export const NftDetailsPage = () => { linkType="back" onClick={() => navigate(RouterPath.Home, { - state: { activeTabId: 2 } + state: { activeTabId: HomePageTabsId.NFTs } }) } /> diff --git a/src/apps/popup/pages/transfer/index.tsx b/src/apps/popup/pages/transfer/index.tsx index 9fda1c0a5..527bb487f 100644 --- a/src/apps/popup/pages/transfer/index.tsx +++ b/src/apps/popup/pages/transfer/index.tsx @@ -3,6 +3,7 @@ import { useSelector } from 'react-redux'; import { Trans, useTranslation } from 'react-i18next'; import { CLPublicKey } from 'casper-js-sdk'; import { CEP18Client } from 'casper-cep18-js-client'; +import { useParams } from 'react-router-dom'; import { FooterButtonsContainer, @@ -23,9 +24,8 @@ import { motesToCSPR, multiplyErc20Balance } from '@libs/ui/utils/formatters'; -import { getIsErc20Transfer, TransactionSteps } from './utils'; import { RouterPath, useTypedLocation, useTypedNavigate } from '@popup/router'; -import { Button, Typography } from '@libs/ui'; +import { Button, HomePageTabsId, Typography } from '@libs/ui'; import { ERC20_PAYMENT_AMOUNT_AVERAGE_MOTES, TRANSFER_COST_MOTES @@ -34,12 +34,12 @@ import { calculateSubmitButtonDisabled } from '@libs/ui/forms/get-submit-button- import { dispatchToMainStore } from '@background/redux/utils'; import { recipientPublicKeyAdded } from '@src/background/redux/recent-recipient-public-keys/actions'; import { signAndDeploy } from '@src/libs/services/deployer-service'; -import { useParams } from 'react-router-dom'; import { useActiveAccountErc20Tokens } from '@src/hooks/use-active-account-erc20-tokens'; import { selectAccountBalance } from '@src/background/redux/account-info/selectors'; import { dispatchFetchExtendedDeploysInfo } from '@src/libs/services/account-activity-service'; import { accountPendingTransactionsChanged } from '@src/background/redux/account-info/actions'; -import { HomePageTabsId } from '../home'; + +import { getIsErc20Transfer, TransactionSteps } from './utils'; export const TransferPage = () => { const { t } = useTranslation(); diff --git a/src/libs/ui/components/nft-media-placeholder/nft-media-placeholder.tsx b/src/libs/ui/components/nft-media-placeholder/nft-media-placeholder.tsx index 13003bd3e..40bd43b51 100644 --- a/src/libs/ui/components/nft-media-placeholder/nft-media-placeholder.tsx +++ b/src/libs/ui/components/nft-media-placeholder/nft-media-placeholder.tsx @@ -6,23 +6,34 @@ import { SvgIcon } from '@libs/ui'; import { CenteredFlexRow } from '@libs/layout'; export const ImageContainer = styled(CenteredFlexRow)` + position: relative; + width: 140px; - height: 145px; + height: 140px; border-radius: ${({ theme }) => theme.borderRadius.eight}px; `; +const SvgIconWrapper = styled.span(({ theme }) => ({ + position: 'absolute', + path: { + fill: theme.color.backgroundSecondary + } +})); + export const EmptyMediaPlaceholder = ({ children }: { children?: JSX.Element; }) => ( - + + + {children} ); @@ -33,8 +44,8 @@ export const LoadingMediaPlaceholder = () => { return ( ` padding: 4px 8px; `; +export const HomePageTabsId = { + Tokens: 0, + Deploys: 1, + NFTs: 2 +}; + export const Tab = styled.div``; interface TabProps { From 67623d76246a2a2973e3ffdc1abc209aaa5bae09 Mon Sep 17 00:00:00 2001 From: Ostap Piatkovskyi <44294945+ost-ptk@users.noreply.github.com> Date: Wed, 30 Aug 2023 15:40:59 +0300 Subject: [PATCH 005/243] feature: add remembering scroll position in the NFT, Deploys and Tokens list (#759) * added remembering scroll position in the NFT list and removed background fetch for nft * added remembering scroll position in the NFT list and removed background fetch for nft * added remembering scroll position in the Deploys list, removed background fetch for deploys and made some improvements * small improvements * added remembering scroll position in the Casper token activity list and small improvements * added remembering scroll position in the ERC20 token activity list and small improvements * removed duplication and small fix * fixed infinity scroll for NFT * fixed infinity scroll for Deploys tab * fixed infinity scroll for Casper token activity * fixed infinity scroll for ERC20 token activity * unused infinite scroll hook removed * updated error handler for account deploys and NFT tokens request --------- Co-authored-by: ost-ptk --- package-lock.json | 41 ++- package.json | 1 + .../popup/pages/account-settings/content.tsx | 4 +- .../popup/pages/activity-details/index.tsx | 23 +- .../home/components/deploys-list/index.tsx | 82 +++++ .../pages/home/components/nft-list/index.tsx | 80 +++-- .../components/nft-list/nft-token-card.tsx | 7 +- .../home/components/tokens-list/index.tsx | 4 +- src/apps/popup/pages/home/index.tsx | 2 +- .../popup/pages/token-details/content.tsx | 15 +- src/apps/popup/pages/token-details/index.tsx | 6 +- src/apps/popup/router/types.ts | 1 + src/background/index.ts | 14 +- src/background/redux/account-info/actions.ts | 28 +- src/background/redux/account-info/reducer.ts | 78 +++-- .../redux/account-info/selectors.ts | 6 + src/background/redux/account-info/types.ts | 13 +- src/background/service-message.ts | 6 +- src/constants.ts | 7 - src/hooks/index.ts | 15 +- src/hooks/use-account-info/index.ts | 1 - .../use-account-pending-transactions/index.ts | 1 - src/hooks/use-active-account-balance/index.ts | 1 - src/hooks/use-erc20-tokens/index.ts | 1 - src/hooks/use-fetch-account-activity/index.ts | 1 - .../use-fetch-account-activity.ts | 301 ------------------ src/hooks/use-fetch-account-deploys/index.ts | 1 + .../use-fetch-account-deploys.ts | 178 +++++++++++ src/hooks/use-fetch-account-info/index.ts | 1 + .../use-fetch-account-info.ts} | 2 +- .../use-fetch-active-account-balance/index.ts | 1 + .../use-fetch-active-account-balance.ts} | 2 +- .../index.ts | 1 + ...use-fetch-casper-token-account-activity.ts | 186 +++++++++++ .../index.ts | 1 + .../use-fetch-erc20-token-account-activity.ts | 187 +++++++++++ src/hooks/use-fetch-erc20-tokens/index.ts | 1 + .../use-fetch-erc20-tokens.ts} | 2 +- src/hooks/use-fetch-nft-tokens/index.ts | 1 + .../use-fetch-nft-tokens.ts} | 86 +++-- src/hooks/use-infinity-scroll/index.ts | 1 - .../user-infinity-scroll.ts | 36 --- .../index.ts | 1 + ...deploys-list-with-pending-transactions.ts} | 2 +- src/hooks/use-nft-tokens/index.ts | 1 - src/libs/layout/containers.ts | 32 ++ .../layout/header/header-data-updater.tsx | 14 +- .../layout/header/header-view-in-explorer.tsx | 4 +- src/libs/layout/popup-layout.tsx | 2 +- .../account-activity-service.ts | 4 +- .../erc20-token-activity-service.ts | 4 +- .../extended-deploys-service.ts | 12 +- .../account-activity-service/types.ts | 23 +- .../services/account-info/account-info.ts | 4 +- .../balance-service/balance-service.ts | 4 +- .../services/erc20-service/erc20-service.ts | 4 +- src/libs/services/nft-service/nft-service.ts | 10 +- src/libs/services/types.ts | 8 +- .../account-activity-plate.tsx | 65 ++-- .../account-casper-activity-plate.tsx | 62 ++-- .../activity-list/activity-list.tsx | 123 ------- .../casper-token-activity-list.tsx | 71 +++++ .../components/deploys-list/deploys-list.tsx | 55 ---- .../erc20-token-activity-list.tsx | 101 ++++++ .../loading-activity-view.tsx | 43 +++ .../no-activity-view/no-activity-view.tsx | 7 +- src/libs/ui/index.ts | 5 +- 67 files changed, 1314 insertions(+), 773 deletions(-) create mode 100644 src/apps/popup/pages/home/components/deploys-list/index.tsx delete mode 100644 src/hooks/use-account-info/index.ts delete mode 100644 src/hooks/use-account-pending-transactions/index.ts delete mode 100644 src/hooks/use-active-account-balance/index.ts delete mode 100644 src/hooks/use-erc20-tokens/index.ts delete mode 100644 src/hooks/use-fetch-account-activity/index.ts delete mode 100644 src/hooks/use-fetch-account-activity/use-fetch-account-activity.ts create mode 100644 src/hooks/use-fetch-account-deploys/index.ts create mode 100644 src/hooks/use-fetch-account-deploys/use-fetch-account-deploys.ts create mode 100644 src/hooks/use-fetch-account-info/index.ts rename src/hooks/{use-account-info/use-account-info.ts => use-fetch-account-info/use-fetch-account-info.ts} (95%) create mode 100644 src/hooks/use-fetch-active-account-balance/index.ts rename src/hooks/{use-active-account-balance/use-active-account-balance.ts => use-fetch-active-account-balance/use-fetch-active-account-balance.ts} (97%) create mode 100644 src/hooks/use-fetch-casper-token-account-activity/index.ts create mode 100644 src/hooks/use-fetch-casper-token-account-activity/use-fetch-casper-token-account-activity.ts create mode 100644 src/hooks/use-fetch-erc20-token-account-activity/index.ts create mode 100644 src/hooks/use-fetch-erc20-token-account-activity/use-fetch-erc20-token-account-activity.ts create mode 100644 src/hooks/use-fetch-erc20-tokens/index.ts rename src/hooks/{use-erc20-tokens/use-erc20-tokens.ts => use-fetch-erc20-tokens/use-fetch-erc20-tokens.ts} (96%) create mode 100644 src/hooks/use-fetch-nft-tokens/index.ts rename src/hooks/{use-nft-tokens/use-nft-tokens.ts => use-fetch-nft-tokens/use-fetch-nft-tokens.ts} (58%) delete mode 100644 src/hooks/use-infinity-scroll/index.ts delete mode 100644 src/hooks/use-infinity-scroll/user-infinity-scroll.ts create mode 100644 src/hooks/use-map-account-deploys-list-with-pending-transactions/index.ts rename src/hooks/{use-account-pending-transactions/use-account-pending-transactions.ts => use-map-account-deploys-list-with-pending-transactions/use-map-account-deploys-list-with-pending-transactions.ts} (96%) delete mode 100644 src/hooks/use-nft-tokens/index.ts delete mode 100644 src/libs/ui/components/activity-list/activity-list.tsx create mode 100644 src/libs/ui/components/casper-token-activity-list/casper-token-activity-list.tsx delete mode 100644 src/libs/ui/components/deploys-list/deploys-list.tsx create mode 100644 src/libs/ui/components/erc20-token-activity-list/erc20-token-activity-list.tsx create mode 100644 src/libs/ui/components/loading-activity-view/loading-activity-view.tsx diff --git a/package-lock.json b/package-lock.json index 903b6db44..0b147a0ad 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "Casper Wallet", - "version": "1.4.1", + "version": "1.5.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "Casper Wallet", - "version": "1.4.1", + "version": "1.5.0", "dependencies": { "@formatjs/intl": "2.6.2", "@hookform/resolvers": "2.9.10", @@ -39,6 +39,7 @@ "react-hot-loader": "4.13.1", "react-i18next": "12.0.0", "react-identicons": "^1.2.5", + "react-infinite-scroll-hook": "^4.1.1", "react-inlinesvg": "^3.0.1", "react-loading-skeleton": "^3.1.0", "react-player": "^2.12.0", @@ -21812,6 +21813,20 @@ "react-dom": "^17.0.1" } }, + "node_modules/react-infinite-scroll-hook": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/react-infinite-scroll-hook/-/react-infinite-scroll-hook-4.1.1.tgz", + "integrity": "sha512-1bu2572rF3DtjFMhIOzoasLMdYW0vMWxROtl99M5FYGSxm84Ro4aNBZW6ivgE45ofus4Ymo7jIS0Be3zcuLk8g==", + "dependencies": { + "react-intersection-observer-hook": "^2.1.1" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, "node_modules/react-inlinesvg": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/react-inlinesvg/-/react-inlinesvg-3.0.1.tgz", @@ -21824,6 +21839,14 @@ "react": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, + "node_modules/react-intersection-observer-hook": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/react-intersection-observer-hook/-/react-intersection-observer-hook-2.1.1.tgz", + "integrity": "sha512-MeFGpYtcfHB9v6oGqQuHAbSwaWBpd7yZ4wMIeVtboWRdGusAF4V+/8QQ0OKZ36Ez19grYnoDVhRUCjtwI2ZVaw==", + "peerDependencies": { + "react": ">=16.8.0" + } + }, "node_modules/react-is": { "version": "18.1.0", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.1.0.tgz", @@ -43567,6 +43590,14 @@ "integrity": "sha512-x7prkDoc2pD7wSl2C1pGxS+XAoSdq1ABWJWTBUimVTDVJArKOLd0B4wRUJpDm4r+9y7pgf8ylyPGsmlWSV5n2g==", "requires": {} }, + "react-infinite-scroll-hook": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/react-infinite-scroll-hook/-/react-infinite-scroll-hook-4.1.1.tgz", + "integrity": "sha512-1bu2572rF3DtjFMhIOzoasLMdYW0vMWxROtl99M5FYGSxm84Ro4aNBZW6ivgE45ofus4Ymo7jIS0Be3zcuLk8g==", + "requires": { + "react-intersection-observer-hook": "^2.1.1" + } + }, "react-inlinesvg": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/react-inlinesvg/-/react-inlinesvg-3.0.1.tgz", @@ -43576,6 +43607,12 @@ "react-from-dom": "^0.6.2" } }, + "react-intersection-observer-hook": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/react-intersection-observer-hook/-/react-intersection-observer-hook-2.1.1.tgz", + "integrity": "sha512-MeFGpYtcfHB9v6oGqQuHAbSwaWBpd7yZ4wMIeVtboWRdGusAF4V+/8QQ0OKZ36Ez19grYnoDVhRUCjtwI2ZVaw==", + "requires": {} + }, "react-is": { "version": "18.1.0", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.1.0.tgz", diff --git a/package.json b/package.json index 2049f07b6..e20be247b 100644 --- a/package.json +++ b/package.json @@ -87,6 +87,7 @@ "react-hot-loader": "4.13.1", "react-i18next": "12.0.0", "react-identicons": "^1.2.5", + "react-infinite-scroll-hook": "^4.1.1", "react-inlinesvg": "^3.0.1", "react-loading-skeleton": "^3.1.0", "react-player": "^2.12.0", diff --git a/src/apps/popup/pages/account-settings/content.tsx b/src/apps/popup/pages/account-settings/content.tsx index a373b0e27..5f93bdea1 100644 --- a/src/apps/popup/pages/account-settings/content.tsx +++ b/src/apps/popup/pages/account-settings/content.tsx @@ -19,7 +19,7 @@ import { } from '@src/background/redux/vault/selectors'; import { RouterPath, useTypedNavigate } from '@popup/router'; import { getAccountHashFromPublicKey } from '@libs/entities/Account'; -import { useAccountInfo } from '@hooks/use-account-info'; +import { useFetchAccountInfo } from '@src/hooks'; export function AccountSettingsPageContent() { const { t } = useTranslation(); @@ -34,7 +34,7 @@ export function AccountSettingsPageContent() { } const accountHash = getAccountHashFromPublicKey(account.publicKey); - const { accountInfoStandardName } = useAccountInfo(account); + const { accountInfoStandardName } = useFetchAccountInfo(account); return ( <> diff --git a/src/apps/popup/pages/activity-details/index.tsx b/src/apps/popup/pages/activity-details/index.tsx index 1c3f65647..c81f5031f 100644 --- a/src/apps/popup/pages/activity-details/index.tsx +++ b/src/apps/popup/pages/activity-details/index.tsx @@ -6,14 +6,15 @@ import { PopupHeader, PopupLayout } from '@libs/layout'; +import { HomePageTabsId } from '@libs/ui'; import { RouterPath, useTypedLocation, useTypedNavigate } from '@popup/router'; - -import { ActivityDetailsPageContent } from './content'; import { dispatchFetchExtendedDeploysInfo, ExtendedDeploy } from '@libs/services/account-activity-service'; +import { ActivityDetailsPageContent } from './content'; + export const ActivityDetailsPage = () => { const [deployInfo, setDeployInfo] = useState(null); @@ -47,7 +48,23 @@ export const ActivityDetailsPage = () => { withConnectionStatus renderSubmenuBarItems={() => ( <> - + { + if (activityDetailsData?.isDeploysList) { + navigate(RouterPath.Home, { + state: { + // set the active tab to deploys + activeTabId: HomePageTabsId.Deploys + } + }); + } + } + : undefined + } + /> )} diff --git a/src/apps/popup/pages/home/components/deploys-list/index.tsx b/src/apps/popup/pages/home/components/deploys-list/index.tsx new file mode 100644 index 000000000..3bc228965 --- /dev/null +++ b/src/apps/popup/pages/home/components/deploys-list/index.tsx @@ -0,0 +1,82 @@ +import React, { useEffect } from 'react'; +import { useSelector } from 'react-redux'; +import useInfiniteScroll from 'react-infinite-scroll-hook'; + +import { selectAccountDeploys } from '@background/redux/account-info/selectors'; +import { SpacingSize } from '@libs/layout'; +import { + AccountActivityPlate, + List, + LoadingActivityView, + NoActivityView +} from '@libs/ui'; +import { + useFetchAccountDeploys, + useMapAccountDeploysListWithPendingTransactions +} from '@src/hooks'; + +export const DeploysList = () => { + const { loadMoreDeploys, loading, hasNextPage } = useFetchAccountDeploys(); + const [sentryRef] = useInfiniteScroll({ + loading, + hasNextPage, + onLoadMore: loadMoreDeploys, + delayInMs: 0 + }); + + const accountDeploysList = useSelector(selectAccountDeploys); + + const { accountDeploysListWithPendingTransactions } = + useMapAccountDeploysListWithPendingTransactions(accountDeploysList); + + useEffect(() => { + const container = document.querySelector('#ms-container'); + + const position = localStorage.getItem('activityPlateYPosition'); + + if (position) { + container?.scrollTo(0, Number(position)); + localStorage.removeItem('activityPlateYPosition'); + } + }, []); + + const setActivityPlateYPosition = () => { + const container = document.querySelector('#ms-container'); + + localStorage.setItem( + 'activityPlateYPosition', + container?.scrollTop.toString() || '' + ); + }; + + return ( + <> + {accountDeploysListWithPendingTransactions != null && + accountDeploysListWithPendingTransactions?.length > 0 && ( + ( + + )} + marginLeftForItemSeparatorLine={54} + /> + )} + + {(loading || hasNextPage) && } + + {(accountDeploysListWithPendingTransactions == null || + accountDeploysListWithPendingTransactions.length === 0) && + !loading && ( + + )} + + ); +}; diff --git a/src/apps/popup/pages/home/components/nft-list/index.tsx b/src/apps/popup/pages/home/components/nft-list/index.tsx index 1a7a7da82..6f3968114 100644 --- a/src/apps/popup/pages/home/components/nft-list/index.tsx +++ b/src/apps/popup/pages/home/components/nft-list/index.tsx @@ -1,9 +1,11 @@ -import React from 'react'; +import React, { useEffect } from 'react'; import { Trans, useTranslation } from 'react-i18next'; import styled from 'styled-components'; import { useSelector } from 'react-redux'; +import Skeleton from 'react-loading-skeleton'; +import useInfiniteScroll from 'react-infinite-scroll-hook'; -import { useInfinityScroll, useNftTokens } from '@src/hooks'; +import { useFetchNftTokens } from '@src/hooks'; import { Tile, Typography } from '@libs/ui'; import { BorderContainer, @@ -35,12 +37,38 @@ const Container = styled(CenteredFlexRow)` export const NftList = () => { const { t } = useTranslation(); - const { loadMoreNftTokens } = useNftTokens(); - const { observerElement } = useInfinityScroll(loadMoreNftTokens); - const nftTokens = useSelector(selectAccountNftTokens); const nftTokensCount = useSelector(selectAccountNftTokensCount); + const { loadMoreNftTokens, loading, hasNextPage } = useFetchNftTokens(); + + const [sentryRef] = useInfiniteScroll({ + loading, + hasNextPage, + onLoadMore: loadMoreNftTokens, + delayInMs: 0 + }); + + useEffect(() => { + const container = document.querySelector('#ms-container'); + + const position = localStorage.getItem('nftTokenYPosition'); + + if (position) { + container?.scrollTo(0, Number(position)); + localStorage.removeItem('nftTokenYPosition'); + } + }, []); + + const setNftTokenYPosition = () => { + const container = document.querySelector('#ms-container'); + + localStorage.setItem( + 'nftTokenYPosition', + container?.scrollTop.toString() || '' + ); + }; + return ( @@ -52,35 +80,35 @@ export const NftList = () => { - {nftTokens.length === 0 && ( + {nftTokens != null && nftTokens.length > 0 && ( + + {nftTokens.map(nftToken => ( + + ))} + + )} + + {(loading || hasNextPage) && ( + + + + + )} + + {(nftTokens == null || nftTokens.length === 0) && !loading && ( {nftTokens?.length === 0 && No NFT tokens} + {nftTokens == null && Something went wrong} )} - - {nftTokens.length > 0 && ( - - {nftTokens.map((nftToken, index) => { - if (index === nftTokens.length - 1 && nftTokens.length >= 10) { - return ( - - ); - } - - return ( - - ); - })} - - )} ); }; diff --git a/src/apps/popup/pages/home/components/nft-list/nft-token-card.tsx b/src/apps/popup/pages/home/components/nft-list/nft-token-card.tsx index 8f08b3914..fcfe2fc18 100644 --- a/src/apps/popup/pages/home/components/nft-list/nft-token-card.tsx +++ b/src/apps/popup/pages/home/components/nft-list/nft-token-card.tsx @@ -26,8 +26,9 @@ export const NftTokenCard = forwardRef< Ref, { nftToken: NFTTokenResult | null; + onClick?: () => void; } ->(({ nftToken }, ref) => { +>(({ nftToken, onClick }, ref) => { const navigate = useTypedNavigate(); const nftTokenMetadataWithLinks = useMemo( @@ -58,6 +59,10 @@ export const NftTokenCard = forwardRef< nftToken?.contract_package_hash || '' ) ); + + if (onClick) { + onClick(); + } }} > {preview ? ( diff --git a/src/apps/popup/pages/home/components/tokens-list/index.tsx b/src/apps/popup/pages/home/components/tokens-list/index.tsx index 50ec2580c..1fdd2d59b 100644 --- a/src/apps/popup/pages/home/components/tokens-list/index.tsx +++ b/src/apps/popup/pages/home/components/tokens-list/index.tsx @@ -5,7 +5,7 @@ import styled from 'styled-components'; import { List, Typography, TokenPlate } from '@libs/ui'; import { SpaceBetweenFlexRow, SpacingSize } from '@libs/layout'; import { RouterPath, useTypedNavigate } from '@popup/router'; -import { TokenType, useCasperToken, useErc20Tokens } from '@src/hooks'; +import { TokenType, useCasperToken, useFetchErc20Tokens } from '@src/hooks'; import { formatErc20TokenBalance } from './utils'; @@ -22,7 +22,7 @@ export const TokensList = () => { const [totalAmountFiat, setTotalAmountFiat] = useState(null); const casperToken = useCasperToken(); - const erc20Tokens = useErc20Tokens(); + const erc20Tokens = useFetchErc20Tokens(); const { t } = useTranslation(); const navigate = useTypedNavigate(); diff --git a/src/apps/popup/pages/home/index.tsx b/src/apps/popup/pages/home/index.tsx index d6e9ac67c..cd55b45a6 100644 --- a/src/apps/popup/pages/home/index.tsx +++ b/src/apps/popup/pages/home/index.tsx @@ -25,7 +25,6 @@ import { import { AccountActionsMenuPopover, Avatar, - DeploysList, getFontSizeBasedOnTextLength, Hash, HashVariant, @@ -54,6 +53,7 @@ import { import { TokensList } from './components/tokens-list'; import { NftList } from './components/nft-list'; +import { DeploysList } from './components/deploys-list'; const DividerLine = styled.hr` margin: 16px 0; diff --git a/src/apps/popup/pages/token-details/content.tsx b/src/apps/popup/pages/token-details/content.tsx index e85d84b61..5853b7653 100644 --- a/src/apps/popup/pages/token-details/content.tsx +++ b/src/apps/popup/pages/token-details/content.tsx @@ -1,12 +1,17 @@ import React from 'react'; import { Trans, useTranslation } from 'react-i18next'; +import { useParams } from 'react-router-dom'; import { ContentContainer, ParagraphContainer, SpacingSize } from '@libs/layout'; -import { ActivityList, Typography } from '@libs/ui'; +import { + Erc20TokenActivityList, + Typography, + CasperTokenActivityList +} from '@libs/ui'; import { ContractPackageWithBalance } from '@libs/services/erc20-service'; import { Token } from './token'; @@ -20,6 +25,8 @@ export const TokenPageContent: React.FC = ({ }) => { const { t } = useTranslation(); + const { tokenName } = useParams(); + return ( @@ -33,7 +40,11 @@ export const TokenPageContent: React.FC = ({ Activity - + {tokenName === 'Casper' ? ( + + ) : ( + + )} ); }; diff --git a/src/apps/popup/pages/token-details/index.tsx b/src/apps/popup/pages/token-details/index.tsx index 2ed8b2e62..ac51084e0 100644 --- a/src/apps/popup/pages/token-details/index.tsx +++ b/src/apps/popup/pages/token-details/index.tsx @@ -1,4 +1,5 @@ import React from 'react'; +import { useParams } from 'react-router-dom'; import { HeaderSubmenuBarNavLink, @@ -6,13 +7,12 @@ import { PopupHeader, PopupLayout } from '@libs/layout'; +import { useFetchErc20Tokens } from '@src/hooks'; import { TokenPageContent } from './content'; -import { useErc20Tokens } from '@src/hooks'; -import { useParams } from 'react-router-dom'; export const TokenDetailPage = () => { - const erc20Tokens = useErc20Tokens(); + const erc20Tokens = useFetchErc20Tokens(); const { tokenName } = useParams(); return ( diff --git a/src/apps/popup/router/types.ts b/src/apps/popup/router/types.ts index 2814cf5e5..3a8a3d13c 100644 --- a/src/apps/popup/router/types.ts +++ b/src/apps/popup/router/types.ts @@ -10,6 +10,7 @@ export type LocationState = { type: TransferType | null; amount?: string; symbol?: string; + isDeploysList?: boolean; }; activeTabId?: number; tokenData?: TokenType | null; diff --git a/src/background/index.ts b/src/background/index.ts index f31b788bc..91468e800 100644 --- a/src/background/index.ts +++ b/src/background/index.ts @@ -121,11 +121,13 @@ import { accountErc20Changed, accountErc20TokensActivityChanged, accountErc20TokensActivityUpdated, - accountDeploysChanged, + accountDeploysAdded, accountDeploysUpdated, accountNftTokensAdded, accountNftTokensUpdated, - accountNftTokensCountChanged + accountNftTokensCountChanged, + accountDeploysCountChanged, + accountCasperActivityCountChanged } from '@background/redux/account-info/actions'; import { fetchErc20TokenActivity } from '@src/libs/services/account-activity-service/erc20-token-activity-service'; import { fetchNftTokens } from '@libs/services/nft-service'; @@ -233,7 +235,7 @@ browser.windows.onFocusChanged.addListener(async (windowId: number) => { }); browser.tabs.onActivated.addListener( - async ({ windowId, tabId }: browser.Tabs.OnActivatedActiveInfoType) => { + async ({ windowId }: browser.Tabs.OnActivatedActiveInfoType) => { updateOrigin(windowId); } ); @@ -538,11 +540,13 @@ browser.runtime.onMessage.addListener( case getType(accountErc20Changed): case getType(accountErc20TokensActivityChanged): case getType(accountErc20TokensActivityUpdated): - case getType(accountDeploysChanged): + case getType(accountDeploysAdded): case getType(accountDeploysUpdated): case getType(accountNftTokensAdded): case getType(accountNftTokensUpdated): case getType(accountNftTokensCountChanged): + case getType(accountDeploysCountChanged): + case getType(accountCasperActivityCountChanged): store.dispatch(action); return sendResponse(undefined); @@ -801,7 +805,7 @@ browser.runtime.onMessage.addListener( // ping mechanism to keep background script from destroing wallet session when it's unlocked function ping() { - browser.runtime.sendMessage('ping').catch(err => { + browser.runtime.sendMessage('ping').catch(() => { // ping }); } diff --git a/src/background/redux/account-info/actions.ts b/src/background/redux/account-info/actions.ts index 9d975a4bd..88c9df07c 100644 --- a/src/background/redux/account-info/actions.ts +++ b/src/background/redux/account-info/actions.ts @@ -24,7 +24,7 @@ export const accountCurrencyRateChanged = createAction( export const accountCasperActivityChanged = createAction( 'ACCOUNT_CASPER_ACTIVITY_CHANGED' -)(); +)(); export const accountCasperActivityUpdated = createAction( 'ACCOUNT_CASPER_ACTIVITY_UPDATED' @@ -32,11 +32,19 @@ export const accountCasperActivityUpdated = createAction( export const accountErc20TokensActivityChanged = createAction( 'ACCOUNT_ERC20_TOKEN_ACTIVITY_CHANGED' -)<{ activityList: Erc20TokenActionResult[]; contractPackageHash: string }>(); +)<{ + activityList: Erc20TokenActionResult[]; + contractPackageHash: string; + tokenActivityCount: number; +}>(); export const accountErc20TokensActivityUpdated = createAction( 'ACCOUNT_ERC20_TOKEN_ACTIVITY_UPDATED' -)<{ activityList: Erc20TokenActionResult[]; contractPackageHash: string }>(); +)<{ + activityList: Erc20TokenActionResult[]; + contractPackageHash: string; + tokenActivityCount: number; +}>(); export const accountInfoReset = createAction('ACCOUNT_INFO_RESET')(); @@ -48,8 +56,8 @@ export const accountPendingTransactionsRemove = createAction( 'ACCOUNT_PENDING_TRANSACTIONS_REMOVE' )(); -export const accountDeploysChanged = createAction('ACCOUNT_DEPLOYS_CHANGED')< - ExtendedDeployWithId[] +export const accountDeploysAdded = createAction('ACCOUNT_DEPLOYS_ADDED')< + ExtendedDeployWithId[] | null >(); export const accountDeploysUpdated = createAction('ACCOUNT_DEPLOYS_UPDATED')< @@ -57,7 +65,7 @@ export const accountDeploysUpdated = createAction('ACCOUNT_DEPLOYS_UPDATED')< >(); export const accountNftTokensAdded = createAction('ACCOUNT_NFT_TOKENS_ADDED')< - NFTTokenResult[] + NFTTokenResult[] | null >(); export const accountNftTokensUpdated = createAction( @@ -67,3 +75,11 @@ export const accountNftTokensUpdated = createAction( export const accountNftTokensCountChanged = createAction( 'ACCOUNT_NFT_TOKENS_COUNT_CHANGED' )(); + +export const accountDeploysCountChanged = createAction( + 'ACCOUNT_DEPLOYS_COUNT_CHANGED' +)(); + +export const accountCasperActivityCountChanged = createAction( + 'ACCOUNT_CASPER_ACTIVITY_COUNT_CHANGED' +)(); diff --git a/src/background/redux/account-info/reducer.ts b/src/background/redux/account-info/reducer.ts index 74fe909d5..dfe214578 100644 --- a/src/background/redux/account-info/reducer.ts +++ b/src/background/redux/account-info/reducer.ts @@ -12,11 +12,13 @@ import { accountPendingTransactionsChanged, accountPendingTransactionsRemove, accountErc20Changed, - accountDeploysChanged, + accountDeploysAdded, accountDeploysUpdated, accountNftTokensAdded, accountNftTokensUpdated, - accountNftTokensCountChanged + accountNftTokensCountChanged, + accountDeploysCountChanged, + accountCasperActivityCountChanged } from './actions'; const initialState: AccountInfoState = { @@ -25,13 +27,15 @@ const initialState: AccountInfoState = { amountFiat: null }, currencyRate: null, - accountCasperActivity: null, + accountCasperActivity: [], accountErc20TokensActivity: null, pendingTransactions: [], erc20Tokens: [], - accountDeploys: null, + accountDeploys: [], accountNftTokens: [], - nftTokensCount: 0 + nftTokensCount: 0, + accountDeploysCount: 0, + accountCasperActivityCount: 0 }; export const reducer = createReducer(initialState) @@ -73,30 +77,47 @@ export const reducer = createReducer(initialState) })) .handleAction( accountErc20TokensActivityChanged, - (state, { payload: { contractPackageHash, activityList } }) => ({ + ( + state, + { payload: { contractPackageHash, activityList, tokenActivityCount } } + ) => ({ ...state, accountErc20TokensActivity: { ...state.accountErc20TokensActivity, - [contractPackageHash]: activityList + [contractPackageHash]: { + tokenActivityCount, + tokenActivityList: activityList + } } }) ) .handleAction( accountErc20TokensActivityUpdated, - (state, { payload: { activityList, contractPackageHash } }) => ({ - ...state, - accountErc20TokensActivity: { - ...state.accountErc20TokensActivity, - [contractPackageHash]: - state.accountErc20TokensActivity && - state.accountErc20TokensActivity[contractPackageHash] - ? [ - ...state.accountErc20TokensActivity[contractPackageHash], - ...activityList - ] - : activityList - } - }) + ( + state, + { payload: { activityList, contractPackageHash, tokenActivityCount } } + ) => { + const tokensActivity = state.accountErc20TokensActivity || {}; + + return { + ...state, + accountErc20TokensActivity: { + ...state.accountErc20TokensActivity, + [contractPackageHash]: tokensActivity[contractPackageHash] + ? { + tokenActivityCount, + tokenActivityList: [ + ...tokensActivity[contractPackageHash].tokenActivityList, + ...activityList + ] + } + : { + tokenActivityCount, + tokenActivityList: activityList + } + } + }; + } ) .handleAction(accountPendingTransactionsChanged, (state, { payload }) => { const pendingTransactions = { @@ -118,7 +139,7 @@ export const reducer = createReducer(initialState) transaction => transaction.deployHash !== payload ) })) - .handleAction(accountDeploysChanged, (state, { payload }) => ({ + .handleAction(accountDeploysAdded, (state, { payload }) => ({ ...state, accountDeploys: payload })) @@ -135,9 +156,20 @@ export const reducer = createReducer(initialState) })) .handleAction(accountNftTokensUpdated, (state, { payload }) => ({ ...state, - accountNftTokens: [...state.accountNftTokens, ...payload] + accountNftTokens: + state.accountNftTokens != null + ? [...state.accountNftTokens, ...payload] + : payload })) .handleAction(accountNftTokensCountChanged, (state, { payload }) => ({ ...state, nftTokensCount: payload + })) + .handleAction(accountDeploysCountChanged, (state, { payload }) => ({ + ...state, + accountDeploysCount: payload + })) + .handleAction(accountCasperActivityCountChanged, (state, { payload }) => ({ + ...state, + accountCasperActivityCount: payload })); diff --git a/src/background/redux/account-info/selectors.ts b/src/background/redux/account-info/selectors.ts index 2a3ea68ff..eb1ba9f8b 100644 --- a/src/background/redux/account-info/selectors.ts +++ b/src/background/redux/account-info/selectors.ts @@ -26,3 +26,9 @@ export const selectAccountNftTokens = (state: RootState) => export const selectAccountNftTokensCount = (state: RootState) => state.accountInfo.nftTokensCount; + +export const selectAccountDeploysCount = (state: RootState) => + state.accountInfo.accountDeploysCount; + +export const selectAccountCasperActivityCount = (state: RootState) => + state.accountInfo.accountCasperActivityCount; diff --git a/src/background/redux/account-info/types.ts b/src/background/redux/account-info/types.ts index af4668025..d969fe540 100644 --- a/src/background/redux/account-info/types.ts +++ b/src/background/redux/account-info/types.ts @@ -11,10 +11,17 @@ export interface AccountInfoState { balance: ActiveAccountBalance; erc20Tokens: ContractPackageWithBalance[]; currencyRate: number | null; - accountCasperActivity: TransferResultWithId[] | null; - accountErc20TokensActivity: Record | null; + accountCasperActivity: TransferResultWithId[]; + accountErc20TokensActivity: Record | null; pendingTransactions: ExtendedDeployWithId[]; accountDeploys: ExtendedDeployWithId[] | null; - accountNftTokens: NFTTokenResult[]; + accountNftTokens: NFTTokenResult[] | null; nftTokensCount: number; + accountDeploysCount: number; + accountCasperActivityCount: number; +} + +interface AccountErc20TokenActivity { + tokenActivityList: Erc20TokenActionResult[]; + tokenActivityCount: number; } diff --git a/src/background/service-message.ts b/src/background/service-message.ts index 1b10cf9e1..8cffd7e6d 100644 --- a/src/background/service-message.ts +++ b/src/background/service-message.ts @@ -7,7 +7,7 @@ import { TransferResult, ExtendedDeploy } from 'src/libs/services/account-activity-service'; -import { PaginatedResponse } from '@libs/services/types'; +import { ErrorResponse, PaginatedResponse } from '@libs/services/types'; import { ContractPackageWithBalance } from '@libs/services/erc20-service'; import { NFTTokenResult } from '@libs/services/nft-service'; @@ -66,7 +66,7 @@ export const serviceMessage = { >(), fetchAccountExtendedDeploysResponse: createAction( 'FETCH_ACCOUNT_DEPLOYS_RESPONSE' - ), Meta>(), + ) | ErrorResponse, Meta>(), fetchAccountCasperActivityRequest: createAction( 'FETCH_ACCOUNT_CASPER_ACTIVITY' )<{ accountHash: string; page: number }, Meta>(), @@ -78,7 +78,7 @@ export const serviceMessage = { Meta >(), fetchNftTokensResponse: createAction('FETCH_NFT_TOKENS_RESPONSE')< - PaginatedResponse, + PaginatedResponse | ErrorResponse, Meta >() }; diff --git a/src/constants.ts b/src/constants.ts index 8d2d32ebb..6eb36221b 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -75,13 +75,6 @@ export enum NetworkName { Testnet = 'casper-test' } -export enum ActivityListTransactionsType { - All = 'All', - Casper = 'Casper', - Erc20 = 'Erc20', - Deploys = 'Deploys' -} - export enum TransferType { Sent = 'Sent', Received = 'Received', diff --git a/src/hooks/index.ts b/src/hooks/index.ts index 3a1201ad1..5b51ef0d4 100644 --- a/src/hooks/index.ts +++ b/src/hooks/index.ts @@ -1,10 +1,11 @@ export * from './use-window-manager'; -export * from './use-account-info'; -export * from './use-active-account-balance'; +export * from './use-fetch-account-info'; +export * from './use-fetch-active-account-balance'; export * from './use-casper-token'; -export * from './use-fetch-account-activity'; -export * from './use-erc20-tokens'; -export * from './use-infinity-scroll'; +export * from './use-fetch-erc20-tokens'; export * from './use-copy-to-clipboard'; -export * from './use-account-pending-transactions'; -export * from './use-nft-tokens'; +export * from './use-map-account-deploys-list-with-pending-transactions'; +export * from './use-fetch-nft-tokens'; +export * from './use-fetch-account-deploys'; +export * from './use-fetch-casper-token-account-activity'; +export * from './use-fetch-erc20-token-account-activity'; diff --git a/src/hooks/use-account-info/index.ts b/src/hooks/use-account-info/index.ts deleted file mode 100644 index ae5c17e1a..000000000 --- a/src/hooks/use-account-info/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './use-account-info'; diff --git a/src/hooks/use-account-pending-transactions/index.ts b/src/hooks/use-account-pending-transactions/index.ts deleted file mode 100644 index 78df21c33..000000000 --- a/src/hooks/use-account-pending-transactions/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './use-account-pending-transactions'; diff --git a/src/hooks/use-active-account-balance/index.ts b/src/hooks/use-active-account-balance/index.ts deleted file mode 100644 index c4a838b0d..000000000 --- a/src/hooks/use-active-account-balance/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './use-active-account-balance'; diff --git a/src/hooks/use-erc20-tokens/index.ts b/src/hooks/use-erc20-tokens/index.ts deleted file mode 100644 index c070d15f5..000000000 --- a/src/hooks/use-erc20-tokens/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './use-erc20-tokens'; diff --git a/src/hooks/use-fetch-account-activity/index.ts b/src/hooks/use-fetch-account-activity/index.ts deleted file mode 100644 index fab9617fb..000000000 --- a/src/hooks/use-fetch-account-activity/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './use-fetch-account-activity'; diff --git a/src/hooks/use-fetch-account-activity/use-fetch-account-activity.ts b/src/hooks/use-fetch-account-activity/use-fetch-account-activity.ts deleted file mode 100644 index 3a2ff5c96..000000000 --- a/src/hooks/use-fetch-account-activity/use-fetch-account-activity.ts +++ /dev/null @@ -1,301 +0,0 @@ -import { useCallback, useEffect, useRef, useState } from 'react'; -import { useSelector } from 'react-redux'; - -import { selectVaultActiveAccount } from '@background/redux/vault/selectors'; -import { selectApiConfigBasedOnActiveNetwork } from '@background/redux/settings/selectors'; -import { - dispatchFetchAccountCasperActivity, - dispatchFetchAccountExtendedDeploys, - Erc20TokenActionResult, - ExtendedDeploy, - TransferResult -} from '@libs/services/account-activity-service'; -import { dispatchToMainStore } from '@background/redux/utils'; -import { - accountCasperActivityChanged, - accountCasperActivityUpdated, - accountDeploysChanged, - accountDeploysUpdated, - accountErc20TokensActivityChanged, - accountErc20TokensActivityUpdated -} from '@background/redux/account-info/actions'; -import { useForceUpdate } from '@popup/hooks/use-force-update'; -import { - ACCOUNT_CASPER_ACTIVITY_REFRESH_RATE, - ActivityListTransactionsType -} from '@src/constants'; -import { getAccountHashFromPublicKey } from '@src/libs/entities/Account'; -import { DataWithPayload, PaginatedResponse } from '@src/libs/services/types'; -import { dispatchFetchErc20TokenActivity } from '@src/libs/services/account-activity-service/erc20-token-activity-service'; -import { - selectAccountCasperActivity, - selectAccountDeploys, - selectAccountErc20TokensActivity -} from '@background/redux/account-info/selectors'; - -export const useFetchAccountActivity = ( - transactionsType: ActivityListTransactionsType, - contractPackageHash?: string -) => { - const [accountCasperActivityPage, setAccountCasperActivityPage] = useState(1); - const [accountErc20ActivityPage, setAccountErc20ActivityPage] = useState(1); - const [accountCasperActivityPageCount, setAccountCasperActivityPageCount] = - useState(0); - const [accountErc20ActivityPageCount, setAccountErc20ActivityPageCount] = - useState(0); - const [accountDeploysPage, setAccountDeploysPage] = useState(1); - const [accountDeploysPageCount, setAccountDeploysPageCount] = useState(0); - - const activeAccount = useSelector(selectVaultActiveAccount); - const { casperApiUrl } = useSelector(selectApiConfigBasedOnActiveNetwork); - const accountCasperActivityList = useSelector(selectAccountCasperActivity); - const erc20TokensActivityRecord = - useSelector(selectAccountErc20TokensActivity) || {}; - const accountDeploys = useSelector(selectAccountDeploys); - - const tokenActivityList = - erc20TokensActivityRecord[contractPackageHash || ''] || null; - - const effectTimeoutRef = useRef(); - const forceUpdate = useForceUpdate(); - - const activeAccountHash = activeAccount?.publicKey - ? getAccountHashFromPublicKey(activeAccount?.publicKey) - : null; - - const createHandlePayload = useCallback( - ( - payloadAction: any, - page = 1, - setPage, - setPageCount, - activityListLength, - contractPackageHash?: string - ) => - < - T extends DataWithPayload< - PaginatedResponse< - Erc20TokenActionResult | TransferResult | ExtendedDeploy - > - > - >({ - payload: { data: accountTransactions, pageCount, itemCount } - }: T) => { - if (itemCount === activityListLength) return; - - const transactions = - accountTransactions?.map(transaction => { - let id; - if ('deploy_hash' in transaction) { - id = transaction.deploy_hash; - } else { - id = transaction.deployHash; - } - return { - ...transaction, - id - }; - }) || []; - - if (contractPackageHash) { - dispatchToMainStore( - payloadAction({ - activityList: transactions, - contractPackageHash: contractPackageHash - }) - ); - } else { - dispatchToMainStore(payloadAction(transactions)); - } - - // Set page to 2, so we can fetch more transactions when the user scrolls down - setPage(page + 1); - setPageCount(pageCount); - }, - [] - ); - - const handleError = (error: Error) => { - console.error('Account activity request failed:', error); - }; - - useEffect(() => { - if (!activeAccount?.publicKey || !activeAccountHash) return; - - // fetch all - if (transactionsType === ActivityListTransactionsType.All) { - dispatchFetchAccountCasperActivity(activeAccountHash, 1) - .then( - createHandlePayload( - accountCasperActivityChanged, - 1, - setAccountCasperActivityPage, - setAccountCasperActivityPageCount, - accountCasperActivityList?.length - ) - ) - .catch(handleError); - - dispatchFetchAccountExtendedDeploys(activeAccount?.publicKey, 1) - .then( - createHandlePayload( - accountDeploysChanged, - 1, - setAccountDeploysPage, - setAccountDeploysPageCount, - accountDeploys?.length - ) - ) - .catch(handleError); - } - - // fetch casper - if (transactionsType === ActivityListTransactionsType.Casper) { - dispatchFetchAccountCasperActivity(activeAccountHash, 1) - .then( - createHandlePayload( - accountCasperActivityChanged, - 1, - setAccountCasperActivityPage, - setAccountCasperActivityPageCount, - accountCasperActivityList?.length - ) - ) - .catch(handleError); - } - - // fetch erc20 - if ( - transactionsType === ActivityListTransactionsType.Erc20 && - contractPackageHash != null - ) { - dispatchFetchErc20TokenActivity(activeAccountHash, contractPackageHash, 1) - .then( - createHandlePayload( - accountErc20TokensActivityChanged, - 1, - setAccountErc20ActivityPage, - setAccountErc20ActivityPageCount, - tokenActivityList?.length, - contractPackageHash - ) - ) - .catch(handleError); - } - - // fetch deploys - if (transactionsType === ActivityListTransactionsType.Deploys) { - dispatchFetchAccountExtendedDeploys(activeAccount?.publicKey, 1) - .then( - createHandlePayload( - accountDeploysChanged, - 1, - setAccountDeploysPage, - setAccountDeploysPageCount, - accountDeploys?.length - ) - ) - .catch(handleError); - } - - // will cause effect to run again after timeout - effectTimeoutRef.current = setTimeout(() => { - forceUpdate(); - }, ACCOUNT_CASPER_ACTIVITY_REFRESH_RATE + 1); - - return () => { - clearTimeout(effectTimeoutRef.current); - }; - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [activeAccount?.publicKey, casperApiUrl, forceUpdate]); - - const fetchMoreTransactions = useCallback(() => { - if (!activeAccount?.publicKey || !activeAccountHash) return; - - // fetch casper - if (transactionsType === ActivityListTransactionsType.Casper) { - // Prevent fetching more transactions if we already fetched all of them - if (accountCasperActivityPage > accountCasperActivityPageCount) return; - - dispatchFetchAccountCasperActivity( - activeAccountHash, - accountCasperActivityPage - ) - .then( - createHandlePayload( - accountCasperActivityUpdated, - accountCasperActivityPage, - setAccountCasperActivityPage, - setAccountCasperActivityPageCount, - accountCasperActivityList?.length - ) - ) - .catch(handleError); - } - - // fetch erc20 - if ( - transactionsType === ActivityListTransactionsType.Erc20 && - contractPackageHash != null - ) { - // Prevent fetching more transactions if we already fetched all of them - if (accountErc20ActivityPage > accountErc20ActivityPageCount) return; - - dispatchFetchErc20TokenActivity( - activeAccountHash, - contractPackageHash, - accountErc20ActivityPage - ) - .then( - createHandlePayload( - accountErc20TokensActivityUpdated, - accountErc20ActivityPage, - setAccountErc20ActivityPage, - setAccountErc20ActivityPageCount, - tokenActivityList?.length, - contractPackageHash - ) - ) - .catch(handleError); - } - - // fetch deploys - if (transactionsType === ActivityListTransactionsType.Deploys) { - // Prevent fetching more transactions if we already fetched all of them - if (accountDeploysPage > accountDeploysPageCount) return; - - dispatchFetchAccountExtendedDeploys( - activeAccount?.publicKey, - accountDeploysPage - ) - .then( - createHandlePayload( - accountDeploysUpdated, - accountDeploysPage, - setAccountDeploysPage, - setAccountDeploysPageCount, - accountDeploys?.length - ) - ) - .catch(handleError); - } - }, [ - activeAccount?.publicKey, - transactionsType, - contractPackageHash, - accountCasperActivityPage, - accountCasperActivityPageCount, - activeAccountHash, - createHandlePayload, - accountCasperActivityList?.length, - accountErc20ActivityPage, - accountErc20ActivityPageCount, - tokenActivityList?.length, - accountDeploysPage, - accountDeploysPageCount, - accountDeploys?.length - ]); - return { - fetchMoreTransactions - }; -}; diff --git a/src/hooks/use-fetch-account-deploys/index.ts b/src/hooks/use-fetch-account-deploys/index.ts new file mode 100644 index 000000000..c2d5d9d03 --- /dev/null +++ b/src/hooks/use-fetch-account-deploys/index.ts @@ -0,0 +1 @@ +export * from './use-fetch-account-deploys'; diff --git a/src/hooks/use-fetch-account-deploys/use-fetch-account-deploys.ts b/src/hooks/use-fetch-account-deploys/use-fetch-account-deploys.ts new file mode 100644 index 000000000..c42b29f90 --- /dev/null +++ b/src/hooks/use-fetch-account-deploys/use-fetch-account-deploys.ts @@ -0,0 +1,178 @@ +import { useCallback, useEffect, useRef, useState } from 'react'; +import { useSelector } from 'react-redux'; + +import { selectVaultActiveAccount } from '@background/redux/vault/selectors'; +import { selectApiConfigBasedOnActiveNetwork } from '@background/redux/settings/selectors'; +import { + selectAccountDeploys, + selectAccountDeploysCount +} from '@background/redux/account-info/selectors'; +import { useForceUpdate } from '@popup/hooks/use-force-update'; +import { dispatchFetchAccountExtendedDeploys } from '@libs/services/account-activity-service'; +import { ACCOUNT_CASPER_ACTIVITY_REFRESH_RATE } from '@src/constants'; +import { dispatchToMainStore } from '@background/redux/utils'; +import { + accountDeploysAdded, + accountDeploysCountChanged, + accountDeploysUpdated +} from '@background/redux/account-info/actions'; + +export const useFetchAccountDeploys = () => { + const [loading, setLoading] = useState(false); + const [accountDeploysPage, setAccountDeploysPage] = useState(2); + const [hasNextPage, setHasNextPage] = useState(false); + const [isFirstPageLoad, setIsFirstPageLoad] = useState(false); + + const activeAccount = useSelector(selectVaultActiveAccount); + const { casperApiUrl } = useSelector(selectApiConfigBasedOnActiveNetwork); + const accountDeploysList = useSelector(selectAccountDeploys); + const accountDeploysCount = useSelector(selectAccountDeploysCount); + + const effectTimeoutRef = useRef(); + const forceUpdate = useForceUpdate(); + + const handleError = (error: Error) => { + console.error('Account deploys request failed:', error); + }; + + useEffect(() => { + if (accountDeploysList && accountDeploysCount > accountDeploysList.length) { + setHasNextPage(true); + } + + if ( + (accountDeploysList == null || accountDeploysList.length === 0) && + accountDeploysCount === 0 + ) { + setAccountDeploysPage(2); + return; + } + }, [ + accountDeploysList, + accountDeploysList?.length, + accountDeploysCount, + accountDeploysPage + ]); + + useEffect(() => { + if (!activeAccount?.publicKey) return; + + // set loading to true only for the first time + if ( + (accountDeploysList == null || accountDeploysList.length === 0) && + !isFirstPageLoad + ) { + setLoading(true); + } + + dispatchFetchAccountExtendedDeploys(activeAccount?.publicKey, 1) + .then(({ payload }) => { + if ('data' in payload) { + const { data: deploysList, pageCount, itemCount } = payload; + + if ( + itemCount === accountDeploysList?.length || + itemCount === accountDeploysCount + ) { + return; + } + + const deploysListWithId = deploysList.map(deploy => ({ + ...deploy, + id: deploy.deployHash + })); + + dispatchToMainStore(accountDeploysAdded(deploysListWithId)); + dispatchToMainStore(accountDeploysCountChanged(itemCount)); + + if (pageCount > 1) { + setHasNextPage(true); + } + } else { + dispatchToMainStore(accountDeploysAdded(null)); + setHasNextPage(false); + } + }) + .catch(handleError) + .finally(() => { + setTimeout(() => { + setLoading(false); + }, 300); + setIsFirstPageLoad(true); + }); + + // will cause effect to run again after timeout + effectTimeoutRef.current = setTimeout(() => { + forceUpdate(); + }, ACCOUNT_CASPER_ACTIVITY_REFRESH_RATE + 1); + + return () => { + clearTimeout(effectTimeoutRef.current); + }; + }, [ + accountDeploysCount, + accountDeploysList, + accountDeploysList?.length, + activeAccount?.publicKey, + casperApiUrl, + forceUpdate, + isFirstPageLoad + ]); + + const loadMoreDeploys = useCallback(() => { + if (!activeAccount?.publicKey) return; + + setLoading(true); + + dispatchFetchAccountExtendedDeploys( + activeAccount?.publicKey, + accountDeploysPage + ) + .then(({ payload }) => { + if ('data' in payload) { + const { data: deploysList, pageCount, itemCount } = payload; + + if (itemCount === accountDeploysList?.length) { + setHasNextPage(false); + return; + } + + const deploysListWithId = deploysList.map(deploy => ({ + ...deploy, + id: deploy.deployHash + })); + + dispatchToMainStore(accountDeploysUpdated(deploysListWithId)); + + if (accountDeploysPage + 1 <= pageCount) { + setAccountDeploysPage(accountDeploysPage + 1); + } + + if (accountDeploysCount !== itemCount) { + dispatchToMainStore(accountDeploysCountChanged(itemCount)); + } + if (accountDeploysPage >= pageCount) { + setHasNextPage(false); + } + } else { + dispatchToMainStore(accountDeploysAdded(null)); + setHasNextPage(false); + } + }) + .catch(handleError) + .finally(() => { + setLoading(false); + }); + }, [ + accountDeploysCount, + accountDeploysList?.length, + accountDeploysPage, + activeAccount?.publicKey + ]); + + return { + loadMoreDeploys, + loading, + hasNextPage + }; +}; diff --git a/src/hooks/use-fetch-account-info/index.ts b/src/hooks/use-fetch-account-info/index.ts new file mode 100644 index 000000000..158dcd9e7 --- /dev/null +++ b/src/hooks/use-fetch-account-info/index.ts @@ -0,0 +1 @@ +export * from './use-fetch-account-info'; diff --git a/src/hooks/use-account-info/use-account-info.ts b/src/hooks/use-fetch-account-info/use-fetch-account-info.ts similarity index 95% rename from src/hooks/use-account-info/use-account-info.ts rename to src/hooks/use-fetch-account-info/use-fetch-account-info.ts index 4746e804a..612d63d86 100644 --- a/src/hooks/use-account-info/use-account-info.ts +++ b/src/hooks/use-fetch-account-info/use-fetch-account-info.ts @@ -11,7 +11,7 @@ import { getAccountHashFromPublicKey } from '@libs/entities/Account'; import { Account } from '@background/redux/vault/types'; import { selectApiConfigBasedOnActiveNetwork } from '@background/redux/settings/selectors'; -export const useAccountInfo = (account: Account | undefined) => { +export const useFetchAccountInfo = (account: Account | undefined) => { const [accountInfoStandardName, setAccountInfoStandardName] = useState< string | null >(null); diff --git a/src/hooks/use-fetch-active-account-balance/index.ts b/src/hooks/use-fetch-active-account-balance/index.ts new file mode 100644 index 000000000..258efed4b --- /dev/null +++ b/src/hooks/use-fetch-active-account-balance/index.ts @@ -0,0 +1 @@ +export * from './use-fetch-active-account-balance'; diff --git a/src/hooks/use-active-account-balance/use-active-account-balance.ts b/src/hooks/use-fetch-active-account-balance/use-fetch-active-account-balance.ts similarity index 97% rename from src/hooks/use-active-account-balance/use-active-account-balance.ts rename to src/hooks/use-fetch-active-account-balance/use-fetch-active-account-balance.ts index f0fb7d059..efb41a560 100644 --- a/src/hooks/use-active-account-balance/use-active-account-balance.ts +++ b/src/hooks/use-fetch-active-account-balance/use-fetch-active-account-balance.ts @@ -14,7 +14,7 @@ import { accountCurrencyRateChanged } from '@background/redux/account-info/actions'; -export const useActiveAccountBalance = () => { +export const useFetchActiveAccountBalance = () => { const effectTimeoutRef = useRef(); const forceUpdate = useForceUpdate(); const { t } = useTranslation(); diff --git a/src/hooks/use-fetch-casper-token-account-activity/index.ts b/src/hooks/use-fetch-casper-token-account-activity/index.ts new file mode 100644 index 000000000..649bec5e7 --- /dev/null +++ b/src/hooks/use-fetch-casper-token-account-activity/index.ts @@ -0,0 +1 @@ +export * from './use-fetch-casper-token-account-activity'; diff --git a/src/hooks/use-fetch-casper-token-account-activity/use-fetch-casper-token-account-activity.ts b/src/hooks/use-fetch-casper-token-account-activity/use-fetch-casper-token-account-activity.ts new file mode 100644 index 000000000..c7c38e3bd --- /dev/null +++ b/src/hooks/use-fetch-casper-token-account-activity/use-fetch-casper-token-account-activity.ts @@ -0,0 +1,186 @@ +import { useCallback, useEffect, useRef, useState } from 'react'; +import { useSelector } from 'react-redux'; + +import { selectVaultActiveAccount } from '@background/redux/vault/selectors'; +import { selectApiConfigBasedOnActiveNetwork } from '@background/redux/settings/selectors'; +import { + selectAccountCasperActivity, + selectAccountCasperActivityCount +} from '@background/redux/account-info/selectors'; +import { useForceUpdate } from '@popup/hooks/use-force-update'; +import { getAccountHashFromPublicKey } from '@libs/entities/Account'; +import { ACCOUNT_CASPER_ACTIVITY_REFRESH_RATE } from '@src/constants'; +import { dispatchFetchAccountCasperActivity } from '@libs/services/account-activity-service'; +import { + accountCasperActivityChanged, + accountCasperActivityCountChanged, + accountCasperActivityUpdated +} from '@background/redux/account-info/actions'; +import { dispatchToMainStore } from '@background/redux/utils'; + +export const useFetchCasperTokenAccountActivity = () => { + const [loading, setLoading] = useState(false); + const [accountCasperActivityPage, setAccountCasperActivityPage] = useState(2); + const [hasNextPage, setHasNextPage] = useState(false); + const [isFirstPageLoad, setIsFirstPageLoad] = useState(false); + + const activeAccount = useSelector(selectVaultActiveAccount); + const { casperApiUrl } = useSelector(selectApiConfigBasedOnActiveNetwork); + const accountCasperActivityList = useSelector(selectAccountCasperActivity); + const casperTokenActivityCount = useSelector( + selectAccountCasperActivityCount + ); + + const effectTimeoutRef = useRef(); + const forceUpdate = useForceUpdate(); + + const activeAccountHash = activeAccount?.publicKey + ? getAccountHashFromPublicKey(activeAccount?.publicKey) + : null; + + const handleError = (error: Error) => { + console.error('Account casper token activity request failed:', error); + }; + + useEffect(() => { + if (casperTokenActivityCount > accountCasperActivityList.length) { + setHasNextPage(true); + } + + if ( + casperTokenActivityCount === 0 && + accountCasperActivityList.length === 0 + ) { + setAccountCasperActivityPage(2); + } + }, [ + activeAccountHash, + accountCasperActivityList.length, + accountCasperActivityPage, + casperTokenActivityCount + ]); + + useEffect(() => { + if (!activeAccountHash) return; + + // set loading to true only for the first time + if (accountCasperActivityList.length === 0 && !isFirstPageLoad) { + setLoading(true); + } + + dispatchFetchAccountCasperActivity(activeAccountHash, 1) + .then(({ payload }) => { + if (payload) { + const { + data: casperTokensActivityList, + pageCount, + itemCount + } = payload; + + if ( + itemCount === accountCasperActivityList?.length || + itemCount === casperTokenActivityCount + ) { + return; + } + + const transactions = + casperTokensActivityList?.map(transaction => ({ + ...transaction, + id: transaction.deployHash + })) || []; + + dispatchToMainStore(accountCasperActivityChanged(transactions)); + dispatchToMainStore(accountCasperActivityCountChanged(itemCount)); + + if (pageCount > 1) { + setHasNextPage(true); + } + } + }) + .catch(handleError) + .finally(() => { + setTimeout(() => { + setLoading(false); + }, 300); + setIsFirstPageLoad(true); + }); + + // will cause effect to run again after timeout + effectTimeoutRef.current = setTimeout(() => { + forceUpdate(); + }, ACCOUNT_CASPER_ACTIVITY_REFRESH_RATE + 1); + + return () => { + clearTimeout(effectTimeoutRef.current); + }; + }, [ + casperApiUrl, + forceUpdate, + activeAccountHash, + accountCasperActivityList.length, + accountCasperActivityPage, + casperTokenActivityCount, + isFirstPageLoad + ]); + + const loadMoreAccountCasperActivity = useCallback(() => { + if (!activeAccountHash) return; + + setLoading(true); + + dispatchFetchAccountCasperActivity( + activeAccountHash, + accountCasperActivityPage + ) + .then(({ payload }) => { + if (payload) { + const { + data: casperTokensActivityList, + pageCount, + itemCount + } = payload; + + if (itemCount === accountCasperActivityList?.length) { + setHasNextPage(false); + return; + } + + const transactions = + casperTokensActivityList?.map(transaction => ({ + ...transaction, + id: transaction.deployHash + })) || []; + + dispatchToMainStore(accountCasperActivityUpdated(transactions)); + + if (accountCasperActivityPage + 1 <= pageCount) { + setAccountCasperActivityPage(accountCasperActivityPage + 1); + } + + if (casperTokenActivityCount !== itemCount) { + dispatchToMainStore(accountCasperActivityCountChanged(itemCount)); + } + + if (accountCasperActivityPage >= pageCount) { + setHasNextPage(false); + } + } + }) + .catch(handleError) + .finally(() => { + setLoading(false); + }); + }, [ + accountCasperActivityList?.length, + accountCasperActivityPage, + activeAccountHash, + casperTokenActivityCount + ]); + + return { + loading, + loadMoreAccountCasperActivity, + hasNextPage + }; +}; diff --git a/src/hooks/use-fetch-erc20-token-account-activity/index.ts b/src/hooks/use-fetch-erc20-token-account-activity/index.ts new file mode 100644 index 000000000..89d96ab48 --- /dev/null +++ b/src/hooks/use-fetch-erc20-token-account-activity/index.ts @@ -0,0 +1 @@ +export * from './use-fetch-erc20-token-account-activity'; diff --git a/src/hooks/use-fetch-erc20-token-account-activity/use-fetch-erc20-token-account-activity.ts b/src/hooks/use-fetch-erc20-token-account-activity/use-fetch-erc20-token-account-activity.ts new file mode 100644 index 000000000..6741ee010 --- /dev/null +++ b/src/hooks/use-fetch-erc20-token-account-activity/use-fetch-erc20-token-account-activity.ts @@ -0,0 +1,187 @@ +import { useCallback, useEffect, useRef, useState } from 'react'; +import { useSelector } from 'react-redux'; + +import { selectVaultActiveAccount } from '@background/redux/vault/selectors'; +import { selectApiConfigBasedOnActiveNetwork } from '@background/redux/settings/selectors'; +import { selectAccountErc20TokensActivity } from '@background/redux/account-info/selectors'; +import { getAccountHashFromPublicKey } from '@libs/entities/Account'; +import { dispatchFetchErc20TokenActivity } from '@libs/services/account-activity-service/erc20-token-activity-service'; +import { dispatchToMainStore } from '@background/redux/utils'; +import { + accountErc20TokensActivityChanged, + accountErc20TokensActivityUpdated +} from '@background/redux/account-info/actions'; +import { ACCOUNT_CASPER_ACTIVITY_REFRESH_RATE } from '@src/constants'; +import { useForceUpdate } from '@popup/hooks/use-force-update'; + +export const useFetchErc20TokenAccountActivity = ( + contractPackageHash: string +) => { + const [loading, setLoading] = useState(false); + const [accountErc20ActivityPage, setAccountErc20ActivityPage] = useState(2); + const [hasNextPage, setHasNextPage] = useState(false); + const [isFirstPageLoad, setIsFirstPageLoad] = useState(false); + + const erc20TokensActivityRecord = + useSelector(selectAccountErc20TokensActivity) || {}; + + const tokenActivity = erc20TokensActivityRecord[contractPackageHash || '']; + + const activeAccount = useSelector(selectVaultActiveAccount); + const { casperApiUrl } = useSelector(selectApiConfigBasedOnActiveNetwork); + + const effectTimeoutRef = useRef(); + const forceUpdate = useForceUpdate(); + + const activeAccountHash = activeAccount?.publicKey + ? getAccountHashFromPublicKey(activeAccount?.publicKey) + : null; + + const handleError = (error: Error) => { + console.error('Account erc20 token activity request failed:', error); + }; + + useEffect(() => { + if ( + tokenActivity?.tokenActivityCount > + tokenActivity?.tokenActivityList.length + ) { + setHasNextPage(true); + } + + if ( + tokenActivity?.tokenActivityCount === 0 && + tokenActivity?.tokenActivityList.length === 0 + ) { + setAccountErc20ActivityPage(2); + } + }, [ + tokenActivity?.tokenActivityCount, + tokenActivity?.tokenActivityList.length + ]); + + useEffect(() => { + if (!activeAccountHash) return; + + // set loading to true only for the first time + if ( + (tokenActivity?.tokenActivityList.length === 0 || + !tokenActivity?.tokenActivityList) && + !isFirstPageLoad + ) { + setLoading(true); + } + + dispatchFetchErc20TokenActivity(activeAccountHash, contractPackageHash, 1) + .then(({ payload }) => { + if (payload) { + const { + data: erc20TokensActivityList, + pageCount, + itemCount + } = payload; + + if ( + itemCount === tokenActivity?.tokenActivityList?.length || + itemCount === tokenActivity?.tokenActivityCount + ) { + return; + } + + dispatchToMainStore( + accountErc20TokensActivityChanged({ + contractPackageHash, + activityList: erc20TokensActivityList, + tokenActivityCount: itemCount + }) + ); + + if (pageCount > 1) { + setHasNextPage(true); + } + } + }) + .catch(handleError) + .finally(() => { + setTimeout(() => { + setLoading(false); + }, 300); + setIsFirstPageLoad(true); + }); + + // will cause effect to run again after timeout + effectTimeoutRef.current = setTimeout(() => { + forceUpdate(); + }, ACCOUNT_CASPER_ACTIVITY_REFRESH_RATE + 1); + + return () => { + clearTimeout(effectTimeoutRef.current); + }; + }, [ + activeAccountHash, + contractPackageHash, + tokenActivity?.tokenActivityCount, + tokenActivity?.tokenActivityList.length, + casperApiUrl, + forceUpdate, + tokenActivity?.tokenActivityList, + isFirstPageLoad + ]); + + const loadMoreAccountErc20Activity = useCallback(() => { + if (!activeAccountHash) return; + + setLoading(true); + + dispatchFetchErc20TokenActivity( + activeAccountHash, + contractPackageHash, + accountErc20ActivityPage + ) + .then(({ payload }) => { + if (payload) { + const { + data: erc20TokensActivityList, + pageCount, + itemCount + } = payload; + + if (itemCount === tokenActivity?.tokenActivityList?.length) { + setHasNextPage(false); + return; + } + + dispatchToMainStore( + accountErc20TokensActivityUpdated({ + contractPackageHash, + tokenActivityCount: itemCount, + activityList: erc20TokensActivityList + }) + ); + + if (accountErc20ActivityPage + 1 <= pageCount) { + setAccountErc20ActivityPage(accountErc20ActivityPage + 1); + } + + if (accountErc20ActivityPage >= pageCount) { + setHasNextPage(false); + } + } + }) + .catch(handleError) + .finally(() => { + setLoading(false); + }); + }, [ + accountErc20ActivityPage, + activeAccountHash, + contractPackageHash, + tokenActivity?.tokenActivityList?.length + ]); + + return { + loading, + loadMoreAccountErc20Activity, + hasNextPage + }; +}; diff --git a/src/hooks/use-fetch-erc20-tokens/index.ts b/src/hooks/use-fetch-erc20-tokens/index.ts new file mode 100644 index 000000000..34637cf70 --- /dev/null +++ b/src/hooks/use-fetch-erc20-tokens/index.ts @@ -0,0 +1 @@ +export * from './use-fetch-erc20-tokens'; diff --git a/src/hooks/use-erc20-tokens/use-erc20-tokens.ts b/src/hooks/use-fetch-erc20-tokens/use-fetch-erc20-tokens.ts similarity index 96% rename from src/hooks/use-erc20-tokens/use-erc20-tokens.ts rename to src/hooks/use-fetch-erc20-tokens/use-fetch-erc20-tokens.ts index bad213806..a836ed18e 100644 --- a/src/hooks/use-erc20-tokens/use-erc20-tokens.ts +++ b/src/hooks/use-fetch-erc20-tokens/use-fetch-erc20-tokens.ts @@ -12,7 +12,7 @@ import { selectErc20Tokens } from '@src/background/redux/account-info/selectors' import { accountErc20Changed } from '@src/background/redux/account-info/actions'; import { dispatchToMainStore } from '@src/background/redux/utils'; -export const useErc20Tokens = () => { +export const useFetchErc20Tokens = () => { const activeAccount = useSelector(selectVaultActiveAccount); const { casperApiUrl } = useSelector(selectApiConfigBasedOnActiveNetwork); const tokens = useSelector(selectErc20Tokens); diff --git a/src/hooks/use-fetch-nft-tokens/index.ts b/src/hooks/use-fetch-nft-tokens/index.ts new file mode 100644 index 000000000..33d5d2426 --- /dev/null +++ b/src/hooks/use-fetch-nft-tokens/index.ts @@ -0,0 +1 @@ +export * from './use-fetch-nft-tokens'; diff --git a/src/hooks/use-nft-tokens/use-nft-tokens.ts b/src/hooks/use-fetch-nft-tokens/use-fetch-nft-tokens.ts similarity index 58% rename from src/hooks/use-nft-tokens/use-nft-tokens.ts rename to src/hooks/use-fetch-nft-tokens/use-fetch-nft-tokens.ts index f55f7d854..010c42e80 100644 --- a/src/hooks/use-nft-tokens/use-nft-tokens.ts +++ b/src/hooks/use-fetch-nft-tokens/use-fetch-nft-tokens.ts @@ -18,9 +18,11 @@ import { ACCOUNT_CASPER_ACTIVITY_REFRESH_RATE } from '@src/constants'; import { useForceUpdate } from '@popup/hooks/use-force-update'; import { selectApiConfigBasedOnActiveNetwork } from '@background/redux/settings/selectors'; -export const useNftTokens = () => { - const [nftTokensPage, setNftTokensPage] = useState(1); - const [nftTokensPageCount, setNftTokensPageCount] = useState(0); +export const useFetchNftTokens = () => { + const [loading, setLoading] = useState(false); + const [nftTokensPage, setNftTokensPage] = useState(2); + const [hasNextPage, setHasNextPage] = useState(false); + const [isFirstPageLoad, setIsFirstPageLoad] = useState(false); const activeAccount = useSelector(selectVaultActiveAccount); const nftTokens = useSelector(selectAccountNftTokens); @@ -30,28 +32,54 @@ export const useNftTokens = () => { const effectTimeoutRef = useRef(); const forceUpdate = useForceUpdate(); + useEffect(() => { + if (nftTokens && nftTokensCount > nftTokens.length) { + setHasNextPage(true); + } + + if (nftTokensCount === 0 && (nftTokens == null || nftTokens.length === 0)) { + setNftTokensPage(2); + } + }, [nftTokens, nftTokens?.length, nftTokensCount, nftTokensPage]); + useEffect(() => { if (!activeAccount?.publicKey) return; + // set loading to true only for the first time + if ((nftTokens == null || nftTokens.length === 0) && !isFirstPageLoad) { + setLoading(true); + } + dispatchFetchNftTokensRequest( getAccountHashFromPublicKey(activeAccount.publicKey), 1 ) .then(({ payload }) => { - if (payload) { + if ('data' in payload) { const { data: nftTokensList, pageCount, itemCount } = payload; - - if (itemCount === nftTokens?.length) return; + if (itemCount === nftTokens?.length || itemCount === nftTokensCount) { + return; + } dispatchToMainStore(accountNftTokensAdded(nftTokensList ?? [])); dispatchToMainStore(accountNftTokensCountChanged(itemCount)); - setNftTokensPageCount(pageCount); - setNftTokensPage(2); + if (pageCount > 1) { + setHasNextPage(true); + } + } else { + dispatchToMainStore(accountNftTokensAdded(null)); + setHasNextPage(false); } }) .catch(error => { console.error('Account NFT request failed:', error); + }) + .finally(() => { + setTimeout(() => { + setLoading(false); + }, 300); + setIsFirstPageLoad(true); }); // will cause effect to run again after timeout @@ -62,46 +90,68 @@ export const useNftTokens = () => { return () => { clearTimeout(effectTimeoutRef.current); }; - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [activeAccount?.publicKey, casperApiUrl, forceUpdate]); + }, [ + activeAccount?.publicKey, + casperApiUrl, + forceUpdate, + isFirstPageLoad, + nftTokens, + nftTokens?.length, + nftTokensCount + ]); const loadMoreNftTokens = useCallback(() => { if (!activeAccount?.publicKey) return; - if (nftTokensPage > nftTokensPageCount) return; + setLoading(true); dispatchFetchNftTokensRequest( getAccountHashFromPublicKey(activeAccount.publicKey), nftTokensPage ) .then(({ payload }) => { - if (payload) { + if ('data' in payload) { const { data: nftTokensList, pageCount, itemCount } = payload; - if (itemCount === nftTokens?.length) return; + if (itemCount === nftTokens?.length) { + setHasNextPage(false); + return; + } dispatchToMainStore(accountNftTokensUpdated(nftTokensList ?? [])); - setNftTokensPageCount(pageCount); - setNftTokensPage(nftTokensPage + 1); + if (nftTokensPage + 1 <= pageCount) { + setNftTokensPage(nftTokensPage + 1); + } if (nftTokensCount !== itemCount) { dispatchToMainStore(accountNftTokensCountChanged(itemCount)); } + + if (nftTokensPage >= pageCount) { + setHasNextPage(false); + } + } else { + dispatchToMainStore(accountNftTokensAdded(null)); + setHasNextPage(false); } }) .catch(error => { console.error('Account NFT request failed:', error); + }) + .finally(() => { + setLoading(false); }); }, [ activeAccount?.publicKey, nftTokens?.length, nftTokensCount, - nftTokensPage, - nftTokensPageCount + nftTokensPage ]); return { - loadMoreNftTokens + loadMoreNftTokens, + loading, + hasNextPage }; }; diff --git a/src/hooks/use-infinity-scroll/index.ts b/src/hooks/use-infinity-scroll/index.ts deleted file mode 100644 index 4c71182c9..000000000 --- a/src/hooks/use-infinity-scroll/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './user-infinity-scroll'; diff --git a/src/hooks/use-infinity-scroll/user-infinity-scroll.ts b/src/hooks/use-infinity-scroll/user-infinity-scroll.ts deleted file mode 100644 index 7eb2dd9fc..000000000 --- a/src/hooks/use-infinity-scroll/user-infinity-scroll.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { useCallback, useEffect, useRef } from 'react'; - -export const useInfinityScroll = (callback: () => void) => { - const observerElement = useRef(null); - - const handleObserver = useCallback( - entries => { - const [target] = entries; - - if (target.isIntersecting) { - callback(); - } - }, - [callback] - ); - - useEffect(() => { - const element = observerElement.current; - const option = { threshold: 0 }; - - const observer = new IntersectionObserver(handleObserver, option); - - if (element != null) { - observer.observe(element); - } - return () => { - if (element != null) { - return observer.unobserve(element); - } - }; - }, [handleObserver]); - - return { - observerElement - }; -}; diff --git a/src/hooks/use-map-account-deploys-list-with-pending-transactions/index.ts b/src/hooks/use-map-account-deploys-list-with-pending-transactions/index.ts new file mode 100644 index 000000000..7fb2f0eaa --- /dev/null +++ b/src/hooks/use-map-account-deploys-list-with-pending-transactions/index.ts @@ -0,0 +1 @@ +export * from './use-map-account-deploys-list-with-pending-transactions'; diff --git a/src/hooks/use-account-pending-transactions/use-account-pending-transactions.ts b/src/hooks/use-map-account-deploys-list-with-pending-transactions/use-map-account-deploys-list-with-pending-transactions.ts similarity index 96% rename from src/hooks/use-account-pending-transactions/use-account-pending-transactions.ts rename to src/hooks/use-map-account-deploys-list-with-pending-transactions/use-map-account-deploys-list-with-pending-transactions.ts index 226f004d3..4f63250b1 100644 --- a/src/hooks/use-account-pending-transactions/use-account-pending-transactions.ts +++ b/src/hooks/use-map-account-deploys-list-with-pending-transactions/use-map-account-deploys-list-with-pending-transactions.ts @@ -8,7 +8,7 @@ import { dispatchToMainStore } from '@background/redux/utils'; import { accountPendingTransactionsRemove } from '@background/redux/account-info/actions'; import { ExtendedDeployWithId } from '@libs/services/account-activity-service'; -export const useAccountPendingTransactions = ( +export const useMapAccountDeploysListWithPendingTransactions = ( accountDeploys: ExtendedDeployWithId[] | null ) => { const pendingTransactions = useSelector(selectPendingTransactions); diff --git a/src/hooks/use-nft-tokens/index.ts b/src/hooks/use-nft-tokens/index.ts deleted file mode 100644 index 08254de3d..000000000 --- a/src/hooks/use-nft-tokens/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './use-nft-tokens'; diff --git a/src/libs/layout/containers.ts b/src/libs/layout/containers.ts index fca557b65..8536bc3a9 100644 --- a/src/libs/layout/containers.ts +++ b/src/libs/layout/containers.ts @@ -305,3 +305,35 @@ export const IconCircleContainer = styled(CenteredFlexRow)<{ color === 'inherit' ? 'inherit' : theme.color[color]}; border-radius: ${({ theme }) => theme.borderRadius.hundred}px; `; + +export const AccountActivityPlateContainer = styled(AlignedSpaceBetweenFlexRow)` + cursor: pointer; + padding: 16px 12px; +`; + +export const ActivityPlateContentContainer = styled(FlexColumn)` + flex-grow: 1; + gap: 2px; +`; + +export const ActivityPlateIconCircleContainer = styled(CenteredFlexRow)` + min-width: 28px; + + width: 28px; + height: 28px; + + margin-right: 4px; + + background-color: ${({ theme }) => theme.color.fillSecondary}; + border-radius: ${({ theme }) => theme.borderRadius.hundred}px; +`; + +export const ActivityPlateDivider = styled.div` + width: 2px; + height: 2px; + + margin: 0 6px; + + border-radius: ${({ theme }) => theme.borderRadius.hundred}px; + background-color: ${({ theme }) => theme.color.contentSecondary}; +`; diff --git a/src/libs/layout/header/header-data-updater.tsx b/src/libs/layout/header/header-data-updater.tsx index dd3106682..3f0bb212e 100644 --- a/src/libs/layout/header/header-data-updater.tsx +++ b/src/libs/layout/header/header-data-updater.tsx @@ -1,17 +1,9 @@ import React from 'react'; -import { - useActiveAccountBalance, - useErc20Tokens, - useFetchAccountActivity, - useNftTokens -} from '@src/hooks'; -import { ActivityListTransactionsType } from '@src/constants'; +import { useFetchActiveAccountBalance, useFetchErc20Tokens } from '@src/hooks'; export const HeaderDataUpdater: React.FC = () => { - useActiveAccountBalance(); - useFetchAccountActivity(ActivityListTransactionsType.All); - useNftTokens(); - useErc20Tokens(); + useFetchActiveAccountBalance(); + useFetchErc20Tokens(); return null; }; diff --git a/src/libs/layout/header/header-view-in-explorer.tsx b/src/libs/layout/header/header-view-in-explorer.tsx index 3ac12a0b8..49d090a47 100644 --- a/src/libs/layout/header/header-view-in-explorer.tsx +++ b/src/libs/layout/header/header-view-in-explorer.tsx @@ -10,7 +10,7 @@ import { getContractNftUrl } from '@src/constants'; import { formatErc20TokenBalance } from '@popup/pages/home/components/tokens-list/utils'; -import { useCasperToken, useErc20Tokens } from '@src/hooks'; +import { useCasperToken, useFetchErc20Tokens } from '@src/hooks'; import { selectApiConfigBasedOnActiveNetwork } from '@background/redux/settings/selectors'; import { selectVaultActiveAccount } from '@background/redux/vault/selectors'; @@ -41,7 +41,7 @@ export function HeaderViewInExplorer({ const activeAccount = useSelector(selectVaultActiveAccount); const casperToken = useCasperToken(); - const erc20Tokens = useErc20Tokens(); + const erc20Tokens = useFetchErc20Tokens(); useEffect(() => { if (!tokenName && deployHash) { diff --git a/src/libs/layout/popup-layout.tsx b/src/libs/layout/popup-layout.tsx index 22ba8c7e4..6f2e0463a 100644 --- a/src/libs/layout/popup-layout.tsx +++ b/src/libs/layout/popup-layout.tsx @@ -52,7 +52,7 @@ export function PopupLayout({ return ( {renderHeader && {renderHeader()}} - + {renderContent()} diff --git a/src/libs/services/account-activity-service/account-activity-service.ts b/src/libs/services/account-activity-service/account-activity-service.ts index 41b525cf1..6bea6bb70 100644 --- a/src/libs/services/account-activity-service/account-activity-service.ts +++ b/src/libs/services/account-activity-service/account-activity-service.ts @@ -2,7 +2,7 @@ import { serviceMessage } from '@background/service-message'; import { dispatchToMainStore } from '@background/redux/utils'; import { handleError, toJson } from '@libs/services/utils'; import { queryClient } from '@libs/services/query-client'; -import { DataWithPayload, PaginatedResponse } from '@libs/services/types'; +import { Payload, PaginatedResponse } from '@libs/services/types'; import { ACCOUNT_CASPER_ACTIVITY_REFRESH_RATE } from '@src/constants'; import { TransferResult } from '@libs/services/account-activity-service/types'; @@ -35,7 +35,7 @@ export const fetchAccountCasperActivity = ({ export const dispatchFetchAccountCasperActivity = ( accountHash: string, page: number -): Promise>> => +): Promise>> => dispatchToMainStore( serviceMessage.fetchAccountCasperActivityRequest({ accountHash, page }) ); diff --git a/src/libs/services/account-activity-service/erc20-token-activity-service.ts b/src/libs/services/account-activity-service/erc20-token-activity-service.ts index 39152178a..2e87cea05 100644 --- a/src/libs/services/account-activity-service/erc20-token-activity-service.ts +++ b/src/libs/services/account-activity-service/erc20-token-activity-service.ts @@ -2,7 +2,7 @@ import { serviceMessage } from '@background/service-message'; import { dispatchToMainStore } from '@background/redux/utils'; import { handleError, toJson } from '@libs/services/utils'; import { queryClient } from '@libs/services/query-client'; -import { DataWithPayload, PaginatedResponse } from '@libs/services/types'; +import { Payload, PaginatedResponse } from '@libs/services/types'; import { ERC20_TOKEN_ACTIVITY_REFRESH_RATE } from '@src/constants'; import { getErc20TokenActivityLink } from './constants'; @@ -58,7 +58,7 @@ export const dispatchFetchErc20TokenActivity = ( publicKey: string, contractPackageHash: string, page: number -): Promise>> => +): Promise>> => dispatchToMainStore( serviceMessage.fetchErc20TokenActivityRequest({ publicKey, diff --git a/src/libs/services/account-activity-service/extended-deploys-service.ts b/src/libs/services/account-activity-service/extended-deploys-service.ts index ef70641de..0c93febe4 100644 --- a/src/libs/services/account-activity-service/extended-deploys-service.ts +++ b/src/libs/services/account-activity-service/extended-deploys-service.ts @@ -2,7 +2,11 @@ import { dispatchToMainStore } from '@background/redux/utils'; import { serviceMessage } from '@background/service-message'; import { handleError, toJson } from '@libs/services/utils'; import { queryClient } from '@libs/services/query-client'; -import { DataWithPayload, PaginatedResponse } from '@libs/services/types'; +import { + Payload, + PaginatedResponse, + ErrorResponse +} from '@libs/services/types'; import { ACCOUNT_DEPLOY_REFRESH_RATE } from '@src/constants'; import { ExtendedDeploy, ExtendedDeployResult } from './types'; @@ -33,7 +37,7 @@ export const fetchExtendedDeploysInfo = ({ export const dispatchFetchExtendedDeploysInfo = ( deployHash: string -): Promise> => +): Promise> => dispatchToMainStore( serviceMessage.fetchExtendedDeploysInfoRequest({ deployHash }) ); @@ -55,7 +59,7 @@ export const fetchAccountExtendedDeploys = ({ casperApiUrl: string; publicKey: string; page: number; -}) => +}): Promise | ErrorResponse> => queryClient.fetchQuery( ['accountDeploysRequest', casperApiUrl, publicKey, page], () => accountExtendedDeploysRequest(casperApiUrl, publicKey, page), @@ -65,7 +69,7 @@ export const fetchAccountExtendedDeploys = ({ export const dispatchFetchAccountExtendedDeploys = ( publicKey: string, page: number -): Promise>> => +): Promise | ErrorResponse>> => dispatchToMainStore( serviceMessage.fetchAccountExtendedDeploysRequest({ publicKey, page }) ); diff --git a/src/libs/services/account-activity-service/types.ts b/src/libs/services/account-activity-service/types.ts index 41b3c2bb5..726bb1719 100644 --- a/src/libs/services/account-activity-service/types.ts +++ b/src/libs/services/account-activity-service/types.ts @@ -1,5 +1,5 @@ import { CLTypeParsedResult, CLTypeTypeResult } from '@libs/types/cl'; -import { PaginatedResponse } from '@libs/services/types'; +import { ErrorResponse, PaginatedResponse } from '@libs/services/types'; export interface TransferResult { amount: string; @@ -133,13 +133,20 @@ export const MapExtendedDeploy = ({ rate: rate }); -export const MapPaginatedExtendedDeploys = ({ - data, - ...rest -}: PaginatedResponse): PaginatedResponse => ({ - ...rest, - data: data ? data.map(MapExtendedDeploy) : [] -}); +export const MapPaginatedExtendedDeploys = ( + response: PaginatedResponse | ErrorResponse +): PaginatedResponse | ErrorResponse => { + if ('data' in response) { + return { + ...response, + data: response.data ? response.data.map(MapExtendedDeploy) : [] + }; + } + + return { + ...response + }; +}; export type ExtendedDeployContractPackageMetadata = { symbol: string; diff --git a/src/libs/services/account-info/account-info.ts b/src/libs/services/account-info/account-info.ts index 307c3ed47..3d57e0c2a 100644 --- a/src/libs/services/account-info/account-info.ts +++ b/src/libs/services/account-info/account-info.ts @@ -4,7 +4,7 @@ import { dispatchToMainStore } from '@background/redux/utils'; import { getAccountInfoUrl, AccountInfo } from '@libs/services/account-info'; import { handleError, toJson } from '@libs/services/utils'; import { queryClient } from '@libs/services/query-client'; -import { DataResponse, DataWithPayload } from '@libs/services/types'; +import { DataResponse, Payload } from '@libs/services/types'; import { FETCH_QUERY_OPTIONS } from '@src/constants'; @@ -33,5 +33,5 @@ export const fetchAccountInfo = ({ export const dispatchFetchAccountInfoRequest = ( accountHash: string -): Promise> => +): Promise> => dispatchToMainStore(serviceMessage.fetchAccountInfoRequest({ accountHash })); diff --git a/src/libs/services/balance-service/balance-service.ts b/src/libs/services/balance-service/balance-service.ts index ccf673cdc..055c36677 100644 --- a/src/libs/services/balance-service/balance-service.ts +++ b/src/libs/services/balance-service/balance-service.ts @@ -1,7 +1,7 @@ import { serviceMessage } from '@src/background/service-message'; import { dispatchToMainStore } from '@background/redux/utils'; -import { DataWithPayload } from '@libs/services/types'; +import { Payload } from '@libs/services/types'; import { BALANCE_REFRESH_RATE, CURRENCY_REFRESH_RATE } from '@src/constants'; @@ -43,7 +43,7 @@ export const accountBalanceRequest = ( export const dispatchFetchActiveAccountBalance = ( publicKey = '' -): Promise> => +): Promise> => dispatchToMainStore(serviceMessage.fetchBalanceRequest({ publicKey })); export const fetchAccountBalance = ({ diff --git a/src/libs/services/erc20-service/erc20-service.ts b/src/libs/services/erc20-service/erc20-service.ts index 038badc70..a6524194a 100644 --- a/src/libs/services/erc20-service/erc20-service.ts +++ b/src/libs/services/erc20-service/erc20-service.ts @@ -3,7 +3,7 @@ import { queryClient } from '@libs/services/query-client'; import { TOKENS_REFRESH_RATE } from '@src/constants'; import { dispatchToMainStore } from '@background/redux/utils'; import { serviceMessage } from '@background/service-message'; -import { DataResponse, DataWithPayload } from '@libs/services/types'; +import { DataResponse, Payload } from '@libs/services/types'; import { ContractPackage, @@ -56,5 +56,5 @@ export const fetchContractPackage = ({ export const dispatchFetchErc20TokensRequest = ( accountHash: string -): Promise> => +): Promise> => dispatchToMainStore(serviceMessage.fetchErc20TokensRequest({ accountHash })); diff --git a/src/libs/services/nft-service/nft-service.ts b/src/libs/services/nft-service/nft-service.ts index 07c74cc80..3e673a3f6 100644 --- a/src/libs/services/nft-service/nft-service.ts +++ b/src/libs/services/nft-service/nft-service.ts @@ -1,6 +1,10 @@ import { getNftTokensUrl } from '@libs/services/nft-service/constants'; import { handleError, toJson } from '@libs/services/utils'; -import { DataWithPayload, PaginatedResponse } from '@libs/services/types'; +import { + Payload, + ErrorResponse, + PaginatedResponse +} from '@libs/services/types'; import { NFTTokenResult } from '@libs/services/nft-service/types'; import { queryClient } from '@libs/services/query-client'; import { NFT_TOKENS_REFRESH_RATE } from '@src/constants'; @@ -24,7 +28,7 @@ export const fetchNftTokens = ({ casperApiUrl: string; accountHash: string; page: number; -}) => +}): Promise | ErrorResponse> => queryClient.fetchQuery( ['getNftTokens', accountHash, casperApiUrl, page], () => nftTokensRequest(casperApiUrl, accountHash, page), @@ -34,7 +38,7 @@ export const fetchNftTokens = ({ export const dispatchFetchNftTokensRequest = ( accountHash: string, page: number -): Promise>> => +): Promise | ErrorResponse>> => dispatchToMainStore( serviceMessage.fetchNftTokensRequest({ accountHash, page }) ); diff --git a/src/libs/services/types.ts b/src/libs/services/types.ts index f1b909954..337575ce0 100644 --- a/src/libs/services/types.ts +++ b/src/libs/services/types.ts @@ -1,4 +1,4 @@ -export interface DataWithPayload { +export interface Payload { payload: T; } @@ -12,3 +12,9 @@ export interface PaginatedResponse { export interface DataResponse { data: T; } + +export interface ErrorResponse { + error: { + message: string; + }; +} diff --git a/src/libs/ui/components/account-activity-plate/account-activity-plate.tsx b/src/libs/ui/components/account-activity-plate/account-activity-plate.tsx index 72789f4c2..2f6bf60ec 100644 --- a/src/libs/ui/components/account-activity-plate/account-activity-plate.tsx +++ b/src/libs/ui/components/account-activity-plate/account-activity-plate.tsx @@ -1,13 +1,14 @@ import React, { forwardRef, useEffect, useState } from 'react'; -import styled from 'styled-components'; import { useSelector } from 'react-redux'; import { Trans, useTranslation } from 'react-i18next'; import { + AccountActivityPlateContainer, + ActivityPlateContentContainer, AlignedFlexRow, AlignedSpaceBetweenFlexRow, - CenteredFlexRow, - FlexColumn, + ActivityPlateIconCircleContainer, + ActivityPlateDivider, SpacingSize } from '@libs/layout'; import { @@ -40,46 +41,16 @@ import { import { getAccountHashFromPublicKey } from '@libs/entities/Account'; import { getRecipientAddressFromTransaction } from '@libs/ui/utils/utils'; -const AccountActivityPlateContainer = styled(AlignedSpaceBetweenFlexRow)` - cursor: pointer; - padding: 16px 12px; -`; - -const IconCircleContainer = styled(CenteredFlexRow)` - min-width: 28px; - - width: 28px; - height: 28px; - - margin-right: 4px; - - background-color: ${({ theme }) => theme.color.fillSecondary}; - border-radius: ${({ theme }) => theme.borderRadius.hundred}px; -`; - -const ContentContainer = styled(FlexColumn)` - flex-grow: 1; - gap: 2px; -`; - -const Divider = styled.div` - width: 2px; - height: 2px; - - margin: 0 6px; - - border-radius: ${({ theme }) => theme.borderRadius.hundred}px; - background-color: ${({ theme }) => theme.color.contentSecondary}; -`; - interface AccountActivityPlateProps { transactionInfo: Erc20TransferWithId | ExtendedDeployWithId; + onClick?: () => void; + isDeploysList?: boolean; } type Ref = HTMLDivElement; export const AccountActivityPlate = forwardRef( - ({ transactionInfo }, ref) => { + ({ transactionInfo, onClick, isDeploysList }, ref) => { const [type, setType] = useState(null); const navigate = useTypedNavigate(); @@ -161,7 +132,7 @@ export const AccountActivityPlate = forwardRef( + onClick={() => { navigate(RouterPath.ActivityDetails, { state: { activityDetailsData: { @@ -170,16 +141,20 @@ export const AccountActivityPlate = forwardRef( deployHash, type, amount: formattedAmount, - symbol: symbol || '' + symbol: symbol || '', + isDeploysList: isDeploysList } } - }) - } + }); + if (onClick) { + onClick(); + } + }} > - + {type != null && } - - + + @@ -212,7 +187,7 @@ export const AccountActivityPlate = forwardRef( truncatedSize="tiny" color="contentPrimary" /> - + ( )} - + ); diff --git a/src/libs/ui/components/account-casper-activity-plate/account-casper-activity-plate.tsx b/src/libs/ui/components/account-casper-activity-plate/account-casper-activity-plate.tsx index 1f49b2734..556e87756 100644 --- a/src/libs/ui/components/account-casper-activity-plate/account-casper-activity-plate.tsx +++ b/src/libs/ui/components/account-casper-activity-plate/account-casper-activity-plate.tsx @@ -1,7 +1,6 @@ import React, { forwardRef, useEffect, useState } from 'react'; import { Trans, useTranslation } from 'react-i18next'; import { useSelector } from 'react-redux'; -import styled from 'styled-components'; import { RouterPath, useTypedNavigate } from '@popup/router'; import { Hash, HashVariant, SvgIcon, Tooltip, Typography } from '@libs/ui'; @@ -15,8 +14,10 @@ import { import { AlignedFlexRow, AlignedSpaceBetweenFlexRow, - CenteredFlexRow, - FlexColumn, + AccountActivityPlateContainer, + ActivityPlateDivider, + ActivityPlateContentContainer, + ActivityPlateIconCircleContainer, SpacingSize } from '@libs/layout'; import { @@ -28,47 +29,16 @@ import { import { TransferResultWithId } from '@libs/services/account-activity-service'; import { getAccountHashFromPublicKey } from '@libs/entities/Account'; -const AccountActivityPlateContainer = styled(AlignedSpaceBetweenFlexRow)` - cursor: pointer; - padding: 16px 12px; -`; - -const IconCircleContainer = styled(CenteredFlexRow)` - min-width: 28px; - - width: 28px; - height: 28px; - - margin-right: 4px; - - background-color: ${({ theme }) => theme.color.fillSecondary}; - border-radius: ${({ theme }) => theme.borderRadius.hundred}px; -`; - -const ContentContainer = styled(FlexColumn)` - flex-grow: 1; - gap: 2px; -`; - -const Divider = styled.div` - width: 2px; - height: 2px; - - margin: 0 6px; - - border-radius: ${({ theme }) => theme.borderRadius.hundred}px; - background-color: ${({ theme }) => theme.color.contentSecondary}; -`; - type Ref = HTMLDivElement; interface AccountCasperActivityPlateProps { transactionInfo: TransferResultWithId; + onClick?: () => void; } export const AccountCasperActivityPlate = forwardRef< Ref, AccountCasperActivityPlateProps ->(({ transactionInfo }, ref) => { +>(({ transactionInfo, onClick }, ref) => { const [type, setType] = useState(null); const navigate = useTypedNavigate(); @@ -121,7 +91,7 @@ export const AccountCasperActivityPlate = forwardRef< + onClick={() => { navigate(RouterPath.ActivityDetails, { state: { activityDetailsData: { @@ -131,13 +101,17 @@ export const AccountCasperActivityPlate = forwardRef< type } } - }) - } + }); + + if (onClick) { + onClick(); + } + }} > - + {type != null && } - - + + @@ -163,7 +137,7 @@ export const AccountCasperActivityPlate = forwardRef< truncatedSize="tiny" color="contentPrimary" /> - + {formatTimestampAge(timestamp)} @@ -174,7 +148,7 @@ export const AccountCasperActivityPlate = forwardRef< CSPR - + ); diff --git a/src/libs/ui/components/activity-list/activity-list.tsx b/src/libs/ui/components/activity-list/activity-list.tsx deleted file mode 100644 index 67470cb17..000000000 --- a/src/libs/ui/components/activity-list/activity-list.tsx +++ /dev/null @@ -1,123 +0,0 @@ -import React from 'react'; -import { useSelector } from 'react-redux'; -import { useParams } from 'react-router-dom'; - -import { SpacingSize } from '@libs/layout'; -import { - AccountActivityPlate, - List, - AccountCasperActivityPlate, - NoActivityView -} from '@libs/ui'; -import { useFetchAccountActivity, useInfinityScroll } from '@src/hooks'; -import { - selectAccountCasperActivity, - selectAccountErc20TokensActivity -} from '@background/redux/account-info/selectors'; -import { Erc20TransferWithId } from '@src/libs/services/account-activity-service'; -import { ActivityListTransactionsType } from '@src/constants'; - -export const ActivityList = () => { - const accountCasperActivityList = useSelector(selectAccountCasperActivity); - const erc20TokensActivityRecord = - useSelector(selectAccountErc20TokensActivity) || {}; - - const { tokenName } = useParams(); - - const erc20TokenActivityList = - erc20TokensActivityRecord[tokenName || ''] || null; - - const transactionsType: ActivityListTransactionsType = - tokenName === 'Casper' - ? ActivityListTransactionsType.Casper - : ActivityListTransactionsType.Erc20; - - const { fetchMoreTransactions } = useFetchAccountActivity( - transactionsType, - tokenName - ); - const { observerElement } = useInfinityScroll(fetchMoreTransactions); - - if (transactionsType === ActivityListTransactionsType.Casper) { - if ( - accountCasperActivityList == null || - accountCasperActivityList.length === 0 - ) { - return ; - } - - // render casper activity list - return ( - { - if (index === accountCasperActivityList!?.length - 1) { - return ( - - ); - } - - return ; - }} - marginLeftForItemSeparatorLine={54} - /> - ); - } - - if (transactionsType === ActivityListTransactionsType.Erc20) { - const erc20Transactions: Erc20TransferWithId[] = - erc20TokenActivityList?.map(transaction => { - return { - id: transaction.deploy_hash, - deployHash: transaction.deploy_hash, - callerPublicKey: transaction.deploy?.caller_public_key || '-', - timestamp: transaction.deploy?.timestamp || '-', - args: transaction.deploy?.args || '-', - status: transaction.deploy?.status || '-', - errorMessage: transaction.deploy?.error_message || null, - decimals: transaction.contract_package?.metadata.decimals, - symbol: transaction.contract_package?.metadata.symbol, - toPublicKey: transaction?.to_public_key, - fromPublicKey: transaction?.from_public_key || null, - contractPackage: transaction?.contract_package, - toHash: transaction?.to_hash, - toType: transaction?.to_type - }; - }) || []; - - const noActivityForErc20 = - (ActivityListTransactionsType.Erc20 && erc20TokenActivityList == null) || - erc20TokenActivityList?.length === 0; - - if (noActivityForErc20) { - return ; - } - - // render no activity for erc20 - return ( - { - if (index === erc20Transactions?.length - 1) { - return ( - - ); - } - - return ; - }} - marginLeftForItemSeparatorLine={54} - /> - ); - } - - return null; -}; diff --git a/src/libs/ui/components/casper-token-activity-list/casper-token-activity-list.tsx b/src/libs/ui/components/casper-token-activity-list/casper-token-activity-list.tsx new file mode 100644 index 000000000..ac2d7a671 --- /dev/null +++ b/src/libs/ui/components/casper-token-activity-list/casper-token-activity-list.tsx @@ -0,0 +1,71 @@ +import React, { useEffect } from 'react'; +import { useSelector } from 'react-redux'; +import useInfiniteScroll from 'react-infinite-scroll-hook'; + +import { selectAccountCasperActivity } from '@background/redux/account-info/selectors'; +import { useFetchCasperTokenAccountActivity } from '@src/hooks'; +import { + AccountCasperActivityPlate, + List, + LoadingActivityView, + NoActivityView +} from '@libs/ui'; +import { SpacingSize } from '@libs/layout'; + +export const CasperTokenActivityList = () => { + const accountCasperActivityList = useSelector(selectAccountCasperActivity); + + const { loading, loadMoreAccountCasperActivity, hasNextPage } = + useFetchCasperTokenAccountActivity(); + const [sentryRef] = useInfiniteScroll({ + loading, + hasNextPage, + onLoadMore: loadMoreAccountCasperActivity, + delayInMs: 0 + }); + useEffect(() => { + const container = document.querySelector('#ms-container'); + + const position = localStorage.getItem('casperTokenYPosition'); + + if (position) { + container?.scrollTo(0, Number(position)); + localStorage.removeItem('casperTokenYPosition'); + } + }, []); + + const setCasperTokenYPosition = () => { + const container = document.querySelector('#ms-container'); + + localStorage.setItem( + 'casperTokenYPosition', + container?.scrollTop.toString() || '' + ); + }; + + return ( + <> + {accountCasperActivityList != null && + accountCasperActivityList.length > 0 && ( + ( + + )} + marginLeftForItemSeparatorLine={54} + /> + )} + + {(loading || hasNextPage) && } + + {accountCasperActivityList == null || + (accountCasperActivityList.length === 0 && !loading && ( + + ))} + + ); +}; diff --git a/src/libs/ui/components/deploys-list/deploys-list.tsx b/src/libs/ui/components/deploys-list/deploys-list.tsx deleted file mode 100644 index 4cf561fcd..000000000 --- a/src/libs/ui/components/deploys-list/deploys-list.tsx +++ /dev/null @@ -1,55 +0,0 @@ -import React from 'react'; -import { useSelector } from 'react-redux'; - -import { selectAccountDeploys } from '@background/redux/account-info/selectors'; -import { SpacingSize } from '@libs/layout'; -import { AccountActivityPlate, List, NoActivityView } from '@libs/ui'; -import { - useAccountPendingTransactions, - useFetchAccountActivity, - useInfinityScroll -} from '@src/hooks'; -import { ActivityListTransactionsType } from '@src/constants'; - -export const DeploysList = () => { - const accountDeploys = useSelector(selectAccountDeploys); - - const { accountDeploysListWithPendingTransactions } = - useAccountPendingTransactions(accountDeploys); - - const { fetchMoreTransactions } = useFetchAccountActivity( - ActivityListTransactionsType.Deploys - ); - const { observerElement } = useInfinityScroll(fetchMoreTransactions); - - if ( - accountDeploysListWithPendingTransactions == null || - accountDeploysListWithPendingTransactions.length === 0 - ) { - return ( - - ); - } - - return ( - { - if (index === accountDeploysListWithPendingTransactions!?.length - 1) { - return ( - - ); - } - - return ; - }} - marginLeftForItemSeparatorLine={54} - /> - ); -}; diff --git a/src/libs/ui/components/erc20-token-activity-list/erc20-token-activity-list.tsx b/src/libs/ui/components/erc20-token-activity-list/erc20-token-activity-list.tsx new file mode 100644 index 000000000..81df9fdc3 --- /dev/null +++ b/src/libs/ui/components/erc20-token-activity-list/erc20-token-activity-list.tsx @@ -0,0 +1,101 @@ +import React, { useEffect } from 'react'; +import { useSelector } from 'react-redux'; +import { useParams } from 'react-router-dom'; +import useInfiniteScroll from 'react-infinite-scroll-hook'; + +import { SpacingSize } from '@libs/layout'; +import { + AccountActivityPlate, + List, + LoadingActivityView, + NoActivityView +} from '@libs/ui'; +import { useFetchErc20TokenAccountActivity } from '@src/hooks'; +import { selectAccountErc20TokensActivity } from '@background/redux/account-info/selectors'; +import { Erc20TransferWithId } from '@src/libs/services/account-activity-service'; + +export const Erc20TokenActivityList = () => { + const erc20TokensActivityRecord = + useSelector(selectAccountErc20TokensActivity) || {}; + + const { tokenName } = useParams(); + + const tokenActivity = erc20TokensActivityRecord[tokenName || ''] || {}; + + const { loading, loadMoreAccountErc20Activity, hasNextPage } = + useFetchErc20TokenAccountActivity(tokenName || ''); + const [sentryRef] = useInfiniteScroll({ + loading, + hasNextPage, + onLoadMore: loadMoreAccountErc20Activity, + delayInMs: 0 + }); + + useEffect(() => { + const container = document.querySelector('#ms-container'); + + const position = localStorage.getItem('Erc20TokenYPosition'); + + if (position) { + container?.scrollTo(0, Number(position)); + localStorage.removeItem('Erc20TokenYPosition'); + } + }, []); + + const setErc20TokenYPosition = () => { + const container = document.querySelector('#ms-container'); + + localStorage.setItem( + 'Erc20TokenYPosition', + container?.scrollTop.toString() || '' + ); + }; + + const erc20Transactions: Erc20TransferWithId[] = + tokenActivity?.tokenActivityList?.map(transaction => { + return { + id: transaction.deploy_hash, + deployHash: transaction.deploy_hash, + callerPublicKey: transaction.deploy?.caller_public_key || '-', + timestamp: transaction.deploy?.timestamp || '-', + args: transaction.deploy?.args || '-', + status: transaction.deploy?.status || '-', + errorMessage: transaction.deploy?.error_message || null, + decimals: transaction.contract_package?.metadata.decimals, + symbol: transaction.contract_package?.metadata.symbol, + toPublicKey: transaction?.to_public_key, + fromPublicKey: transaction?.from_public_key || null, + contractPackage: transaction?.contract_package, + toHash: transaction?.to_hash, + toType: transaction?.to_type + }; + }) || []; + + const noActivityForErc20 = + tokenActivity?.tokenActivityList == null || + tokenActivity?.tokenActivityList?.length === 0; + + return ( + <> + {erc20Transactions.length > 0 && true && ( + ( + + )} + marginLeftForItemSeparatorLine={54} + /> + )} + + {(loading || hasNextPage) && } + + {noActivityForErc20 && !loading && ( + + )} + + ); +}; diff --git a/src/libs/ui/components/loading-activity-view/loading-activity-view.tsx b/src/libs/ui/components/loading-activity-view/loading-activity-view.tsx new file mode 100644 index 000000000..1e87377c6 --- /dev/null +++ b/src/libs/ui/components/loading-activity-view/loading-activity-view.tsx @@ -0,0 +1,43 @@ +import React, { forwardRef } from 'react'; +import Skeleton from 'react-loading-skeleton'; + +import { + AccountActivityPlateContainer, + ActivityPlateContentContainer, + SpacingSize, + VerticalSpaceContainer +} from '@libs/layout'; +import { Tile } from '@libs/ui'; + +type Ref = HTMLDivElement; + +export const LoadingActivityView = forwardRef((props, ref) => ( + + + + + + + + + + + + + + + + + + +)); diff --git a/src/libs/ui/components/no-activity-view/no-activity-view.tsx b/src/libs/ui/components/no-activity-view/no-activity-view.tsx index 929a965b3..d45160084 100644 --- a/src/libs/ui/components/no-activity-view/no-activity-view.tsx +++ b/src/libs/ui/components/no-activity-view/no-activity-view.tsx @@ -19,16 +19,19 @@ const Container = styled(CenteredFlexRow)` `; export const NoActivityView = ({ - activityList + activityList, + top }: { activityList: | (TransferResultWithId | Erc20TokenActionResult | ExtendedDeployWithId)[] | null; + top?: SpacingSize; + loading?: boolean; }) => { const { t } = useTranslation(); return ( - + diff --git a/src/libs/ui/index.ts b/src/libs/ui/index.ts index b46af9ce1..66fa99387 100644 --- a/src/libs/ui/index.ts +++ b/src/libs/ui/index.ts @@ -25,19 +25,20 @@ export * from './components/avatar/avatar'; export * from './components/tooltip/tooltip'; export * from './components/account-activity-plate/account-activity-plate'; export * from './components/account-popover/account-popover'; -export * from './components/activity-list/activity-list'; +export * from './components/erc20-token-activity-list/erc20-token-activity-list'; export * from './components/tabs/tabs'; export * from './components/token-plate/token-plate'; export * from './components/deploy-status/deploy-status'; export * from './components/modal/modal'; export * from './components/active-account-plate/active-account-plate'; export * from './components/recipient-plate/recipient-plate'; -export * from './components/deploys-list/deploys-list'; export * from './components/account-casper-activity-plate/account-casper-activity-plate'; export * from './components/no-activity-view/no-activity-view'; export * from './components/nft-media-placeholder/nft-media-placeholder'; export * from './components/account-list/account-list'; export * from './components/connection-status-badge/connection-status-badge'; +export * from './components/casper-token-activity-list/casper-token-activity-list'; +export * from './components/loading-activity-view/loading-activity-view'; export * from './utils/match-media'; export * from './utils/match-size'; From e6e4a539ba5f2af11032546cf8050e347e1ec931 Mon Sep 17 00:00:00 2001 From: Ostap Piatkovskyi <44294945+ost-ptk@users.noreply.github.com> Date: Wed, 30 Aug 2023 15:42:29 +0300 Subject: [PATCH 006/243] illustrations are updated (#762) Co-authored-by: ost-ptk Co-authored-by: Vynnyk Dmytro --- .../index.tsx | 6 +- .../index.tsx | 6 +- .../content.tsx | 6 +- .../import-account-with-file/content.tsx | 6 +- .../pages/onboarding-success/content.tsx | 6 +- .../pages/unlock-wallet/content.tsx | 6 +- src/apps/onboarding/pages/welcome/content.tsx | 4 +- .../popup/pages/connected-sites/index.tsx | 3 +- .../popup/pages/create-account/content.tsx | 6 +- .../pages/downloaded-secret-keys/content.tsx | 6 +- .../pages/no-connected-account/index.tsx | 6 +- src/apps/popup/pages/remove-account/index.tsx | 6 +- src/apps/popup/pages/rename-account/index.tsx | 6 +- .../popup/pages/transfer/success-step.tsx | 6 +- src/assets/illustrations/account-imported.svg | 708 ++++++++- src/assets/illustrations/create-account.svg | 676 ++++++++- src/assets/illustrations/error.svg | 725 +++++++++- src/assets/illustrations/key-downloaded.svg | 450 +++++- src/assets/illustrations/locked-wallet.svg | 985 ++++++++++++- .../illustrations/no-connected-sites.svg | 1260 ++++++++++++++++- src/assets/illustrations/no-connection.svg | 1042 +++++++++++++- src/assets/illustrations/password-lock.svg | 945 ++++++++++++- src/assets/illustrations/password.svg | 511 ++++++- src/assets/illustrations/remove-account.svg | 875 +++++++++++- src/assets/illustrations/rename-account.svg | 934 +++++++++++- src/assets/illustrations/reset-wallet.svg | 814 ++++++++++- src/assets/illustrations/secret-key.svg | 878 +++++++++++- src/assets/illustrations/success.svg | 697 ++++++++- src/assets/illustrations/wallet-connected.svg | 1031 +++++++++++++- src/assets/illustrations/welcome.svg | 1000 +++++++++++-- .../illustrations/wrong-secret-phrase.svg | 656 ++++++++- src/libs/layout/error/content.tsx | 9 +- src/libs/layout/reset-vault/index.tsx | 6 +- .../unlock-protected-page-content/index.tsx | 6 +- src/libs/layout/unlock-vault/index.tsx | 12 +- 35 files changed, 13513 insertions(+), 786 deletions(-) diff --git a/src/apps/import-account-with-file/pages/import-account-with-file-failure/index.tsx b/src/apps/import-account-with-file/pages/import-account-with-file-failure/index.tsx index 886460d4d..3cea071ff 100644 --- a/src/apps/import-account-with-file/pages/import-account-with-file-failure/index.tsx +++ b/src/apps/import-account-with-file/pages/import-account-with-file-failure/index.tsx @@ -26,7 +26,11 @@ export function ImportAccountWithFileFailureContentPage() { return ( - + diff --git a/src/apps/import-account-with-file/pages/import-account-with-file-success/index.tsx b/src/apps/import-account-with-file/pages/import-account-with-file-success/index.tsx index 471078307..f1b9ecf4d 100644 --- a/src/apps/import-account-with-file/pages/import-account-with-file-success/index.tsx +++ b/src/apps/import-account-with-file/pages/import-account-with-file-success/index.tsx @@ -18,7 +18,11 @@ export function ImportAccountWithFileSuccessContentPage() { return ( - + diff --git a/src/apps/import-account-with-file/pages/import-account-with-file-upload/content.tsx b/src/apps/import-account-with-file/pages/import-account-with-file-upload/content.tsx index 4b1943de7..19ec42954 100644 --- a/src/apps/import-account-with-file/pages/import-account-with-file-upload/content.tsx +++ b/src/apps/import-account-with-file/pages/import-account-with-file-upload/content.tsx @@ -46,7 +46,11 @@ export function ImportAccountWithFileUploadPageContent({ return ( - + diff --git a/src/apps/import-account-with-file/pages/import-account-with-file/content.tsx b/src/apps/import-account-with-file/pages/import-account-with-file/content.tsx index 9ec691503..971c4192e 100644 --- a/src/apps/import-account-with-file/pages/import-account-with-file/content.tsx +++ b/src/apps/import-account-with-file/pages/import-account-with-file/content.tsx @@ -16,7 +16,11 @@ export function ImportAccountWithFileContentPage() { return ( - + diff --git a/src/apps/onboarding/pages/onboarding-success/content.tsx b/src/apps/onboarding/pages/onboarding-success/content.tsx index 2148605e0..2f4e2b429 100644 --- a/src/apps/onboarding/pages/onboarding-success/content.tsx +++ b/src/apps/onboarding/pages/onboarding-success/content.tsx @@ -14,7 +14,11 @@ export function OnboardingSuccessPageContent() { return ( - + diff --git a/src/apps/onboarding/pages/unlock-wallet/content.tsx b/src/apps/onboarding/pages/unlock-wallet/content.tsx index a66df69fc..1f555a89d 100644 --- a/src/apps/onboarding/pages/unlock-wallet/content.tsx +++ b/src/apps/onboarding/pages/unlock-wallet/content.tsx @@ -48,7 +48,11 @@ export function UnlockWalletPageContent({ return ( - + diff --git a/src/apps/onboarding/pages/welcome/content.tsx b/src/apps/onboarding/pages/welcome/content.tsx index 81b7560df..0c775d25c 100644 --- a/src/apps/onboarding/pages/welcome/content.tsx +++ b/src/apps/onboarding/pages/welcome/content.tsx @@ -10,8 +10,8 @@ export function WelcomePageContent() { diff --git a/src/apps/popup/pages/connected-sites/index.tsx b/src/apps/popup/pages/connected-sites/index.tsx index 3f6f71829..a32bf91b8 100644 --- a/src/apps/popup/pages/connected-sites/index.tsx +++ b/src/apps/popup/pages/connected-sites/index.tsx @@ -39,7 +39,8 @@ export function ConnectedSitesPage() { diff --git a/src/apps/popup/pages/create-account/content.tsx b/src/apps/popup/pages/create-account/content.tsx index 44d97b2ac..f87128f19 100644 --- a/src/apps/popup/pages/create-account/content.tsx +++ b/src/apps/popup/pages/create-account/content.tsx @@ -26,7 +26,11 @@ export function CreateAccountPageContent({ return ( - + diff --git a/src/apps/popup/pages/downloaded-secret-keys/content.tsx b/src/apps/popup/pages/downloaded-secret-keys/content.tsx index 4900bad6e..b325baddf 100644 --- a/src/apps/popup/pages/downloaded-secret-keys/content.tsx +++ b/src/apps/popup/pages/downloaded-secret-keys/content.tsx @@ -14,7 +14,11 @@ export function DownloadedSecretKeysPageContent() { return ( - + diff --git a/src/apps/popup/pages/no-connected-account/index.tsx b/src/apps/popup/pages/no-connected-account/index.tsx index e4fd7d405..d9aa6b951 100644 --- a/src/apps/popup/pages/no-connected-account/index.tsx +++ b/src/apps/popup/pages/no-connected-account/index.tsx @@ -19,7 +19,11 @@ export function NoConnectedAccountPageContent() { return ( - + diff --git a/src/apps/popup/pages/remove-account/index.tsx b/src/apps/popup/pages/remove-account/index.tsx index 0ec62e0ba..0c3f7f390 100644 --- a/src/apps/popup/pages/remove-account/index.tsx +++ b/src/apps/popup/pages/remove-account/index.tsx @@ -39,7 +39,11 @@ export function RemoveAccountPageContent() { return ( - + diff --git a/src/apps/popup/pages/rename-account/index.tsx b/src/apps/popup/pages/rename-account/index.tsx index 85c1609e8..88224f6fd 100644 --- a/src/apps/popup/pages/rename-account/index.tsx +++ b/src/apps/popup/pages/rename-account/index.tsx @@ -50,7 +50,11 @@ export function RenameAccountPageContent() { return ( - + diff --git a/src/apps/popup/pages/transfer/success-step.tsx b/src/apps/popup/pages/transfer/success-step.tsx index 596c629a4..9a02e0cd4 100644 --- a/src/apps/popup/pages/transfer/success-step.tsx +++ b/src/apps/popup/pages/transfer/success-step.tsx @@ -15,7 +15,11 @@ export const SuccessStep = () => { return ( - + You submitted a transaction diff --git a/src/assets/illustrations/account-imported.svg b/src/assets/illustrations/account-imported.svg index 2b16d1a60..2c629c1eb 100644 --- a/src/assets/illustrations/account-imported.svg +++ b/src/assets/illustrations/account-imported.svg @@ -1,47 +1,685 @@ - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/illustrations/create-account.svg b/src/assets/illustrations/create-account.svg index dd4007592..24e4ce615 100644 --- a/src/assets/illustrations/create-account.svg +++ b/src/assets/illustrations/create-account.svg @@ -1,47 +1,653 @@ - - - - - - - - - - + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - - - + + + + + + + + + + + + + - - - + + + - - - + + + - - - + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/illustrations/error.svg b/src/assets/illustrations/error.svg index f1d317150..6647b054e 100644 --- a/src/assets/illustrations/error.svg +++ b/src/assets/illustrations/error.svg @@ -1,34 +1,711 @@ - - - - - + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + diff --git a/src/assets/illustrations/key-downloaded.svg b/src/assets/illustrations/key-downloaded.svg index dbc8b15e7..6b1a87f61 100644 --- a/src/assets/illustrations/key-downloaded.svg +++ b/src/assets/illustrations/key-downloaded.svg @@ -1,45 +1,429 @@ - - - - - - - + + + + + + + + + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + diff --git a/src/assets/illustrations/locked-wallet.svg b/src/assets/illustrations/locked-wallet.svg index a8d457f7b..f922b9497 100644 --- a/src/assets/illustrations/locked-wallet.svg +++ b/src/assets/illustrations/locked-wallet.svg @@ -1,78 +1,929 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + + + + + + + + + + + - - - + + + + + + + + + + + + diff --git a/src/assets/illustrations/no-connected-sites.svg b/src/assets/illustrations/no-connected-sites.svg index e668cc25c..e7a21eab2 100644 --- a/src/assets/illustrations/no-connected-sites.svg +++ b/src/assets/illustrations/no-connected-sites.svg @@ -1,32 +1,1240 @@ - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + - - - + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/illustrations/no-connection.svg b/src/assets/illustrations/no-connection.svg index 0c16e75d1..d07525af0 100644 --- a/src/assets/illustrations/no-connection.svg +++ b/src/assets/illustrations/no-connection.svg @@ -1,62 +1,1006 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + - - - + + + + + + - - - + + + - - - + + + + + + + + + + + + + + + + + + + - - - + + + - - - + + + diff --git a/src/assets/illustrations/password-lock.svg b/src/assets/illustrations/password-lock.svg index c4973638c..f73a3187d 100644 --- a/src/assets/illustrations/password-lock.svg +++ b/src/assets/illustrations/password-lock.svg @@ -1,79 +1,900 @@ - - - - - - - - - - - - - + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + - - - - + + + - - - - - - - - + + + + + + + + + + + + + + + + + - - - + + + + + + + - - - - - + + + - - - + + + - - - + + + + + + + + + + + + + + + + + + + + + - - - + + + + + - - - + + + + + + + - - - + + + + + + + + + + + + - - - + + + + + - - - + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/illustrations/password.svg b/src/assets/illustrations/password.svg index bcef8044d..03c37e9b8 100644 --- a/src/assets/illustrations/password.svg +++ b/src/assets/illustrations/password.svg @@ -1,70 +1,465 @@ - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + - - - - + + + - - - - - - - - + + + + + - - - + + + + + + + + + + + + + + - - - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + + + + + diff --git a/src/assets/illustrations/remove-account.svg b/src/assets/illustrations/remove-account.svg index 629f18656..f95cb223b 100644 --- a/src/assets/illustrations/remove-account.svg +++ b/src/assets/illustrations/remove-account.svg @@ -1,46 +1,853 @@ - - - - - - - - - - + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + - - - + + + - - - + + + diff --git a/src/assets/illustrations/rename-account.svg b/src/assets/illustrations/rename-account.svg index 21993ebac..74daff712 100644 --- a/src/assets/illustrations/rename-account.svg +++ b/src/assets/illustrations/rename-account.svg @@ -1,27 +1,921 @@ - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/illustrations/reset-wallet.svg b/src/assets/illustrations/reset-wallet.svg index 61163ec42..85f2991e2 100644 --- a/src/assets/illustrations/reset-wallet.svg +++ b/src/assets/illustrations/reset-wallet.svg @@ -1,58 +1,768 @@ - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/illustrations/secret-key.svg b/src/assets/illustrations/secret-key.svg index d48e2f09b..6524636ef 100644 --- a/src/assets/illustrations/secret-key.svg +++ b/src/assets/illustrations/secret-key.svg @@ -1,27 +1,865 @@ - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + - - - + + + - - - + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/illustrations/success.svg b/src/assets/illustrations/success.svg index 727ede8de..bffdbdf6a 100644 --- a/src/assets/illustrations/success.svg +++ b/src/assets/illustrations/success.svg @@ -1,34 +1,683 @@ - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/illustrations/wallet-connected.svg b/src/assets/illustrations/wallet-connected.svg index 7c316089b..e445fbb07 100644 --- a/src/assets/illustrations/wallet-connected.svg +++ b/src/assets/illustrations/wallet-connected.svg @@ -1,57 +1,986 @@ - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/illustrations/welcome.svg b/src/assets/illustrations/welcome.svg index 9193bd7f4..247e7bb6e 100644 --- a/src/assets/illustrations/welcome.svg +++ b/src/assets/illustrations/welcome.svg @@ -1,135 +1,879 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/illustrations/wrong-secret-phrase.svg b/src/assets/illustrations/wrong-secret-phrase.svg index 237926818..e63540d6f 100644 --- a/src/assets/illustrations/wrong-secret-phrase.svg +++ b/src/assets/illustrations/wrong-secret-phrase.svg @@ -1,61 +1,623 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + - - - + + + + + + + + + + + - - - + + + + + + + + + + + - - - + + + + + + + + + + + - - - + + + + + + + + + + + - - - + + + - - - + + + + + + + + + + + - - - + + + diff --git a/src/libs/layout/error/content.tsx b/src/libs/layout/error/content.tsx index 27e6e95ce..63a230728 100644 --- a/src/libs/layout/error/content.tsx +++ b/src/libs/layout/error/content.tsx @@ -33,12 +33,17 @@ export function ErrorPageContent({ ) : ( - + )} diff --git a/src/libs/layout/reset-vault/index.tsx b/src/libs/layout/reset-vault/index.tsx index af0e08dd4..412a51368 100644 --- a/src/libs/layout/reset-vault/index.tsx +++ b/src/libs/layout/reset-vault/index.tsx @@ -34,7 +34,11 @@ export function ResetVaultPageContent() { <> - + diff --git a/src/libs/layout/unlock-protected-page-content/index.tsx b/src/libs/layout/unlock-protected-page-content/index.tsx index f3501b81d..2c3ea046b 100644 --- a/src/libs/layout/unlock-protected-page-content/index.tsx +++ b/src/libs/layout/unlock-protected-page-content/index.tsx @@ -43,7 +43,11 @@ export const UnlockProtectedPageContent = ({ return ( - + diff --git a/src/libs/layout/unlock-vault/index.tsx b/src/libs/layout/unlock-vault/index.tsx index d633b1c4f..582107dd3 100644 --- a/src/libs/layout/unlock-vault/index.tsx +++ b/src/libs/layout/unlock-vault/index.tsx @@ -146,7 +146,11 @@ export function UnlockVaultPageContent() { <> - + @@ -180,7 +184,11 @@ export function UnlockVaultPageContent() {
- + From d9e20b960f37d04196f90eb9c038353002c144ed Mon Sep 17 00:00:00 2001 From: Ostap Piatkovskyi <44294945+ost-ptk@users.noreply.github.com> Date: Wed, 30 Aug 2023 15:43:26 +0300 Subject: [PATCH 007/243] fix: fix native transfer in Firefox (#763) * added a check for deploy hash before the extended deploys info request * updated manifest permission for Firefox * removed comment --------- Co-authored-by: ost-ptk Co-authored-by: Vynnyk Dmytro --- src/apps/popup/pages/transfer/index.tsx | 36 +++++++++++++------------ src/manifest.v2.json | 5 +++- 2 files changed, 23 insertions(+), 18 deletions(-) diff --git a/src/apps/popup/pages/transfer/index.tsx b/src/apps/popup/pages/transfer/index.tsx index 527bb487f..fc91dee53 100644 --- a/src/apps/popup/pages/transfer/index.tsx +++ b/src/apps/popup/pages/transfer/index.tsx @@ -212,7 +212,7 @@ export const TransferPage = () => { // Note: this timeout is needed because the deploy is not immediately visible in the explorer }, 2000); } - + // TODO: need UI in case when the transfer is failed setTransferStep(TransactionSteps.Success); }); } else { @@ -235,23 +235,25 @@ export const TransferPage = () => { ).then(({ deploy_hash }) => { dispatchToMainStore(recipientPublicKeyAdded(recipientPublicKey)); - let triesLeft = 10; - const interval = setInterval(async () => { - const { payload: extendedDeployInfo } = - await dispatchFetchExtendedDeploysInfo(deploy_hash); - if (extendedDeployInfo) { - dispatchToMainStore( - accountPendingTransactionsChanged(extendedDeployInfo) - ); - clearInterval(interval); - } else if (triesLeft === 0) { - clearInterval(interval); - } - - triesLeft--; - // Note: this timeout is needed because the deploy is not immediately visible in the explorer - }, 2000); + if (deploy_hash != null) { + let triesLeft = 10; + const interval = setInterval(async () => { + const { payload: extendedDeployInfo } = + await dispatchFetchExtendedDeploysInfo(deploy_hash); + if (extendedDeployInfo) { + dispatchToMainStore( + accountPendingTransactionsChanged(extendedDeployInfo) + ); + clearInterval(interval); + } else if (triesLeft === 0) { + clearInterval(interval); + } + triesLeft--; + // Note: this timeout is needed because the deploy is not immediately visible in the explorer + }, 2000); + } + // TODO: need UI in case when the transfer is failed setTransferStep(TransactionSteps.Success); }); } diff --git a/src/manifest.v2.json b/src/manifest.v2.json index ae6cec7ac..e205316df 100755 --- a/src/manifest.v2.json +++ b/src/manifest.v2.json @@ -12,7 +12,10 @@ "storage", "tabs", "declarativeNetRequest", - "https://image-proxy-cdn.make.services/*" + "https://image-proxy-cdn.make.services/*", + "https://node-clarity-testnet.make.services/*", + "https://node-clarity-mainnet.make.services/*", + "https://casper-assets.s3.amazonaws.com/*" ], "declarative_net_request": { "rule_resources": [ From 24015b406af28595533e1ffab6ab7ab49faba132 Mon Sep 17 00:00:00 2001 From: Ostap Piatkovskyi <44294945+ost-ptk@users.noreply.github.com> Date: Wed, 30 Aug 2023 15:46:21 +0300 Subject: [PATCH 008/243] added tooltip on hover hash (#764) Co-authored-by: ost-ptk Co-authored-by: Vynnyk Dmytro --- .../pages/select-account/content.tsx | 17 +++---- .../pages/switch-account/content.tsx | 7 ++- .../unconnected-accounts-list.tsx | 7 ++- .../popup/pages/activity-details/content.tsx | 3 ++ .../pages/connect-another-account/index.tsx | 8 +++- .../pages/connected-sites/site-group-item.tsx | 1 + src/apps/popup/pages/home/index.tsx | 1 + src/apps/popup/pages/nft-details/content.tsx | 1 + .../pages/sign-deploy/deploy-value.tsx | 2 + .../account-activity-plate.tsx | 1 + .../account-casper-activity-plate.tsx | 1 + .../components/account-list/account-list.tsx | 7 ++- .../active-account-plate.tsx | 1 + src/libs/ui/components/hash/hash.tsx | 45 +++++++++++++++---- src/libs/ui/components/list/list.tsx | 19 ++++++-- .../recipient-plate/recipient-plate.tsx | 1 + src/libs/ui/components/tooltip/tooltip.tsx | 4 +- 17 files changed, 96 insertions(+), 30 deletions(-) diff --git a/src/apps/connect-to-app/pages/select-account/content.tsx b/src/apps/connect-to-app/pages/select-account/content.tsx index 5f83c55ea..d0c8b2818 100644 --- a/src/apps/connect-to-app/pages/select-account/content.tsx +++ b/src/apps/connect-to-app/pages/select-account/content.tsx @@ -29,9 +29,6 @@ import { selectVaultActiveAccount } from '@src/background/redux/vault/selectors'; -// Hidden account balance until a solution for fetching many balances will be ready -// https://github.com/make-software/casper-wallet/issues/374 -// const AccountBalanceListItemContainer = styled(LeftAlignedFlexColumn)``; const AccountNameWithHashListItemContainer = styled(LeftAlignedFlexColumn)` width: 100%; `; @@ -106,7 +103,7 @@ export function SelectAccountContent({ rows={accountsListItems} headerLabelTop={SpacingSize.Large} contentTop={SpacingSize.Small} - renderRow={account => ( + renderRow={(account, index) => ( setSelectedAccountNames(selectedAccountNames => @@ -136,15 +133,13 @@ export function SelectAccountContent({ value={account.publicKey} variant={HashVariant.CaptionHash} truncated + placement={ + index === accountsListItems.length - 1 + ? 'topRight' + : 'bottomRight' + } />
- {/* Hidden account balance until a solution for fetching many balances will be ready */} - {/**/} - {/* 2.1M*/} - {/* */} - {/* CSPR*/} - {/* */} - {/**/} )} marginLeftForItemSeparatorLine={60} diff --git a/src/apps/connect-to-app/pages/switch-account/content.tsx b/src/apps/connect-to-app/pages/switch-account/content.tsx index 41badde1a..82627c70f 100644 --- a/src/apps/connect-to-app/pages/switch-account/content.tsx +++ b/src/apps/connect-to-app/pages/switch-account/content.tsx @@ -122,7 +122,7 @@ export function SwitchAccountContent({ requestId }: SwitchAccountContentProps) { <> ( + renderRow={(account, index) => ( @@ -135,6 +135,11 @@ export function SwitchAccountContent({ requestId }: SwitchAccountContentProps) { value={account.publicKey} variant={HashVariant.CaptionHash} truncated + placement={ + index === connectedAccountsListItems.length - 1 + ? 'topRight' + : 'bottomRight' + } /> + ) : ( + + )} + + )} + /> + ); +}; diff --git a/src/apps/popup/pages/transfer-nft/utils.ts b/src/apps/popup/pages/transfer-nft/utils.ts new file mode 100644 index 000000000..591d2ac68 --- /dev/null +++ b/src/apps/popup/pages/transfer-nft/utils.ts @@ -0,0 +1,137 @@ +import { + CLKeyParameters, + CLPublicKey, + CLPublicKeyTag, + CLValueBuilder, + DeployUtil, + Keys, + RuntimeArgs +} from 'casper-js-sdk'; +import { sub } from 'date-fns'; + +import { NFTTokenStandard } from '@src/utils'; +import { motesToCSPR } from '@libs/ui/utils/formatters'; +import { + NFT_CEP47_PAYMENT_AMOUNT_AVERAGE_MOTES, + NFT_CEP78_PAYMENT_AMOUNT_AVERAGE_MOTES +} from '@src/constants'; + +export interface TokenArgs { + tokenId?: string; + tokenHash?: string; +} + +export type Cep47TransferArgs = { + target: CLKeyParameters; + ids: string[]; +}; + +export type TransferArgs = { + target: CLKeyParameters; + source: CLKeyParameters; +} & TokenArgs; + +export const getSignatureAlgorithm = (rawPublicKey: CLPublicKey) => { + switch (rawPublicKey.tag) { + case CLPublicKeyTag.ED25519: + return Keys.SignatureAlgorithm.Ed25519; + case CLPublicKeyTag.SECP256K1: + return Keys.SignatureAlgorithm.Secp256K1; + default: + throw Error('Unknown Signature type.'); + } +}; + +export const getDefaultPaymentAmountBasedOnNftTokenStandard = ( + tokenStandard: NFTTokenStandard | '' +) => { + switch (tokenStandard) { + case NFTTokenStandard.CEP47: + return motesToCSPR(NFT_CEP47_PAYMENT_AMOUNT_AVERAGE_MOTES); + case NFTTokenStandard.CEP78: + return motesToCSPR(NFT_CEP78_PAYMENT_AMOUNT_AVERAGE_MOTES); + default: + throw new Error('Unknown token standard.'); + } +}; + +export const getRuntimeArgsForCep78Transfer = (args: TransferArgs) => { + const runtimeArgs = RuntimeArgs.fromMap({ + target_key: CLValueBuilder.key(args.target), + source_key: CLValueBuilder.key(args.source) + }); + + if (args.tokenId) { + runtimeArgs.insert('is_hash_identifier_mode', CLValueBuilder.bool(false)); + runtimeArgs.insert('token_id', CLValueBuilder.u64(args.tokenId)); + } + + if (args.tokenHash) { + runtimeArgs.insert('is_hash_identifier_mode', CLValueBuilder.bool(true)); + runtimeArgs.insert('token_id', CLValueBuilder.u64(args.tokenHash)); + } + + return runtimeArgs; +}; + +export const getRuntimeArgsForCep47Transfer = ({ + target, + ids +}: Cep47TransferArgs) => + RuntimeArgs.fromMap({ + recipient: CLValueBuilder.key(target), + token_ids: CLValueBuilder.list(ids.map(id => CLValueBuilder.u256(id))) + }); + +export const getRuntimeArgs = ( + tokenStandard: NFTTokenStandard | '', + args: TransferArgs +) => { + switch (tokenStandard) { + case NFTTokenStandard.CEP47: + return getRuntimeArgsForCep47Transfer({ + target: args.target, + ids: [args.tokenId!] + }); + case NFTTokenStandard.CEP78: + return getRuntimeArgsForCep78Transfer({ + target: args.target, + source: args.source, + tokenId: args.tokenId + }); + + default: + throw new Error('Unknown token standard.'); + } +}; + +export const signNftDeploy = ( + runtimeArgs: RuntimeArgs, + paymentAmount: string, + deploySender: CLPublicKey, + networkName: string, + contractPackageHash: string, + keys: Keys.AsymmetricKey[] +) => { + const hash = Uint8Array.from(Buffer.from(contractPackageHash, 'hex')); + + const deployParams = new DeployUtil.DeployParams( + deploySender, + networkName, + undefined, + undefined, + undefined, + sub(new Date(), { seconds: 2 }).getTime() + ); // https://github.com/casper-network/casper-node/issues/4152 + const session = + DeployUtil.ExecutableDeployItem.newStoredVersionContractByHash( + hash, + null, + 'transfer', + runtimeArgs + ); + const payment = DeployUtil.standardPayment(paymentAmount); + const deploy = DeployUtil.makeDeploy(deployParams, session, payment); + + return deploy.sign(keys); +}; diff --git a/src/apps/popup/pages/transfer/amount-step.tsx b/src/apps/popup/pages/transfer/amount-step.tsx index 0d7f3b803..5bc58fe12 100644 --- a/src/apps/popup/pages/transfer/amount-step.tsx +++ b/src/apps/popup/pages/transfer/amount-step.tsx @@ -11,11 +11,11 @@ import { } from '@libs/layout'; import { Input, Typography } from '@libs/ui'; import { formatFiatAmount } from '@libs/ui/utils/formatters'; -import { TransferFormValues } from '@libs/ui/forms/transfer'; +import { TransferAmountFormValues } from '@libs/ui/forms/transfer'; import { selectAccountCurrencyRate } from '@background/redux/account-info/selectors'; interface AmountStepProps { - amountForm: UseFormReturn; + amountForm: UseFormReturn; symbol: string | null; isCSPR: boolean; } diff --git a/src/apps/popup/pages/transfer/content.tsx b/src/apps/popup/pages/transfer/content.tsx index f48390205..dc5d60369 100644 --- a/src/apps/popup/pages/transfer/content.tsx +++ b/src/apps/popup/pages/transfer/content.tsx @@ -1,19 +1,22 @@ import React from 'react'; import { UseFormReturn } from 'react-hook-form'; -import { TransferFormValues } from '@libs/ui/forms/transfer'; +import { + TransferAmountFormValues, + TransferRecipientFormValues +} from '@libs/ui/forms/transfer'; +import { TransferSuccessScreen } from '@libs/ui'; import { TransactionSteps } from './utils'; import { RecipientStep } from './recipient-step'; import { AmountStep } from './amount-step'; import { ConfirmStep } from './confirm-step'; -import { SuccessStep } from './success-step'; interface TransferPageContentProps { transferStep: TransactionSteps; recipientPublicKey: string; - amountForm: UseFormReturn; - recipientForm: UseFormReturn; + amountForm: UseFormReturn; + recipientForm: UseFormReturn; amount: string; balance: string | null; symbol: string | null; @@ -61,7 +64,7 @@ export const TransferPageContent = ({ } case TransactionSteps.Success: { - return ; + return ; } default: { diff --git a/src/apps/popup/pages/transfer/index.tsx b/src/apps/popup/pages/transfer/index.tsx index f3ea0915a..3830daa79 100644 --- a/src/apps/popup/pages/transfer/index.tsx +++ b/src/apps/popup/pages/transfer/index.tsx @@ -63,7 +63,7 @@ export const TransferPage = () => { const [isSubmitButtonDisable, setIsSubmitButtonDisable] = useState(true); const activeAccount = useSelector(selectVaultActiveAccount); - const { networkName, grpcUrl } = useSelector( + const { networkName, nodeUrl } = useSelector( selectApiConfigBasedOnActiveNetwork ); @@ -169,7 +169,7 @@ export const TransferPage = () => { if (isErc20Transfer) { // ERC20 transfer - const cep18 = new CEP18Client(grpcUrl, networkName); + const cep18 = new CEP18Client(nodeUrl, networkName); cep18.setContractHash( `hash-${tokenContractHash}`, @@ -206,7 +206,7 @@ export const TransferPage = () => { deploy, activeAccount.publicKey, activeAccount.secretKey, - grpcUrl + nodeUrl ).then(({ deploy_hash }) => { dispatchToMainStore(recipientPublicKeyAdded(recipientPublicKey)); @@ -247,7 +247,7 @@ export const TransferPage = () => { deploy, activeAccount.publicKey, activeAccount.secretKey, - grpcUrl + nodeUrl ).then(({ deploy_hash }) => { dispatchToMainStore(recipientPublicKeyAdded(recipientPublicKey)); diff --git a/src/apps/popup/pages/transfer/recipient-step.tsx b/src/apps/popup/pages/transfer/recipient-step.tsx index 20b7fae66..97164a921 100644 --- a/src/apps/popup/pages/transfer/recipient-step.tsx +++ b/src/apps/popup/pages/transfer/recipient-step.tsx @@ -1,29 +1,21 @@ -import React, { useEffect, useMemo, useState } from 'react'; +import React from 'react'; import { Trans, useTranslation } from 'react-i18next'; -import { UseFormReturn, useWatch } from 'react-hook-form'; -import { useSelector } from 'react-redux'; +import { UseFormReturn } from 'react-hook-form'; import { ContentContainer, ParagraphContainer, - SpacingSize, - VerticalSpaceContainer + SpacingSize } from '@libs/layout'; import { - Input, - List, - RecipientPlate, - SvgIcon, Typography, - ActiveAccountPlate + ActiveAccountPlate, + RecipientDropdownInput } from '@libs/ui'; -import { TransferFormValues } from '@libs/ui/forms/transfer'; -import { selectRecentRecipientPublicKeys } from '@src/background/redux/recent-recipient-public-keys/selectors'; -import { useClickAway } from '@libs/ui/hooks/use-click-away'; -import { selectVaultActiveAccount } from '@background/redux/vault/selectors'; +import { TransferRecipientFormValues } from '@libs/ui/forms/transfer'; interface RecipientStepProps { - recipientForm: UseFormReturn; + recipientForm: UseFormReturn; balance: string | null; symbol: string | null; } @@ -33,57 +25,8 @@ export const RecipientStep = ({ balance, symbol }: RecipientStepProps) => { - const [ - isOpenRecentRecipientPublicKeysList, - setIsOpenRecentRecipientPublicKeysList - ] = useState(false); - const [showRecipientPlate, setShowRecipientPlate] = useState(false); - const { t } = useTranslation(); - const recentRecipientPublicKeys = useSelector( - selectRecentRecipientPublicKeys - ); - const activeAccount = useSelector(selectVaultActiveAccount); - - const { register, formState, setValue, control, trigger } = recipientForm; - const { errors } = formState; - - const inputValue = useWatch({ - control: control, - name: 'recipientPublicKey' - }); - const { ref: clickAwayRef } = useClickAway({ - callback: () => { - setIsOpenRecentRecipientPublicKeysList(false); - if (formState.isValid) { - setShowRecipientPlate(true); - } - } - }); - - useEffect(() => { - if (formState.isValid) { - setShowRecipientPlate(true); - } - // This should trigger only once - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []); - - const optionsRow = useMemo( - () => - recentRecipientPublicKeys - .filter(item => item !== activeAccount?.publicKey) - .map((item, index) => ({ - publicKey: item, - id: index - })) - .filter(item => item.publicKey.includes(inputValue || '')), - [activeAccount?.publicKey, inputValue, recentRecipientPublicKeys] - ); - - const recipientLabel = t('To recipient'); - return ( @@ -93,55 +36,7 @@ export const RecipientStep = ({ - {showRecipientPlate ? ( - - { - setShowRecipientPlate(false); - setIsOpenRecentRecipientPublicKeysList(true); - }} - /> - - ) : ( - { - setIsOpenRecentRecipientPublicKeysList(true); - }} - > - } - placeholder={t('Recipient public address')} - {...register('recipientPublicKey')} - error={!!errors?.recipientPublicKey} - validationText={errors?.recipientPublicKey?.message} - /> - {isOpenRecentRecipientPublicKeysList && ( - ( - { - setValue('recipientPublicKey', publicKey); - await trigger('recipientPublicKey'); - - setIsOpenRecentRecipientPublicKeysList(false); - setShowRecipientPlate(true); - }} - /> - )} - marginLeftForItemSeparatorLine={56} - /> - )} - - )} + ); }; diff --git a/src/apps/popup/router/paths.ts b/src/apps/popup/router/paths.ts index f0ff6b71b..6407a707d 100644 --- a/src/apps/popup/router/paths.ts +++ b/src/apps/popup/router/paths.ts @@ -19,5 +19,6 @@ export enum RouterPath { ActivityDetails = '/activity-details', Token = '/token/:tokenName', Receive = '/receive', - NftDetails = '/nft-details/:contractPackageHash/nfts/:tokenId' + NftDetails = '/nft-details/:contractPackageHash/nfts/:tokenId', + TransferNft = '/transfer-nft/:contractPackageHash/nfts/:tokenId' } diff --git a/src/apps/popup/router/types.ts b/src/apps/popup/router/types.ts index 3a8a3d13c..69c14e73c 100644 --- a/src/apps/popup/router/types.ts +++ b/src/apps/popup/router/types.ts @@ -14,4 +14,8 @@ export type LocationState = { }; activeTabId?: number; tokenData?: TokenType | null; + nftData?: { + contentType: string; + url?: string; + }; }; diff --git a/src/background/redux/settings/selectors.ts b/src/background/redux/settings/selectors.ts index 9380743d0..c3c598adf 100644 --- a/src/background/redux/settings/selectors.ts +++ b/src/background/redux/settings/selectors.ts @@ -4,7 +4,7 @@ import { createSelector } from 'reselect'; import { CasperApiUrl, CasperLiveUrl, - GrpcUrl, + CasperNodeUrl, NetworkName, NetworkSetting } from '@src/constants'; @@ -23,15 +23,15 @@ export const selectApiConfigBasedOnActiveNetwork = createSelector( return { casperLiveUrl: CasperLiveUrl.MainnetUrl, casperApiUrl: CasperApiUrl.MainnetUrl, - grpcUrl: GrpcUrl.MainnetUrl, - networkName: NetworkName.Mainnet + networkName: NetworkName.Mainnet, + nodeUrl: CasperNodeUrl.MainnetUrl }; case NetworkSetting.Testnet: return { casperLiveUrl: CasperLiveUrl.TestnetUrl, casperApiUrl: CasperApiUrl.TestnetUrl, - grpcUrl: GrpcUrl.TestNetUrl, - networkName: NetworkName.Testnet + networkName: NetworkName.Testnet, + nodeUrl: CasperNodeUrl.TestnetUrl }; default: throw new Error(`Unknown network: ${activeNetwork}`); diff --git a/src/constants.ts b/src/constants.ts index 6eb36221b..b0e59f247 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -18,6 +18,8 @@ export const LOGIN_RETRY_ATTEMPTS_LIMIT = 5; export const TRANSFER_COST_MOTES = '100000000'; // 0.1 CSPR export const TRANSFER_MIN_AMOUNT_MOTES = '2500000000'; // 2.5 CSPR export const ERC20_PAYMENT_AMOUNT_AVERAGE_MOTES = '1500000000'; // 1.5 CSPR +export const NFT_CEP47_PAYMENT_AMOUNT_AVERAGE_MOTES = '1000000000'; // 1 CSPR +export const NFT_CEP78_PAYMENT_AMOUNT_AVERAGE_MOTES = '3000000000'; // 3 CSPR export const getBlockExplorerAccountUrl = (baseUrl: string, hash: string) => `${baseUrl}/account/${hash}`; @@ -65,9 +67,9 @@ export enum TermsLink { Privacy = 'https://www.casperwallet.io/privacy' } -export enum GrpcUrl { - TestNetUrl = 'https://node-clarity-testnet.make.services/rpc', - MainnetUrl = 'https://node-clarity-mainnet.make.services/rpc' +export enum CasperNodeUrl { + MainnetUrl = 'https://casper-node-proxy.make.services/rpc', + TestnetUrl = 'https://casper-testnet-node-proxy.make.services/rpc' } export enum NetworkName { diff --git a/src/libs/entities/Account.ts b/src/libs/entities/Account.ts index c9dcd8ec4..54610dc12 100644 --- a/src/libs/entities/Account.ts +++ b/src/libs/entities/Account.ts @@ -10,7 +10,7 @@ import { CLPublicKey, encodeBase16 } from 'casper-js-sdk'; // ED = 01 public keys should be 66 chars long (with the prefix) // SEC = 02 public keys should be 68 chars long (with the prefix) -const getRawPublicKey = (publicKeyHex: string): CLPublicKey => +export const getRawPublicKey = (publicKeyHex: string): CLPublicKey => CLPublicKey.fromHex(publicKeyHex); export const getAccountHashFromPublicKey = ( diff --git a/src/libs/layout/popup-layout.tsx b/src/libs/layout/popup-layout.tsx index 6f2e0463a..47866ec0e 100644 --- a/src/libs/layout/popup-layout.tsx +++ b/src/libs/layout/popup-layout.tsx @@ -52,7 +52,12 @@ export function PopupLayout({ return ( {renderHeader && {renderHeader()}} - + {renderContent()} diff --git a/src/libs/services/deployer-service/index.ts b/src/libs/services/deployer-service/index.ts index 0ea7eac4a..6f77f274d 100644 --- a/src/libs/services/deployer-service/index.ts +++ b/src/libs/services/deployer-service/index.ts @@ -1,7 +1,6 @@ import { CasperServiceByJsonRPC, CLPublicKey, DeployUtil } from 'casper-js-sdk'; import { signDeploy } from '@libs/crypto'; -import { GrpcUrl } from '@src/constants'; import { RPCResponse } from './types'; @@ -11,7 +10,7 @@ export const signAndDeploy = ( deploy: DeployUtil.Deploy, senderPublicKeyHex: string, senderSecretKeyHex: string, - url: GrpcUrl + url: string ): Promise => { const signature = signDeploy( deploy.hash, diff --git a/src/libs/ui/components/recipient-dropdown-input/recipient-dropdown-input.tsx b/src/libs/ui/components/recipient-dropdown-input/recipient-dropdown-input.tsx new file mode 100644 index 000000000..510d25294 --- /dev/null +++ b/src/libs/ui/components/recipient-dropdown-input/recipient-dropdown-input.tsx @@ -0,0 +1,124 @@ +import React, { useEffect, useMemo, useState } from 'react'; +import { useTranslation } from 'react-i18next'; +import { useSelector } from 'react-redux'; +import { UseFormReturn, useWatch } from 'react-hook-form'; + +import { selectRecentRecipientPublicKeys } from '@background/redux/recent-recipient-public-keys/selectors'; +import { SpacingSize, VerticalSpaceContainer } from '@libs/layout'; +import { Input, List, RecipientPlate, SvgIcon } from '@libs/ui'; +import { TransferRecipientFormValues } from '@libs/ui/forms/transfer'; +import { useClickAway } from '@libs/ui/hooks/use-click-away'; +import { selectVaultActiveAccount } from '@background/redux/vault/selectors'; +import { TransferNftRecipientFormValues } from '@libs/ui/forms/transfer-nft'; + +interface RecipientDropdownInputProps { + recipientForm: UseFormReturn< + TransferRecipientFormValues | TransferNftRecipientFormValues + >; +} + +export const RecipientDropdownInput = ({ + recipientForm +}: RecipientDropdownInputProps) => { + const [ + isOpenRecentRecipientPublicKeysList, + setIsOpenRecentRecipientPublicKeysList + ] = useState(false); + const [showRecipientPlate, setShowRecipientPlate] = useState(false); + + const { t } = useTranslation(); + + const recentRecipientPublicKeys = useSelector( + selectRecentRecipientPublicKeys + ); + const activeAccount = useSelector(selectVaultActiveAccount); + + const { register, formState, setValue, control, trigger } = recipientForm; + const { errors } = formState; + + const inputValue = useWatch({ + control: control, + name: 'recipientPublicKey' + }); + const { ref: clickAwayRef } = useClickAway({ + callback: () => { + setIsOpenRecentRecipientPublicKeysList(false); + if (formState.isValid) { + setShowRecipientPlate(true); + } + } + }); + + useEffect(() => { + if (formState.isValid) { + setShowRecipientPlate(true); + } + // This should trigger only once + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + const optionsRow = useMemo( + () => + recentRecipientPublicKeys + .filter(item => item !== activeAccount?.publicKey) + .map((item, index) => ({ + publicKey: item, + id: index + })) + .filter(item => item.publicKey.includes(inputValue || '')), + [activeAccount?.publicKey, inputValue, recentRecipientPublicKeys] + ); + + const recipientLabel = t('To recipient'); + + return showRecipientPlate ? ( + + { + setShowRecipientPlate(false); + setIsOpenRecentRecipientPublicKeysList(true); + }} + /> + + ) : ( + { + setIsOpenRecentRecipientPublicKeysList(true); + }} + > + } + placeholder={t('Recipient public address')} + {...register('recipientPublicKey')} + error={!!errors?.recipientPublicKey} + validationText={errors?.recipientPublicKey?.message} + /> + {isOpenRecentRecipientPublicKeysList && ( + ( + { + setValue('recipientPublicKey', publicKey); + await trigger('recipientPublicKey'); + + setIsOpenRecentRecipientPublicKeysList(false); + setShowRecipientPlate(true); + }} + /> + )} + marginLeftForItemSeparatorLine={56} + /> + )} + + ); +}; diff --git a/src/libs/ui/components/recipient-plate/recipient-plate.tsx b/src/libs/ui/components/recipient-plate/recipient-plate.tsx index de7d35d63..dd6bbde9b 100644 --- a/src/libs/ui/components/recipient-plate/recipient-plate.tsx +++ b/src/libs/ui/components/recipient-plate/recipient-plate.tsx @@ -14,7 +14,7 @@ interface RecipientPlateProps { const PublicKeyOptionContainer = styled(FlexRow)<{ onClick?: () => void }>` cursor: ${({ onClick }) => (onClick ? 'pointer' : 'initial')}; - padding: 8px 16px; + padding: 12px 16px; background-color: ${({ theme }) => theme.color.backgroundPrimary}; border-radius: ${({ theme }) => theme.borderRadius.eight}px; diff --git a/src/apps/popup/pages/transfer/success-step.tsx b/src/libs/ui/components/transfer-success-screen/transfer-succeess-screen.tsx similarity index 75% rename from src/apps/popup/pages/transfer/success-step.tsx rename to src/libs/ui/components/transfer-success-screen/transfer-succeess-screen.tsx index 9a02e0cd4..c5f01e586 100644 --- a/src/apps/popup/pages/transfer/success-step.tsx +++ b/src/libs/ui/components/transfer-success-screen/transfer-succeess-screen.tsx @@ -9,7 +9,13 @@ import { } from '@src/libs/layout'; import { SvgIcon, Typography } from '@libs/ui'; -export const SuccessStep = () => { +interface TransferSuccessScreenProps { + isNftTransfer?: boolean; +} + +export const TransferSuccessScreen = ({ + isNftTransfer = false +}: TransferSuccessScreenProps) => { const { t } = useTranslation(); return ( @@ -22,7 +28,11 @@ export const SuccessStep = () => { /> - You submitted a transaction + + {isNftTransfer + ? 'You’ve sent the NFT' + : 'You submitted a transaction'} + diff --git a/src/libs/ui/forms/transfer-nft.ts b/src/libs/ui/forms/transfer-nft.ts new file mode 100644 index 000000000..0bd2d1aad --- /dev/null +++ b/src/libs/ui/forms/transfer-nft.ts @@ -0,0 +1,51 @@ +import * as Yup from 'yup'; +import { useForm } from 'react-hook-form'; +import { UseFormProps } from 'react-hook-form/dist/types/form'; + +import { + usePaymentAmountRule, + useRecipientPublicKeyRule +} from '@libs/ui/forms/form-validation-rules'; +import { yupResolver } from '@hookform/resolvers/yup/dist/yup'; + +export type TransferNftAmountFormValues = { + paymentAmount: string; +}; + +export type TransferNftRecipientFormValues = { + recipientPublicKey: string; +}; + +export const useTransferNftForm = ( + amountMotes: string | null, + paymentAmount: string +) => { + const recipientFormSchema = Yup.object().shape({ + recipientPublicKey: useRecipientPublicKeyRule() + }); + + const recipientFormOptions: UseFormProps = { + reValidateMode: 'onChange', + mode: 'onChange', + resolver: yupResolver(recipientFormSchema) + }; + + const amountFormSchema = Yup.object().shape({ + paymentAmount: usePaymentAmountRule(amountMotes) + }); + + const amountFormOptions: UseFormProps = { + reValidateMode: 'onChange', + mode: 'onChange', + resolver: yupResolver(amountFormSchema), + defaultValues: { + paymentAmount + } + }; + + return { + recipientForm: + useForm(recipientFormOptions), + amountForm: useForm(amountFormOptions) + }; +}; diff --git a/src/libs/ui/forms/transfer.ts b/src/libs/ui/forms/transfer.ts index 6f4f96240..f1b671683 100644 --- a/src/libs/ui/forms/transfer.ts +++ b/src/libs/ui/forms/transfer.ts @@ -1,5 +1,6 @@ import * as Yup from 'yup'; import { useForm } from 'react-hook-form'; +import { UseFormProps } from 'react-hook-form/dist/types/form'; import { useCsprAmountRule, @@ -8,11 +9,13 @@ import { useRecipientPublicKeyRule, useTransferIdMemoRule } from '@libs/ui/forms/form-validation-rules'; -import { UseFormProps } from 'react-hook-form/dist/types/form'; import { yupResolver } from '@hookform/resolvers/yup/dist/yup'; -export type TransferFormValues = { +export type TransferRecipientFormValues = { recipientPublicKey: string; +}; + +export type TransferAmountFormValues = { amount: string; paymentAmount: string; transferIdMemo: string; @@ -29,7 +32,7 @@ export function useTransferForm( recipientPublicKey: useRecipientPublicKeyRule() }); - const recipientFormOptions: UseFormProps = { + const recipientFormOptions: UseFormProps = { reValidateMode: 'onChange', mode: 'onChange', resolver: yupResolver(recipientFormSchema) @@ -50,7 +53,7 @@ export function useTransferForm( ? erc20AmountFormSchema : csprAmountFormSchema; - const amountFormOptions: UseFormProps = { + const amountFormOptions: UseFormProps = { reValidateMode: 'onChange', mode: 'onChange', resolver: yupResolver(amountFormSchema), @@ -62,7 +65,7 @@ export function useTransferForm( }; return { - recipientForm: useForm(recipientFormOptions), - amountForm: useForm(amountFormOptions) + recipientForm: useForm(recipientFormOptions), + amountForm: useForm(amountFormOptions) }; } diff --git a/src/libs/ui/index.ts b/src/libs/ui/index.ts index 66fa99387..6b20384f2 100644 --- a/src/libs/ui/index.ts +++ b/src/libs/ui/index.ts @@ -39,6 +39,8 @@ export * from './components/account-list/account-list'; export * from './components/connection-status-badge/connection-status-badge'; export * from './components/casper-token-activity-list/casper-token-activity-list'; export * from './components/loading-activity-view/loading-activity-view'; +export * from './components/recipient-dropdown-input/recipient-dropdown-input'; +export * from './components/transfer-success-screen/transfer-succeess-screen'; export * from './utils/match-media'; export * from './utils/match-size'; diff --git a/src/manifest.v2.json b/src/manifest.v2.json index 598526a96..093b9008c 100755 --- a/src/manifest.v2.json +++ b/src/manifest.v2.json @@ -1,6 +1,6 @@ { "manifest_version": 2, - "content_security_policy": "default-src 'none'; object-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; script-src 'self'; style-src 'unsafe-inline'; img-src https: data:; media-src https: data:; connect-src https://event-store-api-clarity-testnet.make.services https://event-store-api-clarity-mainnet.make.services https://node-clarity-testnet.make.services/rpc https://node-clarity-mainnet.make.services/rpc https://casper-assets.s3.amazonaws.com/ https://image-proxy-cdn.make.services/", + "content_security_policy": "default-src 'none'; object-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; script-src 'self'; style-src 'unsafe-inline'; img-src https: data:; media-src https: data:; connect-src https://event-store-api-clarity-testnet.make.services https://event-store-api-clarity-mainnet.make.services https://casper-assets.s3.amazonaws.com/ https://image-proxy-cdn.make.services/ https://casper-testnet-node-proxy.make.services/rpc https://casper-node-proxy.make.services/rpc", "icons": { "16": "logo16.png", "64": "logo64.png", @@ -13,9 +13,9 @@ "tabs", "declarativeNetRequest", "https://image-proxy-cdn.make.services/*", - "https://node-clarity-testnet.make.services/*", - "https://node-clarity-mainnet.make.services/*", - "https://casper-assets.s3.amazonaws.com/*" + "https://casper-assets.s3.amazonaws.com/*", + "https://casper-testnet-node-proxy.make.services/*", + "https://casper-node-proxy.make.services/*" ], "declarative_net_request": { "rule_resources": [ diff --git a/src/manifest.v3.json b/src/manifest.v3.json index 4f11b0645..0335395b8 100644 --- a/src/manifest.v3.json +++ b/src/manifest.v3.json @@ -1,7 +1,7 @@ { "manifest_version": 3, "content_security_policy": { - "extension_pages": "default-src 'none'; object-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; script-src 'self'; style-src 'unsafe-inline'; img-src https: data:; media-src https: data:; connect-src https://event-store-api-clarity-testnet.make.services https://event-store-api-clarity-mainnet.make.services https://node-clarity-testnet.make.services/rpc https://node-clarity-mainnet.make.services/rpc https://casper-assets.s3.amazonaws.com/ https://image-proxy-cdn.make.services/" + "extension_pages": "default-src 'none'; object-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; script-src 'self'; style-src 'unsafe-inline'; img-src https: data:; media-src https: data:; connect-src https://event-store-api-clarity-testnet.make.services https://event-store-api-clarity-mainnet.make.services https://casper-assets.s3.amazonaws.com/ https://image-proxy-cdn.make.services/ https://casper-testnet-node-proxy.make.services/rpc https://casper-node-proxy.make.services/rpc" }, "icons": { "16": "logo16.png", diff --git a/src/utils.ts b/src/utils.ts index 688443d0f..e7e2648b1 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -157,9 +157,14 @@ export const NFTTokenStandards = { CEP78: 2 }; +export enum NFTTokenStandard { + CEP47 = 'CEP-47', + CEP78 = 'CEP-78' +} + export const MapNFTTokenStandardToName = { - [NFTTokenStandards.CEP47]: 'CEP-47', - [NFTTokenStandards.CEP78]: 'CEP-78' + [NFTTokenStandards.CEP47]: NFTTokenStandard.CEP47, + [NFTTokenStandards.CEP78]: NFTTokenStandard.CEP78 }; export const tryParseJSONObject = (jsonString: any) => { @@ -272,7 +277,7 @@ export const deriveMetadataFromToken = ( }; export const getNftTokenMetadataWithLinks = ( - nftToken: NFTTokenResult | null + nftToken: NFTTokenResult | null | undefined ) => { return !nftToken ? [] From 77ecb703e86d23650ddb379904394afc2782d9e2 Mon Sep 17 00:00:00 2001 From: Ostap Piatkovskyi <44294945+ost-ptk@users.noreply.github.com> Date: Tue, 12 Sep 2023 14:19:13 +0300 Subject: [PATCH 013/243] fix issues with the layout of a deploy list (#772) Co-authored-by: ost-ptk Co-authored-by: Vynnyk Dmytro --- .../account-activity-plate.tsx | 18 ++++++++++++++---- .../ui/components/token-plate/token-plate.tsx | 8 ++++++-- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/libs/ui/components/account-activity-plate/account-activity-plate.tsx b/src/libs/ui/components/account-activity-plate/account-activity-plate.tsx index 7b4d1ee13..3ee49b690 100644 --- a/src/libs/ui/components/account-activity-plate/account-activity-plate.tsx +++ b/src/libs/ui/components/account-activity-plate/account-activity-plate.tsx @@ -1,6 +1,7 @@ import React, { forwardRef, useEffect, useState } from 'react'; import { useSelector } from 'react-redux'; import { Trans, useTranslation } from 'react-i18next'; +import styled from 'styled-components'; import { AccountActivityPlateContainer, @@ -9,7 +10,8 @@ import { AlignedSpaceBetweenFlexRow, ActivityPlateIconCircleContainer, ActivityPlateDivider, - SpacingSize + SpacingSize, + RightAlignedCenteredFlexRow } from '@libs/layout'; import { DeployStatus, @@ -41,6 +43,10 @@ import { import { getAccountHashFromPublicKey } from '@libs/entities/Account'; import { getRecipientAddressFromTransaction } from '@libs/ui/utils/utils'; +const SymbolContainer = styled(RightAlignedCenteredFlexRow)` + max-width: 80px; +`; + interface AccountActivityPlateProps { transactionInfo: Erc20TransferWithId | ExtendedDeployWithId; onClick?: () => void; @@ -200,9 +206,13 @@ export const AccountActivityPlate = forwardRef( {formattedAmount !== '-' && ( - - {symbol || 'CSPR'} - + 8 ? symbol : undefined}> + + + {symbol || 'CSPR'} + + + )} diff --git a/src/libs/ui/components/token-plate/token-plate.tsx b/src/libs/ui/components/token-plate/token-plate.tsx index 1efa24b3e..2942a4cad 100644 --- a/src/libs/ui/components/token-plate/token-plate.tsx +++ b/src/libs/ui/components/token-plate/token-plate.tsx @@ -62,9 +62,12 @@ export const TokenPlate = ({ 7 ? token?.amount : undefined + (token?.amount && token.amount.length > 7) || + (token?.symbol && token.symbol.length > 6) + ? `${token?.amount} ${token?.symbol}` + : undefined } - placement="topLeft" + placement="bottomLeft" overflowWrap fullWidth > @@ -75,6 +78,7 @@ export const TokenPlate = ({ 6)} loading={!token?.symbol} > {token?.symbol} From a8d68e2146e0686faf3d28c31f8f1b391f16e0e9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Sep 2023 14:21:27 +0300 Subject: [PATCH 014/243] build(deps): bump sqlite3 from 5.0.8 to 5.1.6 (#694) Bumps [sqlite3](https://github.com/TryGhost/node-sqlite3) from 5.0.8 to 5.1.6. - [Release notes](https://github.com/TryGhost/node-sqlite3/releases) - [Commits](https://github.com/TryGhost/node-sqlite3/compare/v5.0.8...v5.1.6) --- updated-dependencies: - dependency-name: sqlite3 dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index c76962785..89e1a84a4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23915,9 +23915,9 @@ "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==" }, "node_modules/sqlite3": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.0.8.tgz", - "integrity": "sha512-f2ACsbSyb2D1qFFcqIXPfFscLtPVOWJr5GmUzYxf4W+0qelu5MWrR+FAQE1d5IUArEltBrzSDxDORG8P/IkqyQ==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.1.6.tgz", + "integrity": "sha512-olYkWoKFVNSSSQNvxVUfjiVbz3YtBwTJj+mfV5zpHmqW3sELx2Cf4QCdirMelhM5Zh+KDVaKgQHqCxrqiWHybw==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -45279,9 +45279,9 @@ "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==" }, "sqlite3": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.0.8.tgz", - "integrity": "sha512-f2ACsbSyb2D1qFFcqIXPfFscLtPVOWJr5GmUzYxf4W+0qelu5MWrR+FAQE1d5IUArEltBrzSDxDORG8P/IkqyQ==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.1.6.tgz", + "integrity": "sha512-olYkWoKFVNSSSQNvxVUfjiVbz3YtBwTJj+mfV5zpHmqW3sELx2Cf4QCdirMelhM5Zh+KDVaKgQHqCxrqiWHybw==", "dev": true, "requires": { "@mapbox/node-pre-gyp": "^1.0.0", From 19f439ac32d82ce445f5364612624c8473ab2153 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Sep 2023 14:21:58 +0300 Subject: [PATCH 015/243] build(deps): bump json5 from 1.0.1 to 1.0.2 (#695) Bumps [json5](https://github.com/json5/json5) from 1.0.1 to 1.0.2. - [Release notes](https://github.com/json5/json5/releases) - [Changelog](https://github.com/json5/json5/blob/main/CHANGELOG.md) - [Commits](https://github.com/json5/json5/compare/v1.0.1...v1.0.2) --- updated-dependencies: - dependency-name: json5 dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 89e1a84a4..39f38f656 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25194,9 +25194,9 @@ } }, "node_modules/tsconfig-paths/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, "dependencies": { "minimist": "^1.2.0" @@ -46135,9 +46135,9 @@ }, "dependencies": { "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, "requires": { "minimist": "^1.2.0" From 466b193931e8c312aca98e236336d38489dba93a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Sep 2023 14:22:27 +0300 Subject: [PATCH 016/243] build(deps): bump dns-packet from 5.3.1 to 5.6.0 (#696) Bumps [dns-packet](https://github.com/mafintosh/dns-packet) from 5.3.1 to 5.6.0. - [Changelog](https://github.com/mafintosh/dns-packet/blob/master/CHANGELOG.md) - [Commits](https://github.com/mafintosh/dns-packet/compare/v5.3.1...v5.6.0) --- updated-dependencies: - dependency-name: dns-packet dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 39f38f656..4080945f6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10345,9 +10345,9 @@ "dev": true }, "node_modules/dns-packet": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.3.1.tgz", - "integrity": "sha512-spBwIj0TK0Ey3666GwIdWVfUpLyubpU53BTCu8iPn4r4oXd9O14Hjg3EHw3ts2oed77/SeckunUYCyRlSngqHw==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.0.tgz", + "integrity": "sha512-rza3UH1LwdHh9qyPXp8lkwpjSNk/AMD3dPytUoRoqnypDUhY0xvbdmVhWOfxO68frEfV9BU8V12Ez7ZsHGZpCQ==", "dev": true, "dependencies": { "@leichtgewicht/ip-codec": "^2.0.1" @@ -34864,9 +34864,9 @@ "dev": true }, "dns-packet": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.3.1.tgz", - "integrity": "sha512-spBwIj0TK0Ey3666GwIdWVfUpLyubpU53BTCu8iPn4r4oXd9O14Hjg3EHw3ts2oed77/SeckunUYCyRlSngqHw==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.0.tgz", + "integrity": "sha512-rza3UH1LwdHh9qyPXp8lkwpjSNk/AMD3dPytUoRoqnypDUhY0xvbdmVhWOfxO68frEfV9BU8V12Ez7ZsHGZpCQ==", "dev": true, "requires": { "@leichtgewicht/ip-codec": "^2.0.1" From d1408355e8022fe7d73108c433f674817b3c7c37 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Sep 2023 14:25:59 +0300 Subject: [PATCH 017/243] build(deps): bump xml2js and web-ext (#697) Bumps [xml2js](https://github.com/Leonidas-from-XIV/node-xml2js) to 0.5.0 and updates ancestor dependency [web-ext](https://github.com/mozilla/web-ext). These dependencies need to be updated together. Updates `xml2js` from 0.4.23 to 0.5.0 - [Commits](https://github.com/Leonidas-from-XIV/node-xml2js/commits/0.5.0) Updates `web-ext` from 7.5.0 to 7.6.2 - [Release notes](https://github.com/mozilla/web-ext/releases) - [Commits](https://github.com/mozilla/web-ext/compare/7.5.0...7.6.2) --- updated-dependencies: - dependency-name: xml2js dependency-type: indirect - dependency-name: web-ext dependency-type: direct:development ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Dmytro Vynnyk --- package-lock.json | 1030 ++++++++++++++++++++++++++++++++------------- package.json | 2 +- 2 files changed, 733 insertions(+), 299 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4080945f6..a2237a239 100644 --- a/package-lock.json +++ b/package-lock.json @@ -117,7 +117,7 @@ "tsconfig-paths-webpack-plugin": "^4.0.0", "typescript": "4.9.3", "url-loader": "^4.1.1", - "web-ext": "7.5.0", + "web-ext": "7.6.2", "webextension-polyfill": "0.10.0", "webpack": "5.76.0", "webpack-cli": "5.0.0", @@ -2149,9 +2149,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.20.13", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.13.tgz", - "integrity": "sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz", + "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==", "dependencies": { "regenerator-runtime": "^0.13.11" }, @@ -2519,6 +2519,42 @@ "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==", "dev": true }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", + "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", + "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, "node_modules/@eslint/eslintrc": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", @@ -2569,6 +2605,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@eslint/js": { + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.36.0.tgz", + "integrity": "sha512-lxJ9R5ygVm8ZWgYdUweoq5ownDlJ4upvoWmO4eLxBYHdMo+vZ/Rx0EN6MbKWDJOSUGrqJy2Gt+Dyv/VKml0fjg==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "node_modules/@ethersproject/bignumber": { "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", @@ -2645,6 +2690,16 @@ } ] }, + "node_modules/@fluent/syntax": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/@fluent/syntax/-/syntax-0.19.0.tgz", + "integrity": "sha512-5D2qVpZrgpjtqU4eNOcWGp1gnUCgjfM+vKGE2y03kKN6z5EBhtx0qdRFbg8QuNNj8wXNoX93KJoYb+NqoxswmQ==", + "dev": true, + "engines": { + "node": ">=14.0.0", + "npm": ">=7.0.0" + } + }, "node_modules/@formatjs/ecma402-abstract": { "version": "1.14.2", "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.14.2.tgz", @@ -3804,9 +3859,9 @@ } }, "node_modules/@mdn/browser-compat-data": { - "version": "5.2.29", - "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-5.2.29.tgz", - "integrity": "sha512-bEBrkTWbDAs/PB4IdRg4CtU750oBRytXHK/wC2oIDkgKZqnt76nACSooQQuHF11mK5k43f/IgFUMO5t5quRPVA==", + "version": "5.2.42", + "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-5.2.42.tgz", + "integrity": "sha512-CD/2ai1W45cDN/zN2AcYduDavU+nq9aStyQizi4MHxnwkRvS/H24WIjgc1qD8CISoqXa8AAIe+A+zpWxwV7a2Q==", "dev": true }, "node_modules/@noble/curves": { @@ -6225,34 +6280,34 @@ } }, "node_modules/addons-linter": { - "version": "5.27.0", - "resolved": "https://registry.npmjs.org/addons-linter/-/addons-linter-5.27.0.tgz", - "integrity": "sha512-gDgl0FcmhZ5cs3St0qAaO9J1BoektwnY+p4dVgcvPu8WaBqH9MG2fk0gL/evCpoHSXeSw15GA87n8Y7zy7raVQ==", + "version": "5.32.0", + "resolved": "https://registry.npmjs.org/addons-linter/-/addons-linter-5.32.0.tgz", + "integrity": "sha512-Lf6oOyw8X9z5BMd9xhQwSbPlN2PUlzDLnYLAVT5lkrgXEx0fO9hRk4JRxWZ8+rFGz+mCIA2TTClZF2f+MKgJQA==", "dev": true, "dependencies": { - "@mdn/browser-compat-data": "5.2.29", + "@fluent/syntax": "0.19.0", + "@mdn/browser-compat-data": "5.2.42", "addons-moz-compare": "1.3.0", - "addons-scanner-utils": "8.3.0", + "addons-scanner-utils": "8.5.0", "ajv": "8.12.0", "chalk": "4.1.2", "cheerio": "1.0.0-rc.12", "columnify": "1.6.0", "common-tags": "1.8.2", - "deepmerge": "4.2.2", - "eslint": "8.32.0", + "deepmerge": "4.3.1", + "eslint": "8.36.0", "eslint-plugin-no-unsanitized": "4.0.2", "eslint-visitor-keys": "3.3.0", - "espree": "9.4.1", + "espree": "9.5.0", "esprima": "4.0.1", "fast-json-patch": "3.1.1", - "fluent-syntax": "0.14.0", - "glob": "8.1.0", + "glob": "9.3.0", "image-size": "1.0.2", "is-mergeable-object": "1.1.1", "jed": "1.1.1", "json-merge-patch": "1.0.2", "os-locale": "5.0.0", - "pino": "8.8.0", + "pino": "8.11.0", "postcss": "8.4.21", "relaxed-json": "1.0.3", "semver": "7.3.8", @@ -6260,7 +6315,7 @@ "source-map-support": "0.5.21", "tosource": "1.0.0", "upath": "2.0.1", - "yargs": "17.6.2", + "yargs": "17.7.1", "yauzl": "2.10.0" }, "bin": { @@ -6270,6 +6325,126 @@ "node": ">=12.21.0" } }, + "node_modules/addons-linter/node_modules/@eslint/eslintrc": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.0.tgz", + "integrity": "sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/addons-linter/node_modules/@eslint/eslintrc/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/addons-linter/node_modules/@eslint/eslintrc/node_modules/eslint-visitor-keys": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", + "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/addons-linter/node_modules/@eslint/eslintrc/node_modules/espree": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.0.tgz", + "integrity": "sha512-1FH/IiruXZ84tpUlm0aCUEwMl2Ho5ilqVh0VvQXw+byAz/4SAciyHLlfmL5WYqsvD38oymdUwBss0LtK8m4s/A==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/addons-linter/node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/addons-linter/node_modules/acorn": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.9.0.tgz", + "integrity": "sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/addons-linter/node_modules/addons-scanner-utils": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/addons-scanner-utils/-/addons-scanner-utils-8.5.0.tgz", + "integrity": "sha512-X35SYZRdSnxx7UZuAk+DizKihQp2Ze2c5GV+5nnRr/FFyx/fOgE3Zo8jdhzSne57PENE9w1ZVocBLJTN6UDB3g==", + "dev": true, + "dependencies": { + "@types/yauzl": "2.10.0", + "common-tags": "1.8.2", + "first-chunk-stream": "3.0.0", + "strip-bom-stream": "4.0.0", + "upath": "2.0.1", + "yauzl": "2.10.0" + }, + "peerDependencies": { + "body-parser": "1.20.2", + "express": "4.18.2", + "node-fetch": "2.6.7", + "safe-compare": "1.1.4" + }, + "peerDependenciesMeta": { + "body-parser": { + "optional": true + }, + "express": { + "optional": true + }, + "node-fetch": { + "optional": true + }, + "safe-compare": { + "optional": true + } + } + }, "node_modules/addons-linter/node_modules/ajv": { "version": "8.12.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", @@ -6301,6 +6476,43 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/addons-linter/node_modules/body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/addons-linter/node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "ms": "2.0.0" + } + }, "node_modules/addons-linter/node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -6344,6 +6556,17 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/addons-linter/node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true, + "optional": true, + "peer": true, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/addons-linter/node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -6357,12 +6580,15 @@ } }, "node_modules/addons-linter/node_modules/eslint": { - "version": "8.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.32.0.tgz", - "integrity": "sha512-nETVXpnthqKPFyuY2FNjz/bEd6nbosRgKbkgS/y1C7LJop96gYHWpiguLecMHQ2XCPxn77DS0P+68WzG6vkZSQ==", + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.36.0.tgz", + "integrity": "sha512-Y956lmS7vDqomxlaaQAHVmeb4tNMp2FWIvU/RnU5BD3IKMD/MJPr76xdyr68P8tV1iNMvN2mRK0yy3c+UjL+bw==", "dev": true, "dependencies": { - "@eslint/eslintrc": "^1.4.1", + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.4.0", + "@eslint/eslintrc": "^2.0.1", + "@eslint/js": "8.36.0", "@humanwhocodes/config-array": "^0.11.8", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -6373,10 +6599,9 @@ "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", - "esquery": "^1.4.0", + "espree": "^9.5.0", + "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", @@ -6397,7 +6622,6 @@ "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.1", - "regexpp": "^3.2.0", "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" @@ -6460,19 +6684,18 @@ } }, "node_modules/addons-linter/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.0.tgz", + "integrity": "sha512-EAZejC7JvnQINayvB/7BJbpZpNOJ8Lrw2OZNEvQxe0vaLn1SuwMcfV7/MNaX8L/T0wmptBFI4YMtDvSBxYDc7w==", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "minimatch": "^7.4.1", + "minipass": "^4.2.4", + "path-scurry": "^1.6.1" }, "engines": { - "node": ">=12" + "node": ">=16 || 14 >=14.17" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -6491,15 +6714,18 @@ } }, "node_modules/addons-linter/node_modules/glob/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz", + "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/addons-linter/node_modules/globals": { @@ -6547,6 +6773,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/addons-linter/node_modules/minipass": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", + "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/addons-linter/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "optional": true, + "peer": true + }, "node_modules/addons-linter/node_modules/p-locate": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", @@ -6571,6 +6814,23 @@ "node": ">=8" } }, + "node_modules/addons-linter/node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/addons-linter/node_modules/semver": { "version": "7.3.8", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", @@ -6616,40 +6876,6 @@ "integrity": "sha512-/rXpQeaY0nOKhNx00pmZXdk5Mu+KhVlL3/pSBuAYwrxRrNiTvI/9xfQI8Lmm7DMMl+PDhtfAHY/0ibTpdeoQQQ==", "dev": true }, - "node_modules/addons-scanner-utils": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/addons-scanner-utils/-/addons-scanner-utils-8.3.0.tgz", - "integrity": "sha512-XP+2kxhZxlxiVFXVJ7lyJEuxpUS8ryrolUDqnUEnvOZ/3p8qt9hWCYSliXhI2W+Swf/hZ3F4CLAG6tBnqdxDYA==", - "dev": true, - "dependencies": { - "@types/yauzl": "2.10.0", - "common-tags": "1.8.2", - "first-chunk-stream": "3.0.0", - "strip-bom-stream": "4.0.0", - "upath": "2.0.1", - "yauzl": "2.10.0" - }, - "peerDependencies": { - "body-parser": "1.20.1", - "express": "4.18.2", - "node-fetch": "2.6.7", - "safe-compare": "1.1.4" - }, - "peerDependenciesMeta": { - "body-parser": { - "optional": true - }, - "express": { - "optional": true - }, - "node-fetch": { - "optional": true - }, - "safe-compare": { - "optional": true - } - } - }, "node_modules/adm-zip": { "version": "0.5.9", "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.9.tgz", @@ -9663,9 +9889,9 @@ } }, "node_modules/core-js": { - "version": "3.27.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.27.1.tgz", - "integrity": "sha512-GutwJLBChfGCpwwhbYoqfv03LAfmiz7e7D/BNxzeMxwQf10GRSzqiOjx7AmtEk+heiD/JWmBuyBPgFtx0Sg1ww==", + "version": "3.29.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.29.0.tgz", + "integrity": "sha512-VG23vuEisJNkGl6XQmFJd3rEG/so/CNatqeE+7uZAwTSwFeB/qaO0be8xZYUNWprJ/GIwL8aMt9cj1kvbpTZhg==", "dev": true, "hasInstallScript": true, "funding": { @@ -10030,9 +10256,9 @@ } }, "node_modules/data-uri-to-buffer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz", - "integrity": "sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", "dev": true, "engines": { "node": ">= 12" @@ -10175,9 +10401,9 @@ } }, "node_modules/deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "engines": { "node": ">=0.10.0" } @@ -11734,9 +11960,9 @@ } }, "node_modules/espree": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", - "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.0.tgz", + "integrity": "sha512-JPbJGhKc47++oo4JkEoTe2wjy4fmMwvFpgJT9cQzmfXKp22Dr6Hf1tdCteLz1h0P3t+mGvWZ+4Uankvh8+c6zw==", "dev": true, "dependencies": { "acorn": "^8.8.0", @@ -11785,9 +12011,9 @@ } }, "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, "dependencies": { "estraverse": "^5.1.0" @@ -12138,9 +12364,9 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" }, "node_modules/fast-redact": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.1.2.tgz", - "integrity": "sha512-+0em+Iya9fKGfEQGcd62Yv6onjBmmhV1uh86XVfOU8VwAe6kaFdQCWI9s0/Nnugx5Vd9tdbZ7e6gE2tR9dzXdw==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.2.0.tgz", + "integrity": "sha512-zaTadChr+NekyzallAMXATXLOR8MNx3zqpZ0MUF2aGf4EathnG0f32VLODNlY8IuGY3HoRO2L6/6fSzNsLaHIw==", "dev": true, "engines": { "node": ">=6" @@ -12357,16 +12583,16 @@ } }, "node_modules/firefox-profile": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/firefox-profile/-/firefox-profile-4.2.2.tgz", - "integrity": "sha512-3kI17Xl9dL9AeRkpV1yahsJ+UbekkPtlQswKrIsTY1NLgxtEOR4R19rjGGz5+7/rP8Jt6fvxHk+Bai9R6Eai3w==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/firefox-profile/-/firefox-profile-4.3.2.tgz", + "integrity": "sha512-/C+Eqa0YgIsQT2p66p7Ygzqe7NlE/GNTbhw2SBCm5V3OsWDPITNdTPEcH2Q2fe7eMpYYNPKdUcuVioZBZiR6kA==", "dev": true, "dependencies": { "adm-zip": "~0.5.x", "fs-extra": "~9.0.1", "ini": "~2.0.0", "minimist": "^1.2.5", - "xml2js": "~0.4.23" + "xml2js": "^0.5.0" }, "bin": { "firefox-profile": "lib/cli.js" @@ -12442,16 +12668,6 @@ "node": ">= 0.8.0" } }, - "node_modules/fluent-syntax": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/fluent-syntax/-/fluent-syntax-0.14.0.tgz", - "integrity": "sha512-+k8uXWfRpSrE33764RbpjIKMzIX6R9EnSjFBgaA1s0Mboc3KnW9sYe0c6vjIoZQY1C4Gst1VFvAOP6YGJjTJuA==", - "deprecated": "Renamed to @fluent/syntax 0.14.0", - "dev": true, - "engines": { - "node": ">=8.9.0" - } - }, "node_modules/flush-write-stream": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", @@ -17305,9 +17521,9 @@ } }, "node_modules/jose": { - "version": "4.11.2", - "resolved": "https://registry.npmjs.org/jose/-/jose-4.11.2.tgz", - "integrity": "sha512-njj0VL2TsIxCtgzhO+9RRobBvws4oYyCM8TpvoUQwl/MbIM3NFJRR9+e6x0sS5xXaP1t6OCBkaBME98OV9zU5A==", + "version": "4.13.1", + "resolved": "https://registry.npmjs.org/jose/-/jose-4.13.1.tgz", + "integrity": "sha512-MSJQC5vXco5Br38mzaQKiq9mwt7lwj2eXpgpRyQYNHYt2lq1PjkWa7DLXX0WVcQLE9HhMh3jPiufS7fhJf+CLQ==", "dev": true, "funding": { "url": "https://github.com/sponsors/panva" @@ -20170,9 +20386,9 @@ } }, "node_modules/open": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", "dev": true, "dependencies": { "define-lazy-prop": "^2.0.0", @@ -20827,6 +21043,40 @@ "resolved": "https://registry.npmjs.org/path-posix/-/path-posix-1.0.0.tgz", "integrity": "sha1-BrJhE/Vr6rBCVFojv6iAA8ysJg8=" }, + "node_modules/path-scurry": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.0.tgz", + "integrity": "sha512-tZFEaRQbMLjwrsmidsGJ6wDMv0iazJWk6SfIKnY4Xru8auXgmJkOBa5DUbYFcFD2Rzk2+KDlIiF0GVXNCbgC7g==", + "dev": true, + "dependencies": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.0.tgz", + "integrity": "sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/path-scurry/node_modules/minipass": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-6.0.2.tgz", + "integrity": "sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", @@ -20912,9 +21162,9 @@ } }, "node_modules/pino": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/pino/-/pino-8.8.0.tgz", - "integrity": "sha512-cF8iGYeu2ODg2gIwgAHcPrtR63ILJz3f7gkogaHC/TXVVXxZgInmNYiIpDYEwgEkxZti2Se6P2W2DxlBIZe6eQ==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-8.11.0.tgz", + "integrity": "sha512-Z2eKSvlrl2rH8p5eveNUnTdd4AjJk8tAsLkHYZQKGHP4WTh2Gi1cOSOs3eWPqaj+niS3gj4UkoreoaWgF3ZWYg==", "dev": true, "dependencies": { "atomic-sleep": "^1.0.0", @@ -20968,9 +21218,9 @@ } }, "node_modules/pino-abstract-transport/node_modules/readable-stream": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.3.0.tgz", - "integrity": "sha512-MuEnA0lbSi7JS8XM+WNJlWZkHAAdm7gETHdFK//Q/mChGyj2akEFtdLZh32jSdkWGbRwCW9pn6g3LWDdDeZnBQ==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.4.1.tgz", + "integrity": "sha512-llAHX9QC25bz5RPIoTeJxPaA/hgryaldValRhVZ2fK9bzbmFiscpz8fw6iBTvJfAk1w4FC1KXQme/nO7fbKyKg==", "dev": true, "dependencies": { "abort-controller": "^3.0.0", @@ -20983,9 +21233,9 @@ } }, "node_modules/pino-std-serializers": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.1.0.tgz", - "integrity": "sha512-KO0m2f1HkrPe9S0ldjx7za9BJjeHqBku5Ch8JyxETxT8dEFGz1PwgrHaOQupVYitpzbFSYm7nnljxD8dik2c+g==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.2.2.tgz", + "integrity": "sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==", "dev": true }, "node_modules/pirates": { @@ -21272,9 +21522,9 @@ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, "node_modules/process-warning": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-2.1.0.tgz", - "integrity": "sha512-9C20RLxrZU/rFnxWncDkuF6O999NdIf3E1ws4B0ZeY3sRVPzWBMsYDE2lxjxhiXxg464cQTgKUGm8/i6y2YGXg==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-2.2.0.tgz", + "integrity": "sha512-/1WZ8+VQjR6avWOgHeEPd7SDQmFQ1B5mC1eRXsCm5TarlNmx/wCsa5GEaxGm05BORRtyG/Ex/3xq3TuRvq57qg==", "dev": true }, "node_modules/progress": { @@ -22806,9 +23056,9 @@ } }, "node_modules/safe-stable-stringify": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.2.tgz", - "integrity": "sha512-gMxvPJYhP0O9n2pvcfYfIuYgbledAOJFcqRThtPRmjscaipiwcwPPKLytpVzMkG2HAN87Qmo2d4PtGiri1dSLA==", + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", + "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==", "dev": true, "engines": { "node": ">=10" @@ -23377,13 +23627,13 @@ } }, "node_modules/sign-addon": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/sign-addon/-/sign-addon-5.2.0.tgz", - "integrity": "sha512-t5CZ4MSKAd3uJBUfjgWfSyKYC1pQS6BMUbgI5OytzMkTOQ9NkdkFE8bB0AJLQIGqDrNS2b1+/ghAP56iuCUE+g==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/sign-addon/-/sign-addon-5.3.0.tgz", + "integrity": "sha512-7nHlCzhQgVMLBNiXVEgbG/raq48awOW0lYMN5uo1BaB3mp0+k8M8pvDwbfTlr3apcxZJsk9HQsAW1POwoJugpQ==", "dev": true, "dependencies": { "common-tags": "1.8.2", - "core-js": "3.27.1", + "core-js": "3.29.0", "deepcopy": "2.1.0", "es6-error": "4.1.1", "es6-promisify": "7.0.0", @@ -23411,9 +23661,9 @@ } }, "node_modules/sign-addon/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", + "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -23710,9 +23960,9 @@ } }, "node_modules/sonic-boom": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.2.1.tgz", - "integrity": "sha512-iITeTHxy3B9FGu8aVdiDXUVAcHMF9Ss0cCsAOo2HfCrmVGT3/DT5oYaeu0M/YKZDlKTvChEyPq0zI9Hf33EX6A==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.3.0.tgz", + "integrity": "sha512-LYxp34KlZ1a2Jb8ZQgFCK3niIHzibdwtwNUWKg0qQRzsDoJ3Gfgkf8KdBTFU3SkejDEIlWwnSnpVdOZIhFMl/g==", "dev": true, "dependencies": { "atomic-sleep": "^1.0.0" @@ -23901,9 +24151,9 @@ } }, "node_modules/split2": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz", - "integrity": "sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", "dev": true, "engines": { "node": ">= 10.x" @@ -26024,42 +26274,42 @@ } }, "node_modules/web-ext": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/web-ext/-/web-ext-7.5.0.tgz", - "integrity": "sha512-Ymflj7Aq/LOD+zGoyvwRbAPx/yMJeig2OEb/rRXYrWl6NWRI5E0c2iWGqlBcnL45iKrOzz70H438dVeJk0w2ug==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/web-ext/-/web-ext-7.6.2.tgz", + "integrity": "sha512-xlxbzgFBIS/UWWlvWxyR1PIqRRzDj1cutoHh+VZu4ZTcJTfv35KVdKkLRZv4PQwHu4dg8VfTg7WEcNP4QLaaFQ==", "dev": true, "dependencies": { - "@babel/runtime": "7.20.13", + "@babel/runtime": "7.21.0", "@devicefarmer/adbkit": "3.2.3", - "addons-linter": "5.27.0", + "addons-linter": "5.32.0", "bunyan": "1.8.15", "camelcase": "7.0.1", "chrome-launcher": "0.15.1", "debounce": "1.2.1", "decamelize": "6.0.0", "es6-error": "4.1.1", - "firefox-profile": "4.2.2", + "firefox-profile": "4.3.2", "fs-extra": "11.1.0", "fx-runner": "1.3.0", "import-fresh": "3.3.0", - "jose": "4.11.2", + "jose": "4.13.1", "mkdirp": "1.0.4", "multimatch": "6.0.0", "mz": "2.7.0", - "node-fetch": "3.3.0", + "node-fetch": "3.3.1", "node-notifier": "10.0.1", - "open": "8.4.0", + "open": "8.4.2", "parse-json": "6.0.2", "promise-toolbox": "0.21.0", - "sign-addon": "5.2.0", + "sign-addon": "5.3.0", "source-map-support": "0.5.21", "strip-bom": "5.0.0", "strip-json-comments": "5.0.0", "tmp": "0.2.1", "update-notifier": "6.0.2", "watchpack": "2.4.0", - "ws": "8.12.0", - "yargs": "17.6.2", + "ws": "8.13.0", + "yargs": "17.7.1", "zip-dir": "2.0.0" }, "bin": { @@ -26092,9 +26342,9 @@ } }, "node_modules/web-ext/node_modules/node-fetch": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.0.tgz", - "integrity": "sha512-BKwRP/O0UvoMKp7GNdwPlObhYGB5DQqwhEDQlNKuoqwVYSxkSZCSbHjnFFmUEtwSKRPU4kNK8PbDYYitwaE3QA==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.1.tgz", + "integrity": "sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==", "dev": true, "dependencies": { "data-uri-to-buffer": "^4.0.0", @@ -26152,9 +26402,9 @@ } }, "node_modules/web-ext/node_modules/ws": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.12.0.tgz", - "integrity": "sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", "dev": true, "engines": { "node": ">=10.0.0" @@ -26841,9 +27091,9 @@ } }, "node_modules/xml2js": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", - "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz", + "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", "dev": true, "dependencies": { "sax": ">=0.6.0", @@ -26929,9 +27179,9 @@ } }, "node_modules/yargs": { - "version": "17.6.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", - "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", + "version": "17.7.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz", + "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==", "dev": true, "dependencies": { "cliui": "^8.0.1", @@ -28477,9 +28727,9 @@ } }, "@babel/runtime": { - "version": "7.20.13", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.13.tgz", - "integrity": "sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz", + "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==", "requires": { "regenerator-runtime": "^0.13.11" } @@ -28784,6 +29034,29 @@ "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==", "dev": true }, + "@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^3.3.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", + "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", + "dev": true + } + } + }, + "@eslint-community/regexpp": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", + "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", + "dev": true + }, "@eslint/eslintrc": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", @@ -28818,6 +29091,12 @@ } } }, + "@eslint/js": { + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.36.0.tgz", + "integrity": "sha512-lxJ9R5ygVm8ZWgYdUweoq5ownDlJ4upvoWmO4eLxBYHdMo+vZ/Rx0EN6MbKWDJOSUGrqJy2Gt+Dyv/VKml0fjg==", + "dev": true + }, "@ethersproject/bignumber": { "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", @@ -28856,6 +29135,12 @@ "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" }, + "@fluent/syntax": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/@fluent/syntax/-/syntax-0.19.0.tgz", + "integrity": "sha512-5D2qVpZrgpjtqU4eNOcWGp1gnUCgjfM+vKGE2y03kKN6z5EBhtx0qdRFbg8QuNNj8wXNoX93KJoYb+NqoxswmQ==", + "dev": true + }, "@formatjs/ecma402-abstract": { "version": "1.14.2", "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.14.2.tgz", @@ -29762,9 +30047,9 @@ } }, "@mdn/browser-compat-data": { - "version": "5.2.29", - "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-5.2.29.tgz", - "integrity": "sha512-bEBrkTWbDAs/PB4IdRg4CtU750oBRytXHK/wC2oIDkgKZqnt76nACSooQQuHF11mK5k43f/IgFUMO5t5quRPVA==", + "version": "5.2.42", + "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-5.2.42.tgz", + "integrity": "sha512-CD/2ai1W45cDN/zN2AcYduDavU+nq9aStyQizi4MHxnwkRvS/H24WIjgc1qD8CISoqXa8AAIe+A+zpWxwV7a2Q==", "dev": true }, "@noble/curves": { @@ -31738,34 +32023,34 @@ "dev": true }, "addons-linter": { - "version": "5.27.0", - "resolved": "https://registry.npmjs.org/addons-linter/-/addons-linter-5.27.0.tgz", - "integrity": "sha512-gDgl0FcmhZ5cs3St0qAaO9J1BoektwnY+p4dVgcvPu8WaBqH9MG2fk0gL/evCpoHSXeSw15GA87n8Y7zy7raVQ==", + "version": "5.32.0", + "resolved": "https://registry.npmjs.org/addons-linter/-/addons-linter-5.32.0.tgz", + "integrity": "sha512-Lf6oOyw8X9z5BMd9xhQwSbPlN2PUlzDLnYLAVT5lkrgXEx0fO9hRk4JRxWZ8+rFGz+mCIA2TTClZF2f+MKgJQA==", "dev": true, "requires": { - "@mdn/browser-compat-data": "5.2.29", + "@fluent/syntax": "0.19.0", + "@mdn/browser-compat-data": "5.2.42", "addons-moz-compare": "1.3.0", - "addons-scanner-utils": "8.3.0", + "addons-scanner-utils": "8.5.0", "ajv": "8.12.0", "chalk": "4.1.2", "cheerio": "1.0.0-rc.12", "columnify": "1.6.0", "common-tags": "1.8.2", - "deepmerge": "4.2.2", - "eslint": "8.32.0", + "deepmerge": "4.3.1", + "eslint": "8.36.0", "eslint-plugin-no-unsanitized": "4.0.2", "eslint-visitor-keys": "3.3.0", - "espree": "9.4.1", + "espree": "9.5.0", "esprima": "4.0.1", "fast-json-patch": "3.1.1", - "fluent-syntax": "0.14.0", - "glob": "8.1.0", + "glob": "9.3.0", "image-size": "1.0.2", "is-mergeable-object": "1.1.1", "jed": "1.1.1", "json-merge-patch": "1.0.2", "os-locale": "5.0.0", - "pino": "8.8.0", + "pino": "8.11.0", "postcss": "8.4.21", "relaxed-json": "1.0.3", "semver": "7.3.8", @@ -31773,10 +32058,84 @@ "source-map-support": "0.5.21", "tosource": "1.0.0", "upath": "2.0.1", - "yargs": "17.6.2", + "yargs": "17.7.1", "yauzl": "2.10.0" }, "dependencies": { + "@eslint/eslintrc": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.0.tgz", + "integrity": "sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "eslint-visitor-keys": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", + "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", + "dev": true + }, + "espree": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.0.tgz", + "integrity": "sha512-1FH/IiruXZ84tpUlm0aCUEwMl2Ho5ilqVh0VvQXw+byAz/4SAciyHLlfmL5WYqsvD38oymdUwBss0LtK8m4s/A==", + "dev": true, + "requires": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + } + } + }, + "acorn": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.9.0.tgz", + "integrity": "sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==", + "dev": true + }, + "addons-scanner-utils": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/addons-scanner-utils/-/addons-scanner-utils-8.5.0.tgz", + "integrity": "sha512-X35SYZRdSnxx7UZuAk+DizKihQp2Ze2c5GV+5nnRr/FFyx/fOgE3Zo8jdhzSne57PENE9w1ZVocBLJTN6UDB3g==", + "dev": true, + "requires": { + "@types/yauzl": "2.10.0", + "common-tags": "1.8.2", + "first-chunk-stream": "3.0.0", + "strip-bom-stream": "4.0.0", + "upath": "2.0.1", + "yauzl": "2.10.0" + } + }, "ajv": { "version": "8.12.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", @@ -31798,6 +32157,41 @@ "color-convert": "^2.0.1" } }, + "body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "dev": true, + "optional": true, + "peer": true, + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "optional": true, + "peer": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, "brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -31832,6 +32226,14 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true, + "optional": true, + "peer": true + }, "escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -31839,12 +32241,15 @@ "dev": true }, "eslint": { - "version": "8.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.32.0.tgz", - "integrity": "sha512-nETVXpnthqKPFyuY2FNjz/bEd6nbosRgKbkgS/y1C7LJop96gYHWpiguLecMHQ2XCPxn77DS0P+68WzG6vkZSQ==", + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.36.0.tgz", + "integrity": "sha512-Y956lmS7vDqomxlaaQAHVmeb4tNMp2FWIvU/RnU5BD3IKMD/MJPr76xdyr68P8tV1iNMvN2mRK0yy3c+UjL+bw==", "dev": true, "requires": { - "@eslint/eslintrc": "^1.4.1", + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.4.0", + "@eslint/eslintrc": "^2.0.1", + "@eslint/js": "8.36.0", "@humanwhocodes/config-array": "^0.11.8", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -31855,10 +32260,9 @@ "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", - "esquery": "^1.4.0", + "espree": "^9.5.0", + "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", @@ -31879,7 +32283,6 @@ "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.1", - "regexpp": "^3.2.0", "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" @@ -31922,22 +32325,21 @@ } }, "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.0.tgz", + "integrity": "sha512-EAZejC7JvnQINayvB/7BJbpZpNOJ8Lrw2OZNEvQxe0vaLn1SuwMcfV7/MNaX8L/T0wmptBFI4YMtDvSBxYDc7w==", "dev": true, "requires": { "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "minimatch": "^7.4.1", + "minipass": "^4.2.4", + "path-scurry": "^1.6.1" }, "dependencies": { "minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz", + "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==", "dev": true, "requires": { "brace-expansion": "^2.0.1" @@ -31984,6 +32386,20 @@ "p-locate": "^5.0.0" } }, + "minipass": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", + "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "optional": true, + "peer": true + }, "p-locate": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", @@ -31999,6 +32415,20 @@ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true }, + "raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dev": true, + "optional": true, + "peer": true, + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, "semver": { "version": "7.3.8", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", @@ -32031,20 +32461,6 @@ "integrity": "sha512-/rXpQeaY0nOKhNx00pmZXdk5Mu+KhVlL3/pSBuAYwrxRrNiTvI/9xfQI8Lmm7DMMl+PDhtfAHY/0ibTpdeoQQQ==", "dev": true }, - "addons-scanner-utils": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/addons-scanner-utils/-/addons-scanner-utils-8.3.0.tgz", - "integrity": "sha512-XP+2kxhZxlxiVFXVJ7lyJEuxpUS8ryrolUDqnUEnvOZ/3p8qt9hWCYSliXhI2W+Swf/hZ3F4CLAG6tBnqdxDYA==", - "dev": true, - "requires": { - "@types/yauzl": "2.10.0", - "common-tags": "1.8.2", - "first-chunk-stream": "3.0.0", - "strip-bom-stream": "4.0.0", - "upath": "2.0.1", - "yauzl": "2.10.0" - } - }, "adm-zip": { "version": "0.5.9", "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.9.tgz", @@ -34342,9 +34758,9 @@ } }, "core-js": { - "version": "3.27.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.27.1.tgz", - "integrity": "sha512-GutwJLBChfGCpwwhbYoqfv03LAfmiz7e7D/BNxzeMxwQf10GRSzqiOjx7AmtEk+heiD/JWmBuyBPgFtx0Sg1ww==", + "version": "3.29.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.29.0.tgz", + "integrity": "sha512-VG23vuEisJNkGl6XQmFJd3rEG/so/CNatqeE+7uZAwTSwFeB/qaO0be8xZYUNWprJ/GIwL8aMt9cj1kvbpTZhg==", "dev": true }, "core-js-compat": { @@ -34630,9 +35046,9 @@ } }, "data-uri-to-buffer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz", - "integrity": "sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", "dev": true }, "data-urls": { @@ -34738,9 +35154,9 @@ } }, "deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==" }, "default-gateway": { "version": "6.0.3", @@ -35932,9 +36348,9 @@ "dev": true }, "espree": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", - "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.0.tgz", + "integrity": "sha512-JPbJGhKc47++oo4JkEoTe2wjy4fmMwvFpgJT9cQzmfXKp22Dr6Hf1tdCteLz1h0P3t+mGvWZ+4Uankvh8+c6zw==", "dev": true, "requires": { "acorn": "^8.8.0", @@ -35963,9 +36379,9 @@ "dev": true }, "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, "requires": { "estraverse": "^5.1.0" @@ -36240,9 +36656,9 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" }, "fast-redact": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.1.2.tgz", - "integrity": "sha512-+0em+Iya9fKGfEQGcd62Yv6onjBmmhV1uh86XVfOU8VwAe6kaFdQCWI9s0/Nnugx5Vd9tdbZ7e6gE2tR9dzXdw==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.2.0.tgz", + "integrity": "sha512-zaTadChr+NekyzallAMXATXLOR8MNx3zqpZ0MUF2aGf4EathnG0f32VLODNlY8IuGY3HoRO2L6/6fSzNsLaHIw==", "dev": true }, "fastest-levenshtein": { @@ -36406,16 +36822,16 @@ } }, "firefox-profile": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/firefox-profile/-/firefox-profile-4.2.2.tgz", - "integrity": "sha512-3kI17Xl9dL9AeRkpV1yahsJ+UbekkPtlQswKrIsTY1NLgxtEOR4R19rjGGz5+7/rP8Jt6fvxHk+Bai9R6Eai3w==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/firefox-profile/-/firefox-profile-4.3.2.tgz", + "integrity": "sha512-/C+Eqa0YgIsQT2p66p7Ygzqe7NlE/GNTbhw2SBCm5V3OsWDPITNdTPEcH2Q2fe7eMpYYNPKdUcuVioZBZiR6kA==", "dev": true, "requires": { "adm-zip": "~0.5.x", "fs-extra": "~9.0.1", "ini": "~2.0.0", "minimist": "^1.2.5", - "xml2js": "~0.4.23" + "xml2js": "^0.5.0" }, "dependencies": { "fs-extra": { @@ -36472,12 +36888,6 @@ "integrity": "sha512-zg/PthjBzESYKomTw/wivo8Id6B+obVkWriIzDuRfuw4wxEIV2/0D/NIGf+LKcGTTifHRfw73+oAAQozZ9MAhA==", "dev": true }, - "fluent-syntax": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/fluent-syntax/-/fluent-syntax-0.14.0.tgz", - "integrity": "sha512-+k8uXWfRpSrE33764RbpjIKMzIX6R9EnSjFBgaA1s0Mboc3KnW9sYe0c6vjIoZQY1C4Gst1VFvAOP6YGJjTJuA==", - "dev": true - }, "flush-write-stream": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", @@ -40110,9 +40520,9 @@ } }, "jose": { - "version": "4.11.2", - "resolved": "https://registry.npmjs.org/jose/-/jose-4.11.2.tgz", - "integrity": "sha512-njj0VL2TsIxCtgzhO+9RRobBvws4oYyCM8TpvoUQwl/MbIM3NFJRR9+e6x0sS5xXaP1t6OCBkaBME98OV9zU5A==", + "version": "4.13.1", + "resolved": "https://registry.npmjs.org/jose/-/jose-4.13.1.tgz", + "integrity": "sha512-MSJQC5vXco5Br38mzaQKiq9mwt7lwj2eXpgpRyQYNHYt2lq1PjkWa7DLXX0WVcQLE9HhMh3jPiufS7fhJf+CLQ==", "dev": true }, "js-sdsl": { @@ -42374,9 +42784,9 @@ } }, "open": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", "dev": true, "requires": { "define-lazy-prop": "^2.0.0", @@ -42853,6 +43263,30 @@ "resolved": "https://registry.npmjs.org/path-posix/-/path-posix-1.0.0.tgz", "integrity": "sha1-BrJhE/Vr6rBCVFojv6iAA8ysJg8=" }, + "path-scurry": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.0.tgz", + "integrity": "sha512-tZFEaRQbMLjwrsmidsGJ6wDMv0iazJWk6SfIKnY4Xru8auXgmJkOBa5DUbYFcFD2Rzk2+KDlIiF0GVXNCbgC7g==", + "dev": true, + "requires": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2" + }, + "dependencies": { + "lru-cache": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.0.tgz", + "integrity": "sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw==", + "dev": true + }, + "minipass": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-6.0.2.tgz", + "integrity": "sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w==", + "dev": true + } + } + }, "path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", @@ -42917,9 +43351,9 @@ "optional": true }, "pino": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/pino/-/pino-8.8.0.tgz", - "integrity": "sha512-cF8iGYeu2ODg2gIwgAHcPrtR63ILJz3f7gkogaHC/TXVVXxZgInmNYiIpDYEwgEkxZti2Se6P2W2DxlBIZe6eQ==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-8.11.0.tgz", + "integrity": "sha512-Z2eKSvlrl2rH8p5eveNUnTdd4AjJk8tAsLkHYZQKGHP4WTh2Gi1cOSOs3eWPqaj+niS3gj4UkoreoaWgF3ZWYg==", "dev": true, "requires": { "atomic-sleep": "^1.0.0", @@ -42956,9 +43390,9 @@ } }, "readable-stream": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.3.0.tgz", - "integrity": "sha512-MuEnA0lbSi7JS8XM+WNJlWZkHAAdm7gETHdFK//Q/mChGyj2akEFtdLZh32jSdkWGbRwCW9pn6g3LWDdDeZnBQ==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.4.1.tgz", + "integrity": "sha512-llAHX9QC25bz5RPIoTeJxPaA/hgryaldValRhVZ2fK9bzbmFiscpz8fw6iBTvJfAk1w4FC1KXQme/nO7fbKyKg==", "dev": true, "requires": { "abort-controller": "^3.0.0", @@ -42970,9 +43404,9 @@ } }, "pino-std-serializers": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.1.0.tgz", - "integrity": "sha512-KO0m2f1HkrPe9S0ldjx7za9BJjeHqBku5Ch8JyxETxT8dEFGz1PwgrHaOQupVYitpzbFSYm7nnljxD8dik2c+g==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.2.2.tgz", + "integrity": "sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==", "dev": true }, "pirates": { @@ -43170,9 +43604,9 @@ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, "process-warning": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-2.1.0.tgz", - "integrity": "sha512-9C20RLxrZU/rFnxWncDkuF6O999NdIf3E1ws4B0ZeY3sRVPzWBMsYDE2lxjxhiXxg464cQTgKUGm8/i6y2YGXg==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-2.2.0.tgz", + "integrity": "sha512-/1WZ8+VQjR6avWOgHeEPd7SDQmFQ1B5mC1eRXsCm5TarlNmx/wCsa5GEaxGm05BORRtyG/Ex/3xq3TuRvq57qg==", "dev": true }, "progress": { @@ -44343,9 +44777,9 @@ } }, "safe-stable-stringify": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.2.tgz", - "integrity": "sha512-gMxvPJYhP0O9n2pvcfYfIuYgbledAOJFcqRThtPRmjscaipiwcwPPKLytpVzMkG2HAN87Qmo2d4PtGiri1dSLA==", + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", + "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==", "dev": true }, "safer-buffer": { @@ -44822,13 +45256,13 @@ } }, "sign-addon": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/sign-addon/-/sign-addon-5.2.0.tgz", - "integrity": "sha512-t5CZ4MSKAd3uJBUfjgWfSyKYC1pQS6BMUbgI5OytzMkTOQ9NkdkFE8bB0AJLQIGqDrNS2b1+/ghAP56iuCUE+g==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/sign-addon/-/sign-addon-5.3.0.tgz", + "integrity": "sha512-7nHlCzhQgVMLBNiXVEgbG/raq48awOW0lYMN5uo1BaB3mp0+k8M8pvDwbfTlr3apcxZJsk9HQsAW1POwoJugpQ==", "dev": true, "requires": { "common-tags": "1.8.2", - "core-js": "3.27.1", + "core-js": "3.29.0", "deepcopy": "2.1.0", "es6-error": "4.1.1", "es6-promisify": "7.0.0", @@ -44852,9 +45286,9 @@ } }, "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", + "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -45109,9 +45543,9 @@ } }, "sonic-boom": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.2.1.tgz", - "integrity": "sha512-iITeTHxy3B9FGu8aVdiDXUVAcHMF9Ss0cCsAOo2HfCrmVGT3/DT5oYaeu0M/YKZDlKTvChEyPq0zI9Hf33EX6A==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.3.0.tgz", + "integrity": "sha512-LYxp34KlZ1a2Jb8ZQgFCK3niIHzibdwtwNUWKg0qQRzsDoJ3Gfgkf8KdBTFU3SkejDEIlWwnSnpVdOZIhFMl/g==", "dev": true, "requires": { "atomic-sleep": "^1.0.0" @@ -45268,9 +45702,9 @@ } }, "split2": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz", - "integrity": "sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", "dev": true }, "sprintf-js": { @@ -46866,42 +47300,42 @@ } }, "web-ext": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/web-ext/-/web-ext-7.5.0.tgz", - "integrity": "sha512-Ymflj7Aq/LOD+zGoyvwRbAPx/yMJeig2OEb/rRXYrWl6NWRI5E0c2iWGqlBcnL45iKrOzz70H438dVeJk0w2ug==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/web-ext/-/web-ext-7.6.2.tgz", + "integrity": "sha512-xlxbzgFBIS/UWWlvWxyR1PIqRRzDj1cutoHh+VZu4ZTcJTfv35KVdKkLRZv4PQwHu4dg8VfTg7WEcNP4QLaaFQ==", "dev": true, "requires": { - "@babel/runtime": "7.20.13", + "@babel/runtime": "7.21.0", "@devicefarmer/adbkit": "3.2.3", - "addons-linter": "5.27.0", + "addons-linter": "5.32.0", "bunyan": "1.8.15", "camelcase": "7.0.1", "chrome-launcher": "0.15.1", "debounce": "1.2.1", "decamelize": "6.0.0", "es6-error": "4.1.1", - "firefox-profile": "4.2.2", + "firefox-profile": "4.3.2", "fs-extra": "11.1.0", "fx-runner": "1.3.0", "import-fresh": "3.3.0", - "jose": "4.11.2", + "jose": "4.13.1", "mkdirp": "1.0.4", "multimatch": "6.0.0", "mz": "2.7.0", - "node-fetch": "3.3.0", + "node-fetch": "3.3.1", "node-notifier": "10.0.1", - "open": "8.4.0", + "open": "8.4.2", "parse-json": "6.0.2", "promise-toolbox": "0.21.0", - "sign-addon": "5.2.0", + "sign-addon": "5.3.0", "source-map-support": "0.5.21", "strip-bom": "5.0.0", "strip-json-comments": "5.0.0", "tmp": "0.2.1", "update-notifier": "6.0.2", "watchpack": "2.4.0", - "ws": "8.12.0", - "yargs": "17.6.2", + "ws": "8.13.0", + "yargs": "17.7.1", "zip-dir": "2.0.0" }, "dependencies": { @@ -46918,9 +47352,9 @@ "dev": true }, "node-fetch": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.0.tgz", - "integrity": "sha512-BKwRP/O0UvoMKp7GNdwPlObhYGB5DQqwhEDQlNKuoqwVYSxkSZCSbHjnFFmUEtwSKRPU4kNK8PbDYYitwaE3QA==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.1.tgz", + "integrity": "sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==", "dev": true, "requires": { "data-uri-to-buffer": "^4.0.0", @@ -46953,9 +47387,9 @@ "dev": true }, "ws": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.12.0.tgz", - "integrity": "sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", "dev": true, "requires": {} } @@ -47430,9 +47864,9 @@ "dev": true }, "xml2js": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", - "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz", + "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", "dev": true, "requires": { "sax": ">=0.6.0", @@ -47499,9 +47933,9 @@ "dev": true }, "yargs": { - "version": "17.6.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", - "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", + "version": "17.7.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz", + "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==", "dev": true, "requires": { "cliui": "^8.0.1", diff --git a/package.json b/package.json index faaa3b924..f5cd21d52 100644 --- a/package.json +++ b/package.json @@ -165,7 +165,7 @@ "tsconfig-paths-webpack-plugin": "^4.0.0", "typescript": "4.9.3", "url-loader": "^4.1.1", - "web-ext": "7.5.0", + "web-ext": "7.6.2", "webextension-polyfill": "0.10.0", "webpack": "5.76.0", "webpack-cli": "5.0.0", From ca3bb039c47d882fa85ffbbdffe6287803f612d9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Sep 2023 14:28:36 +0300 Subject: [PATCH 018/243] build(deps-dev): bump eslint-plugin-jsx-a11y from 6.6.1 to 6.7.1 (#703) Bumps [eslint-plugin-jsx-a11y](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y) from 6.6.1 to 6.7.1. - [Release notes](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/releases) - [Changelog](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/CHANGELOG.md) - [Commits](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/compare/v6.6.1...v6.7.1) --- updated-dependencies: - dependency-name: eslint-plugin-jsx-a11y dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Vynnyk Dmytro --- package-lock.json | 166 +++++++++++++++++++++------------------------- package.json | 2 +- 2 files changed, 75 insertions(+), 93 deletions(-) diff --git a/package-lock.json b/package-lock.json index a2237a239..3d65821b2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -89,7 +89,7 @@ "eslint-config-react-app": "^7.0.0", "eslint-plugin-flowtype": "^8.0.3", "eslint-plugin-import": "^2.25.2", - "eslint-plugin-jsx-a11y": "^6.6.1", + "eslint-plugin-jsx-a11y": "^6.7.1", "eslint-plugin-prettier": "4.2.1", "eslint-plugin-react": "7.31.11", "eslint-plugin-react-hooks": "4.6.0", @@ -2159,19 +2159,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/runtime-corejs3": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.17.9.tgz", - "integrity": "sha512-WxYHHUWF2uZ7Hp1K+D1xQgbgkGUfA+5UPOegEXGt2Y5SMog/rYCVaifLZDbw8UkNXozEqqrZTy6bglL7xTaCOw==", - "dev": true, - "dependencies": { - "core-js-pure": "^3.20.2", - "regenerator-runtime": "^0.13.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/template": { "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", @@ -7339,12 +7326,12 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, "node_modules/aria-query": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.0.0.tgz", - "integrity": "sha512-V+SM7AbUwJ+EBnB8+DXs0hPZHO0W6pqBcc0dW90OwtVG02PswOu/teuARoLQjdDOH+t9pJgGnW5/Qmouf3gPJg==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", "dev": true, - "engines": { - "node": ">=6.0" + "dependencies": { + "dequal": "^2.0.3" } }, "node_modules/array-differ": { @@ -7559,9 +7546,9 @@ "dev": true }, "node_modules/axe-core": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.4.3.tgz", - "integrity": "sha512-32+ub6kkdhhWick/UjvEwRchgoetXqTK14INLqbGm5U2TzBkBNF3nQtLYm8ovxSkQWArjEQvftCKryjZaATu3w==", + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.2.tgz", + "integrity": "sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g==", "dev": true, "engines": { "node": ">=4" @@ -7579,10 +7566,13 @@ } }, "node_modules/axobject-query": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", - "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", - "dev": true + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", + "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", + "dev": true, + "dependencies": { + "dequal": "^2.0.3" + } }, "node_modules/babel-eslint": { "version": "10.1.0", @@ -10495,6 +10485,15 @@ "node": ">= 0.8" } }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/destroy": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", @@ -11565,23 +11564,26 @@ } }, "node_modules/eslint-plugin-jsx-a11y": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz", - "integrity": "sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q==", + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz", + "integrity": "sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==", "dev": true, "dependencies": { - "@babel/runtime": "^7.18.9", - "aria-query": "^4.2.2", - "array-includes": "^3.1.5", + "@babel/runtime": "^7.20.7", + "aria-query": "^5.1.3", + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", "ast-types-flow": "^0.0.7", - "axe-core": "^4.4.3", - "axobject-query": "^2.2.0", + "axe-core": "^4.6.2", + "axobject-query": "^3.1.1", "damerau-levenshtein": "^1.0.8", "emoji-regex": "^9.2.2", "has": "^1.0.3", - "jsx-ast-utils": "^3.3.2", - "language-tags": "^1.0.5", + "jsx-ast-utils": "^3.3.3", + "language-tags": "=1.0.5", "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", "semver": "^6.3.0" }, "engines": { @@ -11591,19 +11593,6 @@ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" } }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/aria-query": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", - "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.10.2", - "@babel/runtime-corejs3": "^7.10.2" - }, - "engines": { - "node": ">=6.0" - } - }, "node_modules/eslint-plugin-no-unsanitized": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/eslint-plugin-no-unsanitized/-/eslint-plugin-no-unsanitized-4.0.2.tgz", @@ -28734,16 +28723,6 @@ "regenerator-runtime": "^0.13.11" } }, - "@babel/runtime-corejs3": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.17.9.tgz", - "integrity": "sha512-WxYHHUWF2uZ7Hp1K+D1xQgbgkGUfA+5UPOegEXGt2Y5SMog/rYCVaifLZDbw8UkNXozEqqrZTy6bglL7xTaCOw==", - "dev": true, - "requires": { - "core-js-pure": "^3.20.2", - "regenerator-runtime": "^0.13.4" - } - }, "@babel/template": { "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", @@ -32819,10 +32798,13 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, "aria-query": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.0.0.tgz", - "integrity": "sha512-V+SM7AbUwJ+EBnB8+DXs0hPZHO0W6pqBcc0dW90OwtVG02PswOu/teuARoLQjdDOH+t9pJgGnW5/Qmouf3gPJg==", - "dev": true + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "dev": true, + "requires": { + "dequal": "^2.0.3" + } }, "array-differ": { "version": "4.0.0", @@ -32991,9 +32973,9 @@ "dev": true }, "axe-core": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.4.3.tgz", - "integrity": "sha512-32+ub6kkdhhWick/UjvEwRchgoetXqTK14INLqbGm5U2TzBkBNF3nQtLYm8ovxSkQWArjEQvftCKryjZaATu3w==", + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.2.tgz", + "integrity": "sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g==", "dev": true }, "axios": { @@ -33008,10 +32990,13 @@ } }, "axobject-query": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", - "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", - "dev": true + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", + "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", + "dev": true, + "requires": { + "dequal": "^2.0.3" + } }, "babel-eslint": { "version": "10.1.0", @@ -35223,6 +35208,12 @@ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true }, + "dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true + }, "destroy": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", @@ -36200,36 +36191,27 @@ } }, "eslint-plugin-jsx-a11y": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz", - "integrity": "sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q==", + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz", + "integrity": "sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==", "dev": true, "requires": { - "@babel/runtime": "^7.18.9", - "aria-query": "^4.2.2", - "array-includes": "^3.1.5", + "@babel/runtime": "^7.20.7", + "aria-query": "^5.1.3", + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", "ast-types-flow": "^0.0.7", - "axe-core": "^4.4.3", - "axobject-query": "^2.2.0", + "axe-core": "^4.6.2", + "axobject-query": "^3.1.1", "damerau-levenshtein": "^1.0.8", "emoji-regex": "^9.2.2", "has": "^1.0.3", - "jsx-ast-utils": "^3.3.2", - "language-tags": "^1.0.5", + "jsx-ast-utils": "^3.3.3", + "language-tags": "=1.0.5", "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", "semver": "^6.3.0" - }, - "dependencies": { - "aria-query": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", - "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.10.2", - "@babel/runtime-corejs3": "^7.10.2" - } - } } }, "eslint-plugin-no-unsanitized": { diff --git a/package.json b/package.json index f5cd21d52..9a9e9c996 100644 --- a/package.json +++ b/package.json @@ -137,7 +137,7 @@ "eslint-config-react-app": "^7.0.0", "eslint-plugin-flowtype": "^8.0.3", "eslint-plugin-import": "^2.25.2", - "eslint-plugin-jsx-a11y": "^6.6.1", + "eslint-plugin-jsx-a11y": "^6.7.1", "eslint-plugin-prettier": "4.2.1", "eslint-plugin-react": "7.31.11", "eslint-plugin-react-hooks": "4.6.0", From d65233a523d42f88e90f5c998f108afac3d273d4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Sep 2023 14:29:00 +0300 Subject: [PATCH 019/243] build(deps-dev): bump fs-extra from 11.1.0 to 11.1.1 (#705) Bumps [fs-extra](https://github.com/jprichardson/node-fs-extra) from 11.1.0 to 11.1.1. - [Changelog](https://github.com/jprichardson/node-fs-extra/blob/master/CHANGELOG.md) - [Commits](https://github.com/jprichardson/node-fs-extra/compare/11.1.0...11.1.1) --- updated-dependencies: - dependency-name: fs-extra dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 39 ++++++++++++++++++++++++++++++++------- package.json | 2 +- 2 files changed, 33 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3d65821b2..3bd7e3d7b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -94,7 +94,7 @@ "eslint-plugin-react": "7.31.11", "eslint-plugin-react-hooks": "4.6.0", "file-loader": "^6.2.0", - "fs-extra": "11.1.0", + "fs-extra": "11.1.1", "geckodriver": "3.2.0", "html-loader": "4.2.0", "html-webpack-plugin": "^5.5.0", @@ -12784,9 +12784,9 @@ } }, "node_modules/fs-extra": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.0.tgz", - "integrity": "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==", + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", "dev": true, "dependencies": { "graceful-fs": "^4.2.0", @@ -26321,6 +26321,20 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/web-ext/node_modules/fs-extra": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.0.tgz", + "integrity": "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, "node_modules/web-ext/node_modules/lines-and-columns": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.3.tgz", @@ -36964,9 +36978,9 @@ "dev": true }, "fs-extra": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.0.tgz", - "integrity": "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==", + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", "dev": true, "requires": { "graceful-fs": "^4.2.0", @@ -47327,6 +47341,17 @@ "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==", "dev": true }, + "fs-extra": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.0.tgz", + "integrity": "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, "lines-and-columns": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.3.tgz", diff --git a/package.json b/package.json index 9a9e9c996..36cff176c 100644 --- a/package.json +++ b/package.json @@ -142,7 +142,7 @@ "eslint-plugin-react": "7.31.11", "eslint-plugin-react-hooks": "4.6.0", "file-loader": "^6.2.0", - "fs-extra": "11.1.0", + "fs-extra": "11.1.1", "geckodriver": "3.2.0", "html-loader": "4.2.0", "html-webpack-plugin": "^5.5.0", From 2c017ad553679aea5100da509bd30ad2e4c28886 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Sep 2023 14:29:42 +0300 Subject: [PATCH 020/243] build(deps-dev): bump i18next-conv from 13.1.0 to 14.0.0 (#706) Bumps [i18next-conv](https://github.com/i18next/i18next-gettext-converter) from 13.1.0 to 14.0.0. - [Release notes](https://github.com/i18next/i18next-gettext-converter/releases) - [Changelog](https://github.com/i18next/i18next-gettext-converter/blob/master/CHANGELOG.md) - [Commits](https://github.com/i18next/i18next-gettext-converter/compare/v13.1.0...v14.0.0) --- updated-dependencies: - dependency-name: i18next-conv dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Vynnyk Dmytro --- package-lock.json | 139 ++++++++++++++++++++++++++-------------------- package.json | 2 +- 2 files changed, 79 insertions(+), 62 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3bd7e3d7b..3ea2162ae 100644 --- a/package-lock.json +++ b/package-lock.json @@ -99,7 +99,7 @@ "html-loader": "4.2.0", "html-webpack-plugin": "^5.5.0", "husky": "8.0.2", - "i18next-conv": "13.1.0", + "i18next-conv": "14.0.0", "jest": "29.3.1", "jest-environment-jsdom": "29.3.1", "lint-staged": "13.0.4", @@ -8419,9 +8419,9 @@ } }, "node_modules/c8": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/c8/-/c8-7.12.0.tgz", - "integrity": "sha512-CtgQrHOkyxr5koX1wEUmN/5cfDa2ckbHRA4Gy5LAL0zaCFtVWJS5++n+w4/sr2GWGerBxgTjpKeDclk/Qk6W/A==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/c8/-/c8-7.14.0.tgz", + "integrity": "sha512-i04rtkkcNcCf7zsQcSv/T9EbUn4RXQ6mropeMcjFOsQXQ0iGLAr/xT6TImQg4+U9hmNpN9XdvPkjUL1IzbgxJw==", "dev": true, "dependencies": { "@bcoe/v8-coverage": "^0.2.3", @@ -13400,14 +13400,14 @@ } }, "node_modules/gettext-parser": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/gettext-parser/-/gettext-parser-6.0.0.tgz", - "integrity": "sha512-eWFsR78gc/eKnzDgc919Us3cbxQbzxK1L8vAIZrKMQqOUgULyeqmczNlBjTlVTk2FaB7nV9C1oobd/PGBOqNmg==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/gettext-parser/-/gettext-parser-7.0.1.tgz", + "integrity": "sha512-LU+ieGH3L9HmKEArTlX816/iiAlyA0fx/n/QSeQpkAaH/+jxMk/5UtDkAzcVvW+KlY25/U+IE6dnfkJ8ynt8pQ==", "dev": true, "dependencies": { - "content-type": "^1.0.4", + "content-type": "^1.0.5", "encoding": "^0.1.13", - "readable-stream": "^4.1.0", + "readable-stream": "^4.3.0", "safe-buffer": "^5.2.1" } }, @@ -13435,16 +13435,26 @@ "ieee754": "^1.2.1" } }, + "node_modules/gettext-parser/node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/gettext-parser/node_modules/readable-stream": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.2.0.tgz", - "integrity": "sha512-gJrBHsaI3lgBoGMW/jHZsQ/o/TIWiu5ENCJG1BB7fuCKzpFM8GaS2UoBVt9NO+oI+3FcrBNbUkl3ilDe09aY4A==", + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.4.2.tgz", + "integrity": "sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA==", "dev": true, "dependencies": { "abort-controller": "^3.0.0", "buffer": "^6.0.3", "events": "^3.3.0", - "process": "^0.11.10" + "process": "^0.11.10", + "string_decoder": "^1.3.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -14439,39 +14449,39 @@ } }, "node_modules/i18next-conv": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/i18next-conv/-/i18next-conv-13.1.0.tgz", - "integrity": "sha512-GC8qbasFjKC10r2ZL5Sx9i0C83YotvC+go/84U34bMXf4YTyaReCNtTLNysXg6JNCHF0zQJf9LC6XAXsmDdozw==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/i18next-conv/-/i18next-conv-14.0.0.tgz", + "integrity": "sha512-D93W1aAGV63v1PwDvvktNfyWziQxcdBOgK14WpTXsXgIWNbpzwgMDhKBM9c7hc6JEoV01mrUKwxSiXYZxuPD5g==", "dev": true, "dependencies": { - "c8": "^7.12.0", - "colorette": "^2.0.19", - "commander": "^9.4.0", + "c8": "^7.14.0", + "colorette": "^2.0.20", + "commander": "^10.0.1", "gettext-converter": "^1.2.3", - "gettext-parser": "^6.0.0", + "gettext-parser": "^7.0.0", "node-gettext": "^3.0.0", - "p-from-callback": "^1.0.0" + "p-from-callback": "^1.0.1" }, "bin": { "i18next-conv": "bin/index.js" }, "engines": { - "node": ">= 14.0" + "node": ">= 16.0" } }, "node_modules/i18next-conv/node_modules/colorette": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", - "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", "dev": true }, "node_modules/i18next-conv/node_modules/commander": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz", - "integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", "dev": true, "engines": { - "node": "^12.20.0 || >=14" + "node": ">=14" } }, "node_modules/i18next-http-backend": { @@ -20524,9 +20534,9 @@ } }, "node_modules/p-from-callback": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-from-callback/-/p-from-callback-1.0.0.tgz", - "integrity": "sha512-loR7OeICbyTMmrjp54F/OBbmqsWKYlAZpGxh9h9n+ntPS+vjTM/JM20N5hjCOhgeHbFJ3f3XhFbtdrE3l+un2g==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/p-from-callback/-/p-from-callback-1.0.1.tgz", + "integrity": "sha512-5N3Xj5tWR7giRLxF1qz1+bOAHNZFuiszG4H0f0dhbGCWxX72OQuJSuwnMv+ZT0qWcUKdkh7X0tu8Z2FALiM8pw==", "dev": true, "engines": { "node": ">=14.0" @@ -33644,9 +33654,9 @@ "dev": true }, "c8": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/c8/-/c8-7.12.0.tgz", - "integrity": "sha512-CtgQrHOkyxr5koX1wEUmN/5cfDa2ckbHRA4Gy5LAL0zaCFtVWJS5++n+w4/sr2GWGerBxgTjpKeDclk/Qk6W/A==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/c8/-/c8-7.14.0.tgz", + "integrity": "sha512-i04rtkkcNcCf7zsQcSv/T9EbUn4RXQ6mropeMcjFOsQXQ0iGLAr/xT6TImQg4+U9hmNpN9XdvPkjUL1IzbgxJw==", "dev": true, "requires": { "@bcoe/v8-coverage": "^0.2.3", @@ -37458,14 +37468,14 @@ } }, "gettext-parser": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/gettext-parser/-/gettext-parser-6.0.0.tgz", - "integrity": "sha512-eWFsR78gc/eKnzDgc919Us3cbxQbzxK1L8vAIZrKMQqOUgULyeqmczNlBjTlVTk2FaB7nV9C1oobd/PGBOqNmg==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/gettext-parser/-/gettext-parser-7.0.1.tgz", + "integrity": "sha512-LU+ieGH3L9HmKEArTlX816/iiAlyA0fx/n/QSeQpkAaH/+jxMk/5UtDkAzcVvW+KlY25/U+IE6dnfkJ8ynt8pQ==", "dev": true, "requires": { - "content-type": "^1.0.4", + "content-type": "^1.0.5", "encoding": "^0.1.13", - "readable-stream": "^4.1.0", + "readable-stream": "^4.3.0", "safe-buffer": "^5.2.1" }, "dependencies": { @@ -37479,16 +37489,23 @@ "ieee754": "^1.2.1" } }, + "content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true + }, "readable-stream": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.2.0.tgz", - "integrity": "sha512-gJrBHsaI3lgBoGMW/jHZsQ/o/TIWiu5ENCJG1BB7fuCKzpFM8GaS2UoBVt9NO+oI+3FcrBNbUkl3ilDe09aY4A==", + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.4.2.tgz", + "integrity": "sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA==", "dev": true, "requires": { "abort-controller": "^3.0.0", "buffer": "^6.0.3", "events": "^3.3.0", - "process": "^0.11.10" + "process": "^0.11.10", + "string_decoder": "^1.3.0" } }, "safe-buffer": { @@ -38265,30 +38282,30 @@ } }, "i18next-conv": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/i18next-conv/-/i18next-conv-13.1.0.tgz", - "integrity": "sha512-GC8qbasFjKC10r2ZL5Sx9i0C83YotvC+go/84U34bMXf4YTyaReCNtTLNysXg6JNCHF0zQJf9LC6XAXsmDdozw==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/i18next-conv/-/i18next-conv-14.0.0.tgz", + "integrity": "sha512-D93W1aAGV63v1PwDvvktNfyWziQxcdBOgK14WpTXsXgIWNbpzwgMDhKBM9c7hc6JEoV01mrUKwxSiXYZxuPD5g==", "dev": true, "requires": { - "c8": "^7.12.0", - "colorette": "^2.0.19", - "commander": "^9.4.0", + "c8": "^7.14.0", + "colorette": "^2.0.20", + "commander": "^10.0.1", "gettext-converter": "^1.2.3", - "gettext-parser": "^6.0.0", + "gettext-parser": "^7.0.0", "node-gettext": "^3.0.0", - "p-from-callback": "^1.0.0" + "p-from-callback": "^1.0.1" }, "dependencies": { "colorette": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", - "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", "dev": true }, "commander": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz", - "integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", "dev": true } } @@ -42897,9 +42914,9 @@ "dev": true }, "p-from-callback": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-from-callback/-/p-from-callback-1.0.0.tgz", - "integrity": "sha512-loR7OeICbyTMmrjp54F/OBbmqsWKYlAZpGxh9h9n+ntPS+vjTM/JM20N5hjCOhgeHbFJ3f3XhFbtdrE3l+un2g==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/p-from-callback/-/p-from-callback-1.0.1.tgz", + "integrity": "sha512-5N3Xj5tWR7giRLxF1qz1+bOAHNZFuiszG4H0f0dhbGCWxX72OQuJSuwnMv+ZT0qWcUKdkh7X0tu8Z2FALiM8pw==", "dev": true }, "p-is-promise": { diff --git a/package.json b/package.json index 36cff176c..3ea738713 100644 --- a/package.json +++ b/package.json @@ -147,7 +147,7 @@ "html-loader": "4.2.0", "html-webpack-plugin": "^5.5.0", "husky": "8.0.2", - "i18next-conv": "13.1.0", + "i18next-conv": "14.0.0", "jest": "29.3.1", "jest-environment-jsdom": "29.3.1", "lint-staged": "13.0.4", From afb987d492b01ce1a6352563efaef3ef0ba0b09d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Sep 2023 14:30:08 +0300 Subject: [PATCH 021/243] build(deps): bump word-wrap from 1.2.3 to 1.2.4 (#731) Bumps [word-wrap](https://github.com/jonschlinkert/word-wrap) from 1.2.3 to 1.2.4. - [Release notes](https://github.com/jonschlinkert/word-wrap/releases) - [Commits](https://github.com/jonschlinkert/word-wrap/compare/1.2.3...1.2.4) --- updated-dependencies: - dependency-name: word-wrap dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3ea2162ae..277487b24 100644 --- a/package-lock.json +++ b/package-lock.json @@ -26949,9 +26949,9 @@ "dev": true }, "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz", + "integrity": "sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==", "dev": true, "engines": { "node": ">=0.10.0" @@ -47778,9 +47778,9 @@ "dev": true }, "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz", + "integrity": "sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==", "dev": true }, "wrap-ansi": { From ac935a94987c32c88b4d0a897b709ac902f7067f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Sep 2023 14:30:51 +0300 Subject: [PATCH 022/243] build(deps-dev): bump apollo-server-core from 3.11.1 to 3.12.1 (#765) Bumps [apollo-server-core](https://github.com/apollographql/apollo-server/tree/HEAD/packages/apollo-server-core) from 3.11.1 to 3.12.1. - [Release notes](https://github.com/apollographql/apollo-server/releases) - [Commits](https://github.com/apollographql/apollo-server/commits/apollo-server-core@3.12.1/packages/apollo-server-core) --- updated-dependencies: - dependency-name: apollo-server-core dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 75 +++++++++++++++++++++++------------------------ 1 file changed, 37 insertions(+), 38 deletions(-) diff --git a/package-lock.json b/package-lock.json index 277487b24..51783f454 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7111,10 +7111,10 @@ } }, "node_modules/apollo-reporting-protobuf": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/apollo-reporting-protobuf/-/apollo-reporting-protobuf-3.3.3.tgz", - "integrity": "sha512-L3+DdClhLMaRZWVmMbBcwl4Ic77CnEBPXLW53F7hkYhkaZD88ivbCVB1w/x5gunO6ZHrdzhjq0FHmTsBvPo7aQ==", - "deprecated": "The `apollo-reporting-protobuf` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023). This package's functionality is now found in the `@apollo/usage-reporting-protobuf` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/apollo-reporting-protobuf/-/apollo-reporting-protobuf-3.4.0.tgz", + "integrity": "sha512-h0u3EbC/9RpihWOmcSsvTW2O6RXVaD/mPEjfrPkxRPTEPWqncsgOoRJw+wih4OqfH3PvTJvoEIf4LwKrUaqWog==", + "deprecated": "The `apollo-reporting-protobuf` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023 and October 22nd 2024, respectively). This package's functionality is now found in the `@apollo/usage-reporting-protobuf` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.", "dev": true, "dependencies": { "@apollo/protobufjs": "1.2.6" @@ -7153,10 +7153,9 @@ "dev": true }, "node_modules/apollo-server-core": { - "version": "3.11.1", - "resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-3.11.1.tgz", - "integrity": "sha512-t/eCKrRFK1lYZlc5pHD99iG7Np7CEm3SmbDiONA7fckR3EaB/pdsEdIkIwQ5QBBpT5JLp/nwvrZRVwhaWmaRvw==", - "deprecated": "The `apollo-server-core` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023). This package's functionality is now found in the `@apollo/server` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.", + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-3.12.1.tgz", + "integrity": "sha512-9SF5WAkkV0FZQ2HVUWI9Jada1U0jg7e8NCN9EklbtvaCeUlOLyXyM+KCWuZ7+dqHxjshbtcwylPHutt3uzoNkw==", "dev": true, "dependencies": { "@apollo/utils.keyvaluecache": "^1.0.1", @@ -7168,11 +7167,11 @@ "@graphql-tools/schema": "^8.0.0", "@josephg/resolvable": "^1.0.0", "apollo-datasource": "^3.3.2", - "apollo-reporting-protobuf": "^3.3.3", + "apollo-reporting-protobuf": "^3.4.0", "apollo-server-env": "^4.2.1", "apollo-server-errors": "^3.3.1", - "apollo-server-plugin-base": "^3.7.1", - "apollo-server-types": "^3.7.1", + "apollo-server-plugin-base": "^3.7.2", + "apollo-server-types": "^3.8.0", "async-retry": "^1.2.1", "fast-json-stable-stringify": "^2.1.0", "graphql-tag": "^2.11.0", @@ -7250,13 +7249,13 @@ } }, "node_modules/apollo-server-plugin-base": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-3.7.1.tgz", - "integrity": "sha512-g3vJStmQtQvjGI289UkLMfThmOEOddpVgHLHT2bNj0sCD/bbisj4xKbBHETqaURokteqSWyyd4RDTUe0wAUDNQ==", - "deprecated": "The `apollo-server-plugin-base` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023). This package's functionality is now found in the `@apollo/server` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-3.7.2.tgz", + "integrity": "sha512-wE8dwGDvBOGehSsPTRZ8P/33Jan6/PmL0y0aN/1Z5a5GcbFhDaaJCjK5cav6npbbGL2DPKK0r6MPXi3k3N45aw==", + "deprecated": "The `apollo-server-plugin-base` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023 and October 22nd 2024, respectively). This package's functionality is now found in the `@apollo/server` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.", "dev": true, "dependencies": { - "apollo-server-types": "^3.7.1" + "apollo-server-types": "^3.8.0" }, "engines": { "node": ">=12.0" @@ -7266,15 +7265,15 @@ } }, "node_modules/apollo-server-types": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-3.7.1.tgz", - "integrity": "sha512-aE9RDVplmkaOj/OduNmGa+0a1B5RIWI0o3zC1zLvBTVWMKTpo0ifVf11TyMkLCY+T7cnZqVqwyShziOyC3FyUw==", - "deprecated": "The `apollo-server-types` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023). This package's functionality is now found in the `@apollo/server` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-3.8.0.tgz", + "integrity": "sha512-ZI/8rTE4ww8BHktsVpb91Sdq7Cb71rdSkXELSwdSR0eXu600/sY+1UXhTWdiJvk+Eq5ljqoHLwLbY2+Clq2b9A==", + "deprecated": "The `apollo-server-types` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023 and October 22nd 2024, respectively). This package's functionality is now found in the `@apollo/server` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.", "dev": true, "dependencies": { "@apollo/utils.keyvaluecache": "^1.0.1", "@apollo/utils.logger": "^1.0.0", - "apollo-reporting-protobuf": "^3.3.3", + "apollo-reporting-protobuf": "^3.4.0", "apollo-server-env": "^4.2.1" }, "engines": { @@ -32654,9 +32653,9 @@ } }, "apollo-reporting-protobuf": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/apollo-reporting-protobuf/-/apollo-reporting-protobuf-3.3.3.tgz", - "integrity": "sha512-L3+DdClhLMaRZWVmMbBcwl4Ic77CnEBPXLW53F7hkYhkaZD88ivbCVB1w/x5gunO6ZHrdzhjq0FHmTsBvPo7aQ==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/apollo-reporting-protobuf/-/apollo-reporting-protobuf-3.4.0.tgz", + "integrity": "sha512-h0u3EbC/9RpihWOmcSsvTW2O6RXVaD/mPEjfrPkxRPTEPWqncsgOoRJw+wih4OqfH3PvTJvoEIf4LwKrUaqWog==", "dev": true, "requires": { "@apollo/protobufjs": "1.2.6" @@ -32692,9 +32691,9 @@ } }, "apollo-server-core": { - "version": "3.11.1", - "resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-3.11.1.tgz", - "integrity": "sha512-t/eCKrRFK1lYZlc5pHD99iG7Np7CEm3SmbDiONA7fckR3EaB/pdsEdIkIwQ5QBBpT5JLp/nwvrZRVwhaWmaRvw==", + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-3.12.1.tgz", + "integrity": "sha512-9SF5WAkkV0FZQ2HVUWI9Jada1U0jg7e8NCN9EklbtvaCeUlOLyXyM+KCWuZ7+dqHxjshbtcwylPHutt3uzoNkw==", "dev": true, "requires": { "@apollo/utils.keyvaluecache": "^1.0.1", @@ -32706,11 +32705,11 @@ "@graphql-tools/schema": "^8.0.0", "@josephg/resolvable": "^1.0.0", "apollo-datasource": "^3.3.2", - "apollo-reporting-protobuf": "^3.3.3", + "apollo-reporting-protobuf": "^3.4.0", "apollo-server-env": "^4.2.1", "apollo-server-errors": "^3.3.1", - "apollo-server-plugin-base": "^3.7.1", - "apollo-server-types": "^3.7.1", + "apollo-server-plugin-base": "^3.7.2", + "apollo-server-types": "^3.8.0", "async-retry": "^1.2.1", "fast-json-stable-stringify": "^2.1.0", "graphql-tag": "^2.11.0", @@ -32766,23 +32765,23 @@ } }, "apollo-server-plugin-base": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-3.7.1.tgz", - "integrity": "sha512-g3vJStmQtQvjGI289UkLMfThmOEOddpVgHLHT2bNj0sCD/bbisj4xKbBHETqaURokteqSWyyd4RDTUe0wAUDNQ==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-3.7.2.tgz", + "integrity": "sha512-wE8dwGDvBOGehSsPTRZ8P/33Jan6/PmL0y0aN/1Z5a5GcbFhDaaJCjK5cav6npbbGL2DPKK0r6MPXi3k3N45aw==", "dev": true, "requires": { - "apollo-server-types": "^3.7.1" + "apollo-server-types": "^3.8.0" } }, "apollo-server-types": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-3.7.1.tgz", - "integrity": "sha512-aE9RDVplmkaOj/OduNmGa+0a1B5RIWI0o3zC1zLvBTVWMKTpo0ifVf11TyMkLCY+T7cnZqVqwyShziOyC3FyUw==", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-3.8.0.tgz", + "integrity": "sha512-ZI/8rTE4ww8BHktsVpb91Sdq7Cb71rdSkXELSwdSR0eXu600/sY+1UXhTWdiJvk+Eq5ljqoHLwLbY2+Clq2b9A==", "dev": true, "requires": { "@apollo/utils.keyvaluecache": "^1.0.1", "@apollo/utils.logger": "^1.0.0", - "apollo-reporting-protobuf": "^3.3.3", + "apollo-reporting-protobuf": "^3.4.0", "apollo-server-env": "^4.2.1" } }, From fbdc4db470531d6a84bbba1f26102bd7473b524f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Sep 2023 14:32:39 +0300 Subject: [PATCH 023/243] build(deps): bump i18next from 21.10.0 to 23.5.1 (#773) Bumps [i18next](https://github.com/i18next/i18next) from 21.10.0 to 23.5.1. - [Release notes](https://github.com/i18next/i18next/releases) - [Changelog](https://github.com/i18next/i18next/blob/master/CHANGELOG.md) - [Commits](https://github.com/i18next/i18next/compare/v21.10.0...v23.5.1) --- updated-dependencies: - dependency-name: i18next dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Vynnyk Dmytro --- package-lock.json | 79 +++++++++++++++++++++++++++++++++++++++++------ package.json | 2 +- 2 files changed, 71 insertions(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index 51783f454..afb54abb3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,7 +24,7 @@ "crx3": "^1.1.3", "date-fns": "^2.30.0", "facepaint": "^1.2.1", - "i18next": "^21.9.1", + "i18next": "^23.5.1", "i18next-browser-languagedetector": "^6.1.5", "i18next-http-backend": "^1.4.0", "i18next-parser": "^6.3.0", @@ -14418,9 +14418,9 @@ "dev": true }, "node_modules/i18next": { - "version": "21.10.0", - "resolved": "https://registry.npmjs.org/i18next/-/i18next-21.10.0.tgz", - "integrity": "sha512-YeuIBmFsGjUfO3qBmMOc0rQaun4mIpGKET5WDwvu8lU7gvwpcariZLNtL0Fzj+zazcHUrlXHiptcFhBMFaxzfg==", + "version": "23.5.1", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.5.1.tgz", + "integrity": "sha512-JelYzcaCoFDaa+Ysbfz2JsGAKkrHiMG6S61+HLBUEIPaF40WMwW9hCPymlQGrP+wWawKxKPuSuD71WZscCsWHg==", "funding": [ { "type": "individual", @@ -14436,7 +14436,7 @@ } ], "dependencies": { - "@babel/runtime": "^7.17.2" + "@babel/runtime": "^7.22.5" } }, "node_modules/i18next-browser-languagedetector": { @@ -14553,6 +14553,28 @@ "node": ">=12" } }, + "node_modules/i18next-parser/node_modules/i18next": { + "version": "21.10.0", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-21.10.0.tgz", + "integrity": "sha512-YeuIBmFsGjUfO3qBmMOc0rQaun4mIpGKET5WDwvu8lU7gvwpcariZLNtL0Fzj+zazcHUrlXHiptcFhBMFaxzfg==", + "funding": [ + { + "type": "individual", + "url": "https://locize.com" + }, + { + "type": "individual", + "url": "https://locize.com/i18next.html" + }, + { + "type": "individual", + "url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project" + } + ], + "dependencies": { + "@babel/runtime": "^7.17.2" + } + }, "node_modules/i18next-parser/node_modules/replace-ext": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-2.0.0.tgz", @@ -14576,6 +14598,22 @@ "node": ">=10.13.0" } }, + "node_modules/i18next/node_modules/@babel/runtime": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.15.tgz", + "integrity": "sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/i18next/node_modules/regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + }, "node_modules/iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -38265,11 +38303,26 @@ "dev": true }, "i18next": { - "version": "21.10.0", - "resolved": "https://registry.npmjs.org/i18next/-/i18next-21.10.0.tgz", - "integrity": "sha512-YeuIBmFsGjUfO3qBmMOc0rQaun4mIpGKET5WDwvu8lU7gvwpcariZLNtL0Fzj+zazcHUrlXHiptcFhBMFaxzfg==", + "version": "23.5.1", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.5.1.tgz", + "integrity": "sha512-JelYzcaCoFDaa+Ysbfz2JsGAKkrHiMG6S61+HLBUEIPaF40WMwW9hCPymlQGrP+wWawKxKPuSuD71WZscCsWHg==", "requires": { - "@babel/runtime": "^7.17.2" + "@babel/runtime": "^7.22.5" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.15.tgz", + "integrity": "sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==", + "requires": { + "regenerator-runtime": "^0.14.0" + } + }, + "regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + } } }, "i18next-browser-languagedetector": { @@ -38362,6 +38415,14 @@ "universalify": "^2.0.0" } }, + "i18next": { + "version": "21.10.0", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-21.10.0.tgz", + "integrity": "sha512-YeuIBmFsGjUfO3qBmMOc0rQaun4mIpGKET5WDwvu8lU7gvwpcariZLNtL0Fzj+zazcHUrlXHiptcFhBMFaxzfg==", + "requires": { + "@babel/runtime": "^7.17.2" + } + }, "replace-ext": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-2.0.0.tgz", diff --git a/package.json b/package.json index 3ea738713..22d2e8fb6 100644 --- a/package.json +++ b/package.json @@ -72,7 +72,7 @@ "crx3": "^1.1.3", "date-fns": "^2.30.0", "facepaint": "^1.2.1", - "i18next": "^21.9.1", + "i18next": "^23.5.1", "i18next-browser-languagedetector": "^6.1.5", "i18next-http-backend": "^1.4.0", "i18next-parser": "^6.3.0", From 39b02f245d779e3b2a99aa54f4eeaf452dbdb107 Mon Sep 17 00:00:00 2001 From: Ostap Piatkovskyi <44294945+ost-ptk@users.noreply.github.com> Date: Tue, 12 Sep 2023 14:33:49 +0300 Subject: [PATCH 024/243] fix account status indicator (#775) Co-authored-by: ost-ptk Co-authored-by: Vynnyk Dmytro --- src/libs/ui/components/avatar/avatar.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libs/ui/components/avatar/avatar.tsx b/src/libs/ui/components/avatar/avatar.tsx index 51bbcd9ec..a251f13c7 100644 --- a/src/libs/ui/components/avatar/avatar.tsx +++ b/src/libs/ui/components/avatar/avatar.tsx @@ -14,7 +14,7 @@ import { SvgIcon } from '@libs/ui'; const RoundedIdenticon = styled(Identicon)<{ displayContext?: 'header' }>` border-radius: ${({ theme, displayContext }) => displayContext ? theme.borderRadius.base : theme.borderRadius.eight}px; - border: ${({ displayContext, theme }) => + border: ${({ displayContext }) => displayContext ? `0.5px solid #1A191929` : 'none'}; `; @@ -64,7 +64,7 @@ const ConnectionStatusBadge = styled.div<{ top: 50%; left: 50%; transform: translate(-50%, -50%); - z-index: 2; + z-index: 1; } `; From c831d4e41479c1d1f008ea96282ef9cf809682eb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Sep 2023 14:34:26 +0300 Subject: [PATCH 025/243] build(deps-dev): bump eslint from 8.28.0 to 8.49.0 (#776) Bumps [eslint](https://github.com/eslint/eslint) from 8.28.0 to 8.49.0. - [Release notes](https://github.com/eslint/eslint/releases) - [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md) - [Commits](https://github.com/eslint/eslint/compare/v8.28.0...v8.49.0) --- updated-dependencies: - dependency-name: eslint dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Vynnyk Dmytro --- package-lock.json | 574 +++++++++++++++++----------------------------- package.json | 2 +- 2 files changed, 217 insertions(+), 359 deletions(-) diff --git a/package-lock.json b/package-lock.json index afb54abb3..c97d1716d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -83,7 +83,7 @@ "copy-webpack-plugin": "^11.0.0", "css-loader": "6.7.2", "css-to-xpath": "^0.1.0", - "eslint": "8.28.0", + "eslint": "8.49.0", "eslint-config-airbnb": "^19.0.4", "eslint-config-prettier": "^8.3.0", "eslint-config-react-app": "^7.0.0", @@ -125,6 +125,15 @@ "xcode-build-webpack-plugin": "^1.0.2" } }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/@adobe/css-tools": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.0.1.tgz", @@ -2534,23 +2543,23 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", - "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.1.tgz", + "integrity": "sha512-PWiOzLIUAjN/w5K17PoF4n6sKBw0gqLHPhywmYHP4t1VFQQVYeb1yWsJwnMVEMl3tUHME7X/SJPZLmtG7XBDxQ==", "dev": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, "node_modules/@eslint/eslintrc": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", - "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", + "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.4.0", + "espree": "^9.6.0", "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", @@ -2565,10 +2574,39 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/@eslint/eslintrc/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "version": "13.21.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", + "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -2857,9 +2895,9 @@ } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", - "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", + "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", "dev": true, "dependencies": { "@humanwhocodes/object-schema": "^1.2.1", @@ -6214,11 +6252,10 @@ } }, "node_modules/acorn": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", - "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", "dev": true, - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -6236,18 +6273,6 @@ "acorn-walk": "^8.0.2" } }, - "node_modules/acorn-globals/node_modules/acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", @@ -6312,92 +6337,6 @@ "node": ">=12.21.0" } }, - "node_modules/addons-linter/node_modules/@eslint/eslintrc": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.0.tgz", - "integrity": "sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/addons-linter/node_modules/@eslint/eslintrc/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/addons-linter/node_modules/@eslint/eslintrc/node_modules/eslint-visitor-keys": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", - "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/addons-linter/node_modules/@eslint/eslintrc/node_modules/espree": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.0.tgz", - "integrity": "sha512-1FH/IiruXZ84tpUlm0aCUEwMl2Ho5ilqVh0VvQXw+byAz/4SAciyHLlfmL5WYqsvD38oymdUwBss0LtK8m4s/A==", - "dev": true, - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/addons-linter/node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/addons-linter/node_modules/acorn": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.9.0.tgz", - "integrity": "sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/addons-linter/node_modules/addons-scanner-utils": { "version": "8.5.0", "resolved": "https://registry.npmjs.org/addons-scanner-utils/-/addons-scanner-utils-8.5.0.tgz", @@ -11290,49 +11229,47 @@ } }, "node_modules/eslint": { - "version": "8.28.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.28.0.tgz", - "integrity": "sha512-S27Di+EVyMxcHiwDrFzk8dJYAaD+/5SoWKxL1ri/71CRHsnJnRDPNt2Kzj24+MT9FDupf4aqqyqPrvI8MvQ4VQ==", + "version": "8.49.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.49.0.tgz", + "integrity": "sha512-jw03ENfm6VJI0jA9U+8H5zfl5b+FvuU3YYvZRdZHOlU2ggJkxrlkJH4HcDrZpj6YwD8kuYqvQM8LyesoazrSOQ==", "dev": true, "dependencies": { - "@eslint/eslintrc": "^1.3.3", - "@humanwhocodes/config-array": "^0.11.6", + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.2", + "@eslint/js": "8.49.0", + "@humanwhocodes/config-array": "^0.11.11", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", - "esquery": "^1.4.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "find-up": "^5.0.0", "glob-parent": "^6.0.2", - "globals": "^13.15.0", - "grapheme-splitter": "^1.0.4", + "globals": "^13.19.0", + "graphemer": "^1.4.0", "ignore": "^5.2.0", - "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", + "optionator": "^0.9.3", "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" }, "bin": { @@ -11705,9 +11642,9 @@ } }, "node_modules/eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "dependencies": { "esrecurse": "^4.3.0", @@ -11715,6 +11652,9 @@ }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-utils": { @@ -11753,6 +11693,15 @@ "node": ">=4" } }, + "node_modules/eslint/node_modules/@eslint/js": { + "version": "8.49.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.49.0.tgz", + "integrity": "sha512-1S8uAY/MTJqVx0SC4epBq+N2yhuwtNwLbJYNZyhL2pO1ZVKn5HFXav5T41Ryzy9K9V7ZId2JB2oy/W4aCd9/2w==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "node_modules/eslint/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -11815,12 +11764,32 @@ } }, "node_modules/eslint/node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint/node_modules/find-up": { @@ -11852,9 +11821,9 @@ } }, "node_modules/eslint/node_modules/globals": { - "version": "13.15.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", - "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", + "version": "13.21.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", + "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -11964,18 +11933,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/espree/node_modules/acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/espree/node_modules/eslint-visitor-keys": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", @@ -13756,6 +13713,12 @@ "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", "dev": true }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, "node_modules/graphql": { "version": "16.5.0", "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.5.0.tgz", @@ -17662,18 +17625,6 @@ "node": ">= 10" } }, - "node_modules/jsdom/node_modules/acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/jsdom/node_modules/http-proxy-agent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", @@ -20439,17 +20390,17 @@ } }, "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "type-check": "^0.4.0" }, "engines": { "node": ">= 0.8.0" @@ -24811,18 +24762,6 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/terser/node_modules/acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/terser/node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -25343,18 +25282,6 @@ } } }, - "node_modules/ts-node/node_modules/acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/ts-results": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/ts-results/-/ts-results-3.3.0.tgz", @@ -26748,18 +26675,6 @@ "node": ">=10.13.0" } }, - "node_modules/webpack/node_modules/acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/webpack/node_modules/acorn-import-assertions": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", @@ -27381,6 +27296,12 @@ } }, "dependencies": { + "@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true + }, "@adobe/css-tools": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.0.1.tgz", @@ -29092,20 +29013,20 @@ } }, "@eslint-community/regexpp": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", - "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.1.tgz", + "integrity": "sha512-PWiOzLIUAjN/w5K17PoF4n6sKBw0gqLHPhywmYHP4t1VFQQVYeb1yWsJwnMVEMl3tUHME7X/SJPZLmtG7XBDxQ==", "dev": true }, "@eslint/eslintrc": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", - "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", + "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.4.0", + "espree": "^9.6.0", "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", @@ -29114,10 +29035,27 @@ "strip-json-comments": "^3.1.1" }, "dependencies": { + "eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true + }, + "espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "requires": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + } + }, "globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "version": "13.21.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", + "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -29326,9 +29264,9 @@ } }, "@humanwhocodes/config-array": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", - "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", + "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", "dev": true, "requires": { "@humanwhocodes/object-schema": "^1.2.1", @@ -32025,11 +31963,10 @@ } }, "acorn": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", - "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", - "dev": true, - "peer": true + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "dev": true }, "acorn-globals": { "version": "7.0.1", @@ -32039,14 +31976,6 @@ "requires": { "acorn": "^8.1.0", "acorn-walk": "^8.0.2" - }, - "dependencies": { - "acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", - "dev": true - } } }, "acorn-jsx": { @@ -32102,66 +32031,6 @@ "yauzl": "2.10.0" }, "dependencies": { - "@eslint/eslintrc": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.0.tgz", - "integrity": "sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "eslint-visitor-keys": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", - "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", - "dev": true - }, - "espree": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.0.tgz", - "integrity": "sha512-1FH/IiruXZ84tpUlm0aCUEwMl2Ho5ilqVh0VvQXw+byAz/4SAciyHLlfmL5WYqsvD38oymdUwBss0LtK8m4s/A==", - "dev": true, - "requires": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - } - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - } - } - }, - "acorn": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.9.0.tgz", - "integrity": "sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==", - "dev": true - }, "addons-scanner-utils": { "version": "8.5.0", "resolved": "https://registry.npmjs.org/addons-scanner-utils/-/addons-scanner-utils-8.5.0.tgz", @@ -35924,52 +35793,56 @@ } }, "eslint": { - "version": "8.28.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.28.0.tgz", - "integrity": "sha512-S27Di+EVyMxcHiwDrFzk8dJYAaD+/5SoWKxL1ri/71CRHsnJnRDPNt2Kzj24+MT9FDupf4aqqyqPrvI8MvQ4VQ==", + "version": "8.49.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.49.0.tgz", + "integrity": "sha512-jw03ENfm6VJI0jA9U+8H5zfl5b+FvuU3YYvZRdZHOlU2ggJkxrlkJH4HcDrZpj6YwD8kuYqvQM8LyesoazrSOQ==", "dev": true, "requires": { - "@eslint/eslintrc": "^1.3.3", - "@humanwhocodes/config-array": "^0.11.6", + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.2", + "@eslint/js": "8.49.0", + "@humanwhocodes/config-array": "^0.11.11", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", - "esquery": "^1.4.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "find-up": "^5.0.0", "glob-parent": "^6.0.2", - "globals": "^13.15.0", - "grapheme-splitter": "^1.0.4", + "globals": "^13.19.0", + "graphemer": "^1.4.0", "ignore": "^5.2.0", - "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", + "optionator": "^0.9.3", "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" }, "dependencies": { + "@eslint/js": { + "version": "8.49.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.49.0.tgz", + "integrity": "sha512-1S8uAY/MTJqVx0SC4epBq+N2yhuwtNwLbJYNZyhL2pO1ZVKn5HFXav5T41Ryzy9K9V7ZId2JB2oy/W4aCd9/2w==", + "dev": true + }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -36011,11 +35884,22 @@ "dev": true }, "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true }, + "espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "requires": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + } + }, "find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -36036,9 +35920,9 @@ } }, "globals": { - "version": "13.15.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", - "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", + "version": "13.21.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", + "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -36352,9 +36236,9 @@ } }, "eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "requires": { "esrecurse": "^4.3.0", @@ -36401,12 +36285,6 @@ "eslint-visitor-keys": "^3.3.0" }, "dependencies": { - "acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", - "dev": true - }, "eslint-visitor-keys": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", @@ -37781,6 +37659,12 @@ "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", "dev": true }, + "graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, "graphql": { "version": "16.5.0", "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.5.0.tgz", @@ -40674,12 +40558,6 @@ "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", "dev": true }, - "acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", - "dev": true - }, "http-proxy-agent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", @@ -42868,17 +42746,17 @@ } }, "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, "requires": { + "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "type-check": "^0.4.0" } }, "ordered-read-streams": { @@ -46189,12 +46067,6 @@ "source-map-support": "~0.5.20" }, "dependencies": { - "acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", - "dev": true - }, "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -46614,14 +46486,6 @@ "make-error": "^1.1.1", "v8-compile-cache-lib": "^3.0.1", "yn": "3.1.1" - }, - "dependencies": { - "acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", - "dev": true - } } }, "ts-results": { @@ -47529,12 +47393,6 @@ "webpack-sources": "^3.2.3" }, "dependencies": { - "acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", - "dev": true - }, "acorn-import-assertions": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", diff --git a/package.json b/package.json index 22d2e8fb6..cf599c6df 100644 --- a/package.json +++ b/package.json @@ -131,7 +131,7 @@ "copy-webpack-plugin": "^11.0.0", "css-loader": "6.7.2", "css-to-xpath": "^0.1.0", - "eslint": "8.28.0", + "eslint": "8.49.0", "eslint-config-airbnb": "^19.0.4", "eslint-config-prettier": "^8.3.0", "eslint-config-react-app": "^7.0.0", From 239a66fd4e50f228b75218f34423e0ce884d789c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Sep 2023 14:36:27 +0300 Subject: [PATCH 026/243] build(deps): bump got and @redux-devtools/cli (#780) Bumps [got](https://github.com/sindresorhus/got) to 11.8.6 and updates ancestor dependency [@redux-devtools/cli](https://github.com/reduxjs/redux-devtools). These dependencies need to be updated together. Updates `got` from 9.6.0 to 11.8.6 - [Release notes](https://github.com/sindresorhus/got/releases) - [Commits](https://github.com/sindresorhus/got/compare/v9.6.0...v11.8.6) Updates `@redux-devtools/cli` from 1.0.7 to 3.0.1 - [Release notes](https://github.com/reduxjs/redux-devtools/releases) - [Commits](https://github.com/reduxjs/redux-devtools/compare/@redux-devtools/cli@1.0.7...v3.0.1) --- updated-dependencies: - dependency-name: got dependency-type: indirect - dependency-name: "@redux-devtools/cli" dependency-type: direct:development ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Vynnyk Dmytro --- package-lock.json | 8631 ++++++++++++++++++++++++++------------------- package.json | 2 +- 2 files changed, 4947 insertions(+), 3686 deletions(-) diff --git a/package-lock.json b/package-lock.json index c97d1716d..52dcdb4f6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -57,7 +57,7 @@ "@babel/plugin-proposal-class-properties": "7.18.6", "@babel/preset-env": "7.20.2", "@babel/preset-react": "7.18.6", - "@redux-devtools/cli": "^1.0.7", + "@redux-devtools/cli": "^3.0.1", "@testing-library/dom": "8.19.0", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^12.1.2", @@ -153,6 +153,15 @@ "node": ">=6.0.0" } }, + "node_modules/@apollo/cache-control-types": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@apollo/cache-control-types/-/cache-control-types-1.0.3.tgz", + "integrity": "sha512-F17/vCp7QVwom9eG7ToauIKdAxpSoadsJnqIfyryLFSkLSOEqu+eC5Z3N8OXcUVStuOMcNHlyraRsA6rRICu4g==", + "dev": true, + "peerDependencies": { + "graphql": "14.x || 15.x || 16.x" + } + }, "node_modules/@apollo/protobufjs": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.2.7.tgz", @@ -178,143 +187,244 @@ "apollo-pbts": "bin/pbts" } }, + "node_modules/@apollo/server": { + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/@apollo/server/-/server-4.9.3.tgz", + "integrity": "sha512-U56Sx/UmzR3Es344hQ/Ptf2EJrH+kV4ZPoLmgGjWoiwf2wYQ/pRSvkSXgjOvoyE34wSa8Gh7f92ljfLfY+6q1w==", + "dev": true, + "dependencies": { + "@apollo/cache-control-types": "^1.0.3", + "@apollo/server-gateway-interface": "^1.1.1", + "@apollo/usage-reporting-protobuf": "^4.1.1", + "@apollo/utils.createhash": "^2.0.0", + "@apollo/utils.fetcher": "^2.0.0", + "@apollo/utils.isnodelike": "^2.0.0", + "@apollo/utils.keyvaluecache": "^2.1.0", + "@apollo/utils.logger": "^2.0.0", + "@apollo/utils.usagereporting": "^2.1.0", + "@apollo/utils.withrequired": "^2.0.0", + "@graphql-tools/schema": "^9.0.0", + "@josephg/resolvable": "^1.0.0", + "@types/express": "^4.17.13", + "@types/express-serve-static-core": "^4.17.30", + "@types/node-fetch": "^2.6.1", + "async-retry": "^1.2.1", + "body-parser": "^1.20.0", + "cors": "^2.8.5", + "express": "^4.17.1", + "loglevel": "^1.6.8", + "lru-cache": "^7.10.1", + "negotiator": "^0.6.3", + "node-abort-controller": "^3.1.1", + "node-fetch": "^2.6.7", + "uuid": "^9.0.0", + "whatwg-mimetype": "^3.0.0" + }, + "engines": { + "node": ">=14.16.0" + }, + "peerDependencies": { + "graphql": "^16.6.0" + } + }, + "node_modules/@apollo/server-gateway-interface": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@apollo/server-gateway-interface/-/server-gateway-interface-1.1.1.tgz", + "integrity": "sha512-pGwCl/po6+rxRmDMFgozKQo2pbsSwE91TpsDBAOgf74CRDPXHHtM88wbwjab0wMMZh95QfR45GGyDIdhY24bkQ==", + "dev": true, + "dependencies": { + "@apollo/usage-reporting-protobuf": "^4.1.1", + "@apollo/utils.fetcher": "^2.0.0", + "@apollo/utils.keyvaluecache": "^2.1.0", + "@apollo/utils.logger": "^2.0.0" + }, + "peerDependencies": { + "graphql": "14.x || 15.x || 16.x" + } + }, + "node_modules/@apollo/server/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@apollo/server/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "dev": true, + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/@apollo/usage-reporting-protobuf": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@apollo/usage-reporting-protobuf/-/usage-reporting-protobuf-4.0.2.tgz", - "integrity": "sha512-GfE8aDqi/lAFut95pjH9IRvH0zGsQ5G/2lYL0ZLZfML7ArX+A4UVHFANQcPCcUYGE6bI6OPhLekg4Vsjf6B1cw==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@apollo/usage-reporting-protobuf/-/usage-reporting-protobuf-4.1.1.tgz", + "integrity": "sha512-u40dIUePHaSKVshcedO7Wp+mPiZsaU6xjv9J+VyxpoU/zL6Jle+9zWeG98tr/+SZ0nZ4OXhrbb8SNr0rAPpIDA==", "dev": true, "dependencies": { "@apollo/protobufjs": "1.2.7" } }, + "node_modules/@apollo/utils.createhash": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@apollo/utils.createhash/-/utils.createhash-2.0.1.tgz", + "integrity": "sha512-fQO4/ZOP8LcXWvMNhKiee+2KuKyqIcfHrICA+M4lj/h/Lh1H10ICcUtk6N/chnEo5HXu0yejg64wshdaiFitJg==", + "dev": true, + "dependencies": { + "@apollo/utils.isnodelike": "^2.0.1", + "sha.js": "^2.4.11" + }, + "engines": { + "node": ">=14" + } + }, "node_modules/@apollo/utils.dropunuseddefinitions": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@apollo/utils.dropunuseddefinitions/-/utils.dropunuseddefinitions-1.1.0.tgz", - "integrity": "sha512-jU1XjMr6ec9pPoL+BFWzEPW7VHHulVdGKMkPAMiCigpVIT11VmCbnij0bWob8uS3ODJ65tZLYKAh/55vLw2rbg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@apollo/utils.dropunuseddefinitions/-/utils.dropunuseddefinitions-2.0.1.tgz", + "integrity": "sha512-EsPIBqsSt2BwDsv8Wu76LK5R1KtsVkNoO4b0M5aK0hx+dGg9xJXuqlr7Fo34Dl+y83jmzn+UvEW+t1/GP2melA==", "dev": true, "engines": { - "node": ">=12.13.0" + "node": ">=14" }, "peerDependencies": { "graphql": "14.x || 15.x || 16.x" } }, + "node_modules/@apollo/utils.fetcher": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@apollo/utils.fetcher/-/utils.fetcher-2.0.1.tgz", + "integrity": "sha512-jvvon885hEyWXd4H6zpWeN3tl88QcWnHp5gWF5OPF34uhvoR+DFqcNxs9vrRaBBSY3qda3Qe0bdud7tz2zGx1A==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@apollo/utils.isnodelike": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@apollo/utils.isnodelike/-/utils.isnodelike-2.0.1.tgz", + "integrity": "sha512-w41XyepR+jBEuVpoRM715N2ZD0xMD413UiJx8w5xnAZD2ZkSJnMJBoIzauK83kJpSgNuR6ywbV29jG9NmxjK0Q==", + "dev": true, + "engines": { + "node": ">=14" + } + }, "node_modules/@apollo/utils.keyvaluecache": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@apollo/utils.keyvaluecache/-/utils.keyvaluecache-1.0.2.tgz", - "integrity": "sha512-p7PVdLPMnPzmXSQVEsy27cYEjVON+SH/Wb7COyW3rQN8+wJgT1nv9jZouYtztWW8ZgTkii5T6tC9qfoDREd4mg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@apollo/utils.keyvaluecache/-/utils.keyvaluecache-2.1.1.tgz", + "integrity": "sha512-qVo5PvUUMD8oB9oYvq4ViCjYAMWnZ5zZwEjNF37L2m1u528x5mueMlU+Cr1UinupCgdB78g+egA1G98rbJ03Vw==", "dev": true, "dependencies": { - "@apollo/utils.logger": "^1.0.0", - "lru-cache": "7.10.1 - 7.13.1" + "@apollo/utils.logger": "^2.0.1", + "lru-cache": "^7.14.1" + }, + "engines": { + "node": ">=14" } }, "node_modules/@apollo/utils.keyvaluecache/node_modules/lru-cache": { - "version": "7.13.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.13.1.tgz", - "integrity": "sha512-CHqbAq7NFlW3RSnoWXLJBxCWaZVBrfa9UEHId2M3AW8iEBurbqduNexEUCGc3SHc6iCYXNJCDi903LajSVAEPQ==", + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, "engines": { "node": ">=12" } }, "node_modules/@apollo/utils.logger": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@apollo/utils.logger/-/utils.logger-1.0.0.tgz", - "integrity": "sha512-dx9XrjyisD2pOa+KsB5RcDbWIAdgC91gJfeyLCgy0ctJMjQe7yZK5kdWaWlaOoCeX0z6YI9iYlg7vMPyMpQF3Q==", - "dev": true + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@apollo/utils.logger/-/utils.logger-2.0.1.tgz", + "integrity": "sha512-YuplwLHaHf1oviidB7MxnCXAdHp3IqYV8n0momZ3JfLniae92eYqMIx+j5qJFX6WKJPs6q7bczmV4lXIsTu5Pg==", + "dev": true, + "engines": { + "node": ">=14" + } }, "node_modules/@apollo/utils.printwithreducedwhitespace": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@apollo/utils.printwithreducedwhitespace/-/utils.printwithreducedwhitespace-1.1.0.tgz", - "integrity": "sha512-GfFSkAv3n1toDZ4V6u2d7L4xMwLA+lv+6hqXicMN9KELSJ9yy9RzuEXaX73c/Ry+GzRsBy/fdSUGayGqdHfT2Q==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@apollo/utils.printwithreducedwhitespace/-/utils.printwithreducedwhitespace-2.0.1.tgz", + "integrity": "sha512-9M4LUXV/fQBh8vZWlLvb/HyyhjJ77/I5ZKu+NBWV/BmYGyRmoEP9EVAy7LCVoY3t8BDcyCAGfxJaLFCSuQkPUg==", "dev": true, "engines": { - "node": ">=12.13.0" + "node": ">=14" }, "peerDependencies": { "graphql": "14.x || 15.x || 16.x" } }, "node_modules/@apollo/utils.removealiases": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@apollo/utils.removealiases/-/utils.removealiases-1.0.0.tgz", - "integrity": "sha512-6cM8sEOJW2LaGjL/0vHV0GtRaSekrPQR4DiywaApQlL9EdROASZU5PsQibe2MWeZCOhNrPRuHh4wDMwPsWTn8A==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@apollo/utils.removealiases/-/utils.removealiases-2.0.1.tgz", + "integrity": "sha512-0joRc2HBO4u594Op1nev+mUF6yRnxoUH64xw8x3bX7n8QBDYdeYgY4tF0vJReTy+zdn2xv6fMsquATSgC722FA==", "dev": true, "engines": { - "node": ">=12.13.0" + "node": ">=14" }, "peerDependencies": { "graphql": "14.x || 15.x || 16.x" } }, "node_modules/@apollo/utils.sortast": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@apollo/utils.sortast/-/utils.sortast-1.1.0.tgz", - "integrity": "sha512-VPlTsmUnOwzPK5yGZENN069y6uUHgeiSlpEhRnLFYwYNoJHsuJq2vXVwIaSmts015WTPa2fpz1inkLYByeuRQA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@apollo/utils.sortast/-/utils.sortast-2.0.1.tgz", + "integrity": "sha512-eciIavsWpJ09za1pn37wpsCGrQNXUhM0TktnZmHwO+Zy9O4fu/WdB4+5BvVhFiZYOXvfjzJUcc+hsIV8RUOtMw==", "dev": true, "dependencies": { "lodash.sortby": "^4.7.0" }, "engines": { - "node": ">=12.13.0" + "node": ">=14" }, "peerDependencies": { "graphql": "14.x || 15.x || 16.x" } }, "node_modules/@apollo/utils.stripsensitiveliterals": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@apollo/utils.stripsensitiveliterals/-/utils.stripsensitiveliterals-1.2.0.tgz", - "integrity": "sha512-E41rDUzkz/cdikM5147d8nfCFVKovXxKBcjvLEQ7bjZm/cg9zEcXvS6vFY8ugTubI3fn6zoqo0CyU8zT+BGP9w==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@apollo/utils.stripsensitiveliterals/-/utils.stripsensitiveliterals-2.0.1.tgz", + "integrity": "sha512-QJs7HtzXS/JIPMKWimFnUMK7VjkGQTzqD9bKD1h3iuPAqLsxd0mUNVbkYOPTsDhUKgcvUOfOqOJWYohAKMvcSA==", "dev": true, "engines": { - "node": ">=12.13.0" + "node": ">=14" }, "peerDependencies": { "graphql": "14.x || 15.x || 16.x" } }, "node_modules/@apollo/utils.usagereporting": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@apollo/utils.usagereporting/-/utils.usagereporting-1.0.1.tgz", - "integrity": "sha512-6dk+0hZlnDbahDBB2mP/PZ5ybrtCJdLMbeNJD+TJpKyZmSY6bA3SjI8Cr2EM9QA+AdziywuWg+SgbWUF3/zQqQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@apollo/utils.usagereporting/-/utils.usagereporting-2.1.0.tgz", + "integrity": "sha512-LPSlBrn+S17oBy5eWkrRSGb98sWmnEzo3DPTZgp8IQc8sJe0prDgDuppGq4NeQlpoqEHz0hQeYHAOA0Z3aQsxQ==", "dev": true, "dependencies": { - "@apollo/usage-reporting-protobuf": "^4.0.0", - "@apollo/utils.dropunuseddefinitions": "^1.1.0", - "@apollo/utils.printwithreducedwhitespace": "^1.1.0", - "@apollo/utils.removealiases": "1.0.0", - "@apollo/utils.sortast": "^1.1.0", - "@apollo/utils.stripsensitiveliterals": "^1.2.0" + "@apollo/usage-reporting-protobuf": "^4.1.0", + "@apollo/utils.dropunuseddefinitions": "^2.0.1", + "@apollo/utils.printwithreducedwhitespace": "^2.0.1", + "@apollo/utils.removealiases": "2.0.1", + "@apollo/utils.sortast": "^2.0.1", + "@apollo/utils.stripsensitiveliterals": "^2.0.1" }, "engines": { - "node": ">=12.13.0" + "node": ">=14" }, "peerDependencies": { "graphql": "14.x || 15.x || 16.x" } }, - "node_modules/@apollographql/apollo-tools": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/@apollographql/apollo-tools/-/apollo-tools-0.5.4.tgz", - "integrity": "sha512-shM3q7rUbNyXVVRkQJQseXv6bnYM3BUma/eZhwXR4xsuM+bqWnJKvW7SAfRjP7LuSCocrexa5AXhjjawNHrIlw==", + "node_modules/@apollo/utils.withrequired": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@apollo/utils.withrequired/-/utils.withrequired-2.0.1.tgz", + "integrity": "sha512-YBDiuAX9i1lLc6GeTy1m7DGLFn/gMnvXqlalOIMjM7DeOgIacEjjfwPqb0M1CQ2v11HhR15d1NmxJoRCfrNqcA==", "dev": true, "engines": { - "node": ">=8", - "npm": ">=6" - }, - "peerDependencies": { - "graphql": "^14.2.1 || ^15.0.0 || ^16.0.0" - } - }, - "node_modules/@apollographql/graphql-playground-html": { - "version": "1.6.29", - "resolved": "https://registry.npmjs.org/@apollographql/graphql-playground-html/-/graphql-playground-html-1.6.29.tgz", - "integrity": "sha512-xCcXpoz52rI4ksJSdOCxeOCn2DLocxwHf9dVT/Q90Pte1LX+LY+91SFtJF3KXVHH8kEin+g1KKCQPKBjZJfWNA==", - "dev": true, - "dependencies": { - "xss": "^1.0.8" + "node": ">=14" } }, "node_modules/@babel/code-frame": { @@ -2299,26 +2409,92 @@ "node": ">=10.0.0" } }, + "node_modules/@dnd-kit/accessibility": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@dnd-kit/accessibility/-/accessibility-3.0.1.tgz", + "integrity": "sha512-HXRrwS9YUYQO9lFRc/49uO/VICbM+O+ZRpFDe9Pd1rwVv2PCNkRiTZRdxrDgng/UkvdC3Re9r2vwPpXXrWeFzg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@dnd-kit/core": { + "version": "6.0.8", + "resolved": "https://registry.npmjs.org/@dnd-kit/core/-/core-6.0.8.tgz", + "integrity": "sha512-lYaoP8yHTQSLlZe6Rr9qogouGUz9oRUj4AHhDQGQzq/hqaJRpFo65X+JKsdHf8oUFBzx5A+SJPUvxAwTF2OabA==", + "dev": true, + "dependencies": { + "@dnd-kit/accessibility": "^3.0.0", + "@dnd-kit/utilities": "^3.2.1", + "tslib": "^2.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@dnd-kit/modifiers": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@dnd-kit/modifiers/-/modifiers-6.0.1.tgz", + "integrity": "sha512-rbxcsg3HhzlcMHVHWDuh9LCjpOVAgqbV78wLGI8tziXY3+qcMQ61qVXIvNKQFuhj75dSfD+o+PYZQ/NUk2A23A==", + "dev": true, + "dependencies": { + "@dnd-kit/utilities": "^3.2.1", + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@dnd-kit/core": "^6.0.6", + "react": ">=16.8.0" + } + }, + "node_modules/@dnd-kit/sortable": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@dnd-kit/sortable/-/sortable-7.0.2.tgz", + "integrity": "sha512-wDkBHHf9iCi1veM834Gbk1429bd4lHX4RpAwT0y2cHLf246GAvU2sVw/oxWNpPKQNQRQaeGXhAVgrOl1IT+iyA==", + "dev": true, + "dependencies": { + "@dnd-kit/utilities": "^3.2.0", + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@dnd-kit/core": "^6.0.7", + "react": ">=16.8.0" + } + }, + "node_modules/@dnd-kit/utilities": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@dnd-kit/utilities/-/utilities-3.2.1.tgz", + "integrity": "sha512-OOXqISfvBw/1REtkSK2N3Fi2EQiLMlWUlqnOK/UpOISqBZPWpE6TqL+jcPtMOkE8TqYGiURvRdPSI9hltNUjEA==", + "dev": true, + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, "node_modules/@electron/get": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.14.1.tgz", - "integrity": "sha512-BrZYyL/6m0ZXz/lDxy/nlVhQz+WF+iPS6qXolEU8atw7h6v1aYkjwJZ63m+bJMBTxDE66X+r2tPS4a/8C82sZw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@electron/get/-/get-2.0.3.tgz", + "integrity": "sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==", "dev": true, "dependencies": { "debug": "^4.1.1", "env-paths": "^2.2.0", "fs-extra": "^8.1.0", - "got": "^9.6.0", + "got": "^11.8.5", "progress": "^2.0.3", "semver": "^6.2.0", "sumchecker": "^3.0.1" }, "engines": { - "node": ">=8.6" + "node": ">=12" }, "optionalDependencies": { - "global-agent": "^3.0.0", - "global-tunnel-ng": "^2.7.1" + "global-agent": "^3.0.0" } }, "node_modules/@electron/get/node_modules/fs-extra": { @@ -2338,7 +2514,7 @@ "node_modules/@electron/get/node_modules/jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "dev": true, "optionalDependencies": { "graceful-fs": "^4.1.6" @@ -2354,54 +2530,29 @@ } }, "node_modules/@emotion/babel-plugin": { - "version": "11.9.2", - "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.9.2.tgz", - "integrity": "sha512-Pr/7HGH6H6yKgnVFNEj2MVlreu3ADqftqjqwUvDy/OJzKFgxKeTQ+eeUf20FOTuHVkDON2iNa25rAXVYtWJCjw==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.12.13", - "@babel/plugin-syntax-jsx": "^7.12.13", - "@babel/runtime": "^7.13.10", - "@emotion/hash": "^0.8.0", - "@emotion/memoize": "^0.7.5", - "@emotion/serialize": "^1.0.2", - "babel-plugin-macros": "^2.6.1", + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz", + "integrity": "sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/runtime": "^7.18.3", + "@emotion/hash": "^0.9.1", + "@emotion/memoize": "^0.8.1", + "@emotion/serialize": "^1.1.2", + "babel-plugin-macros": "^3.1.0", "convert-source-map": "^1.5.0", "escape-string-regexp": "^4.0.0", "find-root": "^1.1.0", "source-map": "^0.5.7", - "stylis": "4.0.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@emotion/babel-plugin/node_modules/babel-plugin-macros": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", - "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "cosmiconfig": "^6.0.0", - "resolve": "^1.12.0" + "stylis": "4.2.0" } }, - "node_modules/@emotion/babel-plugin/node_modules/cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", - "dev": true, - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" - }, - "engines": { - "node": ">=8" - } + "node_modules/@emotion/babel-plugin/node_modules/@emotion/memoize": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", + "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==", + "dev": true }, "node_modules/@emotion/babel-plugin/node_modules/escape-string-regexp": { "version": "4.0.0", @@ -2416,22 +2567,28 @@ } }, "node_modules/@emotion/cache": { - "version": "11.7.1", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.7.1.tgz", - "integrity": "sha512-r65Zy4Iljb8oyjtLeCuBH8Qjiy107dOYC6SJq7g7GV5UCQWMObY4SJDPGFjiiVpPrOJ2hmJOoBiYTC7hwx9E2A==", + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz", + "integrity": "sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==", "dev": true, "dependencies": { - "@emotion/memoize": "^0.7.4", - "@emotion/sheet": "^1.1.0", - "@emotion/utils": "^1.0.0", - "@emotion/weak-memoize": "^0.2.5", - "stylis": "4.0.13" + "@emotion/memoize": "^0.8.1", + "@emotion/sheet": "^1.2.2", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", + "stylis": "4.2.0" } }, + "node_modules/@emotion/cache/node_modules/@emotion/memoize": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", + "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==", + "dev": true + }, "node_modules/@emotion/hash": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", - "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==", + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz", + "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==", "dev": true }, "node_modules/@emotion/is-prop-valid": { @@ -2448,49 +2605,58 @@ "integrity": "sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ==" }, "node_modules/@emotion/react": { - "version": "11.9.0", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.9.0.tgz", - "integrity": "sha512-lBVSF5d0ceKtfKCDQJveNAtkC7ayxpVlgOohLgXqRwqWr9bOf4TZAFFyIcNngnV6xK6X4x2ZeXq7vliHkoVkxQ==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.13.10", - "@emotion/babel-plugin": "^11.7.1", - "@emotion/cache": "^11.7.1", - "@emotion/serialize": "^1.0.3", - "@emotion/utils": "^1.1.0", - "@emotion/weak-memoize": "^0.2.5", + "version": "11.11.1", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.1.tgz", + "integrity": "sha512-5mlW1DquU5HaxjLkfkGN1GA/fvVGdyHURRiX/0FHl2cfIfRxSOfmxEH5YS43edp0OldZrZ+dkBKbngxcNCdZvA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.11.0", + "@emotion/cache": "^11.11.0", + "@emotion/serialize": "^1.1.2", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", "hoist-non-react-statics": "^3.3.1" }, "peerDependencies": { - "@babel/core": "^7.0.0", "react": ">=16.8.0" }, "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, "@types/react": { "optional": true } } }, "node_modules/@emotion/serialize": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.0.3.tgz", - "integrity": "sha512-2mSSvgLfyV3q+iVh3YWgNlUc2a9ZlDU7DjuP5MjK3AXRR0dYigCrP99aeFtaB2L/hjfEZdSThn5dsZ0ufqbvsA==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.2.tgz", + "integrity": "sha512-zR6a/fkFP4EAcCMQtLOhIgpprZOwNmCldtpaISpvz348+DP4Mz8ZoKaGGCQpbzepNIUWbq4w6hNZkwDyKoS+HA==", "dev": true, "dependencies": { - "@emotion/hash": "^0.8.0", - "@emotion/memoize": "^0.7.4", - "@emotion/unitless": "^0.7.5", - "@emotion/utils": "^1.0.0", + "@emotion/hash": "^0.9.1", + "@emotion/memoize": "^0.8.1", + "@emotion/unitless": "^0.8.1", + "@emotion/utils": "^1.2.1", "csstype": "^3.0.2" } }, + "node_modules/@emotion/serialize/node_modules/@emotion/memoize": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", + "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==", + "dev": true + }, + "node_modules/@emotion/serialize/node_modules/@emotion/unitless": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", + "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==", + "dev": true + }, "node_modules/@emotion/sheet": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.1.0.tgz", - "integrity": "sha512-u0AX4aSo25sMAygCuQTzS+HsImZFuS8llY8O7b9MDRzbJM0kVJlAz6KNDqcG7pOuQZJmj/8X/rAW+66kMnMW+g==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz", + "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==", "dev": true }, "node_modules/@emotion/stylis": { @@ -2503,16 +2669,25 @@ "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" }, + "node_modules/@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz", + "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==", + "dev": true, + "peerDependencies": { + "react": ">=16.8.0" + } + }, "node_modules/@emotion/utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.1.0.tgz", - "integrity": "sha512-iRLa/Y4Rs5H/f2nimczYmS5kFJEbpiVvgN3XVfZ022IYhuNA1IRSHEizcof88LtCTXtl9S2Cxt32KgaXEu72JQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz", + "integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==", "dev": true }, "node_modules/@emotion/weak-memoize": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz", - "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz", + "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==", "dev": true }, "node_modules/@eslint-community/eslint-utils": { @@ -2715,6 +2890,31 @@ } ] }, + "node_modules/@floating-ui/core": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.4.1.tgz", + "integrity": "sha512-jk3WqquEJRlcyu7997NtR5PibI+y5bi+LS3hPmguVClypenMsCY3CBa3LAQnozRCtCrYWSEtAdiskpamuJRFOQ==", + "dev": true, + "dependencies": { + "@floating-ui/utils": "^0.1.1" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.2.tgz", + "integrity": "sha512-6ArmenS6qJEWmwzczWyhvrXRdI/rI78poBcW0h/456+onlabit+2G+QxHx5xTOX60NBJQXjsCLFbW2CmsXpUog==", + "dev": true, + "dependencies": { + "@floating-ui/core": "^1.4.1", + "@floating-ui/utils": "^0.1.1" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.2.tgz", + "integrity": "sha512-ou3elfqG/hZsbmF4bxeJhPHIf3G2pm0ujc39hYEZrfVqt7Vk/Zji6CXc3W0pmYM8BW1g40U+akTl9DKZhFhInQ==", + "dev": true + }, "node_modules/@fluent/syntax": { "version": "0.19.0", "resolved": "https://registry.npmjs.org/@fluent/syntax/-/syntax-0.19.0.tgz", @@ -2819,58 +3019,53 @@ "optional": true }, "node_modules/@graphql-tools/merge": { - "version": "8.2.11", - "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.2.11.tgz", - "integrity": "sha512-fsjJVdsk9GV1jj1Ed2AKLlHYlsf0ZadTK8X5KxFRE1ZSnKqh56BLVX93JrtOIAnsiHkwOK2TC43HGhApF1swpQ==", + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.4.2.tgz", + "integrity": "sha512-XbrHAaj8yDuINph+sAfuq3QCZ/tKblrTLOpirK0+CAgNlZUCHs0Fa+xtMUURgwCVThLle1AF7svJCxFizygLsw==", "dev": true, "dependencies": { - "@graphql-tools/utils": "8.6.10", - "tslib": "~2.4.0" + "@graphql-tools/utils": "^9.2.1", + "tslib": "^2.4.0" }, "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@graphql-tools/mock": { - "version": "8.6.9", - "resolved": "https://registry.npmjs.org/@graphql-tools/mock/-/mock-8.6.9.tgz", - "integrity": "sha512-Pto23TeUkUn0BYI6UtclPbKjunXvOGtDO7DZC8KagDfgMTu0ZMNTovv0kq+sgJBsnqD4Q9eRkR4IetSujHQBsA==", + "node_modules/@graphql-tools/schema": { + "version": "9.0.19", + "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-9.0.19.tgz", + "integrity": "sha512-oBRPoNBtCkk0zbUsyP4GaIzCt8C0aCI4ycIRUL67KK5pOHljKLBBtGT+Jr6hkzA74C8Gco8bpZPe7aWFjiaK2w==", "dev": true, "dependencies": { - "@graphql-tools/schema": "8.3.11", - "@graphql-tools/utils": "8.6.10", - "fast-json-stable-stringify": "^2.1.0", - "tslib": "~2.4.0" + "@graphql-tools/merge": "^8.4.1", + "@graphql-tools/utils": "^9.2.1", + "tslib": "^2.4.0", + "value-or-promise": "^1.0.12" }, "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@graphql-tools/schema": { - "version": "8.3.11", - "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.3.11.tgz", - "integrity": "sha512-esMEnbyXbp8B5VEI4o395+x0G7Qmz3JSX5onFBF8HeLYcqWJasY5vBuWkO18VxrZpEnvnryodP6Y00bVag9O3Q==", + "node_modules/@graphql-tools/utils": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.2.1.tgz", + "integrity": "sha512-WUw506Ql6xzmOORlriNrD6Ugx+HjVgYxt9KCXD9mHAak+eaXSwuGGPyE60hy9xaDEoXKBsG7SkG69ybitaVl6A==", "dev": true, "dependencies": { - "@graphql-tools/merge": "8.2.11", - "@graphql-tools/utils": "8.6.10", - "tslib": "~2.4.0", - "value-or-promise": "1.0.11" + "@graphql-typed-document-node/core": "^3.1.1", + "tslib": "^2.4.0" }, "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@graphql-tools/utils": { - "version": "8.6.10", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.6.10.tgz", - "integrity": "sha512-bJH9qwuyM3BP0PTU6/lvBDkk6jdEIOn+dbyk4pHMVNnvbJ1gZQwo62To8SHxxaUTus8OMhhVPSh9ApWXREURcg==", + "node_modules/@graphql-typed-document-node/core": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", + "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", "dev": true, - "dependencies": { - "tslib": "~2.4.0" - }, "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, "node_modules/@hookform/resolvers": { @@ -4123,136 +4318,595 @@ "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", "dev": true }, - "node_modules/@redux-devtools/app": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@redux-devtools/app/-/app-2.1.4.tgz", - "integrity": "sha512-dT03uOhESjZygj4Y0sv/m4PbAZsZjqXuBJtI3Bbcc3yLwspg8RzGnvMyLQ2M0DHHe1swv3/DRsgT24qa3NtBPA==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.17.9", - "@redux-devtools/chart-monitor": "^2.1.1", - "@redux-devtools/core": "^3.12.0", - "@redux-devtools/inspector-monitor": "^2.1.2", - "@redux-devtools/inspector-monitor-test-tab": "^0.8.6", - "@redux-devtools/inspector-monitor-trace-tab": "^0.3.4", - "@redux-devtools/log-monitor": "^3.1.1", - "@redux-devtools/rtk-query-monitor": "^2.1.2", - "@redux-devtools/slider-monitor": "^3.1.2", - "@redux-devtools/ui": "^1.2.1", - "@reduxjs/toolkit": "^1.8.1", + "node_modules/@redux-devtools/chart-monitor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@redux-devtools/chart-monitor/-/chart-monitor-4.0.0.tgz", + "integrity": "sha512-ZxcYQ5JKs3HGS4AO5fYFN5OKPQ8w41uTRA6fU15Wf5qqv6oHDmDycgTlx2KHNDxVBS0QXa7PS83qiwL1SmGZrA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.20.6", + "@types/redux-devtools-themes": "^1.0.0", + "d3-state-visualizer": "^2.0.0", + "deepmerge": "^4.2.2", + "redux-devtools-themes": "^1.0.0" + }, + "peerDependencies": { + "@redux-devtools/core": "^3.13.1", + "@types/react": "^16.3.0 || ^17.0.0 || ^18.0.0", + "react": "^16.3.0 || ^17.0.0 || ^18.0.0", + "redux": "^3.4.0 || ^4.0.0" + } + }, + "node_modules/@redux-devtools/cli": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@redux-devtools/cli/-/cli-3.0.1.tgz", + "integrity": "sha512-NARxbTvLQQkZ4if5zvQTkTyesKCsu9DpN9Uupz1Ib18lUEuuEYl3HKJFYQ/hScnxxMSin7KN8j8guHMVD16pqg==", + "dev": true, + "dependencies": { + "@apollo/server": "^4.9.1", + "@redux-devtools/app": "^3.0.0", + "@types/react": "^18.2.20", + "body-parser": "^1.20.2", + "chalk": "^5.3.0", + "cors": "^2.8.5", + "cross-spawn": "^7.0.3", + "electron": "^25.6.0", + "express": "^4.18.2", + "get-port": "^7.0.0", + "graphql": "^16.8.0", + "knex": "^2.5.1", + "lodash-es": "^4.17.21", + "minimist": "^1.2.8", + "morgan": "^1.10.0", + "open": "^9.1.0", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-is": "^18.2.0", + "semver": "^7.5.4", + "socketcluster-server": "^17.4.1", + "sqlite3": "^5.1.6", + "styled-components": "^5.3.11", + "uuid": "^9.0.0" + }, + "bin": { + "redux-devtools": "bin/redux-devtools.js" + }, + "engines": { + "node": "^16.13.0 || >= 18.12.0" + } + }, + "node_modules/@redux-devtools/cli/node_modules/@babel/runtime": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.15.tgz", + "integrity": "sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@redux-devtools/cli/node_modules/@redux-devtools/app": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@redux-devtools/app/-/app-3.0.0.tgz", + "integrity": "sha512-3mn+cj3KhMRSa0EPxlRD4EnfFFMBsM1nKJ+g/6zB4iRyk23befz4YzwFG3KXkwyVmZCooCu3DjHkQhUOx4xxQA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.22.10", + "@redux-devtools/chart-monitor": "^4.0.0", + "@redux-devtools/core": "^3.13.0", + "@redux-devtools/inspector-monitor": "^4.0.0", + "@redux-devtools/inspector-monitor-test-tab": "^2.0.0", + "@redux-devtools/inspector-monitor-trace-tab": "^2.0.0", + "@redux-devtools/log-monitor": "^4.0.2", + "@redux-devtools/rtk-query-monitor": "^3.1.1", + "@redux-devtools/slider-monitor": "^4.0.0", + "@redux-devtools/ui": "^1.3.0", + "@reduxjs/toolkit": "^1.9.5", "@types/prop-types": "^15.7.5", - "d3-state-visualizer": "^1.6.0", + "d3-state-visualizer": "^2.0.0", "javascript-stringify": "^2.1.0", "jsan": "^3.1.14", - "jsondiffpatch": "^0.4.1", + "jsondiffpatch": "^0.5.0", "localforage": "^1.10.0", "lodash": "^4.17.21", "prop-types": "^15.8.1", - "react-icons": "^4.3.1", - "react-is": "^17.0.2", - "react-redux": "^7.2.8", - "redux": "^4.1.2", + "react-icons": "^4.10.1", + "react-is": "^18.2.0", + "react-redux": "^8.1.2", + "redux": "^4.2.1", "redux-persist": "^6.0.0", - "socketcluster-client": "^14.3.2" + "socketcluster-client": "^17.2.2" }, "peerDependencies": { - "@types/react": "^16.3.0 || ^17.0.0", - "@types/styled-components": "^5.1.25", - "react": "^16.3.0 || ^17.0.0", - "styled-components": "^5.3.5" + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "@types/styled-components": "^5.1.26", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0", + "styled-components": "^5.3.11" } }, - "node_modules/@redux-devtools/app/node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "node_modules/@redux-devtools/cli/node_modules/@redux-devtools/inspector-monitor-test-tab": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@redux-devtools/inspector-monitor-test-tab/-/inspector-monitor-test-tab-2.0.0.tgz", + "integrity": "sha512-6hi7WqUc/pGO7UtdwCnQngSdijsxG34Ou00/Wuu/yyZfw8WU7jib21LVRiSpo8UFwSeSGkc4YYKgGmS+NpAW0A==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.22.10", + "@redux-devtools/ui": "^1.3.0", + "@types/prop-types": "^15.7.5", + "es6template": "^1.0.5", + "javascript-stringify": "^2.1.0", + "jsan": "^3.1.14", + "object-path": "^0.11.8", + "prop-types": "^15.8.1", + "react-icons": "^4.10.1", + "simple-diff": "^1.7.1" + }, + "peerDependencies": { + "@redux-devtools/inspector-monitor": "^4.0.0", + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "@types/styled-components": "^5.1.26", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0", + "redux": "^3.4.0 || ^4.0.0", + "styled-components": "^5.3.11" + } + }, + "node_modules/@redux-devtools/cli/node_modules/@types/react": { + "version": "18.2.21", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.21.tgz", + "integrity": "sha512-neFKG/sBAwGxHgXiIxnbm3/AAVQ/cMRS93hvBpg8xYRbeQSPVABp9U2bRnPf0iI4+Ucdv3plSxKK+3CW2ENJxA==", + "dev": true, + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@redux-devtools/cli/node_modules/body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/@redux-devtools/cli/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@redux-devtools/cli/node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@redux-devtools/cli/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/@redux-devtools/cli/node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@redux-devtools/cli/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, - "node_modules/@redux-devtools/app/node_modules/react-redux": { - "version": "7.2.8", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.8.tgz", - "integrity": "sha512-6+uDjhs3PSIclqoCk0kd6iX74gzrGc3W5zcAjbrFgEdIjRSQObdIwfx80unTkVUYvbQ95Y8Av3OvFHq1w5EOUw==", + "node_modules/@redux-devtools/cli/node_modules/open": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/open/-/open-9.1.0.tgz", + "integrity": "sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==", "dev": true, "dependencies": { - "@babel/runtime": "^7.15.4", - "@types/react-redux": "^7.1.20", + "default-browser": "^4.0.0", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@redux-devtools/cli/node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/@redux-devtools/cli/node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dev": true, + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@redux-devtools/cli/node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dev": true, + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/@redux-devtools/cli/node_modules/react-redux": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.1.2.tgz", + "integrity": "sha512-xJKYI189VwfsFc4CJvHqHlDrzyFTY/3vZACbE+rr/zQ34Xx1wQfB4OTOSeOSNrF6BDVe8OOdxIrAnMGXA3ggfw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.12.1", + "@types/hoist-non-react-statics": "^3.3.1", + "@types/use-sync-external-store": "^0.0.3", "hoist-non-react-statics": "^3.3.2", - "loose-envify": "^1.4.0", - "prop-types": "^15.7.2", - "react-is": "^17.0.2" + "react-is": "^18.0.0", + "use-sync-external-store": "^1.0.0" }, "peerDependencies": { - "react": "^16.8.3 || ^17 || ^18" + "@types/react": "^16.8 || ^17.0 || ^18.0", + "@types/react-dom": "^16.8 || ^17.0 || ^18.0", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0", + "react-native": ">=0.59", + "redux": "^4 || ^5.0.0-beta.0" }, "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + }, "react-dom": { "optional": true }, "react-native": { "optional": true + }, + "redux": { + "optional": true } } }, - "node_modules/@redux-devtools/chart-monitor": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@redux-devtools/chart-monitor/-/chart-monitor-2.1.1.tgz", - "integrity": "sha512-RxwmARx7GXrA3nUMgyJE7OU4PaqY55WdIn0W7v+qvPmuqfiyO5Dq3vqOEPL9GF6tT7sx/3/O/33kKlL2ImLh7w==", + "node_modules/@redux-devtools/cli/node_modules/redux": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz", + "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.9.2" + } + }, + "node_modules/@redux-devtools/cli/node_modules/regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==", + "dev": true + }, + "node_modules/@redux-devtools/cli/node_modules/sc-formatter": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/sc-formatter/-/sc-formatter-4.0.0.tgz", + "integrity": "sha512-MgUIvuca+90fBrCWY5LdlU9YUWjlkPFwdpvmomcwQEu3t2id/6YHdG2nhB6o7nhRp4ocfmcXQTh00r/tJtynSg==", + "dev": true + }, + "node_modules/@redux-devtools/cli/node_modules/scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "dev": true, + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/@redux-devtools/cli/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@redux-devtools/cli/node_modules/socketcluster-client": { + "version": "17.2.2", + "resolved": "https://registry.npmjs.org/socketcluster-client/-/socketcluster-client-17.2.2.tgz", + "integrity": "sha512-HIopjTj8p979N5klC7FeZSwu9rd805bFgFcyVX7Y8zPyjVHXHTfGrV/8vqzN2gpOwnnosWQ44ue0qGqovlxZrg==", + "dev": true, + "dependencies": { + "ag-channel": "^5.0.0", + "ag-request": "^1.0.0", + "async-stream-emitter": "^4.0.0", + "buffer": "^5.2.1", + "clone-deep": "^4.0.1", + "linked-list": "^0.1.0", + "sc-errors": "^2.0.1", + "sc-formatter": "^4.0.0", + "stream-demux": "^8.0.0", + "uuid": "^8.3.2", + "vinyl-buffer": "^1.0.1", + "ws": "^8.9.0" + } + }, + "node_modules/@redux-devtools/cli/node_modules/socketcluster-client/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@redux-devtools/cli/node_modules/styled-components": { + "version": "5.3.11", + "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-5.3.11.tgz", + "integrity": "sha512-uuzIIfnVkagcVHv9nE0VPlHPSCmXIUGKfJ42LNjxCCTDTL5sgnJ8Z7GZBq0EnLYGln77tPpEpExt2+qa+cZqSw==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/traverse": "^7.4.5", + "@emotion/is-prop-valid": "^1.1.0", + "@emotion/stylis": "^0.8.4", + "@emotion/unitless": "^0.7.4", + "babel-plugin-styled-components": ">= 1.12.0", + "css-to-react-native": "^3.0.0", + "hoist-non-react-statics": "^3.0.0", + "shallowequal": "^1.1.0", + "supports-color": "^5.5.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/styled-components" + }, + "peerDependencies": { + "react": ">= 16.8.0", + "react-dom": ">= 16.8.0", + "react-is": ">= 16.8.0" + } + }, + "node_modules/@redux-devtools/cli/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "dev": true, + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@redux-devtools/cli/node_modules/ws": { + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.1.tgz", + "integrity": "sha512-4OOseMUq8AzRBI/7SLMUwO+FEDnguetSk7KMb1sHwvF2w2Wv5Hoj0nlifx8vtGsftE/jWHojPy8sMMzYLJ2G/A==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/@redux-devtools/core": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/@redux-devtools/core/-/core-3.13.1.tgz", + "integrity": "sha512-VZbma4b28D7dLn6rKTxx4r1KJrgiT2EQNF4vjkpTlXTu0cQcHkEcAO9ixMBj6rZGrT/jinCHq8gBy2bWgnDvcA==", "dev": true, "dependencies": { - "@babel/runtime": "^7.17.9", + "@babel/runtime": "^7.18.3", + "@redux-devtools/instrument": "^2.1.0", + "@types/prop-types": "^15.7.5", + "lodash": "^4.17.21", + "prop-types": "^15.8.1" + }, + "peerDependencies": { + "react": "^0.14.9 || ^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0", + "react-redux": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0", + "redux": "^3.5.2 || ^4.0.0" + } + }, + "node_modules/@redux-devtools/inspector-monitor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@redux-devtools/inspector-monitor/-/inspector-monitor-4.0.0.tgz", + "integrity": "sha512-P0xXjv/N02dPQAaa+fSY2de6adFP+QdGaJZN+raWbWAoIB4SMYuxOlsEBWdclbTTpFBqYp0azpLTfy1vJroRPg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.22.10", + "@dnd-kit/core": "^6.0.8", + "@dnd-kit/modifiers": "^6.0.1", + "@dnd-kit/sortable": "^7.0.2", + "@dnd-kit/utilities": "^3.2.1", + "@types/lodash": "^4.14.197", "@types/prop-types": "^15.7.5", "@types/redux-devtools-themes": "^1.0.0", - "d3-state-visualizer": "^1.6.0", - "deepmerge": "^4.2.2", + "dateformat": "^5.0.3", + "hex-rgba": "^1.0.2", + "immutable": "^4.3.2", + "javascript-stringify": "^2.1.0", + "jsondiffpatch": "^0.5.0", + "jss": "^10.10.0", + "jss-preset-default": "^10.10.0", + "lodash.debounce": "^4.0.8", "prop-types": "^15.8.1", + "react-base16-styling": "^0.9.1", + "react-json-tree": "^0.18.0", "redux-devtools-themes": "^1.0.0" }, "peerDependencies": { - "@redux-devtools/core": "^3.7.0", - "@types/react": "^16.3.0 || ^17.0.0", - "react": "^16.3.0 || ^17.0.0", + "@redux-devtools/core": "^3.13.1", + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0", "redux": "^3.4.0 || ^4.0.0" } }, - "node_modules/@redux-devtools/cli": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@redux-devtools/cli/-/cli-1.0.7.tgz", - "integrity": "sha512-GJbOcqWWfYxeGdMfRp9x4UJa5aihjbzD6PTeStu3BpjSjoKV39R2kt+2e+zHV1viM3+mjurYQlqgXVbgac5GeQ==", + "node_modules/@redux-devtools/inspector-monitor-trace-tab": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@redux-devtools/inspector-monitor-trace-tab/-/inspector-monitor-trace-tab-2.0.0.tgz", + "integrity": "sha512-F5yS0cWZqcxNekZ+63HvJJ8S6uoY045uEJHA/IjuffHpZcTfZJoqs0uBAzPrg+y+TlUyGQ8hlT6H+sSJS1KHdA==", "dev": true, "dependencies": { - "@redux-devtools/app": "^2.1.3", - "@types/react": "^17.0.43", - "apollo-server-express": "^3.6.7", - "body-parser": "^1.20.0", + "@babel/code-frame": "^8.0.0-alpha.2", + "@babel/runtime": "^7.22.10", + "@types/chrome": "^0.0.243", + "anser": "^2.1.1", + "html-entities": "^2.4.0", + "path-browserify": "^1.0.1", + "redux-devtools-themes": "^1.0.0", + "source-map": "^0.5.7" + }, + "peerDependencies": { + "@redux-devtools/inspector-monitor": "^4.0.0", + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0", + "redux": "^3.4.0 || ^4.0.0" + } + }, + "node_modules/@redux-devtools/inspector-monitor-trace-tab/node_modules/@babel/code-frame": { + "version": "8.0.0-alpha.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-8.0.0-alpha.2.tgz", + "integrity": "sha512-uM1On1MxYaZDFVq1gPbGJx1Rf0N+lwlPOCBHZPS8RNVfP9CAG05xzViguK45e16n4Wo6V3WfaTkdmbuNusBnJQ==", + "dev": true, + "dependencies": { + "@babel/highlight": "^8.0.0-alpha.2", + "chalk": "^4.1.2" + }, + "engines": { + "node": "^16.20.0 || ^18.16.0 || >=20.0.0" + } + }, + "node_modules/@redux-devtools/inspector-monitor-trace-tab/node_modules/@babel/helper-validator-identifier": { + "version": "8.0.0-alpha.2", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.0-alpha.2.tgz", + "integrity": "sha512-us66RLKkCzBzNJ1TVAHe2euihYrYaXxbuQ7yJogKdBKBZ0R7gHEpB+e0ylaMGsmLzqlpPUyWWcz3OPTCsq1FDw==", + "dev": true, + "engines": { + "node": "^16.20.0 || ^18.16.0 || >=20.0.0" + } + }, + "node_modules/@redux-devtools/inspector-monitor-trace-tab/node_modules/@babel/highlight": { + "version": "8.0.0-alpha.2", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-8.0.0-alpha.2.tgz", + "integrity": "sha512-V+G3EzQx895Dqbu4xroJo6kMLK6YQJLrMLGj2zjJShA5HNuBCTGgwBhL1BA8jixOfFA5/110QoCugKC39oWB8w==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^8.0.0-alpha.2", "chalk": "^4.1.2", - "cors": "^2.8.5", - "cross-spawn": "^7.0.3", - "electron": "^18.0.1", - "express": "^4.17.3", - "getport": "^0.1.0", - "graphql": "^16.3.0", - "knex": "^0.95.15", - "lodash": "^4.17.21", - "minimist": "^1.2.6", - "morgan": "^1.10.0", - "open": "^8.4.0", - "react": "^17.0.2", - "react-dom": "^17.0.2", - "react-is": "^17.0.2", - "semver": "^7.3.5", - "socketcluster": "^14.4.2", - "sqlite3": "^5.0.2", - "styled-components": "^5.3.5", - "uuid": "^8.3.2" + "js-tokens": "^8.0.0" }, - "bin": { - "redux-devtools": "bin/redux-devtools.js" + "engines": { + "node": "^16.20.0 || ^18.16.0 || >=20.0.0" + } + }, + "node_modules/@redux-devtools/inspector-monitor-trace-tab/node_modules/@babel/runtime": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.15.tgz", + "integrity": "sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.14.0" }, "engines": { - "node": ">=14.15.0" + "node": ">=6.9.0" } }, - "node_modules/@redux-devtools/cli/node_modules/ansi-styles": { + "node_modules/@redux-devtools/inspector-monitor-trace-tab/node_modules/@types/chrome": { + "version": "0.0.243", + "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.243.tgz", + "integrity": "sha512-4PHv0kxxxpZFHWPBiJJ9TWH8kbx0567j1b2djnhpJjpiSGNI7UKkz7dSEECBtQ0B3N5nQTMwSB/5IopkWGAbEA==", + "dev": true, + "dependencies": { + "@types/filesystem": "*", + "@types/har-format": "*" + } + }, + "node_modules/@redux-devtools/inspector-monitor-trace-tab/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -4267,7 +4921,7 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@redux-devtools/cli/node_modules/chalk": { + "node_modules/@redux-devtools/inspector-monitor-trace-tab/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", @@ -4283,7 +4937,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@redux-devtools/cli/node_modules/color-convert": { + "node_modules/@redux-devtools/inspector-monitor-trace-tab/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", @@ -4295,13 +4949,13 @@ "node": ">=7.0.0" } }, - "node_modules/@redux-devtools/cli/node_modules/color-name": { + "node_modules/@redux-devtools/inspector-monitor-trace-tab/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/@redux-devtools/cli/node_modules/has-flag": { + "node_modules/@redux-devtools/inspector-monitor-trace-tab/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", @@ -4310,28 +4964,19 @@ "node": ">=8" } }, - "node_modules/@redux-devtools/cli/node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "node_modules/@redux-devtools/inspector-monitor-trace-tab/node_modules/js-tokens": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-8.0.2.tgz", + "integrity": "sha512-Olnt+V7xYdvGze9YTbGFZIfQXuGV4R3nQwwl8BrtgaPE/wq8UFpUHWuTNc05saowhSr1ZO6tx+V6RjE9D5YQog==", "dev": true }, - "node_modules/@redux-devtools/cli/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } + "node_modules/@redux-devtools/inspector-monitor-trace-tab/node_modules/regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==", + "dev": true }, - "node_modules/@redux-devtools/cli/node_modules/supports-color": { + "node_modules/@redux-devtools/inspector-monitor-trace-tab/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", @@ -4343,112 +4988,23 @@ "node": ">=8" } }, - "node_modules/@redux-devtools/core": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/@redux-devtools/core/-/core-3.12.0.tgz", - "integrity": "sha512-AFk8kYmU9IbyXftN6M9DzX2CEumpuV6nctka1O8/4BP1+mW5PK3v5MzUghx6zSlaAtK1nSQ387QSpN9bUaYs+Q==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.17.9", - "@redux-devtools/instrument": "^2.1.0", - "@types/prop-types": "^15.7.5", - "lodash": "^4.17.21", - "prop-types": "^15.8.1" - }, - "peerDependencies": { - "react": "^0.14.9 || ^15.3.0 || ^16.0.0 || ^17.0.0", - "react-redux": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0", - "redux": "^3.5.2 || ^4.0.0" - } - }, - "node_modules/@redux-devtools/inspector-monitor": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@redux-devtools/inspector-monitor/-/inspector-monitor-2.1.2.tgz", - "integrity": "sha512-1AE1d9DYIZJpIty6EGUM+OdcKwuZGLf8K5C56JCuv25Quhwe+xsOnKFSW8f8m/GLvOcSq75VzvJMAnz0Rv40gA==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.17.9", - "@types/dragula": "^3.7.1", - "@types/lodash": "^4.14.181", - "@types/prop-types": "^15.7.5", - "dateformat": "^4.6.3", - "hex-rgba": "^1.0.2", - "immutable": "^4.0.0", - "javascript-stringify": "^2.1.0", - "jsondiffpatch": "^0.4.1", - "jss": "^10.9.0", - "jss-preset-default": "^10.9.0", - "lodash.debounce": "^4.0.8", - "prop-types": "^15.8.1", - "react-base16-styling": "^0.9.1", - "react-dragula": "^1.1.17", - "react-json-tree": "^0.16.1", - "redux-devtools-themes": "^1.0.0" - }, - "peerDependencies": { - "@redux-devtools/core": "^3.7.0", - "@types/react": "^16.3.0 || ^17.0.0", - "react": "^16.3.0 || ^17.0.0", - "redux": "^3.4.0 || ^4.0.0" - } - }, - "node_modules/@redux-devtools/inspector-monitor-test-tab": { - "version": "0.8.6", - "resolved": "https://registry.npmjs.org/@redux-devtools/inspector-monitor-test-tab/-/inspector-monitor-test-tab-0.8.6.tgz", - "integrity": "sha512-svIWJ7nX9JXOhwnTE5JS9fNNl8+2VmuySWZmfTMyTTkQA5xMSUVRH+dV8XFK9ekPLN1CLfHO9U+IF87rrKWqdQ==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.17.9", - "@redux-devtools/ui": "^1.2.1", - "@types/prop-types": "^15.7.5", - "es6template": "^1.0.5", - "javascript-stringify": "^2.1.0", - "jsan": "^3.1.14", - "object-path": "^0.11.8", - "prop-types": "^15.8.1", - "react-icons": "^4.3.1", - "simple-diff": "^1.6.0" - }, - "peerDependencies": { - "@redux-devtools/inspector-monitor": "^2.0.0", - "@types/react": "^16.3.0 || ^17.0.0", - "@types/styled-components": "^5.1.25", - "react": "^16.3.0 || ^17.0.0", - "redux": "^3.4.0 || ^4.0.0", - "styled-components": "^5.3.5" - } - }, - "node_modules/@redux-devtools/inspector-monitor-trace-tab": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/@redux-devtools/inspector-monitor-trace-tab/-/inspector-monitor-trace-tab-0.3.4.tgz", - "integrity": "sha512-ZI61gLDSol+xG6v8yBHKM1e22Oc4E8MIInAJEy8ZECyLdsilL7nPpVkod4XRZ7s0D4CRbkqfdvYSyqV9xCSr3A==", + "node_modules/@redux-devtools/inspector-monitor/node_modules/@babel/runtime": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.15.tgz", + "integrity": "sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.16.7", - "@babel/runtime": "^7.17.9", - "@types/chrome": "^0.0.181", - "anser": "^2.1.1", - "html-entities": "^2.3.3", - "path-browserify": "^1.0.1", - "redux-devtools-themes": "^1.0.0", - "source-map": "^0.5.7" + "regenerator-runtime": "^0.14.0" }, - "peerDependencies": { - "@redux-devtools/inspector-monitor": "^2.0.0", - "@types/react": "^16.3.0 || ^17.0.0", - "react": "^16.3.0 || ^17.0.0", - "redux": "^3.4.0 || ^4.0.0" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@redux-devtools/inspector-monitor-trace-tab/node_modules/@types/chrome": { - "version": "0.0.181", - "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.181.tgz", - "integrity": "sha512-34Ln9YVVC8a195ruqWeaty3pouFdCLr9L5kPcbRflQcxnbXQnHor9uETof8OhDf8JLDytSRDiuDsRXYQYQ+9FA==", - "dev": true, - "dependencies": { - "@types/filesystem": "*", - "@types/har-format": "*" - } + "node_modules/@redux-devtools/inspector-monitor/node_modules/regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==", + "dev": true }, "node_modules/@redux-devtools/instrument": { "version": "2.1.0", @@ -4464,107 +5020,151 @@ } }, "node_modules/@redux-devtools/log-monitor": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@redux-devtools/log-monitor/-/log-monitor-3.1.1.tgz", - "integrity": "sha512-d3Wm7z2Z/QGWVrmQQvmd077fPvWO7wbyrUbasvjCaUY45VAJb9Z26dYHI1rNUhcGAULS6oGZII8/s+E5pTWTFA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@redux-devtools/log-monitor/-/log-monitor-4.0.2.tgz", + "integrity": "sha512-BaTAwadm/XzRfnN2+8t4mwdbOILWfwsvMfVPn5OuE+NFaUG9pDKGoHRPCdMBaRdggDqqb5nlMgRCVdHzYftgVw==", "dev": true, "dependencies": { - "@babel/runtime": "^7.17.9", - "@types/lodash.debounce": "^4.0.6", + "@babel/runtime": "^7.20.6", + "@types/lodash.debounce": "^4.0.7", "@types/prop-types": "^15.7.5", "@types/redux-devtools-themes": "^1.0.0", "lodash.debounce": "^4.0.8", "prop-types": "^15.8.1", - "react-json-tree": "^0.16.1", + "react-json-tree": "^0.18.0", "redux-devtools-themes": "^1.0.0" }, "peerDependencies": { - "@redux-devtools/core": "^3.7.0", - "@types/react": "^16.3.0 || ^17.0.0", - "react": "^16.3.0 || ^17.0.0", + "@redux-devtools/core": "^3.13.1", + "@types/react": "^16.3.0 || ^17.0.0 || ^18.0.0", + "react": "^16.3.0 || ^17.0.0 || ^18.0.0", "redux": "^3.4.0 || ^4.0.0" } }, "node_modules/@redux-devtools/rtk-query-monitor": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@redux-devtools/rtk-query-monitor/-/rtk-query-monitor-2.1.2.tgz", - "integrity": "sha512-t1kaG3b/2QKUrSqc+3t1y/PgiL8MM0YxMzC/X4A3WzFDCXJkxpXnY5OUxDqzgZ+RNbHGevUeu8Nq1zYAx4U+rw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@redux-devtools/rtk-query-monitor/-/rtk-query-monitor-3.1.1.tgz", + "integrity": "sha512-A7kHvU0SY6iQeaLHq+Kcq8a4Z/NhLcwQ/DluP/E+6UU/OXbEtoPK7304qdFQtVG7HY7owdKQiJZrYns5Mi7ysw==", "dev": true, "dependencies": { - "@babel/runtime": "^7.17.9", - "@redux-devtools/ui": "^1.2.1", + "@babel/runtime": "^7.20.6", + "@redux-devtools/ui": "^1.3.0", + "@types/lodash": "^4.14.191", "@types/prop-types": "^15.7.5", "@types/redux-devtools-themes": "^1.0.0", "hex-rgba": "^1.0.2", - "immutable": "^4.0.0", - "jss": "^10.9.0", - "jss-preset-default": "^10.9.0", + "immutable": "^4.1.0", + "jss": "^10.9.2", + "jss-preset-default": "^10.9.2", "lodash.debounce": "^4.0.8", "prop-types": "^15.8.1", "react-base16-styling": "^0.9.1", - "react-json-tree": "^0.16.1", + "react-json-tree": "^0.18.0", "redux-devtools-themes": "^1.0.0" }, "peerDependencies": { - "@redux-devtools/core": "^3.7.0", - "@reduxjs/toolkit": "^1.8.1", - "@types/react": "^16.3.0 || ^17.0.0", - "@types/styled-components": "^5.1.25", - "react": "^16.3.0 || ^17.0.0", + "@redux-devtools/core": "^3.13.1", + "@reduxjs/toolkit": "^1.9.1", + "@types/react": "^16.3.0 || ^17.0.0 || ^18.0.0", + "@types/styled-components": "^5.1.26", + "react": "^16.3.0 || ^17.0.0 || ^18.0.0", "redux": "^3.4.0 || ^4.0.0", - "styled-components": "^5.3.5" + "styled-components": "^5.3.6" } }, "node_modules/@redux-devtools/slider-monitor": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@redux-devtools/slider-monitor/-/slider-monitor-3.1.2.tgz", - "integrity": "sha512-QXQCP+ikmInJs4DLc8wISfBCSzTSxQq7yRARPrCtcT+LnJMB99GFtwUK28GTOe0kKgs7cfDIvgScvv2H5zhggA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@redux-devtools/slider-monitor/-/slider-monitor-4.0.1.tgz", + "integrity": "sha512-pjHPYLG91GLRQVcNAIu3Colc6nIqR4mSQYN1MWUqP8nTAlkP1ihEN44KXxcnTUEzuSLRYm1YW3jsI5p4q3aXZA==", "dev": true, "dependencies": { - "@babel/runtime": "^7.17.9", - "@redux-devtools/ui": "^1.2.1", + "@babel/runtime": "^7.18.3", + "@redux-devtools/ui": "^1.3.0", "@types/prop-types": "^15.7.5", "@types/redux-devtools-themes": "^1.0.0", "prop-types": "^15.8.1", "redux-devtools-themes": "^1.0.0" }, "peerDependencies": { - "@redux-devtools/core": "^3.7.0", - "@types/react": "^16.3.0 || ^17.0.0", + "@redux-devtools/core": "^3.13.1", + "@types/react": "^16.3.0 || ^17.0.0 || ^18.0.0", "@types/styled-components": "^5.1.25", - "react": "^16.3.0 || ^17.0.0", + "react": "^16.3.0 || ^17.0.0 || ^18.0.0", "redux": "^3.4.0 || ^4.0.0", "styled-components": "^5.3.5" } }, "node_modules/@redux-devtools/ui": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@redux-devtools/ui/-/ui-1.2.2.tgz", - "integrity": "sha512-PxfUZSIsecltHenn/MOxetZwOR9AdgFWiWxiFxjt4bKF1tPT8WkJhgrHsp39Oyg48vgZYY2nRXO+REIqb7HyDw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@redux-devtools/ui/-/ui-1.3.0.tgz", + "integrity": "sha512-fj4zyQ08U2DnJAGL7xa1mqlQnBMbrlS1P/HI10Wz57+dgqP9fIzfKymtLEGOnJHZNkPpPNXG04FH4+AQQ1v3kw==", "dev": true, "dependencies": { - "@babel/runtime": "^7.16.7", - "@rjsf/core": "^3.2.1", + "@babel/runtime": "^7.18.3", + "@rjsf/core": "^4.2.0", "@types/base16": "^1.0.2", "@types/codemirror": "^5.60.5", - "@types/json-schema": "^7.0.9", - "@types/prop-types": "^15.7.4", + "@types/json-schema": "^7.0.11", + "@types/prop-types": "^15.7.5", "@types/redux-devtools-themes": "^1.0.0", "@types/simple-element-resize-detector": "^1.3.0", "base16": "^1.0.0", - "codemirror": "^5.65.1", - "color": "^3.2.1", + "codemirror": "^5.65.4", + "color": "^4.2.3", "prop-types": "^15.8.1", "react-icons": "^4.3.1", - "react-select": "^5.2.2", + "react-select": "^5.3.2", "redux-devtools-themes": "^1.0.0", "simple-element-resize-detector": "^1.3.0" }, "peerDependencies": { - "@types/react": "^16.3.0 || ^17.0.0", - "@types/styled-components": "^5.1.21", - "react": "^16.3.0 || ^17.0.0", - "styled-components": "^5.3.3" + "@types/react": "^16.3.0 || ^17.0.0 || ^18.0.0", + "@types/styled-components": "^5.1.25", + "react": "^16.3.0 || ^17.0.0 || ^18.0.0", + "styled-components": "^5.3.5" + } + }, + "node_modules/@redux-devtools/ui/node_modules/memoize-one": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==", + "dev": true + }, + "node_modules/@redux-devtools/ui/node_modules/react-select": { + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.7.4.tgz", + "integrity": "sha512-NhuE56X+p9QDFh4BgeygHFIvJJszO1i1KSkg/JPcIJrbovyRtI+GuOEa4XzFCEpZRAEoEI8u/cAHK+jG/PgUzQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.12.0", + "@emotion/cache": "^11.4.0", + "@emotion/react": "^11.8.1", + "@floating-ui/dom": "^1.0.1", + "@types/react-transition-group": "^4.4.0", + "memoize-one": "^6.0.0", + "prop-types": "^15.6.0", + "react-transition-group": "^4.3.0", + "use-isomorphic-layout-effect": "^1.1.2" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@redux-devtools/ui/node_modules/react-select/node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" } }, "node_modules/@redux-saga/core": { @@ -4619,19 +5219,19 @@ "integrity": "sha512-1dgmkh+3so0+LlBWRhGA33ua4MYr7tUOj+a9Si28vUi0IUFNbff1T3sgpeDJI/LaC75bBYnQ0A3wXjn0OrRNBA==" }, "node_modules/@reduxjs/toolkit": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.8.1.tgz", - "integrity": "sha512-Q6mzbTpO9nOYRnkwpDlFOAbQnd3g7zj7CtHAZWz5SzE5lcV97Tf8f3SzOO8BoPOMYBFgfZaqTUZqgGu+a0+Fng==", + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.9.5.tgz", + "integrity": "sha512-Rt97jHmfTeaxL4swLRNPD/zV4OxTes4la07Xc4hetpUW/vc75t5m1ANyxG6ymnEQ2FsLQsoMlYB2vV1sO3m8tQ==", "dev": true, "dependencies": { - "immer": "^9.0.7", - "redux": "^4.1.2", - "redux-thunk": "^2.4.1", - "reselect": "^4.1.5" + "immer": "^9.0.21", + "redux": "^4.2.1", + "redux-thunk": "^2.4.2", + "reselect": "^4.1.8" }, "peerDependencies": { "react": "^16.9.0 || ^17.0.0 || ^18", - "react-redux": "^7.2.1 || ^8.0.0-beta" + "react-redux": "^7.2.1 || ^8.0.2" }, "peerDependenciesMeta": { "react": { @@ -4642,6 +5242,21 @@ } } }, + "node_modules/@reduxjs/toolkit/node_modules/redux": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz", + "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.9.2" + } + }, + "node_modules/@reduxjs/toolkit/node_modules/reselect": { + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.8.tgz", + "integrity": "sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ==", + "dev": true + }, "node_modules/@remix-run/router": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.0.4.tgz", @@ -4651,9 +5266,9 @@ } }, "node_modules/@rjsf/core": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@rjsf/core/-/core-3.2.1.tgz", - "integrity": "sha512-dk8ihvxFbcuIwU7G+HiJbFgwyIvaumPt5g5zfnuC26mwTUPlaDGFXKK2yITp8tJ3+hcwS5zEXtAN9wUkfuM4jA==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/@rjsf/core/-/core-4.2.3.tgz", + "integrity": "sha512-dRXhd1Tac/9OcG0VDrYDF2boNTyKINEEITEtJ4L1Yce2iMVk66U52BhWKIFp/WXDM27vwnOfwQo4NwGiqeQeHw==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.7", @@ -4662,21 +5277,22 @@ "json-schema-merge-allof": "^0.6.0", "jsonpointer": "^5.0.0", "lodash": "^4.17.15", + "lodash-es": "^4.17.15", "nanoid": "^3.1.23", "prop-types": "^15.7.2", - "react-is": "^16.9.0" + "react-is": "16.9.0" }, "engines": { "node": ">=12" }, "peerDependencies": { - "react": ">=16" + "react": ">=16 || >=17" } }, "node_modules/@rjsf/core/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "version": "16.9.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.9.0.tgz", + "integrity": "sha512-tJBzzzIgnnRfEm046qRcURvwQnZVXmuCbscxUO5RWrGTXpon2d4c8mI0D8WE6ydVIm29JiLB6+RslkIvym9Rjw==", "dev": true }, "node_modules/@rushstack/eslint-patch": { @@ -4734,12 +5350,15 @@ "dev": true }, "node_modules/@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", "dev": true, "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" } }, "node_modules/@sinonjs/commons": { @@ -4761,15 +5380,15 @@ } }, "node_modules/@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", "dev": true, "dependencies": { - "defer-to-connect": "^1.0.1" + "defer-to-connect": "^2.0.0" }, "engines": { - "node": ">=6" + "node": ">=10" } }, "node_modules/@testim/chrome-version": { @@ -5053,15 +5672,6 @@ "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", "dev": true }, - "node_modules/@types/accepts": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.5.tgz", - "integrity": "sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/argon2-browser": { "version": "1.18.1", "resolved": "https://registry.npmjs.org/@types/argon2-browser/-/argon2-browser-1.18.1.tgz", @@ -5176,9 +5786,9 @@ } }, "node_modules/@types/codemirror": { - "version": "5.60.5", - "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-5.60.5.tgz", - "integrity": "sha512-TiECZmm8St5YxjFUp64LK0c8WU5bxMDt9YaAek1UqUb9swrSCoJhh92fWu1p3mTEqlHjhB5sY7OFBhWroJXZVg==", + "version": "5.60.10", + "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-5.60.10.tgz", + "integrity": "sha512-ZTA3teiCWKT8HUUofqlGPlShu5ojdIajizsS0HpH6GL0/iEdjRt7fXbCLHHqKYP5k7dC/HnnWIjZAiELUwBdjQ==", "dev": true, "dependencies": { "@types/tern": "*" @@ -5203,24 +5813,259 @@ "@types/node": "*" } }, - "node_modules/@types/cors": { - "version": "2.8.12", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", - "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==", + "node_modules/@types/d3": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.0.tgz", + "integrity": "sha512-jIfNVK0ZlxcuRDKtRS/SypEyOQ6UHaFQBKv032X45VvxSJ6Yi5G9behy9h6tNTHTDGh5Vq+KbmBjUWLgY4meCA==", + "dev": true, + "dependencies": { + "@types/d3-array": "*", + "@types/d3-axis": "*", + "@types/d3-brush": "*", + "@types/d3-chord": "*", + "@types/d3-color": "*", + "@types/d3-contour": "*", + "@types/d3-delaunay": "*", + "@types/d3-dispatch": "*", + "@types/d3-drag": "*", + "@types/d3-dsv": "*", + "@types/d3-ease": "*", + "@types/d3-fetch": "*", + "@types/d3-force": "*", + "@types/d3-format": "*", + "@types/d3-geo": "*", + "@types/d3-hierarchy": "*", + "@types/d3-interpolate": "*", + "@types/d3-path": "*", + "@types/d3-polygon": "*", + "@types/d3-quadtree": "*", + "@types/d3-random": "*", + "@types/d3-scale": "*", + "@types/d3-scale-chromatic": "*", + "@types/d3-selection": "*", + "@types/d3-shape": "*", + "@types/d3-time": "*", + "@types/d3-time-format": "*", + "@types/d3-timer": "*", + "@types/d3-transition": "*", + "@types/d3-zoom": "*" + } + }, + "node_modules/@types/d3-array": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.0.7.tgz", + "integrity": "sha512-4/Q0FckQ8TBjsB0VdGFemJOG8BLXUB2KKlL0VmZ+eOYeOnTb/wDRQqYWpBmQ6IlvWkXwkYiot+n9Px2aTJ7zGQ==", "dev": true }, - "node_modules/@types/d3": { - "version": "3.5.47", - "resolved": "https://registry.npmjs.org/@types/d3/-/d3-3.5.47.tgz", - "integrity": "sha512-VkWIQoZXLFdcBGe5pdBKJmTU3fmpXvo/KV6ixvTzOMl1yJ2hbTXpfvsziag0kcaerPDwas2T0vxojwQG3YwivQ==", + "node_modules/@types/d3-axis": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.3.tgz", + "integrity": "sha512-SE3x/pLO/+GIHH17mvs1uUVPkZ3bHquGzvZpPAh4yadRy71J93MJBpgK/xY8l9gT28yTN1g9v3HfGSFeBMmwZw==", + "dev": true, + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-brush": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.3.tgz", + "integrity": "sha512-MQ1/M/B5ifTScHSe5koNkhxn2mhUPqXjGuKjjVYckplAPjP9t2I2sZafb/YVHDwhoXWZoSav+Q726eIbN3qprA==", + "dev": true, + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-chord": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.3.tgz", + "integrity": "sha512-keuSRwO02c7PBV3JMWuctIfdeJrVFI7RpzouehvBWL4/GGUB3PBNg/9ZKPZAgJphzmS2v2+7vr7BGDQw1CAulw==", "dev": true }, - "node_modules/@types/dragula": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@types/dragula/-/dragula-3.7.1.tgz", - "integrity": "sha512-hbMEG5+wZEwV6NK4cbexldLWEvYNox8PywM9ICIeCTM99g8nJxccE3C8vvl66TCfnN+R8ioNdOrHWJT+5X0pvw==", + "node_modules/@types/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-HKuicPHJuvPgCD+np6Se9MQvS6OCbJmOjGvylzMJRlDwUXjKTTXs6Pwgk79O09Vj/ho3u1ofXnhFOaEWWPrlwA==", "dev": true }, + "node_modules/@types/d3-contour": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.3.tgz", + "integrity": "sha512-x7G/tdDZt4m09XZnG2SutbIuQqmkNYqR9uhDMdPlpJbcwepkEjEWG29euFcgVA1k6cn92CHdDL9Z+fOnxnbVQw==", + "dev": true, + "dependencies": { + "@types/d3-array": "*", + "@types/geojson": "*" + } + }, + "node_modules/@types/d3-delaunay": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.1.tgz", + "integrity": "sha512-tLxQ2sfT0p6sxdG75c6f/ekqxjyYR0+LwPrsO1mbC9YDBzPJhs2HbJJRrn8Ez1DBoHRo2yx7YEATI+8V1nGMnQ==", + "dev": true + }, + "node_modules/@types/d3-dispatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.3.tgz", + "integrity": "sha512-Df7KW3Re7G6cIpIhQtqHin8yUxUHYAqiE41ffopbmU5+FifYUNV7RVyTg8rQdkEagg83m14QtS8InvNb95Zqug==", + "dev": true + }, + "node_modules/@types/d3-drag": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.3.tgz", + "integrity": "sha512-82AuQMpBQjuXeIX4tjCYfWjpm3g7aGCfx6dFlxX2JlRaiME/QWcHzBsINl7gbHCODA2anPYlL31/Trj/UnjK9A==", + "dev": true, + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-dsv": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.2.tgz", + "integrity": "sha512-DooW5AOkj4AGmseVvbwHvwM/Ltu0Ks0WrhG6r5FG9riHT5oUUTHz6xHsHqJSVU8ZmPkOqlUEY2obS5C9oCIi2g==", + "dev": true + }, + "node_modules/@types/d3-ease": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.0.tgz", + "integrity": "sha512-aMo4eaAOijJjA6uU+GIeW018dvy9+oH5Y2VPPzjjfxevvGQ/oRDs+tfYC9b50Q4BygRR8yE2QCLsrT0WtAVseA==", + "dev": true + }, + "node_modules/@types/d3-fetch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.3.tgz", + "integrity": "sha512-/EsDKRiQkby3Z/8/AiZq8bsuLDo/tYHnNIZkUpSeEHWV7fHUl6QFBjvMPbhkKGk9jZutzfOkGygCV7eR/MkcXA==", + "dev": true, + "dependencies": { + "@types/d3-dsv": "*" + } + }, + "node_modules/@types/d3-force": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.5.tgz", + "integrity": "sha512-EGG+IWx93ESSXBwfh/5uPuR9Hp8M6o6qEGU7bBQslxCvrdUBQZha/EFpu/VMdLU4B0y4Oe4h175nSm7p9uqFug==", + "dev": true + }, + "node_modules/@types/d3-format": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.1.tgz", + "integrity": "sha512-5KY70ifCCzorkLuIkDe0Z9YTf9RR2CjBX1iaJG+rgM/cPP+sO+q9YdQ9WdhQcgPj1EQiJ2/0+yUkkziTG6Lubg==", + "dev": true + }, + "node_modules/@types/d3-geo": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.0.4.tgz", + "integrity": "sha512-kmUK8rVVIBPKJ1/v36bk2aSgwRj2N/ZkjDT+FkMT5pgedZoPlyhaG62J+9EgNIgUXE6IIL0b7bkLxCzhE6U4VQ==", + "dev": true, + "dependencies": { + "@types/geojson": "*" + } + }, + "node_modules/@types/d3-hierarchy": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.3.tgz", + "integrity": "sha512-GpSK308Xj+HeLvogfEc7QsCOcIxkDwLhFYnOoohosEzOqv7/agxwvJER1v/kTC+CY1nfazR0F7gnHo7GE41/fw==", + "dev": true + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-jx5leotSeac3jr0RePOH1KdR9rISG91QIE4Q2PYTu4OymLTZfA3SrnURSLzKH48HmXVUru50b8nje4E79oQSQw==", + "dev": true, + "dependencies": { + "@types/d3-color": "*" + } + }, + "node_modules/@types/d3-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.0.0.tgz", + "integrity": "sha512-0g/A+mZXgFkQxN3HniRDbXMN79K3CdTpLsevj+PXiTcb2hVyvkZUBg37StmgCQkaD84cUJ4uaDAWq7UJOQy2Tg==", + "dev": true + }, + "node_modules/@types/d3-polygon": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.0.tgz", + "integrity": "sha512-D49z4DyzTKXM0sGKVqiTDTYr+DHg/uxsiWDAkNrwXYuiZVd9o9wXZIo+YsHkifOiyBkmSWlEngHCQme54/hnHw==", + "dev": true + }, + "node_modules/@types/d3-quadtree": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.2.tgz", + "integrity": "sha512-QNcK8Jguvc8lU+4OfeNx+qnVy7c0VrDJ+CCVFS9srBo2GL9Y18CnIxBdTF3v38flrGy5s1YggcoAiu6s4fLQIw==", + "dev": true + }, + "node_modules/@types/d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-IIE6YTekGczpLYo/HehAy3JGF1ty7+usI97LqraNa8IiDur+L44d0VOjAvFQWJVdZOJHukUJw+ZdZBlgeUsHOQ==", + "dev": true + }, + "node_modules/@types/d3-scale": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.4.tgz", + "integrity": "sha512-eq1ZeTj0yr72L8MQk6N6heP603ubnywSDRfNpi5enouR112HzGLS6RIvExCzZTraFF4HdzNpJMwA/zGiMoHUUw==", + "dev": true, + "dependencies": { + "@types/d3-time": "*" + } + }, + "node_modules/@types/d3-scale-chromatic": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", + "integrity": "sha512-dsoJGEIShosKVRBZB0Vo3C8nqSDqVGujJU6tPznsBJxNJNwMF8utmS83nvCBKQYPpjCzaaHcrf66iTRpZosLPw==", + "dev": true + }, + "node_modules/@types/d3-selection": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.6.tgz", + "integrity": "sha512-2ACr96USZVjXR9KMD9IWi1Epo4rSDKnUtYn6q2SPhYxykvXTw9vR77lkFNruXVg4i1tzQtBxeDMx0oNvJWbF1w==", + "dev": true + }, + "node_modules/@types/d3-shape": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.2.tgz", + "integrity": "sha512-NN4CXr3qeOUNyK5WasVUV8NCSAx/CRVcwcb0BuuS1PiTqwIm6ABi1SyasLZ/vsVCFDArF+W4QiGzSry1eKYQ7w==", + "dev": true, + "dependencies": { + "@types/d3-path": "*" + } + }, + "node_modules/@types/d3-time": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.0.tgz", + "integrity": "sha512-sZLCdHvBUcNby1cB6Fd3ZBrABbjz3v1Vm90nysCQ6Vt7vd6e/h9Lt7SiJUoEX0l4Dzc7P5llKyhqSi1ycSf1Hg==", + "dev": true + }, + "node_modules/@types/d3-time-format": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.0.tgz", + "integrity": "sha512-yjfBUe6DJBsDin2BMIulhSHmr5qNR5Pxs17+oW4DoVPyVIXZ+m6bs7j1UVKP08Emv6jRmYrYqxYzO63mQxy1rw==", + "dev": true + }, + "node_modules/@types/d3-timer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.0.tgz", + "integrity": "sha512-HNB/9GHqu7Fo8AQiugyJbv6ZxYz58wef0esl4Mv828w1ZKpAshw/uFWVDUcIB9KKFeFKoxS3cHY07FFgtTRZ1g==", + "dev": true + }, + "node_modules/@types/d3-transition": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.4.tgz", + "integrity": "sha512-512a4uCOjUzsebydItSXsHrPeQblCVk8IKjqCUmrlvBWkkVh3donTTxmURDo1YPwIVDh5YVwCAO6gR4sgimCPQ==", + "dev": true, + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-zoom": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.4.tgz", + "integrity": "sha512-cqkuY1ah9ZQre2POqjSLcM8g40UVya/qwEUrNYP2/rCVljbmqKCVcv+ebvwhlI5azIbSEL7m+os6n+WlYA43aA==", + "dev": true, + "dependencies": { + "@types/d3-interpolate": "*", + "@types/d3-selection": "*" + } + }, "node_modules/@types/elliptic": { "version": "6.4.14", "resolved": "https://registry.npmjs.org/@types/elliptic/-/elliptic-6.4.14.tgz", @@ -5278,14 +6123,15 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "4.17.28", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", - "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", + "version": "4.17.36", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.36.tgz", + "integrity": "sha512-zbivROJ0ZqLAtMzgzIUC4oNqDG9iF0lSsAqpOD9kbs5xcIM3dTiyuHvBc7R8MtWBp3AAWGaovJa+wzWPjLYW7Q==", "dev": true, "dependencies": { "@types/node": "*", "@types/qs": "*", - "@types/range-parser": "*" + "@types/range-parser": "*", + "@types/send": "*" } }, "node_modules/@types/facepaint": { @@ -5309,6 +6155,12 @@ "integrity": "sha512-BsPXH/irW0ht0Ji6iw/jJaK8Lj3FJemon2gvEqHKpCdDCeemHa+rI3WBGq5z7cDMZgoLjY40oninGxqk+8NzNQ==", "dev": true }, + "node_modules/@types/geojson": { + "version": "7946.0.10", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.10.tgz", + "integrity": "sha512-Nmh0K3iWQJzniTuPRcJn5hxXkfB1T1pgB89SBig5PlJQU5yocazeu4jATJlaA0GYFKWMqDdvYemoSnF2pXgLVA==", + "dev": true + }, "node_modules/@types/graceful-fs": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", @@ -5447,9 +6299,9 @@ } }, "node_modules/@types/lodash": { - "version": "4.14.182", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.182.tgz", - "integrity": "sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q==" + "version": "4.14.198", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.198.tgz", + "integrity": "sha512-trNJ/vtMZYMLhfN45uLq4ShQSw0/S7xCTLLVM+WM1rmFpba/VS42jVUgaO3w/NOLiWR/09lnYk0yMaA/atdIsg==" }, "node_modules/@types/lodash.debounce": { "version": "4.0.7", @@ -5487,9 +6339,33 @@ "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==" }, "node_modules/@types/node": { - "version": "17.0.33", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.33.tgz", - "integrity": "sha512-miWq2m2FiQZmaHfdZNcbpp9PuXg34W5JZ5CrJ/BaS70VuhoJENBEQybeiYSaPBRNq6KQGnjfEnc/F3PN++D+XQ==" + "version": "18.17.15", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.17.15.tgz", + "integrity": "sha512-2yrWpBk32tvV/JAd3HNHWuZn/VDN1P+72hWirHnvsvTGSqbANi+kSeuQR9yAHnbvaBvHDsoTdXV0Fe+iRtHLKA==" + }, + "node_modules/@types/node-fetch": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.4.tgz", + "integrity": "sha512-1ZX9fcN4Rvkvgv4E6PAY5WXUFWFcRWxZa3EW83UjycOB9ljJCedb2CupIP4RZMEwF/M3eTcCihbBRgwtGbg5Rg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "form-data": "^3.0.0" + } + }, + "node_modules/@types/node-fetch/node_modules/form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } }, "node_modules/@types/parse-json": { "version": "4.0.0", @@ -5539,18 +6415,6 @@ "@types/react": "^17" } }, - "node_modules/@types/react-redux": { - "version": "7.1.24", - "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.24.tgz", - "integrity": "sha512-7FkurKcS1k0FHZEtdbbgN8Oc6b+stGSfZYjQGicofJ0j4U0qIn/jaSvnP2pLwZKiai3/17xqqxkkrxTgN8UNbQ==", - "dev": true, - "dependencies": { - "@types/hoist-non-react-statics": "^3.3.0", - "@types/react": "*", - "hoist-non-react-statics": "^3.3.0", - "redux": "^4.0.0" - } - }, "node_modules/@types/react-test-renderer": { "version": "18.0.0", "resolved": "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-18.0.0.tgz", @@ -5561,9 +6425,9 @@ } }, "node_modules/@types/react-transition-group": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.4.tgz", - "integrity": "sha512-7gAPz7anVK5xzbeQW9wFBDg7G++aPLAFY0QaSMOou9rJZpbuI58WAuJrgu+qR92l61grlnCUe7AFX8KGahAgug==", + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.6.tgz", + "integrity": "sha512-VnCdSxfcm08KjsJVQcfBmhEQAPnLB8G08hAxn39azX1qYBQ/5RVQuoHuKIcfKOdncuaUvEpFKFzEvbtIMsfVew==", "dev": true, "dependencies": { "@types/react": "*" @@ -5616,6 +6480,16 @@ "@types/ws": "*" } }, + "node_modules/@types/send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", + "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, "node_modules/@types/serve-index": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", @@ -6811,6 +7685,45 @@ "node": ">=6.0" } }, + "node_modules/ag-auth": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ag-auth/-/ag-auth-2.0.0.tgz", + "integrity": "sha512-gk5BgWzijPUaCMDYFtuggIlUDWGMlMSOdF/tdQa5sM7Nh0KowohFh3P3sx06gegufKWzWF97dwP/7hLg3CkqWg==", + "dev": true, + "dependencies": { + "jsonwebtoken": "^9.0.0", + "sc-errors": "^2.0.0" + } + }, + "node_modules/ag-channel": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ag-channel/-/ag-channel-5.0.0.tgz", + "integrity": "sha512-bArHkdqQxynim981t8FLZM5TfA0v7p081OlFdOxs6clB79GSGcGlOQMDa31DT9F5VMjzqNiJmhfGwinvfU/3Zg==", + "dev": true, + "dependencies": { + "consumable-stream": "^2.0.0" + } + }, + "node_modules/ag-request": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ag-request/-/ag-request-1.0.0.tgz", + "integrity": "sha512-2f7I0cQLMVyGAqjSewVMEFuAsJsIY6egdE16UHS636r+8c6Oevrv0j6SrOIXyRN6yuNT4PBuhiKmrhHbh9OvEg==", + "dev": true, + "dependencies": { + "sc-errors": "^2.0.0" + } + }, + "node_modules/ag-simple-broker": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ag-simple-broker/-/ag-simple-broker-5.0.0.tgz", + "integrity": "sha512-LMwfBdoNm+8ac/RkgW6z1mjIvy2cgEqWa9cJUD5sc5uiJkIn/kXhVRlPdfa/MJtxPivo9DRhKb9DlSp2gCv+Cg==", + "dev": true, + "dependencies": { + "ag-channel": "^5.0.0", + "async-stream-emitter": "^4.0.0", + "stream-demux": "^8.0.0" + } + }, "node_modules/agent-base": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", @@ -7035,193 +7948,6 @@ "node": ">= 8" } }, - "node_modules/apollo-datasource": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-3.3.2.tgz", - "integrity": "sha512-L5TiS8E2Hn/Yz7SSnWIVbZw0ZfEIXZCa5VUiVxD9P53JvSrf4aStvsFDlGWPvpIdCR+aly2CfoB79B9/JjKFqg==", - "deprecated": "The `apollo-datasource` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023). See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.", - "dev": true, - "dependencies": { - "@apollo/utils.keyvaluecache": "^1.0.1", - "apollo-server-env": "^4.2.1" - }, - "engines": { - "node": ">=12.0" - } - }, - "node_modules/apollo-reporting-protobuf": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/apollo-reporting-protobuf/-/apollo-reporting-protobuf-3.4.0.tgz", - "integrity": "sha512-h0u3EbC/9RpihWOmcSsvTW2O6RXVaD/mPEjfrPkxRPTEPWqncsgOoRJw+wih4OqfH3PvTJvoEIf4LwKrUaqWog==", - "deprecated": "The `apollo-reporting-protobuf` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023 and October 22nd 2024, respectively). This package's functionality is now found in the `@apollo/usage-reporting-protobuf` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.", - "dev": true, - "dependencies": { - "@apollo/protobufjs": "1.2.6" - } - }, - "node_modules/apollo-reporting-protobuf/node_modules/@apollo/protobufjs": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.2.6.tgz", - "integrity": "sha512-Wqo1oSHNUj/jxmsVp4iR3I480p6qdqHikn38lKrFhfzcDJ7lwd7Ck7cHRl4JE81tWNArl77xhnG/OkZhxKBYOw==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/long": "^4.0.0", - "@types/node": "^10.1.0", - "long": "^4.0.0" - }, - "bin": { - "apollo-pbjs": "bin/pbjs", - "apollo-pbts": "bin/pbts" - } - }, - "node_modules/apollo-reporting-protobuf/node_modules/@types/node": { - "version": "10.17.60", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", - "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==", - "dev": true - }, - "node_modules/apollo-server-core": { - "version": "3.12.1", - "resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-3.12.1.tgz", - "integrity": "sha512-9SF5WAkkV0FZQ2HVUWI9Jada1U0jg7e8NCN9EklbtvaCeUlOLyXyM+KCWuZ7+dqHxjshbtcwylPHutt3uzoNkw==", - "dev": true, - "dependencies": { - "@apollo/utils.keyvaluecache": "^1.0.1", - "@apollo/utils.logger": "^1.0.0", - "@apollo/utils.usagereporting": "^1.0.0", - "@apollographql/apollo-tools": "^0.5.3", - "@apollographql/graphql-playground-html": "1.6.29", - "@graphql-tools/mock": "^8.1.2", - "@graphql-tools/schema": "^8.0.0", - "@josephg/resolvable": "^1.0.0", - "apollo-datasource": "^3.3.2", - "apollo-reporting-protobuf": "^3.4.0", - "apollo-server-env": "^4.2.1", - "apollo-server-errors": "^3.3.1", - "apollo-server-plugin-base": "^3.7.2", - "apollo-server-types": "^3.8.0", - "async-retry": "^1.2.1", - "fast-json-stable-stringify": "^2.1.0", - "graphql-tag": "^2.11.0", - "loglevel": "^1.6.8", - "lru-cache": "^6.0.0", - "node-abort-controller": "^3.0.1", - "sha.js": "^2.4.11", - "uuid": "^9.0.0", - "whatwg-mimetype": "^3.0.0" - }, - "engines": { - "node": ">=12.0" - }, - "peerDependencies": { - "graphql": "^15.3.0 || ^16.0.0" - } - }, - "node_modules/apollo-server-core/node_modules/uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/apollo-server-env": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-4.2.1.tgz", - "integrity": "sha512-vm/7c7ld+zFMxibzqZ7SSa5tBENc4B0uye9LTfjJwGoQFY5xsUPH5FpO5j0bMUDZ8YYNbrF9SNtzc5Cngcr90g==", - "dev": true, - "dependencies": { - "node-fetch": "^2.6.7" - }, - "engines": { - "node": ">=12.0" - } - }, - "node_modules/apollo-server-errors": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-3.3.1.tgz", - "integrity": "sha512-xnZJ5QWs6FixHICXHxUfm+ZWqqxrNuPlQ+kj5m6RtEgIpekOPssH/SD9gf2B4HuWV0QozorrygwZnux8POvyPA==", - "dev": true, - "engines": { - "node": ">=12.0" - }, - "peerDependencies": { - "graphql": "^15.3.0 || ^16.0.0" - } - }, - "node_modules/apollo-server-express": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-3.7.0.tgz", - "integrity": "sha512-176LSK7YBxwfleurtbfr5SYMheNNJSHrQa2h4QuosLqhfFJkfTpI2iBW56N737U47QfyueCOvkjNZVq86e3n2g==", - "dev": true, - "dependencies": { - "@types/accepts": "^1.3.5", - "@types/body-parser": "1.19.2", - "@types/cors": "2.8.12", - "@types/express": "4.17.13", - "@types/express-serve-static-core": "4.17.28", - "accepts": "^1.3.5", - "apollo-server-core": "^3.7.0", - "apollo-server-types": "^3.5.3", - "body-parser": "^1.19.0", - "cors": "^2.8.5", - "parseurl": "^1.3.3" - }, - "engines": { - "node": ">=12.0" - }, - "peerDependencies": { - "express": "^4.17.1", - "graphql": "^15.3.0 || ^16.0.0" - } - }, - "node_modules/apollo-server-plugin-base": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-3.7.2.tgz", - "integrity": "sha512-wE8dwGDvBOGehSsPTRZ8P/33Jan6/PmL0y0aN/1Z5a5GcbFhDaaJCjK5cav6npbbGL2DPKK0r6MPXi3k3N45aw==", - "deprecated": "The `apollo-server-plugin-base` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023 and October 22nd 2024, respectively). This package's functionality is now found in the `@apollo/server` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.", - "dev": true, - "dependencies": { - "apollo-server-types": "^3.8.0" - }, - "engines": { - "node": ">=12.0" - }, - "peerDependencies": { - "graphql": "^15.3.0 || ^16.0.0" - } - }, - "node_modules/apollo-server-types": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-3.8.0.tgz", - "integrity": "sha512-ZI/8rTE4ww8BHktsVpb91Sdq7Cb71rdSkXELSwdSR0eXu600/sY+1UXhTWdiJvk+Eq5ljqoHLwLbY2+Clq2b9A==", - "deprecated": "The `apollo-server-types` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023 and October 22nd 2024, respectively). This package's functionality is now found in the `@apollo/server` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.", - "dev": true, - "dependencies": { - "@apollo/utils.keyvaluecache": "^1.0.1", - "@apollo/utils.logger": "^1.0.0", - "apollo-reporting-protobuf": "^3.4.0", - "apollo-server-env": "^4.2.1" - }, - "engines": { - "node": ">=12.0" - }, - "peerDependencies": { - "graphql": "^15.3.0 || ^16.0.0" - } - }, "node_modules/append-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", @@ -7420,15 +8146,6 @@ "node": ">=8" } }, - "node_modules/async": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/async/-/async-2.3.0.tgz", - "integrity": "sha512-uDDBwBVKsWWe4uMmvVmFiW07K5BmdyZvSFzxlujNBtSJ/qzAlGM6UHOFZsQd5jsdmWatrCMWwYyVAc8cuJrepQ==", - "dev": true, - "dependencies": { - "lodash": "^4.14.0" - } - }, "node_modules/async-retry": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", @@ -7438,6 +8155,15 @@ "retry": "0.13.1" } }, + "node_modules/async-stream-emitter": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/async-stream-emitter/-/async-stream-emitter-4.1.0.tgz", + "integrity": "sha512-cfPZYjHkhCdHSR+eux71vOU8+8Xb23oLyxccAjwYHgOxDb3+qSDb2HV1Y0Hmu39vZlse2cm15CUShLiVYXHCmQ==", + "dev": true, + "dependencies": { + "stream-demux": "^8.1.0" + } + }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -7453,12 +8179,6 @@ "node": ">= 4.0.0" } }, - "node_modules/atoa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/atoa/-/atoa-1.0.0.tgz", - "integrity": "sha512-VVE1H6cc4ai+ZXo/CRWoJiHXrA1qfA31DPnx6D20+kSI547hQN5Greh51LQ1baMRMfxO5K5M4ImMtZbZt2DODQ==", - "dev": true - }, "node_modules/atomic-sleep": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", @@ -7852,12 +8572,12 @@ "integrity": "sha512-p32+F8dg+ANGx7s8QsZS74ZPHfIycmC2yZcoerzFgbersIYWitPbbF39G6SBx3gyvzyLH5nt1ooocxr0IHuWKA==" }, "node_modules/base64id": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", - "integrity": "sha512-rz8L+d/xByiB/vLVftPkyY215fqNrmasrcJsYkVcm4TgJNz+YXKrFaFAWibSaHkiKoSgMDCb+lipOIRQNGYesw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", "dev": true, "engines": { - "node": ">= 0.4.0" + "node": "^4.5.0 || >= 5.9" } }, "node_modules/basic-auth": { @@ -7916,6 +8636,40 @@ "node": ">=8" } }, + "node_modules/bl": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", + "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", + "dev": true, + "dependencies": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/bl/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/bl/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", @@ -8116,6 +8870,18 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/bplist-parser": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", + "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", + "dev": true, + "dependencies": { + "big-integer": "^1.6.44" + }, + "engines": { + "node": ">= 5.10.0" + } + }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -8329,6 +9095,21 @@ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, + "node_modules/bundle-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz", + "integrity": "sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==", + "dev": true, + "dependencies": { + "run-applescript": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/bunyan": { "version": "1.8.15", "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.8.15.tgz", @@ -8524,32 +9305,23 @@ } }, "node_modules/cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", + "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", "dev": true, "dependencies": { "clone-response": "^1.0.2", "get-stream": "^5.1.0", "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", + "keyv": "^4.0.0", "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/cacheable-request/node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -8791,12 +9563,6 @@ "node": ">=6" } }, - "node_modules/chardet": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", - "integrity": "sha512-j/Toj7f1z98Hh2cYo2BVr85EpIRWqUi7rtRSGxh/cqUjqrnJe9l9UE7IUGd2vQ2p+kSHLkSzObQPZPLUC6TQwg==", - "dev": true - }, "node_modules/cheerio": { "version": "1.0.0-rc.12", "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", @@ -9147,12 +9913,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cli-width": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", - "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", - "dev": true - }, "node_modules/cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -9280,9 +10040,9 @@ } }, "node_modules/codemirror": { - "version": "5.65.3", - "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.65.3.tgz", - "integrity": "sha512-kCC0iwGZOVZXHEKW3NDTObvM7pTIyowjty4BUqeREROc/3I6bWbgZDA3fGDwlA+rbgRjvnRnfqs9SfXynel1AQ==", + "version": "5.65.15", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.65.15.tgz", + "integrity": "sha512-YC4EHbbwQeubZzxLl5G4nlbLc1T21QTrKGaOal/Pkm9dVDMZXMH7+ieSPEOZCtO9I68i8/oteJKOxzHC2zR+0g==", "dev": true }, "node_modules/collect-v8-coverage": { @@ -9292,13 +10052,16 @@ "dev": true }, "node_modules/color": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", - "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", "dev": true, "dependencies": { - "color-convert": "^1.9.3", - "color-string": "^1.6.0" + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, + "engines": { + "node": ">=12.5.0" } }, "node_modules/color-convert": { @@ -9333,10 +10096,28 @@ "color-support": "bin.js" } }, + "node_modules/color/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/colorette": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", - "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", "dev": true }, "node_modules/colors": { @@ -9675,6 +10456,12 @@ "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", "dev": true }, + "node_modules/consumable-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/consumable-stream/-/consumable-stream-2.0.0.tgz", + "integrity": "sha512-I6WA2JVYXs/68rEvi1ie3rZjP6qusTVFEQkbzR+WC+fY56TpwiGTIDJETsrnlxv5CsnmK69ps6CkYvIbpEEqBA==", + "dev": true + }, "node_modules/content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", @@ -9716,16 +10503,6 @@ "node": ">= 0.6" } }, - "node_modules/contra": { - "version": "1.9.4", - "resolved": "https://registry.npmjs.org/contra/-/contra-1.9.4.tgz", - "integrity": "sha1-9TveQtfltZhcrk2ZqNYQUm3o8o0=", - "dev": true, - "dependencies": { - "atoa": "1.0.0", - "ticky": "1.0.1" - } - }, "node_modules/convert-source-map": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", @@ -9841,9 +10618,9 @@ } }, "node_modules/core-js-pure": { - "version": "3.22.5", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.22.5.tgz", - "integrity": "sha512-8xo9R00iYD7TcV7OrC98GwxiUEAabVWO3dix+uyWjnYrx9fyASLlIX+f/3p5dW5qByaP2bcZ8X/T47s55et/tA==", + "version": "3.32.2", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.32.2.tgz", + "integrity": "sha512-Y2rxThOuNywTjnX/PgA5vWM6CZ9QB9sz9oGeCixV8MqXZO70z/5SHzf9EeBrEBK0PN36DnEBBu9O/aGWzKuMZQ==", "dev": true, "hasInstallScript": true, "funding": { @@ -9913,15 +10690,6 @@ "node": ">= 8" } }, - "node_modules/crossvent": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/crossvent/-/crossvent-1.5.4.tgz", - "integrity": "sha1-2ixPj0DJR4JRe/K+7BBEFIGUq5I=", - "dev": true, - "dependencies": { - "custom-event": "1.0.0" - } - }, "node_modules/crx3": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/crx3/-/crx3-1.1.3.tgz", @@ -10089,12 +10857,6 @@ "node": ">=4" } }, - "node_modules/cssfilter": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz", - "integrity": "sha1-xtJnJjKi5cg+AT5oZKQs6N79IK4=", - "dev": true - }, "node_modules/cssom": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", @@ -10124,45 +10886,454 @@ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.11.tgz", "integrity": "sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==" }, - "node_modules/custom-event": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.0.tgz", - "integrity": "sha1-LkYovhncSyFLXAJjDFlx6BFhgGI=", - "dev": true - }, "node_modules/d3": { - "version": "3.5.17", - "resolved": "https://registry.npmjs.org/d3/-/d3-3.5.17.tgz", - "integrity": "sha1-vEZ0gAQ3iyGjYMn8fPUjF5B2L7g=", - "dev": true + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.8.5.tgz", + "integrity": "sha512-JgoahDG51ncUfJu6wX/1vWQEqOflgXyl4MaHqlcSruTez7yhaRKR9i8VjjcQGeS2en/jnFivXuaIMnseMMt0XA==", + "dev": true, + "dependencies": { + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "4", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "dev": true, + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-axis": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", + "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-brush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", + "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "dev": true, + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-chord": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", + "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "dev": true, + "dependencies": { + "d3-path": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-contour": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", + "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "dev": true, + "dependencies": { + "d3-array": "^3.2.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", + "dev": true, + "dependencies": { + "delaunator": "5" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "dev": true, + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "dev": true, + "dependencies": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + }, + "bin": { + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/d3-dsv/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "dev": true, + "dependencies": { + "d3-dsv": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "dev": true, + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-geo": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.0.tgz", + "integrity": "sha512-JEo5HxXDdDYXCaWdwLRt79y7giK8SbhZJbFWXqbRTolCHFI5jRqteLzCsq51NKbUoX0PjBVSohxrx+NoOUujYA==", + "dev": true, + "dependencies": { + "d3-array": "2.5.0 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "dev": true, + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-polygon": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "dev": true, + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale-chromatic": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", + "integrity": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==", + "dev": true, + "dependencies": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "dev": true, + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } }, "node_modules/d3-state-visualizer": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/d3-state-visualizer/-/d3-state-visualizer-1.6.0.tgz", - "integrity": "sha512-zlzh/BllmvMXkpIIV/OTF2Opb74MOW9ViMaDRFeMqDZ9WrwlWTgQiFpxpD3T6gDze3fJFbxbNZfbCTE7uTiUFA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-state-visualizer/-/d3-state-visualizer-2.0.0.tgz", + "integrity": "sha512-0f8ahCTsE180/9jgz+G2aCQjEMMUQjhaxGkLcc25llLon4g5MTNLAzrOxRsv0YiMoZlII05pfLLwYaqC7MsO0Q==", "dev": true, "dependencies": { - "@babel/runtime": "^7.16.7", - "@types/d3": "^3.5.46", - "d3": "^3.5.17", - "d3tooltip": "^2.1.0", + "@babel/runtime": "^7.20.6", + "@types/d3": "^7.4.0", + "d3": "^7.8.0", + "d3tooltip": "^3.0.0", "deepmerge": "^4.2.2", - "map2tree": "^2.1.0", + "map2tree": "^3.0.0", "ramda": "^0.28.0" } }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "dev": true, + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "dev": true, + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "dev": true, + "dependencies": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "d3-selection": "2 - 3" + } + }, + "node_modules/d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "dev": true, + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/d3tooltip": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/d3tooltip/-/d3tooltip-2.1.0.tgz", - "integrity": "sha512-McomFzJ39RVyGTCKolazdmNG25AdykpdSbaEwyzFHEi4GZH7eZv8FxKwCpsN5/BaywvdsUtRa7eXCScISrJv9A==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3tooltip/-/d3tooltip-3.0.0.tgz", + "integrity": "sha512-bQSxCU0D99KEvpHZjB5oiXToc98FxIHOAAOJRncZMsU3iUU18a2X//FgPnuI0K7wVjfKfgr4dXw5sEvTXSyu6Q==", "dev": true, "dependencies": { - "@babel/runtime": "^7.16.7", - "ramda": "^0.28.0" + "@babel/runtime": "^7.20.6" }, "peerDependencies": { - "@types/d3": "^3.5.46", - "d3": "^3.5.17" + "@types/d3": "^7.4.0", + "d3": "^7.8.0" } }, "node_modules/damerau-levenshtein": { @@ -10233,12 +11404,12 @@ } }, "node_modules/dateformat": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", - "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-5.0.3.tgz", + "integrity": "sha512-Kvr6HmPXUMerlLcLF+Pwq3K7apHpYmGDVqrxcDasBg86UcKeTSNWbEzU8bwdXnxnR44FtMhJAxI4Bov6Y/KUfA==", "dev": true, "engines": { - "node": "*" + "node": ">=12.20" } }, "node_modules/de-indent": { @@ -10287,15 +11458,30 @@ "dev": true }, "node_modules/decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", "dev": true, "dependencies": { - "mimic-response": "^1.0.0" + "mimic-response": "^3.1.0" }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/dedent": { @@ -10336,6 +11522,162 @@ "node": ">=0.10.0" } }, + "node_modules/default-browser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-4.0.0.tgz", + "integrity": "sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==", + "dev": true, + "dependencies": { + "bundle-name": "^3.0.0", + "default-browser-id": "^3.0.0", + "execa": "^7.1.1", + "titleize": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz", + "integrity": "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==", + "dev": true, + "dependencies": { + "bplist-parser": "^0.2.0", + "untildify": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser/node_modules/execa": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", + "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^4.3.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": "^14.18.0 || ^16.14.0 || >=18.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/default-browser/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser/node_modules/human-signals": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", + "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", + "dev": true, + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/default-browser/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser/node_modules/npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/default-gateway": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", @@ -10370,10 +11712,13 @@ } }, "node_modules/defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", - "dev": true + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "dev": true, + "engines": { + "node": ">=10" + } }, "node_modules/define-lazy-prop": { "version": "2.0.0", @@ -10399,6 +11744,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/delaunator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", + "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", + "dev": true, + "dependencies": { + "robust-predicates": "^3.0.0" + } + }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -10652,16 +12006,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/dragula": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/dragula/-/dragula-3.7.2.tgz", - "integrity": "sha1-SjXJ05gf+sGpScKcpyhQWOhzk84=", - "dev": true, - "dependencies": { - "contra": "1.9.4", - "crossvent": "1.5.4" - } - }, "node_modules/dtrace-provider": { "version": "0.8.8", "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.8.tgz", @@ -10676,12 +12020,6 @@ "node": ">=0.10" } }, - "node_modules/duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", - "dev": true - }, "node_modules/duplexify": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", @@ -10747,21 +12085,21 @@ "dev": true }, "node_modules/electron": { - "version": "18.3.15", - "resolved": "https://registry.npmjs.org/electron/-/electron-18.3.15.tgz", - "integrity": "sha512-frkBt8skyo8SmlG4TbByDxZw6/tqttRYYIBaeTBfkoG18OyD59IVwVaXXHO8UYKB5/1C2Rce0Gj6uoxlAHQHzQ==", + "version": "25.8.0", + "resolved": "https://registry.npmjs.org/electron/-/electron-25.8.0.tgz", + "integrity": "sha512-T3kC1a/3ntSaYMCVVfUUc9v7myPzi6J2GP0Ad/CyfWKDPp054dGyKxb2EEjKnxQQ7wfjsT1JTEdBG04x6ekVBw==", "dev": true, "hasInstallScript": true, "dependencies": { - "@electron/get": "^1.13.0", - "@types/node": "^16.11.26", - "extract-zip": "^1.0.3" + "@electron/get": "^2.0.0", + "@types/node": "^18.11.18", + "extract-zip": "^2.0.1" }, "bin": { "electron": "cli.js" }, "engines": { - "node": ">= 8.6" + "node": ">= 12.20.55" } }, "node_modules/electron-to-chromium": { @@ -10770,93 +12108,6 @@ "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", "dev": true }, - "node_modules/electron/node_modules/@types/node": { - "version": "16.11.35", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.35.tgz", - "integrity": "sha512-QXu45LyepgnhUfnIAj/FyT4uM87ug5KpIrgXfQtUPNAlx8w5hmd8z8emqCLNvG11QkpRSCG9Qg2buMxvqfjfsQ==", - "dev": true - }, - "node_modules/electron/node_modules/concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "engines": [ - "node >= 0.8" - ], - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/electron/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/electron/node_modules/extract-zip": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", - "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", - "dev": true, - "dependencies": { - "concat-stream": "^1.6.2", - "debug": "^2.6.9", - "mkdirp": "^0.5.4", - "yauzl": "^2.10.0" - }, - "bin": { - "extract-zip": "cli.js" - } - }, - "node_modules/electron/node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/electron/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "node_modules/electron/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/electron/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, "node_modules/elliptic": { "version": "6.5.4", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", @@ -11092,7 +12343,7 @@ "node_modules/es6-template-regex": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/es6-template-regex/-/es6-template-regex-0.1.1.tgz", - "integrity": "sha1-5Re54PdCvuuNMECDRUT9oORlFGc=", + "integrity": "sha512-sCeu9DOYhaSlKG7ry2y384bwxxaxPPdqWS0Jj45lv1MeQSpRK7mYlLO0jZdqwDLHViDWMsMikOkSIXuXpf4DiQ==", "dev": true, "engines": { "node": ">=0.10.0" @@ -11101,7 +12352,7 @@ "node_modules/es6template": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/es6template/-/es6template-1.0.5.tgz", - "integrity": "sha1-O7u5efpriudlsMmGMQ9yAHJWKp8=", + "integrity": "sha512-WASLwPb/GoVFxESVJqpVpgUhrC3Z4mami74a2d2MsvYwicn8YkGSWGippd+l2ciSoPoymv4KNFYgDi3B4t7RGA==", "dev": true, "dependencies": { "es6-template-regex": "^0.1.1", @@ -12095,15 +13346,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/expirymanager": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/expirymanager/-/expirymanager-0.9.4.tgz", - "integrity": "sha512-bKcLuZPTs9mFxQ2VJPYJCMuGVAM9Ah6KfezbDA3IegbGeqR39WdPi+T7GgDGVuBPjYDFsSP/va5csiNVCGT1Mw==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/express": { "version": "4.18.2", "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", @@ -12189,7 +13431,7 @@ "node_modules/extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, "dependencies": { "is-extendable": "^0.1.0" @@ -12198,32 +13440,6 @@ "node": ">=0.10.0" } }, - "node_modules/external-editor": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", - "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", - "dev": true, - "dependencies": { - "chardet": "^0.4.0", - "iconv-lite": "^0.4.17", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/external-editor/node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, "node_modules/extract-zip": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", @@ -12385,18 +13601,6 @@ "node": "^12.20 || >= 14.13" } }, - "node_modules/figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dev": true, - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -12604,15 +13808,6 @@ "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", "dev": true }, - "node_modules/fleximap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fleximap/-/fleximap-1.0.0.tgz", - "integrity": "sha512-zg/PthjBzESYKomTw/wivo8Id6B+obVkWriIzDuRfuw4wxEIV2/0D/NIGf+LKcGTTifHRfw73+oAAQozZ9MAhA==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/flush-write-stream": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", @@ -13065,72 +14260,6 @@ "node": ">=12.0.0" } }, - "node_modules/geckodriver/node_modules/@sindresorhus/is": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", - "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/is?sponsor=1" - } - }, - "node_modules/geckodriver/node_modules/@szmarczak/http-timer": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", - "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", - "dev": true, - "dependencies": { - "defer-to-connect": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/geckodriver/node_modules/cacheable-request": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", - "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", - "dev": true, - "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^4.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^6.0.1", - "responselike": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/geckodriver/node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dev": true, - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/geckodriver/node_modules/defer-to-connect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", - "dev": true, - "engines": { - "node": ">=10" - } - }, "node_modules/geckodriver/node_modules/got": { "version": "11.8.5", "resolved": "https://registry.npmjs.org/got/-/got-11.8.5.tgz", @@ -13156,75 +14285,6 @@ "url": "https://github.com/sindresorhus/got?sponsor=1" } }, - "node_modules/geckodriver/node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true - }, - "node_modules/geckodriver/node_modules/keyv": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", - "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", - "dev": true, - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/geckodriver/node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/geckodriver/node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/geckodriver/node_modules/normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/geckodriver/node_modules/p-cancelable": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", - "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/geckodriver/node_modules/responselike": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", - "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", - "dev": true, - "dependencies": { - "lowercase-keys": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -13271,6 +14331,18 @@ "integrity": "sha1-uuDfq6WIoMYNeDTA2Nwv9g7u8v4=", "dev": true }, + "node_modules/get-port": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-7.0.0.tgz", + "integrity": "sha512-mDHFgApoQd+azgMdwylJrv2DX47ywGq1i5VFJE7fZ0dttNq3iQMfsU4IvEgBHojA3KqEudyu7Vq+oN8kNaNkWw==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/get-stdin": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz", @@ -13317,16 +14389,16 @@ "node_modules/get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/getopts": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/getopts/-/getopts-2.2.5.tgz", - "integrity": "sha512-9jb7AW5p3in+IiJWhQiZmmwkpLaR/ccTWdWQCtZM66HJcHHLegowh4q4tSD7gouUyeNvFWRavfK9GXosQHDpFA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/getopts/-/getopts-2.3.0.tgz", + "integrity": "sha512-5eDf9fuSXwxBL6q5HX+dhDj+dslFGWzU5thZ9kNKUkcPtaPdatmUFKwHFrLb/uf/WpA4BHET+AX3Scl56cAjpA==", "dev": true }, "node_modules/getpass": { @@ -13338,12 +14410,6 @@ "assert-plus": "^1.0.0" } }, - "node_modules/getport": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/getport/-/getport-0.1.0.tgz", - "integrity": "sha1-q93z1dHnfdlnzPorA2oKH7Jv1/c=", - "dev": true - }, "node_modules/gettext-converter": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/gettext-converter/-/gettext-converter-1.2.3.tgz", @@ -13563,9 +14629,9 @@ } }, "node_modules/global-agent/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "optional": true, "dependencies": { @@ -13602,22 +14668,6 @@ "node": ">=10" } }, - "node_modules/global-tunnel-ng": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz", - "integrity": "sha512-4s+DyciWBV0eK148wqXxcmVAbFVPqtc3sEtUE/GTQfuU80rySLcMhUmHKSHI7/LDj8q0gDYI1lIhRRB7ieRAqg==", - "dev": true, - "optional": true, - "dependencies": { - "encodeurl": "^1.0.2", - "lodash": "^4.17.10", - "npm-conf": "^1.1.3", - "tunnel": "^0.0.6" - }, - "engines": { - "node": ">=0.10" - } - }, "node_modules/globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", @@ -13663,37 +14713,28 @@ } }, "node_modules/got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "version": "11.8.6", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", + "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", "dev": true, "dependencies": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" }, "engines": { - "node": ">=8.6" - } - }, - "node_modules/got/node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" + "node": ">=10.19.0" }, - "engines": { - "node": ">=6" + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" } }, "node_modules/graceful-fs": { @@ -13720,29 +14761,14 @@ "dev": true }, "node_modules/graphql": { - "version": "16.5.0", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.5.0.tgz", - "integrity": "sha512-qbHgh8Ix+j/qY+a/ZcJnFQ+j8ezakqPiHwPiZhV/3PgGlgf96QMBB5/f2rkiC9sgLoy/xvT6TSiaf2nTHJh5iA==", + "version": "16.8.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.8.0.tgz", + "integrity": "sha512-0oKGaR+y3qcS5mCu1vb7KG+a89vjn06C7Ihq/dDl3jA+A8B3TKomvi3CiEcVLJQGalbu8F52LxkOym7U5sSfbg==", "dev": true, "engines": { "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" } }, - "node_modules/graphql-tag": { - "version": "2.12.6", - "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", - "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", - "dev": true, - "dependencies": { - "tslib": "^2.1.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "graphql": "^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" - } - }, "node_modules/growly": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", @@ -14030,10 +15056,20 @@ } }, "node_modules/html-entities": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", - "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", - "dev": true + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.4.0.tgz", + "integrity": "sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ] }, "node_modules/html-escaper": { "version": "2.0.2", @@ -14651,9 +15687,9 @@ "dev": true }, "node_modules/immer": { - "version": "9.0.14", - "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.14.tgz", - "integrity": "sha512-ubBeqQutOSLIFCUBN03jGeOS6a3DoYlSYwYJTa+gSKEZKU5redJIqkIdZ3JVv/4RZpfcXdAWH5zCNLWPRv2WDw==", + "version": "9.0.21", + "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", + "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==", "dev": true, "funding": { "type": "opencollective", @@ -14661,9 +15697,9 @@ } }, "node_modules/immutable": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz", - "integrity": "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz", + "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==", "dev": true }, "node_modules/import-fresh": { @@ -14755,149 +15791,6 @@ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, - "node_modules/inquirer": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-5.2.0.tgz", - "integrity": "sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ==", - "dev": true, - "dependencies": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.0", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^2.1.0", - "figures": "^2.0.0", - "lodash": "^4.3.0", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rxjs": "^5.5.2", - "string-width": "^2.1.0", - "strip-ansi": "^4.0.0", - "through": "^2.3.6" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/inquirer/node_modules/ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/inquirer/node_modules/ansi-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", - "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/inquirer/node_modules/cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", - "dev": true, - "dependencies": { - "restore-cursor": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/inquirer/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/inquirer/node_modules/mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/inquirer/node_modules/onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "dev": true, - "dependencies": { - "mimic-fn": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/inquirer/node_modules/restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "dev": true, - "dependencies": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/inquirer/node_modules/rxjs": { - "version": "5.5.12", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", - "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==", - "dev": true, - "dependencies": { - "symbol-observable": "1.0.1" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/inquirer/node_modules/string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/inquirer/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "dependencies": { - "ansi-regex": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/inquirer/node_modules/symbol-observable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", - "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/internal-slot": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", @@ -14912,6 +15805,15 @@ "node": ">= 0.4" } }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "dev": true, + "engines": { + "node": ">=12" + } + }, "node_modules/interpret": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", @@ -15101,7 +16003,7 @@ "node_modules/is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", "dev": true, "engines": { "node": ">=0.10.0" @@ -15151,9 +16053,42 @@ "node_modules/is-in-browser": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz", - "integrity": "sha1-Vv9NtoOgeMYILrldrX3GLh0E+DU=", + "integrity": "sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g==", "dev": true }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "dev": true, + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-inside-container/node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-installed-globally": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", @@ -17672,9 +18607,9 @@ } }, "node_modules/json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true }, "node_modules/json-merge-patch": { @@ -17753,12 +18688,12 @@ "dev": true }, "node_modules/jsondiffpatch": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/jsondiffpatch/-/jsondiffpatch-0.4.1.tgz", - "integrity": "sha512-t0etAxTUk1w5MYdNOkZBZ8rvYYN5iL+2dHCCx/DpkFm/bW28M6y5nUS83D4XdZiHy35Fpaw6LBb+F88fHZnVCw==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsondiffpatch/-/jsondiffpatch-0.5.0.tgz", + "integrity": "sha512-Quz3MvAwHxVYNXsOByL7xI5EB2WYOeFswqaHIA3qOK3isRWTxiplBEocmmru6XmxDB2L7jDNYtYA4FyimoAFEw==", "dev": true, "dependencies": { - "chalk": "^2.3.0", + "chalk": "^3.0.0", "diff-match-patch": "^1.0.0" }, "bin": { @@ -17768,6 +18703,73 @@ "node": ">=8.17.0" } }, + "node_modules/jsondiffpatch/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jsondiffpatch/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jsondiffpatch/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jsondiffpatch/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jsondiffpatch/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jsondiffpatch/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", @@ -17780,18 +18782,18 @@ } }, "node_modules/jsonpointer": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.0.tgz", - "integrity": "sha512-PNYZIdMjVIvVgDSYKTT63Y+KZ6IZvGRNNWcxwD+GNnUz1MKPfv30J8ueCjdwcN0nDx2SlshgyB7Oy0epAzVRRg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", + "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/jsonwebtoken": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", - "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", "dev": true, "dependencies": { "jws": "^3.2.2", @@ -17803,20 +18805,26 @@ "lodash.isstring": "^4.0.1", "lodash.once": "^4.0.0", "ms": "^2.1.1", - "semver": "^5.6.0" + "semver": "^7.5.4" }, "engines": { - "node": ">=4", - "npm": ">=1.4.28" + "node": ">=12", + "npm": ">=6" } }, "node_modules/jsonwebtoken/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, "bin": { - "semver": "bin/semver" + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/jsprim": { @@ -17835,9 +18843,9 @@ } }, "node_modules/jss": { - "version": "10.9.0", - "resolved": "https://registry.npmjs.org/jss/-/jss-10.9.0.tgz", - "integrity": "sha512-YpzpreB6kUunQBbrlArlsMpXYyndt9JATbt95tajx0t4MTJJcCJdd4hdNpHmOIDiUJrF/oX5wtVFrS3uofWfGw==", + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss/-/jss-10.10.0.tgz", + "integrity": "sha512-cqsOTS7jqPsPMjtKYDUpdFC0AbhYFLTcuGRqymgmdJIeQ8cH7+AgX7YSgQy79wXloZq2VvATYxUOUQEvS1V/Zw==", "dev": true, "dependencies": { "@babel/runtime": "^7.3.1", @@ -17851,153 +18859,153 @@ } }, "node_modules/jss-plugin-camel-case": { - "version": "10.9.0", - "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.9.0.tgz", - "integrity": "sha512-UH6uPpnDk413/r/2Olmw4+y54yEF2lRIV8XIZyuYpgPYTITLlPOsq6XB9qeqv+75SQSg3KLocq5jUBXW8qWWww==", + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.10.0.tgz", + "integrity": "sha512-z+HETfj5IYgFxh1wJnUAU8jByI48ED+v0fuTuhKrPR+pRBYS2EDwbusU8aFOpCdYhtRc9zhN+PJ7iNE8pAWyPw==", "dev": true, "dependencies": { "@babel/runtime": "^7.3.1", "hyphenate-style-name": "^1.0.3", - "jss": "10.9.0" + "jss": "10.10.0" } }, "node_modules/jss-plugin-compose": { - "version": "10.9.0", - "resolved": "https://registry.npmjs.org/jss-plugin-compose/-/jss-plugin-compose-10.9.0.tgz", - "integrity": "sha512-Q/0FEZhDwGUpf3/b7+PspmMi6MVSlN3YlTDmvrft7I6N346jUpd8MYkYP/6qM1ZMuVj4v8ky/XYqr1v2ganLLg==", + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-compose/-/jss-plugin-compose-10.10.0.tgz", + "integrity": "sha512-F5kgtWpI2XfZ3Z8eP78tZEYFdgTIbpA/TMuX3a8vwrNolYtN1N4qJR/Ob0LAsqIwCMLojtxN7c7Oo/+Vz6THow==", "dev": true, "dependencies": { "@babel/runtime": "^7.3.1", - "jss": "10.9.0", + "jss": "10.10.0", "tiny-warning": "^1.0.2" } }, "node_modules/jss-plugin-default-unit": { - "version": "10.9.0", - "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.9.0.tgz", - "integrity": "sha512-7Ju4Q9wJ/MZPsxfu4T84mzdn7pLHWeqoGd/D8O3eDNNJ93Xc8PxnLmV8s8ZPNRYkLdxZqKtm1nPQ0BM4JRlq2w==", + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.10.0.tgz", + "integrity": "sha512-SvpajxIECi4JDUbGLefvNckmI+c2VWmP43qnEy/0eiwzRUsafg5DVSIWSzZe4d2vFX1u9nRDP46WCFV/PXVBGQ==", "dev": true, "dependencies": { "@babel/runtime": "^7.3.1", - "jss": "10.9.0" + "jss": "10.10.0" } }, "node_modules/jss-plugin-expand": { - "version": "10.9.0", - "resolved": "https://registry.npmjs.org/jss-plugin-expand/-/jss-plugin-expand-10.9.0.tgz", - "integrity": "sha512-QfZ9jld0HpF1OiYU7cGWQ4q+f6+Wu93mV4X+cA1iVRssiUbSbygwdfZkUwX23UOhS1WWRJeQlLK1aJC94K8/0A==", + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-expand/-/jss-plugin-expand-10.10.0.tgz", + "integrity": "sha512-ymT62W2OyDxBxr7A6JR87vVX9vTq2ep5jZLIdUSusfBIEENLdkkc0lL/Xaq8W9s3opUq7R0sZQpzRWELrfVYzA==", "dev": true, "dependencies": { "@babel/runtime": "^7.3.1", - "jss": "10.9.0" + "jss": "10.10.0" } }, "node_modules/jss-plugin-extend": { - "version": "10.9.0", - "resolved": "https://registry.npmjs.org/jss-plugin-extend/-/jss-plugin-extend-10.9.0.tgz", - "integrity": "sha512-xvmosUh3RsKVsm9L14ml6PL3i0Ejj5gB6eo/jTMkGW1kIy42gNXV1EthR8cD5xiowWstnvugQ3JF0pI5+QkPMg==", + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-extend/-/jss-plugin-extend-10.10.0.tgz", + "integrity": "sha512-sKYrcMfr4xxigmIwqTjxNcHwXJIfvhvjTNxF+Tbc1NmNdyspGW47Ey6sGH8BcQ4FFQhLXctpWCQSpDwdNmXSwg==", "dev": true, "dependencies": { "@babel/runtime": "^7.3.1", - "jss": "10.9.0", + "jss": "10.10.0", "tiny-warning": "^1.0.2" } }, "node_modules/jss-plugin-global": { - "version": "10.9.0", - "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.9.0.tgz", - "integrity": "sha512-4G8PHNJ0x6nwAFsEzcuVDiBlyMsj2y3VjmFAx/uHk/R/gzJV+yRHICjT4MKGGu1cJq2hfowFWCyrr/Gg37FbgQ==", + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.10.0.tgz", + "integrity": "sha512-icXEYbMufiNuWfuazLeN+BNJO16Ge88OcXU5ZDC2vLqElmMybA31Wi7lZ3lf+vgufRocvPj8443irhYRgWxP+A==", "dev": true, "dependencies": { "@babel/runtime": "^7.3.1", - "jss": "10.9.0" + "jss": "10.10.0" } }, "node_modules/jss-plugin-nested": { - "version": "10.9.0", - "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.9.0.tgz", - "integrity": "sha512-2UJnDrfCZpMYcpPYR16oZB7VAC6b/1QLsRiAutOt7wJaaqwCBvNsosLEu/fUyKNQNGdvg2PPJFDO5AX7dwxtoA==", + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.10.0.tgz", + "integrity": "sha512-9R4JHxxGgiZhurDo3q7LdIiDEgtA1bTGzAbhSPyIOWb7ZubrjQe8acwhEQ6OEKydzpl8XHMtTnEwHXCARLYqYA==", "dev": true, "dependencies": { "@babel/runtime": "^7.3.1", - "jss": "10.9.0", + "jss": "10.10.0", "tiny-warning": "^1.0.2" } }, "node_modules/jss-plugin-props-sort": { - "version": "10.9.0", - "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.9.0.tgz", - "integrity": "sha512-7A76HI8bzwqrsMOJTWKx/uD5v+U8piLnp5bvru7g/3ZEQOu1+PjHvv7bFdNO3DwNPC9oM0a//KwIJsIcDCjDzw==", + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.10.0.tgz", + "integrity": "sha512-5VNJvQJbnq/vRfje6uZLe/FyaOpzP/IH1LP+0fr88QamVrGJa0hpRRyAa0ea4U/3LcorJfBFVyC4yN2QC73lJg==", "dev": true, "dependencies": { "@babel/runtime": "^7.3.1", - "jss": "10.9.0" + "jss": "10.10.0" } }, "node_modules/jss-plugin-rule-value-function": { - "version": "10.9.0", - "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.9.0.tgz", - "integrity": "sha512-IHJv6YrEf8pRzkY207cPmdbBstBaE+z8pazhPShfz0tZSDtRdQua5jjg6NMz3IbTasVx9FdnmptxPqSWL5tyJg==", + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.10.0.tgz", + "integrity": "sha512-uEFJFgaCtkXeIPgki8ICw3Y7VMkL9GEan6SqmT9tqpwM+/t+hxfMUdU4wQ0MtOiMNWhwnckBV0IebrKcZM9C0g==", "dev": true, "dependencies": { "@babel/runtime": "^7.3.1", - "jss": "10.9.0", + "jss": "10.10.0", "tiny-warning": "^1.0.2" } }, "node_modules/jss-plugin-rule-value-observable": { - "version": "10.9.0", - "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-observable/-/jss-plugin-rule-value-observable-10.9.0.tgz", - "integrity": "sha512-/MWVPJVEn41+ofzQdsvH1GR4wusDqFqNnchh/98HVc580MxPy4NVkmUa2SAEpbHhnJ93sCoETZccW3HJKuvH4A==", + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-observable/-/jss-plugin-rule-value-observable-10.10.0.tgz", + "integrity": "sha512-ZLMaYrR3QE+vD7nl3oNXuj79VZl9Kp8/u6A1IbTPDcuOu8b56cFdWRZNZ0vNr8jHewooEeq2doy8Oxtymr2ZPA==", "dev": true, "dependencies": { "@babel/runtime": "^7.3.1", - "jss": "10.9.0", + "jss": "10.10.0", "symbol-observable": "^1.2.0" } }, "node_modules/jss-plugin-template": { - "version": "10.9.0", - "resolved": "https://registry.npmjs.org/jss-plugin-template/-/jss-plugin-template-10.9.0.tgz", - "integrity": "sha512-lxThUvdt0drCi7xhuJWxADWTgLLy1IWCeFO5k+dtba900xJsNg0IGZplpP9w9UpaJsYS3WUwWMXw8Sxn1dobfQ==", + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-template/-/jss-plugin-template-10.10.0.tgz", + "integrity": "sha512-ocXZBIOJOA+jISPdsgkTs8wwpK6UbsvtZK5JI7VUggTD6LWKbtoxUzadd2TpfF+lEtlhUmMsCkTRNkITdPKa6w==", "dev": true, "dependencies": { "@babel/runtime": "^7.3.1", - "jss": "10.9.0", + "jss": "10.10.0", "tiny-warning": "^1.0.2" } }, "node_modules/jss-plugin-vendor-prefixer": { - "version": "10.9.0", - "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.9.0.tgz", - "integrity": "sha512-MbvsaXP7iiVdYVSEoi+blrW+AYnTDvHTW6I6zqi7JcwXdc6I9Kbm234nEblayhF38EftoenbM+5218pidmC5gA==", + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.10.0.tgz", + "integrity": "sha512-UY/41WumgjW8r1qMCO8l1ARg7NHnfRVWRhZ2E2m0DMYsr2DD91qIXLyNhiX83hHswR7Wm4D+oDYNC1zWCJWtqg==", "dev": true, "dependencies": { "@babel/runtime": "^7.3.1", "css-vendor": "^2.0.8", - "jss": "10.9.0" + "jss": "10.10.0" } }, "node_modules/jss-preset-default": { - "version": "10.9.0", - "resolved": "https://registry.npmjs.org/jss-preset-default/-/jss-preset-default-10.9.0.tgz", - "integrity": "sha512-Zdsj+R+UTn7OOJ1TFQi+l8PfEL7APSAM6vRPaU8mJywT8OrMjgslMKckFLrgq1k+qk1hJR1ePAMesvZ5aAXGOQ==", + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-preset-default/-/jss-preset-default-10.10.0.tgz", + "integrity": "sha512-GL175Wt2FGhjE+f+Y3aWh+JioL06/QWFgZp53CbNNq6ZkVU0TDplD8Bxm9KnkotAYn3FlplNqoW5CjyLXcoJ7Q==", "dev": true, "dependencies": { "@babel/runtime": "^7.3.1", - "jss": "10.9.0", - "jss-plugin-camel-case": "10.9.0", - "jss-plugin-compose": "10.9.0", - "jss-plugin-default-unit": "10.9.0", - "jss-plugin-expand": "10.9.0", - "jss-plugin-extend": "10.9.0", - "jss-plugin-global": "10.9.0", - "jss-plugin-nested": "10.9.0", - "jss-plugin-props-sort": "10.9.0", - "jss-plugin-rule-value-function": "10.9.0", - "jss-plugin-rule-value-observable": "10.9.0", - "jss-plugin-template": "10.9.0", - "jss-plugin-vendor-prefixer": "10.9.0" + "jss": "10.10.0", + "jss-plugin-camel-case": "10.10.0", + "jss-plugin-compose": "10.10.0", + "jss-plugin-default-unit": "10.10.0", + "jss-plugin-expand": "10.10.0", + "jss-plugin-extend": "10.10.0", + "jss-plugin-global": "10.10.0", + "jss-plugin-nested": "10.10.0", + "jss-plugin-props-sort": "10.10.0", + "jss-plugin-rule-value-function": "10.10.0", + "jss-plugin-rule-value-observable": "10.10.0", + "jss-plugin-template": "10.10.0", + "jss-plugin-vendor-prefixer": "10.10.0" } }, "node_modules/jsx-ast-utils": { @@ -18091,12 +19099,12 @@ } }, "node_modules/keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz", + "integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==", "dev": true, "dependencies": { - "json-buffer": "3.0.0" + "json-buffer": "3.0.1" } }, "node_modules/kind-of": { @@ -18118,32 +19126,36 @@ } }, "node_modules/knex": { - "version": "0.95.15", - "resolved": "https://registry.npmjs.org/knex/-/knex-0.95.15.tgz", - "integrity": "sha512-Loq6WgHaWlmL2bfZGWPsy4l8xw4pOE+tmLGkPG0auBppxpI0UcK+GYCycJcqz9W54f2LiGewkCVLBm3Wq4ur/w==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/knex/-/knex-2.5.1.tgz", + "integrity": "sha512-z78DgGKUr4SE/6cm7ku+jHvFT0X97aERh/f0MUKAKgFnwCYBEW4TFBqtHWFYiJFid7fMrtpZ/gxJthvz5mEByA==", "dev": true, "dependencies": { - "colorette": "2.0.16", - "commander": "^7.1.0", - "debug": "4.3.2", + "colorette": "2.0.19", + "commander": "^10.0.0", + "debug": "4.3.4", "escalade": "^3.1.1", "esm": "^3.2.25", - "getopts": "2.2.5", + "get-package-type": "^0.1.0", + "getopts": "2.3.0", "interpret": "^2.2.0", "lodash": "^4.17.21", - "pg-connection-string": "2.5.0", - "rechoir": "0.7.0", + "pg-connection-string": "2.6.1", + "rechoir": "^0.8.0", "resolve-from": "^5.0.0", - "tarn": "^3.0.1", + "tarn": "^3.0.2", "tildify": "2.0.0" }, "bin": { "knex": "bin/cli.js" }, "engines": { - "node": ">=10" + "node": ">=12" }, "peerDependenciesMeta": { + "better-sqlite3": { + "optional": true + }, "mysql": { "optional": true }, @@ -18165,29 +19177,12 @@ } }, "node_modules/knex/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/knex/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", "dev": true, - "dependencies": { - "ms": "2.1.2" - }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">=14" } }, "node_modules/knex/node_modules/resolve-from": { @@ -18310,7 +19305,7 @@ "node_modules/lie": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", - "integrity": "sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=", + "integrity": "sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==", "dev": true, "dependencies": { "immediate": "~3.0.5" @@ -18401,12 +19396,6 @@ "url": "https://opencollective.com/lint-staged" } }, - "node_modules/lint-staged/node_modules/colorette": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", - "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", - "dev": true - }, "node_modules/lint-staged/node_modules/commander": { "version": "9.4.1", "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz", @@ -18623,12 +19612,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/listr2/node_modules/colorette": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", - "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", - "dev": true - }, "node_modules/listr2/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -18739,16 +19722,10 @@ "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true - }, "node_modules/lodash.curry": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.curry/-/lodash.curry-4.1.1.tgz", - "integrity": "sha1-JI42By7ekGUB11lmIAqG2riyMXA=", + "integrity": "sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA==", "dev": true }, "node_modules/lodash.debounce": { @@ -18766,37 +19743,37 @@ "node_modules/lodash.includes": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", - "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", "dev": true }, "node_modules/lodash.isboolean": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", "dev": true }, "node_modules/lodash.isinteger": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", - "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", "dev": true }, "node_modules/lodash.isnumber": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", - "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", "dev": true }, "node_modules/lodash.isplainobject": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", "dev": true }, "node_modules/lodash.isstring": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", "dev": true }, "node_modules/lodash.memoize": { @@ -18814,7 +19791,7 @@ "node_modules/lodash.once": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", "dev": true }, "node_modules/lodash.sortby": { @@ -18940,9 +19917,9 @@ } }, "node_modules/loglevel": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.0.tgz", - "integrity": "sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.1.tgz", + "integrity": "sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg==", "dev": true, "engines": { "node": ">= 0.6.0" @@ -18979,12 +19956,12 @@ } }, "node_modules/lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/lru-cache": { @@ -19084,12 +20061,12 @@ } }, "node_modules/map2tree": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/map2tree/-/map2tree-2.1.0.tgz", - "integrity": "sha512-mRhb7q7TyO/uxtPURYmmwUKlnmcC9S4y18ZnLr6Ufkhyf2CpWHFh77fuM0US8owqjBDOhalo3vk8jzL+8vyNGQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/map2tree/-/map2tree-3.0.0.tgz", + "integrity": "sha512-TOLkmFFiuMc5QwjoXPgbDtAuQXEIEmEyPr6K71qNmHEsxqZWBTVXHaRVWWe2qm2ZXztSbi+VhZ1ktRA2G42dBw==", "dev": true, "dependencies": { - "@babel/runtime": "^7.16.7", + "@babel/runtime": "^7.20.6", "lodash": "^4.17.21" } }, @@ -19457,10 +20434,13 @@ } }, "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/minipass": { "version": "3.1.6", @@ -19686,12 +20666,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", - "dev": true - }, "node_modules/mv": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", @@ -19799,18 +20773,6 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, - "node_modules/ncom": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/ncom/-/ncom-1.0.3.tgz", - "integrity": "sha512-PfA7rjxxMAItsGo2qXrGn2GvKJIwN0bUTa3GehsblrKRVdCCEwB0QG2ymM6/DppQGUt7YqbfxQB7LaMWMiHHWQ==", - "dev": true, - "dependencies": { - "sc-formatter": "~3.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/ncp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", @@ -19847,9 +20809,9 @@ } }, "node_modules/node-abort-controller": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.0.1.tgz", - "integrity": "sha512-/ujIVxthRs+7q6hsdjHMaj8hRG9NuWmwrz+JdRwZ14jdFoKSkm+vDsCbF9PLpnSqjaWQJuTmVtcWHNLr+vrOFw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", + "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==", "dev": true }, "node_modules/node-domexception": { @@ -20116,12 +21078,15 @@ } }, "node_modules/normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", "dev": true, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/now-and-later": { @@ -20135,20 +21100,6 @@ "node": ">= 0.10" } }, - "node_modules/npm-conf": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz", - "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==", - "dev": true, - "optional": true, - "dependencies": { - "config-chain": "^1.1.11", - "pify": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", @@ -20494,22 +21445,13 @@ "node": ">= 0.4.0" } }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", "dev": true, "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/p-defer": { @@ -20693,42 +21635,6 @@ "node": ">=14.16" } }, - "node_modules/package-json/node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dev": true, - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/package-json/node_modules/decompress-response/node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/package-json/node_modules/defer-to-connect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", - "dev": true, - "engines": { - "node": ">=10" - } - }, "node_modules/package-json/node_modules/get-stream": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", @@ -20779,21 +21685,6 @@ "node": ">=10.19.0" } }, - "node_modules/package-json/node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true - }, - "node_modules/package-json/node_modules/keyv": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", - "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", - "dev": true, - "dependencies": { - "json-buffer": "3.0.1" - } - }, "node_modules/package-json/node_modules/lowercase-keys": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", @@ -21104,9 +21995,9 @@ "dev": true }, "node_modules/pg-connection-string": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz", - "integrity": "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.1.tgz", + "integrity": "sha512-w6ZzNu6oMmIzEAYVw+RLK0+nqHPt8K3ZnknKi+g48Ak2pr3dtljJW3o+D/n2zzCG07Zoe9VOX3aiKpj+BN0pjg==", "dev": true }, "node_modules/picocolors": { @@ -21138,16 +22029,6 @@ "node": ">=0.10" } }, - "node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true, - "optional": true, - "engines": { - "node": ">=4" - } - }, "node_modules/pino": { "version": "8.11.0", "resolved": "https://registry.npmjs.org/pino/-/pino-8.11.0.tgz", @@ -21417,15 +22298,6 @@ "node": ">= 0.8.0" } }, - "node_modules/prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/prettier": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.0.tgz", @@ -21902,6 +22774,16 @@ "lodash.curry": "^4.1.1" } }, + "node_modules/react-base16-styling/node_modules/color": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.3", + "color-string": "^1.6.0" + } + }, "node_modules/react-dom": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", @@ -21915,16 +22797,6 @@ "react": "17.0.2" } }, - "node_modules/react-dragula": { - "version": "1.1.17", - "resolved": "https://registry.npmjs.org/react-dragula/-/react-dragula-1.1.17.tgz", - "integrity": "sha1-s8s1KkcKcZNnupnWpUAcYPrU9v8=", - "dev": true, - "dependencies": { - "atoa": "1.0.0", - "dragula": "3.7.2" - } - }, "node_modules/react-error-boundary": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/react-error-boundary/-/react-error-boundary-3.1.4.tgz", @@ -22027,9 +22899,9 @@ } }, "node_modules/react-icons": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-4.3.1.tgz", - "integrity": "sha512-cB10MXLTs3gVuXimblAdI71jrJx8njrJZmNMEMC+sQu5B/BIOmlsAjskdqpn81y8UBVEGuHODd7/ci5DvoSzTQ==", + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-4.11.0.tgz", + "integrity": "sha512-V+4khzYcE5EBk/BvcuYRq6V/osf11ODUM2J8hg2FDSswRrGvqiYUYPRy4OdrWaQOBj4NcpJfmHZLNaD+VH0TyA==", "dev": true, "peerDependencies": { "react": "*" @@ -22079,24 +22951,23 @@ } }, "node_modules/react-is": { - "version": "18.1.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.1.0.tgz", - "integrity": "sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==" + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" }, "node_modules/react-json-tree": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/react-json-tree/-/react-json-tree-0.16.2.tgz", - "integrity": "sha512-80F7ZTqeOl1YaS/sDce4tYBcSe69/d0mlUmcIhyXezPFctWrtvyN56EMExX9jWsq3XMdvsUKKPUeNo8QCBy2jg==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/react-json-tree/-/react-json-tree-0.18.0.tgz", + "integrity": "sha512-Qe6HKSXrr++n9Y31nkRJ3XvQMATISpqigH1vEKhLwB56+nk5thTP0ITThpjxY6ZG/ubpVq/aEHIcyLP/OPHxeA==", "dev": true, "dependencies": { - "@babel/runtime": "^7.17.8", - "@types/prop-types": "^15.7.4", - "prop-types": "^15.8.1", + "@babel/runtime": "^7.20.6", + "@types/lodash": "^4.14.191", "react-base16-styling": "^0.9.1" }, "peerDependencies": { - "@types/react": "^16.3.0 || ^17.0.0", - "react": "^16.3.0 || ^17.0.0" + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, "node_modules/react-lifecycles-compat": { @@ -22220,41 +23091,6 @@ "react-dom": ">=16.8" } }, - "node_modules/react-select": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.3.2.tgz", - "integrity": "sha512-W6Irh7U6Ha7p5uQQ2ZnemoCQ8mcfgOtHfw3wuMzG6FAu0P+CYicgofSLOq97BhjMx8jS+h+wwWdCBeVVZ9VqlQ==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.12.0", - "@emotion/cache": "^11.4.0", - "@emotion/react": "^11.8.1", - "@types/react-transition-group": "^4.4.0", - "memoize-one": "^5.0.0", - "prop-types": "^15.6.0", - "react-transition-group": "^4.3.0" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/react-transition-group": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.2.tgz", - "integrity": "sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.5.5", - "dom-helpers": "^5.0.1", - "loose-envify": "^1.4.0", - "prop-types": "^15.6.2" - }, - "peerDependencies": { - "react": ">=16.6.0", - "react-dom": ">=16.6.0" - } - }, "node_modules/readable-stream": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", @@ -22290,15 +23126,15 @@ } }, "node_modules/rechoir": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.0.tgz", - "integrity": "sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", "dev": true, "dependencies": { - "resolve": "^1.9.0" + "resolve": "^1.20.0" }, "engines": { - "node": ">= 0.10" + "node": ">= 10.13.0" } }, "node_modules/redent": { @@ -22359,7 +23195,7 @@ "node_modules/redux-devtools-themes": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/redux-devtools-themes/-/redux-devtools-themes-1.0.0.tgz", - "integrity": "sha1-xILc48U3OXYEX0ATSQfZ3LOuPV0=", + "integrity": "sha512-hBWqdZX+dioMWnTjf8+uSm0q1wCdYO4kU5gERzHcMMbu0Qg7JDR42TnJ6GHJ6r7k/tIpsCSygc9U0ehAtR24TQ==", "dev": true, "dependencies": { "base16": "^1.0.0" @@ -22383,9 +23219,9 @@ } }, "node_modules/redux-thunk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.1.tgz", - "integrity": "sha512-OOYGNY5Jy2TWvTL1KgAlVy6dcx3siPJ1wTq741EPyUKfn6W6nChdICjZwCd0p8AZBs5kWpZlbkXW2nE/zjUa+Q==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.2.tgz", + "integrity": "sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q==", "dev": true, "peerDependencies": { "redux": "^4" @@ -22859,12 +23695,15 @@ } }, "node_modules/responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", "dev": true, "dependencies": { - "lowercase-keys": "^1.0.0" + "lowercase-keys": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/restore-cursor": { @@ -22943,6 +23782,12 @@ "node": ">=8.0" } }, + "node_modules/robust-predicates": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", + "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==", + "dev": true + }, "node_modules/rsvp": { "version": "4.8.5", "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", @@ -22951,13 +23796,19 @@ "node": "6.* || >= 7.*" } }, - "node_modules/run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "node_modules/run-applescript": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz", + "integrity": "sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==", "dev": true, + "dependencies": { + "execa": "^5.0.0" + }, "engines": { - "node": ">=0.12.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/run-con": { @@ -23007,6 +23858,12 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", + "dev": true + }, "node_modules/rxjs": { "version": "7.5.7", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz", @@ -23074,77 +23931,6 @@ "node": ">=v12.22.7" } }, - "node_modules/sc-auth": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/sc-auth/-/sc-auth-5.0.2.tgz", - "integrity": "sha512-Le3YBsFjzv5g6wIH6Y+vD+KFkK0HDXiaWy1Gm4nXtYebMQUyNYSf1cS83MtHrYzVEMlhYElRva1b0bvZ0hBqQw==", - "dev": true, - "dependencies": { - "jsonwebtoken": "^8.3.0", - "sc-errors": "^1.4.1" - } - }, - "node_modules/sc-broker": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/sc-broker/-/sc-broker-6.0.0.tgz", - "integrity": "sha512-c1mFIllUdPnEXDDFxTiX3obYW+cT0hb56fdNM5k+Xo5DI3+3Q9MYxTc8jD23qBIXOHokt4+d/CHocmZQPlAjAQ==", - "dev": true, - "dependencies": { - "async": "^2.6.1", - "expirymanager": "^0.9.3", - "fleximap": "^1.0.0", - "ncom": "^1.0.2", - "sc-errors": "^1.4.1", - "uuid": "3.1.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/sc-broker-cluster": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/sc-broker-cluster/-/sc-broker-cluster-7.0.0.tgz", - "integrity": "sha512-DNG8sxiFwmRSMS0sUXA25UvDV8QTwEfYnzrutqbp4HlMU9JP65FBcs6GuNFPhjQN4s9VtwAE8BBaCNK5BjNV0g==", - "dev": true, - "dependencies": { - "async": "2.0.0", - "sc-broker": "^6.0.0", - "sc-channel": "^1.2.0", - "sc-errors": "^1.4.1", - "sc-hasher": "^1.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/sc-broker-cluster/node_modules/async": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/async/-/async-2.0.0.tgz", - "integrity": "sha512-x4YEotAaoO+dq8o23H0Clqm+b0KQ7hYHFfqxIz4ORzLzAdwH0K7S5/Q+mDo/wVyGdFYA0l7XE70Y9915PuEyqg==", - "dev": true, - "dependencies": { - "lodash": "^4.8.0" - } - }, - "node_modules/sc-broker/node_modules/async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "dev": true, - "dependencies": { - "lodash": "^4.17.14" - } - }, - "node_modules/sc-broker/node_modules/uuid": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", - "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "dev": true, - "bin": { - "uuid": "bin/uuid" - } - }, "node_modules/sc-channel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/sc-channel/-/sc-channel-1.2.0.tgz", @@ -23155,9 +23941,9 @@ } }, "node_modules/sc-errors": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/sc-errors/-/sc-errors-1.4.1.tgz", - "integrity": "sha512-dBn92iIonpChTxYLgKkIT/PCApvmYT6EPIbRvbQKTgY6tbEbIy8XVUv4pGyKwEK4nCmvX4TKXcN0iXC6tNW6rQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/sc-errors/-/sc-errors-2.0.1.tgz", + "integrity": "sha512-JoVhq3Ud+3Ujv2SIG7W0XtjRHsrNgl6iXuHHsh0s+Kdt5NwI6N2EGAZD4iteitdDv68ENBkpjtSvN597/wxPSQ==", "dev": true }, "node_modules/sc-formatter": { @@ -23166,21 +23952,6 @@ "integrity": "sha512-9PbqYBpCq+OoEeRQ3QfFIGE6qwjjBcd2j7UjgDlhnZbtSnuGgHdcRklPKYGuYFH82V/dwd+AIpu8XvA1zqTd+A==", "dev": true }, - "node_modules/sc-hasher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sc-hasher/-/sc-hasher-1.0.1.tgz", - "integrity": "sha512-whZWw70Gp5ibXXMcz6+Tulmk8xkwWMs42gG70p12hGscdUg8BICBvihS3pX2T3dWTw+yeZuGKiULr3MwL37SOQ==", - "dev": true - }, - "node_modules/sc-simple-broker": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/sc-simple-broker/-/sc-simple-broker-2.1.3.tgz", - "integrity": "sha512-ldt0ybOS5fVZSMea5Z8qVu7lmDBTy0qO9BD6TseJjRuPx+g+stfSqmPAb0RsCsQUXRH8A1koCbwsuUnI9BOxvw==", - "dev": true, - "dependencies": { - "sc-channel": "^1.2.0" - } - }, "node_modules/scheduler": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", @@ -23308,7 +24079,7 @@ "node_modules/semver-compare": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", + "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", "dev": true, "optional": true }, @@ -23669,9 +24440,9 @@ "dev": true }, "node_modules/simple-diff": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/simple-diff/-/simple-diff-1.6.0.tgz", - "integrity": "sha1-m7XZUKe0ZNHsyG8gTog2UBnVpUI=", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/simple-diff/-/simple-diff-1.7.1.tgz", + "integrity": "sha512-adwK0aCHYSLEDOiAxb4TjGE3h2WGFox2Luzkqy9m68O/P2iEpZbcnFYKqrbWVgKXf/pUt+8yXvfSU38vXI8GSg==", "dev": true }, "node_modules/simple-element-resize-detector": { @@ -23683,7 +24454,7 @@ "node_modules/simple-swizzle": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", "dev": true, "dependencies": { "is-arrayish": "^0.3.1" @@ -23741,7 +24512,7 @@ "node_modules/sliced": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", - "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=", + "integrity": "sha512-VZBmZP8WU3sMOZm1bdgTadsQbcscK0UM8oKxKVBs4XAhUo2Xxzm/OFMGBkPusxw9xL3Uy8LrzEqGqJhclsr0yA==", "dev": true }, "node_modules/smart-buffer": { @@ -23755,27 +24526,6 @@ "npm": ">= 3.0.0" } }, - "node_modules/socketcluster": { - "version": "14.4.2", - "resolved": "https://registry.npmjs.org/socketcluster/-/socketcluster-14.4.2.tgz", - "integrity": "sha512-Z45tSQ6K/XUEyftrID1hyBXSdaK/gDeq6BMqhNR3XvjnUQ6HkkeTrxZUoXIn/In/J8KLl1WRVtvZAB0Zf9pEjA==", - "dev": true, - "dependencies": { - "async": "2.3.0", - "fs-extra": "6.0.1", - "inquirer": "5.2.0", - "minimist": "1.2.0", - "sc-auth": "^5.0.2", - "sc-broker-cluster": "^7.0.0", - "sc-errors": "^1.4.1", - "socketcluster-server": "^14.7.0", - "uid-number": "0.0.6", - "uuid": "3.2.1" - }, - "bin": { - "socketcluster": "bin/cli.js" - } - }, "node_modules/socketcluster-client": { "version": "14.3.2", "resolved": "https://registry.npmjs.org/socketcluster-client/-/socketcluster-client-14.3.2.tgz", @@ -23804,12 +24554,6 @@ "node": ">=0.4.x" } }, - "node_modules/socketcluster-client/node_modules/sc-errors": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/sc-errors/-/sc-errors-2.0.1.tgz", - "integrity": "sha512-JoVhq3Ud+3Ujv2SIG7W0XtjRHsrNgl6iXuHHsh0s+Kdt5NwI6N2EGAZD4iteitdDv68ENBkpjtSvN597/wxPSQ==", - "dev": true - }, "node_modules/socketcluster-client/node_modules/uuid": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", @@ -23821,88 +24565,49 @@ } }, "node_modules/socketcluster-server": { - "version": "14.7.2", - "resolved": "https://registry.npmjs.org/socketcluster-server/-/socketcluster-server-14.7.2.tgz", - "integrity": "sha512-PHFez3OXpxZ0jMm+JleYzshwCT7EXdldlVQnZpLCHM8BARSgbr6C+vuD5lHCvUDJc+T6kVFNEHQ1Hnhzw21CSw==", + "version": "17.4.1", + "resolved": "https://registry.npmjs.org/socketcluster-server/-/socketcluster-server-17.4.1.tgz", + "integrity": "sha512-ElKD9U7EncoWNGYOL+G6UAxuYmui1fnawpyhZIpFG/A/lDNGwHsQLNIpJXh1SB4BpoQLn2q4ewwnUK3Mse5mfA==", "dev": true, "dependencies": { - "async": "^3.1.0", - "base64id": "1.0.0", - "component-emitter": "1.2.1", - "lodash.clonedeep": "4.5.0", - "sc-auth": "^5.0.2", + "ag-auth": "^2.0.0", + "ag-request": "^1.0.0", + "ag-simple-broker": "^5.0.0", + "async-stream-emitter": "^4.0.0", + "base64id": "^2.0.0", + "clone-deep": "^4.0.1", "sc-errors": "^2.0.1", - "sc-formatter": "^3.0.2", - "sc-simple-broker": "^2.1.3", - "uuid": "3.2.1", - "ws": "^7.5.0" + "sc-formatter": "^4.0.0", + "stream-demux": "^8.0.0", + "writable-consumable-stream": "^2.0.0", + "ws": "^8.9.0" } }, - "node_modules/socketcluster-server/node_modules/async": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", - "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==", - "dev": true - }, - "node_modules/socketcluster-server/node_modules/sc-errors": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/sc-errors/-/sc-errors-2.0.1.tgz", - "integrity": "sha512-JoVhq3Ud+3Ujv2SIG7W0XtjRHsrNgl6iXuHHsh0s+Kdt5NwI6N2EGAZD4iteitdDv68ENBkpjtSvN597/wxPSQ==", - "dev": true - }, - "node_modules/socketcluster-server/node_modules/uuid": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", - "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "dev": true, - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/socketcluster/node_modules/fs-extra": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz", - "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "node_modules/socketcluster/node_modules/jsonfile": { + "node_modules/socketcluster-server/node_modules/sc-formatter": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/socketcluster/node_modules/minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha512-7Wl+Jz+IGWuSdgsQEJ4JunV0si/iMhg42MnQQG6h1R6TNeVenp4U9x5CC5v/gYqz/fENLQITAWXidNtVL0NNbw==", + "resolved": "https://registry.npmjs.org/sc-formatter/-/sc-formatter-4.0.0.tgz", + "integrity": "sha512-MgUIvuca+90fBrCWY5LdlU9YUWjlkPFwdpvmomcwQEu3t2id/6YHdG2nhB6o7nhRp4ocfmcXQTh00r/tJtynSg==", "dev": true }, - "node_modules/socketcluster/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "node_modules/socketcluster-server/node_modules/ws": { + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.1.tgz", + "integrity": "sha512-4OOseMUq8AzRBI/7SLMUwO+FEDnguetSk7KMb1sHwvF2w2Wv5Hoj0nlifx8vtGsftE/jWHojPy8sMMzYLJ2G/A==", "dev": true, "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/socketcluster/node_modules/uuid": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", - "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "dev": true, - "bin": { - "uuid": "bin/uuid" + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, "node_modules/sockjs": { @@ -23972,7 +24677,7 @@ "node_modules/source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "dev": true, "engines": { "node": ">=0.10.0" @@ -24248,6 +24953,25 @@ "node": ">= 0.8" } }, + "node_modules/stream-demux": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/stream-demux/-/stream-demux-8.1.0.tgz", + "integrity": "sha512-20vtOmAj2EVzQZKZVmfyio16u/3QOKSvg+0ldgZeS+m2FNI1vKFoqggamagsPCXufdZ1Tk8VvAM/HV/YUmRbSg==", + "dev": true, + "dependencies": { + "consumable-stream": "^2.0.0", + "writable-consumable-stream": "^3.0.1" + } + }, + "node_modules/stream-demux/node_modules/writable-consumable-stream": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/writable-consumable-stream/-/writable-consumable-stream-3.0.1.tgz", + "integrity": "sha512-rAOJTA/sMgXD/X6eMwbQJe49w+Fnkdx3iV5oUzdmiZ7Bwx03khqUnAKIpzp/hbI8q2EP5NfjXgIXN0MsipfHeg==", + "dev": true, + "dependencies": { + "consumable-stream": "^2.0.0" + } + }, "node_modules/stream-shift": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", @@ -24562,9 +25286,9 @@ } }, "node_modules/stylis": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.0.13.tgz", - "integrity": "sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==", "dev": true }, "node_modules/sumchecker": { @@ -24878,12 +25602,6 @@ "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", "dev": true }, - "node_modules/ticky": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ticky/-/ticky-1.0.1.tgz", - "integrity": "sha1-t8+nHnaPHJAAxJe5FRswlHxQ5G0=", - "dev": true - }, "node_modules/tildify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/tildify/-/tildify-2.0.0.tgz", @@ -24899,6 +25617,18 @@ "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==", "dev": true }, + "node_modules/titleize": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz", + "integrity": "sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/tmp": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", @@ -24937,15 +25667,6 @@ "node": ">=4" } }, - "node_modules/to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -25453,16 +26174,6 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, - "node_modules/tunnel": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", - "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.6.11 <=0.7.0 || >=0.7.3" - } - }, "node_modules/tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -25596,15 +26307,6 @@ "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", "dev": true }, - "node_modules/uid-number": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz", - "integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=", - "dev": true, - "engines": { - "node": "*" - } - }, "node_modules/unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", @@ -25750,6 +26452,15 @@ "node": ">= 0.8" } }, + "node_modules/untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/upath": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz", @@ -25905,16 +26616,18 @@ "requires-port": "^1.0.0" } }, - "node_modules/url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "node_modules/use-isomorphic-layout-effect": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz", + "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==", "dev": true, - "dependencies": { - "prepend-http": "^2.0.0" + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" }, - "engines": { - "node": ">=4" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, "node_modules/use-sync-external-store": { @@ -25977,19 +26690,19 @@ "node_modules/validate.io-array": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/validate.io-array/-/validate.io-array-1.0.6.tgz", - "integrity": "sha1-W1osr9j4uFq7L4hroVPy2Tond00=", + "integrity": "sha512-DeOy7CnPEziggrOO5CZhVKJw6S3Yi7e9e65R1Nl/RTN1vTQKnzjfvks0/8kQ40FP/dsjRAOd4hxmJ7uLa6vxkg==", "dev": true }, "node_modules/validate.io-function": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/validate.io-function/-/validate.io-function-1.0.2.tgz", - "integrity": "sha1-NDoZgC7TsZaCaceA5VjpNBHAutc=", + "integrity": "sha512-LlFybRJEriSuBnUhQyG5bwglhh50EpTL2ul23MPIuR1odjO7XaMLFV8vHGwp7AZciFxtYOeiSCT5st+XSPONiQ==", "dev": true }, "node_modules/validate.io-integer": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/validate.io-integer/-/validate.io-integer-1.0.5.tgz", - "integrity": "sha1-FoSWSAuVviJH7EQ/IjPeT4mHgGg=", + "integrity": "sha512-22izsYSLojN/P6bppBqhgUDjCkr5RY2jd+N2a3DCAUey8ydvrZ/OkGvFPR7qfOpwR2LC5p4Ngzxz36g5Vgr/hQ==", "dev": true, "dependencies": { "validate.io-number": "^1.0.3" @@ -25998,7 +26711,7 @@ "node_modules/validate.io-integer-array": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/validate.io-integer-array/-/validate.io-integer-array-1.0.0.tgz", - "integrity": "sha1-LKveAzKTpry+Bj/q/pHq9GsToIk=", + "integrity": "sha512-mTrMk/1ytQHtCY0oNO3dztafHYyGU88KL+jRxWuzfOmQb+4qqnWmI+gykvGp8usKZOM0H7keJHEbRaFiYA0VrA==", "dev": true, "dependencies": { "validate.io-array": "^1.0.3", @@ -26008,7 +26721,7 @@ "node_modules/validate.io-number": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/validate.io-number/-/validate.io-number-1.0.3.tgz", - "integrity": "sha1-9j/+2iSL8opnqNSODjtGGhZluvg=", + "integrity": "sha512-kRAyotcbNaSYoDnXvb4MHg/0a1egJdLwS6oJ38TJY7aw9n93Fl/3blIXdyYvPOp55CNxywooG/3BcrwNrBpcSg==", "dev": true }, "node_modules/value-or-function": { @@ -26020,9 +26733,9 @@ } }, "node_modules/value-or-promise": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.11.tgz", - "integrity": "sha512-41BrgH+dIbCFXClcSapVs5M6GkENd3gQOJpEfPDNa71LsUGMXDL0jMWpI/Rh7WhX+Aalfz2TTS3Zt5pUsbnhLg==", + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.12.tgz", + "integrity": "sha512-Z6Uz+TYwEqE7ZN50gwn+1LCVo9ZVrpxRPOhOLnncYkY1ZzOYtrX8Fwf/rFktZ8R5mJms6EZf5TqNOMeZmnPq9Q==", "dev": true, "engines": { "node": ">=12" @@ -26067,6 +26780,50 @@ "node": ">= 0.10" } }, + "node_modules/vinyl-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vinyl-buffer/-/vinyl-buffer-1.0.1.tgz", + "integrity": "sha512-LRBE2/g3C1hSHL2k/FynSZcVTRhEw8sb08oKGt/0hukZXwrh2m8nfy+r5yLhGEk7eFFuclhyIuPct/Bxlxk6rg==", + "dev": true, + "dependencies": { + "bl": "^1.2.1", + "through2": "^2.0.3" + } + }, + "node_modules/vinyl-buffer/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/vinyl-buffer/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/vinyl-buffer/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, "node_modules/vinyl-fs": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", @@ -26533,18 +27290,6 @@ "node": ">=10.13.0" } }, - "node_modules/webpack-cli/node_modules/rechoir": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", - "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", - "dev": true, - "dependencies": { - "resolve": "^1.20.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, "node_modules/webpack-dev-middleware": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.1.tgz", @@ -26993,6 +27738,15 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, + "node_modules/writable-consumable-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/writable-consumable-stream/-/writable-consumable-stream-2.0.0.tgz", + "integrity": "sha512-SITambzxtPTFU/wR82h+zOKGBiEv5V8gC1mt8xvoE1/168ApEa8H+6s2UToYJo3VLL7sNYTaApKuPD+pZHMGJQ==", + "dev": true, + "dependencies": { + "consumable-stream": "^2.0.0" + } + }, "node_modules/write-file-atomic": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", @@ -27089,28 +27843,6 @@ "integrity": "sha1-Z9a7w/ajIOwxfj5jaMVwa2ER3uw=", "dev": true }, - "node_modules/xss": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.11.tgz", - "integrity": "sha512-EimjrjThZeK2MO7WKR9mN5ZC1CSqivSl55wvUK5EtU6acf0rzEE1pN+9ZDrFXJ82BRp3JL38pPE6S4o/rpp1zQ==", - "dev": true, - "dependencies": { - "commander": "^2.20.3", - "cssfilter": "0.0.10" - }, - "bin": { - "xss": "bin/xss" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/xss/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -27318,6 +28050,13 @@ "@jridgewell/trace-mapping": "^0.3.9" } }, + "@apollo/cache-control-types": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@apollo/cache-control-types/-/cache-control-types-1.0.3.tgz", + "integrity": "sha512-F17/vCp7QVwom9eG7ToauIKdAxpSoadsJnqIfyryLFSkLSOEqu+eC5Z3N8OXcUVStuOMcNHlyraRsA6rRICu4g==", + "dev": true, + "requires": {} + }, "@apollo/protobufjs": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.2.7.tgz", @@ -27338,105 +28077,177 @@ "long": "^4.0.0" } }, + "@apollo/server": { + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/@apollo/server/-/server-4.9.3.tgz", + "integrity": "sha512-U56Sx/UmzR3Es344hQ/Ptf2EJrH+kV4ZPoLmgGjWoiwf2wYQ/pRSvkSXgjOvoyE34wSa8Gh7f92ljfLfY+6q1w==", + "dev": true, + "requires": { + "@apollo/cache-control-types": "^1.0.3", + "@apollo/server-gateway-interface": "^1.1.1", + "@apollo/usage-reporting-protobuf": "^4.1.1", + "@apollo/utils.createhash": "^2.0.0", + "@apollo/utils.fetcher": "^2.0.0", + "@apollo/utils.isnodelike": "^2.0.0", + "@apollo/utils.keyvaluecache": "^2.1.0", + "@apollo/utils.logger": "^2.0.0", + "@apollo/utils.usagereporting": "^2.1.0", + "@apollo/utils.withrequired": "^2.0.0", + "@graphql-tools/schema": "^9.0.0", + "@josephg/resolvable": "^1.0.0", + "@types/express": "^4.17.13", + "@types/express-serve-static-core": "^4.17.30", + "@types/node-fetch": "^2.6.1", + "async-retry": "^1.2.1", + "body-parser": "^1.20.0", + "cors": "^2.8.5", + "express": "^4.17.1", + "loglevel": "^1.6.8", + "lru-cache": "^7.10.1", + "negotiator": "^0.6.3", + "node-abort-controller": "^3.1.1", + "node-fetch": "^2.6.7", + "uuid": "^9.0.0", + "whatwg-mimetype": "^3.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true + }, + "uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "dev": true + } + } + }, + "@apollo/server-gateway-interface": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@apollo/server-gateway-interface/-/server-gateway-interface-1.1.1.tgz", + "integrity": "sha512-pGwCl/po6+rxRmDMFgozKQo2pbsSwE91TpsDBAOgf74CRDPXHHtM88wbwjab0wMMZh95QfR45GGyDIdhY24bkQ==", + "dev": true, + "requires": { + "@apollo/usage-reporting-protobuf": "^4.1.1", + "@apollo/utils.fetcher": "^2.0.0", + "@apollo/utils.keyvaluecache": "^2.1.0", + "@apollo/utils.logger": "^2.0.0" + } + }, "@apollo/usage-reporting-protobuf": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@apollo/usage-reporting-protobuf/-/usage-reporting-protobuf-4.0.2.tgz", - "integrity": "sha512-GfE8aDqi/lAFut95pjH9IRvH0zGsQ5G/2lYL0ZLZfML7ArX+A4UVHFANQcPCcUYGE6bI6OPhLekg4Vsjf6B1cw==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@apollo/usage-reporting-protobuf/-/usage-reporting-protobuf-4.1.1.tgz", + "integrity": "sha512-u40dIUePHaSKVshcedO7Wp+mPiZsaU6xjv9J+VyxpoU/zL6Jle+9zWeG98tr/+SZ0nZ4OXhrbb8SNr0rAPpIDA==", "dev": true, "requires": { "@apollo/protobufjs": "1.2.7" } }, + "@apollo/utils.createhash": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@apollo/utils.createhash/-/utils.createhash-2.0.1.tgz", + "integrity": "sha512-fQO4/ZOP8LcXWvMNhKiee+2KuKyqIcfHrICA+M4lj/h/Lh1H10ICcUtk6N/chnEo5HXu0yejg64wshdaiFitJg==", + "dev": true, + "requires": { + "@apollo/utils.isnodelike": "^2.0.1", + "sha.js": "^2.4.11" + } + }, "@apollo/utils.dropunuseddefinitions": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@apollo/utils.dropunuseddefinitions/-/utils.dropunuseddefinitions-1.1.0.tgz", - "integrity": "sha512-jU1XjMr6ec9pPoL+BFWzEPW7VHHulVdGKMkPAMiCigpVIT11VmCbnij0bWob8uS3ODJ65tZLYKAh/55vLw2rbg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@apollo/utils.dropunuseddefinitions/-/utils.dropunuseddefinitions-2.0.1.tgz", + "integrity": "sha512-EsPIBqsSt2BwDsv8Wu76LK5R1KtsVkNoO4b0M5aK0hx+dGg9xJXuqlr7Fo34Dl+y83jmzn+UvEW+t1/GP2melA==", "dev": true, "requires": {} }, + "@apollo/utils.fetcher": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@apollo/utils.fetcher/-/utils.fetcher-2.0.1.tgz", + "integrity": "sha512-jvvon885hEyWXd4H6zpWeN3tl88QcWnHp5gWF5OPF34uhvoR+DFqcNxs9vrRaBBSY3qda3Qe0bdud7tz2zGx1A==", + "dev": true + }, + "@apollo/utils.isnodelike": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@apollo/utils.isnodelike/-/utils.isnodelike-2.0.1.tgz", + "integrity": "sha512-w41XyepR+jBEuVpoRM715N2ZD0xMD413UiJx8w5xnAZD2ZkSJnMJBoIzauK83kJpSgNuR6ywbV29jG9NmxjK0Q==", + "dev": true + }, "@apollo/utils.keyvaluecache": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@apollo/utils.keyvaluecache/-/utils.keyvaluecache-1.0.2.tgz", - "integrity": "sha512-p7PVdLPMnPzmXSQVEsy27cYEjVON+SH/Wb7COyW3rQN8+wJgT1nv9jZouYtztWW8ZgTkii5T6tC9qfoDREd4mg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@apollo/utils.keyvaluecache/-/utils.keyvaluecache-2.1.1.tgz", + "integrity": "sha512-qVo5PvUUMD8oB9oYvq4ViCjYAMWnZ5zZwEjNF37L2m1u528x5mueMlU+Cr1UinupCgdB78g+egA1G98rbJ03Vw==", "dev": true, "requires": { - "@apollo/utils.logger": "^1.0.0", - "lru-cache": "7.10.1 - 7.13.1" + "@apollo/utils.logger": "^2.0.1", + "lru-cache": "^7.14.1" }, "dependencies": { "lru-cache": { - "version": "7.13.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.13.1.tgz", - "integrity": "sha512-CHqbAq7NFlW3RSnoWXLJBxCWaZVBrfa9UEHId2M3AW8iEBurbqduNexEUCGc3SHc6iCYXNJCDi903LajSVAEPQ==", + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true } } }, "@apollo/utils.logger": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@apollo/utils.logger/-/utils.logger-1.0.0.tgz", - "integrity": "sha512-dx9XrjyisD2pOa+KsB5RcDbWIAdgC91gJfeyLCgy0ctJMjQe7yZK5kdWaWlaOoCeX0z6YI9iYlg7vMPyMpQF3Q==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@apollo/utils.logger/-/utils.logger-2.0.1.tgz", + "integrity": "sha512-YuplwLHaHf1oviidB7MxnCXAdHp3IqYV8n0momZ3JfLniae92eYqMIx+j5qJFX6WKJPs6q7bczmV4lXIsTu5Pg==", "dev": true }, "@apollo/utils.printwithreducedwhitespace": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@apollo/utils.printwithreducedwhitespace/-/utils.printwithreducedwhitespace-1.1.0.tgz", - "integrity": "sha512-GfFSkAv3n1toDZ4V6u2d7L4xMwLA+lv+6hqXicMN9KELSJ9yy9RzuEXaX73c/Ry+GzRsBy/fdSUGayGqdHfT2Q==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@apollo/utils.printwithreducedwhitespace/-/utils.printwithreducedwhitespace-2.0.1.tgz", + "integrity": "sha512-9M4LUXV/fQBh8vZWlLvb/HyyhjJ77/I5ZKu+NBWV/BmYGyRmoEP9EVAy7LCVoY3t8BDcyCAGfxJaLFCSuQkPUg==", "dev": true, "requires": {} }, "@apollo/utils.removealiases": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@apollo/utils.removealiases/-/utils.removealiases-1.0.0.tgz", - "integrity": "sha512-6cM8sEOJW2LaGjL/0vHV0GtRaSekrPQR4DiywaApQlL9EdROASZU5PsQibe2MWeZCOhNrPRuHh4wDMwPsWTn8A==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@apollo/utils.removealiases/-/utils.removealiases-2.0.1.tgz", + "integrity": "sha512-0joRc2HBO4u594Op1nev+mUF6yRnxoUH64xw8x3bX7n8QBDYdeYgY4tF0vJReTy+zdn2xv6fMsquATSgC722FA==", "dev": true, "requires": {} }, "@apollo/utils.sortast": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@apollo/utils.sortast/-/utils.sortast-1.1.0.tgz", - "integrity": "sha512-VPlTsmUnOwzPK5yGZENN069y6uUHgeiSlpEhRnLFYwYNoJHsuJq2vXVwIaSmts015WTPa2fpz1inkLYByeuRQA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@apollo/utils.sortast/-/utils.sortast-2.0.1.tgz", + "integrity": "sha512-eciIavsWpJ09za1pn37wpsCGrQNXUhM0TktnZmHwO+Zy9O4fu/WdB4+5BvVhFiZYOXvfjzJUcc+hsIV8RUOtMw==", "dev": true, "requires": { "lodash.sortby": "^4.7.0" } }, "@apollo/utils.stripsensitiveliterals": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@apollo/utils.stripsensitiveliterals/-/utils.stripsensitiveliterals-1.2.0.tgz", - "integrity": "sha512-E41rDUzkz/cdikM5147d8nfCFVKovXxKBcjvLEQ7bjZm/cg9zEcXvS6vFY8ugTubI3fn6zoqo0CyU8zT+BGP9w==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@apollo/utils.stripsensitiveliterals/-/utils.stripsensitiveliterals-2.0.1.tgz", + "integrity": "sha512-QJs7HtzXS/JIPMKWimFnUMK7VjkGQTzqD9bKD1h3iuPAqLsxd0mUNVbkYOPTsDhUKgcvUOfOqOJWYohAKMvcSA==", "dev": true, "requires": {} }, "@apollo/utils.usagereporting": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@apollo/utils.usagereporting/-/utils.usagereporting-1.0.1.tgz", - "integrity": "sha512-6dk+0hZlnDbahDBB2mP/PZ5ybrtCJdLMbeNJD+TJpKyZmSY6bA3SjI8Cr2EM9QA+AdziywuWg+SgbWUF3/zQqQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@apollo/utils.usagereporting/-/utils.usagereporting-2.1.0.tgz", + "integrity": "sha512-LPSlBrn+S17oBy5eWkrRSGb98sWmnEzo3DPTZgp8IQc8sJe0prDgDuppGq4NeQlpoqEHz0hQeYHAOA0Z3aQsxQ==", "dev": true, "requires": { - "@apollo/usage-reporting-protobuf": "^4.0.0", - "@apollo/utils.dropunuseddefinitions": "^1.1.0", - "@apollo/utils.printwithreducedwhitespace": "^1.1.0", - "@apollo/utils.removealiases": "1.0.0", - "@apollo/utils.sortast": "^1.1.0", - "@apollo/utils.stripsensitiveliterals": "^1.2.0" + "@apollo/usage-reporting-protobuf": "^4.1.0", + "@apollo/utils.dropunuseddefinitions": "^2.0.1", + "@apollo/utils.printwithreducedwhitespace": "^2.0.1", + "@apollo/utils.removealiases": "2.0.1", + "@apollo/utils.sortast": "^2.0.1", + "@apollo/utils.stripsensitiveliterals": "^2.0.1" } }, - "@apollographql/apollo-tools": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/@apollographql/apollo-tools/-/apollo-tools-0.5.4.tgz", - "integrity": "sha512-shM3q7rUbNyXVVRkQJQseXv6bnYM3BUma/eZhwXR4xsuM+bqWnJKvW7SAfRjP7LuSCocrexa5AXhjjawNHrIlw==", - "dev": true, - "requires": {} - }, - "@apollographql/graphql-playground-html": { - "version": "1.6.29", - "resolved": "https://registry.npmjs.org/@apollographql/graphql-playground-html/-/graphql-playground-html-1.6.29.tgz", - "integrity": "sha512-xCcXpoz52rI4ksJSdOCxeOCn2DLocxwHf9dVT/Q90Pte1LX+LY+91SFtJF3KXVHH8kEin+g1KKCQPKBjZJfWNA==", - "dev": true, - "requires": { - "xss": "^1.0.8" - } + "@apollo/utils.withrequired": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@apollo/utils.withrequired/-/utils.withrequired-2.0.1.tgz", + "integrity": "sha512-YBDiuAX9i1lLc6GeTy1m7DGLFn/gMnvXqlalOIMjM7DeOgIacEjjfwPqb0M1CQ2v11HhR15d1NmxJoRCfrNqcA==", + "dev": true }, "@babel/code-frame": { "version": "7.22.5", @@ -28810,18 +29621,66 @@ "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", "dev": true }, + "@dnd-kit/accessibility": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@dnd-kit/accessibility/-/accessibility-3.0.1.tgz", + "integrity": "sha512-HXRrwS9YUYQO9lFRc/49uO/VICbM+O+ZRpFDe9Pd1rwVv2PCNkRiTZRdxrDgng/UkvdC3Re9r2vwPpXXrWeFzg==", + "dev": true, + "requires": { + "tslib": "^2.0.0" + } + }, + "@dnd-kit/core": { + "version": "6.0.8", + "resolved": "https://registry.npmjs.org/@dnd-kit/core/-/core-6.0.8.tgz", + "integrity": "sha512-lYaoP8yHTQSLlZe6Rr9qogouGUz9oRUj4AHhDQGQzq/hqaJRpFo65X+JKsdHf8oUFBzx5A+SJPUvxAwTF2OabA==", + "dev": true, + "requires": { + "@dnd-kit/accessibility": "^3.0.0", + "@dnd-kit/utilities": "^3.2.1", + "tslib": "^2.0.0" + } + }, + "@dnd-kit/modifiers": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@dnd-kit/modifiers/-/modifiers-6.0.1.tgz", + "integrity": "sha512-rbxcsg3HhzlcMHVHWDuh9LCjpOVAgqbV78wLGI8tziXY3+qcMQ61qVXIvNKQFuhj75dSfD+o+PYZQ/NUk2A23A==", + "dev": true, + "requires": { + "@dnd-kit/utilities": "^3.2.1", + "tslib": "^2.0.0" + } + }, + "@dnd-kit/sortable": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@dnd-kit/sortable/-/sortable-7.0.2.tgz", + "integrity": "sha512-wDkBHHf9iCi1veM834Gbk1429bd4lHX4RpAwT0y2cHLf246GAvU2sVw/oxWNpPKQNQRQaeGXhAVgrOl1IT+iyA==", + "dev": true, + "requires": { + "@dnd-kit/utilities": "^3.2.0", + "tslib": "^2.0.0" + } + }, + "@dnd-kit/utilities": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@dnd-kit/utilities/-/utilities-3.2.1.tgz", + "integrity": "sha512-OOXqISfvBw/1REtkSK2N3Fi2EQiLMlWUlqnOK/UpOISqBZPWpE6TqL+jcPtMOkE8TqYGiURvRdPSI9hltNUjEA==", + "dev": true, + "requires": { + "tslib": "^2.0.0" + } + }, "@electron/get": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.14.1.tgz", - "integrity": "sha512-BrZYyL/6m0ZXz/lDxy/nlVhQz+WF+iPS6qXolEU8atw7h6v1aYkjwJZ63m+bJMBTxDE66X+r2tPS4a/8C82sZw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@electron/get/-/get-2.0.3.tgz", + "integrity": "sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==", "dev": true, "requires": { "debug": "^4.1.1", "env-paths": "^2.2.0", "fs-extra": "^8.1.0", "global-agent": "^3.0.0", - "global-tunnel-ng": "^2.7.1", - "got": "^9.6.0", + "got": "^11.8.5", "progress": "^2.0.3", "semver": "^6.2.0", "sumchecker": "^3.0.1" @@ -28841,7 +29700,7 @@ "jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "dev": true, "requires": { "graceful-fs": "^4.1.6" @@ -28856,48 +29715,29 @@ } }, "@emotion/babel-plugin": { - "version": "11.9.2", - "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.9.2.tgz", - "integrity": "sha512-Pr/7HGH6H6yKgnVFNEj2MVlreu3ADqftqjqwUvDy/OJzKFgxKeTQ+eeUf20FOTuHVkDON2iNa25rAXVYtWJCjw==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.12.13", - "@babel/plugin-syntax-jsx": "^7.12.13", - "@babel/runtime": "^7.13.10", - "@emotion/hash": "^0.8.0", - "@emotion/memoize": "^0.7.5", - "@emotion/serialize": "^1.0.2", - "babel-plugin-macros": "^2.6.1", + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz", + "integrity": "sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/runtime": "^7.18.3", + "@emotion/hash": "^0.9.1", + "@emotion/memoize": "^0.8.1", + "@emotion/serialize": "^1.1.2", + "babel-plugin-macros": "^3.1.0", "convert-source-map": "^1.5.0", "escape-string-regexp": "^4.0.0", "find-root": "^1.1.0", "source-map": "^0.5.7", - "stylis": "4.0.13" + "stylis": "4.2.0" }, "dependencies": { - "babel-plugin-macros": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", - "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.7.2", - "cosmiconfig": "^6.0.0", - "resolve": "^1.12.0" - } - }, - "cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", - "dev": true, - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" - } + "@emotion/memoize": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", + "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==", + "dev": true }, "escape-string-regexp": { "version": "4.0.0", @@ -28908,22 +29748,30 @@ } }, "@emotion/cache": { - "version": "11.7.1", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.7.1.tgz", - "integrity": "sha512-r65Zy4Iljb8oyjtLeCuBH8Qjiy107dOYC6SJq7g7GV5UCQWMObY4SJDPGFjiiVpPrOJ2hmJOoBiYTC7hwx9E2A==", + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz", + "integrity": "sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==", "dev": true, "requires": { - "@emotion/memoize": "^0.7.4", - "@emotion/sheet": "^1.1.0", - "@emotion/utils": "^1.0.0", - "@emotion/weak-memoize": "^0.2.5", - "stylis": "4.0.13" + "@emotion/memoize": "^0.8.1", + "@emotion/sheet": "^1.2.2", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", + "stylis": "4.2.0" + }, + "dependencies": { + "@emotion/memoize": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", + "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==", + "dev": true + } } }, "@emotion/hash": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", - "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==", + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz", + "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==", "dev": true }, "@emotion/is-prop-valid": { @@ -28940,37 +29788,52 @@ "integrity": "sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ==" }, "@emotion/react": { - "version": "11.9.0", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.9.0.tgz", - "integrity": "sha512-lBVSF5d0ceKtfKCDQJveNAtkC7ayxpVlgOohLgXqRwqWr9bOf4TZAFFyIcNngnV6xK6X4x2ZeXq7vliHkoVkxQ==", - "dev": true, - "requires": { - "@babel/runtime": "^7.13.10", - "@emotion/babel-plugin": "^11.7.1", - "@emotion/cache": "^11.7.1", - "@emotion/serialize": "^1.0.3", - "@emotion/utils": "^1.1.0", - "@emotion/weak-memoize": "^0.2.5", + "version": "11.11.1", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.1.tgz", + "integrity": "sha512-5mlW1DquU5HaxjLkfkGN1GA/fvVGdyHURRiX/0FHl2cfIfRxSOfmxEH5YS43edp0OldZrZ+dkBKbngxcNCdZvA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.11.0", + "@emotion/cache": "^11.11.0", + "@emotion/serialize": "^1.1.2", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", "hoist-non-react-statics": "^3.3.1" } }, "@emotion/serialize": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.0.3.tgz", - "integrity": "sha512-2mSSvgLfyV3q+iVh3YWgNlUc2a9ZlDU7DjuP5MjK3AXRR0dYigCrP99aeFtaB2L/hjfEZdSThn5dsZ0ufqbvsA==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.2.tgz", + "integrity": "sha512-zR6a/fkFP4EAcCMQtLOhIgpprZOwNmCldtpaISpvz348+DP4Mz8ZoKaGGCQpbzepNIUWbq4w6hNZkwDyKoS+HA==", "dev": true, "requires": { - "@emotion/hash": "^0.8.0", - "@emotion/memoize": "^0.7.4", - "@emotion/unitless": "^0.7.5", - "@emotion/utils": "^1.0.0", + "@emotion/hash": "^0.9.1", + "@emotion/memoize": "^0.8.1", + "@emotion/unitless": "^0.8.1", + "@emotion/utils": "^1.2.1", "csstype": "^3.0.2" + }, + "dependencies": { + "@emotion/memoize": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", + "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==", + "dev": true + }, + "@emotion/unitless": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", + "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==", + "dev": true + } } }, "@emotion/sheet": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.1.0.tgz", - "integrity": "sha512-u0AX4aSo25sMAygCuQTzS+HsImZFuS8llY8O7b9MDRzbJM0kVJlAz6KNDqcG7pOuQZJmj/8X/rAW+66kMnMW+g==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz", + "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==", "dev": true }, "@emotion/stylis": { @@ -28983,16 +29846,23 @@ "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" }, + "@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz", + "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==", + "dev": true, + "requires": {} + }, "@emotion/utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.1.0.tgz", - "integrity": "sha512-iRLa/Y4Rs5H/f2nimczYmS5kFJEbpiVvgN3XVfZ022IYhuNA1IRSHEizcof88LtCTXtl9S2Cxt32KgaXEu72JQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz", + "integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==", "dev": true }, "@emotion/weak-memoize": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz", - "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz", + "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==", "dev": true }, "@eslint-community/eslint-utils": { @@ -29113,6 +29983,31 @@ "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" }, + "@floating-ui/core": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.4.1.tgz", + "integrity": "sha512-jk3WqquEJRlcyu7997NtR5PibI+y5bi+LS3hPmguVClypenMsCY3CBa3LAQnozRCtCrYWSEtAdiskpamuJRFOQ==", + "dev": true, + "requires": { + "@floating-ui/utils": "^0.1.1" + } + }, + "@floating-ui/dom": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.2.tgz", + "integrity": "sha512-6ArmenS6qJEWmwzczWyhvrXRdI/rI78poBcW0h/456+onlabit+2G+QxHx5xTOX60NBJQXjsCLFbW2CmsXpUog==", + "dev": true, + "requires": { + "@floating-ui/core": "^1.4.1", + "@floating-ui/utils": "^0.1.1" + } + }, + "@floating-ui/utils": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.2.tgz", + "integrity": "sha512-ou3elfqG/hZsbmF4bxeJhPHIf3G2pm0ujc39hYEZrfVqt7Vk/Zji6CXc3W0pmYM8BW1g40U+akTl9DKZhFhInQ==", + "dev": true + }, "@fluent/syntax": { "version": "0.19.0", "resolved": "https://registry.npmjs.org/@fluent/syntax/-/syntax-0.19.0.tgz", @@ -29205,48 +30100,44 @@ "optional": true }, "@graphql-tools/merge": { - "version": "8.2.11", - "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.2.11.tgz", - "integrity": "sha512-fsjJVdsk9GV1jj1Ed2AKLlHYlsf0ZadTK8X5KxFRE1ZSnKqh56BLVX93JrtOIAnsiHkwOK2TC43HGhApF1swpQ==", - "dev": true, - "requires": { - "@graphql-tools/utils": "8.6.10", - "tslib": "~2.4.0" - } - }, - "@graphql-tools/mock": { - "version": "8.6.9", - "resolved": "https://registry.npmjs.org/@graphql-tools/mock/-/mock-8.6.9.tgz", - "integrity": "sha512-Pto23TeUkUn0BYI6UtclPbKjunXvOGtDO7DZC8KagDfgMTu0ZMNTovv0kq+sgJBsnqD4Q9eRkR4IetSujHQBsA==", + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.4.2.tgz", + "integrity": "sha512-XbrHAaj8yDuINph+sAfuq3QCZ/tKblrTLOpirK0+CAgNlZUCHs0Fa+xtMUURgwCVThLle1AF7svJCxFizygLsw==", "dev": true, "requires": { - "@graphql-tools/schema": "8.3.11", - "@graphql-tools/utils": "8.6.10", - "fast-json-stable-stringify": "^2.1.0", - "tslib": "~2.4.0" + "@graphql-tools/utils": "^9.2.1", + "tslib": "^2.4.0" } }, "@graphql-tools/schema": { - "version": "8.3.11", - "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.3.11.tgz", - "integrity": "sha512-esMEnbyXbp8B5VEI4o395+x0G7Qmz3JSX5onFBF8HeLYcqWJasY5vBuWkO18VxrZpEnvnryodP6Y00bVag9O3Q==", + "version": "9.0.19", + "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-9.0.19.tgz", + "integrity": "sha512-oBRPoNBtCkk0zbUsyP4GaIzCt8C0aCI4ycIRUL67KK5pOHljKLBBtGT+Jr6hkzA74C8Gco8bpZPe7aWFjiaK2w==", "dev": true, "requires": { - "@graphql-tools/merge": "8.2.11", - "@graphql-tools/utils": "8.6.10", - "tslib": "~2.4.0", - "value-or-promise": "1.0.11" + "@graphql-tools/merge": "^8.4.1", + "@graphql-tools/utils": "^9.2.1", + "tslib": "^2.4.0", + "value-or-promise": "^1.0.12" } }, "@graphql-tools/utils": { - "version": "8.6.10", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.6.10.tgz", - "integrity": "sha512-bJH9qwuyM3BP0PTU6/lvBDkk6jdEIOn+dbyk4pHMVNnvbJ1gZQwo62To8SHxxaUTus8OMhhVPSh9ApWXREURcg==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.2.1.tgz", + "integrity": "sha512-WUw506Ql6xzmOORlriNrD6Ugx+HjVgYxt9KCXD9mHAak+eaXSwuGGPyE60hy9xaDEoXKBsG7SkG69ybitaVl6A==", "dev": true, "requires": { - "tslib": "~2.4.0" + "@graphql-typed-document-node/core": "^3.1.1", + "tslib": "^2.4.0" } }, + "@graphql-typed-document-node/core": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", + "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", + "dev": true, + "requires": {} + }, "@hookform/resolvers": { "version": "2.9.10", "resolved": "https://registry.npmjs.org/@hookform/resolvers/-/resolvers-2.9.10.tgz", @@ -30214,108 +31105,452 @@ "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", "dev": true }, - "@redux-devtools/app": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@redux-devtools/app/-/app-2.1.4.tgz", - "integrity": "sha512-dT03uOhESjZygj4Y0sv/m4PbAZsZjqXuBJtI3Bbcc3yLwspg8RzGnvMyLQ2M0DHHe1swv3/DRsgT24qa3NtBPA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.17.9", - "@redux-devtools/chart-monitor": "^2.1.1", - "@redux-devtools/core": "^3.12.0", - "@redux-devtools/inspector-monitor": "^2.1.2", - "@redux-devtools/inspector-monitor-test-tab": "^0.8.6", - "@redux-devtools/inspector-monitor-trace-tab": "^0.3.4", - "@redux-devtools/log-monitor": "^3.1.1", - "@redux-devtools/rtk-query-monitor": "^2.1.2", - "@redux-devtools/slider-monitor": "^3.1.2", - "@redux-devtools/ui": "^1.2.1", - "@reduxjs/toolkit": "^1.8.1", - "@types/prop-types": "^15.7.5", - "d3-state-visualizer": "^1.6.0", - "javascript-stringify": "^2.1.0", - "jsan": "^3.1.14", - "jsondiffpatch": "^0.4.1", - "localforage": "^1.10.0", - "lodash": "^4.17.21", - "prop-types": "^15.8.1", - "react-icons": "^4.3.1", - "react-is": "^17.0.2", - "react-redux": "^7.2.8", - "redux": "^4.1.2", - "redux-persist": "^6.0.0", - "socketcluster-client": "^14.3.2" + "@redux-devtools/chart-monitor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@redux-devtools/chart-monitor/-/chart-monitor-4.0.0.tgz", + "integrity": "sha512-ZxcYQ5JKs3HGS4AO5fYFN5OKPQ8w41uTRA6fU15Wf5qqv6oHDmDycgTlx2KHNDxVBS0QXa7PS83qiwL1SmGZrA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.20.6", + "@types/redux-devtools-themes": "^1.0.0", + "d3-state-visualizer": "^2.0.0", + "deepmerge": "^4.2.2", + "redux-devtools-themes": "^1.0.0" + } + }, + "@redux-devtools/cli": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@redux-devtools/cli/-/cli-3.0.1.tgz", + "integrity": "sha512-NARxbTvLQQkZ4if5zvQTkTyesKCsu9DpN9Uupz1Ib18lUEuuEYl3HKJFYQ/hScnxxMSin7KN8j8guHMVD16pqg==", + "dev": true, + "requires": { + "@apollo/server": "^4.9.1", + "@redux-devtools/app": "^3.0.0", + "@types/react": "^18.2.20", + "body-parser": "^1.20.2", + "chalk": "^5.3.0", + "cors": "^2.8.5", + "cross-spawn": "^7.0.3", + "electron": "^25.6.0", + "express": "^4.18.2", + "get-port": "^7.0.0", + "graphql": "^16.8.0", + "knex": "^2.5.1", + "lodash-es": "^4.17.21", + "minimist": "^1.2.8", + "morgan": "^1.10.0", + "open": "^9.1.0", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-is": "^18.2.0", + "semver": "^7.5.4", + "socketcluster-server": "^17.4.1", + "sqlite3": "^5.1.6", + "styled-components": "^5.3.11", + "uuid": "^9.0.0" }, "dependencies": { - "react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "@babel/runtime": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.15.tgz", + "integrity": "sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.14.0" + } + }, + "@redux-devtools/app": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@redux-devtools/app/-/app-3.0.0.tgz", + "integrity": "sha512-3mn+cj3KhMRSa0EPxlRD4EnfFFMBsM1nKJ+g/6zB4iRyk23befz4YzwFG3KXkwyVmZCooCu3DjHkQhUOx4xxQA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.22.10", + "@redux-devtools/chart-monitor": "^4.0.0", + "@redux-devtools/core": "^3.13.0", + "@redux-devtools/inspector-monitor": "^4.0.0", + "@redux-devtools/inspector-monitor-test-tab": "^2.0.0", + "@redux-devtools/inspector-monitor-trace-tab": "^2.0.0", + "@redux-devtools/log-monitor": "^4.0.2", + "@redux-devtools/rtk-query-monitor": "^3.1.1", + "@redux-devtools/slider-monitor": "^4.0.0", + "@redux-devtools/ui": "^1.3.0", + "@reduxjs/toolkit": "^1.9.5", + "@types/prop-types": "^15.7.5", + "d3-state-visualizer": "^2.0.0", + "javascript-stringify": "^2.1.0", + "jsan": "^3.1.14", + "jsondiffpatch": "^0.5.0", + "localforage": "^1.10.0", + "lodash": "^4.17.21", + "prop-types": "^15.8.1", + "react-icons": "^4.10.1", + "react-is": "^18.2.0", + "react-redux": "^8.1.2", + "redux": "^4.2.1", + "redux-persist": "^6.0.0", + "socketcluster-client": "^17.2.2" + } + }, + "@redux-devtools/inspector-monitor-test-tab": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@redux-devtools/inspector-monitor-test-tab/-/inspector-monitor-test-tab-2.0.0.tgz", + "integrity": "sha512-6hi7WqUc/pGO7UtdwCnQngSdijsxG34Ou00/Wuu/yyZfw8WU7jib21LVRiSpo8UFwSeSGkc4YYKgGmS+NpAW0A==", + "dev": true, + "requires": { + "@babel/runtime": "^7.22.10", + "@redux-devtools/ui": "^1.3.0", + "@types/prop-types": "^15.7.5", + "es6template": "^1.0.5", + "javascript-stringify": "^2.1.0", + "jsan": "^3.1.14", + "object-path": "^0.11.8", + "prop-types": "^15.8.1", + "react-icons": "^4.10.1", + "simple-diff": "^1.7.1" + } + }, + "@types/react": { + "version": "18.2.21", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.21.tgz", + "integrity": "sha512-neFKG/sBAwGxHgXiIxnbm3/AAVQ/cMRS93hvBpg8xYRbeQSPVABp9U2bRnPf0iI4+Ucdv3plSxKK+3CW2ENJxA==", + "dev": true, + "requires": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + } + }, + "chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", "dev": true }, + "content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "open": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/open/-/open-9.1.0.tgz", + "integrity": "sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==", + "dev": true, + "requires": { + "default-browser": "^4.0.0", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^2.2.0" + } + }, + "raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dev": true, + "requires": { + "loose-envify": "^1.1.0" + } + }, + "react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dev": true, + "requires": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + } + }, "react-redux": { - "version": "7.2.8", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.8.tgz", - "integrity": "sha512-6+uDjhs3PSIclqoCk0kd6iX74gzrGc3W5zcAjbrFgEdIjRSQObdIwfx80unTkVUYvbQ95Y8Av3OvFHq1w5EOUw==", + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.1.2.tgz", + "integrity": "sha512-xJKYI189VwfsFc4CJvHqHlDrzyFTY/3vZACbE+rr/zQ34Xx1wQfB4OTOSeOSNrF6BDVe8OOdxIrAnMGXA3ggfw==", "dev": true, "requires": { - "@babel/runtime": "^7.15.4", - "@types/react-redux": "^7.1.20", + "@babel/runtime": "^7.12.1", + "@types/hoist-non-react-statics": "^3.3.1", + "@types/use-sync-external-store": "^0.0.3", "hoist-non-react-statics": "^3.3.2", - "loose-envify": "^1.4.0", - "prop-types": "^15.7.2", - "react-is": "^17.0.2" + "react-is": "^18.0.0", + "use-sync-external-store": "^1.0.0" + } + }, + "redux": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz", + "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==", + "dev": true, + "requires": { + "@babel/runtime": "^7.9.2" } + }, + "regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==", + "dev": true + }, + "sc-formatter": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/sc-formatter/-/sc-formatter-4.0.0.tgz", + "integrity": "sha512-MgUIvuca+90fBrCWY5LdlU9YUWjlkPFwdpvmomcwQEu3t2id/6YHdG2nhB6o7nhRp4ocfmcXQTh00r/tJtynSg==", + "dev": true + }, + "scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "dev": true, + "requires": { + "loose-envify": "^1.1.0" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "socketcluster-client": { + "version": "17.2.2", + "resolved": "https://registry.npmjs.org/socketcluster-client/-/socketcluster-client-17.2.2.tgz", + "integrity": "sha512-HIopjTj8p979N5klC7FeZSwu9rd805bFgFcyVX7Y8zPyjVHXHTfGrV/8vqzN2gpOwnnosWQ44ue0qGqovlxZrg==", + "dev": true, + "requires": { + "ag-channel": "^5.0.0", + "ag-request": "^1.0.0", + "async-stream-emitter": "^4.0.0", + "buffer": "^5.2.1", + "clone-deep": "^4.0.1", + "linked-list": "^0.1.0", + "sc-errors": "^2.0.1", + "sc-formatter": "^4.0.0", + "stream-demux": "^8.0.0", + "uuid": "^8.3.2", + "vinyl-buffer": "^1.0.1", + "ws": "^8.9.0" + }, + "dependencies": { + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + } + } + }, + "styled-components": { + "version": "5.3.11", + "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-5.3.11.tgz", + "integrity": "sha512-uuzIIfnVkagcVHv9nE0VPlHPSCmXIUGKfJ42LNjxCCTDTL5sgnJ8Z7GZBq0EnLYGln77tPpEpExt2+qa+cZqSw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/traverse": "^7.4.5", + "@emotion/is-prop-valid": "^1.1.0", + "@emotion/stylis": "^0.8.4", + "@emotion/unitless": "^0.7.4", + "babel-plugin-styled-components": ">= 1.12.0", + "css-to-react-native": "^3.0.0", + "hoist-non-react-statics": "^3.0.0", + "shallowequal": "^1.1.0", + "supports-color": "^5.5.0" + } + }, + "uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "dev": true + }, + "ws": { + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.1.tgz", + "integrity": "sha512-4OOseMUq8AzRBI/7SLMUwO+FEDnguetSk7KMb1sHwvF2w2Wv5Hoj0nlifx8vtGsftE/jWHojPy8sMMzYLJ2G/A==", + "dev": true, + "requires": {} } } }, - "@redux-devtools/chart-monitor": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@redux-devtools/chart-monitor/-/chart-monitor-2.1.1.tgz", - "integrity": "sha512-RxwmARx7GXrA3nUMgyJE7OU4PaqY55WdIn0W7v+qvPmuqfiyO5Dq3vqOEPL9GF6tT7sx/3/O/33kKlL2ImLh7w==", + "@redux-devtools/core": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/@redux-devtools/core/-/core-3.13.1.tgz", + "integrity": "sha512-VZbma4b28D7dLn6rKTxx4r1KJrgiT2EQNF4vjkpTlXTu0cQcHkEcAO9ixMBj6rZGrT/jinCHq8gBy2bWgnDvcA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.18.3", + "@redux-devtools/instrument": "^2.1.0", + "@types/prop-types": "^15.7.5", + "lodash": "^4.17.21", + "prop-types": "^15.8.1" + } + }, + "@redux-devtools/inspector-monitor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@redux-devtools/inspector-monitor/-/inspector-monitor-4.0.0.tgz", + "integrity": "sha512-P0xXjv/N02dPQAaa+fSY2de6adFP+QdGaJZN+raWbWAoIB4SMYuxOlsEBWdclbTTpFBqYp0azpLTfy1vJroRPg==", "dev": true, "requires": { - "@babel/runtime": "^7.17.9", + "@babel/runtime": "^7.22.10", + "@dnd-kit/core": "^6.0.8", + "@dnd-kit/modifiers": "^6.0.1", + "@dnd-kit/sortable": "^7.0.2", + "@dnd-kit/utilities": "^3.2.1", + "@types/lodash": "^4.14.197", "@types/prop-types": "^15.7.5", "@types/redux-devtools-themes": "^1.0.0", - "d3-state-visualizer": "^1.6.0", - "deepmerge": "^4.2.2", + "dateformat": "^5.0.3", + "hex-rgba": "^1.0.2", + "immutable": "^4.3.2", + "javascript-stringify": "^2.1.0", + "jsondiffpatch": "^0.5.0", + "jss": "^10.10.0", + "jss-preset-default": "^10.10.0", + "lodash.debounce": "^4.0.8", "prop-types": "^15.8.1", + "react-base16-styling": "^0.9.1", + "react-json-tree": "^0.18.0", "redux-devtools-themes": "^1.0.0" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.15.tgz", + "integrity": "sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.14.0" + } + }, + "regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==", + "dev": true + } } }, - "@redux-devtools/cli": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@redux-devtools/cli/-/cli-1.0.7.tgz", - "integrity": "sha512-GJbOcqWWfYxeGdMfRp9x4UJa5aihjbzD6PTeStu3BpjSjoKV39R2kt+2e+zHV1viM3+mjurYQlqgXVbgac5GeQ==", + "@redux-devtools/inspector-monitor-trace-tab": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@redux-devtools/inspector-monitor-trace-tab/-/inspector-monitor-trace-tab-2.0.0.tgz", + "integrity": "sha512-F5yS0cWZqcxNekZ+63HvJJ8S6uoY045uEJHA/IjuffHpZcTfZJoqs0uBAzPrg+y+TlUyGQ8hlT6H+sSJS1KHdA==", "dev": true, "requires": { - "@redux-devtools/app": "^2.1.3", - "@types/react": "^17.0.43", - "apollo-server-express": "^3.6.7", - "body-parser": "^1.20.0", - "chalk": "^4.1.2", - "cors": "^2.8.5", - "cross-spawn": "^7.0.3", - "electron": "^18.0.1", - "express": "^4.17.3", - "getport": "^0.1.0", - "graphql": "^16.3.0", - "knex": "^0.95.15", - "lodash": "^4.17.21", - "minimist": "^1.2.6", - "morgan": "^1.10.0", - "open": "^8.4.0", - "react": "^17.0.2", - "react-dom": "^17.0.2", - "react-is": "^17.0.2", - "semver": "^7.3.5", - "socketcluster": "^14.4.2", - "sqlite3": "^5.0.2", - "styled-components": "^5.3.5", - "uuid": "^8.3.2" + "@babel/code-frame": "^8.0.0-alpha.2", + "@babel/runtime": "^7.22.10", + "@types/chrome": "^0.0.243", + "anser": "^2.1.1", + "html-entities": "^2.4.0", + "path-browserify": "^1.0.1", + "redux-devtools-themes": "^1.0.0", + "source-map": "^0.5.7" }, "dependencies": { + "@babel/code-frame": { + "version": "8.0.0-alpha.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-8.0.0-alpha.2.tgz", + "integrity": "sha512-uM1On1MxYaZDFVq1gPbGJx1Rf0N+lwlPOCBHZPS8RNVfP9CAG05xzViguK45e16n4Wo6V3WfaTkdmbuNusBnJQ==", + "dev": true, + "requires": { + "@babel/highlight": "^8.0.0-alpha.2", + "chalk": "^4.1.2" + } + }, + "@babel/helper-validator-identifier": { + "version": "8.0.0-alpha.2", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.0-alpha.2.tgz", + "integrity": "sha512-us66RLKkCzBzNJ1TVAHe2euihYrYaXxbuQ7yJogKdBKBZ0R7gHEpB+e0ylaMGsmLzqlpPUyWWcz3OPTCsq1FDw==", + "dev": true + }, + "@babel/highlight": { + "version": "8.0.0-alpha.2", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-8.0.0-alpha.2.tgz", + "integrity": "sha512-V+G3EzQx895Dqbu4xroJo6kMLK6YQJLrMLGj2zjJShA5HNuBCTGgwBhL1BA8jixOfFA5/110QoCugKC39oWB8w==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^8.0.0-alpha.2", + "chalk": "^4.1.2", + "js-tokens": "^8.0.0" + } + }, + "@babel/runtime": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.15.tgz", + "integrity": "sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.14.0" + } + }, + "@types/chrome": { + "version": "0.0.243", + "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.243.tgz", + "integrity": "sha512-4PHv0kxxxpZFHWPBiJJ9TWH8kbx0567j1b2djnhpJjpiSGNI7UKkz7dSEECBtQ0B3N5nQTMwSB/5IopkWGAbEA==", + "dev": true, + "requires": { + "@types/filesystem": "*", + "@types/har-format": "*" + } + }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -30356,20 +31591,17 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "js-tokens": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-8.0.2.tgz", + "integrity": "sha512-Olnt+V7xYdvGze9YTbGFZIfQXuGV4R3nQwwl8BrtgaPE/wq8UFpUHWuTNc05saowhSr1ZO6tx+V6RjE9D5YQog==", "dev": true }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } + "regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==", + "dev": true }, "supports-color": { "version": "7.2.0", @@ -30382,90 +31614,6 @@ } } }, - "@redux-devtools/core": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/@redux-devtools/core/-/core-3.12.0.tgz", - "integrity": "sha512-AFk8kYmU9IbyXftN6M9DzX2CEumpuV6nctka1O8/4BP1+mW5PK3v5MzUghx6zSlaAtK1nSQ387QSpN9bUaYs+Q==", - "dev": true, - "requires": { - "@babel/runtime": "^7.17.9", - "@redux-devtools/instrument": "^2.1.0", - "@types/prop-types": "^15.7.5", - "lodash": "^4.17.21", - "prop-types": "^15.8.1" - } - }, - "@redux-devtools/inspector-monitor": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@redux-devtools/inspector-monitor/-/inspector-monitor-2.1.2.tgz", - "integrity": "sha512-1AE1d9DYIZJpIty6EGUM+OdcKwuZGLf8K5C56JCuv25Quhwe+xsOnKFSW8f8m/GLvOcSq75VzvJMAnz0Rv40gA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.17.9", - "@types/dragula": "^3.7.1", - "@types/lodash": "^4.14.181", - "@types/prop-types": "^15.7.5", - "dateformat": "^4.6.3", - "hex-rgba": "^1.0.2", - "immutable": "^4.0.0", - "javascript-stringify": "^2.1.0", - "jsondiffpatch": "^0.4.1", - "jss": "^10.9.0", - "jss-preset-default": "^10.9.0", - "lodash.debounce": "^4.0.8", - "prop-types": "^15.8.1", - "react-base16-styling": "^0.9.1", - "react-dragula": "^1.1.17", - "react-json-tree": "^0.16.1", - "redux-devtools-themes": "^1.0.0" - } - }, - "@redux-devtools/inspector-monitor-test-tab": { - "version": "0.8.6", - "resolved": "https://registry.npmjs.org/@redux-devtools/inspector-monitor-test-tab/-/inspector-monitor-test-tab-0.8.6.tgz", - "integrity": "sha512-svIWJ7nX9JXOhwnTE5JS9fNNl8+2VmuySWZmfTMyTTkQA5xMSUVRH+dV8XFK9ekPLN1CLfHO9U+IF87rrKWqdQ==", - "dev": true, - "requires": { - "@babel/runtime": "^7.17.9", - "@redux-devtools/ui": "^1.2.1", - "@types/prop-types": "^15.7.5", - "es6template": "^1.0.5", - "javascript-stringify": "^2.1.0", - "jsan": "^3.1.14", - "object-path": "^0.11.8", - "prop-types": "^15.8.1", - "react-icons": "^4.3.1", - "simple-diff": "^1.6.0" - } - }, - "@redux-devtools/inspector-monitor-trace-tab": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/@redux-devtools/inspector-monitor-trace-tab/-/inspector-monitor-trace-tab-0.3.4.tgz", - "integrity": "sha512-ZI61gLDSol+xG6v8yBHKM1e22Oc4E8MIInAJEy8ZECyLdsilL7nPpVkod4XRZ7s0D4CRbkqfdvYSyqV9xCSr3A==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/runtime": "^7.17.9", - "@types/chrome": "^0.0.181", - "anser": "^2.1.1", - "html-entities": "^2.3.3", - "path-browserify": "^1.0.1", - "redux-devtools-themes": "^1.0.0", - "source-map": "^0.5.7" - }, - "dependencies": { - "@types/chrome": { - "version": "0.0.181", - "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.181.tgz", - "integrity": "sha512-34Ln9YVVC8a195ruqWeaty3pouFdCLr9L5kPcbRflQcxnbXQnHor9uETof8OhDf8JLDytSRDiuDsRXYQYQ+9FA==", - "dev": true, - "requires": { - "@types/filesystem": "*", - "@types/har-format": "*" - } - } - } - }, "@redux-devtools/instrument": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/@redux-devtools/instrument/-/instrument-2.1.0.tgz", @@ -30477,50 +31625,51 @@ } }, "@redux-devtools/log-monitor": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@redux-devtools/log-monitor/-/log-monitor-3.1.1.tgz", - "integrity": "sha512-d3Wm7z2Z/QGWVrmQQvmd077fPvWO7wbyrUbasvjCaUY45VAJb9Z26dYHI1rNUhcGAULS6oGZII8/s+E5pTWTFA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@redux-devtools/log-monitor/-/log-monitor-4.0.2.tgz", + "integrity": "sha512-BaTAwadm/XzRfnN2+8t4mwdbOILWfwsvMfVPn5OuE+NFaUG9pDKGoHRPCdMBaRdggDqqb5nlMgRCVdHzYftgVw==", "dev": true, "requires": { - "@babel/runtime": "^7.17.9", - "@types/lodash.debounce": "^4.0.6", + "@babel/runtime": "^7.20.6", + "@types/lodash.debounce": "^4.0.7", "@types/prop-types": "^15.7.5", "@types/redux-devtools-themes": "^1.0.0", "lodash.debounce": "^4.0.8", "prop-types": "^15.8.1", - "react-json-tree": "^0.16.1", + "react-json-tree": "^0.18.0", "redux-devtools-themes": "^1.0.0" } }, "@redux-devtools/rtk-query-monitor": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@redux-devtools/rtk-query-monitor/-/rtk-query-monitor-2.1.2.tgz", - "integrity": "sha512-t1kaG3b/2QKUrSqc+3t1y/PgiL8MM0YxMzC/X4A3WzFDCXJkxpXnY5OUxDqzgZ+RNbHGevUeu8Nq1zYAx4U+rw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@redux-devtools/rtk-query-monitor/-/rtk-query-monitor-3.1.1.tgz", + "integrity": "sha512-A7kHvU0SY6iQeaLHq+Kcq8a4Z/NhLcwQ/DluP/E+6UU/OXbEtoPK7304qdFQtVG7HY7owdKQiJZrYns5Mi7ysw==", "dev": true, "requires": { - "@babel/runtime": "^7.17.9", - "@redux-devtools/ui": "^1.2.1", + "@babel/runtime": "^7.20.6", + "@redux-devtools/ui": "^1.3.0", + "@types/lodash": "^4.14.191", "@types/prop-types": "^15.7.5", "@types/redux-devtools-themes": "^1.0.0", "hex-rgba": "^1.0.2", - "immutable": "^4.0.0", - "jss": "^10.9.0", - "jss-preset-default": "^10.9.0", + "immutable": "^4.1.0", + "jss": "^10.9.2", + "jss-preset-default": "^10.9.2", "lodash.debounce": "^4.0.8", "prop-types": "^15.8.1", "react-base16-styling": "^0.9.1", - "react-json-tree": "^0.16.1", + "react-json-tree": "^0.18.0", "redux-devtools-themes": "^1.0.0" } }, "@redux-devtools/slider-monitor": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@redux-devtools/slider-monitor/-/slider-monitor-3.1.2.tgz", - "integrity": "sha512-QXQCP+ikmInJs4DLc8wISfBCSzTSxQq7yRARPrCtcT+LnJMB99GFtwUK28GTOe0kKgs7cfDIvgScvv2H5zhggA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@redux-devtools/slider-monitor/-/slider-monitor-4.0.1.tgz", + "integrity": "sha512-pjHPYLG91GLRQVcNAIu3Colc6nIqR4mSQYN1MWUqP8nTAlkP1ihEN44KXxcnTUEzuSLRYm1YW3jsI5p4q3aXZA==", "dev": true, "requires": { - "@babel/runtime": "^7.17.9", - "@redux-devtools/ui": "^1.2.1", + "@babel/runtime": "^7.18.3", + "@redux-devtools/ui": "^1.3.0", "@types/prop-types": "^15.7.5", "@types/redux-devtools-themes": "^1.0.0", "prop-types": "^15.8.1", @@ -30528,27 +31677,66 @@ } }, "@redux-devtools/ui": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@redux-devtools/ui/-/ui-1.2.2.tgz", - "integrity": "sha512-PxfUZSIsecltHenn/MOxetZwOR9AdgFWiWxiFxjt4bKF1tPT8WkJhgrHsp39Oyg48vgZYY2nRXO+REIqb7HyDw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@redux-devtools/ui/-/ui-1.3.0.tgz", + "integrity": "sha512-fj4zyQ08U2DnJAGL7xa1mqlQnBMbrlS1P/HI10Wz57+dgqP9fIzfKymtLEGOnJHZNkPpPNXG04FH4+AQQ1v3kw==", "dev": true, "requires": { - "@babel/runtime": "^7.16.7", - "@rjsf/core": "^3.2.1", + "@babel/runtime": "^7.18.3", + "@rjsf/core": "^4.2.0", "@types/base16": "^1.0.2", "@types/codemirror": "^5.60.5", - "@types/json-schema": "^7.0.9", - "@types/prop-types": "^15.7.4", + "@types/json-schema": "^7.0.11", + "@types/prop-types": "^15.7.5", "@types/redux-devtools-themes": "^1.0.0", "@types/simple-element-resize-detector": "^1.3.0", "base16": "^1.0.0", - "codemirror": "^5.65.1", - "color": "^3.2.1", + "codemirror": "^5.65.4", + "color": "^4.2.3", "prop-types": "^15.8.1", "react-icons": "^4.3.1", - "react-select": "^5.2.2", + "react-select": "^5.3.2", "redux-devtools-themes": "^1.0.0", "simple-element-resize-detector": "^1.3.0" + }, + "dependencies": { + "memoize-one": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==", + "dev": true + }, + "react-select": { + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.7.4.tgz", + "integrity": "sha512-NhuE56X+p9QDFh4BgeygHFIvJJszO1i1KSkg/JPcIJrbovyRtI+GuOEa4XzFCEpZRAEoEI8u/cAHK+jG/PgUzQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.12.0", + "@emotion/cache": "^11.4.0", + "@emotion/react": "^11.8.1", + "@floating-ui/dom": "^1.0.1", + "@types/react-transition-group": "^4.4.0", + "memoize-one": "^6.0.0", + "prop-types": "^15.6.0", + "react-transition-group": "^4.3.0", + "use-isomorphic-layout-effect": "^1.1.2" + }, + "dependencies": { + "react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "dev": true, + "requires": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + } + } + } + } } }, "@redux-saga/core": { @@ -30599,15 +31787,32 @@ "integrity": "sha512-1dgmkh+3so0+LlBWRhGA33ua4MYr7tUOj+a9Si28vUi0IUFNbff1T3sgpeDJI/LaC75bBYnQ0A3wXjn0OrRNBA==" }, "@reduxjs/toolkit": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.8.1.tgz", - "integrity": "sha512-Q6mzbTpO9nOYRnkwpDlFOAbQnd3g7zj7CtHAZWz5SzE5lcV97Tf8f3SzOO8BoPOMYBFgfZaqTUZqgGu+a0+Fng==", + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.9.5.tgz", + "integrity": "sha512-Rt97jHmfTeaxL4swLRNPD/zV4OxTes4la07Xc4hetpUW/vc75t5m1ANyxG6ymnEQ2FsLQsoMlYB2vV1sO3m8tQ==", "dev": true, "requires": { - "immer": "^9.0.7", - "redux": "^4.1.2", - "redux-thunk": "^2.4.1", - "reselect": "^4.1.5" + "immer": "^9.0.21", + "redux": "^4.2.1", + "redux-thunk": "^2.4.2", + "reselect": "^4.1.8" + }, + "dependencies": { + "redux": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz", + "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==", + "dev": true, + "requires": { + "@babel/runtime": "^7.9.2" + } + }, + "reselect": { + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.8.tgz", + "integrity": "sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ==", + "dev": true + } } }, "@remix-run/router": { @@ -30616,9 +31821,9 @@ "integrity": "sha512-gTL8H5USTAKOyVA4xczzDJnC3HMssdFa3tRlwBicXynx9XfiXwneHnYQogwSKpdCkjXISrEKSTtX62rLpNEVQg==" }, "@rjsf/core": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@rjsf/core/-/core-3.2.1.tgz", - "integrity": "sha512-dk8ihvxFbcuIwU7G+HiJbFgwyIvaumPt5g5zfnuC26mwTUPlaDGFXKK2yITp8tJ3+hcwS5zEXtAN9wUkfuM4jA==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/@rjsf/core/-/core-4.2.3.tgz", + "integrity": "sha512-dRXhd1Tac/9OcG0VDrYDF2boNTyKINEEITEtJ4L1Yce2iMVk66U52BhWKIFp/WXDM27vwnOfwQo4NwGiqeQeHw==", "dev": true, "requires": { "@types/json-schema": "^7.0.7", @@ -30627,15 +31832,16 @@ "json-schema-merge-allof": "^0.6.0", "jsonpointer": "^5.0.0", "lodash": "^4.17.15", + "lodash-es": "^4.17.15", "nanoid": "^3.1.23", "prop-types": "^15.7.2", - "react-is": "^16.9.0" + "react-is": "16.9.0" }, "dependencies": { "react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "version": "16.9.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.9.0.tgz", + "integrity": "sha512-tJBzzzIgnnRfEm046qRcURvwQnZVXmuCbscxUO5RWrGTXpon2d4c8mI0D8WE6ydVIm29JiLB6+RslkIvym9Rjw==", "dev": true } } @@ -30677,9 +31883,9 @@ "dev": true }, "@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", "dev": true }, "@sinonjs/commons": { @@ -30701,12 +31907,12 @@ } }, "@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", "dev": true, "requires": { - "defer-to-connect": "^1.0.1" + "defer-to-connect": "^2.0.0" } }, "@testim/chrome-version": { @@ -30914,15 +32120,6 @@ "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", "dev": true }, - "@types/accepts": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.5.tgz", - "integrity": "sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, "@types/argon2-browser": { "version": "1.18.1", "resolved": "https://registry.npmjs.org/@types/argon2-browser/-/argon2-browser-1.18.1.tgz", @@ -31037,9 +32234,9 @@ } }, "@types/codemirror": { - "version": "5.60.5", - "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-5.60.5.tgz", - "integrity": "sha512-TiECZmm8St5YxjFUp64LK0c8WU5bxMDt9YaAek1UqUb9swrSCoJhh92fWu1p3mTEqlHjhB5sY7OFBhWroJXZVg==", + "version": "5.60.10", + "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-5.60.10.tgz", + "integrity": "sha512-ZTA3teiCWKT8HUUofqlGPlShu5ojdIajizsS0HpH6GL0/iEdjRt7fXbCLHHqKYP5k7dC/HnnWIjZAiELUwBdjQ==", "dev": true, "requires": { "@types/tern": "*" @@ -31064,24 +32261,259 @@ "@types/node": "*" } }, - "@types/cors": { - "version": "2.8.12", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", - "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==", + "@types/d3": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.0.tgz", + "integrity": "sha512-jIfNVK0ZlxcuRDKtRS/SypEyOQ6UHaFQBKv032X45VvxSJ6Yi5G9behy9h6tNTHTDGh5Vq+KbmBjUWLgY4meCA==", + "dev": true, + "requires": { + "@types/d3-array": "*", + "@types/d3-axis": "*", + "@types/d3-brush": "*", + "@types/d3-chord": "*", + "@types/d3-color": "*", + "@types/d3-contour": "*", + "@types/d3-delaunay": "*", + "@types/d3-dispatch": "*", + "@types/d3-drag": "*", + "@types/d3-dsv": "*", + "@types/d3-ease": "*", + "@types/d3-fetch": "*", + "@types/d3-force": "*", + "@types/d3-format": "*", + "@types/d3-geo": "*", + "@types/d3-hierarchy": "*", + "@types/d3-interpolate": "*", + "@types/d3-path": "*", + "@types/d3-polygon": "*", + "@types/d3-quadtree": "*", + "@types/d3-random": "*", + "@types/d3-scale": "*", + "@types/d3-scale-chromatic": "*", + "@types/d3-selection": "*", + "@types/d3-shape": "*", + "@types/d3-time": "*", + "@types/d3-time-format": "*", + "@types/d3-timer": "*", + "@types/d3-transition": "*", + "@types/d3-zoom": "*" + } + }, + "@types/d3-array": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.0.7.tgz", + "integrity": "sha512-4/Q0FckQ8TBjsB0VdGFemJOG8BLXUB2KKlL0VmZ+eOYeOnTb/wDRQqYWpBmQ6IlvWkXwkYiot+n9Px2aTJ7zGQ==", "dev": true }, - "@types/d3": { - "version": "3.5.47", - "resolved": "https://registry.npmjs.org/@types/d3/-/d3-3.5.47.tgz", - "integrity": "sha512-VkWIQoZXLFdcBGe5pdBKJmTU3fmpXvo/KV6ixvTzOMl1yJ2hbTXpfvsziag0kcaerPDwas2T0vxojwQG3YwivQ==", + "@types/d3-axis": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.3.tgz", + "integrity": "sha512-SE3x/pLO/+GIHH17mvs1uUVPkZ3bHquGzvZpPAh4yadRy71J93MJBpgK/xY8l9gT28yTN1g9v3HfGSFeBMmwZw==", + "dev": true, + "requires": { + "@types/d3-selection": "*" + } + }, + "@types/d3-brush": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.3.tgz", + "integrity": "sha512-MQ1/M/B5ifTScHSe5koNkhxn2mhUPqXjGuKjjVYckplAPjP9t2I2sZafb/YVHDwhoXWZoSav+Q726eIbN3qprA==", + "dev": true, + "requires": { + "@types/d3-selection": "*" + } + }, + "@types/d3-chord": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.3.tgz", + "integrity": "sha512-keuSRwO02c7PBV3JMWuctIfdeJrVFI7RpzouehvBWL4/GGUB3PBNg/9ZKPZAgJphzmS2v2+7vr7BGDQw1CAulw==", "dev": true }, - "@types/dragula": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@types/dragula/-/dragula-3.7.1.tgz", - "integrity": "sha512-hbMEG5+wZEwV6NK4cbexldLWEvYNox8PywM9ICIeCTM99g8nJxccE3C8vvl66TCfnN+R8ioNdOrHWJT+5X0pvw==", + "@types/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-HKuicPHJuvPgCD+np6Se9MQvS6OCbJmOjGvylzMJRlDwUXjKTTXs6Pwgk79O09Vj/ho3u1ofXnhFOaEWWPrlwA==", + "dev": true + }, + "@types/d3-contour": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.3.tgz", + "integrity": "sha512-x7G/tdDZt4m09XZnG2SutbIuQqmkNYqR9uhDMdPlpJbcwepkEjEWG29euFcgVA1k6cn92CHdDL9Z+fOnxnbVQw==", + "dev": true, + "requires": { + "@types/d3-array": "*", + "@types/geojson": "*" + } + }, + "@types/d3-delaunay": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.1.tgz", + "integrity": "sha512-tLxQ2sfT0p6sxdG75c6f/ekqxjyYR0+LwPrsO1mbC9YDBzPJhs2HbJJRrn8Ez1DBoHRo2yx7YEATI+8V1nGMnQ==", + "dev": true + }, + "@types/d3-dispatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.3.tgz", + "integrity": "sha512-Df7KW3Re7G6cIpIhQtqHin8yUxUHYAqiE41ffopbmU5+FifYUNV7RVyTg8rQdkEagg83m14QtS8InvNb95Zqug==", + "dev": true + }, + "@types/d3-drag": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.3.tgz", + "integrity": "sha512-82AuQMpBQjuXeIX4tjCYfWjpm3g7aGCfx6dFlxX2JlRaiME/QWcHzBsINl7gbHCODA2anPYlL31/Trj/UnjK9A==", + "dev": true, + "requires": { + "@types/d3-selection": "*" + } + }, + "@types/d3-dsv": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.2.tgz", + "integrity": "sha512-DooW5AOkj4AGmseVvbwHvwM/Ltu0Ks0WrhG6r5FG9riHT5oUUTHz6xHsHqJSVU8ZmPkOqlUEY2obS5C9oCIi2g==", + "dev": true + }, + "@types/d3-ease": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.0.tgz", + "integrity": "sha512-aMo4eaAOijJjA6uU+GIeW018dvy9+oH5Y2VPPzjjfxevvGQ/oRDs+tfYC9b50Q4BygRR8yE2QCLsrT0WtAVseA==", + "dev": true + }, + "@types/d3-fetch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.3.tgz", + "integrity": "sha512-/EsDKRiQkby3Z/8/AiZq8bsuLDo/tYHnNIZkUpSeEHWV7fHUl6QFBjvMPbhkKGk9jZutzfOkGygCV7eR/MkcXA==", + "dev": true, + "requires": { + "@types/d3-dsv": "*" + } + }, + "@types/d3-force": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.5.tgz", + "integrity": "sha512-EGG+IWx93ESSXBwfh/5uPuR9Hp8M6o6qEGU7bBQslxCvrdUBQZha/EFpu/VMdLU4B0y4Oe4h175nSm7p9uqFug==", + "dev": true + }, + "@types/d3-format": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.1.tgz", + "integrity": "sha512-5KY70ifCCzorkLuIkDe0Z9YTf9RR2CjBX1iaJG+rgM/cPP+sO+q9YdQ9WdhQcgPj1EQiJ2/0+yUkkziTG6Lubg==", "dev": true }, + "@types/d3-geo": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.0.4.tgz", + "integrity": "sha512-kmUK8rVVIBPKJ1/v36bk2aSgwRj2N/ZkjDT+FkMT5pgedZoPlyhaG62J+9EgNIgUXE6IIL0b7bkLxCzhE6U4VQ==", + "dev": true, + "requires": { + "@types/geojson": "*" + } + }, + "@types/d3-hierarchy": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.3.tgz", + "integrity": "sha512-GpSK308Xj+HeLvogfEc7QsCOcIxkDwLhFYnOoohosEzOqv7/agxwvJER1v/kTC+CY1nfazR0F7gnHo7GE41/fw==", + "dev": true + }, + "@types/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-jx5leotSeac3jr0RePOH1KdR9rISG91QIE4Q2PYTu4OymLTZfA3SrnURSLzKH48HmXVUru50b8nje4E79oQSQw==", + "dev": true, + "requires": { + "@types/d3-color": "*" + } + }, + "@types/d3-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.0.0.tgz", + "integrity": "sha512-0g/A+mZXgFkQxN3HniRDbXMN79K3CdTpLsevj+PXiTcb2hVyvkZUBg37StmgCQkaD84cUJ4uaDAWq7UJOQy2Tg==", + "dev": true + }, + "@types/d3-polygon": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.0.tgz", + "integrity": "sha512-D49z4DyzTKXM0sGKVqiTDTYr+DHg/uxsiWDAkNrwXYuiZVd9o9wXZIo+YsHkifOiyBkmSWlEngHCQme54/hnHw==", + "dev": true + }, + "@types/d3-quadtree": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.2.tgz", + "integrity": "sha512-QNcK8Jguvc8lU+4OfeNx+qnVy7c0VrDJ+CCVFS9srBo2GL9Y18CnIxBdTF3v38flrGy5s1YggcoAiu6s4fLQIw==", + "dev": true + }, + "@types/d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-IIE6YTekGczpLYo/HehAy3JGF1ty7+usI97LqraNa8IiDur+L44d0VOjAvFQWJVdZOJHukUJw+ZdZBlgeUsHOQ==", + "dev": true + }, + "@types/d3-scale": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.4.tgz", + "integrity": "sha512-eq1ZeTj0yr72L8MQk6N6heP603ubnywSDRfNpi5enouR112HzGLS6RIvExCzZTraFF4HdzNpJMwA/zGiMoHUUw==", + "dev": true, + "requires": { + "@types/d3-time": "*" + } + }, + "@types/d3-scale-chromatic": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", + "integrity": "sha512-dsoJGEIShosKVRBZB0Vo3C8nqSDqVGujJU6tPznsBJxNJNwMF8utmS83nvCBKQYPpjCzaaHcrf66iTRpZosLPw==", + "dev": true + }, + "@types/d3-selection": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.6.tgz", + "integrity": "sha512-2ACr96USZVjXR9KMD9IWi1Epo4rSDKnUtYn6q2SPhYxykvXTw9vR77lkFNruXVg4i1tzQtBxeDMx0oNvJWbF1w==", + "dev": true + }, + "@types/d3-shape": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.2.tgz", + "integrity": "sha512-NN4CXr3qeOUNyK5WasVUV8NCSAx/CRVcwcb0BuuS1PiTqwIm6ABi1SyasLZ/vsVCFDArF+W4QiGzSry1eKYQ7w==", + "dev": true, + "requires": { + "@types/d3-path": "*" + } + }, + "@types/d3-time": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.0.tgz", + "integrity": "sha512-sZLCdHvBUcNby1cB6Fd3ZBrABbjz3v1Vm90nysCQ6Vt7vd6e/h9Lt7SiJUoEX0l4Dzc7P5llKyhqSi1ycSf1Hg==", + "dev": true + }, + "@types/d3-time-format": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.0.tgz", + "integrity": "sha512-yjfBUe6DJBsDin2BMIulhSHmr5qNR5Pxs17+oW4DoVPyVIXZ+m6bs7j1UVKP08Emv6jRmYrYqxYzO63mQxy1rw==", + "dev": true + }, + "@types/d3-timer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.0.tgz", + "integrity": "sha512-HNB/9GHqu7Fo8AQiugyJbv6ZxYz58wef0esl4Mv828w1ZKpAshw/uFWVDUcIB9KKFeFKoxS3cHY07FFgtTRZ1g==", + "dev": true + }, + "@types/d3-transition": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.4.tgz", + "integrity": "sha512-512a4uCOjUzsebydItSXsHrPeQblCVk8IKjqCUmrlvBWkkVh3donTTxmURDo1YPwIVDh5YVwCAO6gR4sgimCPQ==", + "dev": true, + "requires": { + "@types/d3-selection": "*" + } + }, + "@types/d3-zoom": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.4.tgz", + "integrity": "sha512-cqkuY1ah9ZQre2POqjSLcM8g40UVya/qwEUrNYP2/rCVljbmqKCVcv+ebvwhlI5azIbSEL7m+os6n+WlYA43aA==", + "dev": true, + "requires": { + "@types/d3-interpolate": "*", + "@types/d3-selection": "*" + } + }, "@types/elliptic": { "version": "6.4.14", "resolved": "https://registry.npmjs.org/@types/elliptic/-/elliptic-6.4.14.tgz", @@ -31138,14 +32570,15 @@ } }, "@types/express-serve-static-core": { - "version": "4.17.28", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", - "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", + "version": "4.17.36", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.36.tgz", + "integrity": "sha512-zbivROJ0ZqLAtMzgzIUC4oNqDG9iF0lSsAqpOD9kbs5xcIM3dTiyuHvBc7R8MtWBp3AAWGaovJa+wzWPjLYW7Q==", "dev": true, "requires": { "@types/node": "*", "@types/qs": "*", - "@types/range-parser": "*" + "@types/range-parser": "*", + "@types/send": "*" } }, "@types/facepaint": { @@ -31169,6 +32602,12 @@ "integrity": "sha512-BsPXH/irW0ht0Ji6iw/jJaK8Lj3FJemon2gvEqHKpCdDCeemHa+rI3WBGq5z7cDMZgoLjY40oninGxqk+8NzNQ==", "dev": true }, + "@types/geojson": { + "version": "7946.0.10", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.10.tgz", + "integrity": "sha512-Nmh0K3iWQJzniTuPRcJn5hxXkfB1T1pgB89SBig5PlJQU5yocazeu4jATJlaA0GYFKWMqDdvYemoSnF2pXgLVA==", + "dev": true + }, "@types/graceful-fs": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", @@ -31300,9 +32739,9 @@ } }, "@types/lodash": { - "version": "4.14.182", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.182.tgz", - "integrity": "sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q==" + "version": "4.14.198", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.198.tgz", + "integrity": "sha512-trNJ/vtMZYMLhfN45uLq4ShQSw0/S7xCTLLVM+WM1rmFpba/VS42jVUgaO3w/NOLiWR/09lnYk0yMaA/atdIsg==" }, "@types/lodash.debounce": { "version": "4.0.7", @@ -31340,9 +32779,32 @@ "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==" }, "@types/node": { - "version": "17.0.33", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.33.tgz", - "integrity": "sha512-miWq2m2FiQZmaHfdZNcbpp9PuXg34W5JZ5CrJ/BaS70VuhoJENBEQybeiYSaPBRNq6KQGnjfEnc/F3PN++D+XQ==" + "version": "18.17.15", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.17.15.tgz", + "integrity": "sha512-2yrWpBk32tvV/JAd3HNHWuZn/VDN1P+72hWirHnvsvTGSqbANi+kSeuQR9yAHnbvaBvHDsoTdXV0Fe+iRtHLKA==" + }, + "@types/node-fetch": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.4.tgz", + "integrity": "sha512-1ZX9fcN4Rvkvgv4E6PAY5WXUFWFcRWxZa3EW83UjycOB9ljJCedb2CupIP4RZMEwF/M3eTcCihbBRgwtGbg5Rg==", + "dev": true, + "requires": { + "@types/node": "*", + "form-data": "^3.0.0" + }, + "dependencies": { + "form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + } + } }, "@types/parse-json": { "version": "4.0.0", @@ -31392,18 +32854,6 @@ "@types/react": "^17" } }, - "@types/react-redux": { - "version": "7.1.24", - "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.24.tgz", - "integrity": "sha512-7FkurKcS1k0FHZEtdbbgN8Oc6b+stGSfZYjQGicofJ0j4U0qIn/jaSvnP2pLwZKiai3/17xqqxkkrxTgN8UNbQ==", - "dev": true, - "requires": { - "@types/hoist-non-react-statics": "^3.3.0", - "@types/react": "*", - "hoist-non-react-statics": "^3.3.0", - "redux": "^4.0.0" - } - }, "@types/react-test-renderer": { "version": "18.0.0", "resolved": "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-18.0.0.tgz", @@ -31414,9 +32864,9 @@ } }, "@types/react-transition-group": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.4.tgz", - "integrity": "sha512-7gAPz7anVK5xzbeQW9wFBDg7G++aPLAFY0QaSMOou9rJZpbuI58WAuJrgu+qR92l61grlnCUe7AFX8KGahAgug==", + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.6.tgz", + "integrity": "sha512-VnCdSxfcm08KjsJVQcfBmhEQAPnLB8G08hAxn39azX1qYBQ/5RVQuoHuKIcfKOdncuaUvEpFKFzEvbtIMsfVew==", "dev": true, "requires": { "@types/react": "*" @@ -31469,6 +32919,16 @@ "@types/ws": "*" } }, + "@types/send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", + "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", + "dev": true, + "requires": { + "@types/mime": "^1", + "@types/node": "*" + } + }, "@types/serve-index": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", @@ -32376,6 +33836,45 @@ "integrity": "sha512-s+3fXLkeeLjZ2kLjCBwQufpI5fuN+kIGBxu6530nVQZGVol0d7Y/M88/xw9HGGUcJjKf8LutN3VPRUBq6N7Ajg==", "dev": true }, + "ag-auth": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ag-auth/-/ag-auth-2.0.0.tgz", + "integrity": "sha512-gk5BgWzijPUaCMDYFtuggIlUDWGMlMSOdF/tdQa5sM7Nh0KowohFh3P3sx06gegufKWzWF97dwP/7hLg3CkqWg==", + "dev": true, + "requires": { + "jsonwebtoken": "^9.0.0", + "sc-errors": "^2.0.0" + } + }, + "ag-channel": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ag-channel/-/ag-channel-5.0.0.tgz", + "integrity": "sha512-bArHkdqQxynim981t8FLZM5TfA0v7p081OlFdOxs6clB79GSGcGlOQMDa31DT9F5VMjzqNiJmhfGwinvfU/3Zg==", + "dev": true, + "requires": { + "consumable-stream": "^2.0.0" + } + }, + "ag-request": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ag-request/-/ag-request-1.0.0.tgz", + "integrity": "sha512-2f7I0cQLMVyGAqjSewVMEFuAsJsIY6egdE16UHS636r+8c6Oevrv0j6SrOIXyRN6yuNT4PBuhiKmrhHbh9OvEg==", + "dev": true, + "requires": { + "sc-errors": "^2.0.0" + } + }, + "ag-simple-broker": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ag-simple-broker/-/ag-simple-broker-5.0.0.tgz", + "integrity": "sha512-LMwfBdoNm+8ac/RkgW6z1mjIvy2cgEqWa9cJUD5sc5uiJkIn/kXhVRlPdfa/MJtxPivo9DRhKb9DlSp2gCv+Cg==", + "dev": true, + "requires": { + "ag-channel": "^5.0.0", + "async-stream-emitter": "^4.0.0", + "stream-demux": "^8.0.0" + } + }, "agent-base": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", @@ -32549,149 +34048,6 @@ "picomatch": "^2.0.4" } }, - "apollo-datasource": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-3.3.2.tgz", - "integrity": "sha512-L5TiS8E2Hn/Yz7SSnWIVbZw0ZfEIXZCa5VUiVxD9P53JvSrf4aStvsFDlGWPvpIdCR+aly2CfoB79B9/JjKFqg==", - "dev": true, - "requires": { - "@apollo/utils.keyvaluecache": "^1.0.1", - "apollo-server-env": "^4.2.1" - } - }, - "apollo-reporting-protobuf": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/apollo-reporting-protobuf/-/apollo-reporting-protobuf-3.4.0.tgz", - "integrity": "sha512-h0u3EbC/9RpihWOmcSsvTW2O6RXVaD/mPEjfrPkxRPTEPWqncsgOoRJw+wih4OqfH3PvTJvoEIf4LwKrUaqWog==", - "dev": true, - "requires": { - "@apollo/protobufjs": "1.2.6" - }, - "dependencies": { - "@apollo/protobufjs": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.2.6.tgz", - "integrity": "sha512-Wqo1oSHNUj/jxmsVp4iR3I480p6qdqHikn38lKrFhfzcDJ7lwd7Ck7cHRl4JE81tWNArl77xhnG/OkZhxKBYOw==", - "dev": true, - "requires": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/long": "^4.0.0", - "@types/node": "^10.1.0", - "long": "^4.0.0" - } - }, - "@types/node": { - "version": "10.17.60", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", - "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==", - "dev": true - } - } - }, - "apollo-server-core": { - "version": "3.12.1", - "resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-3.12.1.tgz", - "integrity": "sha512-9SF5WAkkV0FZQ2HVUWI9Jada1U0jg7e8NCN9EklbtvaCeUlOLyXyM+KCWuZ7+dqHxjshbtcwylPHutt3uzoNkw==", - "dev": true, - "requires": { - "@apollo/utils.keyvaluecache": "^1.0.1", - "@apollo/utils.logger": "^1.0.0", - "@apollo/utils.usagereporting": "^1.0.0", - "@apollographql/apollo-tools": "^0.5.3", - "@apollographql/graphql-playground-html": "1.6.29", - "@graphql-tools/mock": "^8.1.2", - "@graphql-tools/schema": "^8.0.0", - "@josephg/resolvable": "^1.0.0", - "apollo-datasource": "^3.3.2", - "apollo-reporting-protobuf": "^3.4.0", - "apollo-server-env": "^4.2.1", - "apollo-server-errors": "^3.3.1", - "apollo-server-plugin-base": "^3.7.2", - "apollo-server-types": "^3.8.0", - "async-retry": "^1.2.1", - "fast-json-stable-stringify": "^2.1.0", - "graphql-tag": "^2.11.0", - "loglevel": "^1.6.8", - "lru-cache": "^6.0.0", - "node-abort-controller": "^3.0.1", - "sha.js": "^2.4.11", - "uuid": "^9.0.0", - "whatwg-mimetype": "^3.0.0" - }, - "dependencies": { - "uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", - "dev": true - } - } - }, - "apollo-server-env": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-4.2.1.tgz", - "integrity": "sha512-vm/7c7ld+zFMxibzqZ7SSa5tBENc4B0uye9LTfjJwGoQFY5xsUPH5FpO5j0bMUDZ8YYNbrF9SNtzc5Cngcr90g==", - "dev": true, - "requires": { - "node-fetch": "^2.6.7" - } - }, - "apollo-server-errors": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-3.3.1.tgz", - "integrity": "sha512-xnZJ5QWs6FixHICXHxUfm+ZWqqxrNuPlQ+kj5m6RtEgIpekOPssH/SD9gf2B4HuWV0QozorrygwZnux8POvyPA==", - "dev": true, - "requires": {} - }, - "apollo-server-express": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-3.7.0.tgz", - "integrity": "sha512-176LSK7YBxwfleurtbfr5SYMheNNJSHrQa2h4QuosLqhfFJkfTpI2iBW56N737U47QfyueCOvkjNZVq86e3n2g==", - "dev": true, - "requires": { - "@types/accepts": "^1.3.5", - "@types/body-parser": "1.19.2", - "@types/cors": "2.8.12", - "@types/express": "4.17.13", - "@types/express-serve-static-core": "4.17.28", - "accepts": "^1.3.5", - "apollo-server-core": "^3.7.0", - "apollo-server-types": "^3.5.3", - "body-parser": "^1.19.0", - "cors": "^2.8.5", - "parseurl": "^1.3.3" - } - }, - "apollo-server-plugin-base": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-3.7.2.tgz", - "integrity": "sha512-wE8dwGDvBOGehSsPTRZ8P/33Jan6/PmL0y0aN/1Z5a5GcbFhDaaJCjK5cav6npbbGL2DPKK0r6MPXi3k3N45aw==", - "dev": true, - "requires": { - "apollo-server-types": "^3.8.0" - } - }, - "apollo-server-types": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-3.8.0.tgz", - "integrity": "sha512-ZI/8rTE4ww8BHktsVpb91Sdq7Cb71rdSkXELSwdSR0eXu600/sY+1UXhTWdiJvk+Eq5ljqoHLwLbY2+Clq2b9A==", - "dev": true, - "requires": { - "@apollo/utils.keyvaluecache": "^1.0.1", - "@apollo/utils.logger": "^1.0.0", - "apollo-reporting-protobuf": "^3.4.0", - "apollo-server-env": "^4.2.1" - } - }, "append-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", @@ -32848,15 +34204,6 @@ "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true }, - "async": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/async/-/async-2.3.0.tgz", - "integrity": "sha512-uDDBwBVKsWWe4uMmvVmFiW07K5BmdyZvSFzxlujNBtSJ/qzAlGM6UHOFZsQd5jsdmWatrCMWwYyVAc8cuJrepQ==", - "dev": true, - "requires": { - "lodash": "^4.14.0" - } - }, "async-retry": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", @@ -32866,6 +34213,15 @@ "retry": "0.13.1" } }, + "async-stream-emitter": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/async-stream-emitter/-/async-stream-emitter-4.1.0.tgz", + "integrity": "sha512-cfPZYjHkhCdHSR+eux71vOU8+8Xb23oLyxccAjwYHgOxDb3+qSDb2HV1Y0Hmu39vZlse2cm15CUShLiVYXHCmQ==", + "dev": true, + "requires": { + "stream-demux": "^8.1.0" + } + }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -32878,12 +34234,6 @@ "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", "dev": true }, - "atoa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/atoa/-/atoa-1.0.0.tgz", - "integrity": "sha512-VVE1H6cc4ai+ZXo/CRWoJiHXrA1qfA31DPnx6D20+kSI547hQN5Greh51LQ1baMRMfxO5K5M4ImMtZbZt2DODQ==", - "dev": true - }, "atomic-sleep": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", @@ -33184,9 +34534,9 @@ "integrity": "sha512-p32+F8dg+ANGx7s8QsZS74ZPHfIycmC2yZcoerzFgbersIYWitPbbF39G6SBx3gyvzyLH5nt1ooocxr0IHuWKA==" }, "base64id": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", - "integrity": "sha512-rz8L+d/xByiB/vLVftPkyY215fqNrmasrcJsYkVcm4TgJNz+YXKrFaFAWibSaHkiKoSgMDCb+lipOIRQNGYesw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", "dev": true }, "basic-auth": { @@ -33229,6 +34579,42 @@ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true }, + "bl": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", + "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", + "dev": true, + "requires": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, "bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", @@ -33383,6 +34769,15 @@ } } }, + "bplist-parser": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", + "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", + "dev": true, + "requires": { + "big-integer": "^1.6.44" + } + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -33541,6 +34936,15 @@ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, + "bundle-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz", + "integrity": "sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==", + "dev": true, + "requires": { + "run-applescript": "^5.0.0" + } + }, "bunyan": { "version": "1.8.15", "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.8.15.tgz", @@ -33687,26 +35091,18 @@ "dev": true }, "cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", + "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", "dev": true, "requires": { "clone-response": "^1.0.2", "get-stream": "^5.1.0", "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", + "keyv": "^4.0.0", "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "dependencies": { - "lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true - } + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" } }, "call-bind": { @@ -33886,12 +35282,6 @@ "integrity": "sha512-Y4kiDb+AM4Ecy58YkuZrrSRJBDQdQ2L+NyS1vHHFtNtUjgutcZfx3yp1dAONI/oPaPmyGfCLx5CxL+zauIMyKQ==", "dev": true }, - "chardet": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", - "integrity": "sha512-j/Toj7f1z98Hh2cYo2BVr85EpIRWqUi7rtRSGxh/cqUjqrnJe9l9UE7IUGd2vQ2p+kSHLkSzObQPZPLUC6TQwg==", - "dev": true - }, "cheerio": { "version": "1.0.0-rc.12", "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", @@ -34135,12 +35525,6 @@ "string-width": "^5.0.0" } }, - "cli-width": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", - "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", - "dev": true - }, "cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -34253,9 +35637,9 @@ "dev": true }, "codemirror": { - "version": "5.65.3", - "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.65.3.tgz", - "integrity": "sha512-kCC0iwGZOVZXHEKW3NDTObvM7pTIyowjty4BUqeREROc/3I6bWbgZDA3fGDwlA+rbgRjvnRnfqs9SfXynel1AQ==", + "version": "5.65.15", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.65.15.tgz", + "integrity": "sha512-YC4EHbbwQeubZzxLl5G4nlbLc1T21QTrKGaOal/Pkm9dVDMZXMH7+ieSPEOZCtO9I68i8/oteJKOxzHC2zR+0g==", "dev": true }, "collect-v8-coverage": { @@ -34265,13 +35649,30 @@ "dev": true }, "color": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", - "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", "dev": true, "requires": { - "color-convert": "^1.9.3", - "color-string": "^1.6.0" + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, + "dependencies": { + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } } }, "color-convert": { @@ -34304,9 +35705,9 @@ "dev": true }, "colorette": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", - "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", "dev": true }, "colors": { @@ -34575,6 +35976,12 @@ "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", "dev": true }, + "consumable-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/consumable-stream/-/consumable-stream-2.0.0.tgz", + "integrity": "sha512-I6WA2JVYXs/68rEvi1ie3rZjP6qusTVFEQkbzR+WC+fY56TpwiGTIDJETsrnlxv5CsnmK69ps6CkYvIbpEEqBA==", + "dev": true + }, "content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", @@ -34598,16 +36005,6 @@ "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", "dev": true }, - "contra": { - "version": "1.9.4", - "resolved": "https://registry.npmjs.org/contra/-/contra-1.9.4.tgz", - "integrity": "sha1-9TveQtfltZhcrk2ZqNYQUm3o8o0=", - "dev": true, - "requires": { - "atoa": "1.0.0", - "ticky": "1.0.1" - } - }, "convert-source-map": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", @@ -34688,9 +36085,9 @@ } }, "core-js-pure": { - "version": "3.22.5", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.22.5.tgz", - "integrity": "sha512-8xo9R00iYD7TcV7OrC98GwxiUEAabVWO3dix+uyWjnYrx9fyASLlIX+f/3p5dW5qByaP2bcZ8X/T47s55et/tA==", + "version": "3.32.2", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.32.2.tgz", + "integrity": "sha512-Y2rxThOuNywTjnX/PgA5vWM6CZ9QB9sz9oGeCixV8MqXZO70z/5SHzf9EeBrEBK0PN36DnEBBu9O/aGWzKuMZQ==", "dev": true }, "core-util-is": { @@ -34746,15 +36143,6 @@ "which": "^2.0.1" } }, - "crossvent": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/crossvent/-/crossvent-1.5.4.tgz", - "integrity": "sha1-2ixPj0DJR4JRe/K+7BBEFIGUq5I=", - "dev": true, - "requires": { - "custom-event": "1.0.0" - } - }, "crx3": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/crx3/-/crx3-1.1.3.tgz", @@ -34874,12 +36262,6 @@ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true }, - "cssfilter": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz", - "integrity": "sha1-xtJnJjKi5cg+AT5oZKQs6N79IK4=", - "dev": true - }, "cssom": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", @@ -34908,41 +36290,339 @@ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.11.tgz", "integrity": "sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==" }, - "custom-event": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.0.tgz", - "integrity": "sha1-LkYovhncSyFLXAJjDFlx6BFhgGI=", + "d3": { + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.8.5.tgz", + "integrity": "sha512-JgoahDG51ncUfJu6wX/1vWQEqOflgXyl4MaHqlcSruTez7yhaRKR9i8VjjcQGeS2en/jnFivXuaIMnseMMt0XA==", + "dev": true, + "requires": { + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "4", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" + } + }, + "d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "dev": true, + "requires": { + "internmap": "1 - 2" + } + }, + "d3-axis": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", + "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", "dev": true }, - "d3": { - "version": "3.5.17", - "resolved": "https://registry.npmjs.org/d3/-/d3-3.5.17.tgz", - "integrity": "sha1-vEZ0gAQ3iyGjYMn8fPUjF5B2L7g=", + "d3-brush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", + "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "dev": true, + "requires": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + } + }, + "d3-chord": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", + "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "dev": true, + "requires": { + "d3-path": "1 - 3" + } + }, + "d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", "dev": true }, + "d3-contour": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", + "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "dev": true, + "requires": { + "d3-array": "^3.2.0" + } + }, + "d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", + "dev": true, + "requires": { + "delaunator": "5" + } + }, + "d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "dev": true + }, + "d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "dev": true, + "requires": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + } + }, + "d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "dev": true, + "requires": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + }, + "dependencies": { + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true + }, + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "dev": true + }, + "d3-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "dev": true, + "requires": { + "d3-dsv": "1 - 3" + } + }, + "d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "dev": true, + "requires": { + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + } + }, + "d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "dev": true + }, + "d3-geo": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.0.tgz", + "integrity": "sha512-JEo5HxXDdDYXCaWdwLRt79y7giK8SbhZJbFWXqbRTolCHFI5jRqteLzCsq51NKbUoX0PjBVSohxrx+NoOUujYA==", + "dev": true, + "requires": { + "d3-array": "2.5.0 - 3" + } + }, + "d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "dev": true + }, + "d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "dev": true, + "requires": { + "d3-color": "1 - 3" + } + }, + "d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "dev": true + }, + "d3-polygon": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "dev": true + }, + "d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "dev": true + }, + "d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "dev": true + }, + "d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "dev": true, + "requires": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + } + }, + "d3-scale-chromatic": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", + "integrity": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==", + "dev": true, + "requires": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + } + }, + "d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "dev": true + }, + "d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "dev": true, + "requires": { + "d3-path": "^3.1.0" + } + }, "d3-state-visualizer": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/d3-state-visualizer/-/d3-state-visualizer-1.6.0.tgz", - "integrity": "sha512-zlzh/BllmvMXkpIIV/OTF2Opb74MOW9ViMaDRFeMqDZ9WrwlWTgQiFpxpD3T6gDze3fJFbxbNZfbCTE7uTiUFA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-state-visualizer/-/d3-state-visualizer-2.0.0.tgz", + "integrity": "sha512-0f8ahCTsE180/9jgz+G2aCQjEMMUQjhaxGkLcc25llLon4g5MTNLAzrOxRsv0YiMoZlII05pfLLwYaqC7MsO0Q==", "dev": true, "requires": { - "@babel/runtime": "^7.16.7", - "@types/d3": "^3.5.46", - "d3": "^3.5.17", - "d3tooltip": "^2.1.0", + "@babel/runtime": "^7.20.6", + "@types/d3": "^7.4.0", + "d3": "^7.8.0", + "d3tooltip": "^3.0.0", "deepmerge": "^4.2.2", - "map2tree": "^2.1.0", + "map2tree": "^3.0.0", "ramda": "^0.28.0" } }, + "d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "dev": true, + "requires": { + "d3-array": "2 - 3" + } + }, + "d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "dev": true, + "requires": { + "d3-time": "1 - 3" + } + }, + "d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "dev": true + }, + "d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "dev": true, + "requires": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + } + }, + "d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "dev": true, + "requires": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + } + }, "d3tooltip": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/d3tooltip/-/d3tooltip-2.1.0.tgz", - "integrity": "sha512-McomFzJ39RVyGTCKolazdmNG25AdykpdSbaEwyzFHEi4GZH7eZv8FxKwCpsN5/BaywvdsUtRa7eXCScISrJv9A==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3tooltip/-/d3tooltip-3.0.0.tgz", + "integrity": "sha512-bQSxCU0D99KEvpHZjB5oiXToc98FxIHOAAOJRncZMsU3iUU18a2X//FgPnuI0K7wVjfKfgr4dXw5sEvTXSyu6Q==", "dev": true, "requires": { - "@babel/runtime": "^7.16.7", - "ramda": "^0.28.0" + "@babel/runtime": "^7.20.6" } }, "damerau-levenshtein": { @@ -34996,9 +36676,9 @@ } }, "dateformat": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", - "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-5.0.3.tgz", + "integrity": "sha512-Kvr6HmPXUMerlLcLF+Pwq3K7apHpYmGDVqrxcDasBg86UcKeTSNWbEzU8bwdXnxnR44FtMhJAxI4Bov6Y/KUfA==", "dev": true }, "de-indent": { @@ -35033,12 +36713,20 @@ "dev": true }, "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", "dev": true, "requires": { - "mimic-response": "^1.0.0" + "mimic-response": "^3.1.0" + }, + "dependencies": { + "mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true + } } }, "dedent": { @@ -35073,6 +36761,101 @@ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==" }, + "default-browser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-4.0.0.tgz", + "integrity": "sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==", + "dev": true, + "requires": { + "bundle-name": "^3.0.0", + "default-browser-id": "^3.0.0", + "execa": "^7.1.1", + "titleize": "^3.0.0" + }, + "dependencies": { + "execa": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", + "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^4.3.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + } + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, + "human-signals": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", + "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", + "dev": true + }, + "is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true + }, + "mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true + }, + "npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "dev": true, + "requires": { + "path-key": "^4.0.0" + } + }, + "onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "requires": { + "mimic-fn": "^4.0.0" + } + }, + "path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true + }, + "strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true + } + } + }, + "default-browser-id": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz", + "integrity": "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==", + "dev": true, + "requires": { + "bplist-parser": "^0.2.0", + "untildify": "^4.0.0" + } + }, "default-gateway": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", @@ -35100,9 +36883,9 @@ } }, "defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", "dev": true }, "define-lazy-prop": { @@ -35120,6 +36903,15 @@ "object-keys": "^1.1.1" } }, + "delaunator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", + "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", + "dev": true, + "requires": { + "robust-predicates": "^3.0.0" + } + }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -35312,16 +37104,6 @@ "is-obj": "^2.0.0" } }, - "dragula": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/dragula/-/dragula-3.7.2.tgz", - "integrity": "sha1-SjXJ05gf+sGpScKcpyhQWOhzk84=", - "dev": true, - "requires": { - "contra": "1.9.4", - "crossvent": "1.5.4" - } - }, "dtrace-provider": { "version": "0.8.8", "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.8.tgz", @@ -35332,12 +37114,6 @@ "nan": "^2.14.0" } }, - "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", - "dev": true - }, "duplexify": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", @@ -35405,94 +37181,14 @@ "dev": true }, "electron": { - "version": "18.3.15", - "resolved": "https://registry.npmjs.org/electron/-/electron-18.3.15.tgz", - "integrity": "sha512-frkBt8skyo8SmlG4TbByDxZw6/tqttRYYIBaeTBfkoG18OyD59IVwVaXXHO8UYKB5/1C2Rce0Gj6uoxlAHQHzQ==", + "version": "25.8.0", + "resolved": "https://registry.npmjs.org/electron/-/electron-25.8.0.tgz", + "integrity": "sha512-T3kC1a/3ntSaYMCVVfUUc9v7myPzi6J2GP0Ad/CyfWKDPp054dGyKxb2EEjKnxQQ7wfjsT1JTEdBG04x6ekVBw==", "dev": true, "requires": { - "@electron/get": "^1.13.0", - "@types/node": "^16.11.26", - "extract-zip": "^1.0.3" - }, - "dependencies": { - "@types/node": { - "version": "16.11.35", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.35.tgz", - "integrity": "sha512-QXu45LyepgnhUfnIAj/FyT4uM87ug5KpIrgXfQtUPNAlx8w5hmd8z8emqCLNvG11QkpRSCG9Qg2buMxvqfjfsQ==", - "dev": true - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "extract-zip": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", - "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", - "dev": true, - "requires": { - "concat-stream": "^1.6.2", - "debug": "^2.6.9", - "mkdirp": "^0.5.4", - "yauzl": "^2.10.0" - } - }, - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "requires": { - "minimist": "^1.2.6" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } + "@electron/get": "^2.0.0", + "@types/node": "^18.11.18", + "extract-zip": "^2.0.1" } }, "electron-to-chromium": { @@ -35693,13 +37389,13 @@ "es6-template-regex": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/es6-template-regex/-/es6-template-regex-0.1.1.tgz", - "integrity": "sha1-5Re54PdCvuuNMECDRUT9oORlFGc=", + "integrity": "sha512-sCeu9DOYhaSlKG7ry2y384bwxxaxPPdqWS0Jj45lv1MeQSpRK7mYlLO0jZdqwDLHViDWMsMikOkSIXuXpf4DiQ==", "dev": true }, "es6template": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/es6template/-/es6template-1.0.5.tgz", - "integrity": "sha1-O7u5efpriudlsMmGMQ9yAHJWKp8=", + "integrity": "sha512-WASLwPb/GoVFxESVJqpVpgUhrC3Z4mami74a2d2MsvYwicn8YkGSWGippd+l2ciSoPoymv4KNFYgDi3B4t7RGA==", "dev": true, "requires": { "es6-template-regex": "^0.1.1", @@ -36402,12 +38098,6 @@ "jest-util": "^29.3.1" } }, - "expirymanager": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/expirymanager/-/expirymanager-0.9.4.tgz", - "integrity": "sha512-bKcLuZPTs9mFxQ2VJPYJCMuGVAM9Ah6KfezbDA3IegbGeqR39WdPi+T7GgDGVuBPjYDFsSP/va5csiNVCGT1Mw==", - "dev": true - }, "express": { "version": "4.18.2", "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", @@ -36478,34 +38168,12 @@ "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, "requires": { "is-extendable": "^0.1.0" } }, - "external-editor": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", - "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", - "dev": true, - "requires": { - "chardet": "^0.4.0", - "iconv-lite": "^0.4.17", - "tmp": "^0.0.33" - }, - "dependencies": { - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "requires": { - "os-tmpdir": "~1.0.2" - } - } - } - }, "extract-zip": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", @@ -36634,15 +38302,6 @@ "web-streams-polyfill": "^3.0.3" } }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, "file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -36803,12 +38462,6 @@ "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", "dev": true }, - "fleximap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fleximap/-/fleximap-1.0.0.tgz", - "integrity": "sha512-zg/PthjBzESYKomTw/wivo8Id6B+obVkWriIzDuRfuw4wxEIV2/0D/NIGf+LKcGTTifHRfw73+oAAQozZ9MAhA==", - "dev": true - }, "flush-write-stream": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", @@ -37171,51 +38824,6 @@ "tar": "6.1.11" }, "dependencies": { - "@sindresorhus/is": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", - "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", - "dev": true - }, - "@szmarczak/http-timer": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", - "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", - "dev": true, - "requires": { - "defer-to-connect": "^2.0.0" - } - }, - "cacheable-request": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", - "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", - "dev": true, - "requires": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^4.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^6.0.1", - "responselike": "^2.0.0" - } - }, - "decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dev": true, - "requires": { - "mimic-response": "^3.1.0" - } - }, - "defer-to-connect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", - "dev": true - }, "got": { "version": "11.8.5", "resolved": "https://registry.npmjs.org/got/-/got-11.8.5.tgz", @@ -37234,54 +38842,6 @@ "p-cancelable": "^2.0.0", "responselike": "^2.0.0" } - }, - "json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true - }, - "keyv": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", - "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", - "dev": true, - "requires": { - "json-buffer": "3.0.1" - } - }, - "lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true - }, - "mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "dev": true - }, - "normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", - "dev": true - }, - "p-cancelable": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", - "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", - "dev": true - }, - "responselike": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", - "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", - "dev": true, - "requires": { - "lowercase-keys": "^2.0.0" - } } } }, @@ -37319,6 +38879,12 @@ "integrity": "sha1-uuDfq6WIoMYNeDTA2Nwv9g7u8v4=", "dev": true }, + "get-port": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-7.0.0.tgz", + "integrity": "sha512-mDHFgApoQd+azgMdwylJrv2DX47ywGq1i5VFJE7fZ0dttNq3iQMfsU4IvEgBHojA3KqEudyu7Vq+oN8kNaNkWw==", + "dev": true + }, "get-stdin": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz", @@ -37347,13 +38913,13 @@ "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", "dev": true }, "getopts": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/getopts/-/getopts-2.2.5.tgz", - "integrity": "sha512-9jb7AW5p3in+IiJWhQiZmmwkpLaR/ccTWdWQCtZM66HJcHHLegowh4q4tSD7gouUyeNvFWRavfK9GXosQHDpFA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/getopts/-/getopts-2.3.0.tgz", + "integrity": "sha512-5eDf9fuSXwxBL6q5HX+dhDj+dslFGWzU5thZ9kNKUkcPtaPdatmUFKwHFrLb/uf/WpA4BHET+AX3Scl56cAjpA==", "dev": true }, "getpass": { @@ -37365,12 +38931,6 @@ "assert-plus": "^1.0.0" } }, - "getport": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/getport/-/getport-0.1.0.tgz", - "integrity": "sha1-q93z1dHnfdlnzPorA2oKH7Jv1/c=", - "dev": true - }, "gettext-converter": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/gettext-converter/-/gettext-converter-1.2.3.tgz", @@ -37542,9 +39102,9 @@ }, "dependencies": { "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "optional": true, "requires": { @@ -37570,19 +39130,6 @@ } } }, - "global-tunnel-ng": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz", - "integrity": "sha512-4s+DyciWBV0eK148wqXxcmVAbFVPqtc3sEtUE/GTQfuU80rySLcMhUmHKSHI7/LDj8q0gDYI1lIhRRB7ieRAqg==", - "dev": true, - "optional": true, - "requires": { - "encodeurl": "^1.0.2", - "lodash": "^4.17.10", - "npm-conf": "^1.1.3", - "tunnel": "^0.0.6" - } - }, "globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", @@ -37613,33 +39160,22 @@ } }, "got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "version": "11.8.6", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", + "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", "dev": true, "requires": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - }, - "dependencies": { - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - } + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" } }, "graceful-fs": { @@ -37666,20 +39202,11 @@ "dev": true }, "graphql": { - "version": "16.5.0", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.5.0.tgz", - "integrity": "sha512-qbHgh8Ix+j/qY+a/ZcJnFQ+j8ezakqPiHwPiZhV/3PgGlgf96QMBB5/f2rkiC9sgLoy/xvT6TSiaf2nTHJh5iA==", + "version": "16.8.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.8.0.tgz", + "integrity": "sha512-0oKGaR+y3qcS5mCu1vb7KG+a89vjn06C7Ihq/dDl3jA+A8B3TKomvi3CiEcVLJQGalbu8F52LxkOym7U5sSfbg==", "dev": true }, - "graphql-tag": { - "version": "2.12.6", - "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", - "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", - "dev": true, - "requires": { - "tslib": "^2.1.0" - } - }, "growly": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", @@ -37934,9 +39461,9 @@ } }, "html-entities": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", - "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.4.0.tgz", + "integrity": "sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==", "dev": true }, "html-escaper": { @@ -38369,15 +39896,15 @@ "dev": true }, "immer": { - "version": "9.0.14", - "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.14.tgz", - "integrity": "sha512-ubBeqQutOSLIFCUBN03jGeOS6a3DoYlSYwYJTa+gSKEZKU5redJIqkIdZ3JVv/4RZpfcXdAWH5zCNLWPRv2WDw==", + "version": "9.0.21", + "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", + "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==", "dev": true }, "immutable": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz", - "integrity": "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz", + "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==", "dev": true }, "import-fresh": { @@ -38445,115 +39972,6 @@ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, - "inquirer": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-5.2.0.tgz", - "integrity": "sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ==", - "dev": true, - "requires": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.0", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^2.1.0", - "figures": "^2.0.0", - "lodash": "^4.3.0", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rxjs": "^5.5.2", - "string-width": "^2.1.0", - "strip-ansi": "^4.0.0", - "through": "^2.3.6" - }, - "dependencies": { - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true - }, - "ansi-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", - "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", - "dev": true - }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", - "dev": true, - "requires": { - "restore-cursor": "^2.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true - }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "dev": true, - "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - } - }, - "rxjs": { - "version": "5.5.12", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", - "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==", - "dev": true, - "requires": { - "symbol-observable": "1.0.1" - } - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "symbol-observable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", - "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=", - "dev": true - } - } - }, "internal-slot": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", @@ -38565,6 +39983,12 @@ "side-channel": "^1.0.4" } }, + "internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "dev": true + }, "interpret": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", @@ -38697,7 +40121,7 @@ "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", "dev": true }, "is-extglob": { @@ -38729,9 +40153,26 @@ "is-in-browser": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz", - "integrity": "sha1-Vv9NtoOgeMYILrldrX3GLh0E+DU=", + "integrity": "sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g==", "dev": true }, + "is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "dev": true, + "requires": { + "is-docker": "^3.0.0" + }, + "dependencies": { + "is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "dev": true + } + } + }, "is-installed-globally": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", @@ -40584,9 +42025,9 @@ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" }, "json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true }, "json-merge-patch": { @@ -40659,13 +42100,64 @@ "dev": true }, "jsondiffpatch": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/jsondiffpatch/-/jsondiffpatch-0.4.1.tgz", - "integrity": "sha512-t0etAxTUk1w5MYdNOkZBZ8rvYYN5iL+2dHCCx/DpkFm/bW28M6y5nUS83D4XdZiHy35Fpaw6LBb+F88fHZnVCw==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsondiffpatch/-/jsondiffpatch-0.5.0.tgz", + "integrity": "sha512-Quz3MvAwHxVYNXsOByL7xI5EB2WYOeFswqaHIA3qOK3isRWTxiplBEocmmru6XmxDB2L7jDNYtYA4FyimoAFEw==", "dev": true, "requires": { - "chalk": "^2.3.0", + "chalk": "^3.0.0", "diff-match-patch": "^1.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "jsonfile": { @@ -40678,15 +42170,15 @@ } }, "jsonpointer": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.0.tgz", - "integrity": "sha512-PNYZIdMjVIvVgDSYKTT63Y+KZ6IZvGRNNWcxwD+GNnUz1MKPfv30J8ueCjdwcN0nDx2SlshgyB7Oy0epAzVRRg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", + "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", "dev": true }, "jsonwebtoken": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", - "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", "dev": true, "requires": { "jws": "^3.2.2", @@ -40698,14 +42190,17 @@ "lodash.isstring": "^4.0.1", "lodash.once": "^4.0.0", "ms": "^2.1.1", - "semver": "^5.6.0" + "semver": "^7.5.4" }, "dependencies": { "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } } } }, @@ -40722,9 +42217,9 @@ } }, "jss": { - "version": "10.9.0", - "resolved": "https://registry.npmjs.org/jss/-/jss-10.9.0.tgz", - "integrity": "sha512-YpzpreB6kUunQBbrlArlsMpXYyndt9JATbt95tajx0t4MTJJcCJdd4hdNpHmOIDiUJrF/oX5wtVFrS3uofWfGw==", + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss/-/jss-10.10.0.tgz", + "integrity": "sha512-cqsOTS7jqPsPMjtKYDUpdFC0AbhYFLTcuGRqymgmdJIeQ8cH7+AgX7YSgQy79wXloZq2VvATYxUOUQEvS1V/Zw==", "dev": true, "requires": { "@babel/runtime": "^7.3.1", @@ -40734,153 +42229,153 @@ } }, "jss-plugin-camel-case": { - "version": "10.9.0", - "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.9.0.tgz", - "integrity": "sha512-UH6uPpnDk413/r/2Olmw4+y54yEF2lRIV8XIZyuYpgPYTITLlPOsq6XB9qeqv+75SQSg3KLocq5jUBXW8qWWww==", + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.10.0.tgz", + "integrity": "sha512-z+HETfj5IYgFxh1wJnUAU8jByI48ED+v0fuTuhKrPR+pRBYS2EDwbusU8aFOpCdYhtRc9zhN+PJ7iNE8pAWyPw==", "dev": true, "requires": { "@babel/runtime": "^7.3.1", "hyphenate-style-name": "^1.0.3", - "jss": "10.9.0" + "jss": "10.10.0" } }, "jss-plugin-compose": { - "version": "10.9.0", - "resolved": "https://registry.npmjs.org/jss-plugin-compose/-/jss-plugin-compose-10.9.0.tgz", - "integrity": "sha512-Q/0FEZhDwGUpf3/b7+PspmMi6MVSlN3YlTDmvrft7I6N346jUpd8MYkYP/6qM1ZMuVj4v8ky/XYqr1v2ganLLg==", + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-compose/-/jss-plugin-compose-10.10.0.tgz", + "integrity": "sha512-F5kgtWpI2XfZ3Z8eP78tZEYFdgTIbpA/TMuX3a8vwrNolYtN1N4qJR/Ob0LAsqIwCMLojtxN7c7Oo/+Vz6THow==", "dev": true, "requires": { "@babel/runtime": "^7.3.1", - "jss": "10.9.0", + "jss": "10.10.0", "tiny-warning": "^1.0.2" } }, "jss-plugin-default-unit": { - "version": "10.9.0", - "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.9.0.tgz", - "integrity": "sha512-7Ju4Q9wJ/MZPsxfu4T84mzdn7pLHWeqoGd/D8O3eDNNJ93Xc8PxnLmV8s8ZPNRYkLdxZqKtm1nPQ0BM4JRlq2w==", + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.10.0.tgz", + "integrity": "sha512-SvpajxIECi4JDUbGLefvNckmI+c2VWmP43qnEy/0eiwzRUsafg5DVSIWSzZe4d2vFX1u9nRDP46WCFV/PXVBGQ==", "dev": true, "requires": { "@babel/runtime": "^7.3.1", - "jss": "10.9.0" + "jss": "10.10.0" } }, "jss-plugin-expand": { - "version": "10.9.0", - "resolved": "https://registry.npmjs.org/jss-plugin-expand/-/jss-plugin-expand-10.9.0.tgz", - "integrity": "sha512-QfZ9jld0HpF1OiYU7cGWQ4q+f6+Wu93mV4X+cA1iVRssiUbSbygwdfZkUwX23UOhS1WWRJeQlLK1aJC94K8/0A==", + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-expand/-/jss-plugin-expand-10.10.0.tgz", + "integrity": "sha512-ymT62W2OyDxBxr7A6JR87vVX9vTq2ep5jZLIdUSusfBIEENLdkkc0lL/Xaq8W9s3opUq7R0sZQpzRWELrfVYzA==", "dev": true, "requires": { "@babel/runtime": "^7.3.1", - "jss": "10.9.0" + "jss": "10.10.0" } }, "jss-plugin-extend": { - "version": "10.9.0", - "resolved": "https://registry.npmjs.org/jss-plugin-extend/-/jss-plugin-extend-10.9.0.tgz", - "integrity": "sha512-xvmosUh3RsKVsm9L14ml6PL3i0Ejj5gB6eo/jTMkGW1kIy42gNXV1EthR8cD5xiowWstnvugQ3JF0pI5+QkPMg==", + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-extend/-/jss-plugin-extend-10.10.0.tgz", + "integrity": "sha512-sKYrcMfr4xxigmIwqTjxNcHwXJIfvhvjTNxF+Tbc1NmNdyspGW47Ey6sGH8BcQ4FFQhLXctpWCQSpDwdNmXSwg==", "dev": true, "requires": { "@babel/runtime": "^7.3.1", - "jss": "10.9.0", + "jss": "10.10.0", "tiny-warning": "^1.0.2" } }, "jss-plugin-global": { - "version": "10.9.0", - "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.9.0.tgz", - "integrity": "sha512-4G8PHNJ0x6nwAFsEzcuVDiBlyMsj2y3VjmFAx/uHk/R/gzJV+yRHICjT4MKGGu1cJq2hfowFWCyrr/Gg37FbgQ==", + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.10.0.tgz", + "integrity": "sha512-icXEYbMufiNuWfuazLeN+BNJO16Ge88OcXU5ZDC2vLqElmMybA31Wi7lZ3lf+vgufRocvPj8443irhYRgWxP+A==", "dev": true, "requires": { "@babel/runtime": "^7.3.1", - "jss": "10.9.0" + "jss": "10.10.0" } }, "jss-plugin-nested": { - "version": "10.9.0", - "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.9.0.tgz", - "integrity": "sha512-2UJnDrfCZpMYcpPYR16oZB7VAC6b/1QLsRiAutOt7wJaaqwCBvNsosLEu/fUyKNQNGdvg2PPJFDO5AX7dwxtoA==", + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.10.0.tgz", + "integrity": "sha512-9R4JHxxGgiZhurDo3q7LdIiDEgtA1bTGzAbhSPyIOWb7ZubrjQe8acwhEQ6OEKydzpl8XHMtTnEwHXCARLYqYA==", "dev": true, "requires": { "@babel/runtime": "^7.3.1", - "jss": "10.9.0", + "jss": "10.10.0", "tiny-warning": "^1.0.2" } }, "jss-plugin-props-sort": { - "version": "10.9.0", - "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.9.0.tgz", - "integrity": "sha512-7A76HI8bzwqrsMOJTWKx/uD5v+U8piLnp5bvru7g/3ZEQOu1+PjHvv7bFdNO3DwNPC9oM0a//KwIJsIcDCjDzw==", + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.10.0.tgz", + "integrity": "sha512-5VNJvQJbnq/vRfje6uZLe/FyaOpzP/IH1LP+0fr88QamVrGJa0hpRRyAa0ea4U/3LcorJfBFVyC4yN2QC73lJg==", "dev": true, "requires": { "@babel/runtime": "^7.3.1", - "jss": "10.9.0" + "jss": "10.10.0" } }, "jss-plugin-rule-value-function": { - "version": "10.9.0", - "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.9.0.tgz", - "integrity": "sha512-IHJv6YrEf8pRzkY207cPmdbBstBaE+z8pazhPShfz0tZSDtRdQua5jjg6NMz3IbTasVx9FdnmptxPqSWL5tyJg==", + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.10.0.tgz", + "integrity": "sha512-uEFJFgaCtkXeIPgki8ICw3Y7VMkL9GEan6SqmT9tqpwM+/t+hxfMUdU4wQ0MtOiMNWhwnckBV0IebrKcZM9C0g==", "dev": true, "requires": { "@babel/runtime": "^7.3.1", - "jss": "10.9.0", + "jss": "10.10.0", "tiny-warning": "^1.0.2" } }, "jss-plugin-rule-value-observable": { - "version": "10.9.0", - "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-observable/-/jss-plugin-rule-value-observable-10.9.0.tgz", - "integrity": "sha512-/MWVPJVEn41+ofzQdsvH1GR4wusDqFqNnchh/98HVc580MxPy4NVkmUa2SAEpbHhnJ93sCoETZccW3HJKuvH4A==", + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-observable/-/jss-plugin-rule-value-observable-10.10.0.tgz", + "integrity": "sha512-ZLMaYrR3QE+vD7nl3oNXuj79VZl9Kp8/u6A1IbTPDcuOu8b56cFdWRZNZ0vNr8jHewooEeq2doy8Oxtymr2ZPA==", "dev": true, "requires": { "@babel/runtime": "^7.3.1", - "jss": "10.9.0", + "jss": "10.10.0", "symbol-observable": "^1.2.0" } }, "jss-plugin-template": { - "version": "10.9.0", - "resolved": "https://registry.npmjs.org/jss-plugin-template/-/jss-plugin-template-10.9.0.tgz", - "integrity": "sha512-lxThUvdt0drCi7xhuJWxADWTgLLy1IWCeFO5k+dtba900xJsNg0IGZplpP9w9UpaJsYS3WUwWMXw8Sxn1dobfQ==", + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-template/-/jss-plugin-template-10.10.0.tgz", + "integrity": "sha512-ocXZBIOJOA+jISPdsgkTs8wwpK6UbsvtZK5JI7VUggTD6LWKbtoxUzadd2TpfF+lEtlhUmMsCkTRNkITdPKa6w==", "dev": true, "requires": { "@babel/runtime": "^7.3.1", - "jss": "10.9.0", + "jss": "10.10.0", "tiny-warning": "^1.0.2" } }, "jss-plugin-vendor-prefixer": { - "version": "10.9.0", - "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.9.0.tgz", - "integrity": "sha512-MbvsaXP7iiVdYVSEoi+blrW+AYnTDvHTW6I6zqi7JcwXdc6I9Kbm234nEblayhF38EftoenbM+5218pidmC5gA==", + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.10.0.tgz", + "integrity": "sha512-UY/41WumgjW8r1qMCO8l1ARg7NHnfRVWRhZ2E2m0DMYsr2DD91qIXLyNhiX83hHswR7Wm4D+oDYNC1zWCJWtqg==", "dev": true, "requires": { "@babel/runtime": "^7.3.1", "css-vendor": "^2.0.8", - "jss": "10.9.0" + "jss": "10.10.0" } }, "jss-preset-default": { - "version": "10.9.0", - "resolved": "https://registry.npmjs.org/jss-preset-default/-/jss-preset-default-10.9.0.tgz", - "integrity": "sha512-Zdsj+R+UTn7OOJ1TFQi+l8PfEL7APSAM6vRPaU8mJywT8OrMjgslMKckFLrgq1k+qk1hJR1ePAMesvZ5aAXGOQ==", + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-preset-default/-/jss-preset-default-10.10.0.tgz", + "integrity": "sha512-GL175Wt2FGhjE+f+Y3aWh+JioL06/QWFgZp53CbNNq6ZkVU0TDplD8Bxm9KnkotAYn3FlplNqoW5CjyLXcoJ7Q==", "dev": true, "requires": { "@babel/runtime": "^7.3.1", - "jss": "10.9.0", - "jss-plugin-camel-case": "10.9.0", - "jss-plugin-compose": "10.9.0", - "jss-plugin-default-unit": "10.9.0", - "jss-plugin-expand": "10.9.0", - "jss-plugin-extend": "10.9.0", - "jss-plugin-global": "10.9.0", - "jss-plugin-nested": "10.9.0", - "jss-plugin-props-sort": "10.9.0", - "jss-plugin-rule-value-function": "10.9.0", - "jss-plugin-rule-value-observable": "10.9.0", - "jss-plugin-template": "10.9.0", - "jss-plugin-vendor-prefixer": "10.9.0" + "jss": "10.10.0", + "jss-plugin-camel-case": "10.10.0", + "jss-plugin-compose": "10.10.0", + "jss-plugin-default-unit": "10.10.0", + "jss-plugin-expand": "10.10.0", + "jss-plugin-extend": "10.10.0", + "jss-plugin-global": "10.10.0", + "jss-plugin-nested": "10.10.0", + "jss-plugin-props-sort": "10.10.0", + "jss-plugin-rule-value-function": "10.10.0", + "jss-plugin-rule-value-observable": "10.10.0", + "jss-plugin-template": "10.10.0", + "jss-plugin-vendor-prefixer": "10.10.0" } }, "jsx-ast-utils": { @@ -40973,12 +42468,12 @@ } }, "keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz", + "integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==", "dev": true, "requires": { - "json-buffer": "3.0.0" + "json-buffer": "3.0.1" } }, "kind-of": { @@ -40994,41 +42489,33 @@ "dev": true }, "knex": { - "version": "0.95.15", - "resolved": "https://registry.npmjs.org/knex/-/knex-0.95.15.tgz", - "integrity": "sha512-Loq6WgHaWlmL2bfZGWPsy4l8xw4pOE+tmLGkPG0auBppxpI0UcK+GYCycJcqz9W54f2LiGewkCVLBm3Wq4ur/w==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/knex/-/knex-2.5.1.tgz", + "integrity": "sha512-z78DgGKUr4SE/6cm7ku+jHvFT0X97aERh/f0MUKAKgFnwCYBEW4TFBqtHWFYiJFid7fMrtpZ/gxJthvz5mEByA==", "dev": true, "requires": { - "colorette": "2.0.16", - "commander": "^7.1.0", - "debug": "4.3.2", + "colorette": "2.0.19", + "commander": "^10.0.0", + "debug": "4.3.4", "escalade": "^3.1.1", "esm": "^3.2.25", - "getopts": "2.2.5", + "get-package-type": "^0.1.0", + "getopts": "2.3.0", "interpret": "^2.2.0", "lodash": "^4.17.21", - "pg-connection-string": "2.5.0", - "rechoir": "0.7.0", + "pg-connection-string": "2.6.1", + "rechoir": "^0.8.0", "resolve-from": "^5.0.0", - "tarn": "^3.0.1", + "tarn": "^3.0.2", "tildify": "2.0.0" }, "dependencies": { "commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", "dev": true }, - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, "resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", @@ -41129,7 +42616,7 @@ "lie": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", - "integrity": "sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=", + "integrity": "sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==", "dev": true, "requires": { "immediate": "~3.0.5" @@ -41210,12 +42697,6 @@ "yaml": "^2.1.3" }, "dependencies": { - "colorette": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", - "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", - "dev": true - }, "commander": { "version": "9.4.1", "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz", @@ -41351,12 +42832,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "colorette": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", - "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", - "dev": true - }, "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -41450,16 +42925,10 @@ "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true - }, "lodash.curry": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.curry/-/lodash.curry-4.1.1.tgz", - "integrity": "sha1-JI42By7ekGUB11lmIAqG2riyMXA=", + "integrity": "sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA==", "dev": true }, "lodash.debounce": { @@ -41477,37 +42946,37 @@ "lodash.includes": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", - "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", "dev": true }, "lodash.isboolean": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", "dev": true }, "lodash.isinteger": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", - "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", "dev": true }, "lodash.isnumber": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", - "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", "dev": true }, "lodash.isplainobject": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", "dev": true }, "lodash.isstring": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", "dev": true }, "lodash.memoize": { @@ -41525,7 +42994,7 @@ "lodash.once": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", "dev": true }, "lodash.sortby": { @@ -41623,9 +43092,9 @@ } }, "loglevel": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.0.tgz", - "integrity": "sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.1.tgz", + "integrity": "sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg==", "dev": true }, "long": { @@ -41652,9 +43121,9 @@ } }, "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", "dev": true }, "lru-cache": { @@ -41736,12 +43205,12 @@ } }, "map2tree": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/map2tree/-/map2tree-2.1.0.tgz", - "integrity": "sha512-mRhb7q7TyO/uxtPURYmmwUKlnmcC9S4y18ZnLr6Ufkhyf2CpWHFh77fuM0US8owqjBDOhalo3vk8jzL+8vyNGQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/map2tree/-/map2tree-3.0.0.tgz", + "integrity": "sha512-TOLkmFFiuMc5QwjoXPgbDtAuQXEIEmEyPr6K71qNmHEsxqZWBTVXHaRVWWe2qm2ZXztSbi+VhZ1ktRA2G42dBw==", "dev": true, "requires": { - "@babel/runtime": "^7.16.7", + "@babel/runtime": "^7.20.6", "lodash": "^4.17.21" } }, @@ -42028,9 +43497,9 @@ } }, "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true }, "minipass": { @@ -42202,12 +43671,6 @@ } } }, - "mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", - "dev": true - }, "mv": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", @@ -42299,15 +43762,6 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, - "ncom": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/ncom/-/ncom-1.0.3.tgz", - "integrity": "sha512-PfA7rjxxMAItsGo2qXrGn2GvKJIwN0bUTa3GehsblrKRVdCCEwB0QG2ymM6/DppQGUt7YqbfxQB7LaMWMiHHWQ==", - "dev": true, - "requires": { - "sc-formatter": "~3.0.1" - } - }, "ncp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", @@ -42338,9 +43792,9 @@ } }, "node-abort-controller": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.0.1.tgz", - "integrity": "sha512-/ujIVxthRs+7q6hsdjHMaj8hRG9NuWmwrz+JdRwZ14jdFoKSkm+vDsCbF9PLpnSqjaWQJuTmVtcWHNLr+vrOFw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", + "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==", "dev": true }, "node-domexception": { @@ -42544,9 +43998,9 @@ "dev": true }, "normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", "dev": true }, "now-and-later": { @@ -42557,17 +44011,6 @@ "once": "^1.3.2" } }, - "npm-conf": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz", - "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==", - "dev": true, - "optional": true, - "requires": { - "config-chain": "^1.1.11", - "pify": "^3.0.0" - } - }, "npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", @@ -42833,16 +44276,10 @@ "integrity": "sha512-jd0cvB8qQ5uVt0lvCIexBaROw1KyKm5sbulg2fWOHjETisuCzWyt+eTZKEMs8v6HwzoGs8xik26jg7eCM6pS+A==", "dev": true }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true - }, "p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", "dev": true }, "p-defer": { @@ -42971,29 +44408,6 @@ "responselike": "^3.0.0" } }, - "decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dev": true, - "requires": { - "mimic-response": "^3.1.0" - }, - "dependencies": { - "mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "dev": true - } - } - }, - "defer-to-connect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", - "dev": true - }, "get-stream": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", @@ -43029,21 +44443,6 @@ "resolve-alpn": "^1.2.0" } }, - "json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true - }, - "keyv": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", - "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", - "dev": true, - "requires": { - "json-buffer": "3.0.1" - } - }, "lowercase-keys": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", @@ -43272,9 +44671,9 @@ "dev": true }, "pg-connection-string": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz", - "integrity": "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.1.tgz", + "integrity": "sha512-w6ZzNu6oMmIzEAYVw+RLK0+nqHPt8K3ZnknKi+g48Ak2pr3dtljJW3o+D/n2zzCG07Zoe9VOX3aiKpj+BN0pjg==", "dev": true }, "picocolors": { @@ -43294,13 +44693,6 @@ "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", "dev": true }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true, - "optional": true - }, "pino": { "version": "8.11.0", "resolved": "https://registry.npmjs.org/pino/-/pino-8.11.0.tgz", @@ -43488,12 +44880,6 @@ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", - "dev": true - }, "prettier": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.0.tgz", @@ -43872,6 +45258,18 @@ "color": "^3.2.1", "csstype": "^3.0.10", "lodash.curry": "^4.1.1" + }, + "dependencies": { + "color": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "dev": true, + "requires": { + "color-convert": "^1.9.3", + "color-string": "^1.6.0" + } + } } }, "react-dom": { @@ -43884,16 +45282,6 @@ "scheduler": "^0.20.2" } }, - "react-dragula": { - "version": "1.1.17", - "resolved": "https://registry.npmjs.org/react-dragula/-/react-dragula-1.1.17.tgz", - "integrity": "sha1-s8s1KkcKcZNnupnWpUAcYPrU9v8=", - "dev": true, - "requires": { - "atoa": "1.0.0", - "dragula": "3.7.2" - } - }, "react-error-boundary": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/react-error-boundary/-/react-error-boundary-3.1.4.tgz", @@ -43952,9 +45340,9 @@ } }, "react-icons": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-4.3.1.tgz", - "integrity": "sha512-cB10MXLTs3gVuXimblAdI71jrJx8njrJZmNMEMC+sQu5B/BIOmlsAjskdqpn81y8UBVEGuHODd7/ci5DvoSzTQ==", + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-4.11.0.tgz", + "integrity": "sha512-V+4khzYcE5EBk/BvcuYRq6V/osf11ODUM2J8hg2FDSswRrGvqiYUYPRy4OdrWaQOBj4NcpJfmHZLNaD+VH0TyA==", "dev": true, "requires": {} }, @@ -43988,19 +45376,18 @@ "requires": {} }, "react-is": { - "version": "18.1.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.1.0.tgz", - "integrity": "sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==" + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" }, "react-json-tree": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/react-json-tree/-/react-json-tree-0.16.2.tgz", - "integrity": "sha512-80F7ZTqeOl1YaS/sDce4tYBcSe69/d0mlUmcIhyXezPFctWrtvyN56EMExX9jWsq3XMdvsUKKPUeNo8QCBy2jg==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/react-json-tree/-/react-json-tree-0.18.0.tgz", + "integrity": "sha512-Qe6HKSXrr++n9Y31nkRJ3XvQMATISpqigH1vEKhLwB56+nk5thTP0ITThpjxY6ZG/ubpVq/aEHIcyLP/OPHxeA==", "dev": true, "requires": { - "@babel/runtime": "^7.17.8", - "@types/prop-types": "^15.7.4", - "prop-types": "^15.8.1", + "@babel/runtime": "^7.20.6", + "@types/lodash": "^4.14.191", "react-base16-styling": "^0.9.1" } }, @@ -44067,33 +45454,6 @@ "react-router": "6.4.4" } }, - "react-select": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.3.2.tgz", - "integrity": "sha512-W6Irh7U6Ha7p5uQQ2ZnemoCQ8mcfgOtHfw3wuMzG6FAu0P+CYicgofSLOq97BhjMx8jS+h+wwWdCBeVVZ9VqlQ==", - "dev": true, - "requires": { - "@babel/runtime": "^7.12.0", - "@emotion/cache": "^11.4.0", - "@emotion/react": "^11.8.1", - "@types/react-transition-group": "^4.4.0", - "memoize-one": "^5.0.0", - "prop-types": "^15.6.0", - "react-transition-group": "^4.3.0" - } - }, - "react-transition-group": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.2.tgz", - "integrity": "sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.5.5", - "dom-helpers": "^5.0.1", - "loose-envify": "^1.4.0", - "prop-types": "^15.6.2" - } - }, "readable-stream": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", @@ -44120,12 +45480,12 @@ "dev": true }, "rechoir": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.0.tgz", - "integrity": "sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", "dev": true, "requires": { - "resolve": "^1.9.0" + "resolve": "^1.20.0" } }, "redent": { @@ -44180,7 +45540,7 @@ "redux-devtools-themes": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/redux-devtools-themes/-/redux-devtools-themes-1.0.0.tgz", - "integrity": "sha1-xILc48U3OXYEX0ATSQfZ3LOuPV0=", + "integrity": "sha512-hBWqdZX+dioMWnTjf8+uSm0q1wCdYO4kU5gERzHcMMbu0Qg7JDR42TnJ6GHJ6r7k/tIpsCSygc9U0ehAtR24TQ==", "dev": true, "requires": { "base16": "^1.0.0" @@ -44202,9 +45562,9 @@ } }, "redux-thunk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.1.tgz", - "integrity": "sha512-OOYGNY5Jy2TWvTL1KgAlVy6dcx3siPJ1wTq741EPyUKfn6W6nChdICjZwCd0p8AZBs5kWpZlbkXW2nE/zjUa+Q==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.2.tgz", + "integrity": "sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q==", "dev": true, "requires": {} }, @@ -44590,12 +45950,12 @@ "dev": true }, "responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", "dev": true, "requires": { - "lowercase-keys": "^1.0.0" + "lowercase-keys": "^2.0.0" } }, "restore-cursor": { @@ -44655,16 +46015,25 @@ "sprintf-js": "^1.1.2" } }, + "robust-predicates": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", + "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==", + "dev": true + }, "rsvp": { "version": "4.8.5", "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==" }, - "run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true + "run-applescript": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz", + "integrity": "sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==", + "dev": true, + "requires": { + "execa": "^5.0.0" + } }, "run-con": { "version": "1.2.11", @@ -44695,6 +46064,12 @@ "queue-microtask": "^1.2.2" } }, + "rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", + "dev": true + }, "rxjs": { "version": "7.5.7", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz", @@ -44753,71 +46128,6 @@ "xmlchars": "^2.2.0" } }, - "sc-auth": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/sc-auth/-/sc-auth-5.0.2.tgz", - "integrity": "sha512-Le3YBsFjzv5g6wIH6Y+vD+KFkK0HDXiaWy1Gm4nXtYebMQUyNYSf1cS83MtHrYzVEMlhYElRva1b0bvZ0hBqQw==", - "dev": true, - "requires": { - "jsonwebtoken": "^8.3.0", - "sc-errors": "^1.4.1" - } - }, - "sc-broker": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/sc-broker/-/sc-broker-6.0.0.tgz", - "integrity": "sha512-c1mFIllUdPnEXDDFxTiX3obYW+cT0hb56fdNM5k+Xo5DI3+3Q9MYxTc8jD23qBIXOHokt4+d/CHocmZQPlAjAQ==", - "dev": true, - "requires": { - "async": "^2.6.1", - "expirymanager": "^0.9.3", - "fleximap": "^1.0.0", - "ncom": "^1.0.2", - "sc-errors": "^1.4.1", - "uuid": "3.1.0" - }, - "dependencies": { - "async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "dev": true, - "requires": { - "lodash": "^4.17.14" - } - }, - "uuid": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", - "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==", - "dev": true - } - } - }, - "sc-broker-cluster": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/sc-broker-cluster/-/sc-broker-cluster-7.0.0.tgz", - "integrity": "sha512-DNG8sxiFwmRSMS0sUXA25UvDV8QTwEfYnzrutqbp4HlMU9JP65FBcs6GuNFPhjQN4s9VtwAE8BBaCNK5BjNV0g==", - "dev": true, - "requires": { - "async": "2.0.0", - "sc-broker": "^6.0.0", - "sc-channel": "^1.2.0", - "sc-errors": "^1.4.1", - "sc-hasher": "^1.0.1" - }, - "dependencies": { - "async": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/async/-/async-2.0.0.tgz", - "integrity": "sha512-x4YEotAaoO+dq8o23H0Clqm+b0KQ7hYHFfqxIz4ORzLzAdwH0K7S5/Q+mDo/wVyGdFYA0l7XE70Y9915PuEyqg==", - "dev": true, - "requires": { - "lodash": "^4.8.0" - } - } - } - }, "sc-channel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/sc-channel/-/sc-channel-1.2.0.tgz", @@ -44828,9 +46138,9 @@ } }, "sc-errors": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/sc-errors/-/sc-errors-1.4.1.tgz", - "integrity": "sha512-dBn92iIonpChTxYLgKkIT/PCApvmYT6EPIbRvbQKTgY6tbEbIy8XVUv4pGyKwEK4nCmvX4TKXcN0iXC6tNW6rQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/sc-errors/-/sc-errors-2.0.1.tgz", + "integrity": "sha512-JoVhq3Ud+3Ujv2SIG7W0XtjRHsrNgl6iXuHHsh0s+Kdt5NwI6N2EGAZD4iteitdDv68ENBkpjtSvN597/wxPSQ==", "dev": true }, "sc-formatter": { @@ -44839,21 +46149,6 @@ "integrity": "sha512-9PbqYBpCq+OoEeRQ3QfFIGE6qwjjBcd2j7UjgDlhnZbtSnuGgHdcRklPKYGuYFH82V/dwd+AIpu8XvA1zqTd+A==", "dev": true }, - "sc-hasher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sc-hasher/-/sc-hasher-1.0.1.tgz", - "integrity": "sha512-whZWw70Gp5ibXXMcz6+Tulmk8xkwWMs42gG70p12hGscdUg8BICBvihS3pX2T3dWTw+yeZuGKiULr3MwL37SOQ==", - "dev": true - }, - "sc-simple-broker": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/sc-simple-broker/-/sc-simple-broker-2.1.3.tgz", - "integrity": "sha512-ldt0ybOS5fVZSMea5Z8qVu7lmDBTy0qO9BD6TseJjRuPx+g+stfSqmPAb0RsCsQUXRH8A1koCbwsuUnI9BOxvw==", - "dev": true, - "requires": { - "sc-channel": "^1.2.0" - } - }, "scheduler": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", @@ -44948,7 +46243,7 @@ "semver-compare": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", + "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", "dev": true, "optional": true }, @@ -45254,9 +46549,9 @@ "dev": true }, "simple-diff": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/simple-diff/-/simple-diff-1.6.0.tgz", - "integrity": "sha1-m7XZUKe0ZNHsyG8gTog2UBnVpUI=", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/simple-diff/-/simple-diff-1.7.1.tgz", + "integrity": "sha512-adwK0aCHYSLEDOiAxb4TjGE3h2WGFox2Luzkqy9m68O/P2iEpZbcnFYKqrbWVgKXf/pUt+8yXvfSU38vXI8GSg==", "dev": true }, "simple-element-resize-detector": { @@ -45268,7 +46563,7 @@ "simple-swizzle": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", "dev": true, "requires": { "is-arrayish": "^0.3.1" @@ -45315,7 +46610,7 @@ "sliced": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", - "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=", + "integrity": "sha512-VZBmZP8WU3sMOZm1bdgTadsQbcscK0UM8oKxKVBs4XAhUo2Xxzm/OFMGBkPusxw9xL3Uy8LrzEqGqJhclsr0yA==", "dev": true }, "smart-buffer": { @@ -45325,64 +46620,6 @@ "dev": true, "optional": true }, - "socketcluster": { - "version": "14.4.2", - "resolved": "https://registry.npmjs.org/socketcluster/-/socketcluster-14.4.2.tgz", - "integrity": "sha512-Z45tSQ6K/XUEyftrID1hyBXSdaK/gDeq6BMqhNR3XvjnUQ6HkkeTrxZUoXIn/In/J8KLl1WRVtvZAB0Zf9pEjA==", - "dev": true, - "requires": { - "async": "2.3.0", - "fs-extra": "6.0.1", - "inquirer": "5.2.0", - "minimist": "1.2.0", - "sc-auth": "^5.0.2", - "sc-broker-cluster": "^7.0.0", - "sc-errors": "^1.4.1", - "socketcluster-server": "^14.7.0", - "uid-number": "0.0.6", - "uuid": "3.2.1" - }, - "dependencies": { - "fs-extra": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz", - "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha512-7Wl+Jz+IGWuSdgsQEJ4JunV0si/iMhg42MnQQG6h1R6TNeVenp4U9x5CC5v/gYqz/fENLQITAWXidNtVL0NNbw==", - "dev": true - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - }, - "uuid": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", - "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==", - "dev": true - } - } - }, "socketcluster-client": { "version": "14.3.2", "resolved": "https://registry.npmjs.org/socketcluster-client/-/socketcluster-client-14.3.2.tgz", @@ -45407,12 +46644,6 @@ "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", "dev": true }, - "sc-errors": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/sc-errors/-/sc-errors-2.0.1.tgz", - "integrity": "sha512-JoVhq3Ud+3Ujv2SIG7W0XtjRHsrNgl6iXuHHsh0s+Kdt5NwI6N2EGAZD4iteitdDv68ENBkpjtSvN597/wxPSQ==", - "dev": true - }, "uuid": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", @@ -45422,40 +46653,36 @@ } }, "socketcluster-server": { - "version": "14.7.2", - "resolved": "https://registry.npmjs.org/socketcluster-server/-/socketcluster-server-14.7.2.tgz", - "integrity": "sha512-PHFez3OXpxZ0jMm+JleYzshwCT7EXdldlVQnZpLCHM8BARSgbr6C+vuD5lHCvUDJc+T6kVFNEHQ1Hnhzw21CSw==", + "version": "17.4.1", + "resolved": "https://registry.npmjs.org/socketcluster-server/-/socketcluster-server-17.4.1.tgz", + "integrity": "sha512-ElKD9U7EncoWNGYOL+G6UAxuYmui1fnawpyhZIpFG/A/lDNGwHsQLNIpJXh1SB4BpoQLn2q4ewwnUK3Mse5mfA==", "dev": true, "requires": { - "async": "^3.1.0", - "base64id": "1.0.0", - "component-emitter": "1.2.1", - "lodash.clonedeep": "4.5.0", - "sc-auth": "^5.0.2", + "ag-auth": "^2.0.0", + "ag-request": "^1.0.0", + "ag-simple-broker": "^5.0.0", + "async-stream-emitter": "^4.0.0", + "base64id": "^2.0.0", + "clone-deep": "^4.0.1", "sc-errors": "^2.0.1", - "sc-formatter": "^3.0.2", - "sc-simple-broker": "^2.1.3", - "uuid": "3.2.1", - "ws": "^7.5.0" + "sc-formatter": "^4.0.0", + "stream-demux": "^8.0.0", + "writable-consumable-stream": "^2.0.0", + "ws": "^8.9.0" }, "dependencies": { - "async": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", - "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==", - "dev": true - }, - "sc-errors": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/sc-errors/-/sc-errors-2.0.1.tgz", - "integrity": "sha512-JoVhq3Ud+3Ujv2SIG7W0XtjRHsrNgl6iXuHHsh0s+Kdt5NwI6N2EGAZD4iteitdDv68ENBkpjtSvN597/wxPSQ==", + "sc-formatter": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/sc-formatter/-/sc-formatter-4.0.0.tgz", + "integrity": "sha512-MgUIvuca+90fBrCWY5LdlU9YUWjlkPFwdpvmomcwQEu3t2id/6YHdG2nhB6o7nhRp4ocfmcXQTh00r/tJtynSg==", "dev": true }, - "uuid": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", - "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==", - "dev": true + "ws": { + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.1.tgz", + "integrity": "sha512-4OOseMUq8AzRBI/7SLMUwO+FEDnguetSk7KMb1sHwvF2w2Wv5Hoj0nlifx8vtGsftE/jWHojPy8sMMzYLJ2G/A==", + "dev": true, + "requires": {} } } }, @@ -45513,7 +46740,7 @@ "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "dev": true }, "source-map-js": { @@ -45733,6 +46960,27 @@ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true }, + "stream-demux": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/stream-demux/-/stream-demux-8.1.0.tgz", + "integrity": "sha512-20vtOmAj2EVzQZKZVmfyio16u/3QOKSvg+0ldgZeS+m2FNI1vKFoqggamagsPCXufdZ1Tk8VvAM/HV/YUmRbSg==", + "dev": true, + "requires": { + "consumable-stream": "^2.0.0", + "writable-consumable-stream": "^3.0.1" + }, + "dependencies": { + "writable-consumable-stream": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/writable-consumable-stream/-/writable-consumable-stream-3.0.1.tgz", + "integrity": "sha512-rAOJTA/sMgXD/X6eMwbQJe49w+Fnkdx3iV5oUzdmiZ7Bwx03khqUnAKIpzp/hbI8q2EP5NfjXgIXN0MsipfHeg==", + "dev": true, + "requires": { + "consumable-stream": "^2.0.0" + } + } + } + }, "stream-shift": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", @@ -45955,9 +47203,9 @@ } }, "stylis": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.0.13.tgz", - "integrity": "sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==", "dev": true }, "sumchecker": { @@ -46207,12 +47455,6 @@ "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", "dev": true }, - "ticky": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ticky/-/ticky-1.0.1.tgz", - "integrity": "sha1-t8+nHnaPHJAAxJe5FRswlHxQ5G0=", - "dev": true - }, "tildify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/tildify/-/tildify-2.0.0.tgz", @@ -46225,6 +47467,12 @@ "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==", "dev": true }, + "titleize": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz", + "integrity": "sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==", + "dev": true + }, "tmp": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", @@ -46254,12 +47502,6 @@ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" }, - "to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", - "dev": true - }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -46623,13 +47865,6 @@ } } }, - "tunnel": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", - "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", - "dev": true, - "optional": true - }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -46735,12 +47970,6 @@ "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", "dev": true }, - "uid-number": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz", - "integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=", - "dev": true - }, "unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", @@ -46853,6 +48082,12 @@ "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", "dev": true }, + "untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true + }, "upath": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz", @@ -46951,14 +48186,12 @@ "requires-port": "^1.0.0" } }, - "url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "use-isomorphic-layout-effect": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz", + "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==", "dev": true, - "requires": { - "prepend-http": "^2.0.0" - } + "requires": {} }, "use-sync-external-store": { "version": "1.1.0", @@ -47009,19 +48242,19 @@ "validate.io-array": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/validate.io-array/-/validate.io-array-1.0.6.tgz", - "integrity": "sha1-W1osr9j4uFq7L4hroVPy2Tond00=", + "integrity": "sha512-DeOy7CnPEziggrOO5CZhVKJw6S3Yi7e9e65R1Nl/RTN1vTQKnzjfvks0/8kQ40FP/dsjRAOd4hxmJ7uLa6vxkg==", "dev": true }, "validate.io-function": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/validate.io-function/-/validate.io-function-1.0.2.tgz", - "integrity": "sha1-NDoZgC7TsZaCaceA5VjpNBHAutc=", + "integrity": "sha512-LlFybRJEriSuBnUhQyG5bwglhh50EpTL2ul23MPIuR1odjO7XaMLFV8vHGwp7AZciFxtYOeiSCT5st+XSPONiQ==", "dev": true }, "validate.io-integer": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/validate.io-integer/-/validate.io-integer-1.0.5.tgz", - "integrity": "sha1-FoSWSAuVviJH7EQ/IjPeT4mHgGg=", + "integrity": "sha512-22izsYSLojN/P6bppBqhgUDjCkr5RY2jd+N2a3DCAUey8ydvrZ/OkGvFPR7qfOpwR2LC5p4Ngzxz36g5Vgr/hQ==", "dev": true, "requires": { "validate.io-number": "^1.0.3" @@ -47030,7 +48263,7 @@ "validate.io-integer-array": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/validate.io-integer-array/-/validate.io-integer-array-1.0.0.tgz", - "integrity": "sha1-LKveAzKTpry+Bj/q/pHq9GsToIk=", + "integrity": "sha512-mTrMk/1ytQHtCY0oNO3dztafHYyGU88KL+jRxWuzfOmQb+4qqnWmI+gykvGp8usKZOM0H7keJHEbRaFiYA0VrA==", "dev": true, "requires": { "validate.io-array": "^1.0.3", @@ -47040,7 +48273,7 @@ "validate.io-number": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/validate.io-number/-/validate.io-number-1.0.3.tgz", - "integrity": "sha1-9j/+2iSL8opnqNSODjtGGhZluvg=", + "integrity": "sha512-kRAyotcbNaSYoDnXvb4MHg/0a1egJdLwS6oJ38TJY7aw9n93Fl/3blIXdyYvPOp55CNxywooG/3BcrwNrBpcSg==", "dev": true }, "value-or-function": { @@ -47049,9 +48282,9 @@ "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=" }, "value-or-promise": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.11.tgz", - "integrity": "sha512-41BrgH+dIbCFXClcSapVs5M6GkENd3gQOJpEfPDNa71LsUGMXDL0jMWpI/Rh7WhX+Aalfz2TTS3Zt5pUsbnhLg==", + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.12.tgz", + "integrity": "sha512-Z6Uz+TYwEqE7ZN50gwn+1LCVo9ZVrpxRPOhOLnncYkY1ZzOYtrX8Fwf/rFktZ8R5mJms6EZf5TqNOMeZmnPq9Q==", "dev": true }, "vary": { @@ -47084,6 +48317,52 @@ "replace-ext": "^1.0.0" } }, + "vinyl-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vinyl-buffer/-/vinyl-buffer-1.0.1.tgz", + "integrity": "sha512-LRBE2/g3C1hSHL2k/FynSZcVTRhEw8sb08oKGt/0hukZXwrh2m8nfy+r5yLhGEk7eFFuclhyIuPct/Bxlxk6rg==", + "dev": true, + "requires": { + "bl": "^1.2.1", + "through2": "^2.0.3" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + } + } + }, "vinyl-fs": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", @@ -47461,15 +48740,6 @@ "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", "dev": true - }, - "rechoir": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", - "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", - "dev": true, - "requires": { - "resolve": "^1.20.0" - } } } }, @@ -47766,6 +49036,15 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, + "writable-consumable-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/writable-consumable-stream/-/writable-consumable-stream-2.0.0.tgz", + "integrity": "sha512-SITambzxtPTFU/wR82h+zOKGBiEv5V8gC1mt8xvoE1/168ApEa8H+6s2UToYJo3VLL7sNYTaApKuPD+pZHMGJQ==", + "dev": true, + "requires": { + "consumable-stream": "^2.0.0" + } + }, "write-file-atomic": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", @@ -47833,24 +49112,6 @@ "integrity": "sha1-Z9a7w/ajIOwxfj5jaMVwa2ER3uw=", "dev": true }, - "xss": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.11.tgz", - "integrity": "sha512-EimjrjThZeK2MO7WKR9mN5ZC1CSqivSl55wvUK5EtU6acf0rzEE1pN+9ZDrFXJ82BRp3JL38pPE6S4o/rpp1zQ==", - "dev": true, - "requires": { - "commander": "^2.20.3", - "cssfilter": "0.0.10" - }, - "dependencies": { - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - } - } - }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", diff --git a/package.json b/package.json index cf599c6df..36e05d705 100644 --- a/package.json +++ b/package.json @@ -105,7 +105,7 @@ "@babel/plugin-proposal-class-properties": "7.18.6", "@babel/preset-env": "7.20.2", "@babel/preset-react": "7.18.6", - "@redux-devtools/cli": "^1.0.7", + "@redux-devtools/cli": "^3.0.1", "@testing-library/dom": "8.19.0", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^12.1.2", From fc0d6a59c8d324742acb4ee3059eaf5bbe0677f1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 17 Sep 2023 23:41:14 +0300 Subject: [PATCH 027/243] build(deps): bump react-player from 2.12.0 to 2.13.0 (#785) Bumps [react-player](https://github.com/CookPete/react-player) from 2.12.0 to 2.13.0. - [Changelog](https://github.com/cookpete/react-player/blob/master/CHANGELOG.md) - [Commits](https://github.com/CookPete/react-player/compare/v2.12.0...v2.13.0) --- updated-dependencies: - dependency-name: react-player dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 52dcdb4f6..e9de39de3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -41,7 +41,7 @@ "react-infinite-scroll-hook": "^4.1.1", "react-inlinesvg": "^3.0.1", "react-loading-skeleton": "^3.1.0", - "react-player": "^2.12.0", + "react-player": "^2.13.0", "react-query": "^3.39.2", "react-redux": "8.0.5", "react-router-dom": "6.4.4", @@ -22984,9 +22984,9 @@ } }, "node_modules/react-player": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/react-player/-/react-player-2.12.0.tgz", - "integrity": "sha512-rymLRz/2GJJD+Wc01S7S+i9pGMFYnNmQibR2gVE3KmHJCBNN8BhPAlOPTGZtn1uKpJ6p4RPLlzPQ1OLreXd8gw==", + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/react-player/-/react-player-2.13.0.tgz", + "integrity": "sha512-gkY7ZdbVFztlKFFhCPcnDrFQm+L399b8fhWsKatZ+b2wpKJwfUHBXQFMRxqYQGT0ic1/wQ7D7EZEWy7ZBqk2pw==", "dependencies": { "deepmerge": "^4.0.0", "load-script": "^1.0.0", @@ -45403,9 +45403,9 @@ "requires": {} }, "react-player": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/react-player/-/react-player-2.12.0.tgz", - "integrity": "sha512-rymLRz/2GJJD+Wc01S7S+i9pGMFYnNmQibR2gVE3KmHJCBNN8BhPAlOPTGZtn1uKpJ6p4RPLlzPQ1OLreXd8gw==", + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/react-player/-/react-player-2.13.0.tgz", + "integrity": "sha512-gkY7ZdbVFztlKFFhCPcnDrFQm+L399b8fhWsKatZ+b2wpKJwfUHBXQFMRxqYQGT0ic1/wQ7D7EZEWy7ZBqk2pw==", "requires": { "deepmerge": "^4.0.0", "load-script": "^1.0.0", diff --git a/package.json b/package.json index 36e05d705..1c3d2485d 100644 --- a/package.json +++ b/package.json @@ -89,7 +89,7 @@ "react-infinite-scroll-hook": "^4.1.1", "react-inlinesvg": "^3.0.1", "react-loading-skeleton": "^3.1.0", - "react-player": "^2.12.0", + "react-player": "^2.13.0", "react-query": "^3.39.2", "react-redux": "8.0.5", "react-router-dom": "6.4.4", From 69e6ff521561755e4ab0d56c8050703144d6eb58 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 17 Sep 2023 23:41:40 +0300 Subject: [PATCH 028/243] build(deps-dev): bump prettier from 2.8.0 to 3.0.3 (#786) Bumps [prettier](https://github.com/prettier/prettier) from 2.8.0 to 3.0.3. - [Release notes](https://github.com/prettier/prettier/releases) - [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md) - [Commits](https://github.com/prettier/prettier/compare/2.8.0...3.0.3) --- updated-dependencies: - dependency-name: prettier dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 18 +++++++++--------- package.json | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index e9de39de3..ef73e6cb6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -105,7 +105,7 @@ "lint-staged": "13.0.4", "markdownlint": "0.26.2", "markdownlint-cli": "0.32.2", - "prettier": "2.8.0", + "prettier": "3.0.3", "remote-redux-devtools": "^0.5.16", "selenium-webdriver": "4.10.0", "source-map-loader": "4.0.1", @@ -22299,15 +22299,15 @@ } }, "node_modules/prettier": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.0.tgz", - "integrity": "sha512-9Lmg8hTFZKG0Asr/kW9Bp8tJjRVluO8EJQVfY2T7FMw9T5jy4I/Uvx0Rca/XWf50QQ1/SS48+6IJWnrb+2yemA==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", + "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", "dev": true, "bin": { - "prettier": "bin-prettier.js" + "prettier": "bin/prettier.cjs" }, "engines": { - "node": ">=10.13.0" + "node": ">=14" }, "funding": { "url": "https://github.com/prettier/prettier?sponsor=1" @@ -44881,9 +44881,9 @@ "dev": true }, "prettier": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.0.tgz", - "integrity": "sha512-9Lmg8hTFZKG0Asr/kW9Bp8tJjRVluO8EJQVfY2T7FMw9T5jy4I/Uvx0Rca/XWf50QQ1/SS48+6IJWnrb+2yemA==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", + "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", "dev": true }, "prettier-linter-helpers": { diff --git a/package.json b/package.json index 1c3d2485d..ff3491030 100644 --- a/package.json +++ b/package.json @@ -153,7 +153,7 @@ "lint-staged": "13.0.4", "markdownlint": "0.26.2", "markdownlint-cli": "0.32.2", - "prettier": "2.8.0", + "prettier": "3.0.3", "remote-redux-devtools": "^0.5.16", "selenium-webdriver": "4.10.0", "source-map-loader": "4.0.1", From 48d534d8ff710676f8a923cdf4de304e46d1d19e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 17 Sep 2023 23:42:33 +0300 Subject: [PATCH 029/243] build(deps): bump redux from 4.2.0 to 4.2.1 (#787) Bumps [redux](https://github.com/reduxjs/redux) from 4.2.0 to 4.2.1. - [Release notes](https://github.com/reduxjs/redux/releases) - [Changelog](https://github.com/reduxjs/redux/blob/master/CHANGELOG.md) - [Commits](https://github.com/reduxjs/redux/compare/v4.2.0...v4.2.1) --- updated-dependencies: - dependency-name: redux dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Vynnyk Dmytro --- package-lock.json | 58 +++++++++-------------------------------------- package.json | 2 +- 2 files changed, 12 insertions(+), 48 deletions(-) diff --git a/package-lock.json b/package-lock.json index ef73e6cb6..abda10cd7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -45,7 +45,7 @@ "react-query": "^3.39.2", "react-redux": "8.0.5", "react-router-dom": "6.4.4", - "redux": "4.2.0", + "redux": "4.2.1", "redux-saga": "1.2.1", "reselect": "4.1.7", "styled-components": "5.3.6", @@ -4415,7 +4415,7 @@ "react-icons": "^4.10.1", "react-is": "^18.2.0", "react-redux": "^8.1.2", - "redux": "^4.2.1", + "redux": "4.2.1", "redux-persist": "^6.0.0", "socketcluster-client": "^17.2.2" }, @@ -4634,15 +4634,6 @@ } } }, - "node_modules/@redux-devtools/cli/node_modules/redux": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz", - "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.9.2" - } - }, "node_modules/@redux-devtools/cli/node_modules/regenerator-runtime": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", @@ -5225,7 +5216,7 @@ "dev": true, "dependencies": { "immer": "^9.0.21", - "redux": "^4.2.1", + "redux": "4.2.1", "redux-thunk": "^2.4.2", "reselect": "^4.1.8" }, @@ -5242,15 +5233,6 @@ } } }, - "node_modules/@reduxjs/toolkit/node_modules/redux": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz", - "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.9.2" - } - }, "node_modules/@reduxjs/toolkit/node_modules/reselect": { "version": "4.1.8", "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.8.tgz", @@ -23151,9 +23133,9 @@ } }, "node_modules/redux": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.0.tgz", - "integrity": "sha512-oSBmcKKIuIR4ME29/AeNUnl5L+hvBq7OaJWzaptTQJAntaPvxIJqfnjbaEiCzzaIz+XmVILfqAM3Ob0aXLPfjA==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz", + "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==", "dependencies": { "@babel/runtime": "^7.9.2" } @@ -31187,7 +31169,7 @@ "react-icons": "^4.10.1", "react-is": "^18.2.0", "react-redux": "^8.1.2", - "redux": "^4.2.1", + "redux": "4.2.1", "redux-persist": "^6.0.0", "socketcluster-client": "^17.2.2" } @@ -31331,15 +31313,6 @@ "use-sync-external-store": "^1.0.0" } }, - "redux": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz", - "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==", - "dev": true, - "requires": { - "@babel/runtime": "^7.9.2" - } - }, "regenerator-runtime": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", @@ -31793,20 +31766,11 @@ "dev": true, "requires": { "immer": "^9.0.21", - "redux": "^4.2.1", + "redux": "4.2.1", "redux-thunk": "^2.4.2", "reselect": "^4.1.8" }, "dependencies": { - "redux": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz", - "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==", - "dev": true, - "requires": { - "@babel/runtime": "^7.9.2" - } - }, "reselect": { "version": "4.1.8", "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.8.tgz", @@ -45499,9 +45463,9 @@ } }, "redux": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.0.tgz", - "integrity": "sha512-oSBmcKKIuIR4ME29/AeNUnl5L+hvBq7OaJWzaptTQJAntaPvxIJqfnjbaEiCzzaIz+XmVILfqAM3Ob0aXLPfjA==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz", + "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==", "requires": { "@babel/runtime": "^7.9.2" } diff --git a/package.json b/package.json index ff3491030..e6a041645 100644 --- a/package.json +++ b/package.json @@ -93,7 +93,7 @@ "react-query": "^3.39.2", "react-redux": "8.0.5", "react-router-dom": "6.4.4", - "redux": "4.2.0", + "redux": "4.2.1", "redux-saga": "1.2.1", "reselect": "4.1.7", "styled-components": "5.3.6", From b0b6ebb3bead83fe066ff5b15204613e6c7d9ee7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 17 Sep 2023 23:43:19 +0300 Subject: [PATCH 030/243] build(deps-dev): bump webpack-dev-server from 4.11.1 to 4.15.1 (#788) Bumps [webpack-dev-server](https://github.com/webpack/webpack-dev-server) from 4.11.1 to 4.15.1. - [Release notes](https://github.com/webpack/webpack-dev-server/releases) - [Changelog](https://github.com/webpack/webpack-dev-server/blob/master/CHANGELOG.md) - [Commits](https://github.com/webpack/webpack-dev-server/compare/v4.11.1...v4.15.1) --- updated-dependencies: - dependency-name: webpack-dev-server dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 73 +++++++++++++++++++++++++++++++---------------- package.json | 2 +- 2 files changed, 50 insertions(+), 25 deletions(-) diff --git a/package-lock.json b/package-lock.json index abda10cd7..25b527f01 100644 --- a/package-lock.json +++ b/package-lock.json @@ -121,7 +121,7 @@ "webextension-polyfill": "0.10.0", "webpack": "5.76.0", "webpack-cli": "5.0.0", - "webpack-dev-server": "^4.11.1", + "webpack-dev-server": "^4.15.1", "xcode-build-webpack-plugin": "^1.0.2" } }, @@ -6573,9 +6573,9 @@ "integrity": "sha512-op8YeoK60K6/GIx3snWs3JowBZ+/aeSnZzZuuwynA7VARWfzr3st9aQNk9RWfoBx5xqlNZjAsh2QttPUZnabCw==" }, "node_modules/@types/ws": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", - "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "version": "8.5.5", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.5.tgz", + "integrity": "sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==", "dependencies": { "@types/node": "*" } @@ -19206,6 +19206,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/launch-editor": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.0.tgz", + "integrity": "sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==", + "dev": true, + "dependencies": { + "picocolors": "^1.0.0", + "shell-quote": "^1.7.3" + } + }, "node_modules/lazystream": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", @@ -27296,9 +27306,9 @@ } }, "node_modules/webpack-dev-server": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.11.1.tgz", - "integrity": "sha512-lILVz9tAUy1zGFwieuaQtYiadImb5M3d+H+L1zDYalYoDl0cksAB1UNyuE5MMWJrG6zR1tXkCP2fitl7yoUJiw==", + "version": "4.15.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz", + "integrity": "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==", "dev": true, "dependencies": { "@types/bonjour": "^3.5.9", @@ -27307,7 +27317,7 @@ "@types/serve-index": "^1.9.1", "@types/serve-static": "^1.13.10", "@types/sockjs": "^0.3.33", - "@types/ws": "^8.5.1", + "@types/ws": "^8.5.5", "ansi-html-community": "^0.0.8", "bonjour-service": "^1.0.11", "chokidar": "^3.5.3", @@ -27320,6 +27330,7 @@ "html-entities": "^2.3.2", "http-proxy-middleware": "^2.0.3", "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", "open": "^8.0.9", "p-retry": "^4.5.0", "rimraf": "^3.0.2", @@ -27329,7 +27340,7 @@ "sockjs": "^0.3.24", "spdy": "^4.0.2", "webpack-dev-middleware": "^5.3.1", - "ws": "^8.4.2" + "ws": "^8.13.0" }, "bin": { "webpack-dev-server": "bin/webpack-dev-server.js" @@ -27345,6 +27356,9 @@ "webpack": "^4.37.0 || ^5.0.0" }, "peerDependenciesMeta": { + "webpack": { + "optional": true + }, "webpack-cli": { "optional": true } @@ -27360,16 +27374,16 @@ } }, "node_modules/webpack-dev-server/node_modules/ws": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.6.0.tgz", - "integrity": "sha512-AzmM3aH3gk0aX7/rZLYvjdvZooofDu3fFOzGqcSnQ1tOcTWwhM/o+q++E8mAyVVIyUdajrkzWUGftaVSDLn1bw==", + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.1.tgz", + "integrity": "sha512-4OOseMUq8AzRBI/7SLMUwO+FEDnguetSk7KMb1sHwvF2w2Wv5Hoj0nlifx8vtGsftE/jWHojPy8sMMzYLJ2G/A==", "dev": true, "engines": { "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { @@ -32993,9 +33007,9 @@ "integrity": "sha512-op8YeoK60K6/GIx3snWs3JowBZ+/aeSnZzZuuwynA7VARWfzr3st9aQNk9RWfoBx5xqlNZjAsh2QttPUZnabCw==" }, "@types/ws": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", - "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "version": "8.5.5", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.5.tgz", + "integrity": "sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==", "requires": { "@types/node": "*" } @@ -42512,6 +42526,16 @@ "package-json": "^8.1.0" } }, + "launch-editor": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.0.tgz", + "integrity": "sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==", + "dev": true, + "requires": { + "picocolors": "^1.0.0", + "shell-quote": "^1.7.3" + } + }, "lazystream": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", @@ -48721,9 +48745,9 @@ } }, "webpack-dev-server": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.11.1.tgz", - "integrity": "sha512-lILVz9tAUy1zGFwieuaQtYiadImb5M3d+H+L1zDYalYoDl0cksAB1UNyuE5MMWJrG6zR1tXkCP2fitl7yoUJiw==", + "version": "4.15.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz", + "integrity": "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==", "dev": true, "requires": { "@types/bonjour": "^3.5.9", @@ -48732,7 +48756,7 @@ "@types/serve-index": "^1.9.1", "@types/serve-static": "^1.13.10", "@types/sockjs": "^0.3.33", - "@types/ws": "^8.5.1", + "@types/ws": "^8.5.5", "ansi-html-community": "^0.0.8", "bonjour-service": "^1.0.11", "chokidar": "^3.5.3", @@ -48745,6 +48769,7 @@ "html-entities": "^2.3.2", "http-proxy-middleware": "^2.0.3", "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", "open": "^8.0.9", "p-retry": "^4.5.0", "rimraf": "^3.0.2", @@ -48754,7 +48779,7 @@ "sockjs": "^0.3.24", "spdy": "^4.0.2", "webpack-dev-middleware": "^5.3.1", - "ws": "^8.4.2" + "ws": "^8.13.0" }, "dependencies": { "ipaddr.js": { @@ -48764,9 +48789,9 @@ "dev": true }, "ws": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.6.0.tgz", - "integrity": "sha512-AzmM3aH3gk0aX7/rZLYvjdvZooofDu3fFOzGqcSnQ1tOcTWwhM/o+q++E8mAyVVIyUdajrkzWUGftaVSDLn1bw==", + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.1.tgz", + "integrity": "sha512-4OOseMUq8AzRBI/7SLMUwO+FEDnguetSk7KMb1sHwvF2w2Wv5Hoj0nlifx8vtGsftE/jWHojPy8sMMzYLJ2G/A==", "dev": true, "requires": {} } diff --git a/package.json b/package.json index e6a041645..878bd3986 100644 --- a/package.json +++ b/package.json @@ -169,7 +169,7 @@ "webextension-polyfill": "0.10.0", "webpack": "5.76.0", "webpack-cli": "5.0.0", - "webpack-dev-server": "^4.11.1", + "webpack-dev-server": "^4.15.1", "xcode-build-webpack-plugin": "^1.0.2" } } From 5a3f50c54f2813a21dc59183ea37a9f2ef131312 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 17 Sep 2023 23:43:58 +0300 Subject: [PATCH 031/243] build(deps-dev): bump @types/chrome from 0.0.203 to 0.0.246 (#791) Bumps [@types/chrome](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/chrome) from 0.0.203 to 0.0.246. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/chrome) --- updated-dependencies: - dependency-name: "@types/chrome" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 25b527f01..2a7612cd9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -64,7 +64,7 @@ "@testing-library/react-hooks": "^7.0.2", "@testing-library/user-event": "^13.5.0", "@types/big.js": "^6.1.6", - "@types/chrome": "0.0.203", + "@types/chrome": "0.0.246", "@types/expect": "^24.3.0", "@types/facepaint": "^1.2.2", "@types/jest": "29.2.3", @@ -5758,9 +5758,9 @@ } }, "node_modules/@types/chrome": { - "version": "0.0.203", - "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.203.tgz", - "integrity": "sha512-JlQNebwpBETVc8U1Rr2inDFuOTtn0lahRAhnddx1dd0S5RrLAFJEEsyIu7AXI14mkCgSunksnuLGioH8kvBqRA==", + "version": "0.0.246", + "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.246.tgz", + "integrity": "sha512-MxGxEomGxsJiL9xe/7ZwVgwdn8XVKWbPvxpVQl3nWOjrS0Ce63JsfzxUc4aU3GvRcUPYsfufHmJ17BFyKxeA4g==", "dev": true, "dependencies": { "@types/filesystem": "*", @@ -32202,9 +32202,9 @@ } }, "@types/chrome": { - "version": "0.0.203", - "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.203.tgz", - "integrity": "sha512-JlQNebwpBETVc8U1Rr2inDFuOTtn0lahRAhnddx1dd0S5RrLAFJEEsyIu7AXI14mkCgSunksnuLGioH8kvBqRA==", + "version": "0.0.246", + "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.246.tgz", + "integrity": "sha512-MxGxEomGxsJiL9xe/7ZwVgwdn8XVKWbPvxpVQl3nWOjrS0Ce63JsfzxUc4aU3GvRcUPYsfufHmJ17BFyKxeA4g==", "dev": true, "requires": { "@types/filesystem": "*", diff --git a/package.json b/package.json index 878bd3986..3d5c03285 100644 --- a/package.json +++ b/package.json @@ -112,7 +112,7 @@ "@testing-library/react-hooks": "^7.0.2", "@testing-library/user-event": "^13.5.0", "@types/big.js": "^6.1.6", - "@types/chrome": "0.0.203", + "@types/chrome": "0.0.246", "@types/expect": "^24.3.0", "@types/facepaint": "^1.2.2", "@types/jest": "29.2.3", From 93f713eba044c1d0565d402a6b6745435b6966e7 Mon Sep 17 00:00:00 2001 From: Ostap Piatkovskyi <44294945+ost-ptk@users.noreply.github.com> Date: Sun, 17 Sep 2023 23:44:58 +0300 Subject: [PATCH 032/243] added message for not supporting reverse look-up modality (#783) Co-authored-by: ost-ptk Co-authored-by: Vynnyk Dmytro --- src/apps/popup/pages/transfer-nft/content.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/apps/popup/pages/transfer-nft/content.tsx b/src/apps/popup/pages/transfer-nft/content.tsx index 7be3e9f63..9a4bdb101 100644 --- a/src/apps/popup/pages/transfer-nft/content.tsx +++ b/src/apps/popup/pages/transfer-nft/content.tsx @@ -132,7 +132,7 @@ export const TransferNftContent = ({ - For now we doesn't support we don’t the reverse look up modality + Sorry, but we don’t support the reverse look-up modality From 2ffcbbf4fa2de0292eeb31dc2d3214ce21dced68 Mon Sep 17 00:00:00 2001 From: Ostap Piatkovskyi <44294945+ost-ptk@users.noreply.github.com> Date: Sun, 17 Sep 2023 23:45:36 +0300 Subject: [PATCH 033/243] added a placeholder for the contract logo (#784) Co-authored-by: ost-ptk Co-authored-by: Vynnyk Dmytro --- src/apps/popup/pages/nft-details/content.tsx | 4 +++- src/assets/icons/nft-contract-icon.svg | 4 ++++ 2 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 src/assets/icons/nft-contract-icon.svg diff --git a/src/apps/popup/pages/nft-details/content.tsx b/src/apps/popup/pages/nft-details/content.tsx index 99e945aba..775193892 100644 --- a/src/apps/popup/pages/nft-details/content.tsx +++ b/src/apps/popup/pages/nft-details/content.tsx @@ -137,7 +137,9 @@ export const NftDetailsContent = ({ id: 2, title: t('Collection'), value: nftToken?.contract_package?.contract_name, - image: nftToken?.contract_package?.icon_url + image: + nftToken?.contract_package?.icon_url || + 'assets/icons/nft-contract-icon.svg' }, { id: 3, diff --git a/src/assets/icons/nft-contract-icon.svg b/src/assets/icons/nft-contract-icon.svg new file mode 100644 index 000000000..9dea5d081 --- /dev/null +++ b/src/assets/icons/nft-contract-icon.svg @@ -0,0 +1,4 @@ + + + + From 240960b7aea6633d54f0f64ad3aa877305d0700c Mon Sep 17 00:00:00 2001 From: Ostap Piatkovskyi <44294945+ost-ptk@users.noreply.github.com> Date: Mon, 18 Sep 2023 23:06:04 +0300 Subject: [PATCH 034/243] fix: fix issue with prettier config (#792) * fixed issue with prettier config * fixed code style errors --------- Co-authored-by: ost-ptk --- .eslintrc | 12 +- package-lock.json | 181 ++++++++++++++++-- package.json | 2 +- src/content/sdk.ts | 33 ++-- src/hooks/use-subscribe-to-redux.ts | 4 +- .../erc20-token-action-types.ts | 11 +- src/libs/ui/components/modal/modal.tsx | 4 +- 7 files changed, 197 insertions(+), 50 deletions(-) diff --git a/.eslintrc b/.eslintrc index d624002a9..b35f6c2f8 100644 --- a/.eslintrc +++ b/.eslintrc @@ -2,12 +2,11 @@ "extends": [ "react-app", "plugin:jsx-a11y/recommended", - "prettier", - "plugin:react-hooks/recommended" + "plugin:react-hooks/recommended", + "plugin:prettier/recommended" ], "plugins": [ "jsx-a11y", - "prettier", "react-hooks" ], "parser": "@typescript-eslint/parser", @@ -16,11 +15,6 @@ "react/jsx-filename-extension": [1, { "extensions": [".js", ".jsx", ".ts", ".tsx"] }], "no-unused-vars": "off", "@typescript-eslint/no-unused-vars": ["error"], - "jsx-a11y/no-autofocus": "off", - "prettier/prettier": [ - "warn", { - "semi": true - } - ] + "jsx-a11y/no-autofocus": "off" } } diff --git a/package-lock.json b/package-lock.json index 2a7612cd9..ebeb058f2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -90,7 +90,7 @@ "eslint-plugin-flowtype": "^8.0.3", "eslint-plugin-import": "^2.25.2", "eslint-plugin-jsx-a11y": "^6.7.1", - "eslint-plugin-prettier": "4.2.1", + "eslint-plugin-prettier": "^5.0.0", "eslint-plugin-react": "7.31.11", "eslint-plugin-react-hooks": "4.6.0", "file-loader": "^6.2.0", @@ -4229,6 +4229,62 @@ "ws": "^7.0.0" } }, + "node_modules/@pkgr/utils": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.4.2.tgz", + "integrity": "sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "fast-glob": "^3.3.0", + "is-glob": "^4.0.3", + "open": "^9.1.0", + "picocolors": "^1.0.0", + "tslib": "^2.6.0" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/@pkgr/utils/node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@pkgr/utils/node_modules/open": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/open/-/open-9.1.0.tgz", + "integrity": "sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==", + "dev": true, + "dependencies": { + "default-browser": "^4.0.0", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@pkgr/utils/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, "node_modules/@pnpm/network.ca-file": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz", @@ -12772,21 +12828,29 @@ } }, "node_modules/eslint-plugin-prettier": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", - "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.0.tgz", + "integrity": "sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==", "dev": true, "dependencies": { - "prettier-linter-helpers": "^1.0.0" + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.8.5" }, "engines": { - "node": ">=12.0.0" + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/prettier" }, "peerDependencies": { - "eslint": ">=7.28.0", - "prettier": ">=2.0.0" + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "prettier": ">=3.0.0" }, "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, "eslint-config-prettier": { "optional": true } @@ -13474,9 +13538,9 @@ "integrity": "sha512-Kl29QoNbNvn4nhDsLYjyIAaIqaJB6rBx5p3sL9VjaefJ+eMFBWVZiaoguaoZfzEKr5RhAti0UgM8703akGPJ6g==" }, "node_modules/fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -25338,6 +25402,28 @@ "resolved": "https://registry.npmjs.org/symlink-or-copy/-/symlink-or-copy-1.3.1.tgz", "integrity": "sha512-0K91MEXFpBUaywiwSSkmKjnGcasG/rVBXFLJz5DrgGabpYD6N+3yZrfD6uUIfpuTu65DZLHi7N8CizHc07BPZA==" }, + "node_modules/synckit": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz", + "integrity": "sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==", + "dev": true, + "dependencies": { + "@pkgr/utils": "^2.3.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/synckit/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, "node_modules/tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", @@ -31018,6 +31104,46 @@ "ws": "^7.0.0" } }, + "@pkgr/utils": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.4.2.tgz", + "integrity": "sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "fast-glob": "^3.3.0", + "is-glob": "^4.0.3", + "open": "^9.1.0", + "picocolors": "^1.0.0", + "tslib": "^2.6.0" + }, + "dependencies": { + "define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "dev": true + }, + "open": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/open/-/open-9.1.0.tgz", + "integrity": "sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==", + "dev": true, + "requires": { + "default-browser": "^4.0.0", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^2.2.0" + } + }, + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + } + } + }, "@pnpm/network.ca-file": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz", @@ -37841,12 +37967,13 @@ "requires": {} }, "eslint-plugin-prettier": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", - "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.0.tgz", + "integrity": "sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==", "dev": true, "requires": { - "prettier-linter-helpers": "^1.0.0" + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.8.5" } }, "eslint-plugin-react": { @@ -38193,9 +38320,9 @@ "integrity": "sha512-Kl29QoNbNvn4nhDsLYjyIAaIqaJB6rBx5p3sL9VjaefJ+eMFBWVZiaoguaoZfzEKr5RhAti0UgM8703akGPJ6g==" }, "fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", @@ -47236,6 +47363,24 @@ "resolved": "https://registry.npmjs.org/symlink-or-copy/-/symlink-or-copy-1.3.1.tgz", "integrity": "sha512-0K91MEXFpBUaywiwSSkmKjnGcasG/rVBXFLJz5DrgGabpYD6N+3yZrfD6uUIfpuTu65DZLHi7N8CizHc07BPZA==" }, + "synckit": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz", + "integrity": "sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==", + "dev": true, + "requires": { + "@pkgr/utils": "^2.3.1", + "tslib": "^2.5.0" + }, + "dependencies": { + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + } + } + }, "tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", diff --git a/package.json b/package.json index 3d5c03285..7fbc59ace 100644 --- a/package.json +++ b/package.json @@ -138,7 +138,7 @@ "eslint-plugin-flowtype": "^8.0.3", "eslint-plugin-import": "^2.25.2", "eslint-plugin-jsx-a11y": "^6.7.1", - "eslint-plugin-prettier": "4.2.1", + "eslint-plugin-prettier": "^5.0.0", "eslint-plugin-react": "7.31.11", "eslint-plugin-react-hooks": "4.6.0", "file-loader": "^6.2.0", diff --git a/src/content/sdk.ts b/src/content/sdk.ts index a1e641f5f..a7386204c 100644 --- a/src/content/sdk.ts +++ b/src/content/sdk.ts @@ -27,13 +27,16 @@ function fetchFromBackground( ): Promise { return new Promise((resolve, reject) => { // timeout & cleanup to prevent memory leaks - const timeoutId = setTimeout(() => { - reject( - Error( - `SDK RESPONSE TIMEOUT: ${requestAction.type}:${requestAction.meta.requestId}` - ) - ); - }, options?.timeout || DefaultOptions.timeout); + const timeoutId = setTimeout( + () => { + reject( + Error( + `SDK RESPONSE TIMEOUT: ${requestAction.type}:${requestAction.meta.requestId}` + ) + ); + }, + options?.timeout || DefaultOptions.timeout + ); window.dispatchEvent( new CustomEvent(SdkMethodEventType.Request, { @@ -88,7 +91,7 @@ export const CasperWalletProvider = (options?: CasperWalletProviderOptions) => { */ requestConnection(): Promise { return fetchFromBackground< - ReturnType['payload'] + ReturnType<(typeof sdkMethod)['connectResponse']>['payload'] >( sdkMethod.connectRequest( { title: document.title }, @@ -105,7 +108,7 @@ export const CasperWalletProvider = (options?: CasperWalletProviderOptions) => { */ requestSwitchAccount(): Promise { return fetchFromBackground< - ReturnType['payload'] + ReturnType<(typeof sdkMethod)['switchAccountResponse']>['payload'] >( sdkMethod.switchAccountRequest( { title: document.title }, @@ -127,7 +130,7 @@ export const CasperWalletProvider = (options?: CasperWalletProviderOptions) => { signingPublicKeyHex: string ): Promise => { return fetchFromBackground< - ReturnType['payload'] + ReturnType<(typeof sdkMethod)['signResponse']>['payload'] >( sdkMethod.signRequest( { @@ -163,7 +166,7 @@ export const CasperWalletProvider = (options?: CasperWalletProviderOptions) => { signingPublicKeyHex: string ): Promise => { return fetchFromBackground< - ReturnType['payload'] + ReturnType<(typeof sdkMethod)['signMessageResponse']>['payload'] >( sdkMethod.signMessageRequest( { @@ -194,7 +197,7 @@ export const CasperWalletProvider = (options?: CasperWalletProviderOptions) => { */ disconnectFromSite(): Promise { return fetchFromBackground< - ReturnType['payload'] + ReturnType<(typeof sdkMethod)['disconnectResponse']>['payload'] >( sdkMethod.disconnectRequest(undefined, { requestId: generateRequestId() @@ -209,7 +212,7 @@ export const CasperWalletProvider = (options?: CasperWalletProviderOptions) => { */ isConnected(): Promise { return fetchFromBackground< - ReturnType['payload'] + ReturnType<(typeof sdkMethod)['isConnectedResponse']>['payload'] >( sdkMethod.isConnectedRequest(undefined, { requestId: generateRequestId() @@ -225,7 +228,7 @@ export const CasperWalletProvider = (options?: CasperWalletProviderOptions) => { */ getActivePublicKey(): Promise { return fetchFromBackground< - ReturnType['payload'] + ReturnType<(typeof sdkMethod)['getActivePublicKeyResponse']>['payload'] >( sdkMethod.getActivePublicKeyRequest(undefined, { requestId: generateRequestId() @@ -239,7 +242,7 @@ export const CasperWalletProvider = (options?: CasperWalletProviderOptions) => { */ getVersion(): Promise { return fetchFromBackground< - ReturnType['payload'] + ReturnType<(typeof sdkMethod)['getVersionResponse']>['payload'] >( sdkMethod.getVersionRequest(undefined, { requestId: generateRequestId() diff --git a/src/hooks/use-subscribe-to-redux.ts b/src/hooks/use-subscribe-to-redux.ts index 25691ba7b..3ae692ab3 100644 --- a/src/hooks/use-subscribe-to-redux.ts +++ b/src/hooks/use-subscribe-to-redux.ts @@ -9,7 +9,7 @@ import { PopupState } from '@src/background/redux/utils'; import { rootAction } from '@src/background/redux'; type Props = { - windowInitAction: typeof rootAction['windowManagement'][keyof typeof rootAction['windowManagement']]; + windowInitAction: (typeof rootAction)['windowManagement'][keyof (typeof rootAction)['windowManagement']]; setPopupState: React.Dispatch>; }; @@ -31,7 +31,7 @@ export const useSubscribeToRedux = ({ browser.runtime.onMessage.addListener(handleStateUpdate); } - browser.runtime.sendMessage((windowInitAction as any)()).catch(err => { + browser.runtime.sendMessage((windowInitAction as any)()).catch(() => { console.error('window init: ' + getType(windowInitAction)); }); diff --git a/src/libs/services/account-activity-service/erc20-token-action-types.ts b/src/libs/services/account-activity-service/erc20-token-action-types.ts index f17239f28..bb2633496 100644 --- a/src/libs/services/account-activity-service/erc20-token-action-types.ts +++ b/src/libs/services/account-activity-service/erc20-token-action-types.ts @@ -4,10 +4,13 @@ export class Erc20TokenActionType { { id: 2, name: 'Transfer' }, { id: 3, name: 'Approve' }, { id: 4, name: 'Burn' } - ].reduce((acc, item) => { - acc[item.id] = item.name; - return acc; - }, {} as Record); + ].reduce( + (acc, item) => { + acc[item.id] = item.name; + return acc; + }, + {} as Record + ); static getActionNameById(id: number) { return this.byId[id]; diff --git a/src/libs/ui/components/modal/modal.tsx b/src/libs/ui/components/modal/modal.tsx index f6c5d1a63..99ec975a0 100644 --- a/src/libs/ui/components/modal/modal.tsx +++ b/src/libs/ui/components/modal/modal.tsx @@ -20,7 +20,9 @@ const ModalContainer = styled.div` max-width: 328px; background-color: ${({ theme }) => theme.color.backgroundPrimary}; - box-shadow: 0 2px 10px rgba(0, 0, 0, 0.04), 0 15px 50px rgba(0, 0, 0, 0.1); + box-shadow: + 0 2px 10px rgba(0, 0, 0, 0.04), + 0 15px 50px rgba(0, 0, 0, 0.1); border-radius: ${({ theme }) => theme.borderRadius.twelve}px; `; interface RenderChildrenProps { From 18788fbb3fbe8e79ca7b2c2e4c70163b82299cdb Mon Sep 17 00:00:00 2001 From: Ostap Piatkovskyi <44294945+ost-ptk@users.noreply.github.com> Date: Mon, 18 Sep 2023 23:07:39 +0300 Subject: [PATCH 035/243] added new UI for erc-20 action displaying (#790) Co-authored-by: ost-ptk Co-authored-by: Vynnyk Dmytro --- .../popup/pages/activity-details/content.tsx | 79 ++++++++++++++++++- src/assets/icons/bid-contract-icon.svg | 6 ++ src/assets/icons/defi-contract-icon.svg | 4 + src/assets/icons/erc20-contract-icon.svg | 8 ++ src/assets/icons/generic-contract-icon.svg | 5 ++ .../contract-icon/contract-icon.tsx | 45 +++++++++++ src/libs/ui/index.ts | 1 + 7 files changed, 145 insertions(+), 3 deletions(-) create mode 100644 src/assets/icons/bid-contract-icon.svg create mode 100644 src/assets/icons/defi-contract-icon.svg create mode 100644 src/assets/icons/erc20-contract-icon.svg create mode 100644 src/assets/icons/generic-contract-icon.svg create mode 100644 src/libs/ui/components/contract-icon/contract-icon.tsx diff --git a/src/apps/popup/pages/activity-details/content.tsx b/src/apps/popup/pages/activity-details/content.tsx index 9d0235eab..953301414 100644 --- a/src/apps/popup/pages/activity-details/content.tsx +++ b/src/apps/popup/pages/activity-details/content.tsx @@ -1,6 +1,7 @@ import React from 'react'; import { Trans, useTranslation } from 'react-i18next'; import styled from 'styled-components'; +import { useSelector } from 'react-redux'; import { AlignedFlexRow, @@ -16,10 +17,13 @@ import { } from '@libs/layout'; import { Avatar, + ContractIcon, + CopyToClipboard, DeployStatus, Hash, HashVariant, isPendingStatus, + Link, SvgIcon, Tile, Tooltip, @@ -35,7 +39,12 @@ import { motesToCSPR, motesToCurrency } from '@libs/ui/utils/formatters'; -import { TransferType, TypeName } from '@src/constants'; +import { + getBlockExplorerContractUrl, + TransferType, + TypeName +} from '@src/constants'; +import { selectApiConfigBasedOnActiveNetwork } from '@background/redux/settings/selectors'; interface ActivityDetailsPageContentProps { fromAccount?: string; @@ -55,6 +64,14 @@ export const ExecutionTypesMap = { 6: 'Transfer' }; +const Erc20EventType = { + erc20_approve: 'approve', + erc20_transfer: 'transfer', + erc20_transfer_from: 'transfer_from', + erc20_mint: 'mint', + erc20_burn: 'burn' +}; + const ItemContainer = styled(AlignedSpaceBetweenFlexRow)` padding: 16px 16px 16px 0; `; @@ -90,10 +107,21 @@ export const ActivityDetailsPageContent = ({ }: ActivityDetailsPageContentProps) => { const { t } = useTranslation(); + const { casperLiveUrl } = useSelector(selectApiConfigBasedOnActiveNetwork); + if (deployInfo == null) return null; - const deployType: string = ExecutionTypesMap[deployInfo.executionTypeId]; + // TODO: update when activity will be added for NFT + const EVENT_TYPE_LOCALE = { + [Erc20EventType.erc20_transfer]: t('Transfer of'), + [Erc20EventType.erc20_transfer_from]: t('Transfer from'), + [Erc20EventType.erc20_approve]: t('Approve of'), + [Erc20EventType.erc20_burn]: t('Burn of'), + [Erc20EventType.erc20_mint]: t('Mint of') + }; + const decimals = deployInfo.contractPackage?.metadata?.decimals; + const eventType = EVENT_TYPE_LOCALE[deployInfo.entryPoint?.name!]; const transferAmount = deployInfo.amount != null @@ -219,7 +247,52 @@ export const ActivityDetailsPageContent = ({ Action - {deployType} + {deployInfo.contractPackage && eventType ? ( + + {eventType} + + + + + {deployInfo.contractPackage.contract_name} + + + + isClicked ? ( + + ) : ( + + ) + } + valueToCopy={ + deployInfo.contractPackage.contract_package_hash || + deployInfo.contractHash! + } + /> + + contract + + + + ) : ( + + {ExecutionTypesMap[deployInfo.executionTypeId]} + + )} diff --git a/src/assets/icons/bid-contract-icon.svg b/src/assets/icons/bid-contract-icon.svg new file mode 100644 index 000000000..e97a0b32e --- /dev/null +++ b/src/assets/icons/bid-contract-icon.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/icons/defi-contract-icon.svg b/src/assets/icons/defi-contract-icon.svg new file mode 100644 index 000000000..b94572efc --- /dev/null +++ b/src/assets/icons/defi-contract-icon.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/icons/erc20-contract-icon.svg b/src/assets/icons/erc20-contract-icon.svg new file mode 100644 index 000000000..e68ea03b7 --- /dev/null +++ b/src/assets/icons/erc20-contract-icon.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/icons/generic-contract-icon.svg b/src/assets/icons/generic-contract-icon.svg new file mode 100644 index 000000000..62b37cbb2 --- /dev/null +++ b/src/assets/icons/generic-contract-icon.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/libs/ui/components/contract-icon/contract-icon.tsx b/src/libs/ui/components/contract-icon/contract-icon.tsx new file mode 100644 index 000000000..aac805739 --- /dev/null +++ b/src/libs/ui/components/contract-icon/contract-icon.tsx @@ -0,0 +1,45 @@ +import React from 'react'; + +import { SvgIcon } from '@libs/ui'; + +export interface ContractIconProps { + src?: string | null; + size?: number; + contractTypeId: number | undefined | null; +} + +export const ContractTypeId = { + System: 1, + Erc20: 2, + CustomErc20: 3, + CEP47Nft: 4, + CustomCEP47Nft: 5, + DeFi: 6, + CEP78Nft: 7, + CustomCEP78Nft: 8 +}; + +const ContractIconsPath = { + [ContractTypeId.System]: 'assets/icons/bid-contract-icon.svg', + [ContractTypeId.Erc20]: 'assets/icons/erc20-contract-icon.svg', + [ContractTypeId.CustomErc20]: 'assets/icons/erc20-contract-icon.svg', + [ContractTypeId.CEP47Nft]: 'assets/icons/nft-contract-icon.svg', + [ContractTypeId.CustomCEP47Nft]: 'assets/icons/nft-contract-icon.svg', + [ContractTypeId.CEP78Nft]: 'assets/icons/nft-contract-icon.svg', + [ContractTypeId.CustomCEP78Nft]: 'assets/icons/nft-contract-icon.svg', + [ContractTypeId.DeFi]: 'assets/icons/defi-contract-icon.svg' +}; + +const genericIconPath = 'assets/icons/generic-contract-icon.svg'; + +export const ContractIcon = ({ + src, + size = 16, + contractTypeId +}: ContractIconProps) => { + const contractLogoSrc = contractTypeId + ? ContractIconsPath[contractTypeId] + : genericIconPath; + + return ; +}; diff --git a/src/libs/ui/index.ts b/src/libs/ui/index.ts index 6b20384f2..65d2623d3 100644 --- a/src/libs/ui/index.ts +++ b/src/libs/ui/index.ts @@ -41,6 +41,7 @@ export * from './components/casper-token-activity-list/casper-token-activity-lis export * from './components/loading-activity-view/loading-activity-view'; export * from './components/recipient-dropdown-input/recipient-dropdown-input'; export * from './components/transfer-success-screen/transfer-succeess-screen'; +export * from './components/contract-icon/contract-icon'; export * from './utils/match-media'; export * from './utils/match-size'; From a1b2974cc8c1b6ddc24e67d24a5a444f544c9ee6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Sep 2023 23:08:45 +0300 Subject: [PATCH 036/243] build(deps-dev): bump geckodriver from 3.2.0 to 4.2.1 (#793) Bumps [geckodriver](https://github.com/webdriverio-community/node-geckodriver) from 3.2.0 to 4.2.1. - [Release notes](https://github.com/webdriverio-community/node-geckodriver/releases) - [Changelog](https://github.com/webdriverio-community/node-geckodriver/blob/main/CHANGELOG.md) - [Commits](https://github.com/webdriverio-community/node-geckodriver/compare/v3.2.0...v4.2.1) --- updated-dependencies: - dependency-name: geckodriver dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 738 +++++++++++++++++++++++++++++++++++++++++----- package.json | 2 +- 2 files changed, 672 insertions(+), 68 deletions(-) diff --git a/package-lock.json b/package-lock.json index ebeb058f2..333b8d1b6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -95,7 +95,7 @@ "eslint-plugin-react-hooks": "4.6.0", "file-loader": "^6.2.0", "fs-extra": "11.1.1", - "geckodriver": "3.2.0", + "geckodriver": "4.2.1", "html-loader": "4.2.0", "html-webpack-plugin": "^5.5.0", "husky": "8.0.2", @@ -6924,6 +6924,60 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/@wdio/logger": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-8.11.0.tgz", + "integrity": "sha512-IsuKSaYi7NKEdgA57h8muzlN/MVp1dQG+V4C//7g4m03YJUnNQLvDhJzLjdeNTfvZy61U7foQSyt+3ktNzZkXA==", + "dev": true, + "dependencies": { + "chalk": "^5.1.2", + "loglevel": "^1.6.0", + "loglevel-plugin-prefix": "^0.8.4", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": "^16.13 || >=18" + } + }, + "node_modules/@wdio/logger/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@wdio/logger/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@wdio/logger/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/@webassemblyjs/ast": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", @@ -8270,6 +8324,12 @@ "dequal": "^2.0.3" } }, + "node_modules/b4a": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz", + "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==", + "dev": true + }, "node_modules/babel-eslint": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", @@ -8665,6 +8725,19 @@ "url": "https://opencollective.com/bigjs" } }, + "node_modules/binary": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", + "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", + "dev": true, + "dependencies": { + "buffers": "~0.1.1", + "chainsaw": "~0.1.0" + }, + "engines": { + "node": "*" + } + }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -9133,6 +9206,24 @@ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, + "node_modules/buffer-indexof-polyfill": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", + "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/buffers": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", + "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==", + "dev": true, + "engines": { + "node": ">=0.2.0" + } + }, "node_modules/bundle-name": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz", @@ -9570,6 +9661,18 @@ "webidl-conversions": "^3.0.0" } }, + "node_modules/chainsaw": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", + "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==", + "dev": true, + "dependencies": { + "traverse": ">=0.3.0 <0.4" + }, + "engines": { + "node": "*" + } + }, "node_modules/chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -12058,6 +12161,39 @@ "node": ">=0.10" } }, + "node_modules/duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "dev": true, + "dependencies": { + "readable-stream": "^2.0.2" + } + }, + "node_modules/duplexer2/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/duplexer2/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/duplexify": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", @@ -13533,9 +13669,9 @@ "dev": true }, "node_modules/fast-fifo": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.1.0.tgz", - "integrity": "sha512-Kl29QoNbNvn4nhDsLYjyIAaIqaJB6rBx5p3sL9VjaefJ+eMFBWVZiaoguaoZfzEKr5RhAti0UgM8703akGPJ6g==" + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==" }, "node_modules/fast-glob": { "version": "3.3.1", @@ -14130,6 +14266,45 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, + "node_modules/fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + }, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/fstream/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/fstream/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -14287,48 +14462,106 @@ } }, "node_modules/geckodriver": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/geckodriver/-/geckodriver-3.2.0.tgz", - "integrity": "sha512-p+qR2RKlI/TQoCEYrSuTaYCLqsJNni96WmEukTyXmOmLn+3FLdgPAEwMZ0sG2Cwi9hozUzGAWyT6zLuhF6cpiQ==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/geckodriver/-/geckodriver-4.2.1.tgz", + "integrity": "sha512-4m/CRk0OI8MaANRuFIahvOxYTSjlNAO2p9JmE14zxueknq6cdtB5M9UGRQ8R9aMV0bLGNVHHDnDXmoXdOwJfWg==", "dev": true, "hasInstallScript": true, "dependencies": { - "adm-zip": "0.5.9", - "bluebird": "3.7.2", - "got": "11.8.5", - "https-proxy-agent": "5.0.1", - "tar": "6.1.11" + "@wdio/logger": "^8.11.0", + "decamelize": "^6.0.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "node-fetch": "^3.3.1", + "tar-fs": "^3.0.4", + "unzipper": "^0.10.14", + "which": "^4.0.0" }, "bin": { - "geckodriver": "bin/geckodriver" + "geckodriver": "bin/geckodriver.js" }, "engines": { - "node": ">=12.0.0" + "node": "^16.13 || >=18 || >=20" } }, - "node_modules/geckodriver/node_modules/got": { - "version": "11.8.5", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.5.tgz", - "integrity": "sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ==", + "node_modules/geckodriver/node_modules/agent-base": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", "dev": true, "dependencies": { - "@sindresorhus/is": "^4.0.0", - "@szmarczak/http-timer": "^4.0.5", - "@types/cacheable-request": "^6.0.1", - "@types/responselike": "^1.0.0", - "cacheable-lookup": "^5.0.3", - "cacheable-request": "^7.0.2", - "decompress-response": "^6.0.0", - "http2-wrapper": "^1.0.0-beta.5.2", - "lowercase-keys": "^2.0.0", - "p-cancelable": "^2.0.0", - "responselike": "^2.0.0" + "debug": "^4.3.4" }, "engines": { - "node": ">=10.19.0" + "node": ">= 14" + } + }, + "node_modules/geckodriver/node_modules/http-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", + "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", + "dev": true, + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/geckodriver/node_modules/https-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz", + "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==", + "dev": true, + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/geckodriver/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dev": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/geckodriver/node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "dev": true, + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "url": "https://github.com/sindresorhus/got?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, + "node_modules/geckodriver/node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "dev": true, + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" } }, "node_modules/gensync": { @@ -19592,6 +19825,12 @@ "node": ">= 14" } }, + "node_modules/listenercount": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", + "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==", + "dev": true + }, "node_modules/listr2": { "version": "5.0.6", "resolved": "https://registry.npmjs.org/listr2/-/listr2-5.0.6.tgz", @@ -19985,6 +20224,12 @@ "url": "https://tidelift.com/funding/github/npm/loglevel" } }, + "node_modules/loglevel-plugin-prefix": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/loglevel-plugin-prefix/-/loglevel-plugin-prefix-0.8.4.tgz", + "integrity": "sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g==", + "dev": true + }, "node_modules/long": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", @@ -20605,6 +20850,12 @@ "node": ">=10" } }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true + }, "node_modules/mktemp": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/mktemp/-/mktemp-0.4.0.tgz", @@ -25057,12 +25308,12 @@ } }, "node_modules/streamx": { - "version": "2.12.5", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.12.5.tgz", - "integrity": "sha512-Y+nkFw57Z5JHT3zLlqFm3GccOy2FeYdUrrqita6Dd8kr/8enPn9GKa8IYf3/DmEKfZl/E2sWoSKUnd4qhonrgg==", + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.1.tgz", + "integrity": "sha512-fQMzy2O/Q47rgwErk/eGeLu/roaFWV0jVsogDmrszM9uIw8L5OA+t+V93MgYlufNptfjmYR1tOMWhei/Eh7TQA==", "dependencies": { - "fast-fifo": "^1.0.0", - "queue-tick": "^1.0.0" + "fast-fifo": "^1.1.0", + "queue-tick": "^1.0.1" } }, "node_modules/strict-event-emitter-types": { @@ -25450,6 +25701,28 @@ "node": ">= 10" } }, + "node_modules/tar-fs": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.4.tgz", + "integrity": "sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==", + "dev": true, + "dependencies": { + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^3.1.5" + } + }, + "node_modules/tar-stream": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz", + "integrity": "sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==", + "dev": true, + "dependencies": { + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + } + }, "node_modules/tarn": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/tarn/-/tarn-3.0.2.tgz", @@ -25858,6 +26131,15 @@ "node": ">=12" } }, + "node_modules/traverse": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", + "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/tree-kill": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", @@ -26539,6 +26821,54 @@ "node": ">=8" } }, + "node_modules/unzipper": { + "version": "0.10.14", + "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.14.tgz", + "integrity": "sha512-ti4wZj+0bQTiX2KmKWuwj7lhV+2n//uXEotUmGuQqrbVZSEGFMbI68+c6JCQ8aAmUWYvtHEz2A8K6wXvueR/6g==", + "dev": true, + "dependencies": { + "big-integer": "^1.6.17", + "binary": "~0.3.0", + "bluebird": "~3.4.1", + "buffer-indexof-polyfill": "~1.0.0", + "duplexer2": "~0.1.4", + "fstream": "^1.0.12", + "graceful-fs": "^4.2.2", + "listenercount": "~1.0.1", + "readable-stream": "~2.3.6", + "setimmediate": "~1.0.4" + } + }, + "node_modules/unzipper/node_modules/bluebird": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", + "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==", + "dev": true + }, + "node_modules/unzipper/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/unzipper/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/upath": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz", @@ -33316,6 +33646,41 @@ } } }, + "@wdio/logger": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-8.11.0.tgz", + "integrity": "sha512-IsuKSaYi7NKEdgA57h8muzlN/MVp1dQG+V4C//7g4m03YJUnNQLvDhJzLjdeNTfvZy61U7foQSyt+3ktNzZkXA==", + "dev": true, + "requires": { + "chalk": "^5.1.2", + "loglevel": "^1.6.0", + "loglevel-plugin-prefix": "^0.8.4", + "strip-ansi": "^7.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true + }, + "chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true + }, + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "requires": { + "ansi-regex": "^6.0.1" + } + } + } + }, "@webassemblyjs/ast": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", @@ -34382,6 +34747,12 @@ "dequal": "^2.0.3" } }, + "b4a": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz", + "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==", + "dev": true + }, "babel-eslint": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", @@ -34677,6 +35048,16 @@ "resolved": "https://registry.npmjs.org/big.js/-/big.js-6.2.1.tgz", "integrity": "sha512-bCtHMwL9LeDIozFn+oNhhFoq+yQ3BNdnsLSASUxLciOb1vgvpHsIO1dsENiGMgbb4SkP5TrzWzRiLddn8ahVOQ==" }, + "binary": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", + "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", + "dev": true, + "requires": { + "buffers": "~0.1.1", + "chainsaw": "~0.1.0" + } + }, "binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -35040,6 +35421,18 @@ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, + "buffer-indexof-polyfill": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", + "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", + "dev": true + }, + "buffers": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", + "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==", + "dev": true + }, "bundle-name": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz", @@ -35364,6 +35757,15 @@ } } }, + "chainsaw": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", + "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==", + "dev": true, + "requires": { + "traverse": ">=0.3.0 <0.4" + } + }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -37218,6 +37620,41 @@ "nan": "^2.14.0" } }, + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "dev": true, + "requires": { + "readable-stream": "^2.0.2" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, "duplexify": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", @@ -38315,9 +38752,9 @@ "dev": true }, "fast-fifo": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.1.0.tgz", - "integrity": "sha512-Kl29QoNbNvn4nhDsLYjyIAaIqaJB6rBx5p3sL9VjaefJ+eMFBWVZiaoguaoZfzEKr5RhAti0UgM8703akGPJ6g==" + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==" }, "fast-glob": { "version": "3.3.1", @@ -38789,6 +39226,38 @@ "dev": true, "optional": true }, + "fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -38917,35 +39386,74 @@ } }, "geckodriver": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/geckodriver/-/geckodriver-3.2.0.tgz", - "integrity": "sha512-p+qR2RKlI/TQoCEYrSuTaYCLqsJNni96WmEukTyXmOmLn+3FLdgPAEwMZ0sG2Cwi9hozUzGAWyT6zLuhF6cpiQ==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/geckodriver/-/geckodriver-4.2.1.tgz", + "integrity": "sha512-4m/CRk0OI8MaANRuFIahvOxYTSjlNAO2p9JmE14zxueknq6cdtB5M9UGRQ8R9aMV0bLGNVHHDnDXmoXdOwJfWg==", "dev": true, "requires": { - "adm-zip": "0.5.9", - "bluebird": "3.7.2", - "got": "11.8.5", - "https-proxy-agent": "5.0.1", - "tar": "6.1.11" + "@wdio/logger": "^8.11.0", + "decamelize": "^6.0.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "node-fetch": "^3.3.1", + "tar-fs": "^3.0.4", + "unzipper": "^0.10.14", + "which": "^4.0.0" }, "dependencies": { - "got": { - "version": "11.8.5", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.5.tgz", - "integrity": "sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ==", + "agent-base": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", "dev": true, "requires": { - "@sindresorhus/is": "^4.0.0", - "@szmarczak/http-timer": "^4.0.5", - "@types/cacheable-request": "^6.0.1", - "@types/responselike": "^1.0.0", - "cacheable-lookup": "^5.0.3", - "cacheable-request": "^7.0.2", - "decompress-response": "^6.0.0", - "http2-wrapper": "^1.0.0-beta.5.2", - "lowercase-keys": "^2.0.0", - "p-cancelable": "^2.0.0", - "responselike": "^2.0.0" + "debug": "^4.3.4" + } + }, + "http-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", + "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", + "dev": true, + "requires": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + } + }, + "https-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz", + "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==", + "dev": true, + "requires": { + "agent-base": "^7.0.2", + "debug": "4" + } + }, + "isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dev": true + }, + "node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "dev": true, + "requires": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + } + }, + "which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "dev": true, + "requires": { + "isexe": "^3.1.1" } } } @@ -42897,6 +43405,12 @@ } } }, + "listenercount": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", + "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==", + "dev": true + }, "listr2": { "version": "5.0.6", "resolved": "https://registry.npmjs.org/listr2/-/listr2-5.0.6.tgz", @@ -43212,6 +43726,12 @@ "integrity": "sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg==", "dev": true }, + "loglevel-plugin-prefix": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/loglevel-plugin-prefix/-/loglevel-plugin-prefix-0.8.4.tgz", + "integrity": "sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g==", + "dev": true + }, "long": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", @@ -43695,6 +44215,12 @@ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true }, + "mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true + }, "mktemp": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/mktemp/-/mktemp-0.4.0.tgz", @@ -47122,12 +47648,12 @@ } }, "streamx": { - "version": "2.12.5", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.12.5.tgz", - "integrity": "sha512-Y+nkFw57Z5JHT3zLlqFm3GccOy2FeYdUrrqita6Dd8kr/8enPn9GKa8IYf3/DmEKfZl/E2sWoSKUnd4qhonrgg==", + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.1.tgz", + "integrity": "sha512-fQMzy2O/Q47rgwErk/eGeLu/roaFWV0jVsogDmrszM9uIw8L5OA+t+V93MgYlufNptfjmYR1tOMWhei/Eh7TQA==", "requires": { - "fast-fifo": "^1.0.0", - "queue-tick": "^1.0.0" + "fast-fifo": "^1.1.0", + "queue-tick": "^1.0.1" } }, "strict-event-emitter-types": { @@ -47401,6 +47927,28 @@ "yallist": "^4.0.0" } }, + "tar-fs": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.4.tgz", + "integrity": "sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==", + "dev": true, + "requires": { + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^3.1.5" + } + }, + "tar-stream": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz", + "integrity": "sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==", + "dev": true, + "requires": { + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + } + }, "tarn": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/tarn/-/tarn-3.0.2.tgz", @@ -47731,6 +48279,12 @@ "punycode": "^2.1.1" } }, + "traverse": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", + "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==", + "dev": true + }, "tree-kill": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", @@ -48221,6 +48775,56 @@ "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", "dev": true }, + "unzipper": { + "version": "0.10.14", + "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.14.tgz", + "integrity": "sha512-ti4wZj+0bQTiX2KmKWuwj7lhV+2n//uXEotUmGuQqrbVZSEGFMbI68+c6JCQ8aAmUWYvtHEz2A8K6wXvueR/6g==", + "dev": true, + "requires": { + "big-integer": "^1.6.17", + "binary": "~0.3.0", + "bluebird": "~3.4.1", + "buffer-indexof-polyfill": "~1.0.0", + "duplexer2": "~0.1.4", + "fstream": "^1.0.12", + "graceful-fs": "^4.2.2", + "listenercount": "~1.0.1", + "readable-stream": "~2.3.6", + "setimmediate": "~1.0.4" + }, + "dependencies": { + "bluebird": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", + "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==", + "dev": true + }, + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, "upath": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz", diff --git a/package.json b/package.json index 7fbc59ace..3bcb871b7 100644 --- a/package.json +++ b/package.json @@ -143,7 +143,7 @@ "eslint-plugin-react-hooks": "4.6.0", "file-loader": "^6.2.0", "fs-extra": "11.1.1", - "geckodriver": "3.2.0", + "geckodriver": "4.2.1", "html-loader": "4.2.0", "html-webpack-plugin": "^5.5.0", "husky": "8.0.2", From 4189590bc8be77ca75915ca022cf15d48e786225 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Sep 2023 23:12:34 +0300 Subject: [PATCH 037/243] build(deps): bump react-query from 3.39.2 to 3.39.3 (#794) Bumps [react-query](https://github.com/tannerlinsley/react-query) from 3.39.2 to 3.39.3. - [Release notes](https://github.com/tannerlinsley/react-query/releases) - [Commits](https://github.com/tannerlinsley/react-query/commits) --- updated-dependencies: - dependency-name: react-query dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Vynnyk Dmytro --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 333b8d1b6..20bac368c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -42,7 +42,7 @@ "react-inlinesvg": "^3.0.1", "react-loading-skeleton": "^3.1.0", "react-player": "^2.13.0", - "react-query": "^3.39.2", + "react-query": "^3.39.3", "react-redux": "8.0.5", "react-router-dom": "6.4.4", "redux": "4.2.1", @@ -23306,9 +23306,9 @@ } }, "node_modules/react-query": { - "version": "3.39.2", - "resolved": "https://registry.npmjs.org/react-query/-/react-query-3.39.2.tgz", - "integrity": "sha512-F6hYDKyNgDQfQOuR1Rsp3VRzJnWHx6aRnnIZHMNGGgbL3SBgpZTDg8MQwmxOgpCAoqZJA+JSNCydF1xGJqKOCA==", + "version": "3.39.3", + "resolved": "https://registry.npmjs.org/react-query/-/react-query-3.39.3.tgz", + "integrity": "sha512-nLfLz7GiohKTJDuT4us4X3h/8unOh+00MLb2yJoGTPjxKs2bc1iDhkNx2bd5MKklXnOD3NrVZ+J2UXujA5In4g==", "dependencies": { "@babel/runtime": "^7.5.5", "broadcast-channel": "^3.4.1", @@ -46056,9 +46056,9 @@ } }, "react-query": { - "version": "3.39.2", - "resolved": "https://registry.npmjs.org/react-query/-/react-query-3.39.2.tgz", - "integrity": "sha512-F6hYDKyNgDQfQOuR1Rsp3VRzJnWHx6aRnnIZHMNGGgbL3SBgpZTDg8MQwmxOgpCAoqZJA+JSNCydF1xGJqKOCA==", + "version": "3.39.3", + "resolved": "https://registry.npmjs.org/react-query/-/react-query-3.39.3.tgz", + "integrity": "sha512-nLfLz7GiohKTJDuT4us4X3h/8unOh+00MLb2yJoGTPjxKs2bc1iDhkNx2bd5MKklXnOD3NrVZ+J2UXujA5In4g==", "requires": { "@babel/runtime": "^7.5.5", "broadcast-channel": "^3.4.1", diff --git a/package.json b/package.json index 3bcb871b7..7ad1957be 100644 --- a/package.json +++ b/package.json @@ -90,7 +90,7 @@ "react-inlinesvg": "^3.0.1", "react-loading-skeleton": "^3.1.0", "react-player": "^2.13.0", - "react-query": "^3.39.2", + "react-query": "^3.39.3", "react-redux": "8.0.5", "react-router-dom": "6.4.4", "redux": "4.2.1", From 5b9f7ab8d5eb2d13df2b90a5c16f1b9982d6e748 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Sep 2023 23:13:10 +0300 Subject: [PATCH 038/243] build(deps): bump react-router-dom from 6.4.4 to 6.16.0 (#795) Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.4.4 to 6.16.0. - [Release notes](https://github.com/remix-run/react-router/releases) - [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md) - [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.16.0/packages/react-router-dom) --- updated-dependencies: - dependency-name: react-router-dom dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Vynnyk Dmytro --- package-lock.json | 56 +++++++++++++++++++++++------------------------ package.json | 2 +- 2 files changed, 29 insertions(+), 29 deletions(-) diff --git a/package-lock.json b/package-lock.json index 20bac368c..e169e4992 100644 --- a/package-lock.json +++ b/package-lock.json @@ -44,7 +44,7 @@ "react-player": "^2.13.0", "react-query": "^3.39.3", "react-redux": "8.0.5", - "react-router-dom": "6.4.4", + "react-router-dom": "6.16.0", "redux": "4.2.1", "redux-saga": "1.2.1", "reselect": "4.1.7", @@ -5296,11 +5296,11 @@ "dev": true }, "node_modules/@remix-run/router": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.0.4.tgz", - "integrity": "sha512-gTL8H5USTAKOyVA4xczzDJnC3HMssdFa3tRlwBicXynx9XfiXwneHnYQogwSKpdCkjXISrEKSTtX62rLpNEVQg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.9.0.tgz", + "integrity": "sha512-bV63itrKBC0zdT27qYm6SDZHlkXwFL1xMBuhkn+X7l0+IIhNaH5wuuvZKp6eKhCD4KFhujhfhCT1YxXW6esUIA==", "engines": { - "node": ">=14" + "node": ">=14.0.0" } }, "node_modules/@rjsf/core": { @@ -23369,29 +23369,29 @@ } }, "node_modules/react-router": { - "version": "6.4.4", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.4.4.tgz", - "integrity": "sha512-SA6tSrUCRfuLWeYsTJDuriRqfFIsrSvuH7SqAJHegx9ZgxadE119rU8oOX/rG5FYEthpdEaEljdjDlnBxvfr+Q==", + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.16.0.tgz", + "integrity": "sha512-VT4Mmc4jj5YyjpOi5jOf0I+TYzGpvzERy4ckNSvSh2RArv8LLoCxlsZ2D+tc7zgjxcY34oTz2hZaeX5RVprKqA==", "dependencies": { - "@remix-run/router": "1.0.4" + "@remix-run/router": "1.9.0" }, "engines": { - "node": ">=14" + "node": ">=14.0.0" }, "peerDependencies": { "react": ">=16.8" } }, "node_modules/react-router-dom": { - "version": "6.4.4", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.4.4.tgz", - "integrity": "sha512-0Axverhw5d+4SBhLqLpzPhNkmv7gahUwlUVIOrRLGJ4/uwt30JVajVJXqv2Qr/LCwyvHhQc7YyK1Do8a9Jj7qA==", + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.16.0.tgz", + "integrity": "sha512-aTfBLv3mk/gaKLxgRDUPbPw+s4Y/O+ma3rEN1u8EgEpLpPe6gNjIsWt9rxushMHHMb7mSwxRGdGlGdvmFsyPIg==", "dependencies": { - "@remix-run/router": "1.0.4", - "react-router": "6.4.4" + "@remix-run/router": "1.9.0", + "react-router": "6.16.0" }, "engines": { - "node": ">=14" + "node": ">=14.0.0" }, "peerDependencies": { "react": ">=16.8", @@ -32250,9 +32250,9 @@ } }, "@remix-run/router": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.0.4.tgz", - "integrity": "sha512-gTL8H5USTAKOyVA4xczzDJnC3HMssdFa3tRlwBicXynx9XfiXwneHnYQogwSKpdCkjXISrEKSTtX62rLpNEVQg==" + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.9.0.tgz", + "integrity": "sha512-bV63itrKBC0zdT27qYm6SDZHlkXwFL1xMBuhkn+X7l0+IIhNaH5wuuvZKp6eKhCD4KFhujhfhCT1YxXW6esUIA==" }, "@rjsf/core": { "version": "4.2.3", @@ -46079,20 +46079,20 @@ } }, "react-router": { - "version": "6.4.4", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.4.4.tgz", - "integrity": "sha512-SA6tSrUCRfuLWeYsTJDuriRqfFIsrSvuH7SqAJHegx9ZgxadE119rU8oOX/rG5FYEthpdEaEljdjDlnBxvfr+Q==", + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.16.0.tgz", + "integrity": "sha512-VT4Mmc4jj5YyjpOi5jOf0I+TYzGpvzERy4ckNSvSh2RArv8LLoCxlsZ2D+tc7zgjxcY34oTz2hZaeX5RVprKqA==", "requires": { - "@remix-run/router": "1.0.4" + "@remix-run/router": "1.9.0" } }, "react-router-dom": { - "version": "6.4.4", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.4.4.tgz", - "integrity": "sha512-0Axverhw5d+4SBhLqLpzPhNkmv7gahUwlUVIOrRLGJ4/uwt30JVajVJXqv2Qr/LCwyvHhQc7YyK1Do8a9Jj7qA==", + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.16.0.tgz", + "integrity": "sha512-aTfBLv3mk/gaKLxgRDUPbPw+s4Y/O+ma3rEN1u8EgEpLpPe6gNjIsWt9rxushMHHMb7mSwxRGdGlGdvmFsyPIg==", "requires": { - "@remix-run/router": "1.0.4", - "react-router": "6.4.4" + "@remix-run/router": "1.9.0", + "react-router": "6.16.0" } }, "readable-stream": { diff --git a/package.json b/package.json index 7ad1957be..c0b5dc09f 100644 --- a/package.json +++ b/package.json @@ -92,7 +92,7 @@ "react-player": "^2.13.0", "react-query": "^3.39.3", "react-redux": "8.0.5", - "react-router-dom": "6.4.4", + "react-router-dom": "6.16.0", "redux": "4.2.1", "redux-saga": "1.2.1", "reselect": "4.1.7", From 8ae21b338394db5f778daf57024f091122b6dc5d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Sep 2023 23:14:11 +0300 Subject: [PATCH 039/243] build(deps): bump @scure/bip39 from 1.1.0 to 1.2.1 (#796) Bumps [@scure/bip39](https://github.com/paulmillr/scure-bip39) from 1.1.0 to 1.2.1. - [Release notes](https://github.com/paulmillr/scure-bip39/releases) - [Commits](https://github.com/paulmillr/scure-bip39/compare/1.1.0...1.2.1) --- updated-dependencies: - dependency-name: "@scure/bip39" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Vynnyk Dmytro --- package-lock.json | 69 +++++++++++++++++++++-------------------------- package.json | 2 +- 2 files changed, 31 insertions(+), 40 deletions(-) diff --git a/package-lock.json b/package-lock.json index e169e4992..19c86fc9b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,7 @@ "@lapo/asn1js": "1.2.4", "@make-software/ces-js-parser": "1.3.2", "@scure/bip32": "1.1.1", - "@scure/bip39": "1.1.0", + "@scure/bip39": "1.2.1", "@types/argon2-browser": "1.18.1", "@types/webextension-polyfill": "0.9.2", "base64-loader": "1.0.0", @@ -5367,18 +5367,26 @@ } }, "node_modules/@scure/bip39": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.0.tgz", - "integrity": "sha512-pwrPOS16VeTKg98dYXQyIjJEcWfz7/1YJIwxUEPFfQPtc86Ym/1sVgQ2RLoD43AazMk2l/unK4ITySSpW2+82w==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.1.tgz", + "integrity": "sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==", "dependencies": { - "@noble/hashes": "~1.1.1", + "@noble/hashes": "~1.3.0", "@scure/base": "~1.1.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip39/node_modules/@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, "node_modules/@sinclair/typebox": { @@ -9594,21 +9602,6 @@ "@scure/base": "~1.1.0" } }, - "node_modules/casper-js-sdk/node_modules/@scure/bip39": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.0.tgz", - "integrity": "sha512-SX/uKq52cuxm4YFXWFaVByaSHJh2w3BnokVSeUJVCv6K7WulT9u2BuNRBhuFl8vAuYnzx9bEu9WgpcNYTrYieg==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "@noble/hashes": "~1.3.0", - "@scure/base": "~1.1.0" - } - }, "node_modules/casper-js-sdk/node_modules/node-fetch": { "version": "2.6.11", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.11.tgz", @@ -32302,12 +32295,19 @@ } }, "@scure/bip39": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.0.tgz", - "integrity": "sha512-pwrPOS16VeTKg98dYXQyIjJEcWfz7/1YJIwxUEPFfQPtc86Ym/1sVgQ2RLoD43AazMk2l/unK4ITySSpW2+82w==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.1.tgz", + "integrity": "sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==", "requires": { - "@noble/hashes": "~1.1.1", + "@noble/hashes": "~1.3.0", "@scure/base": "~1.1.0" + }, + "dependencies": { + "@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==" + } } }, "@sinclair/typebox": { @@ -35706,15 +35706,6 @@ "@scure/base": "~1.1.0" } }, - "@scure/bip39": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.0.tgz", - "integrity": "sha512-SX/uKq52cuxm4YFXWFaVByaSHJh2w3BnokVSeUJVCv6K7WulT9u2BuNRBhuFl8vAuYnzx9bEu9WgpcNYTrYieg==", - "requires": { - "@noble/hashes": "~1.3.0", - "@scure/base": "~1.1.0" - } - }, "node-fetch": { "version": "2.6.11", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.11.tgz", diff --git a/package.json b/package.json index c0b5dc09f..a8964296f 100644 --- a/package.json +++ b/package.json @@ -62,7 +62,7 @@ "@lapo/asn1js": "1.2.4", "@make-software/ces-js-parser": "1.3.2", "@scure/bip32": "1.1.1", - "@scure/bip39": "1.1.0", + "@scure/bip39": "1.2.1", "@types/argon2-browser": "1.18.1", "@types/webextension-polyfill": "0.9.2", "base64-loader": "1.0.0", From 538904f11dbba3e1528bb1f1b1bf2ab6c63c6236 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Sep 2023 23:14:42 +0300 Subject: [PATCH 040/243] build(deps-dev): bump electron from 25.8.0 to 25.8.1 (#798) Bumps [electron](https://github.com/electron/electron) from 25.8.0 to 25.8.1. - [Release notes](https://github.com/electron/electron/releases) - [Changelog](https://github.com/electron/electron/blob/main/docs/breaking-changes.md) - [Commits](https://github.com/electron/electron/compare/v25.8.0...v25.8.1) --- updated-dependencies: - dependency-name: electron dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Vynnyk Dmytro --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 19c86fc9b..fb69352b8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12252,9 +12252,9 @@ "dev": true }, "node_modules/electron": { - "version": "25.8.0", - "resolved": "https://registry.npmjs.org/electron/-/electron-25.8.0.tgz", - "integrity": "sha512-T3kC1a/3ntSaYMCVVfUUc9v7myPzi6J2GP0Ad/CyfWKDPp054dGyKxb2EEjKnxQQ7wfjsT1JTEdBG04x6ekVBw==", + "version": "25.8.1", + "resolved": "https://registry.npmjs.org/electron/-/electron-25.8.1.tgz", + "integrity": "sha512-GtcP1nMrROZfFg0+mhyj1hamrHvukfF6of2B/pcWxmWkd5FVY1NJib0tlhiorFZRzQN5Z+APLPr7aMolt7i2AQ==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -37713,9 +37713,9 @@ "dev": true }, "electron": { - "version": "25.8.0", - "resolved": "https://registry.npmjs.org/electron/-/electron-25.8.0.tgz", - "integrity": "sha512-T3kC1a/3ntSaYMCVVfUUc9v7myPzi6J2GP0Ad/CyfWKDPp054dGyKxb2EEjKnxQQ7wfjsT1JTEdBG04x6ekVBw==", + "version": "25.8.1", + "resolved": "https://registry.npmjs.org/electron/-/electron-25.8.1.tgz", + "integrity": "sha512-GtcP1nMrROZfFg0+mhyj1hamrHvukfF6of2B/pcWxmWkd5FVY1NJib0tlhiorFZRzQN5Z+APLPr7aMolt7i2AQ==", "dev": true, "requires": { "@electron/get": "^2.0.0", From 6897362e3f07d3f5886d4b8ed7e0c66e06e507ea Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 22 Sep 2023 13:54:47 +0300 Subject: [PATCH 041/243] build(deps-dev): bump lint-staged from 13.0.4 to 14.0.1 (#800) Bumps [lint-staged](https://github.com/okonet/lint-staged) from 13.0.4 to 14.0.1. - [Release notes](https://github.com/okonet/lint-staged/releases) - [Changelog](https://github.com/okonet/lint-staged/blob/master/CHANGELOG.md) - [Commits](https://github.com/okonet/lint-staged/compare/v13.0.4...v14.0.1) --- updated-dependencies: - dependency-name: lint-staged dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 677 +++++++++++++++++++++------------------------- package.json | 2 +- 2 files changed, 303 insertions(+), 376 deletions(-) diff --git a/package-lock.json b/package-lock.json index fb69352b8..5588a0e7d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -102,7 +102,7 @@ "i18next-conv": "14.0.0", "jest": "29.3.1", "jest-environment-jsdom": "29.3.1", - "lint-staged": "13.0.4", + "lint-staged": "14.0.1", "markdownlint": "0.26.2", "markdownlint-cli": "0.32.2", "prettier": "3.0.3", @@ -7866,6 +7866,7 @@ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, + "optional": true, "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -8237,15 +8238,6 @@ "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==", "dev": true }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/async-retry": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", @@ -10003,6 +9995,7 @@ "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true, + "optional": true, "engines": { "node": ">=6" } @@ -10020,15 +10013,18 @@ } }, "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", + "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", "dev": true, "dependencies": { - "restore-cursor": "^3.1.0" + "restore-cursor": "^4.0.0" }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/cli-truncate": { @@ -19619,9 +19615,9 @@ "dev": true }, "node_modules/lilconfig": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", - "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", "dev": true, "engines": { "node": ">=10" @@ -19649,53 +19645,62 @@ } }, "node_modules/lint-staged": { - "version": "13.0.4", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-13.0.4.tgz", - "integrity": "sha512-HxlHCXoYRsq9QCby5wFozmZW00hMs/9e3l+/dz6Qr8Kle4UH0kJTdABAbqhzG+3pcG6QjL9kz7NgGBfph+a5dw==", + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-14.0.1.tgz", + "integrity": "sha512-Mw0cL6HXnHN1ag0mN/Dg4g6sr8uf8sn98w2Oc1ECtFto9tvRF7nkXGJRbx8gPlHyoR0pLyBr2lQHbWwmUHe1Sw==", "dev": true, "dependencies": { - "cli-truncate": "^3.1.0", - "colorette": "^2.0.19", - "commander": "^9.4.1", - "debug": "^4.3.4", - "execa": "^6.1.0", - "lilconfig": "2.0.6", - "listr2": "^5.0.5", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "object-inspect": "^1.12.2", - "pidtree": "^0.6.0", - "string-argv": "^0.3.1", - "yaml": "^2.1.3" + "chalk": "5.3.0", + "commander": "11.0.0", + "debug": "4.3.4", + "execa": "7.2.0", + "lilconfig": "2.1.0", + "listr2": "6.6.1", + "micromatch": "4.0.5", + "pidtree": "0.6.0", + "string-argv": "0.3.2", + "yaml": "2.3.1" }, "bin": { "lint-staged": "bin/lint-staged.js" }, "engines": { - "node": "^14.13.1 || >=16.0.0" + "node": "^16.14.0 || >=18.0.0" }, "funding": { "url": "https://opencollective.com/lint-staged" } }, + "node_modules/lint-staged/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/lint-staged/node_modules/commander": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz", - "integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.0.0.tgz", + "integrity": "sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==", "dev": true, "engines": { - "node": "^12.20.0 || >=14" + "node": ">=16" } }, "node_modules/lint-staged/node_modules/execa": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz", - "integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", + "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", "dev": true, "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.1", - "human-signals": "^3.0.1", + "human-signals": "^4.3.0", "is-stream": "^3.0.0", "merge-stream": "^2.0.0", "npm-run-path": "^5.1.0", @@ -19704,7 +19709,7 @@ "strip-final-newline": "^3.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": "^14.18.0 || ^16.14.0 || >=18.0.0" }, "funding": { "url": "https://github.com/sindresorhus/execa?sponsor=1" @@ -19723,12 +19728,12 @@ } }, "node_modules/lint-staged/node_modules/human-signals": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz", - "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", + "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", "dev": true, "engines": { - "node": ">=12.20.0" + "node": ">=14.18.0" } }, "node_modules/lint-staged/node_modules/is-stream": { @@ -19810,9 +19815,9 @@ } }, "node_modules/lint-staged/node_modules/yaml": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.1.3.tgz", - "integrity": "sha512-AacA8nRULjKMX2DvWvOAdBZMOfQlypSFkjcOcu9FalllIDJ1kvlREzcdIZmidQUqqeMv7jorHjq2HlLv/+c2lg==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz", + "integrity": "sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==", "dev": true, "engines": { "node": ">= 14" @@ -19825,22 +19830,20 @@ "dev": true }, "node_modules/listr2": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-5.0.6.tgz", - "integrity": "sha512-u60KxKBy1BR2uLJNTWNptzWQ1ob/gjMzIJPZffAENzpZqbMZ/5PrXXOomDcevIS/+IB7s1mmCEtSlT2qHWMqag==", + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-6.6.1.tgz", + "integrity": "sha512-+rAXGHh0fkEWdXBmX+L6mmfmXmXvDGEKzkjxO+8mP3+nI/r/CWznVBvsibXdxda9Zz0OW2e2ikphN3OwCT/jSg==", "dev": true, "dependencies": { - "cli-truncate": "^2.1.0", - "colorette": "^2.0.19", - "log-update": "^4.0.0", - "p-map": "^4.0.0", + "cli-truncate": "^3.1.0", + "colorette": "^2.0.20", + "eventemitter3": "^5.0.1", + "log-update": "^5.0.1", "rfdc": "^1.3.0", - "rxjs": "^7.5.7", - "through": "^2.3.8", - "wrap-ansi": "^7.0.0" + "wrap-ansi": "^8.1.0" }, "engines": { - "node": "^14.13.1 || >=16.0.0" + "node": ">=16.0.0" }, "peerDependencies": { "enquirer": ">= 2.3.0 < 3" @@ -19851,96 +19854,72 @@ } } }, - "node_modules/listr2/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/listr2/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/listr2/node_modules/cli-truncate": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", - "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "node_modules/listr2/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, - "dependencies": { - "slice-ansi": "^3.0.0", - "string-width": "^4.2.0" - }, "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/listr2/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/listr2/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "node_modules/listr2/node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", "dev": true }, - "node_modules/listr2/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "node_modules/listr2/node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", "dev": true }, - "node_modules/listr2/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/listr2/node_modules/slice-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", - "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "node_modules/listr2/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" + "ansi-regex": "^6.0.1" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/listr2/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/listr2/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, "node_modules/load-script": { @@ -20094,114 +20073,105 @@ "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=" }, "node_modules/log-update": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", - "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-5.0.1.tgz", + "integrity": "sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==", "dev": true, "dependencies": { - "ansi-escapes": "^4.3.0", - "cli-cursor": "^3.1.0", - "slice-ansi": "^4.0.0", - "wrap-ansi": "^6.2.0" + "ansi-escapes": "^5.0.0", + "cli-cursor": "^4.0.0", + "slice-ansi": "^5.0.0", + "strip-ansi": "^7.0.1", + "wrap-ansi": "^8.0.1" }, "engines": { - "node": ">=10" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/log-update/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/log-update/node_modules/ansi-escapes": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-5.0.0.tgz", + "integrity": "sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "type-fest": "^1.0.2" }, "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/log-update/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/log-update/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, "engines": { - "node": ">=7.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/log-update/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/log-update/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/log-update/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/log-update/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/log-update/node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "node_modules/log-update/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" + "ansi-regex": "^6.0.1" }, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/log-update/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/log-update/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/log-update/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, "node_modules/loglevel": { @@ -21834,6 +21804,7 @@ "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "dev": true, + "optional": true, "dependencies": { "aggregate-error": "^3.0.0" }, @@ -24007,16 +23978,19 @@ } }, "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", + "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", "dev": true, "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/retry": { @@ -24798,9 +24772,9 @@ } }, "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.1.0.tgz", - "integrity": "sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, "engines": { "node": ">=12" @@ -25342,9 +25316,9 @@ ] }, "node_modules/string-argv": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", - "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", + "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", "dev": true, "engines": { "node": ">=0.6.19" @@ -34379,6 +34353,7 @@ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, + "optional": true, "requires": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -34667,12 +34642,6 @@ "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==", "dev": true }, - "astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true - }, "async-retry": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", @@ -35995,7 +35964,8 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true + "dev": true, + "optional": true }, "cli-boxes": { "version": "3.0.0", @@ -36004,12 +35974,12 @@ "dev": true }, "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", + "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", "dev": true, "requires": { - "restore-cursor": "^3.1.0" + "restore-cursor": "^4.0.0" } }, "cli-truncate": { @@ -43264,9 +43234,9 @@ } }, "lilconfig": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", - "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", "dev": true }, "lines-and-columns": { @@ -43291,41 +43261,44 @@ } }, "lint-staged": { - "version": "13.0.4", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-13.0.4.tgz", - "integrity": "sha512-HxlHCXoYRsq9QCby5wFozmZW00hMs/9e3l+/dz6Qr8Kle4UH0kJTdABAbqhzG+3pcG6QjL9kz7NgGBfph+a5dw==", + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-14.0.1.tgz", + "integrity": "sha512-Mw0cL6HXnHN1ag0mN/Dg4g6sr8uf8sn98w2Oc1ECtFto9tvRF7nkXGJRbx8gPlHyoR0pLyBr2lQHbWwmUHe1Sw==", "dev": true, "requires": { - "cli-truncate": "^3.1.0", - "colorette": "^2.0.19", - "commander": "^9.4.1", - "debug": "^4.3.4", - "execa": "^6.1.0", - "lilconfig": "2.0.6", - "listr2": "^5.0.5", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "object-inspect": "^1.12.2", - "pidtree": "^0.6.0", - "string-argv": "^0.3.1", - "yaml": "^2.1.3" + "chalk": "5.3.0", + "commander": "11.0.0", + "debug": "4.3.4", + "execa": "7.2.0", + "lilconfig": "2.1.0", + "listr2": "6.6.1", + "micromatch": "4.0.5", + "pidtree": "0.6.0", + "string-argv": "0.3.2", + "yaml": "2.3.1" }, "dependencies": { + "chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true + }, "commander": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz", - "integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.0.0.tgz", + "integrity": "sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==", "dev": true }, "execa": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz", - "integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", + "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", "dev": true, "requires": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.1", - "human-signals": "^3.0.1", + "human-signals": "^4.3.0", "is-stream": "^3.0.0", "merge-stream": "^2.0.0", "npm-run-path": "^5.1.0", @@ -43341,9 +43314,9 @@ "dev": true }, "human-signals": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz", - "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", + "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", "dev": true }, "is-stream": { @@ -43389,9 +43362,9 @@ "dev": true }, "yaml": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.1.3.tgz", - "integrity": "sha512-AacA8nRULjKMX2DvWvOAdBZMOfQlypSFkjcOcu9FalllIDJ1kvlREzcdIZmidQUqqeMv7jorHjq2HlLv/+c2lg==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz", + "integrity": "sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==", "dev": true } } @@ -43403,87 +43376,61 @@ "dev": true }, "listr2": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-5.0.6.tgz", - "integrity": "sha512-u60KxKBy1BR2uLJNTWNptzWQ1ob/gjMzIJPZffAENzpZqbMZ/5PrXXOomDcevIS/+IB7s1mmCEtSlT2qHWMqag==", + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-6.6.1.tgz", + "integrity": "sha512-+rAXGHh0fkEWdXBmX+L6mmfmXmXvDGEKzkjxO+8mP3+nI/r/CWznVBvsibXdxda9Zz0OW2e2ikphN3OwCT/jSg==", "dev": true, "requires": { - "cli-truncate": "^2.1.0", - "colorette": "^2.0.19", - "log-update": "^4.0.0", - "p-map": "^4.0.0", + "cli-truncate": "^3.1.0", + "colorette": "^2.0.20", + "eventemitter3": "^5.0.1", + "log-update": "^5.0.1", "rfdc": "^1.3.0", - "rxjs": "^7.5.7", - "through": "^2.3.8", - "wrap-ansi": "^7.0.0" + "wrap-ansi": "^8.1.0" }, "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "cli-truncate": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", - "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", - "dev": true, - "requires": { - "slice-ansi": "^3.0.0", - "string-width": "^4.2.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", "dev": true }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", "dev": true }, - "slice-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", - "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" + "ansi-regex": "^6.0.1" } }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" } } } @@ -43629,84 +43576,63 @@ "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=" }, "log-update": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", - "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-5.0.1.tgz", + "integrity": "sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==", "dev": true, "requires": { - "ansi-escapes": "^4.3.0", - "cli-cursor": "^3.1.0", - "slice-ansi": "^4.0.0", - "wrap-ansi": "^6.2.0" + "ansi-escapes": "^5.0.0", + "cli-cursor": "^4.0.0", + "slice-ansi": "^5.0.0", + "strip-ansi": "^7.0.1", + "wrap-ansi": "^8.0.1" }, "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "ansi-escapes": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-5.0.0.tgz", + "integrity": "sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==", "dev": true, "requires": { - "color-name": "~1.1.4" + "type-fest": "^1.0.2" } }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true }, - "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" + "ansi-regex": "^6.0.1" } }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } + "type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "dev": true }, "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" } } } @@ -44972,6 +44898,7 @@ "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "dev": true, + "optional": true, "requires": { "aggregate-error": "^3.0.0" } @@ -46591,9 +46518,9 @@ } }, "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", + "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", "dev": true, "requires": { "onetime": "^5.1.0", @@ -47232,9 +47159,9 @@ }, "dependencies": { "ansi-styles": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.1.0.tgz", - "integrity": "sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true } } @@ -47668,9 +47595,9 @@ } }, "string-argv": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", - "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", + "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", "dev": true }, "string-length": { diff --git a/package.json b/package.json index a8964296f..9ef3c709f 100644 --- a/package.json +++ b/package.json @@ -150,7 +150,7 @@ "i18next-conv": "14.0.0", "jest": "29.3.1", "jest-environment-jsdom": "29.3.1", - "lint-staged": "13.0.4", + "lint-staged": "14.0.1", "markdownlint": "0.26.2", "markdownlint-cli": "0.32.2", "prettier": "3.0.3", From fe0abdaa99f803b7e03ba488160f764dbc179cd2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 22 Sep 2023 13:55:20 +0300 Subject: [PATCH 042/243] build(deps-dev): bump tsconfig-paths-webpack-plugin from 4.0.0 to 4.1.0 (#801) Bumps [tsconfig-paths-webpack-plugin](https://github.com/dividab/tsconfig-paths-webpack-plugin) from 4.0.0 to 4.1.0. - [Changelog](https://github.com/dividab/tsconfig-paths-webpack-plugin/blob/master/CHANGELOG.md) - [Commits](https://github.com/dividab/tsconfig-paths-webpack-plugin/compare/v4.0.0...v4.1.0) --- updated-dependencies: - dependency-name: tsconfig-paths-webpack-plugin dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Vynnyk Dmytro --- package-lock.json | 34 +++++++++++++++++----------------- package.json | 2 +- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5588a0e7d..accb33425 100644 --- a/package-lock.json +++ b/package-lock.json @@ -114,7 +114,7 @@ "ts-jest": "29.0.3", "ts-loader": "9.4.2", "ts-node": "10.9.1", - "tsconfig-paths-webpack-plugin": "^4.0.0", + "tsconfig-paths-webpack-plugin": "^4.1.0", "typescript": "4.9.3", "url-loader": "^4.1.1", "web-ext": "7.6.2", @@ -26348,14 +26348,14 @@ } }, "node_modules/tsconfig-paths-webpack-plugin": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.0.0.tgz", - "integrity": "sha512-fw/7265mIWukrSHd0i+wSwx64kYUSAKPfxRDksjKIYTxSAp9W9/xcZVBF4Kl0eqQd5eBpAQ/oQrc5RyM/0c1GQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.1.0.tgz", + "integrity": "sha512-xWFISjviPydmtmgeUAuXp4N1fky+VCtfhOkDUFIv5ea7p4wuTomI4QTrXvFBX2S4jZsmyTSrStQl+E+4w+RzxA==", "dev": true, "dependencies": { "chalk": "^4.1.0", "enhanced-resolve": "^5.7.0", - "tsconfig-paths": "^4.0.0" + "tsconfig-paths": "^4.1.2" }, "engines": { "node": ">=10.13.0" @@ -26441,12 +26441,12 @@ } }, "node_modules/tsconfig-paths-webpack-plugin/node_modules/tsconfig-paths": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.1.0.tgz", - "integrity": "sha512-AHx4Euop/dXFC+Vx589alFba8QItjF+8hf8LtmuiCwHyI4rHXQtOOENaM8kvYf5fR0dRChy3wzWIZ9WbB7FWow==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", "dev": true, "dependencies": { - "json5": "^2.2.1", + "json5": "^2.2.2", "minimist": "^1.2.6", "strip-bom": "^3.0.0" }, @@ -48370,14 +48370,14 @@ } }, "tsconfig-paths-webpack-plugin": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.0.0.tgz", - "integrity": "sha512-fw/7265mIWukrSHd0i+wSwx64kYUSAKPfxRDksjKIYTxSAp9W9/xcZVBF4Kl0eqQd5eBpAQ/oQrc5RyM/0c1GQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.1.0.tgz", + "integrity": "sha512-xWFISjviPydmtmgeUAuXp4N1fky+VCtfhOkDUFIv5ea7p4wuTomI4QTrXvFBX2S4jZsmyTSrStQl+E+4w+RzxA==", "dev": true, "requires": { "chalk": "^4.1.0", "enhanced-resolve": "^5.7.0", - "tsconfig-paths": "^4.0.0" + "tsconfig-paths": "^4.1.2" }, "dependencies": { "ansi-styles": { @@ -48436,12 +48436,12 @@ } }, "tsconfig-paths": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.1.0.tgz", - "integrity": "sha512-AHx4Euop/dXFC+Vx589alFba8QItjF+8hf8LtmuiCwHyI4rHXQtOOENaM8kvYf5fR0dRChy3wzWIZ9WbB7FWow==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", "dev": true, "requires": { - "json5": "^2.2.1", + "json5": "^2.2.2", "minimist": "^1.2.6", "strip-bom": "^3.0.0" } diff --git a/package.json b/package.json index 9ef3c709f..684a69838 100644 --- a/package.json +++ b/package.json @@ -162,7 +162,7 @@ "ts-jest": "29.0.3", "ts-loader": "9.4.2", "ts-node": "10.9.1", - "tsconfig-paths-webpack-plugin": "^4.0.0", + "tsconfig-paths-webpack-plugin": "^4.1.0", "typescript": "4.9.3", "url-loader": "^4.1.1", "web-ext": "7.6.2", From bac8e061f2d55d57947a953214cbcc1ef534d016 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 22 Sep 2023 13:56:16 +0300 Subject: [PATCH 043/243] build(deps-dev): bump @types/facepaint from 1.2.2 to 1.2.3 (#803) Bumps [@types/facepaint](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/facepaint) from 1.2.2 to 1.2.3. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/facepaint) --- updated-dependencies: - dependency-name: "@types/facepaint" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Vynnyk Dmytro --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index accb33425..032aa0e70 100644 --- a/package-lock.json +++ b/package-lock.json @@ -66,7 +66,7 @@ "@types/big.js": "^6.1.6", "@types/chrome": "0.0.246", "@types/expect": "^24.3.0", - "@types/facepaint": "^1.2.2", + "@types/facepaint": "^1.2.3", "@types/jest": "29.2.3", "@types/lodash.throttle": "4.1.7", "@types/react": "^17.0.33", @@ -6181,9 +6181,9 @@ } }, "node_modules/@types/facepaint": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/facepaint/-/facepaint-1.2.2.tgz", - "integrity": "sha512-Xl9tAINsQL1s0TdXG5IiG75kZrxem5esbnKJF5gQgFel92OdS5zLtFYnbBw6fBruCMPYJQ9mK5pVmSsMl3Puug==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@types/facepaint/-/facepaint-1.2.3.tgz", + "integrity": "sha512-Im/T/LMrEMKySMuIhOovOGVdFLFP7wlrWWR9nl5laArHFQnik6xRfUWNr0khAQIGkqU8a/pTQPxycYnfwswCqw==", "dev": true }, "node_modules/@types/filesystem": { @@ -32990,9 +32990,9 @@ } }, "@types/facepaint": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/facepaint/-/facepaint-1.2.2.tgz", - "integrity": "sha512-Xl9tAINsQL1s0TdXG5IiG75kZrxem5esbnKJF5gQgFel92OdS5zLtFYnbBw6fBruCMPYJQ9mK5pVmSsMl3Puug==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@types/facepaint/-/facepaint-1.2.3.tgz", + "integrity": "sha512-Im/T/LMrEMKySMuIhOovOGVdFLFP7wlrWWR9nl5laArHFQnik6xRfUWNr0khAQIGkqU8a/pTQPxycYnfwswCqw==", "dev": true }, "@types/filesystem": { diff --git a/package.json b/package.json index 684a69838..a64f88259 100644 --- a/package.json +++ b/package.json @@ -114,7 +114,7 @@ "@types/big.js": "^6.1.6", "@types/chrome": "0.0.246", "@types/expect": "^24.3.0", - "@types/facepaint": "^1.2.2", + "@types/facepaint": "^1.2.3", "@types/jest": "29.2.3", "@types/lodash.throttle": "4.1.7", "@types/react": "^17.0.33", From 01d382fea9538e3733cfda43c050dbacc45b8353 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 22 Sep 2023 13:56:48 +0300 Subject: [PATCH 044/243] build(deps-dev): bump webpack-cli from 5.0.0 to 5.1.4 (#804) Bumps [webpack-cli](https://github.com/webpack/webpack-cli) from 5.0.0 to 5.1.4. - [Release notes](https://github.com/webpack/webpack-cli/releases) - [Changelog](https://github.com/webpack/webpack-cli/blob/master/CHANGELOG.md) - [Commits](https://github.com/webpack/webpack-cli/compare/webpack-cli@5.0.0...webpack-cli@5.1.4) --- updated-dependencies: - dependency-name: webpack-cli dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Vynnyk Dmytro --- package-lock.json | 80 +++++++++++++++++++++++------------------------ package.json | 2 +- 2 files changed, 41 insertions(+), 41 deletions(-) diff --git a/package-lock.json b/package-lock.json index 032aa0e70..3bb7606c4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -120,7 +120,7 @@ "web-ext": "7.6.2", "webextension-polyfill": "0.10.0", "webpack": "5.76.0", - "webpack-cli": "5.0.0", + "webpack-cli": "5.1.4", "webpack-dev-server": "^4.15.1", "xcode-build-webpack-plugin": "^1.0.2" } @@ -7133,9 +7133,9 @@ } }, "node_modules/@webpack-cli/configtest": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.0.0.tgz", - "integrity": "sha512-war4OU8NGjBqU3DP3bx6ciODXIh7dSXcpQq+P4K2Tqyd8L5OjZ7COx9QXx/QdCIwL2qoX09Wr4Cwf7uS4qdEng==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", + "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", "dev": true, "engines": { "node": ">=14.15.0" @@ -7146,9 +7146,9 @@ } }, "node_modules/@webpack-cli/info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.0.tgz", - "integrity": "sha512-NNxDgbo4VOkNhOlTgY0Elhz3vKpOJq4/PKeKg7r8cmYM+GQA9vDofLYyup8jS6EpUvhNmR30cHTCEIyvXpskwA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", + "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", "dev": true, "engines": { "node": ">=14.15.0" @@ -7159,9 +7159,9 @@ } }, "node_modules/@webpack-cli/serve": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.0.tgz", - "integrity": "sha512-Rumq5mHvGXamnOh3O8yLk1sjx8dB30qF1OeR6VC00DIR6SLJ4bwwUGKC4pE7qBFoQyyh0H9sAg3fikYgAqVR0w==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", + "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", "dev": true, "engines": { "node": ">=14.15.0" @@ -27603,17 +27603,17 @@ } }, "node_modules/webpack-cli": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.0.0.tgz", - "integrity": "sha512-AACDTo20yG+xn6HPW5xjbn2Be4KUzQPebWXsDMHwPPyKh9OnTOJgZN2Nc+g/FZKV3ObRTYsGvibAvc+5jAUrVA==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", + "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", "dev": true, "dependencies": { "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^2.0.0", - "@webpack-cli/info": "^2.0.0", - "@webpack-cli/serve": "^2.0.0", + "@webpack-cli/configtest": "^2.1.1", + "@webpack-cli/info": "^2.0.2", + "@webpack-cli/serve": "^2.0.5", "colorette": "^2.0.14", - "commander": "^9.4.1", + "commander": "^10.0.1", "cross-spawn": "^7.0.3", "envinfo": "^7.7.3", "fastest-levenshtein": "^1.0.12", @@ -27648,12 +27648,12 @@ } }, "node_modules/webpack-cli/node_modules/commander": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz", - "integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", "dev": true, "engines": { - "node": "^12.20.0 || >=14" + "node": ">=14" } }, "node_modules/webpack-cli/node_modules/interpret": { @@ -33802,23 +33802,23 @@ } }, "@webpack-cli/configtest": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.0.0.tgz", - "integrity": "sha512-war4OU8NGjBqU3DP3bx6ciODXIh7dSXcpQq+P4K2Tqyd8L5OjZ7COx9QXx/QdCIwL2qoX09Wr4Cwf7uS4qdEng==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", + "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", "dev": true, "requires": {} }, "@webpack-cli/info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.0.tgz", - "integrity": "sha512-NNxDgbo4VOkNhOlTgY0Elhz3vKpOJq4/PKeKg7r8cmYM+GQA9vDofLYyup8jS6EpUvhNmR30cHTCEIyvXpskwA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", + "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", "dev": true, "requires": {} }, "@webpack-cli/serve": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.0.tgz", - "integrity": "sha512-Rumq5mHvGXamnOh3O8yLk1sjx8dB30qF1OeR6VC00DIR6SLJ4bwwUGKC4pE7qBFoQyyh0H9sAg3fikYgAqVR0w==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", + "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", "dev": true, "requires": {} }, @@ -49364,17 +49364,17 @@ } }, "webpack-cli": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.0.0.tgz", - "integrity": "sha512-AACDTo20yG+xn6HPW5xjbn2Be4KUzQPebWXsDMHwPPyKh9OnTOJgZN2Nc+g/FZKV3ObRTYsGvibAvc+5jAUrVA==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", + "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", "dev": true, "requires": { "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^2.0.0", - "@webpack-cli/info": "^2.0.0", - "@webpack-cli/serve": "^2.0.0", + "@webpack-cli/configtest": "^2.1.1", + "@webpack-cli/info": "^2.0.2", + "@webpack-cli/serve": "^2.0.5", "colorette": "^2.0.14", - "commander": "^9.4.1", + "commander": "^10.0.1", "cross-spawn": "^7.0.3", "envinfo": "^7.7.3", "fastest-levenshtein": "^1.0.12", @@ -49385,9 +49385,9 @@ }, "dependencies": { "commander": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz", - "integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", "dev": true }, "interpret": { diff --git a/package.json b/package.json index a64f88259..7353297da 100644 --- a/package.json +++ b/package.json @@ -168,7 +168,7 @@ "web-ext": "7.6.2", "webextension-polyfill": "0.10.0", "webpack": "5.76.0", - "webpack-cli": "5.0.0", + "webpack-cli": "5.1.4", "webpack-dev-server": "^4.15.1", "xcode-build-webpack-plugin": "^1.0.2" } From a5e8f9cc8e11c3e12d47d6990084c1ae4e706408 Mon Sep 17 00:00:00 2001 From: Ostap Piatkovskyi <44294945+ost-ptk@users.noreply.github.com> Date: Mon, 25 Sep 2023 17:03:02 +0300 Subject: [PATCH 045/243] removed input type from the transaction fee fields (#807) Co-authored-by: ost-ptk Co-authored-by: Vynnyk Dmytro --- src/apps/popup/pages/transfer-nft/content.tsx | 1 - src/apps/popup/pages/transfer/amount-step.tsx | 1 - 2 files changed, 2 deletions(-) diff --git a/src/apps/popup/pages/transfer-nft/content.tsx b/src/apps/popup/pages/transfer-nft/content.tsx index 9a4bdb101..4252328e5 100644 --- a/src/apps/popup/pages/transfer-nft/content.tsx +++ b/src/apps/popup/pages/transfer-nft/content.tsx @@ -142,7 +142,6 @@ export const TransferNftContent = ({ { Date: Mon, 25 Sep 2023 17:04:03 +0300 Subject: [PATCH 046/243] changed method of creating Keys for signing (#808) Co-authored-by: ost-ptk Co-authored-by: Vynnyk Dmytro --- src/apps/popup/pages/transfer-nft/index.tsx | 10 ++++------ src/apps/popup/pages/transfer-nft/utils.ts | 12 ------------ 2 files changed, 4 insertions(+), 18 deletions(-) diff --git a/src/apps/popup/pages/transfer-nft/index.tsx b/src/apps/popup/pages/transfer-nft/index.tsx index 58c97037b..3cd70ec3c 100644 --- a/src/apps/popup/pages/transfer-nft/index.tsx +++ b/src/apps/popup/pages/transfer-nft/index.tsx @@ -2,7 +2,6 @@ import React, { useEffect, useMemo, useState } from 'react'; import { useSelector } from 'react-redux'; import { useParams } from 'react-router-dom'; import { Trans, useTranslation } from 'react-i18next'; -import { Keys } from 'casper-js-sdk'; import { FooterButtonsContainer, @@ -27,13 +26,13 @@ import { RouterPath, useTypedNavigate } from '@popup/router'; import { getDefaultPaymentAmountBasedOnNftTokenStandard, getRuntimeArgs, - getSignatureAlgorithm, signNftDeploy } from '@popup/pages/transfer-nft/utils'; import { dispatchToMainStore } from '@background/redux/utils'; import { recipientPublicKeyAdded } from '@background/redux/recent-recipient-public-keys/actions'; import { dispatchFetchExtendedDeploysInfo } from '@libs/services/account-activity-service'; import { accountPendingTransactionsChanged } from '@background/redux/account-info/actions'; +import { createAsymmetricKey } from '@libs/crypto/create-asymmetric-key'; export const TransferNftPage = () => { const [showSuccessScreen, setShowSuccessScreen] = useState(false); @@ -97,10 +96,9 @@ export const TransferNftPage = () => { if (activeAccount) { const { recipientPublicKey } = recipientForm.getValues(); - const rawPublicKey = getRawPublicKey(activeAccount.publicKey); - const KEYS = Keys.getKeysFromHexPrivKey( - activeAccount.secretKey, - getSignatureAlgorithm(rawPublicKey) + const KEYS = createAsymmetricKey( + activeAccount.publicKey, + activeAccount.secretKey ); const args = { diff --git a/src/apps/popup/pages/transfer-nft/utils.ts b/src/apps/popup/pages/transfer-nft/utils.ts index 591d2ac68..fdc830d4b 100644 --- a/src/apps/popup/pages/transfer-nft/utils.ts +++ b/src/apps/popup/pages/transfer-nft/utils.ts @@ -1,7 +1,6 @@ import { CLKeyParameters, CLPublicKey, - CLPublicKeyTag, CLValueBuilder, DeployUtil, Keys, @@ -31,17 +30,6 @@ export type TransferArgs = { source: CLKeyParameters; } & TokenArgs; -export const getSignatureAlgorithm = (rawPublicKey: CLPublicKey) => { - switch (rawPublicKey.tag) { - case CLPublicKeyTag.ED25519: - return Keys.SignatureAlgorithm.Ed25519; - case CLPublicKeyTag.SECP256K1: - return Keys.SignatureAlgorithm.Secp256K1; - default: - throw Error('Unknown Signature type.'); - } -}; - export const getDefaultPaymentAmountBasedOnNftTokenStandard = ( tokenStandard: NFTTokenStandard | '' ) => { From 3172029649a0e5d4d974a5dd854bf67762a61a03 Mon Sep 17 00:00:00 2001 From: Ostap Piatkovskyi <44294945+ost-ptk@users.noreply.github.com> Date: Mon, 25 Sep 2023 17:07:31 +0300 Subject: [PATCH 047/243] fix: fix scope of bugs (#809) * fixed issue with transfer NFT error after wallet unlocking and some improvements * fixed issue with empty NFT details page after wallet unlocking and some improvements * fixed issue with home screen scroll * possible fix for an issue with a gap above the sticky tabs container * fixed an issue with the scrollable Import account screen --------- Co-authored-by: ost-ptk Co-authored-by: Vynnyk Dmytro --- src/apps/popup/pages/home/index.tsx | 10 +++++++++- src/apps/popup/pages/nft-details/index.tsx | 8 +++++++- src/apps/popup/pages/token-details/index.tsx | 10 +++++++--- src/apps/popup/pages/transfer-nft/index.tsx | 16 +++++++++++----- src/apps/popup/pages/transfer-nft/utils.ts | 2 +- src/libs/layout/containers.ts | 4 ++-- .../layout/header/header-view-in-explorer.tsx | 19 ++++++++++++------- .../account-activity-service.ts | 8 +++++--- .../extended-deploys-service.ts | 17 +++++++++++------ .../services/account-info/account-info.ts | 7 ++++--- .../balance-service/balance-service.ts | 16 ++++++++++------ .../services/erc20-service/erc20-service.ts | 15 +++++++++------ src/libs/services/nft-service/nft-service.ts | 7 ++++--- src/libs/ui/components/tabs/tabs.tsx | 2 +- 14 files changed, 93 insertions(+), 48 deletions(-) diff --git a/src/apps/popup/pages/home/index.tsx b/src/apps/popup/pages/home/index.tsx index 2359cf928..41f41f56b 100644 --- a/src/apps/popup/pages/home/index.tsx +++ b/src/apps/popup/pages/home/index.tsx @@ -1,4 +1,4 @@ -import React, { useCallback } from 'react'; +import React, { useCallback, useEffect } from 'react'; import { Trans, useTranslation } from 'react-i18next'; import { useSelector } from 'react-redux'; import styled from 'styled-components'; @@ -96,6 +96,14 @@ export function HomePageContent() { } }, [activeAccount?.publicKey, network]); + useEffect(() => { + if (!state?.activeTabId) { + const container = document.querySelector('#ms-container'); + + container?.scrollTo(0, 0); + } + }, [state?.activeTabId]); + return ( {activeAccount && ( diff --git a/src/apps/popup/pages/nft-details/index.tsx b/src/apps/popup/pages/nft-details/index.tsx index 54bd7ad73..83aab8dcc 100644 --- a/src/apps/popup/pages/nft-details/index.tsx +++ b/src/apps/popup/pages/nft-details/index.tsx @@ -1,4 +1,4 @@ -import React, { useMemo } from 'react'; +import React, { useEffect, useMemo } from 'react'; import { useParams } from 'react-router-dom'; import { useSelector } from 'react-redux'; @@ -30,6 +30,12 @@ export const NftDetailsPage = () => { [contractPackageHash, nftTokes, tokenId] ); + useEffect(() => { + if (!nftToken) { + navigate(RouterPath.Home); + } + }, [navigate, nftToken]); + return ( ( diff --git a/src/apps/popup/pages/token-details/index.tsx b/src/apps/popup/pages/token-details/index.tsx index ac51084e0..8f6b77fb7 100644 --- a/src/apps/popup/pages/token-details/index.tsx +++ b/src/apps/popup/pages/token-details/index.tsx @@ -1,5 +1,6 @@ import React from 'react'; import { useParams } from 'react-router-dom'; +import { useSelector } from 'react-redux'; import { HeaderSubmenuBarNavLink, @@ -7,12 +8,12 @@ import { PopupHeader, PopupLayout } from '@libs/layout'; -import { useFetchErc20Tokens } from '@src/hooks'; +import { selectErc20Tokens } from '@background/redux/account-info/selectors'; import { TokenPageContent } from './content'; export const TokenDetailPage = () => { - const erc20Tokens = useFetchErc20Tokens(); + const erc20Tokens = useSelector(selectErc20Tokens); const { tokenName } = useParams(); return ( @@ -25,7 +26,10 @@ export const TokenDetailPage = () => { renderSubmenuBarItems={() => ( <> - + )} /> diff --git a/src/apps/popup/pages/transfer-nft/index.tsx b/src/apps/popup/pages/transfer-nft/index.tsx index 3cd70ec3c..2ebc6e7e4 100644 --- a/src/apps/popup/pages/transfer-nft/index.tsx +++ b/src/apps/popup/pages/transfer-nft/index.tsx @@ -39,25 +39,31 @@ export const TransferNftPage = () => { const [haveReverseOwnerLookUp, setHaveReverseOwnerLookUp] = useState(false); const { contractPackageHash, tokenId } = useParams(); - const nftTokes = useSelector(selectAccountNftTokens); + const nftTokens = useSelector(selectAccountNftTokens); const csprBalance = useSelector(selectAccountBalance); const activeAccount = useSelector(selectVaultActiveAccount); const { networkName, nodeUrl } = useSelector( selectApiConfigBasedOnActiveNetwork ); + const { t } = useTranslation(); + const navigate = useTypedNavigate(); + const nftToken = useMemo( () => - nftTokes?.find( + nftTokens?.find( token => token.token_id === tokenId && token.contract_package_hash === contractPackageHash ), - [contractPackageHash, nftTokes, tokenId] + [contractPackageHash, nftTokens, tokenId] ); - const { t } = useTranslation(); - const navigate = useTypedNavigate(); + useEffect(() => { + if (!nftToken) { + navigate(RouterPath.Home); + } + }, [navigate, nftToken]); useEffect(() => { if (nftToken?.contract_package?.metadata?.owner_reverse_lookup_mode) { diff --git a/src/apps/popup/pages/transfer-nft/utils.ts b/src/apps/popup/pages/transfer-nft/utils.ts index fdc830d4b..4af251554 100644 --- a/src/apps/popup/pages/transfer-nft/utils.ts +++ b/src/apps/popup/pages/transfer-nft/utils.ts @@ -39,7 +39,7 @@ export const getDefaultPaymentAmountBasedOnNftTokenStandard = ( case NFTTokenStandard.CEP78: return motesToCSPR(NFT_CEP78_PAYMENT_AMOUNT_AVERAGE_MOTES); default: - throw new Error('Unknown token standard.'); + return '0'; } }; diff --git a/src/libs/layout/containers.ts b/src/libs/layout/containers.ts index 8536bc3a9..084a178be 100644 --- a/src/libs/layout/containers.ts +++ b/src/libs/layout/containers.ts @@ -248,8 +248,8 @@ export const BreakWordContainer = styled.div` `; export const IllustrationContainer = styled.div` - margin-top: 24px; - margin-left: 16px; + padding-top: 24px; + padding-left: 16px; `; export const OnboardingIllustrationContainer = styled(IllustrationContainer)` diff --git a/src/libs/layout/header/header-view-in-explorer.tsx b/src/libs/layout/header/header-view-in-explorer.tsx index 49d090a47..1d86a6095 100644 --- a/src/libs/layout/header/header-view-in-explorer.tsx +++ b/src/libs/layout/header/header-view-in-explorer.tsx @@ -9,23 +9,25 @@ import { getBlockExplorerDeployUrl, getContractNftUrl } from '@src/constants'; -import { formatErc20TokenBalance } from '@popup/pages/home/components/tokens-list/utils'; -import { useCasperToken, useFetchErc20Tokens } from '@src/hooks'; +import { useCasperToken } from '@src/hooks'; import { selectApiConfigBasedOnActiveNetwork } from '@background/redux/settings/selectors'; import { selectVaultActiveAccount } from '@background/redux/vault/selectors'; +import { ContractPackageWithBalance } from '@libs/services/erc20-service'; interface HeaderViewInExplorerProps { tokenName?: string; deployHash?: string; nftTokenId?: string; contractHash?: string; + erc20Tokens?: ContractPackageWithBalance[]; } export function HeaderViewInExplorer({ tokenName, deployHash, nftTokenId, - contractHash + contractHash, + erc20Tokens }: HeaderViewInExplorerProps) { const [hrefToTokenOnCasperLive, setHrefToTokenOnCasperLive] = useState< string | undefined @@ -41,7 +43,6 @@ export function HeaderViewInExplorer({ const activeAccount = useSelector(selectVaultActiveAccount); const casperToken = useCasperToken(); - const erc20Tokens = useFetchErc20Tokens(); useEffect(() => { if (!tokenName && deployHash) { @@ -59,12 +60,16 @@ export function HeaderViewInExplorer({ } } else { // ERC-20 token case - const erc20TokensList = formatErc20TokenBalance(erc20Tokens); - const token = erc20TokensList?.find(token => token.id === tokenName); + const token = erc20Tokens?.find( + token => token.contract_package_hash === tokenName + ); if (token) { setHrefToTokenOnCasperLive( - getBlockExplorerContractUrl(casperLiveUrl, token.id) + getBlockExplorerContractUrl( + casperLiveUrl, + token.contract_package_hash + ) ); } } diff --git a/src/libs/services/account-activity-service/account-activity-service.ts b/src/libs/services/account-activity-service/account-activity-service.ts index 6bea6bb70..5e37b1f59 100644 --- a/src/libs/services/account-activity-service/account-activity-service.ts +++ b/src/libs/services/account-activity-service/account-activity-service.ts @@ -11,9 +11,10 @@ import { getAccountTransferLink } from './constants'; export const accountCasperActivityRequest = ( casperApiUrl: string, accountHash: string, - page: number + page: number, + signal?: AbortSignal ): Promise> => - fetch(getAccountTransferLink(casperApiUrl, accountHash, page)) + fetch(getAccountTransferLink(casperApiUrl, accountHash, page), { signal }) .then(toJson) .catch(handleError); @@ -28,7 +29,8 @@ export const fetchAccountCasperActivity = ({ }) => queryClient.fetchQuery( ['accountCasperActivityRequest', casperApiUrl, accountHash, page], - () => accountCasperActivityRequest(casperApiUrl, accountHash, page), + ({ signal }) => + accountCasperActivityRequest(casperApiUrl, accountHash, page, signal), { staleTime: ACCOUNT_CASPER_ACTIVITY_REFRESH_RATE } ); diff --git a/src/libs/services/account-activity-service/extended-deploys-service.ts b/src/libs/services/account-activity-service/extended-deploys-service.ts index 0c93febe4..e3d44b585 100644 --- a/src/libs/services/account-activity-service/extended-deploys-service.ts +++ b/src/libs/services/account-activity-service/extended-deploys-service.ts @@ -17,9 +17,10 @@ import { export const extendedDeploysRequest = ( casperApiUrl: string, - deployHash: string + deployHash: string, + signal?: AbortSignal ): Promise => - fetch(getExtendedDeploysHashLink(casperApiUrl, deployHash)) + fetch(getExtendedDeploysHashLink(casperApiUrl, deployHash), { signal }) .then(toJson) .catch(handleError); @@ -32,7 +33,7 @@ export const fetchExtendedDeploysInfo = ({ }) => queryClient.fetchQuery( ['accountTransactionsRequest', casperApiUrl, deployHash], - () => extendedDeploysRequest(casperApiUrl, deployHash) + ({ signal }) => extendedDeploysRequest(casperApiUrl, deployHash, signal) ); export const dispatchFetchExtendedDeploysInfo = ( @@ -45,9 +46,12 @@ export const dispatchFetchExtendedDeploysInfo = ( export const accountExtendedDeploysRequest = ( casperApiUrl: string, publicKey: string, - page: number + page: number, + signal?: AbortSignal ): Promise> => - fetch(getAccountExtendedDeploysLink(casperApiUrl, publicKey, page)) + fetch(getAccountExtendedDeploysLink(casperApiUrl, publicKey, page), { + signal + }) .then(toJson) .catch(handleError); @@ -62,7 +66,8 @@ export const fetchAccountExtendedDeploys = ({ }): Promise | ErrorResponse> => queryClient.fetchQuery( ['accountDeploysRequest', casperApiUrl, publicKey, page], - () => accountExtendedDeploysRequest(casperApiUrl, publicKey, page), + ({ signal }) => + accountExtendedDeploysRequest(casperApiUrl, publicKey, page, signal), { staleTime: ACCOUNT_DEPLOY_REFRESH_RATE } ); diff --git a/src/libs/services/account-info/account-info.ts b/src/libs/services/account-info/account-info.ts index 3d57e0c2a..20e9f8de3 100644 --- a/src/libs/services/account-info/account-info.ts +++ b/src/libs/services/account-info/account-info.ts @@ -10,9 +10,10 @@ import { FETCH_QUERY_OPTIONS } from '@src/constants'; const accountInfoRequest = ( accountHash: string, - casperApiUrl: string + casperApiUrl: string, + signal?: AbortSignal ): Promise> => - fetch(getAccountInfoUrl({ accountHash, casperApiUrl })) + fetch(getAccountInfoUrl({ accountHash, casperApiUrl }), { signal }) .then(toJson) .catch(handleError); @@ -25,7 +26,7 @@ export const fetchAccountInfo = ({ }) => queryClient.fetchQuery( ['accountInfoRequest', accountHash, casperApiUrl], - () => accountInfoRequest(accountHash, casperApiUrl), + ({ signal }) => accountInfoRequest(accountHash, casperApiUrl, signal), { staleTime: FETCH_QUERY_OPTIONS.apiCacheTime } diff --git a/src/libs/services/balance-service/balance-service.ts b/src/libs/services/balance-service/balance-service.ts index 055c36677..868d7aabf 100644 --- a/src/libs/services/balance-service/balance-service.ts +++ b/src/libs/services/balance-service/balance-service.ts @@ -16,19 +16,23 @@ import { import { getCurrencyRateUrl, getAccountBalanceUrl } from './constants'; export const currencyRateRequest = ( - casperApiUrl: string + casperApiUrl: string, + signal?: AbortSignal ): Promise => - fetch(getCurrencyRateUrl(casperApiUrl)).then(toJson).catch(handleError); + fetch(getCurrencyRateUrl(casperApiUrl), { signal }) + .then(toJson) + .catch(handleError); export const accountBalanceRequest = ( publicKey: string, - casperApiUrl: string + casperApiUrl: string, + signal?: AbortSignal ): Promise => { if (!publicKey) { throw Error('Missing public key'); } - return fetch(getAccountBalanceUrl({ publicKey, casperApiUrl })) + return fetch(getAccountBalanceUrl({ publicKey, casperApiUrl }), { signal }) .then(res => { if (res.status === 404) { return { @@ -55,7 +59,7 @@ export const fetchAccountBalance = ({ }) => queryClient.fetchQuery( ['getAccountBalanceRequest', publicKey, casperApiUrl], - () => accountBalanceRequest(publicKey, casperApiUrl), + ({ signal }) => accountBalanceRequest(publicKey, casperApiUrl, signal), { staleTime: BALANCE_REFRESH_RATE } @@ -64,7 +68,7 @@ export const fetchAccountBalance = ({ export const fetchCurrencyRate = ({ casperApiUrl }: { casperApiUrl: string }) => queryClient.fetchQuery( 'getCurrencyRateRequest', - () => currencyRateRequest(casperApiUrl), + ({ signal }) => currencyRateRequest(casperApiUrl, signal), { staleTime: CURRENCY_REFRESH_RATE } diff --git a/src/libs/services/erc20-service/erc20-service.ts b/src/libs/services/erc20-service/erc20-service.ts index a6524194a..8bafb6674 100644 --- a/src/libs/services/erc20-service/erc20-service.ts +++ b/src/libs/services/erc20-service/erc20-service.ts @@ -14,9 +14,10 @@ import { getContractPackageUrl, getErc20TokensUrl } from './constants'; export const erc20TokensRequest = ( casperApiUrl: string, - accountHash: string + accountHash: string, + signal?: AbortSignal ): Promise> => - fetch(getErc20TokensUrl(casperApiUrl, accountHash)) + fetch(getErc20TokensUrl(casperApiUrl, accountHash), { signal }) .then(toJson) .catch(handleError); @@ -29,15 +30,16 @@ export const fetchErc20Tokens = ({ }) => queryClient.fetchQuery( ['getErc20Tokens', accountHash, casperApiUrl], - () => erc20TokensRequest(casperApiUrl, accountHash), + ({ signal }) => erc20TokensRequest(casperApiUrl, accountHash, signal), { staleTime: TOKENS_REFRESH_RATE } ); export const contractPackageRequest = ( casperApiUrl: string, - contractPackageHash: string + contractPackageHash: string, + signal?: AbortSignal ): Promise => - fetch(getContractPackageUrl(casperApiUrl, contractPackageHash)) + fetch(getContractPackageUrl(casperApiUrl, contractPackageHash), { signal }) .then(toJson) .catch(handleError); @@ -50,7 +52,8 @@ export const fetchContractPackage = ({ }) => queryClient.fetchQuery( ['contractPackageRequest', casperApiUrl, contractPackageHash], - () => contractPackageRequest(casperApiUrl, contractPackageHash), + ({ signal }) => + contractPackageRequest(casperApiUrl, contractPackageHash, signal), { staleTime: TOKENS_REFRESH_RATE } ); diff --git a/src/libs/services/nft-service/nft-service.ts b/src/libs/services/nft-service/nft-service.ts index 3e673a3f6..588a78ccf 100644 --- a/src/libs/services/nft-service/nft-service.ts +++ b/src/libs/services/nft-service/nft-service.ts @@ -14,9 +14,10 @@ import { serviceMessage } from '@background/service-message'; export const nftTokensRequest = ( casperApiUrl: string, accountHash: string, - page: number + page: number, + signal?: AbortSignal ): Promise> => - fetch(getNftTokensUrl(casperApiUrl, accountHash, page)) + fetch(getNftTokensUrl(casperApiUrl, accountHash, page), { signal }) .then(toJson) .catch(handleError); @@ -31,7 +32,7 @@ export const fetchNftTokens = ({ }): Promise | ErrorResponse> => queryClient.fetchQuery( ['getNftTokens', accountHash, casperApiUrl, page], - () => nftTokensRequest(casperApiUrl, accountHash, page), + ({ signal }) => nftTokensRequest(casperApiUrl, accountHash, page, signal), { staleTime: NFT_TOKENS_REFRESH_RATE } ); diff --git a/src/libs/ui/components/tabs/tabs.tsx b/src/libs/ui/components/tabs/tabs.tsx index ca6c673e8..df83d76a6 100644 --- a/src/libs/ui/components/tabs/tabs.tsx +++ b/src/libs/ui/components/tabs/tabs.tsx @@ -14,7 +14,7 @@ const TabsContainer = styled(AlignedSpaceBetweenFlexRow)` const StickyTabsContainer = styled.div` position: sticky; - top: 0; + top: -2px; z-index: 5; padding: 16px 0; From 0c69c553ab6440a0bf839448a8a284efb66db8a4 Mon Sep 17 00:00:00 2001 From: Ostap Piatkovskyi <44294945+ost-ptk@users.noreply.github.com> Date: Wed, 4 Oct 2023 11:34:49 +0300 Subject: [PATCH 048/243] fixed issue with the navigation menu screen scroll (#818) Co-authored-by: ost-ptk --- src/apps/popup/pages/navigation-menu/index.tsx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/apps/popup/pages/navigation-menu/index.tsx b/src/apps/popup/pages/navigation-menu/index.tsx index a7cf1b08a..3dbd15ee0 100644 --- a/src/apps/popup/pages/navigation-menu/index.tsx +++ b/src/apps/popup/pages/navigation-menu/index.tsx @@ -1,4 +1,4 @@ -import React, { useMemo } from 'react'; +import React, { useEffect, useMemo } from 'react'; import { useTranslation } from 'react-i18next'; import { useSelector } from 'react-redux'; import { useNavigate } from 'react-router-dom'; @@ -76,6 +76,12 @@ export function NavigationMenuPageContent() { const { openWindow } = useWindowManager(); const { closeNavigationMenu } = useNavigationMenu(); + useEffect(() => { + const container = document.querySelector('#ms-container'); + + container?.scrollTo(0, 0); + }, []); + const menuGroups: MenuGroup[] = useMemo( () => [ { From e97e06766a50e41b0011014bbbf0e6ca6f5a22e6 Mon Sep 17 00:00:00 2001 From: Ostap Piatkovskyi <44294945+ost-ptk@users.noreply.github.com> Date: Wed, 4 Oct 2023 11:35:23 +0300 Subject: [PATCH 049/243] casper logo updated (#817) Co-authored-by: ost-ptk --- src/assets/illustrations/casper.svg | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/src/assets/illustrations/casper.svg b/src/assets/illustrations/casper.svg index a1462014c..19c5733e7 100644 --- a/src/assets/illustrations/casper.svg +++ b/src/assets/illustrations/casper.svg @@ -1,9 +1,19 @@ - - - - - - - - + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + From 861181373789896af06d5276bca0f5e475bb7bba Mon Sep 17 00:00:00 2001 From: Ostap Piatkovskyi <44294945+ost-ptk@users.noreply.github.com> Date: Wed, 4 Oct 2023 11:35:53 +0300 Subject: [PATCH 050/243] removed the tooltip with the full public key when the user has only one account (#819) Co-authored-by: ost-ptk --- src/libs/ui/components/account-list/account-list.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/libs/ui/components/account-list/account-list.tsx b/src/libs/ui/components/account-list/account-list.tsx index acbd2f993..44db661d3 100644 --- a/src/libs/ui/components/account-list/account-list.tsx +++ b/src/libs/ui/components/account-list/account-list.tsx @@ -133,6 +133,7 @@ export const AccountList = ({ closeModal }: AccountListProps) => { value={account.publicKey} variant={HashVariant.CaptionHash} truncated + withoutTooltip={accountListRows.length === 1} withTag={account.imported} placement={ index === accountListRows.length - 1 From 3f5bb5ba9459881df677f54ab65eee5ba143ecc7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Oct 2023 16:12:28 +0300 Subject: [PATCH 051/243] build(deps-dev): bump electron from 25.8.1 to 25.9.0 (#822) Bumps [electron](https://github.com/electron/electron) from 25.8.1 to 25.9.0. - [Release notes](https://github.com/electron/electron/releases) - [Changelog](https://github.com/electron/electron/blob/main/docs/breaking-changes.md) - [Commits](https://github.com/electron/electron/compare/v25.8.1...v25.9.0) --- updated-dependencies: - dependency-name: electron dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3bb7606c4..cfd02c5f3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12248,9 +12248,9 @@ "dev": true }, "node_modules/electron": { - "version": "25.8.1", - "resolved": "https://registry.npmjs.org/electron/-/electron-25.8.1.tgz", - "integrity": "sha512-GtcP1nMrROZfFg0+mhyj1hamrHvukfF6of2B/pcWxmWkd5FVY1NJib0tlhiorFZRzQN5Z+APLPr7aMolt7i2AQ==", + "version": "25.9.0", + "resolved": "https://registry.npmjs.org/electron/-/electron-25.9.0.tgz", + "integrity": "sha512-wgscxf2ORHL/8mAQfy7l9rVDG//wrG9RUQndG508kCCMHRq9deFyZ4psOMzySheBRSfGMcFoRFYSlkAeZr8cFg==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -37683,9 +37683,9 @@ "dev": true }, "electron": { - "version": "25.8.1", - "resolved": "https://registry.npmjs.org/electron/-/electron-25.8.1.tgz", - "integrity": "sha512-GtcP1nMrROZfFg0+mhyj1hamrHvukfF6of2B/pcWxmWkd5FVY1NJib0tlhiorFZRzQN5Z+APLPr7aMolt7i2AQ==", + "version": "25.9.0", + "resolved": "https://registry.npmjs.org/electron/-/electron-25.9.0.tgz", + "integrity": "sha512-wgscxf2ORHL/8mAQfy7l9rVDG//wrG9RUQndG508kCCMHRq9deFyZ4psOMzySheBRSfGMcFoRFYSlkAeZr8cFg==", "dev": true, "requires": { "@electron/get": "^2.0.0", From af2a41199315528bec2791c1ec47303db3f28c2d Mon Sep 17 00:00:00 2001 From: Ostap Piatkovskyi <44294945+ost-ptk@users.noreply.github.com> Date: Mon, 9 Oct 2023 16:16:26 +0300 Subject: [PATCH 052/243] disabled send button on NFT details page after this NFT was sent (#824) Co-authored-by: ost-ptk --- src/apps/popup/pages/home/index.tsx | 14 ++-- src/apps/popup/pages/nft-details/content.tsx | 64 +++++++++++++++---- src/apps/popup/pages/token-details/token.tsx | 15 ++--- src/apps/popup/pages/transfer-nft/index.tsx | 17 ++++- src/background/index.ts | 6 +- src/background/redux/account-info/actions.ts | 11 ++++ src/background/redux/account-info/reducer.ts | 33 +++++++++- .../redux/account-info/selectors.ts | 3 + src/background/redux/account-info/types.ts | 1 + src/libs/layout/containers.ts | 14 ---- src/libs/ui/components/button/button.tsx | 15 ++++- src/libs/ui/components/input/input.tsx | 3 + .../recipient-dropdown-input.tsx | 1 + 13 files changed, 147 insertions(+), 50 deletions(-) diff --git a/src/apps/popup/pages/home/index.tsx b/src/apps/popup/pages/home/index.tsx index 41f41f56b..95bd857f1 100644 --- a/src/apps/popup/pages/home/index.tsx +++ b/src/apps/popup/pages/home/index.tsx @@ -8,7 +8,6 @@ import { CenteredFlexRow, FlexColumn, HeaderSubmenuBarNavLink, - IconCircleContainer, LinkType, SpacingSize } from '@libs/layout'; @@ -25,6 +24,7 @@ import { import { AccountActionsMenuPopover, Avatar, + Button, getFontSizeBasedOnTextLength, Hash, HashVariant, @@ -181,12 +181,12 @@ export function HomePageContent() { ) } > - + + Send @@ -199,12 +199,12 @@ export function HomePageContent() { }) } > - + + Receive @@ -214,12 +214,12 @@ export function HomePageContent() { gap={SpacingSize.Small} onClick={handleBuyWithCSPR} > - + + Buy diff --git a/src/apps/popup/pages/nft-details/content.tsx b/src/apps/popup/pages/nft-details/content.tsx index 775193892..5127a36bc 100644 --- a/src/apps/popup/pages/nft-details/content.tsx +++ b/src/apps/popup/pages/nft-details/content.tsx @@ -1,7 +1,8 @@ -import React, { useCallback, useMemo, useState } from 'react'; +import React, { useCallback, useEffect, useMemo, useState } from 'react'; import styled from 'styled-components'; import { Trans, useTranslation } from 'react-i18next'; import ReactPlayer from 'react-player'; +import { useSelector } from 'react-redux'; import { AlignedFlexRow, @@ -9,7 +10,6 @@ import { CenteredFlexColumn, CenteredFlexRow, ContentContainer, - IconCircleContainer, ParagraphContainer, SpacingSize, VerticalSpaceContainer @@ -22,7 +22,9 @@ import { Tile, Typography, EmptyMediaPlaceholder, - LoadingMediaPlaceholder + LoadingMediaPlaceholder, + Button, + Status } from '@libs/ui'; import { NFTTokenResult } from '@libs/services/nft-service'; import { @@ -36,6 +38,10 @@ import { } from '@src/utils'; import { RouterPath, useTypedNavigate } from '@popup/router'; import { useAsyncEffect } from '@src/hooks'; +import { selectAccountTrackingIdOfSentNftTokens } from '@background/redux/account-info/selectors'; +import { dispatchFetchExtendedDeploysInfo } from '@libs/services/account-activity-service'; +import { dispatchToMainStore } from '@background/redux/utils'; +import { accountTrackingIdOfSentNftTokensRemoved } from '@background/redux/account-info/actions'; const NftImageContainer = styled(CenteredFlexRow)` width: 100%; @@ -70,8 +76,8 @@ const ButtonsContainer = styled(CenteredFlexRow)` margin: 20px 0; `; -const ButtonContainer = styled(CenteredFlexColumn)` - cursor: pointer; +const ButtonContainer = styled(CenteredFlexColumn)<{ disabled: boolean }>` + cursor: ${({ disabled }) => (disabled ? 'not-allowed' : 'pointer')}; `; const Player = styled(ReactPlayer)` @@ -97,6 +103,14 @@ export const NftDetailsContent = ({ const [contentType, setContentType] = useState(''); const [typeLoading, setTypeLoading] = useState(true); + const accountTrackingIdOfSentNftTokens = useSelector( + selectAccountTrackingIdOfSentNftTokens + ); + + const isButtonDisabled = Boolean( + accountTrackingIdOfSentNftTokens[nftToken?.tracking_id!] + ); + const { t } = useTranslation(); const navigate = useTypedNavigate(); @@ -122,6 +136,27 @@ export const NftDetailsContent = ({ [cachedUrl] ); + useEffect(() => { + const deployHash = accountTrackingIdOfSentNftTokens[nftToken?.tracking_id!]; + + const interval = setInterval(async () => { + const { payload: extendedDeployInfo } = + await dispatchFetchExtendedDeploysInfo(deployHash); + + if (extendedDeployInfo) { + if (extendedDeployInfo.status === Status.Executed) { + dispatchToMainStore( + accountTrackingIdOfSentNftTokensRemoved(nftToken?.tracking_id!) + ); + + clearInterval(interval); + } + } + }, 10000); + + return () => clearInterval(interval); + }, [accountTrackingIdOfSentNftTokens, nftToken?.tracking_id]); + const tokenStandard = nftToken ? MapNFTTokenStandardToName[nftToken.token_standard_id] : ''; @@ -243,7 +278,10 @@ export const NftDetailsContent = ({ + disabled={isButtonDisabled} + onClick={() => { + if (isButtonDisabled) return; + navigate( RouterPath.TransferNft.replace( ':tokenId', @@ -257,16 +295,20 @@ export const NftDetailsContent = ({ nftData: { contentType, url: cachedUrl || preview?.value } } } - ) - } + ); + }} > - + - + + {/* rename color names after dark mode will be merge */} + Send diff --git a/src/apps/popup/pages/token-details/token.tsx b/src/apps/popup/pages/token-details/token.tsx index 375659eb9..5dcb0c3bc 100644 --- a/src/apps/popup/pages/token-details/token.tsx +++ b/src/apps/popup/pages/token-details/token.tsx @@ -7,11 +7,10 @@ import { useSelector } from 'react-redux'; import { CenteredFlexColumn, CenteredFlexRow, - IconCircleContainer, SpaceBetweenFlexRow, SpacingSize } from '@libs/layout'; -import { Link, List, SvgIcon, TokenPlate, Typography } from '@libs/ui'; +import { Button, Link, List, SvgIcon, TokenPlate, Typography } from '@libs/ui'; import { RouterPath, useTypedLocation, useTypedNavigate } from '@popup/router'; import { TokenType, useCasperToken } from '@src/hooks'; import { @@ -136,9 +135,9 @@ export const Token = ({ erc20Tokens }: TokenProps) => { ) } > - + + Send @@ -149,9 +148,9 @@ export const Token = ({ erc20Tokens }: TokenProps) => { navigate(RouterPath.Receive, { state: { tokenData } }) } > - + + Receive @@ -165,12 +164,12 @@ export const Token = ({ erc20Tokens }: TokenProps) => { href={getBuyWithTopperUrl(activeAccount.publicKey)} > - + + Buy diff --git a/src/apps/popup/pages/transfer-nft/index.tsx b/src/apps/popup/pages/transfer-nft/index.tsx index 2ebc6e7e4..75b55e3bc 100644 --- a/src/apps/popup/pages/transfer-nft/index.tsx +++ b/src/apps/popup/pages/transfer-nft/index.tsx @@ -31,7 +31,10 @@ import { import { dispatchToMainStore } from '@background/redux/utils'; import { recipientPublicKeyAdded } from '@background/redux/recent-recipient-public-keys/actions'; import { dispatchFetchExtendedDeploysInfo } from '@libs/services/account-activity-service'; -import { accountPendingTransactionsChanged } from '@background/redux/account-info/actions'; +import { + accountPendingTransactionsChanged, + accountTrackingIdOfSentNftTokensChanged +} from '@background/redux/account-info/actions'; import { createAsymmetricKey } from '@libs/crypto/create-asymmetric-key'; export const TransferNftPage = () => { @@ -97,10 +100,11 @@ export const TransferNftPage = () => { }); const submitTransfer = async () => { - if (haveReverseOwnerLookUp) return; + if (haveReverseOwnerLookUp || !nftToken) return; if (activeAccount) { const { recipientPublicKey } = recipientForm.getValues(); + const { paymentAmount } = amountForm.getValues(); const KEYS = createAsymmetricKey( activeAccount.publicKey, @@ -108,7 +112,7 @@ export const TransferNftPage = () => { ); const args = { - tokenId: nftToken?.token_id!, + tokenId: nftToken.token_id, source: KEYS.publicKey, target: getRawPublicKey(recipientPublicKey) }; @@ -126,6 +130,13 @@ export const TransferNftPage = () => { dispatchToMainStore(recipientPublicKeyAdded(recipientPublicKey)); if (deployHash) { + dispatchToMainStore( + accountTrackingIdOfSentNftTokensChanged({ + trackingId: nftToken.tracking_id, + deployHash + }) + ); + let triesLeft = 10; const interval = setInterval(async () => { const { payload: extendedDeployInfo } = diff --git a/src/background/index.ts b/src/background/index.ts index 91468e800..446a15e42 100644 --- a/src/background/index.ts +++ b/src/background/index.ts @@ -127,7 +127,9 @@ import { accountNftTokensUpdated, accountNftTokensCountChanged, accountDeploysCountChanged, - accountCasperActivityCountChanged + accountCasperActivityCountChanged, + accountTrackingIdOfSentNftTokensChanged, + accountTrackingIdOfSentNftTokensRemoved } from '@background/redux/account-info/actions'; import { fetchErc20TokenActivity } from '@src/libs/services/account-activity-service/erc20-token-activity-service'; import { fetchNftTokens } from '@libs/services/nft-service'; @@ -547,6 +549,8 @@ browser.runtime.onMessage.addListener( case getType(accountNftTokensCountChanged): case getType(accountDeploysCountChanged): case getType(accountCasperActivityCountChanged): + case getType(accountTrackingIdOfSentNftTokensChanged): + case getType(accountTrackingIdOfSentNftTokensRemoved): store.dispatch(action); return sendResponse(undefined); diff --git a/src/background/redux/account-info/actions.ts b/src/background/redux/account-info/actions.ts index 88c9df07c..4a3a87918 100644 --- a/src/background/redux/account-info/actions.ts +++ b/src/background/redux/account-info/actions.ts @@ -83,3 +83,14 @@ export const accountDeploysCountChanged = createAction( export const accountCasperActivityCountChanged = createAction( 'ACCOUNT_CASPER_ACTIVITY_COUNT_CHANGED' )(); + +export const accountTrackingIdOfSentNftTokensChanged = createAction( + 'ACCOUNT_TRACKING_ID_OF_SENT_NFT_TOKENS_CHANGED' +)<{ + trackingId: string; + deployHash: string; +}>(); + +export const accountTrackingIdOfSentNftTokensRemoved = createAction( + 'ACCOUNT_TRACKING_ID_OF_SENT_NFT_TOKENS_REMOVED' +)(); diff --git a/src/background/redux/account-info/reducer.ts b/src/background/redux/account-info/reducer.ts index dfe214578..e1a17e3e5 100644 --- a/src/background/redux/account-info/reducer.ts +++ b/src/background/redux/account-info/reducer.ts @@ -18,7 +18,9 @@ import { accountNftTokensUpdated, accountNftTokensCountChanged, accountDeploysCountChanged, - accountCasperActivityCountChanged + accountCasperActivityCountChanged, + accountTrackingIdOfSentNftTokensChanged, + accountTrackingIdOfSentNftTokensRemoved } from './actions'; const initialState: AccountInfoState = { @@ -35,7 +37,8 @@ const initialState: AccountInfoState = { accountNftTokens: [], nftTokensCount: 0, accountDeploysCount: 0, - accountCasperActivityCount: 0 + accountCasperActivityCount: 0, + accountTrackingIdOfSentNftTokens: {} }; export const reducer = createReducer(initialState) @@ -172,4 +175,28 @@ export const reducer = createReducer(initialState) .handleAction(accountCasperActivityCountChanged, (state, { payload }) => ({ ...state, accountCasperActivityCount: payload - })); + })) + .handleAction( + accountTrackingIdOfSentNftTokensChanged, + (state, { payload: { trackingId, deployHash } }) => ({ + ...state, + accountTrackingIdOfSentNftTokens: { + ...state.accountTrackingIdOfSentNftTokens, + [trackingId]: deployHash + } + }) + ) + .handleAction( + accountTrackingIdOfSentNftTokensRemoved, + (state, { payload }) => { + const accountTrackingIdOfSentNftTokens = { + ...state.accountTrackingIdOfSentNftTokens + }; + delete accountTrackingIdOfSentNftTokens[payload]; + + return { + ...state, + accountTrackingIdOfSentNftTokens + }; + } + ); diff --git a/src/background/redux/account-info/selectors.ts b/src/background/redux/account-info/selectors.ts index eb1ba9f8b..9eba5ea3f 100644 --- a/src/background/redux/account-info/selectors.ts +++ b/src/background/redux/account-info/selectors.ts @@ -32,3 +32,6 @@ export const selectAccountDeploysCount = (state: RootState) => export const selectAccountCasperActivityCount = (state: RootState) => state.accountInfo.accountCasperActivityCount; + +export const selectAccountTrackingIdOfSentNftTokens = (state: RootState) => + state.accountInfo.accountTrackingIdOfSentNftTokens; diff --git a/src/background/redux/account-info/types.ts b/src/background/redux/account-info/types.ts index d969fe540..e9f99a02b 100644 --- a/src/background/redux/account-info/types.ts +++ b/src/background/redux/account-info/types.ts @@ -19,6 +19,7 @@ export interface AccountInfoState { nftTokensCount: number; accountDeploysCount: number; accountCasperActivityCount: number; + accountTrackingIdOfSentNftTokens: Record; } interface AccountErc20TokenActivity { diff --git a/src/libs/layout/containers.ts b/src/libs/layout/containers.ts index 084a178be..38a216831 100644 --- a/src/libs/layout/containers.ts +++ b/src/libs/layout/containers.ts @@ -1,5 +1,4 @@ import styled, { css } from 'styled-components'; -import { FillColor } from '@libs/ui'; // Be careful when importing dependencies here // Import of getColorFromTheme from '@libs/ui' cause huge problems with webpack bundle and lead to blank popups @@ -293,19 +292,6 @@ export const Overlay = styled.div` background: rgba(0, 0, 0, 0.32); `; -export const IconCircleContainer = styled(CenteredFlexRow)<{ - color: FillColor; -}>` - height: 48px; - width: 48px; - - margin: 0 16px; - - background-color: ${({ theme, color }) => - color === 'inherit' ? 'inherit' : theme.color[color]}; - border-radius: ${({ theme }) => theme.borderRadius.hundred}px; -`; - export const AccountActivityPlateContainer = styled(AlignedSpaceBetweenFlexRow)` cursor: pointer; padding: 16px 12px; diff --git a/src/libs/ui/components/button/button.tsx b/src/libs/ui/components/button/button.tsx index 73e043606..ff9f2c7f5 100644 --- a/src/libs/ui/components/button/button.tsx +++ b/src/libs/ui/components/button/button.tsx @@ -11,6 +11,7 @@ interface BaseButtonProps extends BaseProps { inline?: boolean; title?: string; flexWidth?: boolean; + circle?: boolean; } const BaseButton = styled.button( @@ -20,7 +21,8 @@ const BaseButton = styled.button( height = '40', inline = false, minWidth, - flexWidth = false + flexWidth = false, + circle = false }) => ({ display: 'flex', ...(flexWidth ? { flex: 1 } : {}), @@ -38,6 +40,12 @@ const BaseButton = styled.button( padding: inline ? '4px 12px' : 'unset', minWidth: minWidth ? `${minWidth}px` : undefined, + ...(circle && { + borderRadius: '24px', + margin: '0 16px', + padding: '12px' + }), + ':focus': { outline: 'none' }, @@ -183,6 +191,7 @@ export interface ButtonProps extends BaseButtonProps { | 'utility'; as?: (props: any) => JSX.Element; onClick?: (ev: any) => void; + circle?: boolean; } type Ref = HTMLButtonElement; @@ -193,6 +202,7 @@ export const Button = React.forwardRef(function Button( inline = false, as, dataTestId, + circle, ...props }: ButtonProps, ref @@ -205,10 +215,9 @@ export const Button = React.forwardRef(function Button( ref={ref} inline={inline} data-testid={dataTestId} + circle={circle} as={as} {...props} /> ); }); - -export default Button; diff --git a/src/libs/ui/components/input/input.tsx b/src/libs/ui/components/input/input.tsx index a581dcb42..6fdf7d202 100644 --- a/src/libs/ui/components/input/input.tsx +++ b/src/libs/ui/components/input/input.tsx @@ -135,6 +135,7 @@ export interface InputProps extends BaseProps { validationType?: InputValidationType; validationText?: string | null; dataTestId?: string; + autoComplete?: string; } export const Input = React.forwardRef(function Input( @@ -158,6 +159,7 @@ export const Input = React.forwardRef(function Input( onFocus, dataTestId, readOnly, + autoComplete, ...restProps }: InputProps, ref @@ -206,6 +208,7 @@ export const Input = React.forwardRef(function Input( onFocus={handleFocus} data-testid={dataTestId} readOnly={readOnly} + autoComplete={autoComplete} /> {!suffixIcon && error && ( diff --git a/src/libs/ui/components/recipient-dropdown-input/recipient-dropdown-input.tsx b/src/libs/ui/components/recipient-dropdown-input/recipient-dropdown-input.tsx index 510d25294..0ea95082f 100644 --- a/src/libs/ui/components/recipient-dropdown-input/recipient-dropdown-input.tsx +++ b/src/libs/ui/components/recipient-dropdown-input/recipient-dropdown-input.tsx @@ -99,6 +99,7 @@ export const RecipientDropdownInput = ({ {...register('recipientPublicKey')} error={!!errors?.recipientPublicKey} validationText={errors?.recipientPublicKey?.message} + autoComplete="off" /> {isOpenRecentRecipientPublicKeysList && ( Date: Mon, 9 Oct 2023 16:16:56 +0300 Subject: [PATCH 053/243] fixed issue with the scroll on home page (#825) Co-authored-by: ost-ptk --- src/apps/popup/pages/home/components/deploys-list/index.tsx | 2 ++ src/apps/popup/pages/home/components/nft-list/index.tsx | 2 ++ src/apps/popup/pages/home/components/tokens-list/index.tsx | 6 ++++++ 3 files changed, 10 insertions(+) diff --git a/src/apps/popup/pages/home/components/deploys-list/index.tsx b/src/apps/popup/pages/home/components/deploys-list/index.tsx index 3bc228965..def56e3b8 100644 --- a/src/apps/popup/pages/home/components/deploys-list/index.tsx +++ b/src/apps/popup/pages/home/components/deploys-list/index.tsx @@ -37,6 +37,8 @@ export const DeploysList = () => { if (position) { container?.scrollTo(0, Number(position)); localStorage.removeItem('activityPlateYPosition'); + } else { + container?.scrollTo(0, 0); } }, []); diff --git a/src/apps/popup/pages/home/components/nft-list/index.tsx b/src/apps/popup/pages/home/components/nft-list/index.tsx index 6f3968114..914da3d30 100644 --- a/src/apps/popup/pages/home/components/nft-list/index.tsx +++ b/src/apps/popup/pages/home/components/nft-list/index.tsx @@ -57,6 +57,8 @@ export const NftList = () => { if (position) { container?.scrollTo(0, Number(position)); localStorage.removeItem('nftTokenYPosition'); + } else { + container?.scrollTo(0, 0); } }, []); diff --git a/src/apps/popup/pages/home/components/tokens-list/index.tsx b/src/apps/popup/pages/home/components/tokens-list/index.tsx index 1fdd2d59b..6e63d6b93 100644 --- a/src/apps/popup/pages/home/components/tokens-list/index.tsx +++ b/src/apps/popup/pages/home/components/tokens-list/index.tsx @@ -43,6 +43,12 @@ export const TokensList = () => { setTokensList(tokensList); }, [casperToken, erc20Tokens]); + useEffect(() => { + const container = document.querySelector('#ms-container'); + + container?.scrollTo(0, 0); + }, []); + return ( Date: Thu, 12 Oct 2023 12:45:45 +0300 Subject: [PATCH 054/243] Release 1.6.0 version (#826) --- package.json | 2 +- .../Casper Wallet/Casper Wallet.xcodeproj/project.pbxproj | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 7353297da..7898ef158 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "Casper Wallet", "description": "Securely manage your CSPR tokens and interact with dapps with the self-custody wallet for the Casper blockchain.", - "version": "1.5.2", + "version": "1.6.0", "author": "MAKE LLC", "scripts": { "devtools:redux": "redux-devtools --hostname=localhost", diff --git a/xcode-project/Casper Wallet/Casper Wallet.xcodeproj/project.pbxproj b/xcode-project/Casper Wallet/Casper Wallet.xcodeproj/project.pbxproj index a78d2550d..bc11009f8 100644 --- a/xcode-project/Casper Wallet/Casper Wallet.xcodeproj/project.pbxproj +++ b/xcode-project/Casper Wallet/Casper Wallet.xcodeproj/project.pbxproj @@ -564,7 +564,7 @@ CODE_SIGN_ENTITLEMENTS = "Casper Wallet/Casper Wallet.entitlements"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 22; + CURRENT_PROJECT_VERSION = 27; ENABLE_HARDENED_RUNTIME = YES; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "Casper Wallet/Info.plist"; @@ -578,7 +578,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 10.14; - MARKETING_VERSION = 1.5.2; + MARKETING_VERSION = 1.6.0; OTHER_LDFLAGS = ( "-framework", SafariServices, @@ -601,7 +601,7 @@ CODE_SIGN_ENTITLEMENTS = "Casper Wallet/Casper Wallet.entitlements"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 22; + CURRENT_PROJECT_VERSION = 27; ENABLE_HARDENED_RUNTIME = YES; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "Casper Wallet/Info.plist"; @@ -615,7 +615,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 10.14; - MARKETING_VERSION = 1.5.2; + MARKETING_VERSION = 1.6.0; OTHER_LDFLAGS = ( "-framework", SafariServices, From c3f7c28b7db427e2a2e633b21cb9b8abf04fa754 Mon Sep 17 00:00:00 2001 From: Ostap Piatkovskyi <44294945+ost-ptk@users.noreply.github.com> Date: Thu, 12 Oct 2023 15:42:05 +0300 Subject: [PATCH 055/243] added countdown for user password length (#806) Co-authored-by: ost-ptk Co-authored-by: Vynnyk Dmytro --- .../pages/create-vault-password/content.tsx | 32 +++++++++++++++++-- .../pages/create-vault-password/index.tsx | 10 +++++- 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/src/apps/onboarding/pages/create-vault-password/content.tsx b/src/apps/onboarding/pages/create-vault-password/content.tsx index e47de6d2b..078d954bf 100644 --- a/src/apps/onboarding/pages/create-vault-password/content.tsx +++ b/src/apps/onboarding/pages/create-vault-password/content.tsx @@ -11,8 +11,10 @@ import { } from '@libs/ui'; import { InputsContainer, + SpacingSize, TabPageContainer, - TabTextContainer + TabTextContainer, + VerticalSpaceContainer } from '@libs/layout'; import { minPasswordLength } from '@libs/ui/forms/form-validation-rules'; import { CreatePasswordFormValues } from '@src/libs/ui/forms/create-password'; @@ -20,14 +22,18 @@ import { CreatePasswordFormValues } from '@src/libs/ui/forms/create-password'; interface CreatePasswordPageContentProps { register: UseFormRegister; formState: FormState; + passwordLength: number; } export function CreateVaultPasswordPageContent({ register, - formState: { errors } + formState: { errors }, + passwordLength }: CreatePasswordPageContentProps) { const { t } = useTranslation(); + const needToAddMoreCharacters = minPasswordLength - passwordLength; + const [passwordInputType, setPasswordInputType] = useState('password'); const [confirmPasswordInputType, setConfirmPasswordInputType] = @@ -51,6 +57,28 @@ export function CreateVaultPasswordPageContent({ + + + + {needToAddMoreCharacters <= 0 ? ( + + Your password length is -{' '} + + {{ passwordLength }} characters. + + + ) : ( + + You need to add at least{' '} + + {{ needToAddMoreCharacters }} characters + {' '} + more. + + )} + + + { if (passwordHash) { navigate(RouterPath.CreateSecretPhrase); @@ -91,6 +98,7 @@ export function CreateVaultPasswordPage({ )} renderFooter={() => ( From 241f1e60adaf91a9dad2e295ef63e7b84b3ee29c Mon Sep 17 00:00:00 2001 From: Ostap Piatkovskyi <44294945+ost-ptk@users.noreply.github.com> Date: Thu, 12 Oct 2023 18:38:56 +0300 Subject: [PATCH 056/243] feature: add change password page (#799) * fixed issue with prettier config * fixed code style errors * added change password page and small refactor * merge conflict fixed * merge conflict issues fixed --------- Co-authored-by: ost-ptk --- .../pages/create-vault-password/content.tsx | 88 ++---------------- .../pages/create-vault-password/index.tsx | 24 +++-- src/apps/popup/app-router.tsx | 5 + .../popup/pages/change-password/content.tsx | 31 +++++++ .../popup/pages/change-password/index.tsx | 79 ++++++++++++++++ .../popup/pages/navigation-menu/index.tsx | 10 ++ src/apps/popup/router/paths.ts | 3 +- src/background/index.ts | 2 + src/background/redux/sagas/actions.ts | 4 + src/background/redux/sagas/vault-sagas.ts | 58 +++++++++++- .../password-inputs/password-inputs.tsx | 91 +++++++++++++++++++ src/libs/ui/index.ts | 1 + 12 files changed, 300 insertions(+), 96 deletions(-) create mode 100644 src/apps/popup/pages/change-password/content.tsx create mode 100644 src/apps/popup/pages/change-password/index.tsx create mode 100644 src/libs/ui/components/password-inputs/password-inputs.tsx diff --git a/src/apps/onboarding/pages/create-vault-password/content.tsx b/src/apps/onboarding/pages/create-vault-password/content.tsx index 078d954bf..6d5a37f23 100644 --- a/src/apps/onboarding/pages/create-vault-password/content.tsx +++ b/src/apps/onboarding/pages/create-vault-password/content.tsx @@ -1,44 +1,19 @@ -import React, { useState } from 'react'; +import React from 'react'; import { useTranslation, Trans } from 'react-i18next'; -import { FormState, UseFormRegister } from 'react-hook-form'; -import { - PasswordInputType, - Input, - InputValidationType, - PasswordVisibilityIcon, - Typography -} from '@libs/ui'; -import { - InputsContainer, - SpacingSize, - TabPageContainer, - TabTextContainer, - VerticalSpaceContainer -} from '@libs/layout'; +import { Typography } from '@libs/ui'; +import { TabPageContainer, TabTextContainer } from '@libs/layout'; import { minPasswordLength } from '@libs/ui/forms/form-validation-rules'; -import { CreatePasswordFormValues } from '@src/libs/ui/forms/create-password'; interface CreatePasswordPageContentProps { - register: UseFormRegister; - formState: FormState; - passwordLength: number; + children: React.ReactNode; } export function CreateVaultPasswordPageContent({ - register, - formState: { errors }, - passwordLength + children }: CreatePasswordPageContentProps) { const { t } = useTranslation(); - const needToAddMoreCharacters = minPasswordLength - passwordLength; - - const [passwordInputType, setPasswordInputType] = - useState('password'); - const [confirmPasswordInputType, setConfirmPasswordInputType] = - useState('password'); - return ( @@ -58,58 +33,7 @@ export function CreateVaultPasswordPageContent({ - - - {needToAddMoreCharacters <= 0 ? ( - - Your password length is -{' '} - - {{ passwordLength }} characters. - - - ) : ( - - You need to add at least{' '} - - {{ needToAddMoreCharacters }} characters - {' '} - more. - - )} - - - - - - } - {...register('password')} - error={!!errors.password} - validationText={errors.password?.message} - /> - - } - {...register('confirmPassword')} - error={!!errors.confirmPassword} - validationText={errors.confirmPassword?.message} - /> - + {children} ); } diff --git a/src/apps/onboarding/pages/create-vault-password/index.tsx b/src/apps/onboarding/pages/create-vault-password/index.tsx index 183591bc9..77782772a 100644 --- a/src/apps/onboarding/pages/create-vault-password/index.tsx +++ b/src/apps/onboarding/pages/create-vault-password/index.tsx @@ -9,7 +9,7 @@ import { TabFooterContainer, TabHeaderContainer } from '@libs/layout'; -import { Button, Checkbox, Link } from '@libs/ui'; +import { Button, Checkbox, Link, PasswordInputs } from '@libs/ui'; import { CreatePasswordFormValues, useCreatePasswordForm @@ -37,9 +37,13 @@ export function CreateVaultPasswordPage({ const { t } = useTranslation(); const passwordHash = useSelector(selectPasswordHash); - const { register, handleSubmit, formState, control } = - useCreatePasswordForm(); - const { isDirty, isSubmitSuccessful } = formState; + const { + register, + handleSubmit, + formState: { isDirty, isSubmitSuccessful, errors }, + control + } = useCreatePasswordForm(); + const password = useWatch({ control, name: 'password' @@ -95,11 +99,13 @@ export function CreateVaultPasswordPage({ )} renderContent={() => ( - + + + )} renderFooter={() => ( diff --git a/src/apps/popup/app-router.tsx b/src/apps/popup/app-router.tsx index 3cc8de510..2be8040ae 100644 --- a/src/apps/popup/app-router.tsx +++ b/src/apps/popup/app-router.tsx @@ -35,6 +35,7 @@ import { ActivityDetailsPage } from '@popup/pages/activity-details'; import { ReceivePage } from '@popup/pages/receive'; import { NftDetailsPage } from '@popup/pages/nft-details'; import { TransferNftPage } from '@popup/pages/transfer-nft'; +import { ChangePasswordPage } from '@popup/pages/change-password'; export function AppRouter() { const isLocked = useSelector(selectVaultIsLocked); @@ -242,6 +243,10 @@ function AppRoutes() { } /> } /> } /> + } + /> ); } diff --git a/src/apps/popup/pages/change-password/content.tsx b/src/apps/popup/pages/change-password/content.tsx new file mode 100644 index 000000000..0a052672b --- /dev/null +++ b/src/apps/popup/pages/change-password/content.tsx @@ -0,0 +1,31 @@ +import React from 'react'; +import { Trans, useTranslation } from 'react-i18next'; + +import { + ContentContainer, + ParagraphContainer, + SpacingSize +} from '@libs/layout'; +import { Typography } from '@libs/ui'; + +interface ChangePasswordPageContentProps { + children: React.ReactNode; +} + +export const ChangePasswordPageContent = ({ + children +}: ChangePasswordPageContentProps) => { + const { t } = useTranslation(); + + return ( + + + + Change Password + + + + {children} + + ); +}; diff --git a/src/apps/popup/pages/change-password/index.tsx b/src/apps/popup/pages/change-password/index.tsx new file mode 100644 index 000000000..067c66cf8 --- /dev/null +++ b/src/apps/popup/pages/change-password/index.tsx @@ -0,0 +1,79 @@ +import React from 'react'; +import { Trans, useTranslation } from 'react-i18next'; + +import { + FooterButtonsContainer, + HeaderSubmenuBarNavLink, + PopupHeader, + PopupLayout +} from '@libs/layout'; +import { Button, PasswordInputs } from '@libs/ui'; +import { + CreatePasswordFormValues, + useCreatePasswordForm +} from '@libs/ui/forms/create-password'; +import { calculateSubmitButtonDisabled } from '@libs/ui/forms/get-submit-button-state-from-validation'; +import { dispatchToMainStore } from '@background/redux/utils'; +import { changePassword } from '@background/redux/sagas/actions'; +import { RouterPath, useTypedNavigate } from '@popup/router'; +import { ChangePasswordPageContent } from '@popup/pages/change-password/content'; +import { useWatch } from 'react-hook-form'; + +export const ChangePasswordPage = () => { + const { t } = useTranslation(); + const navigate = useTypedNavigate(); + + const { + register, + handleSubmit, + formState: { isDirty, errors }, + control + } = useCreatePasswordForm(); + + const password = useWatch({ + control, + name: 'password' + }); + + const isSubmitButtonDisabled = calculateSubmitButtonDisabled({ + isDirty + }); + + const onSubmit = (data: CreatePasswordFormValues) => { + dispatchToMainStore(changePassword({ password: data.password })); + navigate(RouterPath.Home); + }; + + return ( + ( + ( + + )} + /> + )} + renderContent={() => ( + + + + )} + renderFooter={() => ( + + + + )} + /> + ); +}; diff --git a/src/apps/popup/pages/navigation-menu/index.tsx b/src/apps/popup/pages/navigation-menu/index.tsx index 3dbd15ee0..f5efcf46f 100644 --- a/src/apps/popup/pages/navigation-menu/index.tsx +++ b/src/apps/popup/pages/navigation-menu/index.tsx @@ -178,6 +178,16 @@ export function NavigationMenuPageContent() { closeNavigationMenu(); navigate(RouterPath.DownloadSecretKeys); } + }, + { + id: 3, + title: t('Change Password'), + iconPath: 'assets/icons/secure.svg', + disabled: false, + handleOnClick: () => { + closeNavigationMenu(); + navigate(RouterPath.ChangePassword); + } } ] }, diff --git a/src/apps/popup/router/paths.ts b/src/apps/popup/router/paths.ts index 6407a707d..178e4544f 100644 --- a/src/apps/popup/router/paths.ts +++ b/src/apps/popup/router/paths.ts @@ -20,5 +20,6 @@ export enum RouterPath { Token = '/token/:tokenName', Receive = '/receive', NftDetails = '/nft-details/:contractPackageHash/nfts/:tokenId', - TransferNft = '/transfer-nft/:contractPackageHash/nfts/:tokenId' + TransferNft = '/transfer-nft/:contractPackageHash/nfts/:tokenId', + ChangePassword = '/change-password' } diff --git a/src/background/index.ts b/src/background/index.ts index 446a15e42..cc3f66053 100644 --- a/src/background/index.ts +++ b/src/background/index.ts @@ -71,6 +71,7 @@ import { vaultUnlocked } from './redux/session/actions'; import { + changePassword, createAccount, initKeys, initVault, @@ -551,6 +552,7 @@ browser.runtime.onMessage.addListener( case getType(accountCasperActivityCountChanged): case getType(accountTrackingIdOfSentNftTokensChanged): case getType(accountTrackingIdOfSentNftTokensRemoved): + case getType(changePassword): store.dispatch(action); return sendResponse(undefined); diff --git a/src/background/redux/sagas/actions.ts b/src/background/redux/sagas/actions.ts index f2f4a7dfd..75abaa66a 100644 --- a/src/background/redux/sagas/actions.ts +++ b/src/background/redux/sagas/actions.ts @@ -26,3 +26,7 @@ export const initVault = createAction('INIT_VAULT_SAGA')<{ export const createAccount = createAction('CREATE_ACCOUNT_SAGA')<{ name?: string; }>(); + +export const changePassword = createAction('CHANGE_PASSWORD_SAGA')<{ + password: string; +}>(); diff --git a/src/background/redux/sagas/vault-sagas.ts b/src/background/redux/sagas/vault-sagas.ts index 882d1f683..f6f4746b8 100644 --- a/src/background/redux/sagas/vault-sagas.ts +++ b/src/background/redux/sagas/vault-sagas.ts @@ -3,6 +3,12 @@ import { getType } from 'typesafe-actions'; import { deriveKeyPair } from '@src/libs/crypto'; import { encryptVault } from '@src/libs/crypto/vault'; +import { + deriveEncryptionKey, + encodePassword, + generateRandomSaltHex +} from '@libs/crypto/hashing'; +import { convertBytesToHex } from '@libs/crypto/utils'; import { LOCK_VAULT_TIMEOUT, @@ -55,6 +61,7 @@ import { loginRetryCountReseted } from '../login-retry-count/actions'; import { popupWindowInit } from '../windowManagement/actions'; import { + changePassword, createAccount, lockVault, startBackground, @@ -99,19 +106,20 @@ export function* vaultSagas() { updateVaultCipher ); yield takeLatest(getType(createAccount), createAccountSaga); + yield takeLatest(getType(changePassword), changePasswordSaga); } /** * on lock destroy session, vault and deploys */ -function* lockVaultSaga(action: ReturnType) { +function* lockVaultSaga() { try { yield put(sessionReseted()); yield put(vaultReseted()); yield put(deploysReseted()); yield put(accountInfoReset()); - emitSdkEventToActiveTabs(tab => { + emitSdkEventToActiveTabs(() => { return sdkEvent.lockedEvent({ isLocked: true, isConnected: undefined, @@ -227,7 +235,7 @@ function* unlockVaultSaga(action: ReturnType) { /** * */ -function* timeoutCounterSaga(action: any) { +function* timeoutCounterSaga() { const delay = (ms: number) => new Promise(resolve => setTimeout(resolve, ms)); try { @@ -264,7 +272,7 @@ function* timeoutCounterSaga(action: any) { /** * update vault cipher on each vault update */ -function* updateVaultCipher(action: any) { +function* updateVaultCipher() { try { // get current encryption key const encryptionKeyHash = yield* sagaSelect(selectEncryptionKeyHash); @@ -316,3 +324,45 @@ function* createAccountSaga(action: ReturnType) { console.error(err); } } + +function* changePasswordSaga(action: ReturnType) { + try { + const { password } = action.payload; + + const passwordSaltHash = generateRandomSaltHex(); + const passwordHash = yield* sagaCall(() => + encodePassword(password, passwordSaltHash) + ); + const keyDerivationSaltHash = generateRandomSaltHex(); + const newEncryptionKeyBytes = yield* sagaCall(() => + deriveEncryptionKey(password, keyDerivationSaltHash) + ); + const newEncryptionKeyHash = convertBytesToHex(newEncryptionKeyBytes); + + yield put( + keysUpdated({ + passwordHash, + passwordSaltHash, + keyDerivationSaltHash + }) + ); + yield put( + encryptionKeyHashCreated({ encryptionKeyHash: newEncryptionKeyHash }) + ); + + const vault = yield* sagaSelect(selectVault); + + // encrypt cipher with the new key + const newVaultCipher = yield* sagaCall(() => + encryptVault(newEncryptionKeyHash, vault) + ); + + yield put( + vaultCipherCreated({ + vaultCipher: newVaultCipher + }) + ); + } catch (err) { + console.error(err); + } +} diff --git a/src/libs/ui/components/password-inputs/password-inputs.tsx b/src/libs/ui/components/password-inputs/password-inputs.tsx new file mode 100644 index 000000000..04a253288 --- /dev/null +++ b/src/libs/ui/components/password-inputs/password-inputs.tsx @@ -0,0 +1,91 @@ +import React, { useState } from 'react'; +import { Trans, useTranslation } from 'react-i18next'; +import { FieldErrors, UseFormRegister } from 'react-hook-form'; + +import { + Input, + InputValidationType, + PasswordInputType, + PasswordVisibilityIcon, + Typography +} from '@libs/ui'; +import { InputsContainer, ParagraphContainer, SpacingSize } from '@libs/layout'; +import { CreatePasswordFormValues } from '@libs/ui/forms/create-password'; +import { minPasswordLength } from '@libs/ui/forms/form-validation-rules'; + +interface PasswordInputsProps { + register: UseFormRegister; + errors: FieldErrors; + passwordLength: number; +} +export const PasswordInputs = ({ + register, + errors, + passwordLength +}: PasswordInputsProps) => { + const [passwordInputType, setPasswordInputType] = + useState('password'); + const [confirmPasswordInputType, setConfirmPasswordInputType] = + useState('password'); + + const { t } = useTranslation(); + + const needToAddMoreCharacters = minPasswordLength - passwordLength; + + return ( + <> + + + {needToAddMoreCharacters <= 0 ? ( + + Your password length is -{' '} + + {{ passwordLength }} characters. + + + ) : ( + + You need to add at least{' '} + + {{ needToAddMoreCharacters }} characters + {' '} + more. + + )} + + + + + + } + {...register('password')} + error={!!errors.password} + validationText={errors.password?.message} + /> + + } + {...register('confirmPassword')} + error={!!errors.confirmPassword} + validationText={errors.confirmPassword?.message} + /> + + + ); +}; diff --git a/src/libs/ui/index.ts b/src/libs/ui/index.ts index 65d2623d3..aabdbb68a 100644 --- a/src/libs/ui/index.ts +++ b/src/libs/ui/index.ts @@ -42,6 +42,7 @@ export * from './components/loading-activity-view/loading-activity-view'; export * from './components/recipient-dropdown-input/recipient-dropdown-input'; export * from './components/transfer-success-screen/transfer-succeess-screen'; export * from './components/contract-icon/contract-icon'; +export * from './components/password-inputs/password-inputs'; export * from './utils/match-media'; export * from './utils/match-size'; From ecaa90fcb5bb35e7a8fae527909a1fcc74d0cded Mon Sep 17 00:00:00 2001 From: Ostap Piatkovskyi <44294945+ost-ptk@users.noreply.github.com> Date: Thu, 12 Oct 2023 18:41:26 +0300 Subject: [PATCH 057/243] added a checkbox for setting the max transfer amount for CSPR transfer and some refactoring (#805) Co-authored-by: ost-ptk Co-authored-by: Vynnyk Dmytro --- src/apps/popup/pages/transfer/amount-step.tsx | 71 +++++++++++++++++-- src/libs/ui/components/checkbox/checkbox.tsx | 11 ++- src/libs/ui/components/input/input.tsx | 1 + src/libs/ui/forms/form-validation-rules.ts | 2 +- src/libs/ui/forms/transfer.ts | 6 +- 5 files changed, 81 insertions(+), 10 deletions(-) diff --git a/src/apps/popup/pages/transfer/amount-step.tsx b/src/apps/popup/pages/transfer/amount-step.tsx index 6271db2fb..6e50ab2e4 100644 --- a/src/apps/popup/pages/transfer/amount-step.tsx +++ b/src/apps/popup/pages/transfer/amount-step.tsx @@ -1,7 +1,8 @@ -import React from 'react'; +import React, { useEffect, useState } from 'react'; import { Trans, useTranslation } from 'react-i18next'; import { UseFormReturn, useWatch } from 'react-hook-form'; import { useSelector } from 'react-redux'; +import Big from 'big.js'; import { ContentContainer, @@ -9,10 +10,14 @@ import { SpacingSize, VerticalSpaceContainer } from '@libs/layout'; -import { Input, Typography } from '@libs/ui'; -import { formatFiatAmount } from '@libs/ui/utils/formatters'; +import { Checkbox, Input, Typography } from '@libs/ui'; +import { formatFiatAmount, motesToCSPR } from '@libs/ui/utils/formatters'; import { TransferAmountFormValues } from '@libs/ui/forms/transfer'; -import { selectAccountCurrencyRate } from '@background/redux/account-info/selectors'; +import { + selectAccountBalance, + selectAccountCurrencyRate +} from '@background/redux/account-info/selectors'; +import { TRANSFER_COST_MOTES, TRANSFER_MIN_AMOUNT_MOTES } from '@src/constants'; interface AmountStepProps { amountForm: UseFormReturn; @@ -21,14 +26,37 @@ interface AmountStepProps { } export const AmountStep = ({ amountForm, symbol, isCSPR }: AmountStepProps) => { + const [isChecked, setIsChecked] = useState(false); + const [disabled, setDisabled] = useState(false); + const [maxAmountMotes, setMaxAmountMotes] = useState('0'); + const { t } = useTranslation(); const currencyRate = useSelector(selectAccountCurrencyRate); + const csprBalance = useSelector(selectAccountBalance); + + useEffect(() => { + const maxAmountMotes: string = + csprBalance.amountMotes == null + ? '0' + : Big(csprBalance.amountMotes).sub(TRANSFER_COST_MOTES).toString(); + + const hasEnoughBalance = Big(maxAmountMotes).gte(TRANSFER_MIN_AMOUNT_MOTES); + const isMaxAmountEqualMinAmount = Big(maxAmountMotes).eq( + TRANSFER_MIN_AMOUNT_MOTES + ); + + setIsChecked(isMaxAmountEqualMinAmount); + setMaxAmountMotes(maxAmountMotes); + setDisabled(!hasEnoughBalance); + }, [csprBalance.amountMotes]); const { register, formState: { errors }, - control + control, + setValue, + trigger } = amountForm; const { onChange: onChangeTransferIdMemo } = register('transferIdMemo'); @@ -62,6 +90,17 @@ export const AmountStep = ({ amountForm, symbol, isCSPR }: AmountStepProps) => { + {isCSPR && disabled && ( + + + + You don't have enough CSPR to cover the transfer minimum amount + and the transaction fee. + + + + )} + { placeholder={t('0.00')} suffixText={symbol} {...register('amount')} + disabled={isCSPR && disabled} onChange={e => { // replace all non-numeric characters except decimal point e.target.value = e.target.value.replace(/[^0-9.]/g, ''); @@ -82,6 +122,26 @@ export const AmountStep = ({ amountForm, symbol, isCSPR }: AmountStepProps) => { /> + {isCSPR && ( + + { + if (isChecked) { + setValue('amount', motesToCSPR(TRANSFER_MIN_AMOUNT_MOTES)); + } else { + setValue('amount', motesToCSPR(maxAmountMotes)); + } + trigger('amount'); + setIsChecked(!isChecked); + }} + /> + + )} + {/** transferIdMemo is only relevant for CSPR */} {isCSPR ? ( @@ -90,6 +150,7 @@ export const AmountStep = ({ amountForm, symbol, isCSPR }: AmountStepProps) => { monotype placeholder={t('Enter numeric value')} {...register('transferIdMemo')} + disabled={disabled} onChange={e => { // replace all non-numeric characters e.target.value = e.target.value.replace(/[^0-9]/g, ''); diff --git a/src/libs/ui/components/checkbox/checkbox.tsx b/src/libs/ui/components/checkbox/checkbox.tsx index 7b766fab7..ba3bbdf6c 100644 --- a/src/libs/ui/components/checkbox/checkbox.tsx +++ b/src/libs/ui/components/checkbox/checkbox.tsx @@ -7,7 +7,8 @@ import FlexRow from '../flex-row/flex-row'; const StyledFlexRow = styled(FlexRow)<{ checked?: boolean; -}>(({ theme, checked }) => ({ + disabled?: boolean; +}>(({ theme, checked, disabled }) => ({ cursor: 'pointer', width: 'fit-content', pointerEvents: 'auto', @@ -18,7 +19,7 @@ const StyledFlexRow = styled(FlexRow)<{ } }, span: { - color: theme.color.contentPrimary + color: disabled ? theme.color.contentSecondary : theme.color.contentPrimary } })); @@ -39,9 +40,12 @@ export function Checkbox({ onChange, label, variant = 'circle', - dataTestId + dataTestId, + disabled }: CheckboxProps) { const handleClick = (ev: ChangeEvent) => { + if (disabled) return; + onChange && onChange(!checked); }; @@ -61,6 +65,7 @@ export function Checkbox({ checked={checked} onClick={handleClick} data-testid={dataTestId} + disabled={disabled} > {label && ( diff --git a/src/libs/ui/components/input/input.tsx b/src/libs/ui/components/input/input.tsx index 6fdf7d202..6ff44cd7e 100644 --- a/src/libs/ui/components/input/input.tsx +++ b/src/libs/ui/components/input/input.tsx @@ -208,6 +208,7 @@ export const Input = React.forwardRef(function Input( onFocus={handleFocus} data-testid={dataTestId} readOnly={readOnly} + disabled={disabled} autoComplete={autoComplete} /> diff --git a/src/libs/ui/forms/form-validation-rules.ts b/src/libs/ui/forms/form-validation-rules.ts index b96c4f3c1..504243a8b 100644 --- a/src/libs/ui/forms/form-validation-rules.ts +++ b/src/libs/ui/forms/form-validation-rules.ts @@ -169,7 +169,7 @@ export const useCsprAmountRule = (amountMotes: string | null) => { name: 'amountAboveBalance', test: csprAmountInputValue => { if (csprAmountInputValue) { - return Big(CSPRtoMotes(csprAmountInputValue)).lt(maxAmountMotes); + return Big(CSPRtoMotes(csprAmountInputValue)).lte(maxAmountMotes); } return false; diff --git a/src/libs/ui/forms/transfer.ts b/src/libs/ui/forms/transfer.ts index f1b671683..8536453e9 100644 --- a/src/libs/ui/forms/transfer.ts +++ b/src/libs/ui/forms/transfer.ts @@ -10,6 +10,8 @@ import { useTransferIdMemoRule } from '@libs/ui/forms/form-validation-rules'; import { yupResolver } from '@hookform/resolvers/yup/dist/yup'; +import { motesToCSPR } from '@libs/ui/utils/formatters'; +import { TRANSFER_MIN_AMOUNT_MOTES } from '@src/constants'; export type TransferRecipientFormValues = { recipientPublicKey: string; @@ -61,7 +63,9 @@ export function useTransferForm( ? { paymentAmount } - : {} + : { + amount: motesToCSPR(TRANSFER_MIN_AMOUNT_MOTES) + } }; return { From b70605bcede1cd0c31ac2e6a5849f93c748dff7a Mon Sep 17 00:00:00 2001 From: Ostap Piatkovskyi <44294945+ost-ptk@users.noreply.github.com> Date: Thu, 12 Oct 2023 18:42:49 +0300 Subject: [PATCH 058/243] fixed issue with words highlighting in the confirm secret phrase view (#823) Co-authored-by: ost-ptk Co-authored-by: Vynnyk Dmytro --- .../secret-phrase-words-view.tsx | 13 +++++++------ .../ui/components/secret-phrase-words-view/utils.ts | 4 +++- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/libs/ui/components/secret-phrase-words-view/secret-phrase-words-view.tsx b/src/libs/ui/components/secret-phrase-words-view/secret-phrase-words-view.tsx index 61b8ef9ff..3c18968bb 100644 --- a/src/libs/ui/components/secret-phrase-words-view/secret-phrase-words-view.tsx +++ b/src/libs/ui/components/secret-phrase-words-view/secret-phrase-words-view.tsx @@ -124,11 +124,12 @@ export function SecretPhraseWordsView({ >([]); const strPhrase = phrase.toString(); - const { initialPartialPhrase, initialHiddenWordIndexes } = useMemo( - () => buildInitialWordsCollection(phrase), - // eslint-disable-next-line react-hooks/exhaustive-deps - [strPhrase] - ); + const { initialPartialPhrase, initialHiddenWordIndexes, extraWordIndex } = + useMemo( + () => buildInitialWordsCollection(phrase), + // eslint-disable-next-line react-hooks/exhaustive-deps + [strPhrase] + ); if (partialPhrase.length === 0) { setPartialPhrase(initialPartialPhrase); @@ -226,7 +227,7 @@ export function SecretPhraseWordsView({ confirmationMode && hiddenWordIndexes.includes(index) && partialPhrase[index] != null && - selectedHiddenWordIndexes.includes(index) + index !== extraWordIndex } /> ); diff --git a/src/libs/ui/components/secret-phrase-words-view/utils.ts b/src/libs/ui/components/secret-phrase-words-view/utils.ts index 01c2b4d5c..207490850 100644 --- a/src/libs/ui/components/secret-phrase-words-view/utils.ts +++ b/src/libs/ui/components/secret-phrase-words-view/utils.ts @@ -17,6 +17,7 @@ function shuffle(list: number[]) { interface WordCollections { initialHiddenWordIndexes: number[]; initialPartialPhrase: PartialPhraseArray; + extraWordIndex: number; } export function buildInitialWordsCollection( @@ -41,8 +42,9 @@ export function buildInitialWordsCollection( i++; } } + const extraWordIndex = initialHiddenWordIndexes[6]; shuffle(initialHiddenWordIndexes); - return { initialHiddenWordIndexes, initialPartialPhrase }; + return { initialHiddenWordIndexes, initialPartialPhrase, extraWordIndex }; } From 59310a309b91a8d49f43600927347ded1e02caf9 Mon Sep 17 00:00:00 2001 From: Ostap Piatkovskyi <44294945+ost-ptk@users.noreply.github.com> Date: Sat, 14 Oct 2023 14:50:03 +0300 Subject: [PATCH 059/243] feature: add dark mode (#821) * added dark mode * merge conflict issues fixed * changed png images to svg * Fix DefaultTheme interface --------- Co-authored-by: ost-ptk Co-authored-by: Dmytro Vynnyk --- src/apps/connect-to-app/index.tsx | 7 +- .../pages/approve-connection/content.tsx | 2 +- .../pages/connecting/content.tsx | 2 +- src/apps/import-account-with-file/index.tsx | 7 +- .../content.tsx | 2 +- .../import-account-with-file/content.tsx | 2 +- .../onboarding/components/stepper/index.tsx | 4 +- src/apps/onboarding/index.tsx | 4 +- .../pages/create-vault-password/index.tsx | 4 +- .../pages/onboarding-success/content.tsx | 4 +- .../pages/unlock-wallet/content.tsx | 4 +- src/apps/popup/index.tsx | 7 +- .../popup/pages/account-settings/content.tsx | 2 +- .../popup/pages/account-settings/index.tsx | 2 +- .../popup/pages/activity-details/content.tsx | 3 +- .../pages/connect-another-account/index.tsx | 4 +- .../connected-sites/site-group-header.tsx | 2 +- .../popup/pages/create-account/content.tsx | 2 +- src/apps/popup/pages/home/index.tsx | 11 +- .../popup/pages/navigation-menu/index.tsx | 42 +- src/apps/popup/pages/nft-details/content.tsx | 3 +- .../pages/no-connected-account/index.tsx | 2 +- src/apps/popup/pages/receive/content.tsx | 4 +- src/apps/popup/pages/receive/index.tsx | 2 +- src/apps/popup/pages/remove-account/index.tsx | 2 +- src/apps/popup/pages/token-details/token.tsx | 6 +- src/apps/popup/pages/transfer-nft/content.tsx | 2 +- src/apps/popup/pages/transfer/amount-step.tsx | 2 +- src/apps/signature-request/index.tsx | 7 +- .../{illustrations => icons}/casper.svg | 0 src/assets/icons/connected-dark-big.svg | 3 + src/assets/icons/connected-dark.svg | 9 + src/assets/icons/connected-light-big.svg | 3 + src/assets/icons/connected-light.svg | 9 + .../{illustrations => icons}/connection.svg | 0 src/assets/icons/moon.svg | 3 + src/assets/icons/receive.svg | 2 +- src/assets/icons/reset.svg | 2 +- src/assets/icons/sun.svg | 3 + src/assets/icons/tick-in-circle.svg | 2 +- src/assets/icons/tick.svg | 2 +- src/assets/icons/transfer.svg | 2 +- src/assets/icons/unlink.svg | 2 +- src/assets/illustrations/account-imported.svg | 1198 ++++----- src/assets/illustrations/error.svg | 711 ------ .../illustrations/import-secret-key.svg | 865 +++++++ src/assets/illustrations/key-downloaded.svg | 696 +++--- src/assets/illustrations/locked-wallet.svg | 1766 ++++++------- .../illustrations/no-connected-sites.svg | 2224 ++++++++--------- src/assets/illustrations/no-connection.svg | 1704 ++++++------- src/assets/illustrations/password-lock.svg | 1560 ++++++------ src/assets/illustrations/password.svg | 830 +++--- src/assets/illustrations/remove-account.svg | 1488 +++++------ src/assets/illustrations/rename-account.svg | 1702 ++++++------- src/assets/illustrations/reset-wallet.svg | 1336 +++++----- src/assets/illustrations/secret-key.svg | 865 ------- src/assets/illustrations/success.svg | 1162 ++++----- src/assets/illustrations/wallet-connected.svg | 986 -------- src/assets/illustrations/wallet-ready.svg | 986 ++++++++ .../illustrations/wrong-secret-phrase.svg | 704 +++--- src/background/index.ts | 4 +- src/background/redux/settings/actions.ts | 4 + src/background/redux/settings/reducer.ts | 13 +- src/background/redux/settings/selectors.ts | 3 + src/background/redux/settings/types.ts | 1 + src/constants.ts | 6 + .../use-casper-token/use-casper-token.ts | 2 +- src/libs/layout/containers.ts | 12 +- .../layout/header/header-network-switcher.tsx | 20 +- .../header/header-submenu-bar-nav-link.tsx | 4 +- .../layout/header/header-view-in-explorer.tsx | 4 +- src/libs/layout/reset-vault/index.tsx | 2 +- .../account-activity-plate.tsx | 10 +- .../account-casper-activity-plate.tsx | 18 +- .../account-popover/account-popover.tsx | 20 +- src/libs/ui/components/avatar/avatar.tsx | 79 +- src/libs/ui/components/button/button.tsx | 76 +- src/libs/ui/components/checkbox/checkbox.tsx | 10 +- .../connection-status-badge.tsx | 4 +- .../deploy-status/deploy-status.tsx | 33 +- .../ui/components/form-field/form-field.tsx | 14 +- src/libs/ui/components/hash/hash.tsx | 4 +- src/libs/ui/components/input/input.tsx | 22 +- src/libs/ui/components/link/link.tsx | 35 +- src/libs/ui/components/list/list.tsx | 2 +- src/libs/ui/components/modal/modal.tsx | 4 +- .../components/popover-link/popover-link.tsx | 8 +- src/libs/ui/components/popover/popover.tsx | 4 +- .../copy-secret-phrase-bar.tsx | 4 +- .../secret-phrase-words-view/word-picker.tsx | 6 +- .../secret-phrase-words-view/word-tag.tsx | 9 +- .../components/svg-icon/svg-icon-social.tsx | 2 +- src/libs/ui/components/svg-icon/svg-icon.tsx | 11 +- src/libs/ui/components/tabs/tabs.tsx | 4 +- src/libs/ui/components/tag/tag.tsx | 2 +- src/libs/ui/components/textarea/textarea.tsx | 3 + src/libs/ui/components/toggle/toggle.tsx | 60 + src/libs/ui/components/tooltip/tooltip.tsx | 2 +- src/libs/ui/global-style.ts | 2 + src/libs/ui/index.ts | 2 + src/libs/ui/theme-config.ts | 167 +- src/libs/ui/utils/get-color-from-theme.ts | 72 +- .../ui/utils/get-linear-gradient-color.ts | 13 + 103 files changed, 10634 insertions(+), 11115 deletions(-) rename src/assets/{illustrations => icons}/casper.svg (100%) create mode 100644 src/assets/icons/connected-dark-big.svg create mode 100644 src/assets/icons/connected-dark.svg create mode 100644 src/assets/icons/connected-light-big.svg create mode 100644 src/assets/icons/connected-light.svg rename src/assets/{illustrations => icons}/connection.svg (100%) create mode 100644 src/assets/icons/moon.svg create mode 100644 src/assets/icons/sun.svg delete mode 100644 src/assets/illustrations/error.svg create mode 100644 src/assets/illustrations/import-secret-key.svg delete mode 100644 src/assets/illustrations/secret-key.svg delete mode 100644 src/assets/illustrations/wallet-connected.svg create mode 100644 src/assets/illustrations/wallet-ready.svg create mode 100644 src/libs/ui/components/toggle/toggle.tsx create mode 100644 src/libs/ui/utils/get-linear-gradient-color.ts diff --git a/src/apps/connect-to-app/index.tsx b/src/apps/connect-to-app/index.tsx index a11a08c09..1178bb570 100644 --- a/src/apps/connect-to-app/index.tsx +++ b/src/apps/connect-to-app/index.tsx @@ -6,7 +6,7 @@ import { Provider as ReduxProvider } from 'react-redux'; import { ThemeProvider } from 'styled-components'; import { AppRouter } from '@src/apps/connect-to-app/app-router'; -import { GlobalStyle, themeConfig } from '@libs/ui'; +import { GlobalStyle, lightTheme, darkTheme } from '@libs/ui'; import { ErrorBoundary } from '@src/libs/layout/error'; import { @@ -15,6 +15,7 @@ import { } from '@src/background/redux/utils'; import { connectWindowInit } from '@src/background/redux/windowManagement/actions'; import { useSubscribeToRedux } from '@src/hooks/use-subscribe-to-redux'; +import { selectDarkModeSetting } from '@background/redux/settings/selectors'; const Tree = () => { const [state, setState] = useState(null); @@ -30,9 +31,11 @@ const Tree = () => { const store = createMainStoreReplica(state); + const isDarkMode = selectDarkModeSetting(store.getState()); + return ( - + diff --git a/src/apps/connect-to-app/pages/approve-connection/content.tsx b/src/apps/connect-to-app/pages/approve-connection/content.tsx index 4372d64f2..2c077a6b5 100644 --- a/src/apps/connect-to-app/pages/approve-connection/content.tsx +++ b/src/apps/connect-to-app/pages/approve-connection/content.tsx @@ -59,7 +59,7 @@ export function ApproveConnectionContent({ contentTop={SpacingSize.Small} renderRow={listItem => ( - + {listItem.text} )} diff --git a/src/apps/connect-to-app/pages/connecting/content.tsx b/src/apps/connect-to-app/pages/connecting/content.tsx index 02da92c35..aaaf4900e 100644 --- a/src/apps/connect-to-app/pages/connecting/content.tsx +++ b/src/apps/connect-to-app/pages/connecting/content.tsx @@ -63,7 +63,7 @@ export function ConnectingContent({ origin }: ConnectingContentProps) { size={40} /> - + {/* TODO: handle null-favicon-url case */} {faviconUrl && } diff --git a/src/apps/import-account-with-file/index.tsx b/src/apps/import-account-with-file/index.tsx index d918d46c5..3d4c3f07e 100644 --- a/src/apps/import-account-with-file/index.tsx +++ b/src/apps/import-account-with-file/index.tsx @@ -10,11 +10,12 @@ import { createMainStoreReplica, PopupState } from '@src/background/redux/utils'; -import { GlobalStyle, themeConfig } from '@libs/ui'; +import { darkTheme, GlobalStyle, lightTheme } from '@libs/ui'; import { ErrorBoundary } from '@src/libs/layout/error'; import { AppRouter } from './app-router'; import { useSubscribeToRedux } from '@src/hooks/use-subscribe-to-redux'; +import { selectDarkModeSetting } from '@background/redux/settings/selectors'; const Tree = () => { const [state, setState] = useState(null); @@ -30,9 +31,11 @@ const Tree = () => { const store = createMainStoreReplica(state); + const isDarkMode = selectDarkModeSetting(store.getState()); + return ( - + diff --git a/src/apps/import-account-with-file/pages/import-account-with-file-upload/content.tsx b/src/apps/import-account-with-file/pages/import-account-with-file-upload/content.tsx index 19ec42954..9b0e5f866 100644 --- a/src/apps/import-account-with-file/pages/import-account-with-file-upload/content.tsx +++ b/src/apps/import-account-with-file/pages/import-account-with-file-upload/content.tsx @@ -47,7 +47,7 @@ export function ImportAccountWithFileUploadPageContent({ diff --git a/src/apps/import-account-with-file/pages/import-account-with-file/content.tsx b/src/apps/import-account-with-file/pages/import-account-with-file/content.tsx index 971c4192e..4d724933d 100644 --- a/src/apps/import-account-with-file/pages/import-account-with-file/content.tsx +++ b/src/apps/import-account-with-file/pages/import-account-with-file/content.tsx @@ -17,7 +17,7 @@ export function ImportAccountWithFileContentPage() { diff --git a/src/apps/onboarding/components/stepper/index.tsx b/src/apps/onboarding/components/stepper/index.tsx index 410534737..ce11521eb 100644 --- a/src/apps/onboarding/components/stepper/index.tsx +++ b/src/apps/onboarding/components/stepper/index.tsx @@ -18,8 +18,8 @@ const Step = styled.div` width: 8px; height: 8px; - background-color: ${({ theme, isActiveStep }) => - isActiveStep ? theme.color.fillRed : theme.color.fillSecondary}; + background: ${({ theme, isActiveStep }) => + isActiveStep ? theme.color.fillCritical : theme.color.fillNeutral}; border-radius: ${({ theme }) => theme.borderRadius.eight}px; `; diff --git a/src/apps/onboarding/index.tsx b/src/apps/onboarding/index.tsx index fd3ce593b..b3f59fe40 100644 --- a/src/apps/onboarding/index.tsx +++ b/src/apps/onboarding/index.tsx @@ -7,7 +7,7 @@ import { ThemeProvider } from 'styled-components'; import { ErrorBoundary } from '@src/libs/layout/error'; -import { GlobalStyle, themeConfig } from '@libs/ui'; +import { GlobalStyle, lightTheme } from '@libs/ui'; import { AppRouter } from '@src/apps/onboarding/app-router'; @@ -31,7 +31,7 @@ const Tree = () => { return ( - + diff --git a/src/apps/onboarding/pages/create-vault-password/index.tsx b/src/apps/onboarding/pages/create-vault-password/index.tsx index 77782772a..32e46977a 100644 --- a/src/apps/onboarding/pages/create-vault-password/index.tsx +++ b/src/apps/onboarding/pages/create-vault-password/index.tsx @@ -69,7 +69,7 @@ export function CreateVaultPasswordPage({ event.preventDefault(); window.open(TermsLink.Tos, '_blank'); }} - color="fillBlue" + color="contentAction" > Casper Wallet Terms of Service {' '} @@ -80,7 +80,7 @@ export function CreateVaultPasswordPage({ event.preventDefault(); window.open(TermsLink.Privacy, '_blank'); }} - color="fillBlue" + color="contentAction" > Privacy Policy diff --git a/src/apps/onboarding/pages/onboarding-success/content.tsx b/src/apps/onboarding/pages/onboarding-success/content.tsx index 2f4e2b429..6ee5fd69a 100644 --- a/src/apps/onboarding/pages/onboarding-success/content.tsx +++ b/src/apps/onboarding/pages/onboarding-success/content.tsx @@ -15,7 +15,7 @@ export function OnboardingSuccessPageContent() { return ( @@ -42,7 +42,7 @@ export function OnboardingSuccessPageContent() { Tip: If this is your first time using a cryptocurrency web wallet we highly recommend reading through the user guides on{' '} diff --git a/src/apps/onboarding/pages/unlock-wallet/content.tsx b/src/apps/onboarding/pages/unlock-wallet/content.tsx index 1f555a89d..efd610faf 100644 --- a/src/apps/onboarding/pages/unlock-wallet/content.tsx +++ b/src/apps/onboarding/pages/unlock-wallet/content.tsx @@ -11,10 +11,10 @@ import { import { PasswordInputType, Input, - SvgIcon, Typography, InputValidationType, - PasswordVisibilityIcon + PasswordVisibilityIcon, + SvgIcon } from '@libs/ui'; import { UnlockWalletFormValues } from '@src/libs/ui/forms/unlock-wallet'; diff --git a/src/apps/popup/index.tsx b/src/apps/popup/index.tsx index 382df91bf..ca275e9c1 100644 --- a/src/apps/popup/index.tsx +++ b/src/apps/popup/index.tsx @@ -3,12 +3,13 @@ import { render } from 'react-dom'; import { Provider as ReduxProvider } from 'react-redux'; import { ThemeProvider } from 'styled-components'; -import { GlobalStyle, themeConfig } from '@libs/ui'; +import { darkTheme, GlobalStyle, lightTheme } from '@libs/ui'; import { ErrorBoundary } from '@src/libs/layout/error'; import { useSubscribeToRedux } from '@src/hooks/use-subscribe-to-redux'; import { createMainStoreReplica, PopupState } from '@background/redux/utils'; import { popupWindowInit } from '@background/redux/windowManagement/actions'; +import { selectDarkModeSetting } from '@background/redux/settings/selectors'; import { AppRouter } from './app-router'; @@ -29,9 +30,11 @@ const Tree = () => { const store = createMainStoreReplica(state); + const isDarkMode = selectDarkModeSetting(store.getState()); + return ( - + diff --git a/src/apps/popup/pages/account-settings/content.tsx b/src/apps/popup/pages/account-settings/content.tsx index 5f93bdea1..0c36362d7 100644 --- a/src/apps/popup/pages/account-settings/content.tsx +++ b/src/apps/popup/pages/account-settings/content.tsx @@ -105,7 +105,7 @@ function AccountIconButton({ type }: AccountIconButtonProps) { return ( { - + Send @@ -205,7 +206,7 @@ export function HomePageContent() { color="contentOnFill" /> - + Receive @@ -220,7 +221,7 @@ export function HomePageContent() { color="contentOnFill" /> - + Buy diff --git a/src/apps/popup/pages/navigation-menu/index.tsx b/src/apps/popup/pages/navigation-menu/index.tsx index f5efcf46f..b53f95f58 100644 --- a/src/apps/popup/pages/navigation-menu/index.tsx +++ b/src/apps/popup/pages/navigation-menu/index.tsx @@ -15,17 +15,21 @@ import { SpaceBetweenFlexRow, SpacingSize } from '@src/libs/layout'; -import { SvgIcon, Typography, List, Link } from '@src/libs/ui'; +import { SvgIcon, Typography, List, Link, Toggle } from '@src/libs/ui'; import { selectCountOfConnectedSites, selectVaultHasImportedAccount } from '@src/background/redux/vault/selectors'; -import { selectTimeoutDurationSetting } from '@src/background/redux/settings/selectors'; +import { + selectDarkModeSetting, + selectTimeoutDurationSetting +} from '@src/background/redux/settings/selectors'; import { dispatchToMainStore } from '@src/background/redux/utils'; import { lockVault } from '@src/background/redux/sagas/actions'; import { TimeoutDurationSetting } from '@popup/constants'; import { isSafariBuild } from '@src/utils'; +import { darkModeSettingChanged } from '@background/redux/settings/actions'; interface ListItemClickableContainerProps { disabled: boolean; @@ -40,7 +44,7 @@ const ListItemClickableContainer = styled( cursor: ${({ disabled }) => (disabled ? 'not-allowed' : 'pointer')}; &:hover svg { - color: ${({ theme }) => theme.color.contentBlue}; + color: ${({ theme }) => theme.color.contentAction}; } `; @@ -58,6 +62,7 @@ interface MenuItem { currentValue?: string | number; handleOnClick?: () => void; hide?: boolean; + toggleButton?: boolean; } interface MenuGroup { @@ -72,6 +77,7 @@ export function NavigationMenuPageContent() { const timeoutDurationSetting = useSelector(selectTimeoutDurationSetting); const countOfConnectedSites = useSelector(selectCountOfConnectedSites); const vaultHasImportedAccount = useSelector(selectVaultHasImportedAccount); + const isDarkMode = useSelector(selectDarkModeSetting); const { openWindow } = useWindowManager(); const { closeNavigationMenu } = useNavigationMenu(); @@ -150,6 +156,15 @@ export function NavigationMenuPageContent() { closeNavigationMenu(); navigate(RouterPath.Timeout); } + }, + { + id: 3, + title: t('Dark mode'), + iconPath: isDarkMode + ? 'assets/icons/sun.svg' + : 'assets/icons/moon.svg', + toggleButton: true, + disabled: false } ] }, @@ -213,12 +228,13 @@ export function NavigationMenuPageContent() { ], [ t, - navigate, - openWindow, - closeNavigationMenu, countOfConnectedSites, timeoutDurationSetting, - vaultHasImportedAccount + isDarkMode, + vaultHasImportedAccount, + closeNavigationMenu, + navigate, + openWindow ] ); @@ -248,7 +264,7 @@ export function NavigationMenuPageContent() { @@ -272,10 +288,18 @@ export function NavigationMenuPageContent() { {groupItem.title} )} {groupItem.currentValue != null && ( - + {groupItem.currentValue} )} + {groupItem.toggleButton && ( + + dispatchToMainStore(darkModeSettingChanged()) + } + /> + )} )} diff --git a/src/apps/popup/pages/nft-details/content.tsx b/src/apps/popup/pages/nft-details/content.tsx index 5127a36bc..f61d4fe9c 100644 --- a/src/apps/popup/pages/nft-details/content.tsx +++ b/src/apps/popup/pages/nft-details/content.tsx @@ -304,10 +304,9 @@ export const NftDetailsContent = ({ color="contentOnFill" /> - {/* rename color names after dark mode will be merge */} Send diff --git a/src/apps/popup/pages/no-connected-account/index.tsx b/src/apps/popup/pages/no-connected-account/index.tsx index d9aa6b951..a4119e8d0 100644 --- a/src/apps/popup/pages/no-connected-account/index.tsx +++ b/src/apps/popup/pages/no-connected-account/index.tsx @@ -8,7 +8,7 @@ import { FooterButtonsAbsoluteContainer, SpacingSize } from '@src/libs/layout'; -import { Typography, SvgIcon, Button } from '@libs/ui'; +import { Typography, Button, SvgIcon } from '@libs/ui'; import { useTypedNavigate, RouterPath } from '@popup/router'; diff --git a/src/apps/popup/pages/receive/content.tsx b/src/apps/popup/pages/receive/content.tsx index b9fa31924..18d9cb92d 100644 --- a/src/apps/popup/pages/receive/content.tsx +++ b/src/apps/popup/pages/receive/content.tsx @@ -30,7 +30,7 @@ const HashContainer = styled.div` cursor: pointer; &:hover span { - color: ${({ theme }) => theme.color.contentBlue}; + color: ${({ theme }) => theme.color.contentAction}; } `; @@ -97,7 +97,7 @@ export const ReceivePageContent = () => { }} /> {isClicked ? ( - + Address copied! ) : ( diff --git a/src/apps/popup/pages/receive/index.tsx b/src/apps/popup/pages/receive/index.tsx index 8f8237f1f..6d3dce1f3 100644 --- a/src/apps/popup/pages/receive/index.tsx +++ b/src/apps/popup/pages/receive/index.tsx @@ -40,7 +40,7 @@ export const ReceivePage = () => { - + Send @@ -151,7 +151,7 @@ export const Token = ({ erc20Tokens }: TokenProps) => { - + Receive @@ -170,7 +170,7 @@ export const Token = ({ erc20Tokens }: TokenProps) => { color="contentOnFill" /> - + Buy diff --git a/src/apps/popup/pages/transfer-nft/content.tsx b/src/apps/popup/pages/transfer-nft/content.tsx index 4252328e5..59979db71 100644 --- a/src/apps/popup/pages/transfer-nft/content.tsx +++ b/src/apps/popup/pages/transfer-nft/content.tsx @@ -130,7 +130,7 @@ export const TransferNftContent = ({ {haveReverseOwnerLookUp && ( - + Sorry, but we don’t support the reverse look-up modality diff --git a/src/apps/popup/pages/transfer/amount-step.tsx b/src/apps/popup/pages/transfer/amount-step.tsx index 6e50ab2e4..29b923844 100644 --- a/src/apps/popup/pages/transfer/amount-step.tsx +++ b/src/apps/popup/pages/transfer/amount-step.tsx @@ -92,7 +92,7 @@ export const AmountStep = ({ amountForm, symbol, isCSPR }: AmountStepProps) => { {isCSPR && disabled && ( - + You don't have enough CSPR to cover the transfer minimum amount and the transaction fee. diff --git a/src/apps/signature-request/index.tsx b/src/apps/signature-request/index.tsx index 115ae5565..e08c2b2b6 100644 --- a/src/apps/signature-request/index.tsx +++ b/src/apps/signature-request/index.tsx @@ -5,7 +5,7 @@ import { render } from 'react-dom'; import { ThemeProvider } from 'styled-components'; import { Provider as ReduxProvider } from 'react-redux/es/exports'; -import { GlobalStyle, themeConfig } from '@libs/ui'; +import { darkTheme, GlobalStyle, lightTheme } from '@libs/ui'; import { signWindowInit } from '@background/redux/windowManagement/actions'; import { createMainStoreReplica, PopupState } from '@background/redux/utils'; @@ -13,6 +13,7 @@ import { ErrorBoundary } from '@src/libs/layout/error'; import { AppRouter } from './app-router'; import { useSubscribeToRedux } from '@src/hooks/use-subscribe-to-redux'; +import { selectDarkModeSetting } from '@background/redux/settings/selectors'; const Tree = () => { const [state, setState] = useState(null); @@ -28,9 +29,11 @@ const Tree = () => { const store = createMainStoreReplica(state); + const isDarkMode = selectDarkModeSetting(store.getState()); + return ( - + diff --git a/src/assets/illustrations/casper.svg b/src/assets/icons/casper.svg similarity index 100% rename from src/assets/illustrations/casper.svg rename to src/assets/icons/casper.svg diff --git a/src/assets/icons/connected-dark-big.svg b/src/assets/icons/connected-dark-big.svg new file mode 100644 index 000000000..a5753f312 --- /dev/null +++ b/src/assets/icons/connected-dark-big.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/connected-dark.svg b/src/assets/icons/connected-dark.svg new file mode 100644 index 000000000..73a5e661b --- /dev/null +++ b/src/assets/icons/connected-dark.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/icons/connected-light-big.svg b/src/assets/icons/connected-light-big.svg new file mode 100644 index 000000000..69dff75dc --- /dev/null +++ b/src/assets/icons/connected-light-big.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/connected-light.svg b/src/assets/icons/connected-light.svg new file mode 100644 index 000000000..16a32e784 --- /dev/null +++ b/src/assets/icons/connected-light.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/illustrations/connection.svg b/src/assets/icons/connection.svg similarity index 100% rename from src/assets/illustrations/connection.svg rename to src/assets/icons/connection.svg diff --git a/src/assets/icons/moon.svg b/src/assets/icons/moon.svg new file mode 100644 index 000000000..0b5805b6c --- /dev/null +++ b/src/assets/icons/moon.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/receive.svg b/src/assets/icons/receive.svg index d917f7033..b39fa23f5 100644 --- a/src/assets/icons/receive.svg +++ b/src/assets/icons/receive.svg @@ -1,3 +1,3 @@ - + diff --git a/src/assets/icons/reset.svg b/src/assets/icons/reset.svg index 76d4ec6d3..9d6c4690d 100644 --- a/src/assets/icons/reset.svg +++ b/src/assets/icons/reset.svg @@ -1,3 +1,3 @@ - + diff --git a/src/assets/icons/sun.svg b/src/assets/icons/sun.svg new file mode 100644 index 000000000..8283b5453 --- /dev/null +++ b/src/assets/icons/sun.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/tick-in-circle.svg b/src/assets/icons/tick-in-circle.svg index 92aab2241..bd41f3ab3 100644 --- a/src/assets/icons/tick-in-circle.svg +++ b/src/assets/icons/tick-in-circle.svg @@ -1,3 +1,3 @@ - + diff --git a/src/assets/icons/tick.svg b/src/assets/icons/tick.svg index 9d3158046..01f9be575 100644 --- a/src/assets/icons/tick.svg +++ b/src/assets/icons/tick.svg @@ -1,3 +1,3 @@ - + diff --git a/src/assets/icons/transfer.svg b/src/assets/icons/transfer.svg index 46d38b846..a69af4226 100644 --- a/src/assets/icons/transfer.svg +++ b/src/assets/icons/transfer.svg @@ -1,3 +1,3 @@ - + diff --git a/src/assets/icons/unlink.svg b/src/assets/icons/unlink.svg index 3fa504f49..8fd2d0606 100644 --- a/src/assets/icons/unlink.svg +++ b/src/assets/icons/unlink.svg @@ -1,3 +1,3 @@ - + diff --git a/src/assets/illustrations/account-imported.svg b/src/assets/illustrations/account-imported.svg index 2c629c1eb..39c7fdaa5 100644 --- a/src/assets/illustrations/account-imported.svg +++ b/src/assets/illustrations/account-imported.svg @@ -1,599 +1,599 @@ - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - + + - - + + - - + + - - - - - - - - - - + + + + + + + + + + - + @@ -602,40 +602,40 @@ - + - + - + - + - + - + - + - + - + @@ -645,7 +645,7 @@ - + @@ -654,7 +654,7 @@ - + @@ -667,7 +667,7 @@ - + diff --git a/src/assets/illustrations/error.svg b/src/assets/illustrations/error.svg deleted file mode 100644 index 6647b054e..000000000 --- a/src/assets/illustrations/error.svg +++ /dev/null @@ -1,711 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/assets/illustrations/import-secret-key.svg b/src/assets/illustrations/import-secret-key.svg new file mode 100644 index 000000000..5398f0928 --- /dev/null +++ b/src/assets/illustrations/import-secret-key.svg @@ -0,0 +1,865 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/illustrations/key-downloaded.svg b/src/assets/illustrations/key-downloaded.svg index 6b1a87f61..809f48676 100644 --- a/src/assets/illustrations/key-downloaded.svg +++ b/src/assets/illustrations/key-downloaded.svg @@ -1,349 +1,349 @@ - - - - - - - - - + + + + + + + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + @@ -356,7 +356,7 @@ - + @@ -369,7 +369,7 @@ - + @@ -380,7 +380,7 @@ - + @@ -393,35 +393,35 @@ - + - + - + - + - + - + - + - + diff --git a/src/assets/illustrations/locked-wallet.svg b/src/assets/illustrations/locked-wallet.svg index f922b9497..069d8d642 100644 --- a/src/assets/illustrations/locked-wallet.svg +++ b/src/assets/illustrations/locked-wallet.svg @@ -1,904 +1,904 @@ - - - - - - - - - + + + + + + + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - + + - - + + - - + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - + - + - + - + - + @@ -908,15 +908,15 @@ - + - + - + diff --git a/src/assets/illustrations/no-connected-sites.svg b/src/assets/illustrations/no-connected-sites.svg index e7a21eab2..4369b5e65 100644 --- a/src/assets/illustrations/no-connected-sites.svg +++ b/src/assets/illustrations/no-connected-sites.svg @@ -1,1153 +1,1153 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - + - + - + - + - + - + - + - + - + - + - + - + @@ -1155,71 +1155,71 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -1228,11 +1228,11 @@ - + - + diff --git a/src/assets/illustrations/no-connection.svg b/src/assets/illustrations/no-connection.svg index d07525af0..eaeb7ccdb 100644 --- a/src/assets/illustrations/no-connection.svg +++ b/src/assets/illustrations/no-connection.svg @@ -1,849 +1,849 @@ - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - - - - - - - - + + + + + + + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - + - + @@ -852,7 +852,7 @@ - + @@ -861,7 +861,7 @@ - + @@ -871,11 +871,11 @@ - + - + @@ -888,26 +888,26 @@ - + - + - + - + @@ -916,19 +916,19 @@ - + - + - + - + @@ -937,7 +937,7 @@ - + @@ -951,7 +951,7 @@ - + @@ -963,25 +963,25 @@ - + - + - + - + @@ -994,11 +994,11 @@ - + - + diff --git a/src/assets/illustrations/password-lock.svg b/src/assets/illustrations/password-lock.svg index f73a3187d..05bffa61d 100644 --- a/src/assets/illustrations/password-lock.svg +++ b/src/assets/illustrations/password-lock.svg @@ -1,792 +1,792 @@ - - - - - - - - - + + + + + + + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - + + - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + @@ -796,7 +796,7 @@ - + @@ -804,7 +804,7 @@ - + @@ -812,15 +812,15 @@ - + - + - + @@ -829,7 +829,7 @@ - + @@ -842,13 +842,13 @@ - + - + @@ -856,7 +856,7 @@ - + @@ -869,20 +869,20 @@ - + - + - + diff --git a/src/assets/illustrations/password.svg b/src/assets/illustrations/password.svg index 03c37e9b8..6e12f1f32 100644 --- a/src/assets/illustrations/password.svg +++ b/src/assets/illustrations/password.svg @@ -1,428 +1,428 @@ - - - - - - + + + + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + @@ -433,31 +433,31 @@ - + - + - + - + - + - + - + diff --git a/src/assets/illustrations/remove-account.svg b/src/assets/illustrations/remove-account.svg index f95cb223b..d5d7efe9c 100644 --- a/src/assets/illustrations/remove-account.svg +++ b/src/assets/illustrations/remove-account.svg @@ -1,738 +1,738 @@ - - - - + + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - + - + - + @@ -743,30 +743,30 @@ - + - + - + - + - + - + @@ -777,35 +777,35 @@ - + - + - + - + - + - + - + - + @@ -813,7 +813,7 @@ - + @@ -821,7 +821,7 @@ - + @@ -829,7 +829,7 @@ - + @@ -837,17 +837,29 @@ - + - + - + + + + + + + + + + + + + diff --git a/src/assets/illustrations/rename-account.svg b/src/assets/illustrations/rename-account.svg index 74daff712..124161a53 100644 --- a/src/assets/illustrations/rename-account.svg +++ b/src/assets/illustrations/rename-account.svg @@ -1,858 +1,862 @@ - - - - - + + + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - + - - - - + + + + + + + + - + - + - + @@ -862,26 +866,26 @@ - + - + - + - + - + @@ -893,27 +897,27 @@ - + - + - + - + - + - + diff --git a/src/assets/illustrations/reset-wallet.svg b/src/assets/illustrations/reset-wallet.svg index 85f2991e2..109c044c9 100644 --- a/src/assets/illustrations/reset-wallet.svg +++ b/src/assets/illustrations/reset-wallet.svg @@ -1,673 +1,673 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - + + - - + + - - + + - - - - - - - - - - + + + + + + + + + + - + - + @@ -676,7 +676,7 @@ - + @@ -685,11 +685,11 @@ - + - + @@ -698,7 +698,7 @@ - + @@ -707,14 +707,14 @@ - + - + @@ -723,7 +723,7 @@ - + @@ -732,7 +732,7 @@ - + @@ -740,7 +740,7 @@ - + @@ -748,7 +748,7 @@ - + @@ -756,7 +756,7 @@ - + diff --git a/src/assets/illustrations/secret-key.svg b/src/assets/illustrations/secret-key.svg deleted file mode 100644 index 6524636ef..000000000 --- a/src/assets/illustrations/secret-key.svg +++ /dev/null @@ -1,865 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/assets/illustrations/success.svg b/src/assets/illustrations/success.svg index bffdbdf6a..4e5a98732 100644 --- a/src/assets/illustrations/success.svg +++ b/src/assets/illustrations/success.svg @@ -1,580 +1,580 @@ - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - + - + @@ -583,7 +583,7 @@ - + @@ -591,11 +591,11 @@ - + - + @@ -603,15 +603,15 @@ - + - + - + @@ -619,11 +619,11 @@ - + - + @@ -631,7 +631,7 @@ - + @@ -639,11 +639,11 @@ - + - + @@ -656,7 +656,7 @@ - + @@ -666,7 +666,7 @@ - + diff --git a/src/assets/illustrations/wallet-connected.svg b/src/assets/illustrations/wallet-connected.svg deleted file mode 100644 index e445fbb07..000000000 --- a/src/assets/illustrations/wallet-connected.svg +++ /dev/null @@ -1,986 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/assets/illustrations/wallet-ready.svg b/src/assets/illustrations/wallet-ready.svg new file mode 100644 index 000000000..4da2e0157 --- /dev/null +++ b/src/assets/illustrations/wallet-ready.svg @@ -0,0 +1,986 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/illustrations/wrong-secret-phrase.svg b/src/assets/illustrations/wrong-secret-phrase.svg index e63540d6f..eacbdb936 100644 --- a/src/assets/illustrations/wrong-secret-phrase.svg +++ b/src/assets/illustrations/wrong-secret-phrase.svg @@ -1,362 +1,362 @@ - - - - - - - - - - + + + + + + + + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + @@ -367,12 +367,12 @@ - + - + @@ -384,7 +384,7 @@ - + @@ -396,7 +396,7 @@ - + @@ -408,7 +408,7 @@ - + @@ -420,7 +420,7 @@ - + @@ -432,7 +432,7 @@ - + @@ -444,11 +444,11 @@ - + - + @@ -460,11 +460,11 @@ - + - + @@ -472,7 +472,7 @@ - + @@ -484,12 +484,12 @@ - + - + @@ -497,17 +497,17 @@ - + - + - + @@ -515,19 +515,19 @@ - + - + - + @@ -539,7 +539,7 @@ - + @@ -551,7 +551,7 @@ - + @@ -563,7 +563,7 @@ - + @@ -575,7 +575,7 @@ - + @@ -587,7 +587,7 @@ - + @@ -599,11 +599,11 @@ - + - + @@ -615,7 +615,7 @@ - + diff --git a/src/background/index.ts b/src/background/index.ts index cc3f66053..2c16cc549 100644 --- a/src/background/index.ts +++ b/src/background/index.ts @@ -97,7 +97,8 @@ import { loginRetryLockoutTimeSet } from './redux/login-retry-lockout-time/actio import { lastActivityTimeRefreshed } from './redux/last-activity-time/actions'; import { activeNetworkSettingChanged, - activeTimeoutDurationSettingChanged + activeTimeoutDurationSettingChanged, + darkModeSettingChanged } from './redux/settings/actions'; import { activeOriginChanged } from './redux/active-origin/actions'; import { selectApiConfigBasedOnActiveNetwork } from './redux/settings/selectors'; @@ -513,6 +514,7 @@ browser.runtime.onMessage.addListener( case getType(activeAccountChanged): case getType(activeTimeoutDurationSettingChanged): case getType(activeNetworkSettingChanged): + case getType(darkModeSettingChanged): case getType(lastActivityTimeRefreshed): case getType(siteConnected): case getType(anotherAccountConnected): diff --git a/src/background/redux/settings/actions.ts b/src/background/redux/settings/actions.ts index 9921ebb03..68071a61a 100644 --- a/src/background/redux/settings/actions.ts +++ b/src/background/redux/settings/actions.ts @@ -10,3 +10,7 @@ export const activeTimeoutDurationSettingChanged = createAction( export const activeNetworkSettingChanged = createAction( 'ACTIVE_NETWORK_SETTING_CHANGED' )(); + +export const darkModeSettingChanged = createAction( + 'DARK_MODE_SETTING_CHANGED' +)(); diff --git a/src/background/redux/settings/reducer.ts b/src/background/redux/settings/reducer.ts index 6b2be8183..8d6c02d2c 100644 --- a/src/background/redux/settings/reducer.ts +++ b/src/background/redux/settings/reducer.ts @@ -5,13 +5,15 @@ import { NetworkSetting } from '@src/constants'; import { activeNetworkSettingChanged, - activeTimeoutDurationSettingChanged + activeTimeoutDurationSettingChanged, + darkModeSettingChanged } from './actions'; import { SettingsState } from './types'; const initialState: SettingsState = { activeNetwork: NetworkSetting.Mainnet, - activeTimeoutDuration: TimeoutDurationSetting['5 min'] + activeTimeoutDuration: TimeoutDurationSetting['5 min'], + isDarkMode: false }; export const reducer = createReducer(initialState) @@ -28,4 +30,11 @@ export const reducer = createReducer(initialState) ...state, activeNetwork: payload }) + ) + .handleAction( + darkModeSettingChanged, + (state): SettingsState => ({ + ...state, + isDarkMode: !state.isDarkMode + }) ); diff --git a/src/background/redux/settings/selectors.ts b/src/background/redux/settings/selectors.ts index c3c598adf..62d11254a 100644 --- a/src/background/redux/settings/selectors.ts +++ b/src/background/redux/settings/selectors.ts @@ -38,3 +38,6 @@ export const selectApiConfigBasedOnActiveNetwork = createSelector( } } ); + +export const selectDarkModeSetting = (state: RootState) => + state.settings.isDarkMode; diff --git a/src/background/redux/settings/types.ts b/src/background/redux/settings/types.ts index 85d04900c..a22e44cc1 100644 --- a/src/background/redux/settings/types.ts +++ b/src/background/redux/settings/types.ts @@ -4,4 +4,5 @@ import { NetworkSetting } from '@src/constants'; export interface SettingsState { activeTimeoutDuration: TimeoutDurationSetting; activeNetwork: NetworkSetting; + isDarkMode: boolean; } diff --git a/src/constants.ts b/src/constants.ts index b0e59f247..0ca8ec244 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -101,6 +101,12 @@ export const TypeIcons = { [TransferType.Unknown]: 'assets/icons/info.svg' }; +export const TypeColors = { + [TransferType.Sent]: 'contentAction', + [TransferType.Received]: 'contentPositive', + [TransferType.Unknown]: 'contentDisabled' +}; + export enum HomePageTabName { Tokens = 'Tokens', Deploys = 'Deploys', diff --git a/src/hooks/use-casper-token/use-casper-token.ts b/src/hooks/use-casper-token/use-casper-token.ts index 46ec86037..6ad4d1cde 100644 --- a/src/hooks/use-casper-token/use-casper-token.ts +++ b/src/hooks/use-casper-token/use-casper-token.ts @@ -36,7 +36,7 @@ export const useCasperToken = () => { amount, amountFiat: balance.amountFiat, symbol: 'CSPR', - icon: '/assets/illustrations/casper.svg' + icon: '/assets/icons/casper.svg' }); }, [amount, balance]); diff --git a/src/libs/layout/containers.ts b/src/libs/layout/containers.ts index 38a216831..a1da5fb9e 100644 --- a/src/libs/layout/containers.ts +++ b/src/libs/layout/containers.ts @@ -1,7 +1,10 @@ import styled, { css } from 'styled-components'; +import { getLinearGradientColor } from '@libs/ui/utils/get-linear-gradient-color'; +import { hexToRGBA } from '@libs/ui/utils/hex-to-rgba'; // Be careful when importing dependencies here -// Import of getColorFromTheme from '@libs/ui' cause huge problems with webpack bundle and lead to blank popups +// Import of getColorFromTheme or getLinearGradientColor from '@libs/ui' +// cause huge problems with webpack bundle and lead to blank popups export enum SpacingSize { None = 'none', @@ -150,7 +153,8 @@ export const SpaceAroundFlexColumn = styled(FlexColumn)` `; export const HeaderContainer = styled(AlignedSpaceBetweenFlexRow)` - background-color: ${({ theme }) => theme.color.backgroundRed}; + background: ${({ theme }) => + getLinearGradientColor(theme.color.backgroundRed)}; height: 72px; padding: 0 16px; @@ -289,7 +293,7 @@ export const Overlay = styled.div` height: 100vh; width: 100vw; - background: rgba(0, 0, 0, 0.32); + background: ${({ theme }) => hexToRGBA(theme.color.black, '0.32')}; `; export const AccountActivityPlateContainer = styled(AlignedSpaceBetweenFlexRow)` @@ -310,7 +314,7 @@ export const ActivityPlateIconCircleContainer = styled(CenteredFlexRow)` margin-right: 4px; - background-color: ${({ theme }) => theme.color.fillSecondary}; + background: ${({ theme }) => theme.color.fillNeutral}; border-radius: ${({ theme }) => theme.borderRadius.hundred}px; `; diff --git a/src/libs/layout/header/header-network-switcher.tsx b/src/libs/layout/header/header-network-switcher.tsx index 3114c3f09..79c7b3dc7 100644 --- a/src/libs/layout/header/header-network-switcher.tsx +++ b/src/libs/layout/header/header-network-switcher.tsx @@ -3,7 +3,7 @@ import { useSelector } from 'react-redux'; import styled from 'styled-components'; import { AlignedFlexRow, SpaceBetweenFlexRow, SpacingSize } from '@libs/layout'; -import { SvgIcon, Typography, Modal } from '@libs/ui'; +import { SvgIcon, Typography, Modal, hexToRGBA } from '@libs/ui'; import { selectActiveNetworkSetting } from '@background/redux/settings/selectors'; import { dispatchToMainStore } from '@background/redux/utils'; @@ -11,7 +11,7 @@ import { activeNetworkSettingChanged } from '@background/redux/settings/actions' import { NetworkSetting } from '@src/constants'; const NetworkSwitcherContainer = styled(AlignedFlexRow)` - background-color: rgb(0, 0, 0, 0.16); + background-color: ${({ theme }) => hexToRGBA(theme.color.black, '0.16')}; padding: 4px 8px; border-radius: ${({ theme }) => theme.borderRadius.hundred}px; `; @@ -62,12 +62,16 @@ export const HeaderNetworkSwitcher = () => { {NetworkSetting.Mainnet} {activeNetwork === NetworkSetting.Mainnet && ( - + )} { {NetworkSetting.Testnet} {activeNetwork === NetworkSetting.Testnet && ( - + )} diff --git a/src/libs/layout/header/header-submenu-bar-nav-link.tsx b/src/libs/layout/header/header-submenu-bar-nav-link.tsx index 1a0438556..333947396 100644 --- a/src/libs/layout/header/header-submenu-bar-nav-link.tsx +++ b/src/libs/layout/header/header-submenu-bar-nav-link.tsx @@ -106,7 +106,7 @@ interface NavLinkProps { function NavLink({ label, onClick, withLeftChevronIcon }: NavLinkProps) { const LinkComponent = ( - + {label} ); @@ -118,7 +118,7 @@ function NavLink({ label, onClick, withLeftChevronIcon }: NavLinkProps) { {LinkComponent} diff --git a/src/libs/layout/header/header-view-in-explorer.tsx b/src/libs/layout/header/header-view-in-explorer.tsx index 1d86a6095..52f8c4aed 100644 --- a/src/libs/layout/header/header-view-in-explorer.tsx +++ b/src/libs/layout/header/header-view-in-explorer.tsx @@ -111,10 +111,10 @@ export function HeaderViewInExplorer({ > - + CSPR.live - + diff --git a/src/libs/layout/reset-vault/index.tsx b/src/libs/layout/reset-vault/index.tsx index 412a51368..e6fc0c04f 100644 --- a/src/libs/layout/reset-vault/index.tsx +++ b/src/libs/layout/reset-vault/index.tsx @@ -8,7 +8,7 @@ import { FooterButtonsAbsoluteContainer, SpacingSize } from '@src/libs/layout/containers'; -import { SvgIcon, Typography, Button, Checkbox } from '@src/libs/ui'; +import { Typography, Button, Checkbox, SvgIcon } from '@src/libs/ui'; import { useTypedNavigate } from '@popup/router'; import { dispatchToMainStore } from '@src/background/redux/utils'; diff --git a/src/libs/ui/components/account-activity-plate/account-activity-plate.tsx b/src/libs/ui/components/account-activity-plate/account-activity-plate.tsx index 3ee49b690..41e667f36 100644 --- a/src/libs/ui/components/account-activity-plate/account-activity-plate.tsx +++ b/src/libs/ui/components/account-activity-plate/account-activity-plate.tsx @@ -14,6 +14,7 @@ import { RightAlignedCenteredFlexRow } from '@libs/layout'; import { + ContentColor, DeployStatus, Hash, HashVariant, @@ -37,6 +38,7 @@ import { RouterPath, useTypedNavigate } from '@popup/router'; import { ShortTypeName, TransferType, + TypeColors, TypeIcons, TypeName } from '@src/constants'; @@ -158,7 +160,13 @@ export const AccountActivityPlate = forwardRef( }} > - {type != null && } + {type != null && ( + + )} diff --git a/src/libs/ui/components/account-casper-activity-plate/account-casper-activity-plate.tsx b/src/libs/ui/components/account-casper-activity-plate/account-casper-activity-plate.tsx index 8bb936262..f5b75b2d1 100644 --- a/src/libs/ui/components/account-casper-activity-plate/account-casper-activity-plate.tsx +++ b/src/libs/ui/components/account-casper-activity-plate/account-casper-activity-plate.tsx @@ -3,7 +3,14 @@ import { Trans, useTranslation } from 'react-i18next'; import { useSelector } from 'react-redux'; import { RouterPath, useTypedNavigate } from '@popup/router'; -import { Hash, HashVariant, SvgIcon, Tooltip, Typography } from '@libs/ui'; +import { + ContentColor, + Hash, + HashVariant, + SvgIcon, + Tooltip, + Typography +} from '@libs/ui'; import { selectVaultActiveAccount } from '@background/redux/vault/selectors'; import { formatNumber, @@ -23,6 +30,7 @@ import { import { ShortTypeName, TransferType, + TypeColors, TypeIcons, TypeName } from '@src/constants'; @@ -109,7 +117,13 @@ export const AccountCasperActivityPlate = forwardRef< }} > - {type != null && } + {type != null && ( + + )} diff --git a/src/libs/ui/components/account-popover/account-popover.tsx b/src/libs/ui/components/account-popover/account-popover.tsx index f6bd375d2..960f83d2f 100644 --- a/src/libs/ui/components/account-popover/account-popover.tsx +++ b/src/libs/ui/components/account-popover/account-popover.tsx @@ -39,7 +39,7 @@ export const AccountActionsMenuPopover = ({ <> {connectedAccountNames.includes(account.name) ? ( { closePopover(e); activeOrigin && disconnectAccount(account.name, activeOrigin); @@ -48,7 +48,7 @@ export const AccountActionsMenuPopover = ({ Disconnect @@ -56,7 +56,7 @@ export const AccountActionsMenuPopover = ({ ) : ( navigate( isAnyAccountConnected @@ -68,7 +68,7 @@ export const AccountActionsMenuPopover = ({ Connect @@ -76,7 +76,7 @@ export const AccountActionsMenuPopover = ({ )} navigate( RouterPath.RenameAccount.replace(':accountName', account.name) @@ -86,7 +86,7 @@ export const AccountActionsMenuPopover = ({ Rename @@ -94,21 +94,21 @@ export const AccountActionsMenuPopover = ({ View on CSPR.live navigate( RouterPath.AccountSettings.replace(':accountName', account.name) @@ -118,7 +118,7 @@ export const AccountActionsMenuPopover = ({ Manage diff --git a/src/libs/ui/components/avatar/avatar.tsx b/src/libs/ui/components/avatar/avatar.tsx index a251f13c7..6eb718a3a 100644 --- a/src/libs/ui/components/avatar/avatar.tsx +++ b/src/libs/ui/components/avatar/avatar.tsx @@ -9,13 +9,22 @@ import { CenteredFlexRow } from '@libs/layout'; import { isValidAccountHash, isValidPublicKey } from '@src/utils'; -import { SvgIcon } from '@libs/ui'; +import { hexToRGBA, SvgIcon } from '@libs/ui'; +import { useSelector } from 'react-redux'; +import { selectDarkModeSetting } from '@background/redux/settings/selectors'; -const RoundedIdenticon = styled(Identicon)<{ displayContext?: 'header' }>` +const RoundedIdenticon = styled(Identicon)<{ + displayContext?: 'header'; + isDarkMode: boolean; +}>` border-radius: ${({ theme, displayContext }) => displayContext ? theme.borderRadius.base : theme.borderRadius.eight}px; - border: ${({ displayContext }) => - displayContext ? `0.5px solid #1A191929` : 'none'}; + border: ${({ displayContext, isDarkMode, theme }) => + displayContext + ? isDarkMode + ? `0.5px solid ${theme.color.contentDisabled}}` + : `0.5px solid ${hexToRGBA(theme.color.black, '0.16')}` + : 'none'}; `; const IconHashWrapper = styled(CenteredFlexRow)(({ theme }) => ({ @@ -32,42 +41,10 @@ export const BackgroundWrapper = styled.div( borderRadius: theme.borderRadius.eight, height: `${size}px`, width: `${size}px`, - backgroundColor: theme.color.contentTertiary + backgroundColor: theme.color.contentDisabled }) ); -const ConnectionStatusBadge = styled.div<{ - isConnected: boolean; - displayContext?: 'header'; -}>` - width: ${({ displayContext }) => (displayContext ? '14px' : '16px')}; - height: ${({ displayContext }) => (displayContext ? '14px' : '16px')}; - border-radius: 50%; - - background-color: ${({ theme, displayContext }) => - displayContext ? theme.color.backgroundRed : theme.color.backgroundPrimary}; - - position: absolute; - bottom: -4px; - right: -4px; - - &:after { - content: ''; - width: ${({ displayContext }) => (displayContext ? '8px' : '10px')}; - height: ${({ displayContext }) => (displayContext ? '8px' : '10px')}; - border-radius: 50%; - - background-color: ${({ isConnected, theme }) => - isConnected ? theme.color.contentGreen : theme.color.contentTertiary}; - - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - z-index: 1; - } -`; - interface AvatarTypes { publicKey: string; size: number; @@ -87,18 +64,35 @@ export const Avatar = ({ }: AvatarTypes) => { const theme = useTheme(); + const isDarkMode = useSelector(selectDarkModeSetting); + + const connectIcon = isDarkMode + ? displayContext === 'header' + ? 'assets/icons/connected-dark.svg' + : 'assets/icons/connected-dark-big.svg' + : displayContext === 'header' + ? 'assets/icons/connected-light.svg' + : 'assets/icons/connected-light-big.svg'; + if (withConnectedStatus && isConnected !== undefined) { return ( - ); @@ -110,7 +104,8 @@ export const Avatar = ({ ); diff --git a/src/libs/ui/components/button/button.tsx b/src/libs/ui/components/button/button.tsx index ff9f2c7f5..798eae925 100644 --- a/src/libs/ui/components/button/button.tsx +++ b/src/libs/ui/components/button/button.tsx @@ -1,7 +1,7 @@ import React from 'react'; import styled from 'styled-components'; -import { BaseProps } from '@src/libs/ui'; +import { BaseProps, getLinearGradientColor } from '@src/libs/ui'; interface BaseButtonProps extends BaseProps { type?: 'button' | 'submit' | 'reset'; @@ -62,113 +62,95 @@ const BaseButton = styled.button( const PrimaryBlueButton = styled(BaseButton)( ({ theme, disabled }) => ({ - color: theme.color.backgroundPrimary, - background: theme.color.fillBlue, + color: theme.color.contentOnFill, + background: theme.color.fillPrimary, ': hover': { - background: theme.color.fillBlueHover + background: theme.color.fillPrimaryHover }, ': active': { - background: theme.color.fillBlueClick + background: theme.color.fillPrimaryClick }, ...(disabled && { - color: theme.color.backgroundPrimary, - background: theme.color.fillTertiary + color: theme.color.contentDisabled, + background: getLinearGradientColor(theme.color.fillSecondary) }) }) ); const PrimaryRedButton = styled(BaseButton)( ({ theme, disabled }) => ({ - color: theme.color.backgroundPrimary, - background: theme.color.fillRed, + color: theme.color.contentOnFill, + background: theme.color.fillCritical, ': hover': { - background: theme.color.fillRedHover + background: theme.color.fillCriticalHover }, ': active': { - background: theme.color.fillRedClick + background: theme.color.fillCriticalClick }, ...(disabled && { - color: theme.color.backgroundPrimary, - background: theme.color.fillTertiary + color: theme.color.contentDisabled, + background: getLinearGradientColor(theme.color.fillSecondary) }) }) ); const SecondaryBlueButton = styled(BaseButton)( ({ theme, disabled }) => ({ - color: theme.color.contentBlue, - background: `linear-gradient( - ${theme.color.fillGradientOut.from}, - ${theme.color.fillGradientOut.to} - )`, + color: theme.color.contentAction, + background: getLinearGradientColor(theme.color.fillSecondary), ': hover': { - background: `linear-gradient( - ${theme.color.fillGradientIn.from}, - ${theme.color.fillGradientIn.to} - )` + background: getLinearGradientColor(theme.color.fillSecondaryHover) }, ': active': { - background: theme.color.fillSecondary + background: theme.color.fillNeutral }, ...(disabled && { color: theme.color.contentSecondary, - background: `linear-gradient( - ${theme.color.fillGradientOut.from}, - ${theme.color.fillGradientOut.to} - )` + background: getLinearGradientColor(theme.color.fillSecondary) }) }) ); const SecondaryRedButton = styled(BaseButton)( ({ theme, disabled }) => ({ - color: theme.color.fillRed, - background: `linear-gradient( - ${theme.color.fillGradientOut.from}, - ${theme.color.fillGradientOut.to} - )`, + color: theme.color.fillCritical, + background: getLinearGradientColor(theme.color.fillSecondary), ': hover': { - background: `linear-gradient( - ${theme.color.fillGradientIn.from}, - ${theme.color.fillGradientIn.to} - )` + background: getLinearGradientColor(theme.color.fillSecondaryHover) }, ': active': { - background: theme.color.fillSecondary + background: theme.color.fillNeutral }, ...(disabled && { color: theme.color.contentSecondary, - background: `linear-gradient( - ${theme.color.fillGradientOut.from}, - ${theme.color.fillGradientOut.to} - )` + background: getLinearGradientColor(theme.color.fillSecondary) }) }) ); const UtilityButton = styled(BaseButton)( ({ theme, disabled }) => ({ - color: theme.color.backgroundPrimary, - background: theme.color.fillBlue, + color: theme.color.contentOnFill, + background: theme.color.fillPrimary, ': hover': { - background: theme.color.fillBlueHover + background: theme.color.fillPrimaryHover }, ': active': { - background: theme.color.fillBlueClick + background: theme.color.fillPrimaryClick }, ...(disabled && { - color: theme.color.backgroundPrimary, - background: theme.color.fillTertiary + color: theme.color.contentDisabled, + background: getLinearGradientColor(theme.color.fillSecondary) }) }) ); diff --git a/src/libs/ui/components/checkbox/checkbox.tsx b/src/libs/ui/components/checkbox/checkbox.tsx index ba3bbdf6c..e0f27278c 100644 --- a/src/libs/ui/components/checkbox/checkbox.tsx +++ b/src/libs/ui/components/checkbox/checkbox.tsx @@ -1,4 +1,4 @@ -import React, { ChangeEvent } from 'react'; +import React from 'react'; import styled from 'styled-components'; import { Typography, SvgIcon, BaseProps } from '@src/libs/ui'; @@ -13,9 +13,9 @@ const StyledFlexRow = styled(FlexRow)<{ width: 'fit-content', pointerEvents: 'auto', svg: { - fill: checked ? theme.color.fillBlue : 'none', + fill: checked ? theme.color.fillPrimary : 'none', rect: { - stroke: checked ? theme.color.fillBlue : theme.color.fillTertiary + stroke: checked ? theme.color.fillPrimary : theme.color.contentDisabled } }, span: { @@ -43,7 +43,7 @@ export function Checkbox({ dataTestId, disabled }: CheckboxProps) { - const handleClick = (ev: ChangeEvent) => { + const handleClick = () => { if (disabled) return; onChange && onChange(!checked); @@ -67,7 +67,7 @@ export function Checkbox({ data-testid={dataTestId} disabled={disabled} > - + {label && ( {label} diff --git a/src/libs/ui/components/connection-status-badge/connection-status-badge.tsx b/src/libs/ui/components/connection-status-badge/connection-status-badge.tsx index a93c63058..5d3b6860e 100644 --- a/src/libs/ui/components/connection-status-badge/connection-status-badge.tsx +++ b/src/libs/ui/components/connection-status-badge/connection-status-badge.tsx @@ -19,13 +19,13 @@ const ConnectionStatusBadgeContainer = styled( displayContext === 'accountList' ? '0' : '2px 8px'}; color: ${({ theme, isConnected }) => - isConnected ? theme.color.contentGreen : theme.color.contentSecondary}; + isConnected ? theme.color.contentPositive : theme.color.contentSecondary}; background-color: ${({ theme, isConnected, displayContext }) => displayContext === 'accountList' ? null : isConnected - ? hexToRGBA(theme.color.contentGreen, '.12') + ? hexToRGBA(theme.color.contentPositive, '.12') : theme.color.backgroundSecondary}; `; diff --git a/src/libs/ui/components/deploy-status/deploy-status.tsx b/src/libs/ui/components/deploy-status/deploy-status.tsx index dc96ce4cf..a95bb8208 100644 --- a/src/libs/ui/components/deploy-status/deploy-status.tsx +++ b/src/libs/ui/components/deploy-status/deploy-status.tsx @@ -3,14 +3,7 @@ import { useTranslation } from 'react-i18next'; import styled from 'styled-components'; import { AlignedFlexRow, SpacingSize } from '@libs/layout'; -import { - BackgroundColor, - ContentColor, - getColorFromTheme, - SvgIcon, - Tooltip, - Typography -} from '@libs/ui'; +import { ContentColor, SvgIcon, Tooltip, Typography } from '@libs/ui'; export enum Status { Success = 'success', @@ -29,19 +22,20 @@ const StatusIcons = { }; const StatusColors = { - [Status.Success]: 'contentGreen', - [Status.Executed]: 'contentGreen', + [Status.Success]: 'contentPositive', + [Status.Executed]: 'contentPositive', [Status.Pending]: 'contentLightBlue', - [Status.Error]: 'contentRed', - [Status.Expired]: 'contentRed' + [Status.Error]: 'contentActionCritical', + [Status.Expired]: 'contentActionCritical' }; +// TODO: replace with theme colors and use hexToRGBA const StatusBackgroundColors = { - [Status.Success]: 'backgroundLightGreen', - [Status.Executed]: 'backgroundLightGreen', - [Status.Pending]: 'backgroundLightBlue', - [Status.Error]: 'backgroundLightRed', - [Status.Expired]: 'backgroundLightRed' + [Status.Success]: 'rgba(119, 255, 190, 0.12)', + [Status.Executed]: 'rgba(119, 255, 190, 0.12)', + [Status.Pending]: 'rgba(116, 144, 255, 0.12)', + [Status.Error]: 'rgba(204, 0, 15, 0.08)', + [Status.Expired]: 'rgba(204, 0, 15, 0.08)' }; const getDeployStatus = ( @@ -74,10 +68,7 @@ const StatusContainer = styled(AlignedFlexRow)<{ status: Status }>( ({ theme, status }) => ({ padding: '4px 8px', - backgroundColor: getColorFromTheme( - theme, - StatusBackgroundColors[status] as BackgroundColor - ), + backgroundColor: StatusBackgroundColors[status], borderRadius: theme.borderRadius.hundred }) ); diff --git a/src/libs/ui/components/form-field/form-field.tsx b/src/libs/ui/components/form-field/form-field.tsx index c5db816c6..05f836930 100644 --- a/src/libs/ui/components/form-field/form-field.tsx +++ b/src/libs/ui/components/form-field/form-field.tsx @@ -1,6 +1,7 @@ import React from 'react'; import styled from 'styled-components'; import { Typography, BaseProps } from '@src/libs/ui'; +import { FlexColumn } from '@libs/layout'; export enum FormFieldStatus { Error = 'error', @@ -13,16 +14,11 @@ const getThemeColor = (status?: FormFieldStatus | null) => { } return { - [FormFieldStatus.Error]: 'fillRed', - [FormFieldStatus.Success]: 'fillGreen' + [FormFieldStatus.Error]: 'fillCritical', + [FormFieldStatus.Success]: 'fillPositive' }[status]; }; -const StyledContainer = styled('div')(({ theme }) => ({ - display: 'flex', - flexDirection: 'column' -})); - const LabelContainer = styled('div')(({ theme }) => ({ display: 'flex', flexDirection: 'row', @@ -56,7 +52,7 @@ export function FormField({ ...restProps }: FormFieldProps) { return ( - + {label && {label}} {rightLabel && {rightLabel}} @@ -69,6 +65,6 @@ export function FormField({ {statusText} )} - + ); } diff --git a/src/libs/ui/components/hash/hash.tsx b/src/libs/ui/components/hash/hash.tsx index 7f7d19744..09c672b2f 100644 --- a/src/libs/ui/components/hash/hash.tsx +++ b/src/libs/ui/components/hash/hash.tsx @@ -25,7 +25,7 @@ interface HashContainerProps { const HashContainer = styled(CenteredFlexRow)` ${({ withHover, theme }) => - withHover && ` &:hover > span { color: ${theme.color.contentBlue}; }`}; + withHover && ` &:hover > span { color: ${theme.color.contentAction}; }`}; `; interface HashProps { @@ -93,7 +93,7 @@ export function Hash({ renderContent={({ isClicked }) => ( <> {isClicked ? ( - + Copied! ) : ( diff --git a/src/libs/ui/components/input/input.tsx b/src/libs/ui/components/input/input.tsx index 6ff44cd7e..95ee67572 100644 --- a/src/libs/ui/components/input/input.tsx +++ b/src/libs/ui/components/input/input.tsx @@ -7,10 +7,10 @@ type Ref = HTMLInputElement; const getThemeColorByError = (error?: boolean) => { if (error == null || !error) { - return 'contentTertiary'; + return 'contentDisabled'; } - return 'fillRed'; + return 'fillCritical'; }; const InputContainer = styled('div')( @@ -23,7 +23,7 @@ const InputContainer = styled('div')( borderRadius: theme.borderRadius.base, color: theme.color.contentPrimary, background: theme.color.backgroundPrimary, - caretColor: theme.color.fillRed, + caretColor: theme.color.fillCritical, fontFamily: monotype ? theme.typography.fontFamily.mono : theme.typography.fontFamily.primary, @@ -33,7 +33,7 @@ const InputContainer = styled('div')( path: { fill: oneColoredIcons - ? theme.color.contentTertiary + ? theme.color.contentDisabled : theme.color[getThemeColorByError(error)] }, @@ -86,13 +86,13 @@ const StyledInput = styled('input')(({ theme }) => ({ } })); -const PrefixContainer = styled('div')(({ theme }) => ({ - marginRight: 8 -})); +const PrefixContainer = styled('div')` + margin-right: 8px; +`; -const SuffixContainer = styled('div')(({ theme }) => ({ - marginLeft: 8 -})); +const SuffixContainer = styled('div')` + margin-left: 8px; +`; const SuffixTextContainer = styled(SuffixContainer)(({ theme }) => ({ color: theme.color.contentSecondary @@ -217,7 +217,7 @@ export const Input = React.forwardRef(function Input( )} diff --git a/src/libs/ui/components/link/link.tsx b/src/libs/ui/components/link/link.tsx index d309dcee8..261754447 100644 --- a/src/libs/ui/components/link/link.tsx +++ b/src/libs/ui/components/link/link.tsx @@ -1,22 +1,24 @@ import React from 'react'; -import styled from 'styled-components'; -import { ContentColor, getColorFromTheme, themeConfig } from '@src/libs/ui'; +import styled, { DefaultTheme } from 'styled-components'; -type LinkColor = 'fillBlue' | 'fillRed' | 'inherit'; +import { getColorFromTheme } from '@src/libs/ui'; -const getStateColor = (color: LinkColor) => { +type LinkColor = 'contentAction' | 'fillCritical' | 'inherit'; + +// TODO: do we need this? +const getStateColor = (theme: DefaultTheme, color: LinkColor) => { return ( // @ts-ignore { - fillBlue: { - color: themeConfig.color.fillBlue, - hover: themeConfig.color.fillBlueHover, - active: themeConfig.color.fillBlueClick + contentAction: { + color: getColorFromTheme(theme, 'contentAction'), + hover: getColorFromTheme(theme, 'contentAction'), + active: getColorFromTheme(theme, 'contentAction') }, - fillRed: { - color: themeConfig.color.fillRed, - hover: themeConfig.color.fillRedHover, - active: themeConfig.color.fillRedClick + fillCritical: { + color: getColorFromTheme(theme, 'fillCritical'), + hover: getColorFromTheme(theme, 'fillCriticalHover'), + active: getColorFromTheme(theme, 'fillCriticalClick') } }[color] || { color: 'inherit', @@ -26,25 +28,22 @@ const getStateColor = (color: LinkColor) => { ); }; -/* eslint-disable-next-line */ export interface LinkProps extends React.HTMLAttributes { href?: string; target?: string; color: LinkColor; - hoverColor?: ContentColor; } type Ref = HTMLAnchorElement; -const StyledLink = styled.a(({ theme, color, hoverColor }) => { - const stateColor = getStateColor(color); - const hover = hoverColor && getColorFromTheme(theme, hoverColor); +const StyledLink = styled.a(({ theme, color }) => { + const stateColor = getStateColor(theme, color); return { textDecoration: 'none', cursor: 'pointer', color: stateColor.color, '&:hover > *': { - color: hover || stateColor.hover + color: stateColor.hover }, '&:active > *': { color: stateColor.active diff --git a/src/libs/ui/components/list/list.tsx b/src/libs/ui/components/list/list.tsx index c9f307090..b5dffae12 100644 --- a/src/libs/ui/components/list/list.tsx +++ b/src/libs/ui/components/list/list.tsx @@ -108,7 +108,7 @@ export function List({ {headerAction.caption} diff --git a/src/libs/ui/components/modal/modal.tsx b/src/libs/ui/components/modal/modal.tsx index 99ec975a0..439e8ec5b 100644 --- a/src/libs/ui/components/modal/modal.tsx +++ b/src/libs/ui/components/modal/modal.tsx @@ -20,9 +20,7 @@ const ModalContainer = styled.div` max-width: 328px; background-color: ${({ theme }) => theme.color.backgroundPrimary}; - box-shadow: - 0 2px 10px rgba(0, 0, 0, 0.04), - 0 15px 50px rgba(0, 0, 0, 0.1); + box-shadow: ${({ theme }) => theme.shadow.contextMenu}; border-radius: ${({ theme }) => theme.borderRadius.twelve}px; `; interface RenderChildrenProps { diff --git a/src/libs/ui/components/popover-link/popover-link.tsx b/src/libs/ui/components/popover-link/popover-link.tsx index 960eac759..8e66debae 100644 --- a/src/libs/ui/components/popover-link/popover-link.tsx +++ b/src/libs/ui/components/popover-link/popover-link.tsx @@ -6,7 +6,7 @@ type Ref = HTMLAnchorElement; export interface PopoverLinkProps extends React.HTMLAttributes { href?: string; target?: string; - variant: 'contentBlue'; + variant: 'contentAction'; } const BaseLink = styled.a(({ theme }) => ({ @@ -24,18 +24,18 @@ const BlueLink = styled(BaseLink)(({ theme }) => ({ backgroundColor: 'inherit', '&:hover': { - color: theme.color.contentBlue, + color: theme.color.contentAction, backgroundColor: theme.color.backgroundSecondary, borderRadius: theme.borderRadius.base }, '&:hover svg': { - color: theme.color.contentBlue + color: theme.color.contentAction } })); const LINK_COMPONENT_BY_COLOR_DICT = { - contentBlue: BlueLink + contentAction: BlueLink }; export const PopoverLink = React.forwardRef( diff --git a/src/libs/ui/components/popover/popover.tsx b/src/libs/ui/components/popover/popover.tsx index 6a3869316..c61b5bad5 100644 --- a/src/libs/ui/components/popover/popover.tsx +++ b/src/libs/ui/components/popover/popover.tsx @@ -42,8 +42,8 @@ const PopoverContainer = styled.div` const PopoverItemsContainer = styled(FlexColumn)` padding: 8px; - background: ${({ theme }) => theme.color.fillWhite}; - box-shadow: 0 1px 8px rgba(132, 134, 140, 0.2); + background: ${({ theme }) => theme.color.backgroundPrimary}; + box-shadow: ${({ theme }) => theme.shadow.contextMenu}; border-radius: ${({ theme }) => theme.borderRadius.eight}px; `; diff --git a/src/libs/ui/components/secret-phrase-words-view/copy-secret-phrase-bar.tsx b/src/libs/ui/components/secret-phrase-words-view/copy-secret-phrase-bar.tsx index b0293347e..7e98c4949 100644 --- a/src/libs/ui/components/secret-phrase-words-view/copy-secret-phrase-bar.tsx +++ b/src/libs/ui/components/secret-phrase-words-view/copy-secret-phrase-bar.tsx @@ -23,11 +23,11 @@ export function CopySecretPhraseBar({ : 'assets/icons/copy.svg' } size={isClicked ? 24 : 16} - color={isClicked ? 'contentGreen' : 'contentBlue'} + color={isClicked ? 'contentPositive' : 'contentAction'} /> {isClicked ? t('Copied to clipboard') diff --git a/src/libs/ui/components/secret-phrase-words-view/word-picker.tsx b/src/libs/ui/components/secret-phrase-words-view/word-picker.tsx index ffd349b1a..879691b7e 100644 --- a/src/libs/ui/components/secret-phrase-words-view/word-picker.tsx +++ b/src/libs/ui/components/secret-phrase-words-view/word-picker.tsx @@ -12,7 +12,7 @@ import { BaseProps, SvgIcon, Typography, WordTag } from '@src/libs/ui'; import { SecretPhrase } from '@src/libs/crypto'; const WordPickerContainer = styled(FlexColumn)` - color: ${({ theme }) => theme.color.contentBlue}; + color: ${({ theme }) => theme.color.contentAction}; background-color: ${({ theme }) => theme.color.backgroundPrimary}; border-radius: ${({ theme }) => theme.borderRadius.twelve}px; @@ -60,8 +60,8 @@ export function WordPicker({ gap={SpacingSize.Small} onClick={() => handleResetPhrase()} > - - + + Reset diff --git a/src/libs/ui/components/secret-phrase-words-view/word-tag.tsx b/src/libs/ui/components/secret-phrase-words-view/word-tag.tsx index f8c571490..b3fc8bb8c 100644 --- a/src/libs/ui/components/secret-phrase-words-view/word-tag.tsx +++ b/src/libs/ui/components/secret-phrase-words-view/word-tag.tsx @@ -1,7 +1,7 @@ import React from 'react'; import styled from 'styled-components'; -import { Typography } from '@src/libs/ui'; +import { getLinearGradientColor, Typography } from '@src/libs/ui'; import { FlexRow, SpacingSize } from '@src/libs/layout'; interface IsEmptyWord { @@ -15,11 +15,8 @@ const WordContainer = styled(FlexRow)` width: ${({ isEmptyWord }) => (isEmptyWord ? '72px' : 'unset')}; background: ${({ theme, selected }) => selected - ? theme.color.backgroundBlue - : `linear-gradient( - ${theme.color.fillGradientOut.from}, - ${theme.color.fillGradientOut.to} - )`}; + ? theme.color.fillPrimary + : getLinearGradientColor(theme.color.fillSecondary)}; color: ${({ theme, disabled, selected }) => disabled ? theme.color.contentSecondary diff --git a/src/libs/ui/components/svg-icon/svg-icon-social.tsx b/src/libs/ui/components/svg-icon/svg-icon-social.tsx index 404d826c0..718169973 100644 --- a/src/libs/ui/components/svg-icon/svg-icon-social.tsx +++ b/src/libs/ui/components/svg-icon/svg-icon-social.tsx @@ -49,7 +49,7 @@ export interface SvgIconSocialProps extends BaseProps { const Container = styled(Link)>( ({ theme, socialMediaType: type }) => ({ - color: theme.color.fillSecondary, + color: theme.color.fillNeutral, '&:hover': { color: getSocialMediaColor(type) }, diff --git a/src/libs/ui/components/svg-icon/svg-icon.tsx b/src/libs/ui/components/svg-icon/svg-icon.tsx index 30340b59d..6b907921e 100644 --- a/src/libs/ui/components/svg-icon/svg-icon.tsx +++ b/src/libs/ui/components/svg-icon/svg-icon.tsx @@ -2,12 +2,10 @@ import React from 'react'; import ReactSVG from 'react-inlinesvg'; import styled from 'styled-components'; -import { ContentColor, getColorFromTheme } from '@src/libs/ui'; +import { Color, getColorFromTheme } from '@src/libs/ui'; type Ref = HTMLDivElement; -/* eslint-disable-next-line */ - export interface SvgIconProps extends React.HTMLAttributes { className?: string; style?: React.CSSProperties; @@ -18,7 +16,7 @@ export interface SvgIconProps extends React.HTMLAttributes { alt?: string; onClick?: (ev: any) => void; onMouseDown?: (ev: any) => void; - color?: ContentColor; + color?: Color; tooltip?: string; flipByAxis?: 'X' | 'Y'; marginLeft?: 'small' | 'medium'; @@ -44,7 +42,7 @@ const Container = styled('div').withConfig({ size: number; width?: string | number; height?: string | number; - color?: ContentColor; + color?: Color; active?: boolean; flipByAxis?: 'X' | 'Y'; marginLeft?: 'small' | 'medium'; @@ -78,7 +76,6 @@ const Container = styled('div').withConfig({ const StyledReactSVG = styled(ReactSVG)( ({ size, width, height }) => ({ display: 'flex', - fill: 'currentColor', width: width != null ? width : size, height: height != null ? height : size }) @@ -136,5 +133,3 @@ export const SvgIcon = React.forwardRef( ); } ); - -export default SvgIcon; diff --git a/src/libs/ui/components/tabs/tabs.tsx b/src/libs/ui/components/tabs/tabs.tsx index df83d76a6..ad239b6e8 100644 --- a/src/libs/ui/components/tabs/tabs.tsx +++ b/src/libs/ui/components/tabs/tabs.tsx @@ -7,7 +7,7 @@ import { AlignedSpaceBetweenFlexRow, CenteredFlexRow } from '@libs/layout'; const TabsContainer = styled(AlignedSpaceBetweenFlexRow)` height: 40px; - background-color: ${({ theme }) => theme.color.fillSecondary}; + background: ${({ theme }) => theme.color.fillNeutral}; border-radius: ${({ theme }) => theme.borderRadius.twenty}px; padding: 4px; `; @@ -26,7 +26,7 @@ const ActiveTabContainer = styled(CenteredFlexRow)` cursor: pointer; width: calc(33% - 8px); border-radius: ${({ theme }) => theme.borderRadius.sixteen}px; - background-color: ${({ theme }) => theme.color.fillWhite}; + background-color: ${({ theme }) => theme.color.backgroundPrimary}; padding: 4px 8px; `; diff --git a/src/libs/ui/components/tag/tag.tsx b/src/libs/ui/components/tag/tag.tsx index 0110e7201..de1fb03ae 100644 --- a/src/libs/ui/components/tag/tag.tsx +++ b/src/libs/ui/components/tag/tag.tsx @@ -12,7 +12,7 @@ interface StyleTagContainerProps { const StyledTag = styled.span` color: ${({ theme }) => theme.color.contentOnFill}; - background-color: ${({ theme }) => theme.color.contentTertiary}; + background-color: ${({ theme }) => theme.color.contentDisabled}; font-weight: ${({ theme }) => theme.typography.fontWeight.semiBold}; font-size: 0.8rem; line-height: 1.6rem; diff --git a/src/libs/ui/components/textarea/textarea.tsx b/src/libs/ui/components/textarea/textarea.tsx index c58f9f80c..33fe12e78 100644 --- a/src/libs/ui/components/textarea/textarea.tsx +++ b/src/libs/ui/components/textarea/textarea.tsx @@ -18,6 +18,9 @@ const StyledTextArea = styled.textarea<{ width: '100%', padding: '12px 16px', + backgroundColor: theme.color.backgroundPrimary, + color: theme.color.contentPrimary, + ...((isDisabled || readOnly) && { color: theme.color.contentSecondary }) diff --git a/src/libs/ui/components/toggle/toggle.tsx b/src/libs/ui/components/toggle/toggle.tsx new file mode 100644 index 000000000..a90fdfd4c --- /dev/null +++ b/src/libs/ui/components/toggle/toggle.tsx @@ -0,0 +1,60 @@ +import React from 'react'; +import styled from 'styled-components'; + +const ToggleLabel = styled.label` + position: relative; + display: inline-block; + height: 24px; + width: 42px; +`; + +const ToggleSpan = styled.span` + position: absolute; + cursor: pointer; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: ${({ theme }) => theme.color.fillNeutral}; + transition: 0.3s; + border-radius: 30px; + + :before { + position: absolute; + content: ''; + height: 16px; + width: 16px; + left: 4px; + bottom: 4px; + background-color: ${({ theme }) => theme.color.contentOnFill}; + border-radius: 50%; + transition: 0.3s; + } +`; + +const ToggleInput = styled.input` + opacity: 0; + width: 0; + height: 0; + + :checked + ${ToggleSpan} { + background-color: ${({ theme }) => theme.color.fillPrimary}; + } + :checked + ${ToggleSpan}:before { + transform: translateX(18px); + } +`; + +interface ToggleProps { + toggled: boolean; + onClick: () => void; +} + +export const Toggle = ({ toggled, onClick }: ToggleProps) => { + return ( + + + + + ); +}; diff --git a/src/libs/ui/components/tooltip/tooltip.tsx b/src/libs/ui/components/tooltip/tooltip.tsx index ccd41143e..0d823d998 100644 --- a/src/libs/ui/components/tooltip/tooltip.tsx +++ b/src/libs/ui/components/tooltip/tooltip.tsx @@ -65,7 +65,7 @@ const TooltipTip = styled.div<{ placement: Placement }>( backgroundColor: `${theme.color.backgroundPrimary}`, borderRadius: `${theme.borderRadius.twelve}px`, - boxShadow: '0 0 10px rgba(0, 0, 0, 0.08)', + boxShadow: `${theme.shadow.tooltip}`, maxWidth: '270px', diff --git a/src/libs/ui/global-style.ts b/src/libs/ui/global-style.ts index a72c6de78..34c56a977 100644 --- a/src/libs/ui/global-style.ts +++ b/src/libs/ui/global-style.ts @@ -28,6 +28,8 @@ export const GlobalStyle = createGlobalStyle<{ theme: any }>` min-height: 600px; background: ${props => props.theme.color.backgroundSecondary}; border-radius: 16px; + + color: ${props => props.theme.color.contentPrimary}; } * { diff --git a/src/libs/ui/index.ts b/src/libs/ui/index.ts index aabdbb68a..59d316d16 100644 --- a/src/libs/ui/index.ts +++ b/src/libs/ui/index.ts @@ -43,6 +43,7 @@ export * from './components/recipient-dropdown-input/recipient-dropdown-input'; export * from './components/transfer-success-screen/transfer-succeess-screen'; export * from './components/contract-icon/contract-icon'; export * from './components/password-inputs/password-inputs'; +export * from './components/toggle/toggle'; export * from './utils/match-media'; export * from './utils/match-size'; @@ -51,3 +52,4 @@ export * from './utils/get-color-from-theme'; export * from './theme-config'; export * from './global-style'; export * from './types'; +export * from './utils/get-linear-gradient-color'; diff --git a/src/libs/ui/theme-config.ts b/src/libs/ui/theme-config.ts index 24f6b84c1..1b2a0f98c 100644 --- a/src/libs/ui/theme-config.ts +++ b/src/libs/ui/theme-config.ts @@ -1,4 +1,5 @@ import { withMedia } from './utils/match-media'; +import { hexToRGBA } from './utils/hex-to-rgba'; const PAGE_MIN_WIDTH = 320; const PAGE_MAX_WIDTH = 1176; @@ -27,77 +28,145 @@ export const themeConfig = { bold: 700 } }, + borderRadius: { + base: 6, + eight: 8, + ten: 10, + twelve: 12, + sixteen: 16, + twenty: 20, + eighty: 80, + hundred: 100 + }, + padding: { + 1.2: '1.2rem', + 1.6: '1.6rem', + 2.4: '2.4rem', + 3.2: '3.2rem' + } +}; + +export const lightTheme = { + ...themeConfig, color: { backgroundPrimary: '#FFFFFF', backgroundSecondary: '#F5F6F7', - backgroundBlue: '#0A2EBF', - backgroundRed: '#C2000E', - backgroundLightGreen: '#77FFBE1F', - backgroundLightBlue: '#7490FF1F', - backgroundLightRed: '#CC000F14', - - borderPrimary: '#E8E9EC', + backgroundRed: { + deg: '148deg', + from: '#E93240 6.78%', + to: '#C2000E 71.85%' + }, - fillWhite: '#FFFFFF', - fillSecondary: '#E8E9EC', - fillTertiary: '#BCBDC1', + contentPrimary: '#1A1919', + contentSecondary: '#84868C', + contentDisabled: '#BCBDC1', + contentAction: '#0A2EBF', + contentActionCritical: '#CC000F', + contentOnFill: '#FFFFFF', + contentWarning: '#E0BB38', + contentPositive: '#2DDC88', + contentGreenStatus: '#77FFBE', + contentLightBlue: '#7490FF', - fillGradientIn: { - from: '#EFF0F2', - to: '#F5F6F7' + fillPrimary: '#0A2EBF', + fillPrimaryHover: '#001C8C', + fillPrimaryClick: '#001773', + fillCritical: '#CC000F', + fillCriticalHover: '#B2000D', + fillCriticalClick: '#99000B', + fillSecondary: { + deg: '180deg', + from: '#F5F5F7 0%', + to: '#F0F0F2 100%' }, - fillGradientOut: { - from: '#F3F4F5', - to: '#EFF0F2' + fillSecondaryHover: { + deg: '180deg', + from: '#EFF0F2 0%', + to: '#F5F6F7 100%' }, + fillNeutral: '#E8E9EC', + fillPositive: '#2DDC88', - fillBlue: '#0A2EBF', - fillBlueHover: '#001C8C', - fillBlueClick: '#001773', + borderPrimary: hexToRGBA('#1A1919', '0.12'), - fillRed: '#CC000F', - fillRedHover: '#B2000D', - fillRedClick: '#99000B', + brandRed: '#FF0012', + black: '#000000' + }, + border: { + separator: '0.5px solid #E8E9EC' + }, + shadow: { + contextMenu: + '0 15px 50px rgba(0, 0, 0, 0.1), 0 2px 10px rgba(0, 0, 0, 0.04)', + tooltip: '0px 0px 10px 0px rgba(0, 0, 0, 0.08)' + } +}; - fillGreen: '#2DDC88', +export const darkTheme = { + ...themeConfig, + color: { + backgroundPrimary: '#262730', + backgroundSecondary: '#18181F', + backgroundRed: { + deg: '148deg', + from: '#B82832 6.78%', + to: '#99000B 71.85%' + }, - contentPrimary: '#1A1919', - contentSecondary: '#84868C', - contentTertiary: '#BCBDC1', + contentPrimary: '#FFFFFF', + contentSecondary: '#A9AAAD', + contentDisabled: '#84868C', + contentAction: '#4D70FF', + contentActionCritical: '#FF3342', contentOnFill: '#FFFFFF', - contentBlue: '#0A2EBF', - contentRed: '#CC000F', - contentGreen: '#2DDC88', - contentGreenOnFill: '#77FFBE', - contentYellow: '#E0BB38', + contentWarning: '#FF9F0A', + contentPositive: '#2DDC88', + contentGreenStatus: '#77FFBE', contentLightBlue: '#7490FF', + fillPrimary: '#153CD6', + fillPrimaryHover: '#0929AC', + fillPrimaryClick: '#07218A', + fillCritical: '#C2000E', + fillCriticalHover: '#B2000D', + fillCriticalClick: '#99000B', + fillSecondary: '#34363D', + fillSecondaryHover: '#3D3F47', + fillNeutral: '#3C3E47', + fillPositive: '#2DDC88', + + borderPrimary: hexToRGBA('#FFF', '0.12'), + brandRed: '#FF0012', black: '#000000' }, border: { - separator: '0.5px solid #E8E9EC' - }, - borderRadius: { - base: 6, - eight: 8, - ten: 10, - twelve: 12, - sixteen: 16, - twenty: 20, - eighty: 80, - hundred: 100 + separator: '0.5px solid #3C3E47' }, - padding: { - 1.2: '1.2rem', - 1.6: '1.6rem', - 2.4: '2.4rem', - 3.2: '3.2rem' + shadow: { + contextMenu: + '0px 15px 50px 0px rgba(0, 0, 0, 0.32), 0px 2px 10px 0px rgba(0, 0, 0, 0.12)', + tooltip: '0px 0px 10px 0px rgba(0, 0, 0, 0.32)' } }; -type ThemeConfig = typeof themeConfig; +export type LightTheme = typeof lightTheme; +export type DarkTheme = typeof darkTheme; +interface ThemeColors + extends Omit, + Omit { + fillSecondary: + | LightTheme['color']['fillSecondary'] + | DarkTheme['color']['fillSecondary']; + fillSecondaryHover: + | LightTheme['color']['fillSecondaryHover'] + | DarkTheme['color']['fillSecondaryHover']; +} + +interface Theme extends Omit, Omit { + color: ThemeColors; +} declare module 'styled-components' { - export interface DefaultTheme extends ThemeConfig {} + export interface DefaultTheme extends Theme {} } diff --git a/src/libs/ui/utils/get-color-from-theme.ts b/src/libs/ui/utils/get-color-from-theme.ts index 2309b8ba8..20e25caf9 100644 --- a/src/libs/ui/utils/get-color-from-theme.ts +++ b/src/libs/ui/utils/get-color-from-theme.ts @@ -4,38 +4,31 @@ export type ContentColor = | 'inherit' | 'contentPrimary' | 'contentSecondary' - | 'contentTertiary' + | 'contentDisabled' + | 'contentAction' + | 'contentActionCritical' | 'contentOnFill' - | 'contentBlue' - | 'contentRed' - | 'contentGreen' - | 'contentGreenOnFill' + | 'contentWarning' + | 'contentPositive' + | 'contentGreenStatus' | 'contentLightBlue' - | 'contentYellow' | 'brandRed'; export type BackgroundColor = | 'inherit' | 'backgroundPrimary' - | 'backgroundSecondary' - | 'backgroundBlue' - | 'backgroundRed' - | 'backgroundLightGreen' - | 'backgroundLightBlue' - | 'backgroundLightRed'; + | 'backgroundSecondary'; export type FillColor = | 'inherit' - | 'fillBlue' - | 'fillRed' - | 'fillGreen' - | 'fillBlueHover' - | 'fillBlueClick' - | 'fillRedHover' - | 'fillRedClick' - | 'fillWhite' - | 'fillSecondary' - | 'fillTertiary'; + | 'fillPrimary' + | 'fillPrimaryHover' + | 'fillPrimaryClick' + | 'fillCritical' + | 'fillCriticalHover' + | 'fillCriticalClick' + | 'fillPositive' + | 'fillNeutral'; // can extend more color types later here if needed (like FillColor etc.) the utility below can be generic and can work with all of them export type Color = ContentColor | BackgroundColor | FillColor; @@ -44,31 +37,24 @@ export function getColorFromTheme(theme: DefaultTheme, color: Color) { inherit: 'inherit', backgroundPrimary: theme.color.backgroundPrimary, backgroundSecondary: theme.color.backgroundSecondary, - backgroundBlue: theme.color.backgroundBlue, - backgroundRed: theme.color.backgroundRed, - backgroundLightGreen: theme.color.backgroundLightGreen, - backgroundLightBlue: theme.color.backgroundLightBlue, - backgroundLightRed: theme.color.backgroundLightRed, contentPrimary: theme.color.contentPrimary, contentSecondary: theme.color.contentSecondary, - contentTertiary: theme.color.contentTertiary, + contentDisabled: theme.color.contentDisabled, contentOnFill: theme.color.contentOnFill, - contentBlue: theme.color.contentBlue, - contentRed: theme.color.contentRed, - contentGreen: theme.color.contentGreen, - contentGreenOnFill: theme.color.contentGreenOnFill, - contentYellow: theme.color.contentYellow, + contentAction: theme.color.contentAction, + contentActionCritical: theme.color.contentActionCritical, + contentPositive: theme.color.contentPositive, + contentGreenStatus: theme.color.contentGreenStatus, + contentWarning: theme.color.contentWarning, contentLightBlue: theme.color.contentLightBlue, brandRed: theme.color.brandRed, - fillBlue: theme.color.fillBlue, - fillRed: theme.color.fillRed, - fillGreen: theme.color.fillGreen, - fillBlueHover: theme.color.fillBlueHover, - fillBlueClick: theme.color.fillBlueClick, - fillRedHover: theme.color.fillRedHover, - fillRedClick: theme.color.fillRedClick, - fillWhite: theme.color.fillWhite, - fillSecondary: theme.color.fillSecondary, - fillTertiary: theme.color.fillTertiary + fillPrimary: theme.color.fillPrimary, + fillCritical: theme.color.fillCritical, + fillPositive: theme.color.fillPositive, + fillPrimaryHover: theme.color.fillPrimaryHover, + fillPrimaryClick: theme.color.fillPrimaryClick, + fillCriticalHover: theme.color.fillCriticalHover, + fillCriticalClick: theme.color.fillCriticalClick, + fillNeutral: theme.color.fillNeutral }[color]; } diff --git a/src/libs/ui/utils/get-linear-gradient-color.ts b/src/libs/ui/utils/get-linear-gradient-color.ts new file mode 100644 index 000000000..740ac7855 --- /dev/null +++ b/src/libs/ui/utils/get-linear-gradient-color.ts @@ -0,0 +1,13 @@ +export const getLinearGradientColor = ( + gradientColor: + | { + deg: string; + from: string; + to: string; + } + | string +) => { + if (typeof gradientColor === 'string') return gradientColor; + + return `linear-gradient(${gradientColor.deg}, ${gradientColor.from}, ${gradientColor.to})`; +}; From d602b3089f7d053b556e6782d2d4f8dcccea90d5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 14 Oct 2023 14:51:41 +0300 Subject: [PATCH 060/243] build(deps): bump @scure/bip32 from 1.1.1 to 1.3.2 (#812) Bumps [@scure/bip32](https://github.com/paulmillr/scure-bip32) from 1.1.1 to 1.3.2. - [Release notes](https://github.com/paulmillr/scure-bip32/releases) - [Commits](https://github.com/paulmillr/scure-bip32/compare/1.1.1...1.3.2) --- updated-dependencies: - dependency-name: "@scure/bip32" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 201 +++++++++++----------------------------------- package.json | 2 +- 2 files changed, 49 insertions(+), 154 deletions(-) diff --git a/package-lock.json b/package-lock.json index cfd02c5f3..3eead5cc8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,7 @@ "@hot-loader/react-dom": "^17.0.1", "@lapo/asn1js": "1.2.4", "@make-software/ces-js-parser": "1.3.2", - "@scure/bip32": "1.1.1", + "@scure/bip32": "1.3.2", "@scure/bip39": "1.2.1", "@types/argon2-browser": "1.18.1", "@types/webextension-polyfill": "0.9.2", @@ -4085,30 +4085,16 @@ "dev": true }, "node_modules/@noble/curves": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.0.0.tgz", - "integrity": "sha512-2upgEu0iLiDVDZkNLeFV2+ht0BAVgQnEmCk6JsOch9Rp8xfkMCbvbAZlA2pBHQc73dbl+vFOXfqkf4uemdn0bw==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", "dependencies": { - "@noble/hashes": "1.3.0" + "@noble/hashes": "1.3.2" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@noble/curves/node_modules/@noble/hashes": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.0.tgz", - "integrity": "sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ] - }, "node_modules/@noble/ed25519": { "version": "1.7.3", "resolved": "https://registry.npmjs.org/@noble/ed25519/-/ed25519-1.7.3.tgz", @@ -4121,15 +4107,15 @@ ] }, "node_modules/@noble/hashes": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.1.3.tgz", - "integrity": "sha512-CE0FCR57H2acVI5UOzIGSSIYxZ6v/HOhDR0Ro9VLyhnzLwx0o8W1mmgaqlEUx4049qJDlIBRztv5k+MM8vbO3A==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ] + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } }, "node_modules/@noble/secp256k1": { "version": "1.7.1", @@ -5340,30 +5326,24 @@ "dev": true }, "node_modules/@scure/base": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz", - "integrity": "sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ] + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.3.tgz", + "integrity": "sha512-/+SgoRjLq7Xlf0CWuLHq2LUZeL/w65kfzAPG5NH9pcmBhs+nunQTn4gvdwgMTIXnt9b2C/1SeL2XiysZEyIC9Q==", + "funding": { + "url": "https://paulmillr.com/funding/" + } }, "node_modules/@scure/bip32": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.1.tgz", - "integrity": "sha512-UmI+liY7np2XakaW+6lMB6HZnpczWk1yXZTxvg8TM8MdOcKHCGL1YkraGj8eAjPfMwFNiAyek2hXmS/XFbab8g==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.2.tgz", + "integrity": "sha512-N1ZhksgwD3OBlwTv3R6KFEcPojl/W4ElJOeCZdi+vuI5QmTFwLq3OFf2zd2ROpKvxFdgZ6hUpb0dx9bVNEwYCA==", "dependencies": { - "@noble/hashes": "~1.1.3", - "@noble/secp256k1": "~1.7.0", - "@scure/base": "~1.1.0" + "@noble/curves": "~1.2.0", + "@noble/hashes": "~1.3.2", + "@scure/base": "~1.1.2" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, "node_modules/@scure/bip39": { @@ -5378,17 +5358,6 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/@scure/bip39/node_modules/@noble/hashes": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", - "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, "node_modules/@sinclair/typebox": { "version": "0.24.42", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.42.tgz", @@ -9531,17 +9500,6 @@ "casper-js-sdk": "^2.11.0" } }, - "node_modules/casper-cep18-js-client/node_modules/@noble/hashes": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", - "integrity": "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==", - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, "node_modules/casper-js-sdk": { "version": "2.13.3", "resolved": "https://registry.npmjs.org/casper-js-sdk/-/casper-js-sdk-2.13.3.tgz", @@ -9567,33 +9525,6 @@ "typedjson": "^1.6.0-rc2" } }, - "node_modules/casper-js-sdk/node_modules/@noble/hashes": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", - "integrity": "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==", - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/casper-js-sdk/node_modules/@scure/bip32": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.0.tgz", - "integrity": "sha512-bcKpo1oj54hGholplGLpqPHRbIsnbixFtc06nwuNM5/dwSXOq/AAYoIBRsBmnZJSdfeNW5rnff7NTAz3ZCqR9Q==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "@noble/curves": "~1.0.0", - "@noble/hashes": "~1.3.0", - "@scure/base": "~1.1.0" - } - }, "node_modules/casper-js-sdk/node_modules/node-fetch": { "version": "2.6.11", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.11.tgz", @@ -31301,18 +31232,11 @@ "dev": true }, "@noble/curves": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.0.0.tgz", - "integrity": "sha512-2upgEu0iLiDVDZkNLeFV2+ht0BAVgQnEmCk6JsOch9Rp8xfkMCbvbAZlA2pBHQc73dbl+vFOXfqkf4uemdn0bw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", "requires": { - "@noble/hashes": "1.3.0" - }, - "dependencies": { - "@noble/hashes": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.0.tgz", - "integrity": "sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg==" - } + "@noble/hashes": "1.3.2" } }, "@noble/ed25519": { @@ -31321,9 +31245,9 @@ "integrity": "sha512-iR8GBkDt0Q3GyaVcIu7mSsVIqnFbkbRzGLWlvhwunacoLwt4J3swfKhfaM6rN6WY+TBGoYT1GtT1mIh2/jGbRQ==" }, "@noble/hashes": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.1.3.tgz", - "integrity": "sha512-CE0FCR57H2acVI5UOzIGSSIYxZ6v/HOhDR0Ro9VLyhnzLwx0o8W1mmgaqlEUx4049qJDlIBRztv5k+MM8vbO3A==" + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==" }, "@noble/secp256k1": { "version": "1.7.1", @@ -32254,18 +32178,18 @@ "dev": true }, "@scure/base": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz", - "integrity": "sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==" + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.3.tgz", + "integrity": "sha512-/+SgoRjLq7Xlf0CWuLHq2LUZeL/w65kfzAPG5NH9pcmBhs+nunQTn4gvdwgMTIXnt9b2C/1SeL2XiysZEyIC9Q==" }, "@scure/bip32": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.1.tgz", - "integrity": "sha512-UmI+liY7np2XakaW+6lMB6HZnpczWk1yXZTxvg8TM8MdOcKHCGL1YkraGj8eAjPfMwFNiAyek2hXmS/XFbab8g==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.2.tgz", + "integrity": "sha512-N1ZhksgwD3OBlwTv3R6KFEcPojl/W4ElJOeCZdi+vuI5QmTFwLq3OFf2zd2ROpKvxFdgZ6hUpb0dx9bVNEwYCA==", "requires": { - "@noble/hashes": "~1.1.3", - "@noble/secp256k1": "~1.7.0", - "@scure/base": "~1.1.0" + "@noble/curves": "~1.2.0", + "@noble/hashes": "~1.3.2", + "@scure/base": "~1.1.2" } }, "@scure/bip39": { @@ -32275,13 +32199,6 @@ "requires": { "@noble/hashes": "~1.3.0", "@scure/base": "~1.1.0" - }, - "dependencies": { - "@noble/hashes": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", - "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==" - } } }, "@sinclair/typebox": { @@ -35626,13 +35543,6 @@ "requires": { "@ethersproject/bignumber": "^5.7.0", "@noble/hashes": "^1.2.0" - }, - "dependencies": { - "@noble/hashes": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", - "integrity": "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==" - } } }, "casper-js-sdk": { @@ -35660,21 +35570,6 @@ "typedjson": "^1.6.0-rc2" }, "dependencies": { - "@noble/hashes": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", - "integrity": "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==" - }, - "@scure/bip32": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.0.tgz", - "integrity": "sha512-bcKpo1oj54hGholplGLpqPHRbIsnbixFtc06nwuNM5/dwSXOq/AAYoIBRsBmnZJSdfeNW5rnff7NTAz3ZCqR9Q==", - "requires": { - "@noble/curves": "~1.0.0", - "@noble/hashes": "~1.3.0", - "@scure/base": "~1.1.0" - } - }, "node-fetch": { "version": "2.6.11", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.11.tgz", diff --git a/package.json b/package.json index 7898ef158..8f6a74b4c 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,7 @@ "@hot-loader/react-dom": "^17.0.1", "@lapo/asn1js": "1.2.4", "@make-software/ces-js-parser": "1.3.2", - "@scure/bip32": "1.1.1", + "@scure/bip32": "1.3.2", "@scure/bip39": "1.2.1", "@types/argon2-browser": "1.18.1", "@types/webextension-polyfill": "0.9.2", From 287097624cab771049a96637773e6547e6ebc5f7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 14 Oct 2023 14:52:14 +0300 Subject: [PATCH 061/243] build(deps-dev): bump webpack from 5.76.0 to 5.88.2 (#813) Bumps [webpack](https://github.com/webpack/webpack) from 5.76.0 to 5.88.2. - [Release notes](https://github.com/webpack/webpack/releases) - [Commits](https://github.com/webpack/webpack/compare/v5.76.0...v5.88.2) --- updated-dependencies: - dependency-name: webpack dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 585 +++++++++++++++++++++++++--------------------- package.json | 2 +- 2 files changed, 317 insertions(+), 270 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3eead5cc8..d09dfb60f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -119,7 +119,7 @@ "url-loader": "^4.1.1", "web-ext": "7.6.2", "webextension-polyfill": "0.10.0", - "webpack": "5.76.0", + "webpack": "5.88.2", "webpack-cli": "5.1.4", "webpack-dev-server": "^4.15.1", "xcode-build-webpack-plugin": "^1.0.2" @@ -3968,9 +3968,9 @@ } }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", - "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", "engines": { "node": ">=6.0.0" } @@ -3984,9 +3984,9 @@ } }, "node_modules/@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", "dev": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", @@ -3994,9 +3994,9 @@ } }, "node_modules/@jridgewell/source-map/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", "dev": true, "dependencies": { "@jridgewell/set-array": "^1.0.1", @@ -4008,17 +4008,17 @@ } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.13", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", - "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==" + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.15", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz", - "integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==", + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", + "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "node_modules/@lapo/asn1js": { @@ -6110,9 +6110,9 @@ } }, "node_modules/@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", + "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", "dev": true }, "node_modules/@types/expect": { @@ -6956,148 +6956,148 @@ } }, "node_modules/@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", "dev": true, "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" } }, "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", "dev": true }, "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", "dev": true }, "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", "dev": true }, "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", "dev": true, "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", "dev": true }, "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", "dev": true, "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/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" } }, "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", "dev": true, "dependencies": { "@xtuc/ieee754": "^1.2.0" } }, "node_modules/@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", "dev": true, "dependencies": { "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", "dev": true }, "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", "dev": true, "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/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" } }, "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", "dev": true, "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/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", "dev": true, "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/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" } }, "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", "dev": true, "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/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/ast": "1.11.6", "@xtuc/long": "4.2.2" } }, @@ -7216,6 +7216,15 @@ "acorn-walk": "^8.0.2" } }, + "node_modules/acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "dev": true, + "peerDependencies": { + "acorn": "^8" + } + }, "node_modules/acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", @@ -12281,9 +12290,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", - "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", "dev": true, "dependencies": { "graceful-fs": "^4.2.4", @@ -12388,9 +12397,9 @@ } }, "node_modules/es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.1.tgz", + "integrity": "sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==", "dev": true }, "node_modules/es-shim-unscopables": { @@ -24393,9 +24402,9 @@ } }, "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", "dev": true, "dependencies": { "randombytes": "^2.1.0" @@ -25666,13 +25675,13 @@ } }, "node_modules/terser": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.0.tgz", - "integrity": "sha512-KjTV81QKStSfwbNiwlBXfcgMcOloyuRdb62/iLFPGBcVNF4EXjhdYBhYHmbJpiBrVxZhDvltE11j+LBQUxEEJg==", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.20.0.tgz", + "integrity": "sha512-e56ETryaQDyebBwJIWYB2TT6f2EZ0fL0sW/JRXNMN26zZdKi2u/E/5my5lG6jNxym6qsrVXfFRmOdV42zlAgLQ==", "dev": true, "dependencies": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, @@ -27487,22 +27496,22 @@ } }, "node_modules/webpack": { - "version": "5.76.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.0.tgz", - "integrity": "sha512-l5sOdYBDunyf72HW8dF23rFtWq/7Zgvt/9ftMof71E/yUb1YLOBmTgA2K4vQthB3kotMrSj609txVE0dnr2fjA==", + "version": "5.88.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz", + "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==", "dev": true, "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", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", "acorn": "^8.7.1", - "acorn-import-assertions": "^1.7.6", + "acorn-import-assertions": "^1.9.0", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.10.0", - "es-module-lexer": "^0.9.0", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", @@ -27511,9 +27520,9 @@ "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", + "schema-utils": "^3.2.0", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", + "terser-webpack-plugin": "^5.3.7", "watchpack": "^2.4.0", "webpack-sources": "^3.2.3" }, @@ -27730,15 +27739,6 @@ "node": ">=10.13.0" } }, - "node_modules/webpack/node_modules/acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true, - "peerDependencies": { - "acorn": "^8" - } - }, "node_modules/webpack/node_modules/eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -27762,9 +27762,9 @@ } }, "node_modules/webpack/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.8", @@ -27779,6 +27779,40 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/webpack/node_modules/terser-webpack-plugin": { + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", + "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.17", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.16.8" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, "node_modules/websocket-driver": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", @@ -31132,9 +31166,9 @@ } }, "@jridgewell/resolve-uri": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", - "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==" + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==" }, "@jridgewell/set-array": { "version": "1.1.1", @@ -31142,9 +31176,9 @@ "integrity": "sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==" }, "@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", "dev": true, "requires": { "@jridgewell/gen-mapping": "^0.3.0", @@ -31152,9 +31186,9 @@ }, "dependencies": { "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", "dev": true, "requires": { "@jridgewell/set-array": "^1.0.1", @@ -31165,17 +31199,17 @@ } }, "@jridgewell/sourcemap-codec": { - "version": "1.4.13", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", - "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==" + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, "@jridgewell/trace-mapping": { - "version": "0.3.15", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz", - "integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==", + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", + "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "@lapo/asn1js": { @@ -32868,9 +32902,9 @@ } }, "@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", + "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", "dev": true }, "@types/expect": { @@ -33573,148 +33607,148 @@ } }, "@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", "dev": true, "requires": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" } }, "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", "dev": true }, "@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", "dev": true }, "@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", "dev": true }, "@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", "dev": true, "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", "@xtuc/long": "4.2.2" } }, "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", "dev": true }, "@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", "dev": true, "requires": { - "@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/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" } }, "@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", "dev": true, "requires": { "@xtuc/ieee754": "^1.2.0" } }, "@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", "dev": true, "requires": { "@xtuc/long": "4.2.2" } }, "@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", "dev": true }, "@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", "dev": true, "requires": { - "@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/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" } }, "@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", "dev": true, "requires": { - "@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/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" } }, "@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", "dev": true, "requires": { - "@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/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/ast": "1.11.6", "@xtuc/long": "4.2.2" } }, @@ -33798,6 +33832,13 @@ "acorn-walk": "^8.0.2" } }, + "acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "dev": true, + "requires": {} + }, "acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", @@ -37660,9 +37701,9 @@ } }, "enhanced-resolve": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", - "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", "dev": true, "requires": { "graceful-fs": "^4.2.4", @@ -37746,9 +37787,9 @@ } }, "es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.1.tgz", + "integrity": "sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==", "dev": true }, "es-shim-unscopables": { @@ -46787,9 +46828,9 @@ } }, "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", "dev": true, "requires": { "randombytes": "^2.1.0" @@ -47798,13 +47839,13 @@ } }, "terser": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.0.tgz", - "integrity": "sha512-KjTV81QKStSfwbNiwlBXfcgMcOloyuRdb62/iLFPGBcVNF4EXjhdYBhYHmbJpiBrVxZhDvltE11j+LBQUxEEJg==", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.20.0.tgz", + "integrity": "sha512-e56ETryaQDyebBwJIWYB2TT6f2EZ0fL0sW/JRXNMN26zZdKi2u/E/5my5lG6jNxym6qsrVXfFRmOdV42zlAgLQ==", "dev": true, "requires": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, @@ -49191,22 +49232,22 @@ "dev": true }, "webpack": { - "version": "5.76.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.0.tgz", - "integrity": "sha512-l5sOdYBDunyf72HW8dF23rFtWq/7Zgvt/9ftMof71E/yUb1YLOBmTgA2K4vQthB3kotMrSj609txVE0dnr2fjA==", + "version": "5.88.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz", + "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==", "dev": true, "requires": { "@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", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", "acorn": "^8.7.1", - "acorn-import-assertions": "^1.7.6", + "acorn-import-assertions": "^1.9.0", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.10.0", - "es-module-lexer": "^0.9.0", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", @@ -49215,20 +49256,13 @@ "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", + "schema-utils": "^3.2.0", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", + "terser-webpack-plugin": "^5.3.7", "watchpack": "^2.4.0", "webpack-sources": "^3.2.3" }, "dependencies": { - "acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true, - "requires": {} - }, "eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -49246,15 +49280,28 @@ "dev": true }, "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, "requires": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", "ajv-keywords": "^3.5.2" } + }, + "terser-webpack-plugin": { + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", + "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.17", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.16.8" + } } } }, diff --git a/package.json b/package.json index 8f6a74b4c..6211a8f85 100644 --- a/package.json +++ b/package.json @@ -167,7 +167,7 @@ "url-loader": "^4.1.1", "web-ext": "7.6.2", "webextension-polyfill": "0.10.0", - "webpack": "5.76.0", + "webpack": "5.88.2", "webpack-cli": "5.1.4", "webpack-dev-server": "^4.15.1", "xcode-build-webpack-plugin": "^1.0.2" From fbc12919f8a3f9adacff0dffd43f60df626ada49 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 14 Oct 2023 14:52:50 +0300 Subject: [PATCH 062/243] build(deps-dev): bump eslint-plugin-react from 7.31.11 to 7.33.2 (#814) Bumps [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) from 7.31.11 to 7.33.2. - [Release notes](https://github.com/jsx-eslint/eslint-plugin-react/releases) - [Changelog](https://github.com/jsx-eslint/eslint-plugin-react/blob/master/CHANGELOG.md) - [Commits](https://github.com/jsx-eslint/eslint-plugin-react/compare/v7.31.11...v7.33.2) --- updated-dependencies: - dependency-name: eslint-plugin-react dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 1095 ++++++++++++++++++++++++++++++++++++++++----- package.json | 2 +- 2 files changed, 975 insertions(+), 122 deletions(-) diff --git a/package-lock.json b/package-lock.json index d09dfb60f..50acfc89d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -91,7 +91,7 @@ "eslint-plugin-import": "^2.25.2", "eslint-plugin-jsx-a11y": "^6.7.1", "eslint-plugin-prettier": "^5.0.0", - "eslint-plugin-react": "7.31.11", + "eslint-plugin-react": "7.33.2", "eslint-plugin-react-hooks": "4.6.0", "file-loader": "^6.2.0", "fs-extra": "11.1.1", @@ -8077,6 +8077,19 @@ "dequal": "^2.0.3" } }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/array-differ": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-4.0.0.tgz", @@ -8172,6 +8185,27 @@ "get-intrinsic": "^1.1.3" } }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", + "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/arrify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", @@ -8234,6 +8268,15 @@ "stream-demux": "^8.1.0" } }, + "node_modules/asynciterator.prototype": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz", + "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.3" + } + }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -8258,6 +8301,18 @@ "node": ">=8.0.0" } }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", @@ -11790,6 +11845,19 @@ "node": ">=10" } }, + "node_modules/define-data-property": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", + "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/define-lazy-prop": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", @@ -11800,10 +11868,11 @@ } }, "node_modules/define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dependencies": { + "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" }, @@ -12359,35 +12428,50 @@ } }, "node_modules/es-abstract": { - "version": "1.20.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.4.tgz", - "integrity": "sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==", + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz", + "integrity": "sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==", "dev": true, "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.2", + "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.3", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.1", "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", "has": "^1.0.3", "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", "is-callable": "^1.2.7", "is-negative-zero": "^2.0.2", "is-regex": "^1.1.4", "is-shared-array-buffer": "^1.0.2", "is-string": "^1.0.7", + "is-typed-array": "^1.1.12", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.2", + "object-inspect": "^1.12.3", "object-keys": "^1.1.1", "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", + "regexp.prototype.flags": "^1.5.1", + "safe-array-concat": "^1.0.1", "safe-regex-test": "^1.0.0", - "string.prototype.trimend": "^1.0.5", - "string.prototype.trimstart": "^1.0.5", - "unbox-primitive": "^1.0.2" + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.11" }, "engines": { "node": ">= 0.4" @@ -12396,12 +12480,48 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-iterator-helpers": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz", + "integrity": "sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==", + "dev": true, + "dependencies": { + "asynciterator.prototype": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.1", + "es-set-tostringtag": "^2.0.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.2.1", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.0.1" + } + }, "node_modules/es-module-lexer": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.1.tgz", "integrity": "sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==", "dev": true }, + "node_modules/es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-shim-unscopables": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", @@ -12922,15 +13042,16 @@ } }, "node_modules/eslint-plugin-react": { - "version": "7.31.11", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.31.11.tgz", - "integrity": "sha512-TTvq5JsT5v56wPa9OYHzsrOlHzKZKjV+aLgS+55NJP/cuzdiQPC7PfYoUjMoxlffKtvijpk7vA/jmuqRb9nohw==", + "version": "7.33.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz", + "integrity": "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==", "dev": true, "dependencies": { "array-includes": "^3.1.6", "array.prototype.flatmap": "^1.3.1", "array.prototype.tosorted": "^1.1.1", "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.12", "estraverse": "^5.3.0", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", @@ -12939,8 +13060,8 @@ "object.hasown": "^1.1.2", "object.values": "^1.1.6", "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.3", - "semver": "^6.3.0", + "resolve": "^2.0.0-next.4", + "semver": "^6.3.1", "string.prototype.matchall": "^4.0.8" }, "engines": { @@ -12975,13 +13096,17 @@ } }, "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.3", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", - "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", + "version": "2.0.0-next.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", + "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", "dev": true, "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -13970,6 +14095,15 @@ } } }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, "node_modules/foreground-child": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", @@ -14240,15 +14374,15 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "node_modules/function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" }, "engines": { "node": ">= 0.4" @@ -14512,12 +14646,13 @@ } }, "node_modules/get-intrinsic": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", "dependencies": { "function-bind": "^1.1.1", "has": "^1.0.3", + "has-proto": "^1.0.1", "has-symbols": "^1.0.3" }, "funding": { @@ -14889,7 +15024,6 @@ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", "dev": true, - "optional": true, "dependencies": { "define-properties": "^1.1.3" }, @@ -14920,6 +15054,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/got": { "version": "11.8.6", "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", @@ -15090,6 +15235,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", @@ -16000,12 +16156,12 @@ "dev": true }, "node_modules/internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", + "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.0", + "get-intrinsic": "^1.2.0", "has": "^1.0.3", "side-channel": "^1.0.4" }, @@ -16091,12 +16247,41 @@ "node": ">=0.10.0" } }, + "node_modules/is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, + "node_modules/is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-bigint": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", @@ -16225,6 +16410,18 @@ "node": ">=0.10.0" } }, + "node_modules/is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-fullwidth-code-point": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", @@ -16246,6 +16443,21 @@ "node": ">=6" } }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -16320,6 +16532,15 @@ "dev": true, "optional": true }, + "node_modules/is-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-mergeable-object": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-mergeable-object/-/is-mergeable-object-1.1.1.tgz", @@ -16456,6 +16677,15 @@ "node": ">=0.10.0" } }, + "node_modules/is-set": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-shared-array-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", @@ -16510,6 +16740,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.11" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -16546,6 +16791,15 @@ "node": ">=0.10.0" } }, + "node_modules/is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", @@ -16558,6 +16812,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-weakset": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", + "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -16740,6 +17007,19 @@ "node": ">=8" } }, + "node_modules/iterator.prototype": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" + } + }, "node_modules/javascript-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-2.1.0.tgz", @@ -21369,9 +21649,9 @@ } }, "node_modules/object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -23443,6 +23723,26 @@ "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz", + "integrity": "sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", @@ -23476,14 +23776,14 @@ } }, "node_modules/regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" + "define-properties": "^1.2.0", + "set-function-name": "^2.0.0" }, "engines": { "node": ">= 0.4" @@ -24087,6 +24387,30 @@ "tslib": "^2.1.0" } }, + "node_modules/safe-array-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", + "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-array-concat/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -24282,9 +24606,9 @@ } }, "node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -24509,6 +24833,20 @@ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, + "node_modules/set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", @@ -25346,29 +25684,46 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/string.prototype.trim": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", + "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/string.prototype.trimend": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", - "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", + "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", - "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -26505,6 +26860,71 @@ "node": ">= 0.6" } }, + "node_modules/typed-array-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", @@ -27924,6 +28344,72 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/which-builtin-type": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", + "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", + "dev": true, + "dependencies": { + "function.prototype.name": "^1.1.5", + "has-tostringtag": "^1.0.0", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, + "dependencies": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", + "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/wide-align": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", @@ -34494,6 +34980,16 @@ "dequal": "^2.0.3" } }, + "array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + } + }, "array-differ": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-4.0.0.tgz", @@ -34562,6 +35058,21 @@ "get-intrinsic": "^1.1.3" } }, + "arraybuffer.prototype.slice": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", + "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", + "dev": true, + "requires": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" + } + }, "arrify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", @@ -34618,6 +35129,15 @@ "stream-demux": "^8.1.0" } }, + "asynciterator.prototype": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz", + "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.3" + } + }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -34636,6 +35156,12 @@ "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==", "dev": true }, + "available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true + }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", @@ -37291,6 +37817,16 @@ "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", "dev": true }, + "define-data-property": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", + "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + "requires": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + } + }, "define-lazy-prop": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", @@ -37298,10 +37834,11 @@ "dev": true }, "define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "requires": { + "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" } @@ -37755,35 +38292,72 @@ } }, "es-abstract": { - "version": "1.20.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.4.tgz", - "integrity": "sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==", + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz", + "integrity": "sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==", "dev": true, "requires": { + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.2", + "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.3", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.1", "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", "has": "^1.0.3", "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", "is-callable": "^1.2.7", "is-negative-zero": "^2.0.2", "is-regex": "^1.1.4", "is-shared-array-buffer": "^1.0.2", "is-string": "^1.0.7", + "is-typed-array": "^1.1.12", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.2", + "object-inspect": "^1.12.3", "object-keys": "^1.1.1", "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", + "regexp.prototype.flags": "^1.5.1", + "safe-array-concat": "^1.0.1", "safe-regex-test": "^1.0.0", - "string.prototype.trimend": "^1.0.5", - "string.prototype.trimstart": "^1.0.5", - "unbox-primitive": "^1.0.2" + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.11" + } + }, + "es-iterator-helpers": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz", + "integrity": "sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==", + "dev": true, + "requires": { + "asynciterator.prototype": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.1", + "es-set-tostringtag": "^2.0.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.2.1", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.0.1" } }, "es-module-lexer": { @@ -37792,6 +38366,17 @@ "integrity": "sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==", "dev": true }, + "es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" + } + }, "es-shim-unscopables": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", @@ -38311,15 +38896,16 @@ } }, "eslint-plugin-react": { - "version": "7.31.11", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.31.11.tgz", - "integrity": "sha512-TTvq5JsT5v56wPa9OYHzsrOlHzKZKjV+aLgS+55NJP/cuzdiQPC7PfYoUjMoxlffKtvijpk7vA/jmuqRb9nohw==", + "version": "7.33.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz", + "integrity": "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==", "dev": true, "requires": { "array-includes": "^3.1.6", "array.prototype.flatmap": "^1.3.1", "array.prototype.tosorted": "^1.1.1", "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.12", "estraverse": "^5.3.0", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", @@ -38328,8 +38914,8 @@ "object.hasown": "^1.1.2", "object.values": "^1.1.6", "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.3", - "semver": "^6.3.0", + "resolve": "^2.0.0-next.4", + "semver": "^6.3.1", "string.prototype.matchall": "^4.0.8" }, "dependencies": { @@ -38343,13 +38929,14 @@ } }, "resolve": { - "version": "2.0.0-next.3", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", - "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", + "version": "2.0.0-next.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", + "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", "dev": true, "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" } } } @@ -38940,6 +39527,15 @@ "integrity": "sha512-aExlJShTV4qOUOL7yF1U5tvLCB0xQuudbf6toyYA0E/acBNw71mvjFTnLaRp50aQaYocMR0a/RMMBIHeZnGyjQ==", "dev": true }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "requires": { + "is-callable": "^1.1.3" + } + }, "foreground-child": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", @@ -39161,15 +39757,15 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" } }, "functional-red-black-tree": { @@ -39368,12 +39964,13 @@ "dev": true }, "get-intrinsic": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", + "has-proto": "^1.0.1", "has-symbols": "^1.0.3" } }, @@ -39650,7 +40247,6 @@ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", "dev": true, - "optional": true, "requires": { "define-properties": "^1.1.3" } @@ -39669,6 +40265,14 @@ "slash": "^3.0.0" } }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "requires": { + "get-intrinsic": "^1.1.3" + } + }, "got": { "version": "11.8.6", "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", @@ -39813,6 +40417,11 @@ "get-intrinsic": "^1.1.1" } }, + "has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==" + }, "has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", @@ -40483,12 +41092,12 @@ "dev": true }, "internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", + "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", "dev": true, "requires": { - "get-intrinsic": "^1.1.0", + "get-intrinsic": "^1.2.0", "has": "^1.0.3", "side-channel": "^1.0.4" } @@ -40550,12 +41159,32 @@ "is-windows": "^1.0.1" } }, + "is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + } + }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, + "is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, "is-bigint": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", @@ -40639,6 +41268,15 @@ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" }, + "is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, "is-fullwidth-code-point": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", @@ -40651,6 +41289,15 @@ "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", "dev": true }, + "is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, "is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -40700,6 +41347,12 @@ "dev": true, "optional": true }, + "is-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "dev": true + }, "is-mergeable-object": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-mergeable-object/-/is-mergeable-object-1.1.1.tgz", @@ -40788,6 +41441,12 @@ "is-unc-path": "^1.0.0" } }, + "is-set": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "dev": true + }, "is-shared-array-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", @@ -40821,6 +41480,15 @@ "has-symbols": "^1.0.2" } }, + "is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "dev": true, + "requires": { + "which-typed-array": "^1.1.11" + } + }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -40851,6 +41519,12 @@ "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=" }, + "is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "dev": true + }, "is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", @@ -40860,6 +41534,16 @@ "call-bind": "^1.0.2" } }, + "is-weakset": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", + "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -41005,6 +41689,19 @@ "istanbul-lib-report": "^3.0.0" } }, + "iterator.prototype": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", + "dev": true, + "requires": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" + } + }, "javascript-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-2.1.0.tgz", @@ -44552,9 +45249,9 @@ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, "object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", "dev": true }, "object-keys": { @@ -46068,6 +46765,20 @@ "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" }, + "reflect.getprototypeof": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz", + "integrity": "sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + } + }, "regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", @@ -46098,14 +46809,14 @@ } }, "regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" + "define-properties": "^1.2.0", + "set-function-name": "^2.0.0" } }, "regexpp": { @@ -46574,6 +47285,26 @@ "tslib": "^2.1.0" } }, + "safe-array-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", + "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } + } + }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -46730,9 +47461,9 @@ } }, "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true }, "semver-compare": { @@ -46922,6 +47653,17 @@ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, + "set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "dev": true, + "requires": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + } + }, "setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", @@ -47596,26 +48338,37 @@ "side-channel": "^1.0.4" } }, + "string.prototype.trim": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", + "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + } + }, "string.prototype.trimend": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", - "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", + "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" } }, "string.prototype.trimstart": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", - "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" } }, "strip-ansi": { @@ -48452,6 +49205,53 @@ "mime-types": "~2.1.24" } }, + "typed-array-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" + } + }, + "typed-array-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + } + }, + "typed-array-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + } + }, + "typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + } + }, "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", @@ -49508,6 +50308,59 @@ "is-symbol": "^1.0.3" } }, + "which-builtin-type": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", + "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", + "dev": true, + "requires": { + "function.prototype.name": "^1.1.5", + "has-tostringtag": "^1.0.0", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } + } + }, + "which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, + "requires": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + } + }, + "which-typed-array": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", + "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + } + }, "wide-align": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", diff --git a/package.json b/package.json index 6211a8f85..0b1db77c9 100644 --- a/package.json +++ b/package.json @@ -139,7 +139,7 @@ "eslint-plugin-import": "^2.25.2", "eslint-plugin-jsx-a11y": "^6.7.1", "eslint-plugin-prettier": "^5.0.0", - "eslint-plugin-react": "7.31.11", + "eslint-plugin-react": "7.33.2", "eslint-plugin-react-hooks": "4.6.0", "file-loader": "^6.2.0", "fs-extra": "11.1.1", From de4e25c2893f9038e2ebf2c2780691e5b22be189 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 14 Oct 2023 14:53:20 +0300 Subject: [PATCH 063/243] build(deps-dev): bump @babel/preset-env from 7.20.2 to 7.23.2 (#828) Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.20.2 to 7.23.2. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-preset-env) --- updated-dependencies: - dependency-name: "@babel/preset-env" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 2487 +++++++++++++++++++++++++-------------------- package.json | 2 +- 2 files changed, 1401 insertions(+), 1088 deletions(-) diff --git a/package-lock.json b/package-lock.json index 50acfc89d..da0b0280b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "Casper Wallet", - "version": "1.5.2", + "version": "1.6.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "Casper Wallet", - "version": "1.5.2", + "version": "1.6.0", "dependencies": { "@formatjs/intl": "2.6.2", "@hookform/resolvers": "2.9.10", @@ -55,7 +55,7 @@ "devDependencies": { "@babel/core": "7.20.5", "@babel/plugin-proposal-class-properties": "7.18.6", - "@babel/preset-env": "7.20.2", + "@babel/preset-env": "7.23.2", "@babel/preset-react": "7.18.6", "@redux-devtools/cli": "^3.0.1", "@testing-library/dom": "8.19.0", @@ -428,20 +428,21 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz", - "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==", + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", "dependencies": { - "@babel/highlight": "^7.22.5" + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.5.tgz", - "integrity": "sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.2.tgz", + "integrity": "sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ==", "dev": true, "engines": { "node": ">=6.9.0" @@ -564,49 +565,63 @@ } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", - "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", + "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", "dev": true, "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.18.6", - "@babel/types": "^7.18.9" + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", - "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", + "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.20.0", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.21.3", - "semver": "^6.3.0" + "@babel/compat-data": "^7.22.9", + "@babel/helper-validator-option": "^7.22.15", + "browserslist": "^4.21.9", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" } }, + "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.5.tgz", - "integrity": "sha512-3RCdA/EmEaikrhayahwToF0fpweU/8o2p8vhc1c/1kftHOdTKuC65kik/TLc+qfbS8JKw4qqJbne4ovICDhmww==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz", + "integrity": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.19.1", - "@babel/helper-split-export-declaration": "^7.18.6" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -616,13 +631,14 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz", - "integrity": "sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", + "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "regexpu-core": "^5.2.1" + "@babel/helper-annotate-as-pure": "^7.22.5", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -649,21 +665,9 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", - "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", - "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", "engines": { "node": ">=6.9.0" } @@ -681,65 +685,65 @@ } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", - "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", + "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", "dev": true, "dependencies": { - "@babel/types": "^7.18.9" + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", - "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz", - "integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz", + "integrity": "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.20.2", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.1", - "@babel/types": "^7.20.2" + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", - "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", "dev": true, "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -755,14 +759,14 @@ } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.9.tgz", - "integrity": "sha512-8WWC4oR4Px+tr+Fp0X3RHDVfINGpF3ad1HIbrc8A77epiR6eMMc6jsgozkzT2uDiOOdoS9cLIQ+XD2XvI2WSmQ==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", + "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-wrap-function": "^7.22.9" + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-wrap-function": "^7.22.20" }, "engines": { "node": ">=6.9.0" @@ -772,51 +776,52 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", - "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", + "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/traverse": "^7.19.1", - "@babel/types": "^7.19.0" + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", - "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", "dev": true, "dependencies": { - "@babel/types": "^7.20.2" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", - "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", "dev": true, "dependencies": { - "@babel/types": "^7.20.0" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -831,31 +836,31 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", - "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", + "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.9.tgz", - "integrity": "sha512-sZ+QzfauuUEfxSEjKFmi3qDSHgLsTPK/pEpoD/qonZKOtTPTLbf59oabPQ4rKekt9lFcj/hTZaOhWwFYrgjk+Q==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", + "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", "dev": true, "dependencies": { "@babel/helper-function-name": "^7.22.5", - "@babel/template": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/template": "^7.22.15", + "@babel/types": "^7.22.19" }, "engines": { "node": ">=6.9.0" @@ -876,12 +881,12 @@ } }, "node_modules/@babel/highlight": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz", - "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", + "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", "dependencies": { - "@babel/helper-validator-identifier": "^7.22.5", - "chalk": "^2.0.0", + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", "js-tokens": "^4.0.0" }, "engines": { @@ -889,9 +894,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.22.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.7.tgz", - "integrity": "sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", + "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", "bin": { "parser": "bin/babel-parser.js" }, @@ -900,12 +905,12 @@ } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", - "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.15.tgz", + "integrity": "sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -915,14 +920,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", - "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz", + "integrity": "sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", - "@babel/plugin-proposal-optional-chaining": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.22.15" }, "engines": { "node": ">=6.9.0" @@ -931,24 +936,6 @@ "@babel/core": "^7.13.0" } }, - "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.1.tgz", - "integrity": "sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-remap-async-to-generator": "^7.18.9", - "@babel/plugin-syntax-async-generators": "^7.8.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-proposal-class-properties": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", @@ -965,23 +952,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-class-static-block": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", - "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0" - } - }, "node_modules/@babel/plugin-proposal-decorators": { "version": "7.17.9", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.17.9.tgz", @@ -1002,70 +972,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", - "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", - "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", - "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-json-strings": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", - "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", @@ -1098,41 +1004,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz", - "integrity": "sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.20.1", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.20.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", - "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-proposal-optional-chaining": { "version": "7.21.0", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", @@ -1167,16 +1038,10 @@ } }, "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz", - "integrity": "sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==", + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.20.5", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - }, "engines": { "node": ">=6.9.0" }, @@ -1184,22 +1049,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", - "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-syntax-async-generators": { "version": "7.8.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", @@ -1306,12 +1155,27 @@ } }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", - "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz", + "integrity": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz", + "integrity": "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1476,17 +1340,51 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-arrow-functions": { + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", - "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", "dev": true, "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz", + "integrity": "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.2.tgz", + "integrity": "sha512-BBYVGxbDVHfoeXbOwcagAkOQAm9NxoTdMGfTqghu1GrvadSaw6iW3Je6IcL5PNOw8VwjxqBECXy50/iCQSY/lQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.20", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } @@ -1509,12 +1407,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", - "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz", + "integrity": "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1524,12 +1422,28 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.5.tgz", - "integrity": "sha512-WvpEIW9Cbj9ApF3yJCjIEEf1EiNJLtXagOrL5LNWEZOo3jv8pmPoYTSNJQvqej8OavVlgOoOPw6/htGZro6IkA==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.0.tgz", + "integrity": "sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz", + "integrity": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1538,20 +1452,37 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz", + "integrity": "sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.11", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz", - "integrity": "sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz", + "integrity": "sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-replace-supers": "^7.19.1", - "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-split-export-declaration": "^7.22.6", "globals": "^11.1.0" }, "engines": { @@ -1562,12 +1493,13 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", - "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz", + "integrity": "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/template": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1577,12 +1509,12 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz", - "integrity": "sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.0.tgz", + "integrity": "sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1592,13 +1524,13 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", - "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz", + "integrity": "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1608,12 +1540,28 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", - "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz", + "integrity": "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz", + "integrity": "sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" }, "engines": { "node": ">=6.9.0" @@ -1623,13 +1571,29 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", - "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz", + "integrity": "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==", "dev": true, "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz", + "integrity": "sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" }, "engines": { "node": ">=6.9.0" @@ -1655,12 +1619,12 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", - "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz", + "integrity": "sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1670,14 +1634,30 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", - "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz", + "integrity": "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==", "dev": true, "dependencies": { - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz", + "integrity": "sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" }, "engines": { "node": ">=6.9.0" @@ -1687,12 +1667,28 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", - "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz", + "integrity": "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz", + "integrity": "sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, "engines": { "node": ">=6.9.0" @@ -1702,12 +1698,12 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", - "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz", + "integrity": "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1717,13 +1713,13 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz", - "integrity": "sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.0.tgz", + "integrity": "sha512-xWT5gefv2HGSm4QHtgc1sYPbseOyf+FFDo2JbpE25GWl5BqTGO9IMwTYJRoIdjsF85GE+VegHxSCUt5EvoYTAw==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-module-transforms": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1733,14 +1729,14 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz", - "integrity": "sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.0.tgz", + "integrity": "sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-simple-access": "^7.19.4" + "@babel/helper-module-transforms": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1750,15 +1746,15 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz", - "integrity": "sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.0.tgz", + "integrity": "sha512-qBej6ctXZD2f+DhlOC9yO47yEYgUh5CZNz/aBoH4j/3NOlRfJXJbY7xDQCqQVf9KbrqGzIWER1f23doHGrIHFg==", "dev": true, "dependencies": { - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-validator-identifier": "^7.19.1" + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20" }, "engines": { "node": ">=6.9.0" @@ -1768,13 +1764,13 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", - "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz", + "integrity": "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1784,13 +1780,13 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz", - "integrity": "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", + "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.20.5", - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1800,12 +1796,63 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", - "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz", + "integrity": "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz", + "integrity": "sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz", + "integrity": "sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz", + "integrity": "sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.22.15" }, "engines": { "node": ">=6.9.0" @@ -1815,13 +1862,46 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", - "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz", + "integrity": "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz", + "integrity": "sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.0.tgz", + "integrity": "sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, "engines": { "node": ">=6.9.0" @@ -1831,12 +1911,46 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.5.tgz", - "integrity": "sha512-h7plkOmcndIUWXZFLgpbrh2+fXAi47zcUX7IrOQuZdLD0I0KvjJ6cvo3BEcAOsDOcZhVKGJqv07mkSqK0y2isQ==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz", + "integrity": "sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz", + "integrity": "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz", + "integrity": "sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.11", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, "engines": { "node": ">=6.9.0" @@ -1846,12 +1960,12 @@ } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", - "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz", + "integrity": "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1926,13 +2040,13 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz", - "integrity": "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==", + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz", + "integrity": "sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "regenerator-transform": "^0.15.1" + "@babel/helper-plugin-utils": "^7.22.5", + "regenerator-transform": "^0.15.2" }, "engines": { "node": ">=6.9.0" @@ -1942,12 +2056,12 @@ } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", - "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz", + "integrity": "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1977,12 +2091,12 @@ } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", - "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz", + "integrity": "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1992,13 +2106,13 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", - "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz", + "integrity": "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -2008,12 +2122,12 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", - "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz", + "integrity": "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -2023,12 +2137,12 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", - "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz", + "integrity": "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -2038,12 +2152,12 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", - "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz", + "integrity": "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -2070,12 +2184,28 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", - "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz", + "integrity": "sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz", + "integrity": "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -2085,13 +2215,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", - "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz", + "integrity": "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -2100,39 +2230,43 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz", + "integrity": "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/preset-env": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz", - "integrity": "sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.2.tgz", + "integrity": "sha512-BW3gsuDD+rvHL2VO2SjAUNTBe5YrjsTiDyqamPDWY723na3/yPQ65X5oQkFVJZ0o50/2d+svm1rkPoJeR1KxVQ==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.20.1", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-validator-option": "^7.18.6", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-async-generator-functions": "^7.20.1", - "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/plugin-proposal-class-static-block": "^7.18.6", - "@babel/plugin-proposal-dynamic-import": "^7.18.6", - "@babel/plugin-proposal-export-namespace-from": "^7.18.9", - "@babel/plugin-proposal-json-strings": "^7.18.6", - "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", - "@babel/plugin-proposal-numeric-separator": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.20.2", - "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", - "@babel/plugin-proposal-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-private-methods": "^7.18.6", - "@babel/plugin-proposal-private-property-in-object": "^7.18.6", - "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", + "@babel/compat-data": "^7.23.2", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.15", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.15", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.20.0", + "@babel/plugin-syntax-import-assertions": "^7.22.5", + "@babel/plugin-syntax-import-attributes": "^7.22.5", + "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", @@ -2142,45 +2276,62 @@ "@babel/plugin-syntax-optional-chaining": "^7.8.3", "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.18.6", - "@babel/plugin-transform-async-to-generator": "^7.18.6", - "@babel/plugin-transform-block-scoped-functions": "^7.18.6", - "@babel/plugin-transform-block-scoping": "^7.20.2", - "@babel/plugin-transform-classes": "^7.20.2", - "@babel/plugin-transform-computed-properties": "^7.18.9", - "@babel/plugin-transform-destructuring": "^7.20.2", - "@babel/plugin-transform-dotall-regex": "^7.18.6", - "@babel/plugin-transform-duplicate-keys": "^7.18.9", - "@babel/plugin-transform-exponentiation-operator": "^7.18.6", - "@babel/plugin-transform-for-of": "^7.18.8", - "@babel/plugin-transform-function-name": "^7.18.9", - "@babel/plugin-transform-literals": "^7.18.9", - "@babel/plugin-transform-member-expression-literals": "^7.18.6", - "@babel/plugin-transform-modules-amd": "^7.19.6", - "@babel/plugin-transform-modules-commonjs": "^7.19.6", - "@babel/plugin-transform-modules-systemjs": "^7.19.6", - "@babel/plugin-transform-modules-umd": "^7.18.6", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1", - "@babel/plugin-transform-new-target": "^7.18.6", - "@babel/plugin-transform-object-super": "^7.18.6", - "@babel/plugin-transform-parameters": "^7.20.1", - "@babel/plugin-transform-property-literals": "^7.18.6", - "@babel/plugin-transform-regenerator": "^7.18.6", - "@babel/plugin-transform-reserved-words": "^7.18.6", - "@babel/plugin-transform-shorthand-properties": "^7.18.6", - "@babel/plugin-transform-spread": "^7.19.0", - "@babel/plugin-transform-sticky-regex": "^7.18.6", - "@babel/plugin-transform-template-literals": "^7.18.9", - "@babel/plugin-transform-typeof-symbol": "^7.18.9", - "@babel/plugin-transform-unicode-escapes": "^7.18.10", - "@babel/plugin-transform-unicode-regex": "^7.18.6", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.20.2", - "babel-plugin-polyfill-corejs2": "^0.3.3", - "babel-plugin-polyfill-corejs3": "^0.6.0", - "babel-plugin-polyfill-regenerator": "^0.4.1", - "core-js-compat": "^3.25.1", - "semver": "^6.3.0" + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.22.5", + "@babel/plugin-transform-async-generator-functions": "^7.23.2", + "@babel/plugin-transform-async-to-generator": "^7.22.5", + "@babel/plugin-transform-block-scoped-functions": "^7.22.5", + "@babel/plugin-transform-block-scoping": "^7.23.0", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-class-static-block": "^7.22.11", + "@babel/plugin-transform-classes": "^7.22.15", + "@babel/plugin-transform-computed-properties": "^7.22.5", + "@babel/plugin-transform-destructuring": "^7.23.0", + "@babel/plugin-transform-dotall-regex": "^7.22.5", + "@babel/plugin-transform-duplicate-keys": "^7.22.5", + "@babel/plugin-transform-dynamic-import": "^7.22.11", + "@babel/plugin-transform-exponentiation-operator": "^7.22.5", + "@babel/plugin-transform-export-namespace-from": "^7.22.11", + "@babel/plugin-transform-for-of": "^7.22.15", + "@babel/plugin-transform-function-name": "^7.22.5", + "@babel/plugin-transform-json-strings": "^7.22.11", + "@babel/plugin-transform-literals": "^7.22.5", + "@babel/plugin-transform-logical-assignment-operators": "^7.22.11", + "@babel/plugin-transform-member-expression-literals": "^7.22.5", + "@babel/plugin-transform-modules-amd": "^7.23.0", + "@babel/plugin-transform-modules-commonjs": "^7.23.0", + "@babel/plugin-transform-modules-systemjs": "^7.23.0", + "@babel/plugin-transform-modules-umd": "^7.22.5", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.22.5", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.11", + "@babel/plugin-transform-numeric-separator": "^7.22.11", + "@babel/plugin-transform-object-rest-spread": "^7.22.15", + "@babel/plugin-transform-object-super": "^7.22.5", + "@babel/plugin-transform-optional-catch-binding": "^7.22.11", + "@babel/plugin-transform-optional-chaining": "^7.23.0", + "@babel/plugin-transform-parameters": "^7.22.15", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/plugin-transform-private-property-in-object": "^7.22.11", + "@babel/plugin-transform-property-literals": "^7.22.5", + "@babel/plugin-transform-regenerator": "^7.22.10", + "@babel/plugin-transform-reserved-words": "^7.22.5", + "@babel/plugin-transform-shorthand-properties": "^7.22.5", + "@babel/plugin-transform-spread": "^7.22.5", + "@babel/plugin-transform-sticky-regex": "^7.22.5", + "@babel/plugin-transform-template-literals": "^7.22.5", + "@babel/plugin-transform-typeof-symbol": "^7.22.5", + "@babel/plugin-transform-unicode-escapes": "^7.22.10", + "@babel/plugin-transform-unicode-property-regex": "^7.22.5", + "@babel/plugin-transform-unicode-regex": "^7.22.5", + "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "@babel/types": "^7.23.0", + "babel-plugin-polyfill-corejs2": "^0.4.6", + "babel-plugin-polyfill-corejs3": "^0.8.5", + "babel-plugin-polyfill-regenerator": "^0.5.3", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -2189,45 +2340,73 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/preset-env/node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz", + "integrity": "sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-env/node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz", + "integrity": "sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.4.3", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, "node_modules/@babel/preset-env/node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz", - "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==", + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.5.tgz", + "integrity": "sha512-Q6CdATeAvbScWPNLB8lzSO7fgUVBkQt6zLgNlfyeCr/EQaEQR+bWiBYYPYAFyE528BMjRhL+1QBMOI4jc/c5TA==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.3", - "core-js-compat": "^3.25.1" + "@babel/helper-define-polyfill-provider": "^0.4.3", + "core-js-compat": "^3.32.2" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/@babel/preset-env/node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", - "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz", + "integrity": "sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.3" + "@babel/helper-define-polyfill-provider": "^0.4.3" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/@babel/preset-modules": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", "@babel/types": "^7.4.4", "esutils": "^2.0.2" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" } }, "node_modules/@babel/preset-react": { @@ -2267,6 +2446,12 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true + }, "node_modules/@babel/runtime": { "version": "7.21.0", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz", @@ -2279,13 +2464,13 @@ } }, "node_modules/@babel/template": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", - "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", "dependencies": { - "@babel/code-frame": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" @@ -2312,12 +2497,12 @@ } }, "node_modules/@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", + "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", "dependencies": { "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" }, "engines": { @@ -9140,9 +9325,9 @@ "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" }, "node_modules/browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", + "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", "dev": true, "funding": [ { @@ -9152,13 +9337,17 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], "dependencies": { - "caniuse-lite": "^1.0.30001400", - "electron-to-chromium": "^1.4.251", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.9" + "caniuse-lite": "^1.0.30001541", + "electron-to-chromium": "^1.4.535", + "node-releases": "^2.0.13", + "update-browserslist-db": "^1.0.13" }, "bin": { "browserslist": "cli.js" @@ -9530,9 +9719,9 @@ "integrity": "sha512-W2lPwkBkMZwFlPCXhIlYgxu+7gC/NUlCtdK652DAJ1JdgV0sTrvuPFshNPrFa1TY2JOkLhgdeEBplB4ezEa+xg==" }, "node_modules/caniuse-lite": { - "version": "1.0.30001435", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001435.tgz", - "integrity": "sha512-kdCkUTjR+v4YAJelyiDTqiu82BDr4W4CP5sgTA0ZBmqn30XfS2ZghPLMowik9TPhS+psWJiUNxsqLyurDbmutA==", + "version": "1.0.30001547", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001547.tgz", + "integrity": "sha512-W7CrtIModMAxobGhz8iXmDfuJiiKg1WADMO/9x7/CLNin5cpSbuBjooyoIUVB5eyCc36QuTVlkVa1iB2S5+/eA==", "dev": true, "funding": [ { @@ -9542,6 +9731,10 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ] }, @@ -10730,12 +10923,12 @@ } }, "node_modules/core-js-compat": { - "version": "3.26.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.26.1.tgz", - "integrity": "sha512-622/KzTudvXCDLRw70iHW4KKs1aGpcRcowGWyYJr2DEBfRrd6hNJybxSWJFuZYD4ma86xhrwDDHxmDaIq4EA8A==", + "version": "3.33.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.0.tgz", + "integrity": "sha512-0w4LcLXsVEuNkIqwjjf9rjCoPhK8uqA4tMRh4Ge26vfLtUutshn+aRJU21I9LCJlh2QQHfisNToLjw1XEJLTWw==", "dev": true, "dependencies": { - "browserslist": "^4.21.4" + "browserslist": "^4.22.1" }, "funding": { "type": "opencollective", @@ -12275,9 +12468,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.284", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", - "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", + "version": "1.4.551", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.551.tgz", + "integrity": "sha512-/Ng/W/kFv7wdEHYzxdK7Cv0BHEGSkSB3M0Ssl8Ndr1eMiYeas/+Mv4cNaDqamqWx6nd2uQZfPz6g25z25M/sdw==", "dev": true }, "node_modules/elliptic": { @@ -21538,9 +21731,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", "dev": true }, "node_modules/nopt": { @@ -23750,9 +23943,9 @@ "dev": true }, "node_modules/regenerate-unicode-properties": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", - "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", "dev": true, "dependencies": { "regenerate": "^1.4.2" @@ -23767,9 +23960,9 @@ "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" }, "node_modules/regenerator-transform": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", - "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", "dev": true, "dependencies": { "@babel/runtime": "^7.8.4" @@ -23805,14 +23998,14 @@ } }, "node_modules/regexpu-core": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz", - "integrity": "sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", "dev": true, "dependencies": { + "@babel/regjsgen": "^0.8.0", "regenerate": "^1.4.2", "regenerate-unicode-properties": "^10.1.0", - "regjsgen": "^0.7.1", "regjsparser": "^0.9.1", "unicode-match-property-ecmascript": "^2.0.0", "unicode-match-property-value-ecmascript": "^2.1.0" @@ -23848,12 +24041,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/regjsgen": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", - "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", - "dev": true - }, "node_modules/regjsparser": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", @@ -27207,9 +27394,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", "dev": true, "funding": [ { @@ -27219,6 +27406,10 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], "dependencies": { @@ -27226,7 +27417,7 @@ "picocolors": "^1.0.0" }, "bin": { - "browserslist-lint": "cli.js" + "update-browserslist-db": "cli.js" }, "peerDependencies": { "browserslist": ">= 4.21.0" @@ -29080,17 +29271,18 @@ "dev": true }, "@babel/code-frame": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz", - "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==", + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", "requires": { - "@babel/highlight": "^7.22.5" + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" } }, "@babel/compat-data": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.5.tgz", - "integrity": "sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.2.tgz", + "integrity": "sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ==", "dev": true }, "@babel/core": { @@ -29182,50 +29374,70 @@ } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", - "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", + "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.18.6", - "@babel/types": "^7.18.9" + "@babel/types": "^7.22.15" } }, "@babel/helper-compilation-targets": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", - "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", + "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", "dev": true, "requires": { - "@babel/compat-data": "^7.20.0", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.21.3", - "semver": "^6.3.0" + "@babel/compat-data": "^7.22.9", + "@babel/helper-validator-option": "^7.22.15", + "browserslist": "^4.21.9", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "dependencies": { + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } } }, "@babel/helper-create-class-features-plugin": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.5.tgz", - "integrity": "sha512-3RCdA/EmEaikrhayahwToF0fpweU/8o2p8vhc1c/1kftHOdTKuC65kik/TLc+qfbS8JKw4qqJbne4ovICDhmww==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz", + "integrity": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.19.1", - "@babel/helper-split-export-declaration": "^7.18.6" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz", - "integrity": "sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", + "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "regexpu-core": "^5.2.1" + "@babel/helper-annotate-as-pure": "^7.22.5", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" } }, "@babel/helper-define-polyfill-provider": { @@ -29243,18 +29455,9 @@ } }, "@babel/helper-environment-visitor": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", - "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==" - }, - "@babel/helper-explode-assignable-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", - "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==" }, "@babel/helper-function-name": { "version": "7.22.5", @@ -29266,53 +29469,50 @@ } }, "@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", "requires": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", - "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", + "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", "dev": true, "requires": { - "@babel/types": "^7.18.9" + "@babel/types": "^7.23.0" } }, "@babel/helper-module-imports": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", - "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", "requires": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.22.15" } }, "@babel/helper-module-transforms": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz", - "integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz", + "integrity": "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.20.2", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.1", - "@babel/types": "^7.20.2" + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" } }, "@babel/helper-optimise-call-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", - "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", "dev": true, "requires": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" } }, "@babel/helper-plugin-utils": { @@ -29322,53 +29522,51 @@ "dev": true }, "@babel/helper-remap-async-to-generator": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.9.tgz", - "integrity": "sha512-8WWC4oR4Px+tr+Fp0X3RHDVfINGpF3ad1HIbrc8A77epiR6eMMc6jsgozkzT2uDiOOdoS9cLIQ+XD2XvI2WSmQ==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", + "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-wrap-function": "^7.22.9" + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-wrap-function": "^7.22.20" } }, "@babel/helper-replace-supers": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", - "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", + "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/traverse": "^7.19.1", - "@babel/types": "^7.19.0" + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5" } }, "@babel/helper-simple-access": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", - "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", "dev": true, "requires": { - "@babel/types": "^7.20.2" + "@babel/types": "^7.22.5" } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", - "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", "dev": true, "requires": { - "@babel/types": "^7.20.0" + "@babel/types": "^7.22.5" } }, "@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "requires": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" } }, "@babel/helper-string-parser": { @@ -29377,25 +29575,25 @@ "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==" }, "@babel/helper-validator-identifier": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", - "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==" + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==" }, "@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", + "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", "dev": true }, "@babel/helper-wrap-function": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.9.tgz", - "integrity": "sha512-sZ+QzfauuUEfxSEjKFmi3qDSHgLsTPK/pEpoD/qonZKOtTPTLbf59oabPQ4rKekt9lFcj/hTZaOhWwFYrgjk+Q==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", + "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", "dev": true, "requires": { "@babel/helper-function-name": "^7.22.5", - "@babel/template": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/template": "^7.22.15", + "@babel/types": "^7.22.19" } }, "@babel/helpers": { @@ -29410,50 +29608,38 @@ } }, "@babel/highlight": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz", - "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", + "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", "requires": { - "@babel/helper-validator-identifier": "^7.22.5", - "chalk": "^2.0.0", + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.22.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.7.tgz", - "integrity": "sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==" + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", + "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==" }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", - "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.15.tgz", + "integrity": "sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", - "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", - "@babel/plugin-proposal-optional-chaining": "^7.18.9" - } - }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.1.tgz", - "integrity": "sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz", + "integrity": "sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-remap-async-to-generator": "^7.18.9", - "@babel/plugin-syntax-async-generators": "^7.8.4" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.22.15" } }, "@babel/plugin-proposal-class-properties": { @@ -29466,17 +29652,6 @@ "@babel/helper-plugin-utils": "^7.18.6" } }, - "@babel/plugin-proposal-class-static-block": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", - "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - } - }, "@babel/plugin-proposal-decorators": { "version": "7.17.9", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.17.9.tgz", @@ -29491,46 +29666,6 @@ "charcodes": "^0.2.0" } }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", - "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - } - }, - "@babel/plugin-proposal-export-namespace-from": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", - "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - } - }, - "@babel/plugin-proposal-json-strings": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", - "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-json-strings": "^7.8.3" - } - }, - "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", - "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - } - }, "@babel/plugin-proposal-nullish-coalescing-operator": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", @@ -29551,29 +29686,6 @@ "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz", - "integrity": "sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.20.1", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.20.1" - } - }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", - "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - } - }, "@babel/plugin-proposal-optional-chaining": { "version": "7.21.0", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", @@ -29596,26 +29708,11 @@ } }, "@babel/plugin-proposal-private-property-in-object": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz", - "integrity": "sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.20.5", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - } - }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", - "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } + "requires": {} }, "@babel/plugin-syntax-async-generators": { "version": "7.8.4", @@ -29690,12 +29787,21 @@ } }, "@babel/plugin-syntax-import-assertions": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", - "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz", + "integrity": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-syntax-import-attributes": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz", + "integrity": "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-syntax-import-meta": { @@ -29806,15 +29912,37 @@ "@babel/helper-plugin-utils": "^7.16.7" } }, - "@babel/plugin-transform-arrow-functions": { + "@babel/plugin-syntax-unicode-sets-regex": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", - "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", "dev": true, "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" } }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz", + "integrity": "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-async-generator-functions": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.2.tgz", + "integrity": "sha512-BBYVGxbDVHfoeXbOwcagAkOQAm9NxoTdMGfTqghu1GrvadSaw6iW3Je6IcL5PNOw8VwjxqBECXy50/iCQSY/lQ==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.20", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, "@babel/plugin-transform-async-to-generator": { "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz", @@ -29827,85 +29955,127 @@ } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", - "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz", + "integrity": "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.5.tgz", - "integrity": "sha512-WvpEIW9Cbj9ApF3yJCjIEEf1EiNJLtXagOrL5LNWEZOo3jv8pmPoYTSNJQvqej8OavVlgOoOPw6/htGZro6IkA==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.0.tgz", + "integrity": "sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-class-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz", + "integrity": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-class-static-block": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz", + "integrity": "sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-create-class-features-plugin": "^7.22.11", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" } }, "@babel/plugin-transform-classes": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz", - "integrity": "sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz", + "integrity": "sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-replace-supers": "^7.19.1", - "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-split-export-declaration": "^7.22.6", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", - "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz", + "integrity": "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/template": "^7.22.5" } }, "@babel/plugin-transform-destructuring": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz", - "integrity": "sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.0.tgz", + "integrity": "sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", - "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz", + "integrity": "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", - "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz", + "integrity": "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-dynamic-import": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz", + "integrity": "sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", - "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz", + "integrity": "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-export-namespace-from": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz", + "integrity": "sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" } }, "@babel/plugin-transform-flow-strip-types": { @@ -29919,131 +30089,227 @@ } }, "@babel/plugin-transform-for-of": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", - "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz", + "integrity": "sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", - "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz", + "integrity": "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==", "dev": true, "requires": { - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-json-strings": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz", + "integrity": "sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" } }, "@babel/plugin-transform-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", - "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz", + "integrity": "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-logical-assignment-operators": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz", + "integrity": "sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", - "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz", + "integrity": "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz", - "integrity": "sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.0.tgz", + "integrity": "sha512-xWT5gefv2HGSm4QHtgc1sYPbseOyf+FFDo2JbpE25GWl5BqTGO9IMwTYJRoIdjsF85GE+VegHxSCUt5EvoYTAw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-module-transforms": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz", - "integrity": "sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.0.tgz", + "integrity": "sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-simple-access": "^7.19.4" + "@babel/helper-module-transforms": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz", - "integrity": "sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.0.tgz", + "integrity": "sha512-qBej6ctXZD2f+DhlOC9yO47yEYgUh5CZNz/aBoH4j/3NOlRfJXJbY7xDQCqQVf9KbrqGzIWER1f23doHGrIHFg==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-validator-identifier": "^7.19.1" + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", - "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz", + "integrity": "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz", - "integrity": "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", + "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.20.5", - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-new-target": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", - "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz", + "integrity": "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz", + "integrity": "sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-transform-numeric-separator": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz", + "integrity": "sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-transform-object-rest-spread": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz", + "integrity": "sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.22.15" } }, "@babel/plugin-transform-object-super": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", - "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz", + "integrity": "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.5" + } + }, + "@babel/plugin-transform-optional-catch-binding": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz", + "integrity": "sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-transform-optional-chaining": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.0.tgz", + "integrity": "sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, "@babel/plugin-transform-parameters": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.5.tgz", - "integrity": "sha512-h7plkOmcndIUWXZFLgpbrh2+fXAi47zcUX7IrOQuZdLD0I0KvjJ6cvo3BEcAOsDOcZhVKGJqv07mkSqK0y2isQ==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz", + "integrity": "sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-private-methods": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz", + "integrity": "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-private-property-in-object": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz", + "integrity": "sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.11", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" } }, "@babel/plugin-transform-property-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", - "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz", + "integrity": "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-react-display-name": { @@ -30088,22 +30354,22 @@ } }, "@babel/plugin-transform-regenerator": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz", - "integrity": "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==", + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz", + "integrity": "sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.20.2", - "regenerator-transform": "^0.15.1" + "@babel/helper-plugin-utils": "^7.22.5", + "regenerator-transform": "^0.15.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", - "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz", + "integrity": "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-runtime": { @@ -30121,49 +30387,49 @@ } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", - "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz", + "integrity": "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-spread": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", - "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz", + "integrity": "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", - "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz", + "integrity": "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-template-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", - "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz", + "integrity": "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", - "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz", + "integrity": "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-typescript": { @@ -30178,57 +30444,65 @@ } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", - "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz", + "integrity": "sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-unicode-property-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz", + "integrity": "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", - "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz", + "integrity": "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-unicode-sets-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz", + "integrity": "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/preset-env": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz", - "integrity": "sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.2.tgz", + "integrity": "sha512-BW3gsuDD+rvHL2VO2SjAUNTBe5YrjsTiDyqamPDWY723na3/yPQ65X5oQkFVJZ0o50/2d+svm1rkPoJeR1KxVQ==", "dev": true, "requires": { - "@babel/compat-data": "^7.20.1", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-validator-option": "^7.18.6", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-async-generator-functions": "^7.20.1", - "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/plugin-proposal-class-static-block": "^7.18.6", - "@babel/plugin-proposal-dynamic-import": "^7.18.6", - "@babel/plugin-proposal-export-namespace-from": "^7.18.9", - "@babel/plugin-proposal-json-strings": "^7.18.6", - "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", - "@babel/plugin-proposal-numeric-separator": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.20.2", - "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", - "@babel/plugin-proposal-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-private-methods": "^7.18.6", - "@babel/plugin-proposal-private-property-in-object": "^7.18.6", - "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", + "@babel/compat-data": "^7.23.2", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.15", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.15", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.20.0", + "@babel/plugin-syntax-import-assertions": "^7.22.5", + "@babel/plugin-syntax-import-attributes": "^7.22.5", + "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", @@ -30238,77 +30512,116 @@ "@babel/plugin-syntax-optional-chaining": "^7.8.3", "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.18.6", - "@babel/plugin-transform-async-to-generator": "^7.18.6", - "@babel/plugin-transform-block-scoped-functions": "^7.18.6", - "@babel/plugin-transform-block-scoping": "^7.20.2", - "@babel/plugin-transform-classes": "^7.20.2", - "@babel/plugin-transform-computed-properties": "^7.18.9", - "@babel/plugin-transform-destructuring": "^7.20.2", - "@babel/plugin-transform-dotall-regex": "^7.18.6", - "@babel/plugin-transform-duplicate-keys": "^7.18.9", - "@babel/plugin-transform-exponentiation-operator": "^7.18.6", - "@babel/plugin-transform-for-of": "^7.18.8", - "@babel/plugin-transform-function-name": "^7.18.9", - "@babel/plugin-transform-literals": "^7.18.9", - "@babel/plugin-transform-member-expression-literals": "^7.18.6", - "@babel/plugin-transform-modules-amd": "^7.19.6", - "@babel/plugin-transform-modules-commonjs": "^7.19.6", - "@babel/plugin-transform-modules-systemjs": "^7.19.6", - "@babel/plugin-transform-modules-umd": "^7.18.6", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1", - "@babel/plugin-transform-new-target": "^7.18.6", - "@babel/plugin-transform-object-super": "^7.18.6", - "@babel/plugin-transform-parameters": "^7.20.1", - "@babel/plugin-transform-property-literals": "^7.18.6", - "@babel/plugin-transform-regenerator": "^7.18.6", - "@babel/plugin-transform-reserved-words": "^7.18.6", - "@babel/plugin-transform-shorthand-properties": "^7.18.6", - "@babel/plugin-transform-spread": "^7.19.0", - "@babel/plugin-transform-sticky-regex": "^7.18.6", - "@babel/plugin-transform-template-literals": "^7.18.9", - "@babel/plugin-transform-typeof-symbol": "^7.18.9", - "@babel/plugin-transform-unicode-escapes": "^7.18.10", - "@babel/plugin-transform-unicode-regex": "^7.18.6", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.20.2", - "babel-plugin-polyfill-corejs2": "^0.3.3", - "babel-plugin-polyfill-corejs3": "^0.6.0", - "babel-plugin-polyfill-regenerator": "^0.4.1", - "core-js-compat": "^3.25.1", - "semver": "^6.3.0" - }, - "dependencies": { + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.22.5", + "@babel/plugin-transform-async-generator-functions": "^7.23.2", + "@babel/plugin-transform-async-to-generator": "^7.22.5", + "@babel/plugin-transform-block-scoped-functions": "^7.22.5", + "@babel/plugin-transform-block-scoping": "^7.23.0", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-class-static-block": "^7.22.11", + "@babel/plugin-transform-classes": "^7.22.15", + "@babel/plugin-transform-computed-properties": "^7.22.5", + "@babel/plugin-transform-destructuring": "^7.23.0", + "@babel/plugin-transform-dotall-regex": "^7.22.5", + "@babel/plugin-transform-duplicate-keys": "^7.22.5", + "@babel/plugin-transform-dynamic-import": "^7.22.11", + "@babel/plugin-transform-exponentiation-operator": "^7.22.5", + "@babel/plugin-transform-export-namespace-from": "^7.22.11", + "@babel/plugin-transform-for-of": "^7.22.15", + "@babel/plugin-transform-function-name": "^7.22.5", + "@babel/plugin-transform-json-strings": "^7.22.11", + "@babel/plugin-transform-literals": "^7.22.5", + "@babel/plugin-transform-logical-assignment-operators": "^7.22.11", + "@babel/plugin-transform-member-expression-literals": "^7.22.5", + "@babel/plugin-transform-modules-amd": "^7.23.0", + "@babel/plugin-transform-modules-commonjs": "^7.23.0", + "@babel/plugin-transform-modules-systemjs": "^7.23.0", + "@babel/plugin-transform-modules-umd": "^7.22.5", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.22.5", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.11", + "@babel/plugin-transform-numeric-separator": "^7.22.11", + "@babel/plugin-transform-object-rest-spread": "^7.22.15", + "@babel/plugin-transform-object-super": "^7.22.5", + "@babel/plugin-transform-optional-catch-binding": "^7.22.11", + "@babel/plugin-transform-optional-chaining": "^7.23.0", + "@babel/plugin-transform-parameters": "^7.22.15", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/plugin-transform-private-property-in-object": "^7.22.11", + "@babel/plugin-transform-property-literals": "^7.22.5", + "@babel/plugin-transform-regenerator": "^7.22.10", + "@babel/plugin-transform-reserved-words": "^7.22.5", + "@babel/plugin-transform-shorthand-properties": "^7.22.5", + "@babel/plugin-transform-spread": "^7.22.5", + "@babel/plugin-transform-sticky-regex": "^7.22.5", + "@babel/plugin-transform-template-literals": "^7.22.5", + "@babel/plugin-transform-typeof-symbol": "^7.22.5", + "@babel/plugin-transform-unicode-escapes": "^7.22.10", + "@babel/plugin-transform-unicode-property-regex": "^7.22.5", + "@babel/plugin-transform-unicode-regex": "^7.22.5", + "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "@babel/types": "^7.23.0", + "babel-plugin-polyfill-corejs2": "^0.4.6", + "babel-plugin-polyfill-corejs3": "^0.8.5", + "babel-plugin-polyfill-regenerator": "^0.5.3", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" + }, + "dependencies": { + "@babel/helper-define-polyfill-provider": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz", + "integrity": "sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + } + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz", + "integrity": "sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.4.3", + "semver": "^6.3.1" + } + }, "babel-plugin-polyfill-corejs3": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz", - "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==", + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.5.tgz", + "integrity": "sha512-Q6CdATeAvbScWPNLB8lzSO7fgUVBkQt6zLgNlfyeCr/EQaEQR+bWiBYYPYAFyE528BMjRhL+1QBMOI4jc/c5TA==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.3", - "core-js-compat": "^3.25.1" + "@babel/helper-define-polyfill-provider": "^0.4.3", + "core-js-compat": "^3.32.2" } }, "babel-plugin-polyfill-regenerator": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", - "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz", + "integrity": "sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.3" + "@babel/helper-define-polyfill-provider": "^0.4.3" } } } }, "@babel/preset-modules": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", "@babel/types": "^7.4.4", "esutils": "^2.0.2" } @@ -30338,6 +30651,12 @@ "@babel/plugin-transform-typescript": "^7.16.7" } }, + "@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true + }, "@babel/runtime": { "version": "7.21.0", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz", @@ -30347,13 +30666,13 @@ } }, "@babel/template": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", - "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", "requires": { - "@babel/code-frame": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" } }, "@babel/traverse": { @@ -30374,12 +30693,12 @@ } }, "@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", + "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", "requires": { "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" } }, @@ -35814,15 +36133,15 @@ "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" }, "browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", + "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001400", - "electron-to-chromium": "^1.4.251", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.9" + "caniuse-lite": "^1.0.30001541", + "electron-to-chromium": "^1.4.535", + "node-releases": "^2.0.13", + "update-browserslist-db": "^1.0.13" } }, "bs-logger": { @@ -36092,9 +36411,9 @@ "integrity": "sha512-W2lPwkBkMZwFlPCXhIlYgxu+7gC/NUlCtdK652DAJ1JdgV0sTrvuPFshNPrFa1TY2JOkLhgdeEBplB4ezEa+xg==" }, "caniuse-lite": { - "version": "1.0.30001435", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001435.tgz", - "integrity": "sha512-kdCkUTjR+v4YAJelyiDTqiu82BDr4W4CP5sgTA0ZBmqn30XfS2ZghPLMowik9TPhS+psWJiUNxsqLyurDbmutA==", + "version": "1.0.30001547", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001547.tgz", + "integrity": "sha512-W7CrtIModMAxobGhz8iXmDfuJiiKg1WADMO/9x7/CLNin5cpSbuBjooyoIUVB5eyCc36QuTVlkVa1iB2S5+/eA==", "dev": true }, "caseless": { @@ -37005,12 +37324,12 @@ "dev": true }, "core-js-compat": { - "version": "3.26.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.26.1.tgz", - "integrity": "sha512-622/KzTudvXCDLRw70iHW4KKs1aGpcRcowGWyYJr2DEBfRrd6hNJybxSWJFuZYD4ma86xhrwDDHxmDaIq4EA8A==", + "version": "3.33.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.0.tgz", + "integrity": "sha512-0w4LcLXsVEuNkIqwjjf9rjCoPhK8uqA4tMRh4Ge26vfLtUutshn+aRJU21I9LCJlh2QQHfisNToLjw1XEJLTWw==", "dev": true, "requires": { - "browserslist": "^4.21.4" + "browserslist": "^4.22.1" } }, "core-js-pure": { @@ -38167,9 +38486,9 @@ } }, "electron-to-chromium": { - "version": "1.4.284", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", - "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", + "version": "1.4.551", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.551.tgz", + "integrity": "sha512-/Ng/W/kFv7wdEHYzxdK7Cv0BHEGSkSB3M0Ssl8Ndr1eMiYeas/+Mv4cNaDqamqWx6nd2uQZfPz6g25z25M/sdw==", "dev": true }, "elliptic": { @@ -45168,9 +45487,9 @@ } }, "node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", "dev": true }, "nopt": { @@ -46786,9 +47105,9 @@ "dev": true }, "regenerate-unicode-properties": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", - "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", "dev": true, "requires": { "regenerate": "^1.4.2" @@ -46800,9 +47119,9 @@ "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" }, "regenerator-transform": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", - "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", "dev": true, "requires": { "@babel/runtime": "^7.8.4" @@ -46826,14 +47145,14 @@ "dev": true }, "regexpu-core": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz", - "integrity": "sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", "dev": true, "requires": { + "@babel/regjsgen": "^0.8.0", "regenerate": "^1.4.2", "regenerate-unicode-properties": "^10.1.0", - "regjsgen": "^0.7.1", "regjsparser": "^0.9.1", "unicode-match-property-ecmascript": "^2.0.0", "unicode-match-property-value-ecmascript": "^2.1.0" @@ -46857,12 +47176,6 @@ "rc": "1.2.8" } }, - "regjsgen": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", - "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", - "dev": true - }, "regjsparser": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", @@ -49486,9 +49799,9 @@ "dev": true }, "update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", "dev": true, "requires": { "escalade": "^3.1.1", diff --git a/package.json b/package.json index 0b1db77c9..746eda8d3 100644 --- a/package.json +++ b/package.json @@ -103,7 +103,7 @@ "devDependencies": { "@babel/core": "7.20.5", "@babel/plugin-proposal-class-properties": "7.18.6", - "@babel/preset-env": "7.20.2", + "@babel/preset-env": "7.23.2", "@babel/preset-react": "7.18.6", "@redux-devtools/cli": "^3.0.1", "@testing-library/dom": "8.19.0", From 57c4138160431429f4405e8690691555bff67085 Mon Sep 17 00:00:00 2001 From: Vynnyk Dmytro Date: Wed, 18 Oct 2023 00:17:12 +0300 Subject: [PATCH 064/243] Improve skeleton for dark mode (#835) --- package.json | 2 +- .../pages/home/components/nft-list/index.tsx | 3 +-- .../loading-activity-view.tsx | 3 +-- .../nft-media-placeholder.tsx | 15 +++----------- src/libs/ui/components/skeleton/skeleton.tsx | 20 +++++++++++++++++++ .../ui/components/typography/typography.tsx | 8 ++++++-- src/libs/ui/index.ts | 1 + .../Casper Wallet.xcodeproj/project.pbxproj | 8 ++++---- 8 files changed, 37 insertions(+), 23 deletions(-) create mode 100644 src/libs/ui/components/skeleton/skeleton.tsx diff --git a/package.json b/package.json index 746eda8d3..07905a380 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "Casper Wallet", "description": "Securely manage your CSPR tokens and interact with dapps with the self-custody wallet for the Casper blockchain.", - "version": "1.6.0", + "version": "1.6.1", "author": "MAKE LLC", "scripts": { "devtools:redux": "redux-devtools --hostname=localhost", diff --git a/src/apps/popup/pages/home/components/nft-list/index.tsx b/src/apps/popup/pages/home/components/nft-list/index.tsx index 914da3d30..c9e265928 100644 --- a/src/apps/popup/pages/home/components/nft-list/index.tsx +++ b/src/apps/popup/pages/home/components/nft-list/index.tsx @@ -2,11 +2,10 @@ import React, { useEffect } from 'react'; import { Trans, useTranslation } from 'react-i18next'; import styled from 'styled-components'; import { useSelector } from 'react-redux'; -import Skeleton from 'react-loading-skeleton'; import useInfiniteScroll from 'react-infinite-scroll-hook'; import { useFetchNftTokens } from '@src/hooks'; -import { Tile, Typography } from '@libs/ui'; +import { Skeleton, Tile, Typography } from '@libs/ui'; import { BorderContainer, CenteredFlexRow, diff --git a/src/libs/ui/components/loading-activity-view/loading-activity-view.tsx b/src/libs/ui/components/loading-activity-view/loading-activity-view.tsx index 1e87377c6..48b537b4d 100644 --- a/src/libs/ui/components/loading-activity-view/loading-activity-view.tsx +++ b/src/libs/ui/components/loading-activity-view/loading-activity-view.tsx @@ -1,5 +1,4 @@ import React, { forwardRef } from 'react'; -import Skeleton from 'react-loading-skeleton'; import { AccountActivityPlateContainer, @@ -7,7 +6,7 @@ import { SpacingSize, VerticalSpaceContainer } from '@libs/layout'; -import { Tile } from '@libs/ui'; +import { Skeleton, Tile } from '@libs/ui'; type Ref = HTMLDivElement; diff --git a/src/libs/ui/components/nft-media-placeholder/nft-media-placeholder.tsx b/src/libs/ui/components/nft-media-placeholder/nft-media-placeholder.tsx index be20a9f59..1cf42f96f 100644 --- a/src/libs/ui/components/nft-media-placeholder/nft-media-placeholder.tsx +++ b/src/libs/ui/components/nft-media-placeholder/nft-media-placeholder.tsx @@ -1,8 +1,7 @@ import React from 'react'; -import Skeleton from 'react-loading-skeleton'; -import styled, { useTheme } from 'styled-components'; +import styled from 'styled-components'; -import { SvgIcon } from '@libs/ui'; +import { Skeleton, SvgIcon } from '@libs/ui'; import { CenteredFlexRow } from '@libs/layout'; export const ImageContainer = styled(CenteredFlexRow)` @@ -59,17 +58,9 @@ export const VideoNftPlaceholder: React.FC = () => ( ); export const LoadingMediaPlaceholder = () => { - const theme = useTheme(); - return ( - + ); }; diff --git a/src/libs/ui/components/skeleton/skeleton.tsx b/src/libs/ui/components/skeleton/skeleton.tsx new file mode 100644 index 000000000..e443e106a --- /dev/null +++ b/src/libs/ui/components/skeleton/skeleton.tsx @@ -0,0 +1,20 @@ +import React from 'react'; +import SkeletonLib from 'react-loading-skeleton'; +import { useTheme } from 'styled-components'; +import { SkeletonProps } from 'react-loading-skeleton/dist/Skeleton'; + +export const Skeleton: React.FC = ({ + baseColor, + highlightColor, + ...props +}) => { + const theme = useTheme(); + + return ( + + ); +}; diff --git a/src/libs/ui/components/typography/typography.tsx b/src/libs/ui/components/typography/typography.tsx index fc6b69058..d287c8439 100644 --- a/src/libs/ui/components/typography/typography.tsx +++ b/src/libs/ui/components/typography/typography.tsx @@ -1,8 +1,12 @@ import React, { forwardRef } from 'react'; -import Skeleton from 'react-loading-skeleton'; import styled, { CSSObject, DefaultTheme } from 'styled-components'; -import { BaseProps, ContentColor, getColorFromTheme } from '@src/libs/ui'; +import { + BaseProps, + ContentColor, + getColorFromTheme, + Skeleton +} from '@src/libs/ui'; type Ref = HTMLSpanElement | HTMLHeadingElement; diff --git a/src/libs/ui/index.ts b/src/libs/ui/index.ts index 59d316d16..83c5e446f 100644 --- a/src/libs/ui/index.ts +++ b/src/libs/ui/index.ts @@ -44,6 +44,7 @@ export * from './components/transfer-success-screen/transfer-succeess-screen'; export * from './components/contract-icon/contract-icon'; export * from './components/password-inputs/password-inputs'; export * from './components/toggle/toggle'; +export * from './components/skeleton/skeleton'; export * from './utils/match-media'; export * from './utils/match-size'; diff --git a/xcode-project/Casper Wallet/Casper Wallet.xcodeproj/project.pbxproj b/xcode-project/Casper Wallet/Casper Wallet.xcodeproj/project.pbxproj index bc11009f8..fe55c4a2b 100644 --- a/xcode-project/Casper Wallet/Casper Wallet.xcodeproj/project.pbxproj +++ b/xcode-project/Casper Wallet/Casper Wallet.xcodeproj/project.pbxproj @@ -564,7 +564,7 @@ CODE_SIGN_ENTITLEMENTS = "Casper Wallet/Casper Wallet.entitlements"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 27; + CURRENT_PROJECT_VERSION = 29; ENABLE_HARDENED_RUNTIME = YES; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "Casper Wallet/Info.plist"; @@ -578,7 +578,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 10.14; - MARKETING_VERSION = 1.6.0; + MARKETING_VERSION = 1.6.1; OTHER_LDFLAGS = ( "-framework", SafariServices, @@ -601,7 +601,7 @@ CODE_SIGN_ENTITLEMENTS = "Casper Wallet/Casper Wallet.entitlements"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 27; + CURRENT_PROJECT_VERSION = 29; ENABLE_HARDENED_RUNTIME = YES; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "Casper Wallet/Info.plist"; @@ -615,7 +615,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 10.14; - MARKETING_VERSION = 1.6.0; + MARKETING_VERSION = 1.6.1; OTHER_LDFLAGS = ( "-framework", SafariServices, From 22873f4fc168c0dffdba13f7b17be9eb539d018e Mon Sep 17 00:00:00 2001 From: Vynnyk Dmytro Date: Thu, 19 Oct 2023 21:46:48 +0300 Subject: [PATCH 065/243] Release 1.6.1 version (#837) --- .../Casper Wallet/Casper Wallet.xcodeproj/project.pbxproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/xcode-project/Casper Wallet/Casper Wallet.xcodeproj/project.pbxproj b/xcode-project/Casper Wallet/Casper Wallet.xcodeproj/project.pbxproj index fe55c4a2b..17d15efa9 100644 --- a/xcode-project/Casper Wallet/Casper Wallet.xcodeproj/project.pbxproj +++ b/xcode-project/Casper Wallet/Casper Wallet.xcodeproj/project.pbxproj @@ -564,7 +564,7 @@ CODE_SIGN_ENTITLEMENTS = "Casper Wallet/Casper Wallet.entitlements"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 29; + CURRENT_PROJECT_VERSION = 30; ENABLE_HARDENED_RUNTIME = YES; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "Casper Wallet/Info.plist"; @@ -601,7 +601,7 @@ CODE_SIGN_ENTITLEMENTS = "Casper Wallet/Casper Wallet.entitlements"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 29; + CURRENT_PROJECT_VERSION = 30; ENABLE_HARDENED_RUNTIME = YES; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "Casper Wallet/Info.plist"; From 7ba1faa5f8f69ef38cda3e5fe2c84a19d8b0945c Mon Sep 17 00:00:00 2001 From: Ostap Piatkovskyi <44294945+ost-ptk@users.noreply.github.com> Date: Wed, 1 Nov 2023 11:46:22 +0200 Subject: [PATCH 066/243] fixed issue with insufficient data for displaying erc-20 tokens (#840) Co-authored-by: ost-ptk --- src/apps/popup/pages/home/components/tokens-list/utils.ts | 4 ++-- src/libs/ui/components/token-plate/token-plate.tsx | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/apps/popup/pages/home/components/tokens-list/utils.ts b/src/apps/popup/pages/home/components/tokens-list/utils.ts index c7beb6cf7..61f7aa679 100644 --- a/src/apps/popup/pages/home/components/tokens-list/utils.ts +++ b/src/apps/popup/pages/home/components/tokens-list/utils.ts @@ -32,8 +32,8 @@ export const formatErc20TokenBalance = ( name: token.contract_name, balance: token.balance, amount: erc20Amount, - symbol: token.metadata.symbol, - decimals: token.metadata.decimals, + symbol: token.metadata?.symbol || '', + decimals: token.metadata?.decimals, amountFiat: null, icon: token.icon_url || 'assets/icons/erc20-avatar.svg' }; diff --git a/src/libs/ui/components/token-plate/token-plate.tsx b/src/libs/ui/components/token-plate/token-plate.tsx index 2942a4cad..0cb1d2605 100644 --- a/src/libs/ui/components/token-plate/token-plate.tsx +++ b/src/libs/ui/components/token-plate/token-plate.tsx @@ -79,7 +79,7 @@ export const TokenPlate = ({ type="bodyHash" color="contentSecondary" ellipsis={!!(token?.symbol && token.symbol.length > 6)} - loading={!token?.symbol} + loading={!token?.symbol && token?.symbol !== ''} > {token?.symbol} From 2dacf5d17016f7878c27bafb637ac54b6decffce Mon Sep 17 00:00:00 2001 From: Muhammet Kara Date: Wed, 1 Nov 2023 14:36:51 +0300 Subject: [PATCH 067/243] Update README.md to add reference to CSPR.click for integration (#842) --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index f545366d5..6b58aa6aa 100755 --- a/README.md +++ b/README.md @@ -6,6 +6,10 @@ --- +## Integrate Casper Wallet Into Your App + +The recommended way of integrating Casper Wallet into your app is through [CSPR.click](https://CSPR.click), which provides a combined integration of major wallets in the Casper ecosystem, all at once, without the burden of maintaining multiple integrations at the same time. Please head over to [the CSPR.click documentation](https://docs.cspr.click) to start. + ## Testing Casper Wallet integration on **Casper Wallet Playground** *Casper Wallet Playground is a React webapp created as a developer tool to help test integration with various features available in Casper Wallet.* From a1267023a03be4cc4e602a5aef0aca87eb485f5b Mon Sep 17 00:00:00 2001 From: Vynnyk Dmytro Date: Thu, 2 Nov 2023 16:06:16 +0200 Subject: [PATCH 068/243] Improve erc20 tokens fetching (#843) --- src/background/index.ts | 34 ++++---------------- src/libs/services/erc20-service/constants.ts | 2 +- src/libs/services/erc20-service/types.ts | 1 + 3 files changed, 9 insertions(+), 28 deletions(-) diff --git a/src/background/index.ts b/src/background/index.ts index 2c16cc549..c724a0560 100644 --- a/src/background/index.ts +++ b/src/background/index.ts @@ -59,10 +59,7 @@ import { MapExtendedDeploy, MapPaginatedExtendedDeploys } from '@libs/services/account-activity-service'; -import { - fetchContractPackage, - fetchErc20Tokens -} from '@libs/services/erc20-service'; +import { fetchErc20Tokens } from '@libs/services/erc20-service'; import { openWindow } from './open-window'; import { @@ -102,7 +99,7 @@ import { } from './redux/settings/actions'; import { activeOriginChanged } from './redux/active-origin/actions'; import { selectApiConfigBasedOnActiveNetwork } from './redux/settings/selectors'; -import { getUrlOrigin, hasHttpPrefix, notEmpty } from '@src/utils'; +import { getUrlOrigin, hasHttpPrefix } from '@src/utils'; import { CannotGetActiveAccountError, CannotGetSenderOriginError @@ -642,28 +639,11 @@ browser.runtime.onMessage.addListener( }); if (tokensList) { - const erc20Tokens = await Promise.allSettled( - tokensList?.map(token => - fetchContractPackage({ - casperApiUrl, - contractPackageHash: token.contract_package_hash - }).then(contractPackage => ({ - ...contractPackage, - balance: token.balance, - contractHash: token.latest_contract?.contract_hash - })) - ) - ).then(results => - results - .map(result => { - if (result.status === 'fulfilled') { - return result.value; - } else { - return null; - } - }) - .filter(notEmpty) - ); + const erc20Tokens = tokensList.map(token => ({ + balance: token.balance, + contractHash: token.latest_contract?.contract_hash, + ...(token?.contract_package ?? {}) + })); return sendResponse( serviceMessage.fetchErc20TokensResponse(erc20Tokens) diff --git a/src/libs/services/erc20-service/constants.ts b/src/libs/services/erc20-service/constants.ts index 27e20d8ac..44b5ee417 100644 --- a/src/libs/services/erc20-service/constants.ts +++ b/src/libs/services/erc20-service/constants.ts @@ -1,5 +1,5 @@ export const getErc20TokensUrl = (casperApiUrl: string, accountHash: string) => - `${casperApiUrl}/accounts/${accountHash}/erc20-tokens?fields=latest_contract`; + `${casperApiUrl}/accounts/${accountHash}/erc20-tokens?fields=latest_contract,contract_package`; export const getContractPackageUrl = ( casperApiUrl: string, diff --git a/src/libs/services/erc20-service/types.ts b/src/libs/services/erc20-service/types.ts index 9ffad3549..3cdce250c 100644 --- a/src/libs/services/erc20-service/types.ts +++ b/src/libs/services/erc20-service/types.ts @@ -12,6 +12,7 @@ export interface Erc20Token { protocol_version: string; timestamp: string; }; + contract_package: ContractPackage; } export interface ContractPackage { From 155d44d8a234cee0c4bbdd3d8cfca4a4403cd3cd Mon Sep 17 00:00:00 2001 From: Vynnyk Dmytro Date: Thu, 2 Nov 2023 16:09:22 +0200 Subject: [PATCH 069/243] Release/1.6.2 (#844) * Improve erc20 tokens fetching * Release 1.6.2 version --- package.json | 2 +- .../Casper Wallet/Casper Wallet.xcodeproj/project.pbxproj | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 07905a380..0ce54135f 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "Casper Wallet", "description": "Securely manage your CSPR tokens and interact with dapps with the self-custody wallet for the Casper blockchain.", - "version": "1.6.1", + "version": "1.6.2", "author": "MAKE LLC", "scripts": { "devtools:redux": "redux-devtools --hostname=localhost", diff --git a/xcode-project/Casper Wallet/Casper Wallet.xcodeproj/project.pbxproj b/xcode-project/Casper Wallet/Casper Wallet.xcodeproj/project.pbxproj index 17d15efa9..30570fdf1 100644 --- a/xcode-project/Casper Wallet/Casper Wallet.xcodeproj/project.pbxproj +++ b/xcode-project/Casper Wallet/Casper Wallet.xcodeproj/project.pbxproj @@ -564,7 +564,7 @@ CODE_SIGN_ENTITLEMENTS = "Casper Wallet/Casper Wallet.entitlements"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 30; + CURRENT_PROJECT_VERSION = 32; ENABLE_HARDENED_RUNTIME = YES; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "Casper Wallet/Info.plist"; @@ -578,7 +578,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 10.14; - MARKETING_VERSION = 1.6.1; + MARKETING_VERSION = 1.6.2; OTHER_LDFLAGS = ( "-framework", SafariServices, @@ -601,7 +601,7 @@ CODE_SIGN_ENTITLEMENTS = "Casper Wallet/Casper Wallet.entitlements"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 30; + CURRENT_PROJECT_VERSION = 32; ENABLE_HARDENED_RUNTIME = YES; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "Casper Wallet/Info.plist"; @@ -615,7 +615,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 10.14; - MARKETING_VERSION = 1.6.1; + MARKETING_VERSION = 1.6.2; OTHER_LDFLAGS = ( "-framework", SafariServices, From 249c4a9d3418413a8289457296c9b333ae0f21ce Mon Sep 17 00:00:00 2001 From: Ostap Piatkovskyi <44294945+ost-ptk@users.noreply.github.com> Date: Thu, 9 Nov 2023 15:59:58 +0200 Subject: [PATCH 070/243] feature: add QR code option to the settings menu (#774) * added QR code option to the settings menu * added QR generation page and removed unused props * merge conflict issue fixed * temp commit * Get symbol and decimal optional * Add qr code generation for sync wallet * UI and UX fixes, and fixed validation rule * moved qr generation under password protection and removed one time password * Improve qrCode generation * Add multi qr code presenting --------- Co-authored-by: ost-ptk Co-authored-by: Vynnyk Dmytro --- .nvmrc | 2 +- package-lock.json | 14 +++ package.json | 1 + src/apps/popup/app-router.tsx | 5 ++ .../backup-secret-phrase-password/index.tsx | 28 ++++-- .../home/components/tokens-list/utils.ts | 4 +- .../popup/pages/navigation-menu/index.tsx | 12 +++ src/apps/popup/pages/receive/content.tsx | 8 +- src/apps/popup/pages/token-details/token.tsx | 6 +- .../popup/pages/transfer/confirm-step.tsx | 2 +- src/apps/popup/pages/transfer/index.tsx | 1 - .../popup/pages/wallet-qr-code/content.tsx | 73 +++++++++++++++ src/apps/popup/pages/wallet-qr-code/index.tsx | 89 +++++++++++++++++++ src/apps/popup/router/paths.ts | 1 + src/assets/icons/qr.svg | 11 +++ src/libs/crypto/hashing.ts | 2 +- src/libs/crypto/index.ts | 1 + src/libs/crypto/sync-wallet-qr.ts | 52 +++++++++++ .../erc20-token-activity-list.tsx | 4 +- src/libs/ui/forms/form-validation-rules.ts | 8 +- src/libs/ui/forms/transfer.ts | 3 +- .../Casper Wallet.xcodeproj/project.pbxproj | 8 +- 22 files changed, 302 insertions(+), 33 deletions(-) create mode 100644 src/apps/popup/pages/wallet-qr-code/content.tsx create mode 100644 src/apps/popup/pages/wallet-qr-code/index.tsx create mode 100644 src/assets/icons/qr.svg create mode 100644 src/libs/crypto/sync-wallet-qr.ts diff --git a/.nvmrc b/.nvmrc index 5edcff036..9e15be387 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -v16 \ No newline at end of file +v16.20.0 diff --git a/package-lock.json b/package-lock.json index da0b0280b..c370383c6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,6 +13,7 @@ "@hot-loader/react-dom": "^17.0.1", "@lapo/asn1js": "1.2.4", "@make-software/ces-js-parser": "1.3.2", + "@noble/ciphers": "^0.3.0", "@scure/bip32": "1.3.2", "@scure/bip39": "1.2.1", "@types/argon2-browser": "1.18.1", @@ -4269,6 +4270,14 @@ "integrity": "sha512-CD/2ai1W45cDN/zN2AcYduDavU+nq9aStyQizi4MHxnwkRvS/H24WIjgc1qD8CISoqXa8AAIe+A+zpWxwV7a2Q==", "dev": true }, + "node_modules/@noble/ciphers": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-0.3.0.tgz", + "integrity": "sha512-ldbrnOjmNRwFdXcTM6uXDcxpMIFrbzAWNnpBPp4oTJTFF0XByGD6vf45WrehZGXRQTRVV+Zm8YP+EgEf+e4cWA==", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@noble/curves": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", @@ -32070,6 +32079,11 @@ "integrity": "sha512-CD/2ai1W45cDN/zN2AcYduDavU+nq9aStyQizi4MHxnwkRvS/H24WIjgc1qD8CISoqXa8AAIe+A+zpWxwV7a2Q==", "dev": true }, + "@noble/ciphers": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-0.3.0.tgz", + "integrity": "sha512-ldbrnOjmNRwFdXcTM6uXDcxpMIFrbzAWNnpBPp4oTJTFF0XByGD6vf45WrehZGXRQTRVV+Zm8YP+EgEf+e4cWA==" + }, "@noble/curves": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", diff --git a/package.json b/package.json index 0ce54135f..6c3097cc3 100644 --- a/package.json +++ b/package.json @@ -61,6 +61,7 @@ "@hot-loader/react-dom": "^17.0.1", "@lapo/asn1js": "1.2.4", "@make-software/ces-js-parser": "1.3.2", + "@noble/ciphers": "^0.3.0", "@scure/bip32": "1.3.2", "@scure/bip39": "1.2.1", "@types/argon2-browser": "1.18.1", diff --git a/src/apps/popup/app-router.tsx b/src/apps/popup/app-router.tsx index 2be8040ae..983098e99 100644 --- a/src/apps/popup/app-router.tsx +++ b/src/apps/popup/app-router.tsx @@ -34,6 +34,7 @@ import { TokenDetailPage } from 'src/apps/popup/pages/token-details'; import { ActivityDetailsPage } from '@popup/pages/activity-details'; import { ReceivePage } from '@popup/pages/receive'; import { NftDetailsPage } from '@popup/pages/nft-details'; +import { WalletQrCodePage } from '@popup/pages/wallet-qr-code'; import { TransferNftPage } from '@popup/pages/transfer-nft'; import { ChangePasswordPage } from '@popup/pages/change-password'; @@ -242,6 +243,10 @@ function AppRoutes() { } /> } /> } /> + } + /> } /> void; + onClick?: (password: string) => Promise; + loading?: boolean; } export const BackupSecretPhrasePasswordPage = ({ - setPasswordConfirmed + setPasswordConfirmed, + onClick, + loading = false }: BackupSecretPhrasePasswordPageType) => { const { t } = useTranslation(); @@ -40,7 +44,8 @@ export const BackupSecretPhrasePasswordPage = ({ const { register, handleSubmit, - formState: { errors, isDirty } + formState: { errors, isDirty }, + getValues } = useUnlockWalletForm(passwordHash, passwordSaltHash); const isSubmitButtonDisabled = calculateSubmitButtonDisabled({ @@ -48,8 +53,17 @@ export const BackupSecretPhrasePasswordPage = ({ }); const onSubmit = () => { - setPasswordConfirmed(); - dispatchToMainStore(loginRetryCountReseted()); + if (onClick) { + const { password } = getValues(); + + onClick(password).then(() => { + setPasswordConfirmed(); + dispatchToMainStore(loginRetryCountReseted()); + }); + } else { + setPasswordConfirmed(); + dispatchToMainStore(loginRetryCountReseted()); + } }; return ( @@ -75,8 +89,8 @@ export const BackupSecretPhrasePasswordPage = ({ )} renderFooter={() => ( - )} diff --git a/src/apps/popup/pages/home/components/tokens-list/utils.ts b/src/apps/popup/pages/home/components/tokens-list/utils.ts index 61f7aa679..70c578ed3 100644 --- a/src/apps/popup/pages/home/components/tokens-list/utils.ts +++ b/src/apps/popup/pages/home/components/tokens-list/utils.ts @@ -32,8 +32,8 @@ export const formatErc20TokenBalance = ( name: token.contract_name, balance: token.balance, amount: erc20Amount, - symbol: token.metadata?.symbol || '', - decimals: token.metadata?.decimals, + symbol: token?.metadata?.symbol || '', + decimals: token?.metadata?.decimals, amountFiat: null, icon: token.icon_url || 'assets/icons/erc20-avatar.svg' }; diff --git a/src/apps/popup/pages/navigation-menu/index.tsx b/src/apps/popup/pages/navigation-menu/index.tsx index b53f95f58..4f434b3e9 100644 --- a/src/apps/popup/pages/navigation-menu/index.tsx +++ b/src/apps/popup/pages/navigation-menu/index.tsx @@ -183,6 +183,18 @@ export function NavigationMenuPageContent() { }, { id: 2, + title: t('Generate wallet QR code'), + description: t('Scan to import your wallet on mobile'), + iconPath: 'assets/icons/qr.svg', + disabled: false, + handleOnClick: () => { + closeNavigationMenu(); + + navigate(RouterPath.GenerateWalletQRCode); + } + }, + { + id: 3, title: t('Download account keys'), description: t('For all accounts imported via file'), iconPath: 'assets/icons/download.svg', diff --git a/src/apps/popup/pages/receive/content.tsx b/src/apps/popup/pages/receive/content.tsx index 18d9cb92d..a7cc7584b 100644 --- a/src/apps/popup/pages/receive/content.tsx +++ b/src/apps/popup/pages/receive/content.tsx @@ -58,7 +58,7 @@ export const ReceivePageContent = () => { const tokens = useSelector(selectErc20Tokens, shallowEqual); useEffect(() => { - if (tokenData.symbol === 'CSPR') { + if (tokenData?.symbol === 'CSPR') { const balance = (csprBalance.amountMotes && motesToCSPR(csprBalance.amountMotes)) || '0'; @@ -66,10 +66,10 @@ export const ReceivePageContent = () => { } else { const erc20Tokens = formatErc20TokenBalance(tokens); const balance = - erc20Tokens?.find(t => t.symbol === tokenData.symbol)?.amount ?? '0'; + erc20Tokens?.find(t => t?.symbol === tokenData?.symbol)?.amount ?? '0'; setTokenData(prev => ({ ...prev, balance })); } - }, [csprBalance, tokenData.symbol, tokens]); + }, [csprBalance, tokenData?.symbol, tokens]); return ( @@ -80,7 +80,7 @@ export const ReceivePageContent = () => { diff --git a/src/apps/popup/pages/token-details/token.tsx b/src/apps/popup/pages/token-details/token.tsx index 84b751a2e..f8fc7cc3f 100644 --- a/src/apps/popup/pages/token-details/token.tsx +++ b/src/apps/popup/pages/token-details/token.tsx @@ -66,7 +66,7 @@ export const Token = ({ erc20Tokens }: TokenProps) => { if (casperToken && activeAccount) { setTokenData(casperToken); setTokenInfoList([ - { id: 1, name: 'Symbol', value: casperToken.symbol } + { id: 1, name: 'Symbol', value: casperToken?.symbol } ]); } } else { @@ -78,8 +78,8 @@ export const Token = ({ erc20Tokens }: TokenProps) => { if (token) { setTokenData(token); setTokenInfoList([ - { id: 1, name: 'Symbol', value: token.symbol }, - { id: 2, name: 'Decimals', value: (token.decimals || 0).toString() } + { id: 1, name: 'Symbol', value: token?.symbol }, + { id: 2, name: 'Decimals', value: (token?.decimals || 0).toString() } ]); } else { setTokenData(prev => (prev ? { ...prev, amount: '0' } : null)); diff --git a/src/apps/popup/pages/transfer/confirm-step.tsx b/src/apps/popup/pages/transfer/confirm-step.tsx index 0c71a3445..d7aed6b45 100644 --- a/src/apps/popup/pages/transfer/confirm-step.tsx +++ b/src/apps/popup/pages/transfer/confirm-step.tsx @@ -134,7 +134,7 @@ export const ConfirmStep = ({ {listItems.text} - {`${listItems.amount} ${listItems.symbol}`} + {`${listItems.amount} ${listItems?.symbol}`} {listItems.fiatPrice == null ? null diff --git a/src/apps/popup/pages/transfer/index.tsx b/src/apps/popup/pages/transfer/index.tsx index 3830daa79..4f4d7e6ef 100644 --- a/src/apps/popup/pages/transfer/index.tsx +++ b/src/apps/popup/pages/transfer/index.tsx @@ -88,7 +88,6 @@ export const TransferPage = () => { const { amountForm, recipientForm } = useTransferForm( erc20Balance, - erc20Decimals, isErc20Transfer, csprBalance.amountMotes, paymentAmount diff --git a/src/apps/popup/pages/wallet-qr-code/content.tsx b/src/apps/popup/pages/wallet-qr-code/content.tsx new file mode 100644 index 000000000..49f3febde --- /dev/null +++ b/src/apps/popup/pages/wallet-qr-code/content.tsx @@ -0,0 +1,73 @@ +import React, { useEffect, useState } from 'react'; +import { Trans, useTranslation } from 'react-i18next'; +import { QRCodeCanvas } from 'qrcode.react'; +import styled, { useTheme } from 'styled-components'; + +import { + CenteredFlexRow, + ContentContainer, + ParagraphContainer, + SpacingSize +} from '@libs/layout'; +import { Typography } from '@libs/ui'; + +const QRContainer = styled(CenteredFlexRow)` + padding: 20px 16px; + background-color: ${({ theme }) => theme.color.backgroundPrimary}; + border-radius: ${({ theme }) => theme.borderRadius.base}px; + margin-top: 20px; +`; + +interface WalletQrCodePageContentProps { + qrStrings: string[]; +} + +export const WalletQrCodePageContent = ({ + qrStrings +}: WalletQrCodePageContentProps) => { + const theme = useTheme(); + const [currentQrIndex, setCurrentQrIndex] = useState(0); + + useEffect(() => { + const int = setInterval(() => { + setCurrentQrIndex(prev => { + const next = prev + 1; + + if (next === qrStrings.length) { + return 0; + } + + return next; + }); + }, 500); + + return () => clearInterval(int); + }, [qrStrings.length]); + + const { t } = useTranslation(); + + return ( + + + + QR code is ready! + + + + + Scan this with your Casper Wallet app. + + + + + + + ); +}; diff --git a/src/apps/popup/pages/wallet-qr-code/index.tsx b/src/apps/popup/pages/wallet-qr-code/index.tsx new file mode 100644 index 000000000..4c3e4539f --- /dev/null +++ b/src/apps/popup/pages/wallet-qr-code/index.tsx @@ -0,0 +1,89 @@ +import React, { useCallback, useState } from 'react'; +import { Trans, useTranslation } from 'react-i18next'; +import { shallowEqual, useSelector } from 'react-redux'; + +import { + FooterButtonsContainer, + HeaderSubmenuBarNavLink, + PopupHeader, + PopupLayout +} from '@libs/layout'; +import { WalletQrCodePageContent } from '@popup/pages/wallet-qr-code/content'; +import { RouterPath, useTypedNavigate } from '@popup/router'; +import { Button } from '@libs/ui'; +import { + selectSecretPhrase, + selectVaultDerivedAccounts, + selectVaultImportedAccounts +} from '@background/redux/vault/selectors'; +import { generateSyncWalletQrData } from '@libs/crypto'; +import { BackupSecretPhrasePasswordPage } from '@popup/pages/backup-secret-phrase-password'; + +export const WalletQrCodePage = () => { + const [qrStrings, setQrStrings] = useState([]); + const [isPasswordConfirmed, setIsPasswordConfirmed] = + useState(false); + const [loading, setLoading] = useState(false); + + const secretPhrase = useSelector(selectSecretPhrase); + const derivedAccounts = useSelector(selectVaultDerivedAccounts, shallowEqual); + const importedAccounts = useSelector( + selectVaultImportedAccounts, + shallowEqual + ); + + const navigate = useTypedNavigate(); + const { t } = useTranslation(); + + const setPasswordConfirmed = useCallback(() => { + setIsPasswordConfirmed(true); + }, []); + + const generateQRCode = async (password: string) => { + if (secretPhrase) { + setLoading(true); + const data = await generateSyncWalletQrData( + password, + secretPhrase, + derivedAccounts, + importedAccounts + ); + + setLoading(false); + setQrStrings(data); + } + }; + + if (!isPasswordConfirmed) { + return ( + + ); + } + + return ( + ( + ( + + )} + /> + )} + renderContent={() => } + renderFooter={() => ( + + + + )} + /> + ); +}; diff --git a/src/apps/popup/router/paths.ts b/src/apps/popup/router/paths.ts index 178e4544f..cc2e6eba6 100644 --- a/src/apps/popup/router/paths.ts +++ b/src/apps/popup/router/paths.ts @@ -20,6 +20,7 @@ export enum RouterPath { Token = '/token/:tokenName', Receive = '/receive', NftDetails = '/nft-details/:contractPackageHash/nfts/:tokenId', + GenerateWalletQRCode = '/generate-wallet-qr-code', TransferNft = '/transfer-nft/:contractPackageHash/nfts/:tokenId', ChangePassword = '/change-password' } diff --git a/src/assets/icons/qr.svg b/src/assets/icons/qr.svg new file mode 100644 index 000000000..816d0fec3 --- /dev/null +++ b/src/assets/icons/qr.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/libs/crypto/hashing.ts b/src/libs/crypto/hashing.ts index 65b855fa0..625053790 100644 --- a/src/libs/crypto/hashing.ts +++ b/src/libs/crypto/hashing.ts @@ -11,7 +11,7 @@ export function generateRandomSaltHex() { return convertBytesToHex(generateRandomSaltBytes()); } -const createScryptOptions = () => { +export const createScryptOptions = () => { const options = { N: 2 ** 18, r: 8, p: 1, dkLen: 32 }; return options; }; diff --git a/src/libs/crypto/index.ts b/src/libs/crypto/index.ts index b7ec89731..95030aebf 100644 --- a/src/libs/crypto/index.ts +++ b/src/libs/crypto/index.ts @@ -4,3 +4,4 @@ export * from './bip39'; export * from './bip44'; export * from './parse-secret-key-string'; export * from './sign-deploy'; +export * from './sync-wallet-qr'; diff --git a/src/libs/crypto/sync-wallet-qr.ts b/src/libs/crypto/sync-wallet-qr.ts new file mode 100644 index 000000000..7a3e3c775 --- /dev/null +++ b/src/libs/crypto/sync-wallet-qr.ts @@ -0,0 +1,52 @@ +import { randomBytes } from '@noble/hashes/utils'; +import { aes_256_cbc } from '@noble/ciphers/webcrypto/aes'; +import { scryptAsync } from '@noble/hashes/scrypt'; +import { CLPublicKey } from 'casper-js-sdk'; + +import { Account } from '@background/redux/vault/types'; + +import { convertBytesToBase64 } from './utils'; +import { createScryptOptions } from './hashing'; + +export const generateSyncWalletQrData = async ( + password: string, + secretPhrase: string[], + derivedAccounts: Account[], + importedAccounts: Account[] +) => { + const salt = randomBytes(16); + const iv = randomBytes(16); + + const key = await scryptAsync(password, salt, createScryptOptions()); + + const qrDataString = JSON.stringify([ + secretPhrase.join(' '), + derivedAccounts.map(da => da.name), + [ + ...importedAccounts.map(acc => ({ + secretKey: acc.secretKey, + label: acc.name, + publicKeyTag: CLPublicKey.fromHex(acc.publicKey).getTag() + })) + ] + ]); + + const data = Uint8Array.from(Buffer.from(qrDataString)); + + const stream = aes_256_cbc(key, iv); + const cipher = await stream.encrypt(data); + + const qrString = JSON.stringify([ + convertBytesToBase64(cipher), + convertBytesToBase64(salt), + convertBytesToBase64(iv) + ]); + + const qrBytes = Uint8Array.from(Buffer.from(qrString)); + const qrData = convertBytesToBase64(qrBytes); + const qrDataArray = qrData.match(/.{1,200}/g); + + return (qrDataArray ?? [qrData]).map( + (qr, i, arr) => `${i + 1}$${arr.length}$${qr}` + ); +}; diff --git a/src/libs/ui/components/erc20-token-activity-list/erc20-token-activity-list.tsx b/src/libs/ui/components/erc20-token-activity-list/erc20-token-activity-list.tsx index 81df9fdc3..fe13e4c25 100644 --- a/src/libs/ui/components/erc20-token-activity-list/erc20-token-activity-list.tsx +++ b/src/libs/ui/components/erc20-token-activity-list/erc20-token-activity-list.tsx @@ -61,8 +61,8 @@ export const Erc20TokenActivityList = () => { args: transaction.deploy?.args || '-', status: transaction.deploy?.status || '-', errorMessage: transaction.deploy?.error_message || null, - decimals: transaction.contract_package?.metadata.decimals, - symbol: transaction.contract_package?.metadata.symbol, + decimals: transaction.contract_package?.metadata?.decimals, + symbol: transaction.contract_package?.metadata?.symbol, toPublicKey: transaction?.to_public_key, fromPublicKey: transaction?.from_public_key || null, contractPackage: transaction?.contract_package, diff --git a/src/libs/ui/forms/form-validation-rules.ts b/src/libs/ui/forms/form-validation-rules.ts index 504243a8b..e5ef55850 100644 --- a/src/libs/ui/forms/form-validation-rules.ts +++ b/src/libs/ui/forms/form-validation-rules.ts @@ -1,6 +1,7 @@ import * as Yup from 'yup'; import { useTranslation } from 'react-i18next'; import { useSelector } from 'react-redux'; +import Big from 'big.js'; import { verifyPasswordAgainstHash } from '@src/libs/crypto/hashing'; import { dispatchToMainStore } from '@src/background/redux/utils'; @@ -12,10 +13,10 @@ import { TRANSFER_COST_MOTES } from '@src/constants'; import { isValidPublicKey, isValidU64 } from '@src/utils'; -import Big from 'big.js'; import { CSPRtoMotes, motesToCSPR } from '@libs/ui/utils/formatters'; export const minPasswordLength = 16; +export const maxQrCodePasswordLength = 8; const ERROR_DISPLAYED_BEFORE_ATTEMPT_IS_DECREMENTED = 1; @@ -180,10 +181,7 @@ export const useCsprAmountRule = (amountMotes: string | null) => { }); }; -export const useErc20AmountRule = ( - amount: string | null, - decimals: number | null -) => { +export const useErc20AmountRule = (amount: string | null) => { const { t } = useTranslation(); const maxAmount: string = amount == null ? '0' : Big(amount).toString(); diff --git a/src/libs/ui/forms/transfer.ts b/src/libs/ui/forms/transfer.ts index 8536453e9..4adaf0d6d 100644 --- a/src/libs/ui/forms/transfer.ts +++ b/src/libs/ui/forms/transfer.ts @@ -25,7 +25,6 @@ export type TransferAmountFormValues = { export function useTransferForm( erc20Balance: string | null, - decimals: number | null, isErc20: boolean, amountMotes: string | null, paymentAmount: string @@ -41,7 +40,7 @@ export function useTransferForm( }; const erc20AmountFormSchema = Yup.object().shape({ - amount: useErc20AmountRule(erc20Balance, decimals), + amount: useErc20AmountRule(erc20Balance), paymentAmount: usePaymentAmountRule(amountMotes), transferIdMemo: useTransferIdMemoRule() }); diff --git a/xcode-project/Casper Wallet/Casper Wallet.xcodeproj/project.pbxproj b/xcode-project/Casper Wallet/Casper Wallet.xcodeproj/project.pbxproj index 30570fdf1..96a42e5d8 100644 --- a/xcode-project/Casper Wallet/Casper Wallet.xcodeproj/project.pbxproj +++ b/xcode-project/Casper Wallet/Casper Wallet.xcodeproj/project.pbxproj @@ -500,7 +500,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = "Casper Wallet Extension/Casper_Wallet_Extension.entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 22; + CURRENT_PROJECT_VERSION = 23; ENABLE_HARDENED_RUNTIME = YES; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "Casper Wallet Extension/Info.plist"; @@ -512,7 +512,7 @@ "@executable_path/../../../../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 10.14; - MARKETING_VERSION = 1.5.2; + MARKETING_VERSION = 1.6.0; OTHER_LDFLAGS = ( "-framework", SafariServices, @@ -530,7 +530,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = "Casper Wallet Extension/Casper_Wallet_Extension.entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 22; + CURRENT_PROJECT_VERSION = 23; ENABLE_HARDENED_RUNTIME = YES; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "Casper Wallet Extension/Info.plist"; @@ -542,7 +542,7 @@ "@executable_path/../../../../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 10.14; - MARKETING_VERSION = 1.5.2; + MARKETING_VERSION = 1.6.0; OTHER_LDFLAGS = ( "-framework", SafariServices, From 46e7d3e4147171d8ff0f7d13ae0db1944a1482e7 Mon Sep 17 00:00:00 2001 From: Vynnyk Dmytro Date: Fri, 10 Nov 2023 10:54:51 +0200 Subject: [PATCH 071/243] Release 1.6.3 version (#852) --- package-lock.json | 4 ++-- package.json | 2 +- .../Casper Wallet/Casper Wallet.xcodeproj/project.pbxproj | 8 ++++---- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index c370383c6..12719ed3f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "Casper Wallet", - "version": "1.6.0", + "version": "1.6.3", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "Casper Wallet", - "version": "1.6.0", + "version": "1.6.3", "dependencies": { "@formatjs/intl": "2.6.2", "@hookform/resolvers": "2.9.10", diff --git a/package.json b/package.json index 6c3097cc3..0e71df484 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "Casper Wallet", "description": "Securely manage your CSPR tokens and interact with dapps with the self-custody wallet for the Casper blockchain.", - "version": "1.6.2", + "version": "1.6.3", "author": "MAKE LLC", "scripts": { "devtools:redux": "redux-devtools --hostname=localhost", diff --git a/xcode-project/Casper Wallet/Casper Wallet.xcodeproj/project.pbxproj b/xcode-project/Casper Wallet/Casper Wallet.xcodeproj/project.pbxproj index 96a42e5d8..ba296e19e 100644 --- a/xcode-project/Casper Wallet/Casper Wallet.xcodeproj/project.pbxproj +++ b/xcode-project/Casper Wallet/Casper Wallet.xcodeproj/project.pbxproj @@ -564,7 +564,7 @@ CODE_SIGN_ENTITLEMENTS = "Casper Wallet/Casper Wallet.entitlements"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 32; + CURRENT_PROJECT_VERSION = 35; ENABLE_HARDENED_RUNTIME = YES; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "Casper Wallet/Info.plist"; @@ -578,7 +578,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 10.14; - MARKETING_VERSION = 1.6.2; + MARKETING_VERSION = 1.6.3; OTHER_LDFLAGS = ( "-framework", SafariServices, @@ -601,7 +601,7 @@ CODE_SIGN_ENTITLEMENTS = "Casper Wallet/Casper Wallet.entitlements"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 32; + CURRENT_PROJECT_VERSION = 35; ENABLE_HARDENED_RUNTIME = YES; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "Casper Wallet/Info.plist"; @@ -615,7 +615,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 10.14; - MARKETING_VERSION = 1.6.2; + MARKETING_VERSION = 1.6.3; OTHER_LDFLAGS = ( "-framework", SafariServices, From 0c0671192da1e0c2dc2fbd74bf8d505ad931a9bf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 16 Nov 2023 15:16:45 +0200 Subject: [PATCH 072/243] build(deps-dev): bump ts-jest from 29.0.3 to 29.1.1 (#831) Bumps [ts-jest](https://github.com/kulshekhar/ts-jest) from 29.0.3 to 29.1.1. - [Release notes](https://github.com/kulshekhar/ts-jest/releases) - [Changelog](https://github.com/kulshekhar/ts-jest/blob/main/CHANGELOG.md) - [Commits](https://github.com/kulshekhar/ts-jest/compare/v29.0.3...v29.1.1) --- updated-dependencies: - dependency-name: ts-jest dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 36 ++++++++++++++++++------------------ package.json | 2 +- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/package-lock.json b/package-lock.json index 12719ed3f..cd2a51f1f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -112,7 +112,7 @@ "source-map-loader": "4.0.1", "style-loader": "^3.3.1", "terser-webpack-plugin": "5.3.6", - "ts-jest": "29.0.3", + "ts-jest": "29.1.1", "ts-loader": "9.4.2", "ts-node": "10.9.1", "tsconfig-paths-webpack-plugin": "^4.1.0", @@ -26608,18 +26608,18 @@ } }, "node_modules/ts-jest": { - "version": "29.0.3", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.0.3.tgz", - "integrity": "sha512-Ibygvmuyq1qp/z3yTh9QTwVVAbFdDy/+4BtIQR2sp6baF2SJU/8CKK/hhnGIDY2L90Az2jIqTwZPnN2p+BweiQ==", + "version": "29.1.1", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz", + "integrity": "sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==", "dev": true, "dependencies": { "bs-logger": "0.x", "fast-json-stable-stringify": "2.x", "jest-util": "^29.0.0", - "json5": "^2.2.1", + "json5": "^2.2.3", "lodash.memoize": "4.x", "make-error": "1.x", - "semver": "7.x", + "semver": "^7.5.3", "yargs-parser": "^21.0.1" }, "bin": { @@ -26633,7 +26633,7 @@ "@jest/types": "^29.0.0", "babel-jest": "^29.0.0", "jest": "^29.0.0", - "typescript": ">=4.3" + "typescript": ">=4.3 <6" }, "peerDependenciesMeta": { "@babel/core": { @@ -26651,9 +26651,9 @@ } }, "node_modules/ts-jest/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -49226,25 +49226,25 @@ "dev": true }, "ts-jest": { - "version": "29.0.3", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.0.3.tgz", - "integrity": "sha512-Ibygvmuyq1qp/z3yTh9QTwVVAbFdDy/+4BtIQR2sp6baF2SJU/8CKK/hhnGIDY2L90Az2jIqTwZPnN2p+BweiQ==", + "version": "29.1.1", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz", + "integrity": "sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==", "dev": true, "requires": { "bs-logger": "0.x", "fast-json-stable-stringify": "2.x", "jest-util": "^29.0.0", - "json5": "^2.2.1", + "json5": "^2.2.3", "lodash.memoize": "4.x", "make-error": "1.x", - "semver": "7.x", + "semver": "^7.5.3", "yargs-parser": "^21.0.1" }, "dependencies": { "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "requires": { "lru-cache": "^6.0.0" diff --git a/package.json b/package.json index 0e71df484..64076046d 100644 --- a/package.json +++ b/package.json @@ -160,7 +160,7 @@ "source-map-loader": "4.0.1", "style-loader": "^3.3.1", "terser-webpack-plugin": "5.3.6", - "ts-jest": "29.0.3", + "ts-jest": "29.1.1", "ts-loader": "9.4.2", "ts-node": "10.9.1", "tsconfig-paths-webpack-plugin": "^4.1.0", From bef46b164845f58845538ab64ecaac11bf05bf8c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 16 Nov 2023 15:17:12 +0200 Subject: [PATCH 073/243] build(deps): bump redux-saga from 1.2.1 to 1.2.3 (#832) Bumps [redux-saga](https://github.com/redux-saga/redux-saga) from 1.2.1 to 1.2.3. - [Release notes](https://github.com/redux-saga/redux-saga/releases) - [Changelog](https://github.com/redux-saga/redux-saga/blob/main/CHANGELOG.md) - [Commits](https://github.com/redux-saga/redux-saga/compare/redux-saga@1.2.1...redux-saga@1.2.3) --- updated-dependencies: - dependency-name: redux-saga dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 30 +++++++++++++++--------------- package.json | 2 +- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/package-lock.json b/package-lock.json index cd2a51f1f..03705f676 100644 --- a/package-lock.json +++ b/package-lock.json @@ -47,7 +47,7 @@ "react-redux": "8.0.5", "react-router-dom": "6.16.0", "redux": "4.2.1", - "redux-saga": "1.2.1", + "redux-saga": "1.2.3", "reselect": "4.1.7", "styled-components": "5.3.6", "typesafe-actions": "5.1.0", @@ -5395,9 +5395,9 @@ } }, "node_modules/@redux-saga/core": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@redux-saga/core/-/core-1.2.1.tgz", - "integrity": "sha512-ABCxsZy9DwmNoYNo54ZlfuTvh77RXx8ODKpxOHeWam2dOaLGQ7vAktpfOtqSeTdYrKEORtTeWnxkGJMmPOoukg==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@redux-saga/core/-/core-1.2.3.tgz", + "integrity": "sha512-U1JO6ncFBAklFTwoQ3mjAeQZ6QGutsJzwNBjgVLSWDpZTRhobUzuVDS1qH3SKGJD8fvqoaYOjp6XJ3gCmeZWgA==", "dependencies": { "@babel/runtime": "^7.6.3", "@redux-saga/deferred": "^1.2.1", @@ -23904,11 +23904,11 @@ } }, "node_modules/redux-saga": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/redux-saga/-/redux-saga-1.2.1.tgz", - "integrity": "sha512-fVCicLlf4hLP+KB6H7RHfZlZ8LdYckhaemXBB3wh//a2ESyz/z/l8ygxlm0OqPjS/PARdsQ2hIdAltxEB+NgvA==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/redux-saga/-/redux-saga-1.2.3.tgz", + "integrity": "sha512-HDe0wTR5nhd8Xr5xjGzoyTbdAw6rjy1GDplFt3JKtKN8/MnkQSRqK/n6aQQhpw5NI4ekDVOaW+w4sdxPBaCoTQ==", "dependencies": { - "@redux-saga/core": "^1.2.1" + "@redux-saga/core": "^1.2.3" } }, "node_modules/redux-thunk": { @@ -32927,9 +32927,9 @@ } }, "@redux-saga/core": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@redux-saga/core/-/core-1.2.1.tgz", - "integrity": "sha512-ABCxsZy9DwmNoYNo54ZlfuTvh77RXx8ODKpxOHeWam2dOaLGQ7vAktpfOtqSeTdYrKEORtTeWnxkGJMmPOoukg==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@redux-saga/core/-/core-1.2.3.tgz", + "integrity": "sha512-U1JO6ncFBAklFTwoQ3mjAeQZ6QGutsJzwNBjgVLSWDpZTRhobUzuVDS1qH3SKGJD8fvqoaYOjp6XJ3gCmeZWgA==", "requires": { "@babel/runtime": "^7.6.3", "@redux-saga/deferred": "^1.2.1", @@ -47079,11 +47079,11 @@ "requires": {} }, "redux-saga": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/redux-saga/-/redux-saga-1.2.1.tgz", - "integrity": "sha512-fVCicLlf4hLP+KB6H7RHfZlZ8LdYckhaemXBB3wh//a2ESyz/z/l8ygxlm0OqPjS/PARdsQ2hIdAltxEB+NgvA==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/redux-saga/-/redux-saga-1.2.3.tgz", + "integrity": "sha512-HDe0wTR5nhd8Xr5xjGzoyTbdAw6rjy1GDplFt3JKtKN8/MnkQSRqK/n6aQQhpw5NI4ekDVOaW+w4sdxPBaCoTQ==", "requires": { - "@redux-saga/core": "^1.2.1" + "@redux-saga/core": "^1.2.3" } }, "redux-thunk": { diff --git a/package.json b/package.json index 64076046d..a709da3f3 100644 --- a/package.json +++ b/package.json @@ -95,7 +95,7 @@ "react-redux": "8.0.5", "react-router-dom": "6.16.0", "redux": "4.2.1", - "redux-saga": "1.2.1", + "redux-saga": "1.2.3", "reselect": "4.1.7", "styled-components": "5.3.6", "typesafe-actions": "5.1.0", From 096fc6323132404732f52c32770747b8e303bc81 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 16 Nov 2023 15:18:04 +0200 Subject: [PATCH 074/243] build(deps-dev): bump css-loader from 6.7.2 to 6.8.1 (#833) Bumps [css-loader](https://github.com/webpack-contrib/css-loader) from 6.7.2 to 6.8.1. - [Release notes](https://github.com/webpack-contrib/css-loader/releases) - [Changelog](https://github.com/webpack-contrib/css-loader/blob/master/CHANGELOG.md) - [Commits](https://github.com/webpack-contrib/css-loader/compare/v6.7.2...v6.8.1) --- updated-dependencies: - dependency-name: css-loader dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 34 +++++++++++++++++----------------- package.json | 2 +- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/package-lock.json b/package-lock.json index 03705f676..694e77fcc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -82,7 +82,7 @@ "chromedriver": "^107.0.3", "concurrently": "7.6.0", "copy-webpack-plugin": "^11.0.0", - "css-loader": "6.7.2", + "css-loader": "6.8.1", "css-to-xpath": "^0.1.0", "eslint": "8.49.0", "eslint-config-airbnb": "^19.0.4", @@ -11069,15 +11069,15 @@ } }, "node_modules/css-loader": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.2.tgz", - "integrity": "sha512-oqGbbVcBJkm8QwmnNzrFrWTnudnRZC+1eXikLJl0n4ljcfotgRifpg2a1lKy8jTrc4/d9A/ap1GFq1jDKG7J+Q==", + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.8.1.tgz", + "integrity": "sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==", "dev": true, "dependencies": { "icss-utils": "^5.1.0", - "postcss": "^8.4.18", + "postcss": "^8.4.21", "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-local-by-default": "^4.0.3", "postcss-modules-scope": "^3.0.0", "postcss-modules-values": "^4.0.0", "postcss-value-parser": "^4.2.0", @@ -22918,9 +22918,9 @@ } }, "node_modules/postcss-modules-local-by-default": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", - "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz", + "integrity": "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==", "dev": true, "dependencies": { "icss-utils": "^5.0.0", @@ -37438,15 +37438,15 @@ "integrity": "sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU=" }, "css-loader": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.2.tgz", - "integrity": "sha512-oqGbbVcBJkm8QwmnNzrFrWTnudnRZC+1eXikLJl0n4ljcfotgRifpg2a1lKy8jTrc4/d9A/ap1GFq1jDKG7J+Q==", + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.8.1.tgz", + "integrity": "sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==", "dev": true, "requires": { "icss-utils": "^5.1.0", - "postcss": "^8.4.18", + "postcss": "^8.4.21", "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-local-by-default": "^4.0.3", "postcss-modules-scope": "^3.0.0", "postcss-modules-values": "^4.0.0", "postcss-value-parser": "^4.2.0", @@ -46356,9 +46356,9 @@ "requires": {} }, "postcss-modules-local-by-default": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", - "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz", + "integrity": "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==", "dev": true, "requires": { "icss-utils": "^5.0.0", diff --git a/package.json b/package.json index a709da3f3..9f9b9f6f5 100644 --- a/package.json +++ b/package.json @@ -130,7 +130,7 @@ "chromedriver": "^107.0.3", "concurrently": "7.6.0", "copy-webpack-plugin": "^11.0.0", - "css-loader": "6.7.2", + "css-loader": "6.8.1", "css-to-xpath": "^0.1.0", "eslint": "8.49.0", "eslint-config-airbnb": "^19.0.4", From b1e268a3261df99fd6cd01c8778beeef2981a3a5 Mon Sep 17 00:00:00 2001 From: Ostap Piatkovskyi <44294945+ost-ptk@users.noreply.github.com> Date: Thu, 16 Nov 2023 15:27:35 +0200 Subject: [PATCH 075/243] feature: add delegation and undelegation flow (#846) * added delegation and undelegation flow * fixed issue with sticky header in tabs * added a new modal window with buttons on the home page * added empty state UI for undelegation * fixed deploys tab and deploys details page for staking --------- Co-authored-by: ost-ptk Co-authored-by: Vynnyk Dmytro --- src/apps/popup/app-router.tsx | 3 + .../popup/pages/activity-details/content.tsx | 29 +- .../components/more-buttons-modal/index.tsx | 49 ++ .../more-buttons-modal/modal-buttons.tsx | 119 +++ .../home/components/tokens-list/index.tsx | 6 +- src/apps/popup/pages/home/index.tsx | 56 +- src/apps/popup/pages/stakes/amount-step.tsx | 143 ++++ src/apps/popup/pages/stakes/confirm-step.tsx | 134 ++++ src/apps/popup/pages/stakes/content.tsx | 131 ++++ src/apps/popup/pages/stakes/index.tsx | 412 ++++++++++ .../popup/pages/stakes/no-delegations.tsx | 34 + .../popup/pages/stakes/validator-step.tsx | 29 + src/apps/popup/pages/transfer-nft/index.tsx | 2 +- src/apps/popup/pages/transfer/content.tsx | 2 +- src/apps/popup/pages/transfer/index.tsx | 4 +- src/apps/popup/router/paths.ts | 4 +- src/apps/popup/router/types.ts | 4 +- src/assets/icons/burn.svg | 3 + src/assets/icons/delegate.svg | 3 + src/assets/icons/empty-state.svg | 739 ++++++++++++++++++ src/assets/icons/undelegate.svg | 3 + src/background/index.ts | 43 + src/background/redux/settings/selectors.ts | 7 +- src/background/service-message.ts | 18 +- src/constants.ts | 88 ++- .../header/header-connection-status.tsx | 1 + .../layout/header/header-network-switcher.tsx | 1 + .../header/header-submenu-bar-nav-link.tsx | 42 +- .../account-activity-service/types.ts | 1 + src/libs/services/deployer-service/index.ts | 74 +- .../services/validators-service/constants.ts | 9 + src/libs/services/validators-service/index.ts | 3 + src/libs/services/validators-service/types.ts | 124 +++ .../validators-service/validators-service.ts | 75 ++ .../account-activity-plate.tsx | 86 +- .../account-casper-activity-plate.tsx | 28 +- src/libs/ui/components/button/button.tsx | 1 - src/libs/ui/components/error/error.tsx | 39 + src/libs/ui/components/hash/utils.ts | 4 +- src/libs/ui/components/input/input.tsx | 4 +- src/libs/ui/components/list/list.tsx | 18 +- src/libs/ui/components/modal/modal.tsx | 31 +- .../recipient-plate/recipient-plate.tsx | 2 +- src/libs/ui/components/tabs/tabs.tsx | 2 +- src/libs/ui/components/tile/tile.tsx | 5 +- .../transfer-succeess-screen.tsx | 10 +- .../validator-dropdown-input.tsx | 231 ++++++ .../validator-plate/validator-plate.tsx | 188 +++++ src/libs/ui/forms/form-validation-rules.ts | 122 ++- src/libs/ui/forms/stakes-form.ts | 50 ++ src/libs/ui/forms/transfer.ts | 4 +- src/libs/ui/index.ts | 3 + 52 files changed, 3066 insertions(+), 157 deletions(-) create mode 100644 src/apps/popup/pages/home/components/more-buttons-modal/index.tsx create mode 100644 src/apps/popup/pages/home/components/more-buttons-modal/modal-buttons.tsx create mode 100644 src/apps/popup/pages/stakes/amount-step.tsx create mode 100644 src/apps/popup/pages/stakes/confirm-step.tsx create mode 100644 src/apps/popup/pages/stakes/content.tsx create mode 100644 src/apps/popup/pages/stakes/index.tsx create mode 100644 src/apps/popup/pages/stakes/no-delegations.tsx create mode 100644 src/apps/popup/pages/stakes/validator-step.tsx create mode 100644 src/assets/icons/burn.svg create mode 100644 src/assets/icons/delegate.svg create mode 100644 src/assets/icons/empty-state.svg create mode 100644 src/assets/icons/undelegate.svg create mode 100644 src/libs/services/validators-service/constants.ts create mode 100644 src/libs/services/validators-service/index.ts create mode 100644 src/libs/services/validators-service/types.ts create mode 100644 src/libs/services/validators-service/validators-service.ts create mode 100644 src/libs/ui/components/error/error.tsx create mode 100644 src/libs/ui/components/validator-dropdown-input/validator-dropdown-input.tsx create mode 100644 src/libs/ui/components/validator-plate/validator-plate.tsx create mode 100644 src/libs/ui/forms/stakes-form.ts diff --git a/src/apps/popup/app-router.tsx b/src/apps/popup/app-router.tsx index 983098e99..10691c271 100644 --- a/src/apps/popup/app-router.tsx +++ b/src/apps/popup/app-router.tsx @@ -37,6 +37,7 @@ import { NftDetailsPage } from '@popup/pages/nft-details'; import { WalletQrCodePage } from '@popup/pages/wallet-qr-code'; import { TransferNftPage } from '@popup/pages/transfer-nft'; import { ChangePasswordPage } from '@popup/pages/change-password'; +import { StakesPage } from '@popup/pages/stakes'; export function AppRouter() { const isLocked = useSelector(selectVaultIsLocked); @@ -252,6 +253,8 @@ function AppRoutes() { path={RouterPath.ChangePassword} element={} /> + } /> + } /> ); } diff --git a/src/apps/popup/pages/activity-details/content.tsx b/src/apps/popup/pages/activity-details/content.tsx index 838fa18d5..619a69303 100644 --- a/src/apps/popup/pages/activity-details/content.tsx +++ b/src/apps/popup/pages/activity-details/content.tsx @@ -41,8 +41,9 @@ import { } from '@libs/ui/utils/formatters'; import { getBlockExplorerContractUrl, - TransferType, - TypeName + ActivityType, + ActivityTypeName, + AuctionManagerEntryPoint } from '@src/constants'; import { selectApiConfigBasedOnActiveNetwork } from '@background/redux/settings/selectors'; @@ -50,7 +51,7 @@ interface ActivityDetailsPageContentProps { fromAccount?: string; toAccount?: string; deployInfo?: ExtendedDeploy | null; - type?: TransferType | null; + type?: ActivityType | null; amount?: string | null; symbol?: string | null; } @@ -80,8 +81,11 @@ const AddressContainer = styled(FlexColumn)` padding: 16px 12px 16px 0; `; -const AmountContainer = styled(AlignedSpaceBetweenFlexRow)` - padding: 8px 16px 8px 0; +const AmountContainer = styled(AlignedSpaceBetweenFlexRow)<{ + emptyAmount?: boolean; +}>` + padding: ${({ emptyAmount }) => + emptyAmount ? '16px 16px 16px 0' : '8px 16px 8px 0'}; `; const RowsContainer = styled(FlexColumn)` @@ -117,7 +121,10 @@ export const ActivityDetailsPageContent = ({ [Erc20EventType.erc20_transfer_from]: t('Transfer from'), [Erc20EventType.erc20_approve]: t('Approve of'), [Erc20EventType.erc20_burn]: t('Burn of'), - [Erc20EventType.erc20_mint]: t('Mint of') + [Erc20EventType.erc20_mint]: t('Mint of'), + [AuctionManagerEntryPoint.delegate]: t('Delegate with'), + [AuctionManagerEntryPoint.undelegate]: t('Undelegate with'), + [AuctionManagerEntryPoint.redelegate]: t('Redelegate with') }; const decimals = deployInfo.contractPackage?.metadata?.decimals; @@ -173,7 +180,7 @@ export const ActivityDetailsPageContent = ({ - {type && {TypeName[type]}} + {type && {ActivityTypeName[type]}} @@ -285,7 +292,11 @@ export const ActivityDetailsPageContent = ({ } /> - contract + + {deployInfo.contractPackage.contract_name === 'Auction' + ? 'System Contract' + : 'contract'} + @@ -295,7 +306,7 @@ export const ActivityDetailsPageContent = ({ )} - + Amount diff --git a/src/apps/popup/pages/home/components/more-buttons-modal/index.tsx b/src/apps/popup/pages/home/components/more-buttons-modal/index.tsx new file mode 100644 index 000000000..5d834395e --- /dev/null +++ b/src/apps/popup/pages/home/components/more-buttons-modal/index.tsx @@ -0,0 +1,49 @@ +import React from 'react'; +import { Trans, useTranslation } from 'react-i18next'; +import styled from 'styled-components'; + +import { Button, Modal, SvgIcon, Typography } from '@libs/ui'; +import { CenteredFlexColumn, SpacingSize } from '@libs/layout'; + +import { ModalButtons } from './modal-buttons'; + +const MoreButton = styled(CenteredFlexColumn)` + cursor: pointer; + + padding: 0 16px; +`; + +interface MoreButtonsModalProps { + handleBuyWithCSPR: () => void; +} + +export const MoreButtonsModal = ({ + handleBuyWithCSPR +}: MoreButtonsModalProps) => { + const { t } = useTranslation(); + + return ( + ( + + )} + children={() => ( + + + + More + + + )} + /> + ); +}; diff --git a/src/apps/popup/pages/home/components/more-buttons-modal/modal-buttons.tsx b/src/apps/popup/pages/home/components/more-buttons-modal/modal-buttons.tsx new file mode 100644 index 000000000..4625ca82b --- /dev/null +++ b/src/apps/popup/pages/home/components/more-buttons-modal/modal-buttons.tsx @@ -0,0 +1,119 @@ +import React from 'react'; +import { useSelector } from 'react-redux'; +import { Trans, useTranslation } from 'react-i18next'; +import styled from 'styled-components'; + +import { NetworkSetting } from '@src/constants'; +import { AlignedFlexRow, FlexColumn, SpacingSize } from '@libs/layout'; +import { Button, SvgIcon, Typography } from '@libs/ui'; +import { RouterPath, useTypedNavigate } from '@popup/router'; +import { useCasperToken } from '@src/hooks'; +import { selectActiveNetworkSetting } from '@background/redux/settings/selectors'; + +const ButtonContainer = styled(AlignedFlexRow)` + cursor: pointer; + + padding: 14px 16px; +`; + +interface ButtonsProps { + handleBuyWithCSPR: () => void; +} + +export const ModalButtons = ({ handleBuyWithCSPR }: ButtonsProps) => { + const { t } = useTranslation(); + const navigate = useTypedNavigate(); + const casperToken = useCasperToken(); + + const network = useSelector(selectActiveNetworkSetting); + + return ( + + {network === NetworkSetting.Mainnet && ( + + + + + Buy + + + Buy CSPR with cash + + + + )} + + navigate( + casperToken?.id + ? RouterPath.Transfer.replace( + ':tokenContractPackageHash', + casperToken.id + ).replace( + ':tokenContractHash', + casperToken.contractHash || 'null' + ) + : RouterPath.TransferNoParams + ) + } + > + + + + Send + + + Send CSPR to any account + + + + + navigate(RouterPath.Receive, { + state: { tokenData: casperToken } + }) + } + > + + + + Receive + + + Receive CSPR + + + + navigate(RouterPath.Delegate)} + > + + + Delegate + + + navigate(RouterPath.Undelegate)} + > + + + Undelegate + + + + ); +}; diff --git a/src/apps/popup/pages/home/components/tokens-list/index.tsx b/src/apps/popup/pages/home/components/tokens-list/index.tsx index 6e63d6b93..812cd91f1 100644 --- a/src/apps/popup/pages/home/components/tokens-list/index.tsx +++ b/src/apps/popup/pages/home/components/tokens-list/index.tsx @@ -12,8 +12,8 @@ import { formatErc20TokenBalance } from './utils'; const TotalValueContainer = styled(SpaceBetweenFlexRow)` padding: 12px 16px; - border-top-left-radius: 12px; - border-top-right-radius: 12px; + border-top-left-radius: ${({ theme }) => theme.borderRadius.twelve}px; + border-top-right-radius: ${({ theme }) => theme.borderRadius.twelve}px; background-color: ${({ theme }) => theme.color.backgroundPrimary}; `; @@ -77,7 +77,7 @@ export const TokensList = () => { /> )} marginLeftForItemSeparatorLine={56} - marginLeftForHeaderSeparatorLine={16} + marginLeftForHeaderSeparatorLine={0} /> ); }; diff --git a/src/apps/popup/pages/home/index.tsx b/src/apps/popup/pages/home/index.tsx index 326ae24f7..a8a36f677 100644 --- a/src/apps/popup/pages/home/index.tsx +++ b/src/apps/popup/pages/home/index.tsx @@ -55,6 +55,7 @@ import { import { TokensList } from './components/tokens-list'; import { NftList } from './components/nft-list'; import { DeploysList } from './components/deploys-list'; +import { MoreButtonsModal } from './components/more-buttons-modal'; const DividerLine = styled.hr` margin: 16px 0; @@ -65,11 +66,13 @@ const DividerLine = styled.hr` `; const ButtonsContainer = styled(CenteredFlexRow)` - margin-top: 28px; + margin-top: 16px; `; const ButtonContainer = styled(CenteredFlexColumn)` cursor: pointer; + + padding: 0 16px; `; export function HomePageContent() { @@ -166,6 +169,22 @@ export function HomePageContent() { + {network === NetworkSetting.Mainnet && ( + + + + Buy + + + )} @@ -192,40 +211,7 @@ export function HomePageContent() { Send - - navigate(RouterPath.Receive, { - state: { tokenData: casperToken } - }) - } - > - - - Receive - - - {network === NetworkSetting.Mainnet && ( - - - - Buy - - - )} + diff --git a/src/apps/popup/pages/stakes/amount-step.tsx b/src/apps/popup/pages/stakes/amount-step.tsx new file mode 100644 index 000000000..3b13f19dc --- /dev/null +++ b/src/apps/popup/pages/stakes/amount-step.tsx @@ -0,0 +1,143 @@ +import React, { useEffect, useState } from 'react'; +import { Trans, useTranslation } from 'react-i18next'; +import { UseFormReturn, useWatch } from 'react-hook-form'; +import { useSelector } from 'react-redux'; +import Big from 'big.js'; +import styled from 'styled-components'; + +import { + AlignedFlexRow, + ContentContainer, + ParagraphContainer, + SpacingSize, + VerticalSpaceContainer +} from '@libs/layout'; +import { Error, Input, Typography } from '@libs/ui'; +import { StakeAmountFormValues } from '@libs/ui/forms/stakes-form'; +import { formatFiatAmount, motesToCSPR } from '@libs/ui/utils/formatters'; +import { + selectAccountBalance, + selectAccountCurrencyRate +} from '@background/redux/account-info/selectors'; +import { AuctionManagerEntryPoint, STAKE_COST_MOTES } from '@src/constants'; + +const StakeMaxButton = styled(AlignedFlexRow)` + cursor: pointer; +`; + +interface AmountStepProps { + amountForm: UseFormReturn; + stakesType: AuctionManagerEntryPoint; + stakeAmountMotes: string; + headerText: string; + amountStepText: string; + amountStepMaxAmountValue: string | null; +} + +export const AmountStep = ({ + amountForm, + stakesType, + stakeAmountMotes, + headerText, + amountStepText, + amountStepMaxAmountValue +}: AmountStepProps) => { + const [maxAmountMotes, setMaxAmountMotes] = useState('0'); + + const { t } = useTranslation(); + + const currencyRate = useSelector(selectAccountCurrencyRate); + const csprBalance = useSelector(selectAccountBalance); + + useEffect(() => { + switch (stakesType) { + case AuctionManagerEntryPoint.delegate: { + const maxAmountMotes: string = + csprBalance.amountMotes == null + ? '0' + : Big(csprBalance.amountMotes).sub(STAKE_COST_MOTES).toString(); + + setMaxAmountMotes(maxAmountMotes); + break; + } + case AuctionManagerEntryPoint.undelegate: { + setMaxAmountMotes(stakeAmountMotes); + } + } + }, [csprBalance.amountMotes, stakeAmountMotes, stakesType]); + + const { + register, + formState: { errors }, + control, + setValue, + trigger + } = amountForm; + + const { onChange: onChangeCSPRAmount } = register('amount'); + + const amount = useWatch({ + control, + name: 'amount' + }); + + const amountLabel = t('Amount'); + + const fiatAmount = formatFiatAmount(amount || '0', currencyRate); + + return ( + + + + {headerText} + + + + + { + // replace all non-numeric characters except decimal point + e.target.value = e.target.value.replace(/[^0-9.]/g, ''); + // regex replace decimal point from beginning of string + e.target.value = e.target.value.replace(/^\./, ''); + onChangeCSPRAmount(e); + }} + /> + + + { + setValue('amount', motesToCSPR(maxAmountMotes)); + trigger('amount'); + }} + > + + {amountStepText} + + {amountStepMaxAmountValue && ( + + {amountStepMaxAmountValue} + + )} + + + {errors.amount && ( + + + + )} + + ); +}; diff --git a/src/apps/popup/pages/stakes/confirm-step.tsx b/src/apps/popup/pages/stakes/confirm-step.tsx new file mode 100644 index 000000000..0d2f2afd5 --- /dev/null +++ b/src/apps/popup/pages/stakes/confirm-step.tsx @@ -0,0 +1,134 @@ +import React from 'react'; +import { Trans, useTranslation } from 'react-i18next'; +import styled from 'styled-components'; +import Big from 'big.js'; +import { useSelector } from 'react-redux'; + +import { + ContentContainer, + ParagraphContainer, + SpaceBetweenFlexRow, + SpacingSize, + VerticalSpaceContainer +} from '@libs/layout'; +import { AmountContainer, List, Typography, ValidatorPlate } from '@libs/ui'; +import { + formatFiatAmount, + formatNumber, + motesToCSPR +} from '@libs/ui/utils/formatters'; +import { selectAccountCurrencyRate } from '@background/redux/account-info/selectors'; +import { ValidatorResult } from '@libs/services/validators-service/types'; +import { getAuctionManagerDeployCost } from '@libs/services/deployer-service'; +import { AuctionManagerEntryPoint } from '@src/constants'; + +export const ListItemContainer = styled(SpaceBetweenFlexRow)` + padding: 12px 16px; +`; + +interface ConfirmStepProps { + inputAmountCSPR: string; + validator: ValidatorResult | null; + stakesType: AuctionManagerEntryPoint; + headerText: string; + confirmStepText: string; +} +export const ConfirmStep = ({ + inputAmountCSPR, + validator, + stakesType, + headerText, + confirmStepText +}: ConfirmStepProps) => { + const { t } = useTranslation(); + + const currencyRate = useSelector(selectAccountCurrencyRate); + + const transferFeeMotes = getAuctionManagerDeployCost(stakesType); + + const transferCostInCSPR = formatNumber(motesToCSPR(transferFeeMotes), { + precision: { max: 5 } + }); + const totalCSPR: string = Big(inputAmountCSPR) + .add(transferCostInCSPR) + .toString(); + + const transactionDataRows = [ + { + id: 1, + text: confirmStepText, + amount: formatNumber(inputAmountCSPR, { + precision: { max: 5 } + }), + fiatPrice: formatFiatAmount(inputAmountCSPR, currencyRate), + symbol: 'CSPR' + }, + { + id: 2, + text: t('Transaction fee'), + amount: transferCostInCSPR, + fiatPrice: formatFiatAmount(transferCostInCSPR, currencyRate, 3), + symbol: 'CSPR' + }, + { + id: 3, + text: t('Total'), + amount: formatNumber(totalCSPR, { + precision: { max: 5 } + }), + fiatPrice: formatFiatAmount(totalCSPR, currencyRate), + symbol: 'CSPR', + bold: true + } + ]; + + const validatorLabel = t('To validator'); + + if (!validator) { + return null; + } + + return ( + + + + {headerText} + + + + + + + {t('Amount and fee')} + + ( + + + {listItems.text} + + + {`${listItems.amount} ${listItems.symbol}`} + + {listItems.fiatPrice == null + ? null + : listItems.fiatPrice || 'Not available'} + + + + )} + marginLeftForItemSeparatorLine={8} + /> + + ); +}; diff --git a/src/apps/popup/pages/stakes/content.tsx b/src/apps/popup/pages/stakes/content.tsx new file mode 100644 index 000000000..0d9b0a57b --- /dev/null +++ b/src/apps/popup/pages/stakes/content.tsx @@ -0,0 +1,131 @@ +import React, { useEffect, useState } from 'react'; +import { UseFormReturn } from 'react-hook-form'; + +import { ValidatorStep } from '@popup/pages/stakes/validator-step'; +import { AmountStep } from '@popup/pages/stakes/amount-step'; +import { + StakeAmountFormValues, + StakeValidatorFormValues +} from '@libs/ui/forms/stakes-form'; +import { ConfirmStep } from '@popup/pages/stakes/confirm-step'; +import { TransferSuccessScreen, ValidatorDropdownInput } from '@libs/ui'; +import { AuctionManagerEntryPoint, StakeSteps } from '@src/constants'; +import { ValidatorResultWithId } from '@libs/services/validators-service/types'; +import { formatNumber, motesToCSPR } from '@libs/ui/utils/formatters'; + +interface DelegateStakePageContentProps { + stakeStep: StakeSteps; + validatorForm: UseFormReturn; + amountForm: UseFormReturn; + inputAmountCSPR: string; + validator: ValidatorResultWithId | null; + setValidator: React.Dispatch< + React.SetStateAction + >; + stakesType: AuctionManagerEntryPoint; + stakeAmountMotes: string; + setStakeAmount: React.Dispatch>; + validatorList: ValidatorResultWithId[] | null; +} + +export const StakesPageContent = ({ + stakeStep, + validatorForm, + amountForm, + inputAmountCSPR, + validator, + setValidator, + stakesType, + stakeAmountMotes, + setStakeAmount, + validatorList +}: DelegateStakePageContentProps) => { + const [validateStepHeaderText, setValidateStepHeaderText] = useState(''); + const [amountStepHeaderText, setAmountStepHeaderText] = useState(''); + const [confirmStepHeaderText, setConfirmStepHeaderText] = useState(''); + const [successStepHeaderText, setSuccessStepHeaderText] = useState(''); + const [confirmStepText, setConfirmStepText] = useState(''); + const [amountStepText, setAmountStepText] = useState(''); + const [amountStepMaxAmountValue, setAmountStepMaxAmountValue] = useState< + string | null + >(null); + + useEffect(() => { + const formattedAmountCSPR = + stakeAmountMotes && + formatNumber(motesToCSPR(stakeAmountMotes), { precision: { max: 4 } }); + + switch (stakesType) { + case AuctionManagerEntryPoint.delegate: { + setValidateStepHeaderText('Delegate'); + setAmountStepHeaderText('Delegate amount'); + setConfirmStepHeaderText('Confirm delegation'); + setSuccessStepHeaderText('You’ve submitted a delegation'); + + setAmountStepText('Delegate max'); + setConfirmStepText('You’ll delegate'); + break; + } + case AuctionManagerEntryPoint.undelegate: { + setValidateStepHeaderText('Undelegate'); + setAmountStepHeaderText('Undelegate amount'); + setConfirmStepHeaderText('Confirm undelegation'); + setSuccessStepHeaderText('You’ve submitted an undelegation'); + + setAmountStepText('Undelegate max:'); + setAmountStepMaxAmountValue(`${formattedAmountCSPR} CSPR`); + setConfirmStepText('You’ll undelegate'); + break; + } + + default: + throw Error('fetch validator: unknown stakes type'); + } + }, [stakeAmountMotes, stakesType]); + + switch (stakeStep) { + case StakeSteps.Validator: { + return ( + + + + ); + } + case StakeSteps.Amount: { + return ( + + ); + } + case StakeSteps.Confirm: { + return ( + + ); + } + case StakeSteps.Success: { + return ; + } + default: { + throw Error('Out of bound: StakeSteps'); + } + } +}; diff --git a/src/apps/popup/pages/stakes/index.tsx b/src/apps/popup/pages/stakes/index.tsx new file mode 100644 index 000000000..0eaae0a29 --- /dev/null +++ b/src/apps/popup/pages/stakes/index.tsx @@ -0,0 +1,412 @@ +import React, { useEffect, useState } from 'react'; +import { Trans, useTranslation } from 'react-i18next'; +import { useSelector } from 'react-redux'; + +import { + CenteredFlexRow, + ContentContainer, + FooterButtonsContainer, + HeaderSubmenuBarNavLink, + ParagraphContainer, + PopupHeader, + PopupLayout, + SpaceBetweenFlexRow, + SpacingSize +} from '@libs/layout'; +import { StakesPageContent } from '@popup/pages/stakes/content'; +import { Button, HomePageTabsId, Typography } from '@libs/ui'; +import { selectVaultActiveAccount } from '@background/redux/vault/selectors'; +import { createAsymmetricKey } from '@libs/crypto/create-asymmetric-key'; +import { selectApiConfigBasedOnActiveNetwork } from '@background/redux/settings/selectors'; +import { + AuctionManagerEntryPoint, + STAKE_COST_MOTES, + StakeSteps +} from '@src/constants'; +import { dispatchToMainStore } from '@background/redux/utils'; +import { accountPendingTransactionsChanged } from '@background/redux/account-info/actions'; +import { dispatchFetchExtendedDeploysInfo } from '@libs/services/account-activity-service'; +import { makeAuctionManagerDeploy } from '@libs/services/deployer-service'; +import { RouterPath, useTypedLocation, useTypedNavigate } from '@popup/router'; +import { useStakesForm } from '@libs/ui/forms/stakes-form'; +import { selectAccountBalance } from '@background/redux/account-info/selectors'; +import { calculateSubmitButtonDisabled } from '@libs/ui/forms/get-submit-button-state-from-validation'; +import { + CSPRtoMotes, + formatNumber, + motesToCSPR +} from '@libs/ui/utils/formatters'; +import { ValidatorResultWithId } from '@libs/services/validators-service/types'; +import { + dispatchFetchAuctionValidatorsRequest, + dispatchFetchValidatorsDetailsDataRequest +} from '@libs/services/validators-service'; +import { NoDelegations } from '@popup/pages/stakes/no-delegations'; + +export const StakesPage = () => { + const [stakeStep, setStakeStep] = useState(StakeSteps.Validator); + const [validatorPublicKey, setValidatorPublicKey] = useState(''); + const [inputAmountCSPR, setInputAmountCSPR] = useState(''); + const [isSubmitButtonDisable, setIsSubmitButtonDisable] = useState(true); + const [validator, setValidator] = useState( + null + ); + const [stakesType, setStakesType] = useState( + AuctionManagerEntryPoint.delegate + ); + const [stakeAmountMotes, setStakeAmountMotes] = useState(''); + const [validatorList, setValidatorList] = useState< + ValidatorResultWithId[] | null + >(null); + const [loading, setLoading] = useState(true); + + const activeAccount = useSelector(selectVaultActiveAccount); + const { networkName, nodeUrl, auctionManagerContractHash, casperApiUrl } = + useSelector(selectApiConfigBasedOnActiveNetwork); + const csprBalance = useSelector(selectAccountBalance); + + const { t } = useTranslation(); + const navigate = useTypedNavigate(); + const { pathname } = useTypedLocation(); + + useEffect(() => { + // checking pathname to know what type of stake it is + if (pathname.split('/')[1] === AuctionManagerEntryPoint.delegate) { + setStakesType(AuctionManagerEntryPoint.delegate); + + dispatchFetchAuctionValidatorsRequest() + .then(({ payload }) => { + if ('data' in payload) { + const { data } = payload; + + const validatorListWithId = data.map(validator => ({ + ...validator, + id: validator.public_key + })); + + setValidatorList(validatorListWithId); + } + }) + .finally(() => { + setLoading(false); + }); + } else if (pathname.split('/')[1] === AuctionManagerEntryPoint.undelegate) { + setStakesType(AuctionManagerEntryPoint.undelegate); + + if (activeAccount) { + dispatchFetchValidatorsDetailsDataRequest(activeAccount.publicKey) + .then(({ payload }) => { + if ('data' in payload) { + const { data } = payload; + + const validatorListWithId = data.map(delegator => ({ + ...delegator.validator, + id: delegator.validator_public_key, + user_stake: delegator.stake + })); + + setValidatorList(validatorListWithId); + } + }) + .finally(() => { + setLoading(false); + }); + } + } + }, [activeAccount, pathname, casperApiUrl]); + + const { amountForm, validatorForm } = useStakesForm( + csprBalance.amountMotes, + stakesType, + stakeAmountMotes, + validator?.delegators_number + ); + const { formState: amountFormState, getValues: getValuesAmountForm } = + amountForm; + const { formState: validatorFormState, getValues: getValuesValidatorForm } = + validatorForm; + + // event listener for enable/disable submit button + useEffect(() => { + if (stakeStep !== StakeSteps.Confirm) return; + + const layoutContentContainer = document.querySelector('#ms-container'); + + // if the content is not scrollable, we can enable the submit button + if ( + layoutContentContainer && + layoutContentContainer.clientHeight === + layoutContentContainer.scrollHeight && + isSubmitButtonDisable + ) { + setIsSubmitButtonDisable(false); + } + + const handleScroll = () => { + if (layoutContentContainer && isSubmitButtonDisable) { + const bottom = + Math.ceil( + layoutContentContainer.clientHeight + + layoutContentContainer.scrollTop + ) >= layoutContentContainer.scrollHeight; + + if (bottom) { + setIsSubmitButtonDisable(false); + } + } + }; + + // add event listener to the scrollable container + layoutContentContainer?.addEventListener('scroll', handleScroll); + + // remove event listener on cleanup + return () => { + layoutContentContainer?.removeEventListener('scroll', handleScroll); + }; + }, [isSubmitButtonDisable, stakeStep]); + + const submitStake = () => { + if (activeAccount) { + const motesAmount = CSPRtoMotes(inputAmountCSPR); + + const KEYS = createAsymmetricKey( + activeAccount.publicKey, + activeAccount.secretKey + ); + + const deploy = makeAuctionManagerDeploy( + stakesType, + activeAccount.publicKey, + validatorPublicKey, + null, + motesAmount, + networkName, + auctionManagerContractHash + ); + + const signDeploy = deploy.sign([KEYS]); + + signDeploy.send(nodeUrl).then((deployHash: string) => { + if (deployHash) { + let triesLeft = 10; + const interval = setInterval(async () => { + const { payload: extendedDeployInfo } = + await dispatchFetchExtendedDeploysInfo(deployHash); + if (extendedDeployInfo) { + dispatchToMainStore( + accountPendingTransactionsChanged(extendedDeployInfo) + ); + clearInterval(interval); + } else if (triesLeft === 0) { + clearInterval(interval); + } + + triesLeft--; + // Note: this timeout is needed because the deploy is not immediately visible in the explorer + }, 2000); + } + }); + // TODO: need UI in case when the delegation request is failed + setStakeStep(StakeSteps.Success); + } + }; + + const getButtonProps = () => { + const isValidatorFormButtonDisabled = calculateSubmitButtonDisabled({ + isValid: validatorFormState.isValid + }); + const isAmountFormButtonDisabled = calculateSubmitButtonDisabled({ + isValid: amountFormState.isValid + }); + + switch (stakeStep) { + case StakeSteps.Validator: { + return { + disabled: isValidatorFormButtonDisabled, + onClick: () => { + const { validatorPublicKey } = getValuesValidatorForm(); + + setStakeStep(StakeSteps.Amount); + setValidatorPublicKey(validatorPublicKey); + } + }; + } + case StakeSteps.Amount: { + return { + disabled: isAmountFormButtonDisabled, + onClick: () => { + const { amount: _amount } = getValuesAmountForm(); + + setInputAmountCSPR(_amount); + setStakeStep(StakeSteps.Confirm); + } + }; + } + case StakeSteps.Confirm: { + return { + disabled: + isSubmitButtonDisable || + isValidatorFormButtonDisabled || + isAmountFormButtonDisabled, + onClick: submitStake + }; + } + case StakeSteps.Success: { + return { + onClick: () => { + navigate(RouterPath.Home, { + state: { + // set the active tab to deploys + activeTabId: HomePageTabsId.Deploys + } + }); + } + }; + } + } + }; + + const handleBackButton = () => { + switch (stakeStep) { + case StakeSteps.Validator: { + navigate(-1); + break; + } + case StakeSteps.Amount: { + setStakeStep(StakeSteps.Validator); + break; + } + case StakeSteps.Confirm: { + setStakeStep(StakeSteps.Amount); + break; + } + + default: { + navigate(-1); + break; + } + } + }; + + const getConfirmButtonText = () => { + switch (stakesType) { + case AuctionManagerEntryPoint.delegate: { + return t('Confirm delegation'); + } + case AuctionManagerEntryPoint.undelegate: { + return t('Confirm undelegation'); + } + default: { + return t('Confirm'); + } + } + }; + + if (loading) { + return ( + ( + + )} + renderContent={() => ( + + + + Loading... + + + + )} + /> + ); + } + + if ( + stakesType === AuctionManagerEntryPoint.undelegate && + validatorList !== null && + validatorList.length === 0 + ) { + return ( + ( + + )} + renderContent={() => } + renderFooter={() => ( + + + + )} + /> + ); + } + + return ( + ( + ( + + ) + } + /> + )} + renderContent={() => ( + + )} + renderFooter={() => ( + + {stakeStep === StakeSteps.Amount ? ( + + + Transaction fee + + + {formatNumber(motesToCSPR(STAKE_COST_MOTES), { + precision: { max: 5 } + })}{' '} + CSPR + + + ) : null} + + + )} + /> + ); +}; diff --git a/src/apps/popup/pages/stakes/no-delegations.tsx b/src/apps/popup/pages/stakes/no-delegations.tsx new file mode 100644 index 000000000..1d74464e3 --- /dev/null +++ b/src/apps/popup/pages/stakes/no-delegations.tsx @@ -0,0 +1,34 @@ +import React from 'react'; +import { Trans, useTranslation } from 'react-i18next'; + +import { + ContentContainer, + ParagraphContainer, + SpacingSize +} from '@libs/layout'; +import { SvgIcon, Typography } from '@libs/ui'; + +export const NoDelegations = () => { + const { t } = useTranslation(); + + return ( + + + + + + + You haven’t delegated with this account yet + + + + + + You can only undelegate if you’ve delegated from this account + before. + + + + + ); +}; diff --git a/src/apps/popup/pages/stakes/validator-step.tsx b/src/apps/popup/pages/stakes/validator-step.tsx new file mode 100644 index 000000000..c6cae9dc9 --- /dev/null +++ b/src/apps/popup/pages/stakes/validator-step.tsx @@ -0,0 +1,29 @@ +import React from 'react'; +import { Trans, useTranslation } from 'react-i18next'; + +import { + ContentContainer, + ParagraphContainer, + SpacingSize +} from '@libs/layout'; +import { Typography } from '@libs/ui'; + +interface ValidatorStepProps { + children?: React.ReactNode; + headerText: string; +} +export const ValidatorStep = ({ headerText, children }: ValidatorStepProps) => { + const { t } = useTranslation(); + + return ( + + + + {headerText} + + + + {children} + + ); +}; diff --git a/src/apps/popup/pages/transfer-nft/index.tsx b/src/apps/popup/pages/transfer-nft/index.tsx index 75b55e3bc..4304bef96 100644 --- a/src/apps/popup/pages/transfer-nft/index.tsx +++ b/src/apps/popup/pages/transfer-nft/index.tsx @@ -176,7 +176,7 @@ export const TransferNftPage = () => { )} renderContent={() => showSuccessScreen ? ( - + ) : ( ; + return ; } default: { diff --git a/src/apps/popup/pages/transfer/index.tsx b/src/apps/popup/pages/transfer/index.tsx index 4f4d7e6ef..306ff1a3d 100644 --- a/src/apps/popup/pages/transfer/index.tsx +++ b/src/apps/popup/pages/transfer/index.tsx @@ -117,9 +117,7 @@ export const TransferPage = () => { // event listener for enable/disable submit button useEffect(() => { - const layoutContentContainer = document.querySelector( - '#layout-content-container' - ); + const layoutContentContainer = document.querySelector('#ms-container'); // if the content is not scrollable, we can enable the submit button if ( diff --git a/src/apps/popup/router/paths.ts b/src/apps/popup/router/paths.ts index cc2e6eba6..3922bc54c 100644 --- a/src/apps/popup/router/paths.ts +++ b/src/apps/popup/router/paths.ts @@ -22,5 +22,7 @@ export enum RouterPath { NftDetails = '/nft-details/:contractPackageHash/nfts/:tokenId', GenerateWalletQRCode = '/generate-wallet-qr-code', TransferNft = '/transfer-nft/:contractPackageHash/nfts/:tokenId', - ChangePassword = '/change-password' + ChangePassword = '/change-password', + Delegate = '/delegate', + Undelegate = '/undelegate' } diff --git a/src/apps/popup/router/types.ts b/src/apps/popup/router/types.ts index 69c14e73c..1156cf0f5 100644 --- a/src/apps/popup/router/types.ts +++ b/src/apps/popup/router/types.ts @@ -1,4 +1,4 @@ -import { TransferType } from '@src/constants'; +import { ActivityType } from '@src/constants'; import { TokenType } from '@src/hooks'; export type LocationState = { @@ -7,7 +7,7 @@ export type LocationState = { fromAccount: string; toAccount: string; deployHash: string; - type: TransferType | null; + type: ActivityType | null; amount?: string; symbol?: string; isDeploysList?: boolean; diff --git a/src/assets/icons/burn.svg b/src/assets/icons/burn.svg new file mode 100644 index 000000000..be330d02b --- /dev/null +++ b/src/assets/icons/burn.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/delegate.svg b/src/assets/icons/delegate.svg new file mode 100644 index 000000000..87128f7de --- /dev/null +++ b/src/assets/icons/delegate.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/empty-state.svg b/src/assets/icons/empty-state.svg new file mode 100644 index 000000000..9cb85889b --- /dev/null +++ b/src/assets/icons/empty-state.svg @@ -0,0 +1,739 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/icons/undelegate.svg b/src/assets/icons/undelegate.svg new file mode 100644 index 000000000..9904c3ace --- /dev/null +++ b/src/assets/icons/undelegate.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/background/index.ts b/src/background/index.ts index c724a0560..5c7fc75a6 100644 --- a/src/background/index.ts +++ b/src/background/index.ts @@ -132,6 +132,10 @@ import { } from '@background/redux/account-info/actions'; import { fetchErc20TokenActivity } from '@src/libs/services/account-activity-service/erc20-token-activity-service'; import { fetchNftTokens } from '@libs/services/nft-service'; +import { + fetchAuctionValidators, + fetchValidatorsDetailsData +} from '@libs/services/validators-service'; // setup default onboarding action async function handleActionClick() { @@ -748,6 +752,45 @@ browser.runtime.onMessage.addListener( return; } + case getType(serviceMessage.fetchAuctionValidatorsRequest): { + const { casperApiUrl } = selectApiConfigBasedOnActiveNetwork( + store.getState() + ); + + try { + const data = await fetchAuctionValidators({ casperApiUrl }); + + return sendResponse( + serviceMessage.fetchAuctionValidatorsResponse(data) + ); + } catch (error) { + console.error(error); + } + + return; + } + + case getType(serviceMessage.fetchValidatorsDetailsDataRequest): { + const { casperApiUrl } = selectApiConfigBasedOnActiveNetwork( + store.getState() + ); + + try { + const data = await fetchValidatorsDetailsData({ + casperApiUrl, + publicKey: action.payload.publicKey + }); + + return sendResponse( + serviceMessage.fetchValidatorsDetailsDataResponse(data) + ); + } catch (error) { + console.error(error); + } + + return; + } + // TODO: All below should be removed when Import Account is integrated with window case 'check-secret-key-exist' as any: { const { secretKeyBase64 } = ( diff --git a/src/background/redux/settings/selectors.ts b/src/background/redux/settings/selectors.ts index 62d11254a..4b9cf50d9 100644 --- a/src/background/redux/settings/selectors.ts +++ b/src/background/redux/settings/selectors.ts @@ -2,6 +2,7 @@ import { RootState } from 'typesafe-actions'; import { createSelector } from 'reselect'; import { + AuctionManagerContractHash, CasperApiUrl, CasperLiveUrl, CasperNodeUrl, @@ -24,14 +25,16 @@ export const selectApiConfigBasedOnActiveNetwork = createSelector( casperLiveUrl: CasperLiveUrl.MainnetUrl, casperApiUrl: CasperApiUrl.MainnetUrl, networkName: NetworkName.Mainnet, - nodeUrl: CasperNodeUrl.MainnetUrl + nodeUrl: CasperNodeUrl.MainnetUrl, + auctionManagerContractHash: AuctionManagerContractHash.Mainnet }; case NetworkSetting.Testnet: return { casperLiveUrl: CasperLiveUrl.TestnetUrl, casperApiUrl: CasperApiUrl.TestnetUrl, networkName: NetworkName.Testnet, - nodeUrl: CasperNodeUrl.TestnetUrl + nodeUrl: CasperNodeUrl.TestnetUrl, + auctionManagerContractHash: AuctionManagerContractHash.Testnet }; default: throw new Error(`Unknown network: ${activeNetwork}`); diff --git a/src/background/service-message.ts b/src/background/service-message.ts index 8cffd7e6d..2885da328 100644 --- a/src/background/service-message.ts +++ b/src/background/service-message.ts @@ -10,6 +10,10 @@ import { import { ErrorResponse, PaginatedResponse } from '@libs/services/types'; import { ContractPackageWithBalance } from '@libs/services/erc20-service'; import { NFTTokenResult } from '@libs/services/nft-service'; +import { + DelegatorResult, + ValidatorResult +} from '@libs/services/validators-service'; type Meta = void; @@ -80,7 +84,19 @@ export const serviceMessage = { fetchNftTokensResponse: createAction('FETCH_NFT_TOKENS_RESPONSE')< PaginatedResponse | ErrorResponse, Meta - >() + >(), + fetchAuctionValidatorsRequest: createAction( + 'FETCH_AUCTION_VALIDATORS' + )(), + fetchAuctionValidatorsResponse: createAction( + 'FETCH_AUCTION_VALIDATORS_RESPONSE' + ) | ErrorResponse, Meta>(), + fetchValidatorsDetailsDataRequest: createAction( + 'FETCH_VALIDATORS_DETAILS_DATA' + )<{ publicKey: string }, Meta>(), + fetchValidatorsDetailsDataResponse: createAction( + 'FETCH_VALIDATORS_DETAILS_DATA_RESPONSE' + ) | ErrorResponse, Meta>() }; export type ServiceMessage = ActionType; diff --git a/src/constants.ts b/src/constants.ts index 0ca8ec244..c53c13976 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -12,6 +12,7 @@ export const NFT_TOKENS_REFRESH_RATE = 60 * SECOND; export const ACCOUNT_DEPLOY_REFRESH_RATE = 30 * SECOND; export const ACCOUNT_CASPER_ACTIVITY_REFRESH_RATE = 30 * SECOND; export const ERC20_TOKEN_ACTIVITY_REFRESH_RATE = 30 * SECOND; +export const VALIDATORS_REFRESH_RATE = 30 * SECOND; export const LOGIN_RETRY_ATTEMPTS_LIMIT = 5; @@ -20,6 +21,9 @@ export const TRANSFER_MIN_AMOUNT_MOTES = '2500000000'; // 2.5 CSPR export const ERC20_PAYMENT_AMOUNT_AVERAGE_MOTES = '1500000000'; // 1.5 CSPR export const NFT_CEP47_PAYMENT_AMOUNT_AVERAGE_MOTES = '1000000000'; // 1 CSPR export const NFT_CEP78_PAYMENT_AMOUNT_AVERAGE_MOTES = '3000000000'; // 3 CSPR +export const STAKE_COST_MOTES = '2500000000'; // 2.5 CSPR +export const DELEGATION_MIN_AMOUNT_MOTES = '500000000000'; // 500 CSPR +export const MAX_DELEGATORS = 1200; export const getBlockExplorerAccountUrl = (baseUrl: string, hash: string) => `${baseUrl}/account/${hash}`; @@ -77,34 +81,64 @@ export enum NetworkName { Testnet = 'casper-test' } -export enum TransferType { +export enum AuctionManagerContractHash { + Mainnet = 'ccb576d6ce6dec84a551e48f0d0b7af89ddba44c7390b690036257a04a3ae9ea', + Testnet = '93d923e336b20a4c4ca14d592b60e5bd3fe330775618290104f9beb326db7ae2' +} + +export enum ActivityType { Sent = 'Sent', Received = 'Received', - Unknown = 'Unknown' + Unknown = 'Unknown', + Delegated = 'Delegated', + Undelegated = 'Undelegated', + Redelegated = 'Redelegated', + Mint = 'Mint', + Burn = 'Burn' } -export const ShortTypeName = { - [TransferType.Sent]: 'Sent', - [TransferType.Received]: 'Recv', - [TransferType.Unknown]: 'Unk' +export const ActivityShortTypeName = { + [ActivityType.Sent]: 'Sent', + [ActivityType.Received]: 'Recv', + [ActivityType.Unknown]: 'Unk', + [ActivityType.Delegated]: 'Deleg', + [ActivityType.Undelegated]: 'Undeleg', + [ActivityType.Redelegated]: 'Redeleg', + [ActivityType.Mint]: 'Mint', + [ActivityType.Burn]: 'Burn' }; -export const TypeName = { - [TransferType.Sent]: 'Sent', - [TransferType.Received]: 'Received', - [TransferType.Unknown]: 'Unknown' +export const ActivityTypeName = { + [ActivityType.Sent]: 'Sent', + [ActivityType.Received]: 'Received', + [ActivityType.Unknown]: 'Unknown', + [ActivityType.Delegated]: 'Delegated', + [ActivityType.Undelegated]: 'Undelegated', + [ActivityType.Redelegated]: 'Redelegated', + [ActivityType.Mint]: 'Mint', + [ActivityType.Burn]: 'Burn' }; -export const TypeIcons = { - [TransferType.Sent]: 'assets/icons/transfer.svg', - [TransferType.Received]: 'assets/icons/receive.svg', - [TransferType.Unknown]: 'assets/icons/info.svg' +export const ActivityTypeIcons = { + [ActivityType.Sent]: 'assets/icons/transfer.svg', + [ActivityType.Received]: 'assets/icons/receive.svg', + [ActivityType.Unknown]: 'assets/icons/info.svg', + [ActivityType.Delegated]: 'assets/icons/delegate.svg', + [ActivityType.Undelegated]: 'assets/icons/undelegate.svg', + [ActivityType.Redelegated]: 'assets/icons/undelegate.svg', + [ActivityType.Mint]: 'assets/icons/info.svg', + [ActivityType.Burn]: 'assets/icons/burn.svg' }; -export const TypeColors = { - [TransferType.Sent]: 'contentAction', - [TransferType.Received]: 'contentPositive', - [TransferType.Unknown]: 'contentDisabled' +export const ActivityTypeColors = { + [ActivityType.Sent]: 'contentAction', + [ActivityType.Received]: 'contentPositive', + [ActivityType.Unknown]: 'contentDisabled', + [ActivityType.Delegated]: 'contentAction', + [ActivityType.Undelegated]: 'contentAction', + [ActivityType.Redelegated]: 'contentAction', + [ActivityType.Mint]: 'contentDisabled', + [ActivityType.Burn]: 'contentAction' }; export enum HomePageTabName { @@ -112,3 +146,21 @@ export enum HomePageTabName { Deploys = 'Deploys', NFTs = 'NFTs' } + +export enum StakeSteps { + Validator = 'validator', + Amount = 'amount', + Confirm = 'confirm', + Success = 'success' +} + +export enum AuctionManagerEntryPoint { + delegate = 'delegate', + undelegate = 'undelegate', + redelegate = 'redelegate' +} + +export enum TokenEntryPoint { + mint = 'mint', + burn = 'burn' +} diff --git a/src/libs/layout/header/header-connection-status.tsx b/src/libs/layout/header/header-connection-status.tsx index 9afefabb1..3e0306353 100644 --- a/src/libs/layout/header/header-connection-status.tsx +++ b/src/libs/layout/header/header-connection-status.tsx @@ -23,6 +23,7 @@ export function HeaderConnectionStatus() { return ( ( )} diff --git a/src/libs/layout/header/header-network-switcher.tsx b/src/libs/layout/header/header-network-switcher.tsx index 79c7b3dc7..9c941d580 100644 --- a/src/libs/layout/header/header-network-switcher.tsx +++ b/src/libs/layout/header/header-network-switcher.tsx @@ -50,6 +50,7 @@ export const HeaderNetworkSwitcher = () => { return ( ( void; + backTypeWithBalance?: boolean; } export function HeaderSubmenuBarNavLink({ linkType, - onClick + onClick, + backTypeWithBalance }: HeaderSubmenuBarNavLinkProps) { const { t } = useTranslation(); const navigate = useTypedNavigate(); + const balance = useSelector(selectAccountBalance); + + const formattedBalance = formatNumber( + (balance.amountMotes && motesToCSPR(balance.amountMotes)) || '' + ); + switch (linkType) { case 'close': return ( @@ -52,7 +64,29 @@ export function HeaderSubmenuBarNavLink({ ); case 'back': - return ( + return backTypeWithBalance ? ( + <> + { + if (onClick) { + onClick(); + } else { + navigate(-1); + } + }} + withLeftChevronIcon + /> + + + Balance: + + + {`${formattedBalance} CSPR`} + + + + ) : ( { diff --git a/src/libs/services/account-activity-service/types.ts b/src/libs/services/account-activity-service/types.ts index 726bb1719..8ff28f6db 100644 --- a/src/libs/services/account-activity-service/types.ts +++ b/src/libs/services/account-activity-service/types.ts @@ -52,6 +52,7 @@ export type ExtendedDeployArgsResult = { to?: ExtendedDeployClTypeResult; validator?: ExtendedDeployClTypeResult; new_validator?: ExtendedDeployClTypeResult; + delegator?: ExtendedDeployClTypeResult; }; export interface ExtendedDeployResult { diff --git a/src/libs/services/deployer-service/index.ts b/src/libs/services/deployer-service/index.ts index 6f77f274d..5e7f648fe 100644 --- a/src/libs/services/deployer-service/index.ts +++ b/src/libs/services/deployer-service/index.ts @@ -1,11 +1,35 @@ -import { CasperServiceByJsonRPC, CLPublicKey, DeployUtil } from 'casper-js-sdk'; +import { + CasperServiceByJsonRPC, + CLPublicKey, + CLValueBuilder, + decodeBase16, + DeployUtil, + RuntimeArgs +} from 'casper-js-sdk'; +import { sub } from 'date-fns'; import { signDeploy } from '@libs/crypto'; +import { getRawPublicKey } from '@libs/entities/Account'; +import { AuctionManagerEntryPoint, STAKE_COST_MOTES } from '@src/constants'; import { RPCResponse } from './types'; const casperService = (url: string) => new CasperServiceByJsonRPC(url); +export const getAuctionManagerDeployCost = ( + entryPoint: AuctionManagerEntryPoint +) => { + switch (entryPoint) { + case AuctionManagerEntryPoint.delegate: + case AuctionManagerEntryPoint.undelegate: + case AuctionManagerEntryPoint.redelegate: + return STAKE_COST_MOTES; + + default: + throw Error('getAuctionManagerDeployCost: unknown entry point'); + } +}; + export const signAndDeploy = ( deploy: DeployUtil.Deploy, senderPublicKeyHex: string, @@ -33,3 +57,51 @@ export const signAndDeploy = ( throw error; }); }; + +export const makeAuctionManagerDeploy = ( + contractEntryPoint: AuctionManagerEntryPoint, + delegatorPublicKeyHex: string, + validatorPublicKeyHex: string, + redelegateValidatorPublicKeyHex: string | null, + amountMotes: string, + networkName: string, + auctionManagerContractHash: string +) => { + const hash = decodeBase16(auctionManagerContractHash); + + const delegatorPublicKey = getRawPublicKey(delegatorPublicKeyHex); + const validatorPublicKey = getRawPublicKey(validatorPublicKeyHex); + const newValidatorPublicKey = + redelegateValidatorPublicKeyHex && + getRawPublicKey(redelegateValidatorPublicKeyHex); + + const runtimeArgs = RuntimeArgs.fromMap({ + validator: validatorPublicKey, + delegator: delegatorPublicKey, + amount: CLValueBuilder.u512(amountMotes), + ...(newValidatorPublicKey && { + new_validator: newValidatorPublicKey + }) + }); + + const deployParams = new DeployUtil.DeployParams( + delegatorPublicKey, + networkName, + undefined, + undefined, + undefined, + sub(new Date(), { seconds: 2 }).getTime() + ); // https://github.com/casper-network/casper-node/issues/4152 + + const session = DeployUtil.ExecutableDeployItem.newStoredContractByHash( + hash, + contractEntryPoint, + runtimeArgs + ); + + const deployCost = getAuctionManagerDeployCost(contractEntryPoint); + + const payment = DeployUtil.standardPayment(deployCost); + + return DeployUtil.makeDeploy(deployParams, session, payment); +}; diff --git a/src/libs/services/validators-service/constants.ts b/src/libs/services/validators-service/constants.ts new file mode 100644 index 000000000..9a2b4e886 --- /dev/null +++ b/src/libs/services/validators-service/constants.ts @@ -0,0 +1,9 @@ +export const getAuctionValidatorsUrl = (casperApiUrl: string) => + `${casperApiUrl}/auction-validators?page=1&limit=-1&fields=account_info,average_performance&is_active=true`; + +export const getValidatorsDetailsDataUrl = ( + casperApiUrl: string, + publicKey: string +) => ` + ${casperApiUrl}/accounts/${publicKey}/delegations?page=1&limit=100&fields=validator,validator_account_info +`; diff --git a/src/libs/services/validators-service/index.ts b/src/libs/services/validators-service/index.ts new file mode 100644 index 000000000..963aa288f --- /dev/null +++ b/src/libs/services/validators-service/index.ts @@ -0,0 +1,3 @@ +export * from './types'; +export * from './validators-service'; +export * from './constants'; diff --git a/src/libs/services/validators-service/types.ts b/src/libs/services/validators-service/types.ts new file mode 100644 index 000000000..486a4c5b0 --- /dev/null +++ b/src/libs/services/validators-service/types.ts @@ -0,0 +1,124 @@ +export interface ValidatorResult { + fee: number; + is_active: boolean; + self_stake: string; + bid_amount: string; + total_stake: string; + self_share: string; + public_key: string; + network_share: string; + era_id: number; + delegators_number: number; + delegator_stake: string; + rank: number; + account_info?: AccountInfoResult; + average_performance?: ValidatorAveragePerformanceResult; +} + +export interface ValidatorResultWithId extends ValidatorResult { + id: string; + user_stake?: string; +} + +export interface ValidatorAveragePerformanceResult { + era_id: number; + public_key: string; + average_score: number; // between 0 and 100, treat it as percentage +} + +export interface AccountInfoResult { + account_hash: string; + url: string; + is_active: boolean; + deploy_hash: string; + verified_account_hashes: string[]; + info?: { + owner?: AccountInfoOwner; + nodes?: Array; + }; +} + +export interface AccountInfoOwner { + name?: string; + description?: string; + type?: Array; + email?: string; + identity?: { + ownership_disclosure_url?: string; + casper_association_kyc_url?: string; + casper_association_kyc_onchain?: string; + }; + resources?: { + code_of_conduct_url?: string; + terms_of_service_url?: string; + privacy_policy_url?: string; + other?: Array<{ + name?: string; + url?: string; + }>; + }; + affiliated_accounts?: Array; + website?: string; + branding?: { + logo?: { + svg?: string; + png_256?: string; + png_1024?: string; + }; + }; + location?: { + name?: string; + country?: string; + latitude?: number; + longitude?: number; + }; + social?: { + github?: string; + medium?: string; + reddit?: string; + wechat?: string; + keybase?: string; + twitter?: string; + youtube?: string; + facebook?: string; + telegram?: string; + }; +} + +export interface AccountInfoAffiliatedAccount { + public_key?: string; +} + +export interface AccountInfoNode { + public_key?: string; + description?: string; + functionality?: string[]; + location?: { + name?: string; + country?: string; + latitude?: number; + longitude?: number; + }; +} + +export interface DelegatorResult { + validator_public_key: string; + public_key: string; + stake: string; + bonding_purse: string; + account_info?: AccountInfoResult; + validator_account_info?: ValidatorAccountInfoResult; + validator: ValidatorResult; +} + +export interface ValidatorAccountInfoResult { + account_hash: string; + deploy_hash: string; + info: { + owner?: AccountInfoOwner; + nodes?: Array; + }; + is_active: boolean; + url: string; + verified_account_hashes: string[]; +} diff --git a/src/libs/services/validators-service/validators-service.ts b/src/libs/services/validators-service/validators-service.ts new file mode 100644 index 000000000..9ab6ee779 --- /dev/null +++ b/src/libs/services/validators-service/validators-service.ts @@ -0,0 +1,75 @@ +import { + getAuctionValidatorsUrl, + getValidatorsDetailsDataUrl +} from '@libs/services/validators-service/constants'; +import { handleError, toJson } from '@libs/services/utils'; +import { queryClient } from '@libs/services/query-client'; +import { dispatchToMainStore } from '@background/redux/utils'; +import { + ErrorResponse, + PaginatedResponse, + Payload +} from '@libs/services/types'; +import { + DelegatorResult, + ValidatorResult +} from '@libs/services/validators-service/types'; +import { serviceMessage } from '@background/service-message'; +import { VALIDATORS_REFRESH_RATE } from '@src/constants'; + +export const auctionValidatorsRequest = ( + casperApiUrl: string, + signal?: AbortSignal +) => + fetch(getAuctionValidatorsUrl(casperApiUrl), { signal }) + .then(toJson) + .catch(handleError); + +export const validatorsDetailsDataRequest = ( + casperApiUrl: string, + publicKey: string, + signal?: AbortSignal +) => + fetch(getValidatorsDetailsDataUrl(casperApiUrl, publicKey), { signal }) + .then(toJson) + .catch(handleError); + +export const fetchAuctionValidators = ({ + casperApiUrl +}: { + casperApiUrl: string; +}): Promise | ErrorResponse> => + queryClient.fetchQuery( + ['getAuctionValidators', casperApiUrl], + ({ signal }) => auctionValidatorsRequest(casperApiUrl, signal), + { + staleTime: VALIDATORS_REFRESH_RATE + } + ); + +export const fetchValidatorsDetailsData = ({ + casperApiUrl, + publicKey +}: { + casperApiUrl: string; + publicKey: string; +}): Promise | ErrorResponse> => + queryClient.fetchQuery( + ['getDelegations', casperApiUrl, publicKey], + ({ signal }) => + validatorsDetailsDataRequest(casperApiUrl, publicKey, signal), + { + staleTime: VALIDATORS_REFRESH_RATE + } + ); + +export const dispatchFetchAuctionValidatorsRequest = (): Promise< + Payload | ErrorResponse> +> => dispatchToMainStore(serviceMessage.fetchAuctionValidatorsRequest()); + +export const dispatchFetchValidatorsDetailsDataRequest = ( + publicKey: string +): Promise | ErrorResponse>> => + dispatchToMainStore( + serviceMessage.fetchValidatorsDetailsDataRequest({ publicKey }) + ); diff --git a/src/libs/ui/components/account-activity-plate/account-activity-plate.tsx b/src/libs/ui/components/account-activity-plate/account-activity-plate.tsx index 41e667f36..a22f632e3 100644 --- a/src/libs/ui/components/account-activity-plate/account-activity-plate.tsx +++ b/src/libs/ui/components/account-activity-plate/account-activity-plate.tsx @@ -6,12 +6,12 @@ import styled from 'styled-components'; import { AccountActivityPlateContainer, ActivityPlateContentContainer, + ActivityPlateDivider, + ActivityPlateIconCircleContainer, AlignedFlexRow, AlignedSpaceBetweenFlexRow, - ActivityPlateIconCircleContainer, - ActivityPlateDivider, - SpacingSize, - RightAlignedCenteredFlexRow + RightAlignedCenteredFlexRow, + SpacingSize } from '@libs/layout'; import { ContentColor, @@ -36,11 +36,13 @@ import { } from '@libs/services/account-activity-service'; import { RouterPath, useTypedNavigate } from '@popup/router'; import { - ShortTypeName, - TransferType, - TypeColors, - TypeIcons, - TypeName + ActivityShortTypeName, + ActivityType, + ActivityTypeColors, + ActivityTypeIcons, + ActivityTypeName, + AuctionManagerEntryPoint, + TokenEntryPoint } from '@src/constants'; import { getAccountHashFromPublicKey } from '@libs/entities/Account'; import { getRecipientAddressFromTransaction } from '@libs/ui/utils/utils'; @@ -59,7 +61,11 @@ type Ref = HTMLDivElement; export const AccountActivityPlate = forwardRef( ({ transactionInfo, onClick, isDeploysList }, ref) => { - const [type, setType] = useState(null); + const [type, setType] = useState(null); + const [fromAccount, setFromAccount] = useState( + undefined + ); + const [toAccount, setToAccount] = useState(undefined); const navigate = useTypedNavigate(); const { t } = useTranslation(); @@ -119,21 +125,57 @@ export const AccountActivityPlate = forwardRef( : '-'; useEffect(() => { + if ('entryPoint' in transactionInfo) { + switch (transactionInfo.entryPoint?.name) { + case AuctionManagerEntryPoint.undelegate: { + setType(ActivityType.Undelegated); + setFromAccount(transactionInfo.args.validator?.parsed as string); + setToAccount(transactionInfo.args.delegator?.parsed as string); + return; + } + case AuctionManagerEntryPoint.delegate: { + setType(ActivityType.Delegated); + setFromAccount(transactionInfo.args.delegator?.parsed as string); + setToAccount(transactionInfo.args.validator?.parsed as string); + return; + } + case AuctionManagerEntryPoint.redelegate: { + setType(ActivityType.Redelegated); + setFromAccount(transactionInfo.args.validator?.parsed as string); + setToAccount(transactionInfo.args.new_validator?.parsed as string); + return; + } + case TokenEntryPoint.mint: { + setType(ActivityType.Mint); + setFromAccount(transactionInfo.callerPublicKey); + setToAccount(recipientAddress); + return; + } + case TokenEntryPoint.burn: { + setType(ActivityType.Burn); + setFromAccount(transactionInfo.callerPublicKey); + setToAccount(undefined); + return; + } + } + } + if (fromAccountPublicKey === activeAccount?.publicKey) { - setType(TransferType.Sent); + setType(ActivityType.Sent); } else if ( recipientAddress === activeAccount?.publicKey || recipientAddress === activeAccountHash ) { - setType(TransferType.Received); + setType(ActivityType.Received); } else { - setType(TransferType.Unknown); + setType(ActivityType.Unknown); } }, [ fromAccountPublicKey, activeAccount?.publicKey, recipientAddress, - activeAccountHash + activeAccountHash, + transactionInfo ]); return ( @@ -144,8 +186,8 @@ export const AccountActivityPlate = forwardRef( navigate(RouterPath.ActivityDetails, { state: { activityDetailsData: { - fromAccount: fromAccountPublicKey, - toAccount: recipientAddress, + fromAccount: fromAccount || fromAccountPublicKey, + toAccount: toAccount || recipientAddress, deployHash, type, amount: formattedAmount, @@ -162,9 +204,9 @@ export const AccountActivityPlate = forwardRef( {type != null && ( )} @@ -175,8 +217,8 @@ export const AccountActivityPlate = forwardRef( {type != null && (formattedAmount.length >= 13 - ? ShortTypeName[type] - : TypeName[type])} + ? ActivityShortTypeName[type] + : ActivityTypeName[type])} @@ -186,7 +228,9 @@ export const AccountActivityPlate = forwardRef( formattedAmount ) : ( <> - {type === TransferType.Sent ? '-' : ''} + {type === ActivityType.Sent || type === ActivityType.Delegated + ? '-' + : ''} {formattedAmount} )} diff --git a/src/libs/ui/components/account-casper-activity-plate/account-casper-activity-plate.tsx b/src/libs/ui/components/account-casper-activity-plate/account-casper-activity-plate.tsx index f5b75b2d1..eccb9a2a6 100644 --- a/src/libs/ui/components/account-casper-activity-plate/account-casper-activity-plate.tsx +++ b/src/libs/ui/components/account-casper-activity-plate/account-casper-activity-plate.tsx @@ -28,11 +28,11 @@ import { SpacingSize } from '@libs/layout'; import { - ShortTypeName, - TransferType, - TypeColors, - TypeIcons, - TypeName + ActivityShortTypeName, + ActivityType, + ActivityTypeColors, + ActivityTypeIcons, + ActivityTypeName } from '@src/constants'; import { TransferResultWithId } from '@libs/services/account-activity-service'; import { getAccountHashFromPublicKey } from '@libs/entities/Account'; @@ -47,7 +47,7 @@ export const AccountCasperActivityPlate = forwardRef< Ref, AccountCasperActivityPlateProps >(({ transactionInfo, onClick }, ref) => { - const [type, setType] = useState(null); + const [type, setType] = useState(null); const navigate = useTypedNavigate(); const { t } = useTranslation(); @@ -77,14 +77,14 @@ export const AccountCasperActivityPlate = forwardRef< fromAccountPublicKey === activeAccount?.publicKey || fromAccount === activeAccountHash ) { - setType(TransferType.Sent); + setType(ActivityType.Sent); } else if ( toAccountPublicKey === activeAccount?.publicKey || toAccount === activeAccountHash ) { - setType(TransferType.Received); + setType(ActivityType.Received); } else { - setType(TransferType.Unknown); + setType(ActivityType.Unknown); } }, [ fromAccountPublicKey, @@ -119,9 +119,9 @@ export const AccountCasperActivityPlate = forwardRef< {type != null && ( )} @@ -132,13 +132,13 @@ export const AccountCasperActivityPlate = forwardRef< {type != null && (formattedAmount.length >= 13 - ? ShortTypeName[type] - : TypeName[type])} + ? ActivityShortTypeName[type] + : ActivityTypeName[type])} - {type === TransferType.Sent ? '-' : ''} + {type === ActivityType.Sent ? '-' : ''} {formattedAmount} diff --git a/src/libs/ui/components/button/button.tsx b/src/libs/ui/components/button/button.tsx index 798eae925..cec9df596 100644 --- a/src/libs/ui/components/button/button.tsx +++ b/src/libs/ui/components/button/button.tsx @@ -42,7 +42,6 @@ const BaseButton = styled.button( ...(circle && { borderRadius: '24px', - margin: '0 16px', padding: '12px' }), diff --git a/src/libs/ui/components/error/error.tsx b/src/libs/ui/components/error/error.tsx new file mode 100644 index 000000000..319c0b48e --- /dev/null +++ b/src/libs/ui/components/error/error.tsx @@ -0,0 +1,39 @@ +import React from 'react'; +import styled from 'styled-components'; +import { Trans, useTranslation } from 'react-i18next'; + +import { AlignedFlexRow, FlexColumn, SpacingSize } from '@libs/layout'; +import { SvgIcon, Typography } from '@libs/ui'; + +const ErrorContainer = styled(FlexColumn)` + padding: 12px 16px; + + background: ${({ theme }) => theme.color.backgroundPrimary}; +`; + +interface ErrorProps { + header: string; + description: string; +} + +export const Error = ({ header, description }: ErrorProps) => { + const { t } = useTranslation(); + + return ( + + + + + {header} + + + + {description} + + + ); +}; diff --git a/src/libs/ui/components/hash/utils.ts b/src/libs/ui/components/hash/utils.ts index 6291b1acc..581626a37 100644 --- a/src/libs/ui/components/hash/utils.ts +++ b/src/libs/ui/components/hash/utils.ts @@ -12,8 +12,8 @@ export function truncateKey( break; case 'small': default: - beginOfKey = key.slice(0, 5); - endOfKey = key.slice(key.length - 5); + beginOfKey = key.slice(0, 4); + endOfKey = key.slice(key.length - 4); break; case 'medium': diff --git a/src/libs/ui/components/input/input.tsx b/src/libs/ui/components/input/input.tsx index 95ee67572..cc0249278 100644 --- a/src/libs/ui/components/input/input.tsx +++ b/src/libs/ui/components/input/input.tsx @@ -170,7 +170,7 @@ export const Input = React.forwardRef(function Input( : { [InputValidationType.Password]: { type: 'password', - min: '12', + min: '16', max: '0', step: '0' } @@ -231,5 +231,3 @@ export const Input = React.forwardRef(function Input( ); }); - -export default Input; diff --git a/src/libs/ui/components/list/list.tsx b/src/libs/ui/components/list/list.tsx index b5dffae12..5cf3e462c 100644 --- a/src/libs/ui/components/list/list.tsx +++ b/src/libs/ui/components/list/list.tsx @@ -44,7 +44,7 @@ const RowContainer = styled(FlexColumn)``; const ListHeaderContainer = styled(FlexColumn)` ${({ stickyHeader, theme }) => stickyHeader - ? `position: sticky; top: 72px; z-index: 1; background: ${theme.color.backgroundSecondary}};` + ? `position: sticky; top: 72px; z-index: 2; background: ${theme.color.backgroundSecondary}};` : ''}; &::after { @@ -79,6 +79,7 @@ interface ListProps { marginLeftForItemSeparatorLine: number; stickyHeader?: boolean; maxHeight?: number; + borderRadius?: 'base'; } export function List({ @@ -93,8 +94,14 @@ export function List({ headerLabelTop = SpacingSize.XL, contentTop = SpacingSize.XL, stickyHeader, - maxHeight + maxHeight, + borderRadius }: ListProps) { + const separatorLine = + marginLeftForHeaderSeparatorLine || marginLeftForHeaderSeparatorLine === 0 + ? marginLeftForHeaderSeparatorLine + : marginLeftForItemSeparatorLine; + return ( <> {headerLabel && ( @@ -119,13 +126,10 @@ export function List({ )} - + {renderHeader && ( {renderHeader()} diff --git a/src/libs/ui/components/modal/modal.tsx b/src/libs/ui/components/modal/modal.tsx index 439e8ec5b..03214b238 100644 --- a/src/libs/ui/components/modal/modal.tsx +++ b/src/libs/ui/components/modal/modal.tsx @@ -9,20 +9,24 @@ const ChildrenContainer = styled(AlignedFlexRow)` cursor: pointer; `; -const ModalContainer = styled.div` - position: fixed; - top: 88px; - left: 0; - right: 0; +const ModalContainer = styled.div<{ placement: 'top' | 'bottom' }>( + ({ theme, placement }) => ({ + position: 'fixed', + top: placement === 'top' ? '88px' : undefined, + bottom: placement === 'bottom' ? '16px' : undefined, + left: 0, + right: 0, - margin: 0 16px; + margin: '0 16px', - max-width: 328px; + maxWidth: '328px', + + backgroundColor: theme.color.backgroundPrimary, + boxShadow: theme.shadow.contextMenu, + borderRadius: `${theme.borderRadius.twelve}px` + }) +); - background-color: ${({ theme }) => theme.color.backgroundPrimary}; - box-shadow: ${({ theme }) => theme.shadow.contextMenu}; - border-radius: ${({ theme }) => theme.borderRadius.twelve}px; -`; interface RenderChildrenProps { isOpen: boolean; } @@ -34,9 +38,10 @@ interface RenderContentProps { export interface ModalProps extends BaseProps { children: (renderProps: RenderChildrenProps) => React.ReactNode | string; renderContent: (renderProps: RenderContentProps) => React.ReactNode | string; + placement: 'top' | 'bottom'; } -export const Modal = ({ children, renderContent }: ModalProps) => { +export const Modal = ({ children, renderContent, placement }: ModalProps) => { const [isOpen, setIsOpen] = useState(false); const childrenContainerRef = useRef(null); @@ -66,7 +71,7 @@ export const Modal = ({ children, renderContent }: ModalProps) => { {isOpen && ( - + {renderContent({ closeModal })} diff --git a/src/libs/ui/components/recipient-plate/recipient-plate.tsx b/src/libs/ui/components/recipient-plate/recipient-plate.tsx index dd6bbde9b..dabefbc4d 100644 --- a/src/libs/ui/components/recipient-plate/recipient-plate.tsx +++ b/src/libs/ui/components/recipient-plate/recipient-plate.tsx @@ -17,7 +17,7 @@ const PublicKeyOptionContainer = styled(FlexRow)<{ onClick?: () => void }>` padding: 12px 16px; background-color: ${({ theme }) => theme.color.backgroundPrimary}; - border-radius: ${({ theme }) => theme.borderRadius.eight}px; + border-radius: ${({ theme }) => theme.borderRadius.base}px; `; export const RecipientPlate = ({ diff --git a/src/libs/ui/components/tabs/tabs.tsx b/src/libs/ui/components/tabs/tabs.tsx index ad239b6e8..abb601ca4 100644 --- a/src/libs/ui/components/tabs/tabs.tsx +++ b/src/libs/ui/components/tabs/tabs.tsx @@ -14,7 +14,7 @@ const TabsContainer = styled(AlignedSpaceBetweenFlexRow)` const StickyTabsContainer = styled.div` position: sticky; - top: -2px; + top: 0; z-index: 5; padding: 16px 0; diff --git a/src/libs/ui/components/tile/tile.tsx b/src/libs/ui/components/tile/tile.tsx index a00c2c64d..47a21f333 100644 --- a/src/libs/ui/components/tile/tile.tsx +++ b/src/libs/ui/components/tile/tile.tsx @@ -1,8 +1,9 @@ import styled from 'styled-components'; -export const Tile = styled.div` +export const Tile = styled.div<{ borderRadius?: 'base' }>` width: 100%; background-color: ${({ theme }) => theme.color.backgroundPrimary}; - border-radius: ${({ theme }) => theme.borderRadius.twelve}px; + border-radius: ${({ theme, borderRadius }) => + borderRadius ? theme.borderRadius.base : theme.borderRadius.twelve}px; `; diff --git a/src/libs/ui/components/transfer-success-screen/transfer-succeess-screen.tsx b/src/libs/ui/components/transfer-success-screen/transfer-succeess-screen.tsx index c5f01e586..d78e94930 100644 --- a/src/libs/ui/components/transfer-success-screen/transfer-succeess-screen.tsx +++ b/src/libs/ui/components/transfer-success-screen/transfer-succeess-screen.tsx @@ -10,11 +10,11 @@ import { import { SvgIcon, Typography } from '@libs/ui'; interface TransferSuccessScreenProps { - isNftTransfer?: boolean; + headerText: string; } export const TransferSuccessScreen = ({ - isNftTransfer = false + headerText }: TransferSuccessScreenProps) => { const { t } = useTranslation(); @@ -28,11 +28,7 @@ export const TransferSuccessScreen = ({ /> - - {isNftTransfer - ? 'You’ve sent the NFT' - : 'You submitted a transaction'} - + {headerText} diff --git a/src/libs/ui/components/validator-dropdown-input/validator-dropdown-input.tsx b/src/libs/ui/components/validator-dropdown-input/validator-dropdown-input.tsx new file mode 100644 index 000000000..c51b265ba --- /dev/null +++ b/src/libs/ui/components/validator-dropdown-input/validator-dropdown-input.tsx @@ -0,0 +1,231 @@ +import React, { useCallback, useEffect, useState } from 'react'; +import { UseFormReturn, useWatch } from 'react-hook-form'; +import { Trans, useTranslation } from 'react-i18next'; +import styled from 'styled-components'; + +import { + AlignedSpaceBetweenFlexRow, + SpacingSize, + VerticalSpaceContainer +} from '@src/libs/layout'; +import { SvgIcon, Input, List, ValidatorPlate, Typography } from '@libs/ui'; +import { StakeValidatorFormValues } from '@libs/ui/forms/stakes-form'; +import { useClickAway } from '@libs/ui/hooks/use-click-away'; +import { ValidatorResultWithId } from '@libs/services/validators-service/types'; +import { AuctionManagerEntryPoint } from '@src/constants'; + +const DropDownHeader = styled(AlignedSpaceBetweenFlexRow)` + padding: 8px 16px; + + border-top-left-radius: ${({ theme }) => theme.borderRadius.base}px; + border-top-right-radius: ${({ theme }) => theme.borderRadius.base}px; + + background-color: ${({ theme }) => theme.color.backgroundPrimary}; +`; + +interface ValidatorDropdownInputProps { + validatorForm: UseFormReturn; + validatorList: ValidatorResultWithId[] | null; + validator: ValidatorResultWithId | null; + setValidator: React.Dispatch< + React.SetStateAction + >; + setStakeAmount: React.Dispatch>; + stakesType: AuctionManagerEntryPoint; +} + +export const ValidatorDropdownInput = ({ + validatorForm, + validatorList, + validator, + setValidator, + setStakeAmount, + stakesType +}: ValidatorDropdownInputProps) => { + const [isOpenValidatorPublicKeysList, setIsOpenValidatorPublicKeysList] = + useState(true); + const [showValidatorPlate, setShowValidatorPlate] = useState(false); + const [label, setLabel] = useState(''); + + const { t } = useTranslation(); + + const { register, formState, setValue, control, trigger } = validatorForm; + const { errors } = formState; + + const inputValue = useWatch({ + control: control, + name: 'validatorPublicKey' + }); + + const { ref: clickAwayRef } = useClickAway({ + callback: async () => { + setIsOpenValidatorPublicKeysList(false); + + if (validator && inputValue !== '') { + setShowValidatorPlate(true); + setValue('validatorPublicKey', validator.public_key); + setStakeAmount(validator.user_stake!); + await trigger('validatorPublicKey'); + return; + } else if (validator && inputValue === '') { + setShowValidatorPlate(false); + setValue('validatorPublicKey', ''); + setValidator(null); + await trigger('validatorPublicKey'); + return; + } + + setValue('validatorPublicKey', ''); + await trigger('validatorPublicKey'); + } + }); + + useEffect(() => { + trigger('validatorPublicKey'); + }, [trigger, validator]); + + useEffect(() => { + if (formState.isValid) { + setShowValidatorPlate(true); + } + // This should trigger only once + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + const useFilteredValidators = ( + inputValue: string, + validatorList: ValidatorResultWithId[] | null + ) => { + const filterValidators = useCallback( + ( + inputValue: string, + validatorList: ValidatorResultWithId[] | null + ): ValidatorResultWithId[] | [] => { + if (!validatorList) return []; + if (!inputValue) return validatorList; + + return validatorList.filter(validator => { + const { public_key } = validator; + if (validator?.account_info?.info?.owner?.name) { + const { name } = validator.account_info.info.owner; + + return ( + name?.toLowerCase().includes(inputValue?.toLowerCase()) || + public_key?.toLowerCase().includes(inputValue?.toLowerCase()) + ); + } + + return public_key?.toLowerCase().includes(inputValue?.toLowerCase()); + }); + }, + [] + ); + + return filterValidators(inputValue, validatorList); + }; + + const filteredValidatorsList = useFilteredValidators( + inputValue, + validatorList + ); + + useEffect(() => { + switch (stakesType) { + case AuctionManagerEntryPoint.delegate: { + setLabel('To validator'); + break; + } + case AuctionManagerEntryPoint.undelegate: { + setLabel('From validator'); + break; + } + + default: + throw Error('fetch validator: unknown stakes type'); + } + }, [stakesType]); + + return showValidatorPlate && validator ? ( + + { + setShowValidatorPlate(false); + setIsOpenValidatorPublicKeysList(true); + }} + /> + + ) : ( + { + setIsOpenValidatorPublicKeysList(true); + }} + > + {/*TODO: create Select component and rewrite this*/} + } + suffixIcon={ + + } + placeholder={t('Validator public address')} + {...register('validatorPublicKey')} + autoComplete="off" + /> + {isOpenValidatorPublicKeysList && ( + ( + + + Validator + + + Total stake, fee, delegators + + + )} + renderRow={validator => ( + { + setValue('validatorPublicKey', validator.public_key); + setStakeAmount(validator.user_stake!); + + setValidator(validator); + + setIsOpenValidatorPublicKeysList(false); + setShowValidatorPlate(true); + }} + /> + )} + marginLeftForItemSeparatorLine={56} + marginLeftForHeaderSeparatorLine={0} + /> + )} + + ); +}; diff --git a/src/libs/ui/components/validator-plate/validator-plate.tsx b/src/libs/ui/components/validator-plate/validator-plate.tsx new file mode 100644 index 000000000..db62bb484 --- /dev/null +++ b/src/libs/ui/components/validator-plate/validator-plate.tsx @@ -0,0 +1,188 @@ +import React, { useEffect, useState } from 'react'; +import styled from 'styled-components'; +import { FieldError } from 'react-hook-form'; + +import { + AlignedFlexRow, + AlignedSpaceBetweenFlexRow, + FlexColumn, + FlexRow, + RightAlignedFlexColumn, + SpacingSize, + VerticalSpaceContainer +} from '@libs/layout'; +import { + Avatar, + Error, + FormField, + Hash, + HashVariant, + Typography +} from '@libs/ui'; +import { formatNumber, motesToCSPR } from '@libs/ui/utils/formatters'; +import { getImageProxyUrl } from '@src/utils'; + +const ValidatorPlateContainer = styled(AlignedSpaceBetweenFlexRow)<{ + onClick?: () => void; + withBackground?: boolean; +}>` + cursor: ${({ onClick }) => (onClick ? 'pointer' : 'initial')}; + background: ${({ withBackground, theme }) => + withBackground ? theme.color.backgroundPrimary : 'transparent'}; + border-radius: ${({ theme }) => theme.borderRadius.base}px; + + padding: 8px 16px; +`; + +const NameContainer = styled(FlexColumn)` + max-width: 93px; +`; + +const IconContainer = styled.div` + padding-top: 8px; +`; + +const Image = styled.img` + height: 24px; + width: 24px; +`; + +interface ValidatorPlateProps { + handleClick?: () => void; + publicKey: string; + name?: string; + logo?: string; + showFullPublicKey?: boolean; + fee: number; + delegatorsNumber?: number; + validatorLabel?: string; + error?: FieldError; + totalStake?: string; +} + +export const ValidatorPlate = ({ + publicKey, + name, + showFullPublicKey, + fee, + handleClick, + logo, + delegatorsNumber, + validatorLabel, + error, + totalStake +}: ValidatorPlateProps) => { + const [formattedTotalStake, setFormattedTotalStake] = useState(''); + + useEffect(() => { + if (totalStake) { + setFormattedTotalStake(formatNumber(motesToCSPR(totalStake))); + } + }, [totalStake]); + + const logoUrl = getImageProxyUrl(logo); + const formattedFee = formatNumber(fee, { + precision: { min: 2 } + }); + const getFormattedDelegatorsNumber = () => { + if (delegatorsNumber && delegatorsNumber >= 1000) { + return ( + formatNumber(delegatorsNumber / 1000, { + precision: { max: 2 } + }) + 'k' + ); + } + + return delegatorsNumber; + }; + + const plateWithFullPublicKey = ( + + + + {logoUrl ? ( + {name} + ) : ( + + )} + + + + + {name} + + + + + ); + + const plate = (withBackground?: boolean) => ( + + + {logoUrl ? ( + {name} + ) : ( + + )} + + + + {name} + + + + + + {`${formattedTotalStake} CSPR`} + + + + {`${formattedFee}% fee`} + + + {getFormattedDelegatorsNumber()} delegators + + + + + ); + + if (validatorLabel) { + return ( + <> + + {showFullPublicKey ? plateWithFullPublicKey : plate(true)} + + {error && error.message && ( + + + + )} + + ); + } + + return showFullPublicKey ? plateWithFullPublicKey : plate(); +}; diff --git a/src/libs/ui/forms/form-validation-rules.ts b/src/libs/ui/forms/form-validation-rules.ts index e5ef55850..a8cfda497 100644 --- a/src/libs/ui/forms/form-validation-rules.ts +++ b/src/libs/ui/forms/form-validation-rules.ts @@ -8,9 +8,13 @@ import { dispatchToMainStore } from '@src/background/redux/utils'; import { loginRetryCountIncremented } from '@src/background/redux/login-retry-count/actions'; import { selectLoginRetryCount } from '@background/redux/login-retry-count/selectors'; import { + STAKE_COST_MOTES, + DELEGATION_MIN_AMOUNT_MOTES, LOGIN_RETRY_ATTEMPTS_LIMIT, + MAX_DELEGATORS, + TRANSFER_COST_MOTES, TRANSFER_MIN_AMOUNT_MOTES, - TRANSFER_COST_MOTES + AuctionManagerEntryPoint } from '@src/constants'; import { isValidPublicKey, isValidU64 } from '@src/utils'; import { CSPRtoMotes, motesToCSPR } from '@libs/ui/utils/formatters'; @@ -128,7 +132,7 @@ export const useRecipientPublicKeyRule = () => { }); }; -export const useCsprAmountRule = (amountMotes: string | null) => { +export const useCSPRTransferAmountRule = (amountMotes: string | null) => { const { t } = useTranslation(); const maxAmountMotes: string = @@ -269,3 +273,117 @@ export const usePaymentAmountRule = (csprBalance: string | null) => { ) }); }; + +export const useCSPRStakeAmountRule = ( + amountMotes: string | null, + mode: AuctionManagerEntryPoint, + stakeAmountMotes: string +) => { + const { t } = useTranslation(); + + const getStakeMinAmountMotes = () => { + switch (mode) { + case AuctionManagerEntryPoint.delegate: { + return DELEGATION_MIN_AMOUNT_MOTES; + } + case AuctionManagerEntryPoint.undelegate: { + return '0'; + } + + default: { + return DELEGATION_MIN_AMOUNT_MOTES; + } + } + }; + + const maxAmountMotes: string = + amountMotes == null + ? '0' + : Big(amountMotes).sub(STAKE_COST_MOTES).toString(); + + return Yup.string() + .required({ + header: t('Amount is required'), + description: t('You need to enter an amount to stake') + }) + .test({ + name: 'validU64', + test: csprAmountInputValue => { + if (csprAmountInputValue) { + return isValidU64(csprAmountInputValue); + } + + return false; + }, + message: { + header: t(`Amount is invalid`), + description: t(`You need to enter a valid amount`) + } + }) + .test({ + name: 'amountBelowMinTransfer', + test: csprAmountInputValue => { + if (csprAmountInputValue) { + return Big(CSPRtoMotes(csprAmountInputValue)).gte( + getStakeMinAmountMotes() + ); + } + + return false; + }, + message: { + header: t('You can’t delegate this amount'), + description: t( + `The minimum required delegation amount is ${motesToCSPR( + getStakeMinAmountMotes() + )} CSPR.` + ) + } + }) + .test({ + name: 'amountAboveBalance', + test: csprAmountInputValue => { + if (csprAmountInputValue) { + if (mode === AuctionManagerEntryPoint.undelegate) { + return Big(CSPRtoMotes(csprAmountInputValue)).lte( + Big(stakeAmountMotes).sub(getStakeMinAmountMotes()).toString() + ); + } + return Big(CSPRtoMotes(csprAmountInputValue)).lte(maxAmountMotes); + } + + return false; + }, + message: + mode === AuctionManagerEntryPoint.undelegate + ? { + header: t('You can’t undelegate this amount'), + description: t('Amount must be less than staked CSPR.') + } + : { + header: t('Your account balance is not high enough'), + description: t( + 'Your account balance is not high enough. Enter a smaller amount.' + ) + } + }); +}; + +export const useValidatorPublicKeyRule = (delegatorsNumber?: number) => { + const { t } = useTranslation(); + + return Yup.string() + .required(t('Recipient is required')) + .test({ + name: 'validatorPublicKey', + test: value => (value ? isValidPublicKey(value) : false), + message: t('Recipient should be a valid public key') + }) + .test({ + name: 'maxDelegators', + test: () => !(delegatorsNumber && delegatorsNumber >= MAX_DELEGATORS), + message: t( + 'This validator has reached the network limit for total delegators and therefore cannot be delegated to by new accounts. Please select another validator with fewer than 1200 total delegators' + ) + }); +}; diff --git a/src/libs/ui/forms/stakes-form.ts b/src/libs/ui/forms/stakes-form.ts new file mode 100644 index 000000000..5a96a6ab7 --- /dev/null +++ b/src/libs/ui/forms/stakes-form.ts @@ -0,0 +1,50 @@ +import * as Yup from 'yup'; +import { useForm } from 'react-hook-form'; +import { UseFormProps } from 'react-hook-form/dist/types/form'; +import { yupResolver } from '@hookform/resolvers/yup/dist/yup'; + +import { + useCSPRStakeAmountRule, + useValidatorPublicKeyRule +} from '@libs/ui/forms/form-validation-rules'; +import { AuctionManagerEntryPoint } from '@src/constants'; + +export type StakeValidatorFormValues = { + validatorPublicKey: string; +}; + +export type StakeAmountFormValues = { + amount: string; +}; + +export const useStakesForm = ( + amountMotes: string | null, + stakesType: AuctionManagerEntryPoint, + stakeAmountMotes: string, + delegatorsNumber?: number +) => { + const validatorFormSchema = Yup.object().shape({ + validatorPublicKey: useValidatorPublicKeyRule(delegatorsNumber) + }); + + const validatorFormOptions: UseFormProps = { + reValidateMode: 'onChange', + mode: 'onChange', + resolver: yupResolver(validatorFormSchema) + }; + + const amountFormSchema = Yup.object().shape({ + amount: useCSPRStakeAmountRule(amountMotes, stakesType, stakeAmountMotes) + }); + + const amountFormOptions: UseFormProps = { + reValidateMode: 'onChange', + mode: 'onChange', + resolver: yupResolver(amountFormSchema) + }; + + return { + validatorForm: useForm(validatorFormOptions), + amountForm: useForm(amountFormOptions) + }; +}; diff --git a/src/libs/ui/forms/transfer.ts b/src/libs/ui/forms/transfer.ts index 4adaf0d6d..9580ba518 100644 --- a/src/libs/ui/forms/transfer.ts +++ b/src/libs/ui/forms/transfer.ts @@ -3,7 +3,7 @@ import { useForm } from 'react-hook-form'; import { UseFormProps } from 'react-hook-form/dist/types/form'; import { - useCsprAmountRule, + useCSPRTransferAmountRule, useErc20AmountRule, usePaymentAmountRule, useRecipientPublicKeyRule, @@ -46,7 +46,7 @@ export function useTransferForm( }); const csprAmountFormSchema = Yup.object().shape({ - amount: useCsprAmountRule(amountMotes), + amount: useCSPRTransferAmountRule(amountMotes), transferIdMemo: useTransferIdMemoRule() }); diff --git a/src/libs/ui/index.ts b/src/libs/ui/index.ts index 83c5e446f..bf044dc0a 100644 --- a/src/libs/ui/index.ts +++ b/src/libs/ui/index.ts @@ -45,6 +45,9 @@ export * from './components/contract-icon/contract-icon'; export * from './components/password-inputs/password-inputs'; export * from './components/toggle/toggle'; export * from './components/skeleton/skeleton'; +export * from './components/validator-dropdown-input/validator-dropdown-input'; +export * from './components/validator-plate/validator-plate'; +export * from './components/error/error'; export * from './utils/match-media'; export * from './utils/match-size'; From d85a272db33f7de1987e1e302c5433fa531ba304 Mon Sep 17 00:00:00 2001 From: Ostap Piatkovskyi <44294945+ost-ptk@users.noreply.github.com> Date: Thu, 16 Nov 2023 15:28:47 +0200 Subject: [PATCH 076/243] added active address in top nav (#847) Co-authored-by: ost-ptk Co-authored-by: Vynnyk Dmytro --- .../header/header-connection-status.tsx | 32 +++++++++++-------- .../layout/header/header-network-switcher.tsx | 2 +- src/libs/layout/header/index.tsx | 9 +++--- src/libs/ui/components/avatar/avatar.tsx | 1 + src/libs/ui/components/hash/hash.tsx | 3 +- .../ui/components/typography/typography.tsx | 11 ++++++- 6 files changed, 36 insertions(+), 22 deletions(-) diff --git a/src/libs/layout/header/header-connection-status.tsx b/src/libs/layout/header/header-connection-status.tsx index 3e0306353..1e18985aa 100644 --- a/src/libs/layout/header/header-connection-status.tsx +++ b/src/libs/layout/header/header-connection-status.tsx @@ -1,25 +1,25 @@ import React from 'react'; import styled from 'styled-components'; import { useSelector } from 'react-redux'; -import { useTranslation } from 'react-i18next'; -import { AccountList, Modal, SvgIcon, Typography } from '@libs/ui'; +import { AccountList, Hash, HashVariant, Modal, SvgIcon } from '@libs/ui'; import { AlignedFlexRow, SpacingSize } from '@libs/layout'; -import { selectCountOfConnectedAccountsWithActiveOrigin } from '@src/background/redux/vault/selectors'; +import { selectVaultActiveAccount } from '@src/background/redux/vault/selectors'; const ConnectionStatusContainer = styled(AlignedFlexRow)` width: fit-content; background-color: rgb(0, 0, 0, 0.16); - padding: 4px 8px; - border-radius: ${({ theme }) => theme.borderRadius.hundred}px; + padding: 6px 8px 6px 14px; + border-top-right-radius: ${({ theme }) => theme.borderRadius.hundred}px; + border-bottom-right-radius: ${({ theme }) => theme.borderRadius.hundred}px; + + position: relative; + left: -2px; `; export function HeaderConnectionStatus() { - const { t } = useTranslation(); - const countOfConnectedAccounts = useSelector( - selectCountOfConnectedAccountsWithActiveOrigin - ); + const activeAccount = useSelector(selectVaultActiveAccount); return ( ( - - {countOfConnectedAccounts > 0 - ? `${countOfConnectedAccounts} ${t('Connected')}` - : t('Disconnected')} - + hexToRGBA(theme.color.black, '0.16')}; - padding: 4px 8px; + padding: 6px 8px; border-radius: ${({ theme }) => theme.borderRadius.hundred}px; `; diff --git a/src/libs/layout/header/index.tsx b/src/libs/layout/header/index.tsx index 3b2ad3a7a..5db9269d9 100644 --- a/src/libs/layout/header/index.tsx +++ b/src/libs/layout/header/index.tsx @@ -3,13 +3,12 @@ import styled from 'styled-components'; import { useSelector } from 'react-redux'; import { + AlignedFlexRow, AlignedSpaceBetweenFlexRow, - FlexRow, HeaderContainer, LeftAlignedCenteredFlexRow, Logo, - LogoContainer, - SpacingSize + LogoContainer } from '@src/libs/layout'; import { Avatar, SvgIcon } from '@libs/ui'; import { @@ -68,7 +67,7 @@ export function PopupHeader({ <> {withConnectionStatus && activeAccount?.publicKey ? ( - + - + ) : ( <> diff --git a/src/libs/ui/components/avatar/avatar.tsx b/src/libs/ui/components/avatar/avatar.tsx index 6eb718a3a..190307b26 100644 --- a/src/libs/ui/components/avatar/avatar.tsx +++ b/src/libs/ui/components/avatar/avatar.tsx @@ -34,6 +34,7 @@ const IconHashWrapper = styled(CenteredFlexRow)(({ theme }) => ({ const ConnectionStatusBadgeContainer = styled(AlignedFlexRow)` position: relative; + z-index: 1; `; export const BackgroundWrapper = styled.div( diff --git a/src/libs/ui/components/hash/hash.tsx b/src/libs/ui/components/hash/hash.tsx index 09c672b2f..8e16b5011 100644 --- a/src/libs/ui/components/hash/hash.tsx +++ b/src/libs/ui/components/hash/hash.tsx @@ -16,7 +16,8 @@ import { truncateKey, TruncateKeySize } from './utils'; export enum HashVariant { CaptionHash = 'captionHash', - BodyHash = 'bodyHash' + BodyHash = 'bodyHash', + ListSubtextHash = 'listSubtextHash' } interface HashContainerProps { diff --git a/src/libs/ui/components/typography/typography.tsx b/src/libs/ui/components/typography/typography.tsx index d287c8439..c47cdf16a 100644 --- a/src/libs/ui/components/typography/typography.tsx +++ b/src/libs/ui/components/typography/typography.tsx @@ -23,7 +23,8 @@ export type TypographyType = | 'CSPRBold' | 'listSubtext' | 'formFieldStatus' // TODO: Temporary name. Make a better name - | 'subtitle'; + | 'subtitle' + | 'listSubtextHash'; export type CSPRSize = '2.8rem' | '2.4rem' | '2rem' | '1.8rem'; @@ -200,6 +201,14 @@ const StyledTypography = styled('span').withConfig({ fontWeight: theme.typography.fontWeight.bold }; + case 'listSubtextHash': + return { + ...CSPRBase, + fontSize: '1.2rem', + lineHeight: '1.6rem', + fontWeight: theme.typography.fontWeight.medium + }; + default: throw new Error('Unknown type of Typography'); } From fb092aaef40850d3a0e9e891966d37e26169830d Mon Sep 17 00:00:00 2001 From: Ostap Piatkovskyi <44294945+ost-ptk@users.noreply.github.com> Date: Thu, 16 Nov 2023 15:29:45 +0200 Subject: [PATCH 077/243] fixed issue with an open modal window (#848) Co-authored-by: ost-ptk Co-authored-by: Vynnyk Dmytro --- .../components/account-list/account-list.tsx | 7 +++- .../account-popover/account-popover.tsx | 42 +++++++++++++------ src/libs/ui/components/modal/modal.tsx | 4 +- 3 files changed, 37 insertions(+), 16 deletions(-) diff --git a/src/libs/ui/components/account-list/account-list.tsx b/src/libs/ui/components/account-list/account-list.tsx index 44db661d3..dd1f85a64 100644 --- a/src/libs/ui/components/account-list/account-list.tsx +++ b/src/libs/ui/components/account-list/account-list.tsx @@ -61,7 +61,7 @@ const ButtonContainer = styled(CenteredFlexRow)` `; interface AccountListProps { - closeModal: (e: React.MouseEvent) => void; + closeModal: (e: React.MouseEvent) => void; } export const AccountList = ({ closeModal }: AccountListProps) => { @@ -143,7 +143,10 @@ export const AccountList = ({ closeModal }: AccountListProps) => { /> - + {isConnected && ( diff --git a/src/libs/ui/components/account-popover/account-popover.tsx b/src/libs/ui/components/account-popover/account-popover.tsx index 960f83d2f..d8cc3182e 100644 --- a/src/libs/ui/components/account-popover/account-popover.tsx +++ b/src/libs/ui/components/account-popover/account-popover.tsx @@ -17,9 +17,11 @@ import { Account } from '@background/redux/vault/types'; interface AccountActionsMenuPopoverProps { account: Account; + onClick?: (e: React.MouseEvent) => void; } export const AccountActionsMenuPopover = ({ - account + account, + onClick }: AccountActionsMenuPopoverProps) => { const navigate = useTypedNavigate(); const { t } = useTranslation(); @@ -40,9 +42,13 @@ export const AccountActionsMenuPopover = ({ {connectedAccountNames.includes(account.name) ? ( { - closePopover(e); + onClick={event => { + closePopover(event); activeOrigin && disconnectAccount(account.name, activeOrigin); + + if (onClick) { + onClick(event); + } }} > + onClick={event => { navigate( isAnyAccountConnected ? `${RouterPath.ConnectAnotherAccount}/${account.name}` : RouterPath.NoConnectedAccount - ) - } + ); + + if (onClick) { + onClick(event); + } + }} > + onClick={event => { navigate( RouterPath.RenameAccount.replace(':accountName', account.name) - ) - } + ); + + if (onClick) { + onClick(event); + } + }} > + onClick={event => { navigate( RouterPath.AccountSettings.replace(':accountName', account.name) - ) - } + ); + + if (onClick) { + onClick(event); + } + }} > ) => void; + closeModal: (e: MouseEvent) => void; } export interface ModalProps extends BaseProps { @@ -52,7 +52,7 @@ export const Modal = ({ children, renderContent, placement }: ModalProps) => { } }); - const closeModal = (e: MouseEvent) => { + const closeModal = (e: MouseEvent) => { e.stopPropagation(); setIsOpen(false); }; From a32591b325dec686aa51388d47dc082f4faa84c2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 16 Nov 2023 15:30:31 +0200 Subject: [PATCH 078/243] build(deps-dev): bump @babel/core from 7.20.5 to 7.23.3 (#850) Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.20.5 to 7.23.3. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.23.3/packages/babel-core) --- updated-dependencies: - dependency-name: "@babel/core" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 234 +++++++++++++++++++++++++--------------------- package.json | 2 +- 2 files changed, 126 insertions(+), 110 deletions(-) diff --git a/package-lock.json b/package-lock.json index 694e77fcc..241cc0508 100644 --- a/package-lock.json +++ b/package-lock.json @@ -54,7 +54,7 @@ "yup": "^0.32.11" }, "devDependencies": { - "@babel/core": "7.20.5", + "@babel/core": "7.23.3", "@babel/plugin-proposal-class-properties": "7.18.6", "@babel/preset-env": "7.23.2", "@babel/preset-react": "7.18.6", @@ -450,26 +450,26 @@ } }, "node_modules/@babel/core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.5.tgz", - "integrity": "sha512-UdOWmk4pNWTm/4DlPUl/Pt4Gz4rcEMb7CY0Y3eJl5Yz1vI8ZJGmHWaVE55LoxRjdpx0z259GE9U5STA9atUinQ==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.5", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-module-transforms": "^7.20.2", - "@babel/helpers": "^7.20.5", - "@babel/parser": "^7.20.5", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.5", - "@babel/types": "^7.20.5", - "convert-source-map": "^1.7.0", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.3.tgz", + "integrity": "sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.3", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.23.2", + "@babel/parser": "^7.23.3", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.3", + "@babel/types": "^7.23.3", + "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" + "json5": "^2.2.3", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -479,6 +479,12 @@ "url": "https://opencollective.com/babel" } }, + "node_modules/@babel/core/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, "node_modules/@babel/eslint-parser": { "version": "7.17.0", "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.17.0.tgz", @@ -529,12 +535,13 @@ } }, "node_modules/@babel/generator": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.5.tgz", - "integrity": "sha512-jl7JY2Ykn9S0yj4DQP82sYvPU+T3g0HFcWTqDLqiuA9tGRNIj9VfbtXGAYTTkyNEnQk1jkMGOdYka8aG/lulCA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.3.tgz", + "integrity": "sha512-keeZWAV4LU3tW0qRi19HRpabC/ilM0HRBBzf9/k8FFiG4KVpiv0FIy4hHfLfFQZNhziCTPTmd59zoyv6DNISzg==", "dependencies": { - "@babel/types": "^7.20.5", + "@babel/types": "^7.23.3", "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" }, "engines": { @@ -674,12 +681,12 @@ } }, "node_modules/@babel/helper-function-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", - "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "dependencies": { - "@babel/template": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" @@ -720,9 +727,9 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz", - "integrity": "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", @@ -868,14 +875,14 @@ } }, "node_modules/@babel/helpers": { - "version": "7.20.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.6.tgz", - "integrity": "sha512-Pf/OjgfgFRW5bApskEz5pvidpim7tEDPlFtKcNRXWmfHGn9IEI2W2flqRQXTFb7gIPTyK++N6rVHuwKut4XK6w==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.2.tgz", + "integrity": "sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==", "dev": true, "dependencies": { - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.5", - "@babel/types": "^7.20.5" + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.2", + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" @@ -895,9 +902,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", - "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.3.tgz", + "integrity": "sha512-uVsWNvlVsIninV2prNz/3lHCb+5CJ+e+IUBfbjToAHODtfGYLfCFuY4AU7TskI+dAKk+njsPiBjq1gKTvZOBaw==", "bin": { "parser": "bin/babel-parser.js" }, @@ -2478,18 +2485,18 @@ } }, "node_modules/@babel/traverse": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.5.tgz", - "integrity": "sha512-WM5ZNN3JITQIq9tFZaw1ojLU3WgWdtkxnhM1AegMS+PvHjkM5IXjmYEGY7yukz5XS4sJyEf2VzWjI8uAavhxBQ==", - "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.5", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.20.5", - "@babel/types": "^7.20.5", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.3.tgz", + "integrity": "sha512-+K0yF1/9yR0oHdE0StHuEj3uTPzwwbrLGfNOndVJVV2TqA5+j3oljJUb4nmB954FLGjNem976+B+eDuLIjesiQ==", + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.3", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.3", + "@babel/types": "^7.23.3", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -2498,9 +2505,9 @@ } }, "node_modules/@babel/types": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", - "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.3.tgz", + "integrity": "sha512-OZnvoH2l8PK5eUvEcUyCt/sXgr/h+UWpVuBbOljwcrAgUl6lpchoQ++PHGyQy1AtYnVA6CEq3y5xeEI10brpXw==", "dependencies": { "@babel/helper-string-parser": "^7.22.5", "@babel/helper-validator-identifier": "^7.22.20", @@ -29295,26 +29302,34 @@ "dev": true }, "@babel/core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.5.tgz", - "integrity": "sha512-UdOWmk4pNWTm/4DlPUl/Pt4Gz4rcEMb7CY0Y3eJl5Yz1vI8ZJGmHWaVE55LoxRjdpx0z259GE9U5STA9atUinQ==", - "dev": true, - "requires": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.5", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-module-transforms": "^7.20.2", - "@babel/helpers": "^7.20.5", - "@babel/parser": "^7.20.5", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.5", - "@babel/types": "^7.20.5", - "convert-source-map": "^1.7.0", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.3.tgz", + "integrity": "sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.3", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.23.2", + "@babel/parser": "^7.23.3", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.3", + "@babel/types": "^7.23.3", + "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "dependencies": { + "convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + } } }, "@babel/eslint-parser": { @@ -29353,12 +29368,13 @@ } }, "@babel/generator": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.5.tgz", - "integrity": "sha512-jl7JY2Ykn9S0yj4DQP82sYvPU+T3g0HFcWTqDLqiuA9tGRNIj9VfbtXGAYTTkyNEnQk1jkMGOdYka8aG/lulCA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.3.tgz", + "integrity": "sha512-keeZWAV4LU3tW0qRi19HRpabC/ilM0HRBBzf9/k8FFiG4KVpiv0FIy4hHfLfFQZNhziCTPTmd59zoyv6DNISzg==", "requires": { - "@babel/types": "^7.20.5", + "@babel/types": "^7.23.3", "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" }, "dependencies": { @@ -29469,12 +29485,12 @@ "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==" }, "@babel/helper-function-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", - "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "requires": { - "@babel/template": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" } }, "@babel/helper-hoist-variables": { @@ -29503,9 +29519,9 @@ } }, "@babel/helper-module-transforms": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz", - "integrity": "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.22.20", @@ -29606,14 +29622,14 @@ } }, "@babel/helpers": { - "version": "7.20.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.6.tgz", - "integrity": "sha512-Pf/OjgfgFRW5bApskEz5pvidpim7tEDPlFtKcNRXWmfHGn9IEI2W2flqRQXTFb7gIPTyK++N6rVHuwKut4XK6w==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.2.tgz", + "integrity": "sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==", "dev": true, "requires": { - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.5", - "@babel/types": "^7.20.5" + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.2", + "@babel/types": "^7.23.0" } }, "@babel/highlight": { @@ -29627,9 +29643,9 @@ } }, "@babel/parser": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", - "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==" + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.3.tgz", + "integrity": "sha512-uVsWNvlVsIninV2prNz/3lHCb+5CJ+e+IUBfbjToAHODtfGYLfCFuY4AU7TskI+dAKk+njsPiBjq1gKTvZOBaw==" }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { "version": "7.22.15", @@ -30685,26 +30701,26 @@ } }, "@babel/traverse": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.5.tgz", - "integrity": "sha512-WM5ZNN3JITQIq9tFZaw1ojLU3WgWdtkxnhM1AegMS+PvHjkM5IXjmYEGY7yukz5XS4sJyEf2VzWjI8uAavhxBQ==", - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.5", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.20.5", - "@babel/types": "^7.20.5", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.3.tgz", + "integrity": "sha512-+K0yF1/9yR0oHdE0StHuEj3uTPzwwbrLGfNOndVJVV2TqA5+j3oljJUb4nmB954FLGjNem976+B+eDuLIjesiQ==", + "requires": { + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.3", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.3", + "@babel/types": "^7.23.3", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", - "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.3.tgz", + "integrity": "sha512-OZnvoH2l8PK5eUvEcUyCt/sXgr/h+UWpVuBbOljwcrAgUl6lpchoQ++PHGyQy1AtYnVA6CEq3y5xeEI10brpXw==", "requires": { "@babel/helper-string-parser": "^7.22.5", "@babel/helper-validator-identifier": "^7.22.20", diff --git a/package.json b/package.json index 9f9b9f6f5..9f6c1ac11 100644 --- a/package.json +++ b/package.json @@ -102,7 +102,7 @@ "yup": "^0.32.11" }, "devDependencies": { - "@babel/core": "7.20.5", + "@babel/core": "7.23.3", "@babel/plugin-proposal-class-properties": "7.18.6", "@babel/preset-env": "7.23.2", "@babel/preset-react": "7.18.6", From 34f833128f224b992a9404a3fc0ae3dc159ca33f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 16 Nov 2023 15:31:22 +0200 Subject: [PATCH 079/243] build(deps): bump @babel/traverse from 7.20.5 to 7.23.3 (#853) Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.20.5 to 7.23.3. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.23.3/packages/babel-traverse) --- updated-dependencies: - dependency-name: "@babel/traverse" dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> From 4eba3d4ea35986df58fdad6f3deca20933e7546b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 16 Nov 2023 15:32:18 +0200 Subject: [PATCH 080/243] build(deps-dev): bump axios from 1.1.3 to 1.6.1 (#854) Bumps [axios](https://github.com/axios/axios) from 1.1.3 to 1.6.1. - [Release notes](https://github.com/axios/axios/releases) - [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md) - [Commits](https://github.com/axios/axios/compare/v1.1.3...v1.6.1) --- updated-dependencies: - dependency-name: axios dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 241cc0508..5bde88a0e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8539,9 +8539,9 @@ } }, "node_modules/axios": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.1.3.tgz", - "integrity": "sha512-00tXVRwKx/FZr/IDVFt4C+f9FYairX517WoGCL6dpOntqLkZofjhu43F/Xl44UOpqa+9sLFDrG/XAnFsUYgkDA==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.1.tgz", + "integrity": "sha512-vfBmhDpKafglh0EldBEbVuoe7DyAavGSLWhuSm5ZSEKQnHhBf0xAAwybbNH1IkrJNGnS/VG4I5yxig1pCEXE4g==", "dev": true, "dependencies": { "follow-redirects": "^1.15.0", @@ -35530,9 +35530,9 @@ "dev": true }, "axios": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.1.3.tgz", - "integrity": "sha512-00tXVRwKx/FZr/IDVFt4C+f9FYairX517WoGCL6dpOntqLkZofjhu43F/Xl44UOpqa+9sLFDrG/XAnFsUYgkDA==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.1.tgz", + "integrity": "sha512-vfBmhDpKafglh0EldBEbVuoe7DyAavGSLWhuSm5ZSEKQnHhBf0xAAwybbNH1IkrJNGnS/VG4I5yxig1pCEXE4g==", "dev": true, "requires": { "follow-redirects": "^1.15.0", From 6dbbc1feda97cf94dd62b9e79601a2376b954a35 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 16 Nov 2023 15:35:16 +0200 Subject: [PATCH 081/243] build(deps): bump i18next-http-backend from 1.4.5 to 2.4.1 (#856) Bumps [i18next-http-backend](https://github.com/i18next/i18next-http-backend) from 1.4.5 to 2.4.1. - [Changelog](https://github.com/i18next/i18next-http-backend/blob/master/CHANGELOG.md) - [Commits](https://github.com/i18next/i18next-http-backend/compare/v1.4.5...v2.4.1) --- updated-dependencies: - dependency-name: i18next-http-backend dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 101 ++++++++++++++++++++++++++++++++++++++-------- package.json | 2 +- 2 files changed, 85 insertions(+), 18 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5bde88a0e..b4d1e208a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,7 +27,7 @@ "facepaint": "^1.2.1", "i18next": "^23.5.1", "i18next-browser-languagedetector": "^6.1.5", - "i18next-http-backend": "^1.4.0", + "i18next-http-backend": "^2.4.1", "i18next-parser": "^6.3.0", "lodash.throttle": "4.1.1", "mac-scrollbar": "^0.10.3", @@ -11003,11 +11003,49 @@ "dev": true }, "node_modules/cross-fetch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", + "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==", + "dependencies": { + "node-fetch": "^2.6.12" + } + }, + "node_modules/cross-fetch/node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/cross-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/cross-fetch/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/cross-fetch/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dependencies": { - "node-fetch": "2.6.7" + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" } }, "node_modules/cross-spawn": { @@ -16056,11 +16094,11 @@ } }, "node_modules/i18next-http-backend": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/i18next-http-backend/-/i18next-http-backend-1.4.5.tgz", - "integrity": "sha512-tLuHWuLWl6CmS07o+UB6EcQCaUjrZ1yhdseIN7sfq0u7phsMePJ8pqlGhIAdRDPF/q7ooyo5MID5DRFBCH+x5w==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/i18next-http-backend/-/i18next-http-backend-2.4.1.tgz", + "integrity": "sha512-CZHzFGDvF8zN7ya1W2lHbgLj2ejPUvPD836+vA3eNXc9eKGUM3MSF6SA2TKBXKBZ2cNG3nxzycCXeM6n/46KWQ==", "dependencies": { - "cross-fetch": "3.1.5" + "cross-fetch": "4.0.0" } }, "node_modules/i18next-parser": { @@ -37403,11 +37441,40 @@ "dev": true }, "cross-fetch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", + "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==", "requires": { - "node-fetch": "2.6.7" + "node-fetch": "^2.6.12" + }, + "dependencies": { + "node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "requires": { + "whatwg-url": "^5.0.0" + } + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + } } }, "cross-spawn": { @@ -41242,11 +41309,11 @@ } }, "i18next-http-backend": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/i18next-http-backend/-/i18next-http-backend-1.4.5.tgz", - "integrity": "sha512-tLuHWuLWl6CmS07o+UB6EcQCaUjrZ1yhdseIN7sfq0u7phsMePJ8pqlGhIAdRDPF/q7ooyo5MID5DRFBCH+x5w==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/i18next-http-backend/-/i18next-http-backend-2.4.1.tgz", + "integrity": "sha512-CZHzFGDvF8zN7ya1W2lHbgLj2ejPUvPD836+vA3eNXc9eKGUM3MSF6SA2TKBXKBZ2cNG3nxzycCXeM6n/46KWQ==", "requires": { - "cross-fetch": "3.1.5" + "cross-fetch": "4.0.0" } }, "i18next-parser": { diff --git a/package.json b/package.json index 9f6c1ac11..105f6e5ee 100644 --- a/package.json +++ b/package.json @@ -75,7 +75,7 @@ "facepaint": "^1.2.1", "i18next": "^23.5.1", "i18next-browser-languagedetector": "^6.1.5", - "i18next-http-backend": "^1.4.0", + "i18next-http-backend": "^2.4.1", "i18next-parser": "^6.3.0", "lodash.throttle": "4.1.1", "mac-scrollbar": "^0.10.3", From 5261e3773985a61811c17c53b0aa3a6070aad2d1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 16 Nov 2023 15:40:50 +0200 Subject: [PATCH 082/243] build(deps-dev): bump chromedriver from 107.0.3 to 119.0.1 (#851) Bumps [chromedriver](https://github.com/giggio/node-chromedriver) from 107.0.3 to 119.0.1. - [Commits](https://github.com/giggio/node-chromedriver/compare/107.0.3...119.0.1) --- updated-dependencies: - dependency-name: chromedriver dependency-type: direct:development ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 56 +++++++++++++++++++++++------------------------ package.json | 2 +- 2 files changed, 29 insertions(+), 29 deletions(-) diff --git a/package-lock.json b/package-lock.json index b4d1e208a..9b2d434c4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -79,7 +79,7 @@ "babel-eslint": "^10.1.0", "babel-loader": "9.1.0", "babel-preset-react-app": "^10.0.0", - "chromedriver": "^107.0.3", + "chromedriver": "^119.0.1", "concurrently": "7.6.0", "copy-webpack-plugin": "^11.0.0", "css-loader": "6.8.1", @@ -5608,9 +5608,9 @@ } }, "node_modules/@testim/chrome-version": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@testim/chrome-version/-/chrome-version-1.1.3.tgz", - "integrity": "sha512-g697J3WxV/Zytemz8aTuKjTGYtta9+02kva3C1xc7KXB8GdbfE1akGJIsZLyY/FSh2QrnE+fiB7vmWU3XNcb6A==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@testim/chrome-version/-/chrome-version-1.1.4.tgz", + "integrity": "sha512-kIhULpw9TrGYnHp/8VfdcneIcxKnLixmADtukQRtJUmsVlMg0niMkwV0xZmi8hqa57xqilIHjWFA0GKvEjVU5g==", "dev": true }, "node_modules/@testing-library/dom": { @@ -10140,25 +10140,25 @@ } }, "node_modules/chromedriver": { - "version": "107.0.3", - "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-107.0.3.tgz", - "integrity": "sha512-jmzpZgctCRnhYAn0l/NIjP4vYN3L8GFVbterTrRr2Ly3W5rFMb9H8EKGuM5JCViPKSit8FbE718kZTEt3Yvffg==", + "version": "119.0.1", + "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-119.0.1.tgz", + "integrity": "sha512-lpCFFLaXPpvElTaUOWKdP74pFb/sJhWtWqMjn7Ju1YriWn8dT5JBk84BGXMPvZQs70WfCYWecxdMmwfIu1Mupg==", "dev": true, "hasInstallScript": true, "dependencies": { - "@testim/chrome-version": "^1.1.3", - "axios": "^1.1.3", - "compare-versions": "^5.0.1", + "@testim/chrome-version": "^1.1.4", + "axios": "^1.6.0", + "compare-versions": "^6.1.0", "extract-zip": "^2.0.1", "https-proxy-agent": "^5.0.1", "proxy-from-env": "^1.1.0", - "tcp-port-used": "^1.0.1" + "tcp-port-used": "^1.0.2" }, "bin": { "chromedriver": "bin/chromedriver" }, "engines": { - "node": ">=14" + "node": ">=18" } }, "node_modules/ci-info": { @@ -10521,9 +10521,9 @@ "dev": true }, "node_modules/compare-versions": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-5.0.1.tgz", - "integrity": "sha512-v8Au3l0b+Nwkp4G142JcgJFh1/TUhdxut7wzD1Nq1dyp5oa3tXaqb03EXOAB6jS4gMlalkjAUPZBMiAfKUixHQ==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-6.1.0.tgz", + "integrity": "sha512-LNZQXhqUvqUTotpZ00qLSaify3b4VFD588aRr8MKFw4CMUr98ytzCW5wDH5qx/DEY5kCDXcbcRuCqL0szEf2tg==", "dev": true }, "node_modules/component-emitter": { @@ -33148,9 +33148,9 @@ } }, "@testim/chrome-version": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@testim/chrome-version/-/chrome-version-1.1.3.tgz", - "integrity": "sha512-g697J3WxV/Zytemz8aTuKjTGYtta9+02kva3C1xc7KXB8GdbfE1akGJIsZLyY/FSh2QrnE+fiB7vmWU3XNcb6A==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@testim/chrome-version/-/chrome-version-1.1.4.tgz", + "integrity": "sha512-kIhULpw9TrGYnHp/8VfdcneIcxKnLixmADtukQRtJUmsVlMg0niMkwV0xZmi8hqa57xqilIHjWFA0GKvEjVU5g==", "dev": true }, "@testing-library/dom": { @@ -36766,18 +36766,18 @@ "dev": true }, "chromedriver": { - "version": "107.0.3", - "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-107.0.3.tgz", - "integrity": "sha512-jmzpZgctCRnhYAn0l/NIjP4vYN3L8GFVbterTrRr2Ly3W5rFMb9H8EKGuM5JCViPKSit8FbE718kZTEt3Yvffg==", + "version": "119.0.1", + "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-119.0.1.tgz", + "integrity": "sha512-lpCFFLaXPpvElTaUOWKdP74pFb/sJhWtWqMjn7Ju1YriWn8dT5JBk84BGXMPvZQs70WfCYWecxdMmwfIu1Mupg==", "dev": true, "requires": { - "@testim/chrome-version": "^1.1.3", - "axios": "^1.1.3", - "compare-versions": "^5.0.1", + "@testim/chrome-version": "^1.1.4", + "axios": "^1.6.0", + "compare-versions": "^6.1.0", "extract-zip": "^2.0.1", "https-proxy-agent": "^5.0.1", "proxy-from-env": "^1.1.0", - "tcp-port-used": "^1.0.1" + "tcp-port-used": "^1.0.2" } }, "ci-info": { @@ -37075,9 +37075,9 @@ "dev": true }, "compare-versions": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-5.0.1.tgz", - "integrity": "sha512-v8Au3l0b+Nwkp4G142JcgJFh1/TUhdxut7wzD1Nq1dyp5oa3tXaqb03EXOAB6jS4gMlalkjAUPZBMiAfKUixHQ==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-6.1.0.tgz", + "integrity": "sha512-LNZQXhqUvqUTotpZ00qLSaify3b4VFD588aRr8MKFw4CMUr98ytzCW5wDH5qx/DEY5kCDXcbcRuCqL0szEf2tg==", "dev": true }, "component-emitter": { diff --git a/package.json b/package.json index 105f6e5ee..0058aa301 100644 --- a/package.json +++ b/package.json @@ -127,7 +127,7 @@ "babel-eslint": "^10.1.0", "babel-loader": "9.1.0", "babel-preset-react-app": "^10.0.0", - "chromedriver": "^107.0.3", + "chromedriver": "^119.0.1", "concurrently": "7.6.0", "copy-webpack-plugin": "^11.0.0", "css-loader": "6.8.1", From 977694f3023c2f8b5e51e5e7c57fe2a07367874d Mon Sep 17 00:00:00 2001 From: Vynnyk Dmytro Date: Wed, 22 Nov 2023 16:30:10 +0200 Subject: [PATCH 083/243] Release 1.7.0 version (#864) --- package.json | 2 +- .../Casper Wallet/Casper Wallet.xcodeproj/project.pbxproj | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 0058aa301..39e7f24c1 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "Casper Wallet", "description": "Securely manage your CSPR tokens and interact with dapps with the self-custody wallet for the Casper blockchain.", - "version": "1.6.3", + "version": "1.7.0", "author": "MAKE LLC", "scripts": { "devtools:redux": "redux-devtools --hostname=localhost", diff --git a/xcode-project/Casper Wallet/Casper Wallet.xcodeproj/project.pbxproj b/xcode-project/Casper Wallet/Casper Wallet.xcodeproj/project.pbxproj index ba296e19e..77f8baf9d 100644 --- a/xcode-project/Casper Wallet/Casper Wallet.xcodeproj/project.pbxproj +++ b/xcode-project/Casper Wallet/Casper Wallet.xcodeproj/project.pbxproj @@ -564,7 +564,7 @@ CODE_SIGN_ENTITLEMENTS = "Casper Wallet/Casper Wallet.entitlements"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 35; + CURRENT_PROJECT_VERSION = 37; ENABLE_HARDENED_RUNTIME = YES; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "Casper Wallet/Info.plist"; @@ -578,7 +578,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 10.14; - MARKETING_VERSION = 1.6.3; + MARKETING_VERSION = 1.7.0; OTHER_LDFLAGS = ( "-framework", SafariServices, @@ -601,7 +601,7 @@ CODE_SIGN_ENTITLEMENTS = "Casper Wallet/Casper Wallet.entitlements"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 35; + CURRENT_PROJECT_VERSION = 37; ENABLE_HARDENED_RUNTIME = YES; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "Casper Wallet/Info.plist"; @@ -615,7 +615,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 10.14; - MARKETING_VERSION = 1.6.3; + MARKETING_VERSION = 1.7.0; OTHER_LDFLAGS = ( "-framework", SafariServices, From 1f71117d5be850f39f4e504542c2b2bfdf7cdc7d Mon Sep 17 00:00:00 2001 From: Ostap Piatkovskyi <44294945+ost-ptk@users.noreply.github.com> Date: Sat, 25 Nov 2023 13:47:19 +0200 Subject: [PATCH 084/243] feature: add e2e test with playwright (#849) * added new e2e framework and CI config * change test dir * removed test example * added onboarding tests and changed CI script * removed CI scripts for selenium tests * fixed CI script and removed unused function * removed unused import * CI config improvements * added onboarding tests for firefox * increase workers for CI tests * added docker container for CI tests * fixing flaky test and removed docker container form CI * added headless mode for tests * updated PR template and fixed whitespaces in the CI config file * clean up playwright config * added a few e2e tests for popup * added a few e2e tests for popup * added CI config for popup tests * updated CI config for popup tests * skipped all tests except import account * fixing import account test * fixing import account test * fixing import account test * fixing import account test * fixing import account test * fixing import account test * fixing import account test * fixing import account test * fixing tests on CI * use config context * testing * use config context * testing * testing * testing * added docker container to CI config * testing * testing * testing * testing * testing * testing * testing * testing * testing * testing * testing * testing * testing * testing * enabled connect account test * enabled all popup tests * removed Firefox test from CI * cleanup * added container to CI config for onboarding tests * cleanup * testing * added signature tests for popup * added a few new tests * fix import issue * fixed issues with truncated keys * fixed test issue * updated playwright config * removed old e2e config and unused packages * added a new test and minor fixes * minor fix --------- Co-authored-by: ost-ptk Co-authored-by: Vynnyk Dmytro --- .github/pull_request_template.md | 2 +- .github/workflows/e2e-onboarding-tests.yml | 65 +- .github/workflows/e2e-popup-tests.yml | 65 +- .gitignore | 4 + README.md | 13 +- constants.js | 14 +- docker-compose.arm.yml | 23 - docker-compose.yml | 23 - {e2e => e2e-tests}/account_secret_key.pem | 6 +- e2e-tests/constants.ts | 47 + e2e-tests/fixtures.ts | 271 ++++ .../confirm-secret-phrase-flow.spec.ts | 65 + .../recover-secret-phrase-flow.spec.ts | 36 + e2e-tests/popup/common/wallet.spec.ts | 81 ++ .../connect-account/connect-account.spec.ts | 108 ++ .../create-account/create-account.spec.ts | 41 + .../disconnect-account.spec.ts | 71 + .../import-account-with-file.spec.ts | 63 + .../rename-account/rename-account.spec.ts | 36 + .../signature-request-scenarios.spec.ts | 217 +++ e2e/__fixtures.ts | 4 - e2e/app-routes.ts | 4 - e2e/constants.ts | 26 - e2e/crx3-public.pem | 4 - e2e/crx3.pem | 9 - ...tton-to-open-extension-window-and-focus.ts | 31 - e2e/tests/common/connect-account.ts | 57 - e2e/tests/common/create-account.ts | 16 - e2e/tests/common/create-password.ts | 12 - e2e/tests/common/index.ts | 7 - e2e/tests/common/lock-vault.ts | 7 - e2e/tests/common/open-connected-site-page.ts | 12 - e2e/tests/common/unlock-vault.ts | 8 - .../confirm-secret-phrase-flow.test.ts | 213 --- .../recover-secret-phrase-flow.test.ts | 64 - .../connect-account-flow.test.ts | 191 --- .../disconnect-account-flow.test.ts | 90 -- .../import-account-with-file-flow.test.ts | 113 -- .../signature-request-scenarios.test.ts | 154 --- e2e/tsconfig.json | 14 - e2e/utils/helpers.ts | 14 - e2e/webdriver/WebElementWithAPI.ts | 41 - e2e/webdriver/chrome.ts | 99 -- e2e/webdriver/constants.ts | 10 - e2e/webdriver/driver.ts | 446 ------ e2e/webdriver/firefox.ts | 81 -- e2e/webdriver/index.ts | 58 - e2e/webdriver/types.ts | 55 - package-lock.json | 1231 ++--------------- package.json | 20 +- playwright.config.ts | 44 + .../close-window-by-reload-extension.ts | 9 +- src/background/create-open-window.ts | 10 +- src/fixtures/initial-state-for-popup-tests.ts | 117 +- .../header/header-connection-status.tsx | 1 + src/libs/ui/components/modal/modal.tsx | 9 +- src/libs/ui/components/popover/popover.tsx | 1 + webpack.config.js | 3 +- 58 files changed, 1372 insertions(+), 3164 deletions(-) delete mode 100644 docker-compose.arm.yml delete mode 100644 docker-compose.yml rename {e2e => e2e-tests}/account_secret_key.pem (97%) create mode 100644 e2e-tests/constants.ts create mode 100644 e2e-tests/fixtures.ts create mode 100644 e2e-tests/onboarding-flow/confirm-secret-phrase-flow.spec.ts create mode 100644 e2e-tests/onboarding-flow/recover-secret-phrase-flow.spec.ts create mode 100644 e2e-tests/popup/common/wallet.spec.ts create mode 100644 e2e-tests/popup/connect-account/connect-account.spec.ts create mode 100644 e2e-tests/popup/create-account/create-account.spec.ts create mode 100644 e2e-tests/popup/disconnect-account/disconnect-account.spec.ts create mode 100644 e2e-tests/popup/import-account-with-file/import-account-with-file.spec.ts create mode 100644 e2e-tests/popup/rename-account/rename-account.spec.ts create mode 100644 e2e-tests/popup/signature-request-scenarios/signature-request-scenarios.spec.ts delete mode 100644 e2e/__fixtures.ts delete mode 100644 e2e/app-routes.ts delete mode 100644 e2e/constants.ts delete mode 100644 e2e/crx3-public.pem delete mode 100644 e2e/crx3.pem delete mode 100644 e2e/tests/common/click-button-to-open-extension-window-and-focus.ts delete mode 100644 e2e/tests/common/connect-account.ts delete mode 100644 e2e/tests/common/create-account.ts delete mode 100644 e2e/tests/common/create-password.ts delete mode 100644 e2e/tests/common/index.ts delete mode 100644 e2e/tests/common/lock-vault.ts delete mode 100644 e2e/tests/common/open-connected-site-page.ts delete mode 100644 e2e/tests/common/unlock-vault.ts delete mode 100644 e2e/tests/onboarding-flow/confirm-secret-phrase-flow.test.ts delete mode 100644 e2e/tests/onboarding-flow/recover-secret-phrase-flow.test.ts delete mode 100644 e2e/tests/popup/connect-account/connect-account-flow.test.ts delete mode 100644 e2e/tests/popup/disconnect-account/disconnect-account-flow.test.ts delete mode 100644 e2e/tests/popup/import-account-with-file-flow/import-account-with-file-flow.test.ts delete mode 100644 e2e/tests/popup/signature-request-scenarios/signature-request-scenarios.test.ts delete mode 100644 e2e/tsconfig.json delete mode 100644 e2e/utils/helpers.ts delete mode 100644 e2e/webdriver/WebElementWithAPI.ts delete mode 100644 e2e/webdriver/chrome.ts delete mode 100644 e2e/webdriver/constants.ts delete mode 100644 e2e/webdriver/driver.ts delete mode 100644 e2e/webdriver/firefox.ts delete mode 100644 e2e/webdriver/index.ts delete mode 100644 e2e/webdriver/types.ts create mode 100644 playwright.config.ts diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 8b3ee598c..550c58db8 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -6,7 +6,7 @@ _**Make sure to fill in all the below sections.**_ ## Linked tickets -// Add a `#XXX` link to a related ticket +[WALLET-XXX](https://make-software.atlassian.net/browse/WALLET-XXX) ## Checklist diff --git a/.github/workflows/e2e-onboarding-tests.yml b/.github/workflows/e2e-onboarding-tests.yml index 798e35f0f..f81a8a7b2 100644 --- a/.github/workflows/e2e-onboarding-tests.yml +++ b/.github/workflows/e2e-onboarding-tests.yml @@ -8,51 +8,36 @@ on: jobs: e2e-onboarding-tests: + timeout-minutes: 60 runs-on: ubuntu-latest - container: - image: node:16 - - strategy: - fail-fast: false - matrix: -# Add Firefox after fixing CI errors - browser: [ 'chrome' ] - node-version: [ 16.x ] - - services: - selenium: - image: selenium/standalone-${{ matrix.browser }} + image: mcr.microsoft.com/playwright:v1.39.0-jammy steps: - uses: actions/checkout@v3 - - - name: Cache npm dependencies - id: cache-npm - uses: actions/cache@v3 - env: - cache-name: cache-node-modules - with: - # npm cache files are stored in `~/.npm` on Linux/macOS - path: ~/.npm - key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} - restore-keys: | - ${{ runner.os }}-build-${{ env.cache-name }}- - ${{ runner.os }}-build- - ${{ runner.os }}- - - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3 + - uses: actions/setup-node@v3 with: - node-version: ${{ matrix.node-version }} - cache: 'npm' + node-version: 18 - name: Install dependencies - run: | - npm install - - - name: Run E2E onboarding tests on ${{ matrix.browser }} - run: npm run test:e2e:${{ matrix.browser }}:headless:onboarding - env: - SELENIUM_HOST: selenium - SELENIUM_PORT: 4444 + run: npm ci + + - name: Install Playwright Browsers + run: npx playwright install --with-deps + + - name: Run Chrome tests + run: npm run e2e:chrome:headless:onboarding + + - uses: actions/upload-artifact@v3 + if: failure() + with: + name: playwright-report + path: playwright-report/ + retention-days: 30 + + - uses: actions/upload-artifact@v3 + if: failure() + with: + name: test-results + path: test-results/ + retention-days: 30 \ No newline at end of file diff --git a/.github/workflows/e2e-popup-tests.yml b/.github/workflows/e2e-popup-tests.yml index 1236ad3e1..dc55998c7 100644 --- a/.github/workflows/e2e-popup-tests.yml +++ b/.github/workflows/e2e-popup-tests.yml @@ -8,59 +8,36 @@ on: jobs: e2e-popup-tests: + timeout-minutes: 60 runs-on: ubuntu-latest - container: - image: node:16 - - strategy: - fail-fast: false - matrix: -# Add Firefox after fixing CI errors - browser: [ 'chrome' ] - node-version: [ 16.x ] - - services: - selenium: - image: selenium/standalone-${{ matrix.browser }} - options: --shm-size=2gb + image: mcr.microsoft.com/playwright:v1.39.0-jammy steps: - uses: actions/checkout@v3 - - - name: Cache npm dependencies - id: cache-npm - uses: actions/cache@v3 - env: - cache-name: cache-node-modules - with: - # npm cache files are stored in `~/.npm` on Linux/macOS - path: ~/.npm - key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} - restore-keys: | - ${{ runner.os }}-build-${{ env.cache-name }}- - ${{ runner.os }}-build- - ${{ runner.os }}- - - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3 + - uses: actions/setup-node@v3 with: - node-version: ${{ matrix.node-version }} - cache: 'npm' + node-version: 18 - name: Install dependencies - run: | - npm install + run: npm ci + + - name: Install Playwright Browsers + run: npx playwright install --with-deps + + - name: Run Chrome tests + run: npm run e2e:chrome:headless:popup - - name: Run E2E popup tests on ${{ matrix.browser }} - run: npm run test:e2e:${{ matrix.browser }}:headless:popup - env: - SELENIUM_HOST: selenium - SELENIUM_PORT: 4444 + - uses: actions/upload-artifact@v3 + if: failure() + with: + name: playwright-report + path: playwright-report/ + retention-days: 30 - - name: Add screenshot - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v3 if: failure() with: - name: ${{ matrix.browser }} - path: test-artifacts/ + name: test-results + path: test-results/ + retention-days: 30 \ No newline at end of file diff --git a/.gitignore b/.gitignore index 59f151052..20c6a544c 100644 --- a/.gitignore +++ b/.gitignore @@ -30,3 +30,7 @@ secrets.*.js # packed extension chrome.crx +/test-results/ +/playwright-report/ +/blob-report/ +/playwright/.cache/ diff --git a/README.md b/README.md index 6b58aa6aa..21a77923a 100755 --- a/README.md +++ b/README.md @@ -158,13 +158,10 @@ You should install Redux DevTools browser extension and connect it to Redux DevT ## E2E tests -Write tests into `e2e/tests` folder. +Write tests into `e2e-tests` folder. -There are a few options to run tests: +To run e2e tests, you must use npm script `npm run e2e:chrome:ui:popup` or `e2e:chrome:ui:onboarding`. +Tests are run in UI mode. -1. In docker container - - Run docker and up containers. `docker compose up` or `docker-compose -f docker-compose.arm.yml up` for Apple M processors - - Use npm scripts `npm run test:e2e:{chrome/firefox}:headless:{popup/onboarding}` depends on target browser and tests - - To see what is happening inside the container, open your web browser and navigate to the URL for Chrome and for Firefox, enter the password `secret`, and run your test again -2. Locally on computer - - Use npm scripts `npm run test:e2e:chrome` or `npm run test:e2e:firefox` depends on target browser +All information +about how to run and debug tests can be found in [playwright docs](https://playwright.dev/docs/running-tests). diff --git a/constants.js b/constants.js index e53534fb8..2d786135d 100644 --- a/constants.js +++ b/constants.js @@ -1,4 +1,3 @@ -const { Browser } = require('selenium-webdriver'); const { NODE_ENV, BROWSER: browserEnvVar } = require('./utils/env'); const extensionName = 'Casper Wallet'; @@ -7,9 +6,9 @@ const buildRootDir = ['test', 'production'].includes(NODE_ENV) : 'output'; const ExtensionBuildPath = { - Chrome: `${buildRootDir}/${Browser.CHROME}`, - Firefox: `${buildRootDir}/${Browser.FIREFOX}`, - Safari: `${buildRootDir}/${Browser.SAFARI}/${extensionName}` + Chrome: `${buildRootDir}/chrome`, + Firefox: `${buildRootDir}/firefox`, + Safari: `${buildRootDir}/safari/${extensionName}` }; const ManifestPath = { @@ -18,16 +17,15 @@ const ManifestPath = { v2_Safari: 'src/manifest.v2.safari.json' }; -const isSafari = browserEnvVar && browserEnvVar === Browser.SAFARI; -const isChrome = browserEnvVar && browserEnvVar === Browser.CHROME; -const isFirefox = browserEnvVar && browserEnvVar === Browser.FIREFOX; +const isSafari = browserEnvVar && browserEnvVar === 'safari'; +const isChrome = browserEnvVar && browserEnvVar === 'chrome'; +const isFirefox = browserEnvVar && browserEnvVar === 'firefox'; module.exports = { ExtensionBuildPath, extensionName, browserEnvVar, ManifestPath, - Browser, isFirefox, isSafari, isChrome diff --git a/docker-compose.arm.yml b/docker-compose.arm.yml deleted file mode 100644 index 57b11ba75..000000000 --- a/docker-compose.arm.yml +++ /dev/null @@ -1,23 +0,0 @@ -version: '3' -services: - chrome: - image: seleniarm/standalone-chromium - container_name: seleniarm-chromium - ports: - - "4444:4444" # Selenium service - - "5900:5900" # VNC server - - "7900:7900" # VNC browser client - firefox: - image: seleniarm/standalone-firefox - container_name: seleniarm-firefox - ports: - - "4445:4444" # Selenium service - - "5901:5900" # VNC server - - "7901:7900" # VNC browser client - node: - image: node:16 - container_name: node-16 - volumes: - - ./../:/project - working_dir: /project - tty: true \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index 989beba34..000000000 --- a/docker-compose.yml +++ /dev/null @@ -1,23 +0,0 @@ -version: '3' -services: - chrome: - image: selenium/standalone-chrome - container_name: selenium-chrome - ports: - - "4444:4444" # Selenium service - - "5900:5900" # VNC server - - "7900:7900" # VNC browser client - firefox: - image: selenium/standalone-firefox - container_name: selenium-firefox - ports: - - "4445:4444" # Selenium service - - "5901:5900" # VNC server - - "7901:7900" # VNC browser client - node: - image: node:16 - container_name: node-16 - volumes: - - ./../:/project - working_dir: /project - tty: true \ No newline at end of file diff --git a/e2e/account_secret_key.pem b/e2e-tests/account_secret_key.pem similarity index 97% rename from e2e/account_secret_key.pem rename to e2e-tests/account_secret_key.pem index 4d7430a0a..4321f940d 100644 --- a/e2e/account_secret_key.pem +++ b/e2e-tests/account_secret_key.pem @@ -1,3 +1,3 @@ ------BEGIN PRIVATE KEY----- -MC4CAQAwBQYDK2VwBCIEIHRZr1HEgKVbgchuatwA7dCWDWB7QZe+bpDb5dguIyLE ------END PRIVATE KEY----- +-----BEGIN PRIVATE KEY----- +MC4CAQAwBQYDK2VwBCIEIHRZr1HEgKVbgchuatwA7dCWDWB7QZe+bpDb5dguIyLE +-----END PRIVATE KEY----- diff --git a/e2e-tests/constants.ts b/e2e-tests/constants.ts new file mode 100644 index 000000000..c9fdad402 --- /dev/null +++ b/e2e-tests/constants.ts @@ -0,0 +1,47 @@ +import path from 'path'; + +export const vaultPassword = '3hQqzYn4C7Y8rEZTVEZb'; +export const recoverSecretPhrase = + 'hold matrix spider subway bottom jazz charge fire lawn valley stay coil moral hospital dream cycle multiply december agree huge major tower devote old'; +export const secretKeyPath = path.join(__dirname, './account_secret_key.pem'); + +export const ACCOUNT_NAMES = { + defaultFirstAccountName: 'Account 1', + defaultSecondAccountName: 'Account 2', + createdAccountName: 'New account 1', + importedAccountName: 'Imported account', + renamedAccountName: 'Renamed account' +}; + +export const PLAYGROUND_URL = 'https://casper-wallet-playground.make.services/'; + +export const IMPORTED_ACCOUNT = { + accountName: ACCOUNT_NAMES.importedAccountName, + publicKey: + '0184f6d260f4ee6869ddb36affe15456de6ae045278fa2f467bb677561ce0dad55', + truncatedPublicKey: '0184...ad55' +}; + +export const DEFAULT_FIRST_ACCOUNT = { + accountName: ACCOUNT_NAMES.defaultFirstAccountName, + publicKey: + '0202b1943511b8c23b1b2b8ed7ddcedffcc7be70d9366a5005c7beab08a81b7ae633', + truncatedPublicKey: '0202...e633' +}; + +export const DEFAULT_SECOND_ACCOUNT = { + accountName: ACCOUNT_NAMES.defaultSecondAccountName, + publicKey: + '0203b2e05f074452f5e69ba512310deceaca152ebd3394eadcec26c6e68e91aa7724', + truncatedPublicKey: '0203...7724' +}; + +export const VALIDATOR = { + name: 'Validator', + truncatedPublicKey: '0106...a2ca' +}; + +export const NEW_VALIDATOR = { + name: 'New validator', + truncatedPublicKey: '017d...009e' +}; diff --git a/e2e-tests/fixtures.ts b/e2e-tests/fixtures.ts new file mode 100644 index 000000000..598dca7a4 --- /dev/null +++ b/e2e-tests/fixtures.ts @@ -0,0 +1,271 @@ +import { + test as base, + chromium, + type BrowserContext, + Page +} from '@playwright/test'; +import path from 'path'; + +import { PLAYGROUND_URL, vaultPassword } from './constants'; + +export const test = base.extend<{ + context: BrowserContext; + extensionId: string; +}>({ + // eslint-disable-next-line no-empty-pattern + context: async ({}, use) => { + // For now playwright only support chrome extensions + // https://github.com/microsoft/playwright/issues/7297 + const pathToExtension = path.join(__dirname, `../build/chrome`); + const context = await chromium.launchPersistentContext('', { + headless: false, + args: [ + `--headless=new`, + `--disable-extensions-except=${pathToExtension}`, + `--load-extension=${pathToExtension}` + ] + }); + + await use(context); + await context.close(); + }, + extensionId: async ({ context }, use) => { + let [background] = context.serviceWorkers(); + + if (!background) { + background = await context.waitForEvent('serviceworker'); + } + + const extensionId = background.url().split('/')[2]; + + await use(extensionId); + } +}); + +export const onboarding = test.extend<{ + page: Page; + createOnboardingPassword: () => Promise; + createSecretPhrase: () => Promise; + copySecretPhrase: () => Promise; + confirmSecretPhraseSuccess: (phrase: string[]) => Promise; + confirmSecretPhraseFailure: (phrase: string[]) => Promise; +}>({ + page: async ({ extensionId, page }, use) => { + await page.goto(`chrome-extension://${extensionId}/onboarding.html`); + await use(page); + }, + createOnboardingPassword: async ({ page }, use) => { + const createOnboardingPassword = async () => { + await onboardingExpect( + page.getByRole('heading', { + name: 'Ready to create your new wallet?' + }) + ).toBeVisible(); + + await page.getByRole('button', { name: 'Get started' }).click(); + + await onboardingExpect(page).toHaveURL(/.*create-vault-password/); + + await page + .getByPlaceholder('Password', { exact: true }) + .fill(vaultPassword); + await page + .getByPlaceholder('Confirm password', { exact: true }) + .fill(vaultPassword); + await page.getByTestId('terms-checkbox').click(); + await page.getByRole('button', { name: 'Create password' }).click(); + }; + + await use(createOnboardingPassword); + }, + createSecretPhrase: async ({ page }, use) => { + const createSecretPhrase = async () => { + await onboardingExpect( + page.getByText('Create secret recovery phrase') + ).toBeVisible(); + + await page + .getByRole('button', { name: 'Create my secret recovery phrase' }) + .click(); + + await onboardingExpect( + page.getByText( + 'Before we generate your secret recovery phrase, please remember' + ) + ).toBeVisible(); + + await page + .getByText( + 'I understand that I am solely responsible for storing and protecting my secret recovery phrase. Access to my funds depend on it.' + ) + .click(); + + await page.getByRole('button', { name: 'Next' }).click(); + }; + + await use(createSecretPhrase); + }, + copySecretPhrase: async ({ page }, use) => { + const copySecretPhrase = async () => { + await onboardingExpect( + page.getByText('Write down your secret recovery phrase') + ).toBeVisible(); + + await page.getByText('Copy secret recovery phrase').click(); + + const copiedPhrase = await page.evaluate(() => + navigator.clipboard.readText() + ); + const phrase = copiedPhrase.split(' '); + + onboardingExpect(phrase.length).toEqual(24); + + await page + .getByText( + 'I confirm I have written down and securely stored my secret recovery phrase' + ) + .click(); + + await page.getByRole('button', { name: 'Next' }).click(); + + return phrase; + }; + + await use(copySecretPhrase); + }, + confirmSecretPhraseSuccess: async ({ page }, use) => { + const confirmSecretPhraseSuccess = async (phrase: string[]) => { + await onboardingExpect( + page.getByText('Confirm your secret recovery phrase') + ).toBeVisible(); + onboardingExpect( + page.getByRole('button', { name: 'Confirm' }).isDisabled() + ); + + const wordPicker = page.getByTestId('word-picker'); + const visibleWords = ( + await page.getByTestId('word-list').innerText() + ).split('\n'); + + const hiddenWords = phrase.filter( + word => !visibleWords.includes(word) && isNaN(Number(word)) + ); + + for (let i = 0; i < phrase.length; i++) { + const word = phrase[i]; + + if (hiddenWords.includes(word)) { + await wordPicker.getByText(word, { exact: true }).click(); + } + } + + onboardingExpect( + page.getByRole('button', { name: 'Confirm' }).isEnabled() + ); + + await page.getByRole('button', { name: 'Confirm' }).click(); + }; + + await use(confirmSecretPhraseSuccess); + }, + confirmSecretPhraseFailure: async ({ page }, use) => { + const confirmSecretPhraseFailure = async (phrase: string[]) => { + await onboardingExpect( + page.getByText('Confirm your secret recovery phrase') + ).toBeVisible(); + onboardingExpect( + page.getByRole('button', { name: 'Confirm' }).isDisabled() + ); + + const wordPicker = page.getByTestId('word-picker'); + const pickerWords = (await wordPicker.innerText()).split('\n'); + + for (let i = phrase.length; i > 0; i--) { + const word = phrase[i]; + + if (pickerWords.includes(word)) { + await wordPicker.getByText(word, { exact: true }).click(); + } + } + + onboardingExpect( + page.getByRole('button', { name: 'Confirm' }).isEnabled() + ); + + await page.getByRole('button', { name: 'Confirm' }).click(); + }; + + await use(confirmSecretPhraseFailure); + } +}); + +export const onboardingExpect = onboarding.expect; + +export const popup = test.extend<{ + popupPage: Page; + unlockVault: (popupPage?: Page) => Promise; + lockVault: () => Promise; + createAccount: (newAccountName: string) => Promise; + connectAccounts: () => Promise; +}>({ + popupPage: async ({ extensionId, page }, use) => { + await page.goto(`chrome-extension://${extensionId}/popup.html`); + await use(page); + }, + unlockVault: async ({ page }, use) => { + const unlockVault = async (popupPage?: Page) => { + const currentPage = popupPage || page; + + await currentPage + .getByPlaceholder('Password', { exact: true }) + .fill(vaultPassword); + await currentPage.getByRole('button', { name: 'Unlock wallet' }).click(); + }; + + await use(unlockVault); + }, + lockVault: async ({ page }, use) => { + const lockVault = async () => { + await page.getByTestId('menu-open-icon').click(); + await page.getByText('Lock wallet').click(); + }; + + await use(lockVault); + }, + createAccount: async ({ page }, use) => { + const createAccount = async (newAccountName: string) => { + await page.getByTestId('menu-open-icon').click(); + await page.getByText('Create account').click(); + + await page + .getByPlaceholder('Account name', { exact: true }) + .fill(newAccountName); + await page.getByRole('button', { name: 'Create account' }).click(); + }; + + await use(createAccount); + }, + connectAccounts: async ({ page, unlockVault, context }, use) => { + const connectAccounts = async () => { + await page.goto(PLAYGROUND_URL); + + const [connectAccountPage] = await Promise.all([ + context.waitForEvent('page'), + page.getByRole('button', { name: 'Connect', exact: true }).click() + ]); + + await unlockVault(connectAccountPage); + + await connectAccountPage.getByText('select all', { exact: true }).click(); + + await connectAccountPage.getByRole('button', { name: 'Next' }).click(); + await connectAccountPage + .getByRole('button', { name: 'Connect to 2 accounts' }) + .click(); + }; + + await use(connectAccounts); + } +}); + +export const popupExpect = popup.expect; diff --git a/e2e-tests/onboarding-flow/confirm-secret-phrase-flow.spec.ts b/e2e-tests/onboarding-flow/confirm-secret-phrase-flow.spec.ts new file mode 100644 index 000000000..44be77eb4 --- /dev/null +++ b/e2e-tests/onboarding-flow/confirm-secret-phrase-flow.spec.ts @@ -0,0 +1,65 @@ +import { onboardingExpect, onboarding } from '../fixtures'; +import { DEFAULT_FIRST_ACCOUNT } from '../constants'; + +onboarding.describe('Onboarding UI: confirm secret phrase flow', () => { + onboarding( + 'should create a new vault when the user enters the correct secret phrase', + async ({ + page, + createOnboardingPassword, + createSecretPhrase, + copySecretPhrase, + confirmSecretPhraseSuccess, + extensionId + }) => { + await createOnboardingPassword(); + await createSecretPhrase(); + + const phrase = await copySecretPhrase(); + + await confirmSecretPhraseSuccess(phrase); + + await onboardingExpect(page).toHaveURL(/.*confirm-secret-phrase-success/); + + await page.getByRole('button', { name: 'Done' }).click(); + + await onboardingExpect(page.getByText('Got it')).toBeVisible(); + + await page.goto(`chrome-extension://${extensionId}/popup.html`); + + await onboardingExpect( + page.getByText(DEFAULT_FIRST_ACCOUNT.accountName) + ).toBeVisible(); + } + ); + + onboarding( + 'should NOT create a vault when the user entered the wrong secret phrase', + async ({ + page, + createOnboardingPassword, + createSecretPhrase, + copySecretPhrase, + confirmSecretPhraseFailure + }) => { + await createOnboardingPassword(); + await createSecretPhrase(); + + const phrase = await copySecretPhrase(); + + await confirmSecretPhraseFailure(phrase); + + await onboardingExpect(page).toHaveURL(/.*error/); + + await page + .getByRole('button', { + name: 'Generate a new secret recovery phrase' + }) + .click(); + + await onboardingExpect(page).toHaveURL( + /.*create-secret-phrase-confirmation/ + ); + } + ); +}); diff --git a/e2e-tests/onboarding-flow/recover-secret-phrase-flow.spec.ts b/e2e-tests/onboarding-flow/recover-secret-phrase-flow.spec.ts new file mode 100644 index 000000000..568d680b7 --- /dev/null +++ b/e2e-tests/onboarding-flow/recover-secret-phrase-flow.spec.ts @@ -0,0 +1,36 @@ +import { onboardingExpect, onboarding } from '../fixtures'; +import { DEFAULT_FIRST_ACCOUNT, recoverSecretPhrase } from '../constants'; + +onboarding.describe('Onboarding UI: recover secret phrase flow', () => { + onboarding( + 'should recover account via secret phrase', + async ({ page, createOnboardingPassword, extensionId }) => { + await createOnboardingPassword(); + + await page + .getByRole('button', { + name: 'Import an existing secret recovery phrase' + }) + .click(); + + await onboardingExpect( + page.getByText('Please enter your secret recovery phrase') + ).toBeVisible(); + + await page + .getByPlaceholder('e.g. Bobcat Lemon Blanket…') + .fill(recoverSecretPhrase); + + await page.getByRole('button', { name: 'Recover my wallet' }).click(); + + await page.goto(`chrome-extension://${extensionId}/popup.html`); + + await onboardingExpect( + page.getByText(DEFAULT_FIRST_ACCOUNT.accountName) + ).toBeVisible(); + await onboardingExpect( + page.getByText(DEFAULT_FIRST_ACCOUNT.truncatedPublicKey).nth(0) + ).toBeVisible(); + } + ); +}); diff --git a/e2e-tests/popup/common/wallet.spec.ts b/e2e-tests/popup/common/wallet.spec.ts new file mode 100644 index 000000000..b93fe6c4d --- /dev/null +++ b/e2e-tests/popup/common/wallet.spec.ts @@ -0,0 +1,81 @@ +import { popup, popupExpect } from '../../fixtures'; +import { ACCOUNT_NAMES } from '../../constants'; + +popup.describe('Popup UI: lock/unlock/reset wallet', () => { + popup( + 'should unlock and lock wallet', + async ({ popupPage, unlockVault, lockVault }) => { + await popupExpect( + popupPage.getByText('Your wallet is locked') + ).toBeVisible(); + + await unlockVault(); + + await popupExpect( + popupPage.getByText(ACCOUNT_NAMES.defaultFirstAccountName) + ).toBeVisible(); + + await lockVault(); + + await popupExpect( + popupPage.getByText('Your wallet is locked') + ).toBeVisible(); + } + ); + + popup('should reset wallet', async ({ context, popupPage }) => { + await popupExpect( + popupPage.getByText('Your wallet is locked') + ).toBeVisible(); + + await popupPage.getByRole('button', { name: 'Reset wallet' }).click(); + + await popupExpect( + popupPage.getByRole('heading', { + name: 'Are you sure you want to reset your wallet?' + }) + ).toBeVisible(); + await popupExpect( + popupPage.getByRole('button', { name: 'Reset wallet' }) + ).toBeDisabled(); + + await popupPage.getByText('I’ve read and understand the above').click(); + await popupExpect( + popupPage.getByRole('button', { name: 'Reset wallet' }) + ).toBeEnabled(); + + const [onboardingPage] = await Promise.all([ + context.waitForEvent('page'), + popupPage.getByRole('button', { name: 'Reset wallet' }).click() + ]); + + await popupExpect( + onboardingPage.getByRole('heading', { + name: 'Ready to create your new wallet?' + }) + ).toBeVisible(); + }); + + popup( + 'should lock wallet for 5 minutes when user types wrong password 5 times', + async ({ popupPage }) => { + await popupExpect( + popupPage.getByText('Your wallet is locked') + ).toBeVisible(); + + await popupPage + .getByPlaceholder('Password', { exact: true }) + .fill('wrong password'); + + for (let i = 0; i < 5; i++) { + await popupPage.getByRole('button', { name: 'Unlock wallet' }).click(); + } + + await popupExpect( + popupPage.getByRole('heading', { + name: 'Please wait before the next attempt to unlock your wallet' + }) + ).toBeVisible(); + } + ); +}); diff --git a/e2e-tests/popup/connect-account/connect-account.spec.ts b/e2e-tests/popup/connect-account/connect-account.spec.ts new file mode 100644 index 000000000..24f64de87 --- /dev/null +++ b/e2e-tests/popup/connect-account/connect-account.spec.ts @@ -0,0 +1,108 @@ +import { Page } from '@playwright/test'; + +import { popup, popupExpect } from '../../fixtures'; +import { ACCOUNT_NAMES, PLAYGROUND_URL } from '../../constants'; + +popup.describe('Popup UI: connect account', () => { + let connectAccountPage: Page; + + popup.beforeEach(async ({ page, context, unlockVault }) => { + await page.goto(PLAYGROUND_URL); + + [connectAccountPage] = await Promise.all([ + context.waitForEvent('page'), + page.getByRole('button', { name: 'Connect', exact: true }).click() + ]); + + await unlockVault(connectAccountPage); + }); + + popup( + 'should connect one account to playground', + async ({ extensionId, page }) => { + await popupExpect( + connectAccountPage.getByText('Connect with Casper Wallet Playground') + ).toBeVisible(); + + await popupExpect( + connectAccountPage.getByRole('button', { name: 'Next' }) + ).toBeDisabled(); + + await connectAccountPage + .getByText(ACCOUNT_NAMES.defaultFirstAccountName, { exact: true }) + .click(); + + await popupExpect( + connectAccountPage.getByRole('button', { name: 'Next' }) + ).toBeEnabled(); + + await connectAccountPage.getByRole('button', { name: 'Next' }).click(); + await connectAccountPage + .getByRole('button', { name: 'Connect to 1 account' }) + .click(); + + await page.goto(`chrome-extension://${extensionId}/popup.html`); + + await page.getByTestId('menu-open-icon').click(); + await page.getByText('Connected sites').click(); + + await popupExpect( + page.getByText('Casper Wallet Playground') + ).toBeVisible(); + await popupExpect( + page.getByText('casper-wallet-playground.make.services') + ).toBeVisible(); + await popupExpect( + page.getByRole('button', { name: 'Disconnect' }) + ).toBeVisible(); + await popupExpect( + page.getByText(ACCOUNT_NAMES.defaultFirstAccountName) + ).toBeVisible(); + } + ); + + popup( + 'should connect two accounts to playground', + async ({ extensionId, page }) => { + await popupExpect( + connectAccountPage.getByText('Connect with Casper Wallet Playground') + ).toBeVisible(); + + await popupExpect( + connectAccountPage.getByRole('button', { name: 'Next' }) + ).toBeDisabled(); + + await connectAccountPage.getByText('select all', { exact: true }).click(); + + await popupExpect( + connectAccountPage.getByRole('button', { name: 'Next' }) + ).toBeEnabled(); + + await connectAccountPage.getByRole('button', { name: 'Next' }).click(); + await connectAccountPage + .getByRole('button', { name: 'Connect to 2 accounts' }) + .click(); + + await page.goto(`chrome-extension://${extensionId}/popup.html`); + + await page.getByTestId('menu-open-icon').click(); + await page.getByText('Connected sites').click(); + + await popupExpect( + page.getByText('Casper Wallet Playground') + ).toBeVisible(); + await popupExpect( + page.getByText('casper-wallet-playground.make.services') + ).toBeVisible(); + await popupExpect( + page.getByRole('button', { name: 'Disconnect' }) + ).toBeVisible(); + await popupExpect( + page.getByText(ACCOUNT_NAMES.defaultFirstAccountName) + ).toBeVisible(); + await popupExpect( + page.getByText(ACCOUNT_NAMES.defaultSecondAccountName) + ).toBeVisible(); + } + ); +}); diff --git a/e2e-tests/popup/create-account/create-account.spec.ts b/e2e-tests/popup/create-account/create-account.spec.ts new file mode 100644 index 000000000..d22a7be51 --- /dev/null +++ b/e2e-tests/popup/create-account/create-account.spec.ts @@ -0,0 +1,41 @@ +import { popup, popupExpect } from '../../fixtures'; +import { ACCOUNT_NAMES } from '../../constants'; + +popup.describe('Popup UI: create account', () => { + popup.beforeEach(async ({ unlockVault, popupPage }) => { + await unlockVault(popupPage); + }); + + popup( + 'should create account from navigation menu', + async ({ popupPage, createAccount }) => { + await createAccount(ACCOUNT_NAMES.createdAccountName); + + await popupExpect( + popupPage.getByText(ACCOUNT_NAMES.createdAccountName) + ).toBeVisible(); + } + ); + + popup( + 'should create account from account list modal', + async ({ popupPage }) => { + await popupPage.getByTestId('connection-status-modal').click(); + + await popupPage.getByRole('button', { name: 'Create' }).click(); + + await popupExpect( + popupPage.getByRole('heading', { name: 'Create account' }) + ).toBeVisible(); + + await popupPage + .getByPlaceholder('Account name', { exact: true }) + .fill(ACCOUNT_NAMES.createdAccountName); + await popupPage.getByRole('button', { name: 'Create account' }).click(); + + await popupExpect( + popupPage.getByText(ACCOUNT_NAMES.createdAccountName) + ).toBeVisible(); + } + ); +}); diff --git a/e2e-tests/popup/disconnect-account/disconnect-account.spec.ts b/e2e-tests/popup/disconnect-account/disconnect-account.spec.ts new file mode 100644 index 000000000..47064c612 --- /dev/null +++ b/e2e-tests/popup/disconnect-account/disconnect-account.spec.ts @@ -0,0 +1,71 @@ +import { popup, popupExpect } from '../../fixtures'; +import { ACCOUNT_NAMES, PLAYGROUND_URL } from '../../constants'; + +popup.describe('Popup UI: disconnect account', () => { + popup.beforeEach(async ({ connectAccounts }) => { + await connectAccounts(); + }); + + popup( + 'should click the disconnect button on dapp and disconnect all accounts from the site', + async ({ page, extensionId }) => { + await page.goto(PLAYGROUND_URL); + + await page.getByRole('button', { name: 'Disconnect' }).click(); + + await page.goto(`chrome-extension://${extensionId}/popup.html`); + await page.getByTestId('menu-open-icon').click(); + await page.getByText('Connected sites').click(); + + await popupExpect(page.getByText('No connected sites yet')).toBeVisible(); + } + ); + + popup( + 'should click the disconnect button on connecting site page and disconnect one account from the site', + async ({ popupPage }) => { + await popupPage.getByTestId('menu-open-icon').click(); + await popupPage.getByText('Connected sites').click(); + + await popupExpect( + popupPage.getByText(ACCOUNT_NAMES.defaultFirstAccountName) + ).toBeVisible(); + await popupExpect( + popupPage.getByText(ACCOUNT_NAMES.defaultSecondAccountName) + ).toBeVisible(); + + const disconnectIcons = await popupPage + .getByTestId('disconnect-account-icon') + .all(); + await disconnectIcons[0].click(); + + await popupExpect( + popupPage.getByText(ACCOUNT_NAMES.defaultFirstAccountName) + ).not.toBeVisible(); + await popupExpect( + popupPage.getByText(ACCOUNT_NAMES.defaultSecondAccountName) + ).toBeVisible(); + } + ); + + popup( + 'should click the disconnect button on connecting site page and disconnect all accounts from the site', + async ({ popupPage }) => { + await popupPage.getByTestId('menu-open-icon').click(); + await popupPage.getByText('Connected sites').click(); + + await popupExpect( + popupPage.getByText(ACCOUNT_NAMES.defaultFirstAccountName) + ).toBeVisible(); + await popupExpect( + popupPage.getByText(ACCOUNT_NAMES.defaultSecondAccountName) + ).toBeVisible(); + + await popupPage.getByRole('button', { name: 'Disconnect' }).click(); + + await popupExpect( + popupPage.getByText('No connected sites yet') + ).toBeVisible(); + } + ); +}); diff --git a/e2e-tests/popup/import-account-with-file/import-account-with-file.spec.ts b/e2e-tests/popup/import-account-with-file/import-account-with-file.spec.ts new file mode 100644 index 000000000..92104ef5d --- /dev/null +++ b/e2e-tests/popup/import-account-with-file/import-account-with-file.spec.ts @@ -0,0 +1,63 @@ +import { popup, popupExpect } from '../../fixtures'; +import { + ACCOUNT_NAMES, + IMPORTED_ACCOUNT, + secretKeyPath +} from '../../constants'; + +popup.describe('Popup UI: import account with file', () => { + popup( + 'should import account via a file', + async ({ unlockVault, context, popupPage }) => { + await unlockVault(); + + await popupPage.getByTestId('menu-open-icon').click(); + + const [importAccountPage] = await Promise.all([ + context.waitForEvent('page'), + popupPage.getByText('Import account').click() + ]); + + const fileChooserPromise = importAccountPage.waitForEvent('filechooser'); + + await popupExpect( + importAccountPage.getByRole('heading', { + name: 'Import account from secret key file' + }) + ).toBeVisible(); + + await importAccountPage + .getByRole('button', { name: 'Upload your file' }) + .click(); + + const fileChooser = await fileChooserPromise; + await fileChooser.setFiles(secretKeyPath); + + await importAccountPage + .getByPlaceholder('Account name', { exact: true }) + .fill(ACCOUNT_NAMES.importedAccountName); + + await importAccountPage.getByRole('button', { name: 'Import' }).click(); + + await popupExpect( + importAccountPage.getByRole('heading', { + name: 'Your account was successfully imported' + }) + ).toBeVisible(); + + await importAccountPage.getByRole('button', { name: 'Done' }).click(); + + await popupPage.getByTestId('connection-status-modal').click(); + + await popupExpect( + popupPage.getByText(ACCOUNT_NAMES.importedAccountName) + ).toBeVisible(); + await popupExpect( + popupPage.getByText(IMPORTED_ACCOUNT.truncatedPublicKey) + ).toBeVisible(); + await popupExpect( + popupPage.getByText('Imported', { exact: true }) + ).toBeVisible(); + } + ); +}); diff --git a/e2e-tests/popup/rename-account/rename-account.spec.ts b/e2e-tests/popup/rename-account/rename-account.spec.ts new file mode 100644 index 000000000..2ab7f8b94 --- /dev/null +++ b/e2e-tests/popup/rename-account/rename-account.spec.ts @@ -0,0 +1,36 @@ +import { popup, popupExpect } from '../../fixtures'; +import { ACCOUNT_NAMES } from '../../constants'; + +popup.describe('Popup UI: rename account', () => { + popup( + 'should rename account from account popover', + async ({ popupPage, unlockVault }) => { + await unlockVault(); + + await popupPage.getByTestId('popover-children-container').click(); + + await popupPage.getByText('Rename').click(); + + await popupExpect( + popupPage.getByRole('heading', { name: 'Rename account' }) + ).toBeVisible(); + + await popupPage + .getByPlaceholder('New account name', { exact: true }) + .fill(ACCOUNT_NAMES.renamedAccountName); + await popupPage.getByRole('button', { name: 'Update' }).click(); + + await popupExpect( + popupPage.getByRole('heading', { + name: ACCOUNT_NAMES.renamedAccountName + }) + ).toBeVisible(); + + await popupPage.getByText('Close').click(); + + await popupExpect( + popupPage.getByText(ACCOUNT_NAMES.renamedAccountName) + ).toBeVisible(); + } + ); +}); diff --git a/e2e-tests/popup/signature-request-scenarios/signature-request-scenarios.spec.ts b/e2e-tests/popup/signature-request-scenarios/signature-request-scenarios.spec.ts new file mode 100644 index 000000000..7c3ba2850 --- /dev/null +++ b/e2e-tests/popup/signature-request-scenarios/signature-request-scenarios.spec.ts @@ -0,0 +1,217 @@ +import { popup, popupExpect } from '../../fixtures'; +import { + DEFAULT_FIRST_ACCOUNT, + NEW_VALIDATOR, + PLAYGROUND_URL, + VALIDATOR +} from '../../constants'; + +popup.describe('Popup UI: signature request scenarios', () => { + popup.beforeEach(async ({ connectAccounts, page }) => { + await connectAccounts(); + // need to wait for the connection status modal to disappear + await page.waitForTimeout(3000); + }); + + popup('should signing the transfer deploy', async ({ page, context }) => { + await page.goto(PLAYGROUND_URL); + + const [signatureRequestPage] = await Promise.all([ + context.waitForEvent('page'), + page.getByRole('button', { name: 'Transfer' }).click() + ]); + + await popupExpect( + signatureRequestPage.getByRole('heading', { name: 'Signature Request' }) + ).toBeVisible(); + + await signatureRequestPage.getByText('Transfer Data').click(); + + await popupExpect( + signatureRequestPage.getByText('Transfer Call') + ).toBeVisible(); + + await popupExpect( + signatureRequestPage.getByText('Recipient (Key)') + ).toBeVisible(); + await popupExpect( + signatureRequestPage.getByText(VALIDATOR.truncatedPublicKey) + ).toBeVisible(); + await popupExpect(signatureRequestPage.getByText('Amount')).toBeVisible(); + await popupExpect(signatureRequestPage.getByText('2.5 CSPR')).toBeVisible(); + await popupExpect( + signatureRequestPage.getByText('Transfer ID') + ).toBeVisible(); + await popupExpect(signatureRequestPage.getByText('1234')).toBeVisible(); + + page.on('dialog', async dialog => { + popupExpect(dialog.message()).toContain('Sign successful'); + await dialog.accept(); + }); + + await signatureRequestPage.getByRole('button', { name: 'Sign' }).click(); + }); + + popup('should signing the delegate deploy', async ({ page, context }) => { + await page.goto(PLAYGROUND_URL); + + const [signatureRequestPage] = await Promise.all([ + context.waitForEvent('page'), + page.getByRole('button', { name: 'Delegate', exact: true }).click() + ]); + + await popupExpect( + signatureRequestPage.getByRole('heading', { name: 'Signature Request' }) + ).toBeVisible(); + + await signatureRequestPage.getByText('Contract arguments').click(); + + await popupExpect( + signatureRequestPage.getByText('Contract Call') + ).toBeVisible(); + + await popupExpect(signatureRequestPage.getByText('delegate')).toBeVisible(); + + await popupExpect( + signatureRequestPage.getByText('Delegator') + ).toBeVisible(); + await popupExpect( + signatureRequestPage + .getByText(DEFAULT_FIRST_ACCOUNT.truncatedPublicKey) + .nth(2) + ).toBeVisible(); + await popupExpect( + signatureRequestPage.getByText(VALIDATOR.name) + ).toBeVisible(); + await popupExpect( + signatureRequestPage.getByText(VALIDATOR.truncatedPublicKey) + ).toBeVisible(); + await popupExpect(signatureRequestPage.getByText('Amount')).toBeVisible(); + await popupExpect( + signatureRequestPage.getByText('2.5 CSPR').nth(1) + ).toBeVisible(); + + page.on('dialog', async dialog => { + popupExpect(dialog.message()).toContain('Sign successful'); + await dialog.accept(); + }); + + await signatureRequestPage.getByRole('button', { name: 'Sign' }).click(); + }); + + popup('should signing the undelegate deploy', async ({ page, context }) => { + await page.goto(PLAYGROUND_URL); + + const [signatureRequestPage] = await Promise.all([ + context.waitForEvent('page'), + page.getByRole('button', { name: 'Undelegate', exact: true }).click() + ]); + + await popupExpect( + signatureRequestPage.getByRole('heading', { name: 'Signature Request' }) + ).toBeVisible(); + + await signatureRequestPage.getByText('Contract arguments').click(); + + await popupExpect( + signatureRequestPage.getByText('Contract Call') + ).toBeVisible(); + + await popupExpect( + signatureRequestPage.getByText('undelegate') + ).toBeVisible(); + + await popupExpect( + signatureRequestPage.getByText('Delegator') + ).toBeVisible(); + await popupExpect( + signatureRequestPage + .getByText(DEFAULT_FIRST_ACCOUNT.truncatedPublicKey) + .nth(2) + ).toBeVisible(); + await popupExpect( + signatureRequestPage.getByText(VALIDATOR.name) + ).toBeVisible(); + await popupExpect( + signatureRequestPage.getByText(VALIDATOR.truncatedPublicKey) + ).toBeVisible(); + await popupExpect(signatureRequestPage.getByText('Amount')).toBeVisible(); + await popupExpect(signatureRequestPage.getByText('2.5 CSPR')).toBeVisible(); + + page.on('dialog', async dialog => { + popupExpect(dialog.message()).toContain('Sign successful'); + await dialog.accept(); + }); + + await signatureRequestPage.getByRole('button', { name: 'Sign' }).click(); + }); + + popup('should signing the redelegate deploy', async ({ page, context }) => { + await page.goto(PLAYGROUND_URL); + + const [signatureRequestPage] = await Promise.all([ + context.waitForEvent('page'), + page.getByRole('button', { name: 'Redelegate', exact: true }).click() + ]); + + await popupExpect( + signatureRequestPage.getByRole('heading', { name: 'Signature Request' }) + ).toBeVisible(); + + await signatureRequestPage.getByText('Contract arguments').click(); + + await popupExpect( + signatureRequestPage.getByText('Contract Call') + ).toBeVisible(); + + await popupExpect( + signatureRequestPage.getByText('redelegate') + ).toBeVisible(); + + await popupExpect( + signatureRequestPage.getByText('Delegator') + ).toBeVisible(); + await popupExpect( + signatureRequestPage + .getByText(DEFAULT_FIRST_ACCOUNT.truncatedPublicKey) + .nth(2) + ).toBeVisible(); + await popupExpect( + signatureRequestPage.getByText(VALIDATOR.name, { exact: true }) + ).toBeVisible(); + await popupExpect( + signatureRequestPage.getByText(VALIDATOR.truncatedPublicKey) + ).toBeVisible(); + await popupExpect(signatureRequestPage.getByText('Amount')).toBeVisible(); + await popupExpect(signatureRequestPage.getByText('2.5 CSPR')).toBeVisible(); + await popupExpect( + signatureRequestPage.getByText(NEW_VALIDATOR.name) + ).toBeVisible(); + await popupExpect( + signatureRequestPage.getByText(NEW_VALIDATOR.truncatedPublicKey) + ).toBeVisible(); + + page.on('dialog', async dialog => { + popupExpect(dialog.message()).toContain('Sign successful'); + await dialog.accept(); + }); + + await signatureRequestPage.getByRole('button', { name: 'Sign' }).click(); + }); + + popup('should cancel the signing process', async ({ page, context }) => { + await page.goto(PLAYGROUND_URL); + + const [signatureRequestPage] = await Promise.all([ + context.waitForEvent('page'), + page.getByRole('button', { name: 'Transfer' }).click() + ]); + + page.on('dialog', async dialog => { + popupExpect(dialog.message()).toContain('Sign cancelled'); + await dialog.accept(); + }); + + await signatureRequestPage.getByRole('button', { name: 'Cancel' }).click(); + }); +}); diff --git a/e2e/__fixtures.ts b/e2e/__fixtures.ts deleted file mode 100644 index 38e0500a7..000000000 --- a/e2e/__fixtures.ts +++ /dev/null @@ -1,4 +0,0 @@ -export const vaultPassword = '3hQqzYn4C7Y8rEZTVEZb'; -export const recoverSecretPhrase = - 'hold matrix spider subway bottom jazz charge fire lawn valley stay coil moral hospital dream cycle multiply december agree huge major tower devote old'; -export const secretKeyPath = 'e2e/account_secret_key.pem'; diff --git a/e2e/app-routes.ts b/e2e/app-routes.ts deleted file mode 100644 index bac0879d6..000000000 --- a/e2e/app-routes.ts +++ /dev/null @@ -1,4 +0,0 @@ -export enum AppRoutes { - Onboarding = 'onboarding', - Popup = 'popup' -} diff --git a/e2e/constants.ts b/e2e/constants.ts deleted file mode 100644 index 30873ecd5..000000000 --- a/e2e/constants.ts +++ /dev/null @@ -1,26 +0,0 @@ -export const ACCOUNT_NAMES = { - defaultAccountName: 'Account 1', - createdAccountName: 'New account 1', - importedAccountName: 'Imported account' -}; - -export const PLAYGROUND_URL = 'https://casper-wallet-playground.make.services/'; - -export const IMPORTED_ACCOUNT = { - accountName: ACCOUNT_NAMES.importedAccountName, - publicKey: - '0184f6d260f4ee6869ddb36affe15456de6ae045278fa2f467bb677561ce0dad55', - truncatedPublicKey: '0184f...dad55' -}; - -export const DEFAULT_ACCOUNT = { - accountName: ACCOUNT_NAMES.defaultAccountName, - publicKey: - '02021006f7e7ecba9dda1fbd68bd88b0b509ce07a24c4ce8a96c62d44bec4beb9f9d', - truncatedPublicKey: '02021...b9f9d' -}; - -export enum TIMEOUT { - '15sec' = 1000 * 15, - '50sec' = 1000 * 50 -} diff --git a/e2e/crx3-public.pem b/e2e/crx3-public.pem deleted file mode 100644 index 78de8175e..000000000 --- a/e2e/crx3-public.pem +++ /dev/null @@ -1,4 +0,0 @@ ------BEGIN PUBLIC KEY----- -MFswDQYJKoZIhvcNAQEBBQADSgAwRwJAWuDoW01t8OTlxAo+uOu/0tR0U/LjsDwO -vEk5yHBqfOSSIuMRd7grr09CrfScI2QqF7InrUOSuDCTd8oB/taxUQIDAQAB ------END PUBLIC KEY----- \ No newline at end of file diff --git a/e2e/crx3.pem b/e2e/crx3.pem deleted file mode 100644 index 84377d4c1..000000000 --- a/e2e/crx3.pem +++ /dev/null @@ -1,9 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIBOAIBAAJAWuDoW01t8OTlxAo+uOu/0tR0U/LjsDwOvEk5yHBqfOSSIuMRd7gr -r09CrfScI2QqF7InrUOSuDCTd8oB/taxUQIDAQABAkAZuLBrLxYf6VlSzCeGhUss -q+8k14k0FzuAdSVCovaw1FXRe5z1Fj1nkUmGIIL8lbhW2uiNNpUou7ru8iUr9xcx -AiEAqy5622hvGPDkAa/1wvVhX3eNUGtEONZdlDNMZa28L+UCIQCH6GTdfLoVy+u+ -GFd2/v51fcZ50km8IQymUp9BqyAs/QIgXMkV2MWTqn4v6GY7HRCqVffURinOUcyH -7qObnmV8Yq0CIGByPwIe/T9ykz03sPo1QwbF1w+kd8cV/RAbGgFUG2VRAiBqCsE/ -JfG6vhqyisXxvbqI4+n9Isb2RPxWoPCfQVtblA== ------END RSA PRIVATE KEY----- \ No newline at end of file diff --git a/e2e/tests/common/click-button-to-open-extension-window-and-focus.ts b/e2e/tests/common/click-button-to-open-extension-window-and-focus.ts deleted file mode 100644 index 760f336a3..000000000 --- a/e2e/tests/common/click-button-to-open-extension-window-and-focus.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { strict as assert } from 'assert'; - -import { Driver } from '../../webdriver/driver'; -import { byText } from '../../utils/helpers'; -import { TIMEOUT } from '../../constants'; - -export const clickButtonToOpenExtensionWindowAndFocus = async ( - driver: Driver, - currentWindow: string, - clickElement: string -) => { - // Check if there is one window open - assert.equal((await driver.getAllWindowHandles()).length, 1); - - await driver.clickElement(byText(clickElement)); - - // Wait for the new window - await driver.wait( - async () => (await driver.getAllWindowHandles()).length === 2, - TIMEOUT['15sec'] - ); - - // Loop through until we find a new window handle - const windows = await driver.getAllWindowHandles(); - - for (const handle of windows) { - if (handle !== currentWindow) { - await driver.switchToWindow(handle); - } - } -}; diff --git a/e2e/tests/common/connect-account.ts b/e2e/tests/common/connect-account.ts deleted file mode 100644 index ee2e3ee53..000000000 --- a/e2e/tests/common/connect-account.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { strict as assert } from 'assert'; - -import { unlockVault } from './unlock-vault'; -import { clickButtonToOpenExtensionWindowAndFocus } from './click-button-to-open-extension-window-and-focus'; - -import { Driver } from '../../webdriver/driver'; -import { byTestId, byText } from '../../utils/helpers'; -import { ACCOUNT_NAMES, TIMEOUT } from '../../constants'; - -export const connectAccount = async ({ - driver, - currentWindow, - connectAllAccounts -}: { - driver: Driver; - currentWindow: string; - connectAllAccounts?: boolean; -}) => { - await clickButtonToOpenExtensionWindowAndFocus( - driver, - currentWindow, - 'Connect' - ); - - const isWalletLocked = await driver.isElementPresent( - byText('Your wallet is locked') - ); - - if (isWalletLocked) { - await unlockVault(driver); - - assert.ok( - await driver.isElementPresent( - byText('Connect with Casper Wallet Playground'), - 'Connect with Casper Wallet Playground', - TIMEOUT['50sec'] - ), - `Wallet still locked` - ); - } - - if (connectAllAccounts) { - await driver.clickElement(byText('select all')); - } else { - await driver.clickElement(byText(ACCOUNT_NAMES.defaultAccountName)); - } - - await driver.clickElement(byText('Next')); - - await driver.clickElement(byTestId('connect-accounts-button')); - - // Wait for connecting - await driver.wait( - async () => (await driver.getAllWindowHandles()).length === 1, - TIMEOUT['15sec'] - ); -}; diff --git a/e2e/tests/common/create-account.ts b/e2e/tests/common/create-account.ts deleted file mode 100644 index 5e6b8e41a..000000000 --- a/e2e/tests/common/create-account.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { Driver } from '../../webdriver/driver'; -import { byInputName, byTestId, byText } from '../../utils/helpers'; - -export const createAccount = async (driver: Driver, newAccountName: string) => { - await driver.clickElement(byTestId('menu-open-icon')); - - await driver.clickElement(byText('Create account')); - - const accountNameInput = await driver.findElement(byInputName('name')); - - await accountNameInput.fill(newAccountName); - - await driver.clickElement(byText('Create Account')); - - await driver.findElement(byText(newAccountName)); -}; diff --git a/e2e/tests/common/create-password.ts b/e2e/tests/common/create-password.ts deleted file mode 100644 index 8679c606c..000000000 --- a/e2e/tests/common/create-password.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Driver } from '../../webdriver/driver'; -import { vaultPassword } from '../../__fixtures'; -import { byButtonText, byInputName, byTestId } from '../../utils/helpers'; - -export const createPassword = async (driver: Driver) => { - await driver.fill(byInputName('password'), vaultPassword); - await driver.fill(byInputName('confirmPassword'), vaultPassword); - - const checkbox = await driver.findElement(byTestId('terms-checkbox')); - await checkbox.click(); - await driver.clickElement(byButtonText('Create password')); -}; diff --git a/e2e/tests/common/index.ts b/e2e/tests/common/index.ts deleted file mode 100644 index 9648c1026..000000000 --- a/e2e/tests/common/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -export * from './create-password'; -export * from './unlock-vault'; -export * from './create-account'; -export * from './click-button-to-open-extension-window-and-focus'; -export * from './lock-vault'; -export * from './open-connected-site-page'; -export * from './connect-account'; diff --git a/e2e/tests/common/lock-vault.ts b/e2e/tests/common/lock-vault.ts deleted file mode 100644 index cc5ecbc12..000000000 --- a/e2e/tests/common/lock-vault.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { Driver } from '../../webdriver/driver'; -import { byTestId, byText } from '../../utils/helpers'; - -export const lockVault = async (driver: Driver) => { - await driver.clickElement(byTestId('menu-open-icon')); - await driver.clickElement(byText('Lock wallet')); -}; diff --git a/e2e/tests/common/open-connected-site-page.ts b/e2e/tests/common/open-connected-site-page.ts deleted file mode 100644 index 129633c8a..000000000 --- a/e2e/tests/common/open-connected-site-page.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Driver } from '../../webdriver/driver'; -import { AppRoutes } from '../../app-routes'; -import { byTestId, byText } from '../../utils/helpers'; - -export const openConnectedSitePage = async (driver: Driver) => { - await driver.createNewWindowOrTabAndSwitch('window'); - - await driver.navigate(AppRoutes.Popup); - - await driver.clickElement(byTestId('menu-open-icon')); - await driver.clickElement(byText('Connected sites')); -}; diff --git a/e2e/tests/common/unlock-vault.ts b/e2e/tests/common/unlock-vault.ts deleted file mode 100644 index c5db1186a..000000000 --- a/e2e/tests/common/unlock-vault.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { Driver } from '../../webdriver/driver'; -import { vaultPassword } from '../../__fixtures'; -import { byButtonText, byInputName } from '../../utils/helpers'; - -export const unlockVault = async (driver: Driver) => { - await driver.fill(byInputName('password'), vaultPassword); - await driver.clickElement(byButtonText('Unlock wallet')); -}; diff --git a/e2e/tests/onboarding-flow/confirm-secret-phrase-flow.test.ts b/e2e/tests/onboarding-flow/confirm-secret-phrase-flow.test.ts deleted file mode 100644 index 2b1e8d59e..000000000 --- a/e2e/tests/onboarding-flow/confirm-secret-phrase-flow.test.ts +++ /dev/null @@ -1,213 +0,0 @@ -import { until } from 'selenium-webdriver'; -import { strict as assert } from 'assert'; - -import { Driver } from '../../webdriver/driver'; -import { buildWebDriver } from '../../webdriver'; -import { AppRoutes } from '../../app-routes'; -import { byText, byTestId, getUrlPath } from '../../utils/helpers'; -import { WebElementWithAPI } from '../../webdriver/WebElementWithAPI'; -import { createPassword } from '../common'; - -describe('Onboarding UI: confirm secret phrase flow [happy path]', () => { - let driver: Driver; - let copiedPhrase: string; - let secretPhraseList: WebElementWithAPI; - let secretPhrase: string[]; - - beforeAll(async () => { - driver = await buildWebDriver(); - await driver.navigate(AppRoutes.Onboarding); - }); - - afterAll(async () => { - await driver.quit(); - }); - - it('should contain `Get started` button with text, which navigates to `Create password` page by clicking on it', async () => { - await driver.clickElement(byText('Get started')); - - assert.equal( - await driver.driver.getCurrentUrl().then(getUrlPath), - 'create-vault-password' - ); - }); - - it('should navigate to `Create secret phrase` page when the user filled the password, checked the checkbox, and click on `Create password` button', async () => { - await createPassword(driver); - - // Need to wait for the finishing script for creating the password - await driver.wait( - until.elementLocated(byText('Create secret recovery phrase')) - ); - - assert.equal( - await driver.driver.getCurrentUrl().then(getUrlPath), - 'create-secret-phrase' - ); - }); - - it('should navigate to `Create Secret Phrase Confirmation` page by clicking on `Create my secret recovery phrase` button', async () => { - await driver.clickElement(byText('Create my secret recovery phrase')); - - assert.equal( - await driver.driver.getCurrentUrl().then(getUrlPath), - 'create-secret-phrase-confirmation' - ); - }); - - it('should navigate to `Write Down Secret Phrase` page when the user checked the checkbox and clicks on `Next` button', async () => { - await driver.clickElement( - byText( - 'I understand that I am solely responsible for storing and protecting my secret recovery phrase. Access to my funds depend on it.' - ) - ); - - await driver.clickElement(byText('Next')); - - assert.equal( - await driver.driver.getCurrentUrl().then(getUrlPath), - 'write-down-secret-phrase' - ); - }); - - it('should contain a `Copy secret recovery phrase` link which copies a phrase with 24 words to the clipboard', async () => { - await driver.clickElement(byText('Copy secret recovery phrase')); - - secretPhraseList = await driver.findElement(byTestId('word-list')); - secretPhrase = (await secretPhraseList.getText()).split('\n'); - - // Firefox only supports reading the clipboard in browser extensions. - // So this is the hack to pass this test for it. - // Disabled this test for Chrome as well, until we find a way to fix clipboard permission. - if (driver.browser === 'firefox' || driver.browser === 'chrome') { - expect(true); - } else { - copiedPhrase = (await driver.executeScript( - 'return navigator.clipboard.readText();' - )) as string; - - assert.equal(copiedPhrase.split(' ').length, 24); - } - }); - - it('should navigate to `Confirm Secret Phrase` page when the user checks the checkbox and clicks on `Next` button', async () => { - await driver.clickElement( - byText( - 'I confirm I have written down and securely stored my secret recovery phrase' - ) - ); - - await driver.clickElement(byText('Next')); - - assert.equal( - await driver.driver.getCurrentUrl().then(getUrlPath), - 'confirm-secret-phrase' - ); - }); - - it('should navigate to `Confirm Secret Phrase Success` page when the user completed the puzzle test and clicks on `Confirm` button', async () => { - const phrase = copiedPhrase?.split(' ') || secretPhrase; - - const wordPicker = await driver.findElement(byTestId('word-picker')); - const wordList = await driver.findElement(byTestId('word-list')); - - const visibleWords = (await wordList.getText()).split('\n'); - - const hiddenWords = phrase.filter( - word => !visibleWords.includes(word) && isNaN(Number(word)) - ); - - for (let i = 0; i < phrase.length; i++) { - const word = phrase[i]; - - if (hiddenWords.includes(word)) { - await wordPicker.findElement(byText(word)).click(); - } - } - - await driver.clickElement(byText('Confirm')).catch(async () => { - await driver.verboseReportOnFailure('Confirm button should be clickable'); - }); - - assert.equal( - await driver.driver.getCurrentUrl().then(getUrlPath), - 'confirm-secret-phrase-success' - ); - }); - - it('should navigate to `Onboarding Success` page when the user clicks on `Done` button', async () => { - await driver.clickElement(byText('Done')); - - assert.equal( - await driver.driver.getCurrentUrl().then(getUrlPath), - 'onboarding-success' - ); - }); - - it('should contains a `Got it` button', async () => { - assert.ok(await driver.findElement(byText('Got it'))); - }); -}); - -describe('Onboarding UI: confirm secret phrase flow [unhappy path]', () => { - let driver: Driver; - let secretPhraseList: WebElementWithAPI; - let secretPhrase: string[]; - - beforeAll(async () => { - driver = await buildWebDriver(); - await driver.navigate(AppRoutes.Onboarding); - - // Welcome page - await driver.clickElement(byText('Get started')); - - // Create password page - await createPassword(driver); - - // Create Secret Phrase page - await driver.clickElement(byText('Create my secret recovery phrase')); - - // Create Secret Phrase Confirmation page - await driver.clickElement( - byText( - 'I understand that I am solely responsible for storing and protecting my secret recovery phrase. Access to my funds depend on it.' - ) - ); - await driver.clickElement(byText('Next')); - - // Write Down Secret Phrase page - await driver.clickElement(byText('Copy secret recovery phrase')); - - secretPhraseList = await driver.findElement(byTestId('word-list')); - secretPhrase = (await secretPhraseList.getText()).split('\n'); - - await driver.clickElement( - byText( - 'I confirm I have written down and securely stored my secret recovery phrase' - ) - ); - await driver.clickElement(byText('Next')); - }); - - afterAll(async () => { - await driver.quit(); - }); - - it('should navigate to `Error` page when the user does not pass the puzzle test and clicked on `Confirm` button', async () => { - const wordPicker = await driver.findElement(byTestId('word-picker')); - - const pickerWords = (await wordPicker.getText()).split('\n'); - - for (let i = secretPhrase.length; i > 0; i--) { - const word = secretPhrase[i]; - - if (pickerWords.includes(word)) { - await wordPicker.findElement(byText(word)).click(); - } - } - - await driver.clickElement(byText('Confirm')); - - assert.equal(await driver.driver.getCurrentUrl().then(getUrlPath), 'error'); - }); -}); diff --git a/e2e/tests/onboarding-flow/recover-secret-phrase-flow.test.ts b/e2e/tests/onboarding-flow/recover-secret-phrase-flow.test.ts deleted file mode 100644 index b26c5b16e..000000000 --- a/e2e/tests/onboarding-flow/recover-secret-phrase-flow.test.ts +++ /dev/null @@ -1,64 +0,0 @@ -import { By, error as webdriverError } from 'selenium-webdriver'; -import { strict as assert } from 'assert'; - -import { Driver } from '../../webdriver/driver'; -import { buildWebDriver } from '../../webdriver'; -import { AppRoutes } from '../../app-routes'; -import { recoverSecretPhrase } from '../../__fixtures'; -import { byText, getUrlPath } from '../../utils/helpers'; -import { createPassword } from '../common'; - -describe('Onboarding UI: recover secret phrase flow [happy path]', () => { - let driver: Driver; - - beforeAll(async () => { - driver = await buildWebDriver(); - await driver.navigate(AppRoutes.Onboarding); - // This testsuits should test a scenario for recovery wallet, so we should navigate to start place - // Welcome page - await driver.clickElement(byText('Get started')); - // Create password page - await createPassword(driver); - }); - - afterAll(async () => { - await driver.quit(); - }); - - describe('`Create Secret Phrase` page', () => { - it('should navigate to `Recover From Secret Phrase` page when the user clicked on `Import an existing secret recovery phrase` button', async () => { - await driver.clickElement( - byText('Import an existing secret recovery phrase') - ); - - assert.equal( - await driver.driver.getCurrentUrl().then(getUrlPath), - 'recover-from-secret-phrase' - ); - }); - }); - - describe('`Recover From Secret Phrase` page', () => { - it('should recover the wallet without errors when the user correctly entered the recovery secret phrase in the text area and click on `Recover my wallet` button', async () => { - await driver.fill( - By.xpath("//textarea[@placeholder='e.g. Bobcat Lemon Blanket…']"), - recoverSecretPhrase - ); - - await driver.clickElement(byText('Recover my wallet')); - - // Check if window is close - assert.equal((await driver.getAllWindowHandles()).length, 1); - - try { - assert.notEqual( - await driver.driver.getCurrentUrl().then(getUrlPath), - 'error' - ); - } catch (error) { - console.log(error); - assert.ok(error instanceof webdriverError.NoSuchWindowError); - } - }); - }); -}); diff --git a/e2e/tests/popup/connect-account/connect-account-flow.test.ts b/e2e/tests/popup/connect-account/connect-account-flow.test.ts deleted file mode 100644 index 7e9f6ae35..000000000 --- a/e2e/tests/popup/connect-account/connect-account-flow.test.ts +++ /dev/null @@ -1,191 +0,0 @@ -import { strict as assert } from 'assert'; - -import { Driver } from '../../../webdriver/driver'; -import { buildWebDriver } from '../../../webdriver'; -import { AppRoutes } from '../../../app-routes'; -import { - clickButtonToOpenExtensionWindowAndFocus, - unlockVault, - createAccount, - lockVault, - openConnectedSitePage -} from '../../common'; -import { byText, getUrlPath } from '../../../utils/helpers'; -import { ACCOUNT_NAMES, PLAYGROUND_URL, TIMEOUT } from '../../../constants'; - -describe.each([ - { - testName: 'account', - selectAllAccounts: false, - createdAccountName: ACCOUNT_NAMES.createdAccountName, - defaultAccountName: ACCOUNT_NAMES.defaultAccountName - }, - { - testName: 'two accounts', - selectAllAccounts: true, - createdAccountName: ACCOUNT_NAMES.createdAccountName, - defaultAccountName: ACCOUNT_NAMES.defaultAccountName - } -])( - `Popup UI: Connect $testName`, - ({ selectAllAccounts, defaultAccountName, createdAccountName, testName }) => { - let driver: Driver; - // Store the ID of the original window - let playgroundWindow: string; - - beforeAll(async () => { - driver = await buildWebDriver(); - - await driver.navigate(AppRoutes.Popup); - - await unlockVault(driver); - await driver.findElement(byText(ACCOUNT_NAMES.defaultAccountName)); - - if (selectAllAccounts) { - await createAccount(driver, createdAccountName); - } - - // For now, we disabled this test for Firefox. It failed all the time on CI - if (driver.browser !== 'firefox') { - await lockVault(driver); - } - - await driver.get(PLAYGROUND_URL); - - playgroundWindow = await driver.getWindowHandle(); - }); - - afterAll(async () => { - await driver.quit(); - }); - - it('should open connect account window and unlock vault', async () => { - await clickButtonToOpenExtensionWindowAndFocus( - driver, - playgroundWindow, - 'Connect' - ); - - // For now, we disabled this test for Firefox. It failed all the time on CI - if (driver.browser !== 'firefox') { - await unlockVault(driver); - } - - assert.ok( - await driver.isElementPresent( - byText('Connect with Casper Wallet Playground'), - 'Connect with Casper Wallet Playground', - TIMEOUT['50sec'] - ), - `Wallet still locked` - ); - }); - - it(`should select ${testName} and navigate to the next page`, async () => { - if (selectAllAccounts) { - await driver.clickElement(byText('select all')).catch(async () => { - await driver.verboseReportOnFailure( - `Failed on - ${testName}/select all` - ); - }); - } else { - await driver - .clickElement(byText(defaultAccountName)) - .catch(async () => { - await driver.verboseReportOnFailure( - `Failed on - ${testName}/one account` - ); - }); - } - - await driver.clickElement(byText('Next')); - - assert.ok( - await driver.isElementPresent( - byText( - selectAllAccounts ? 'Connect to 2 accounts' : 'Connect to 1 account' - ), - selectAllAccounts ? 'Connect to 2 accounts' : 'Connect to 1 account' - ) - ); - }); - - it(`should connect the ${ - selectAllAccounts ? 'accounts' : 'account' - } and close the window`, async () => { - await driver.clickElement( - byText( - selectAllAccounts ? 'Connect to 2 accounts' : 'Connect to 1 account' - ) - ); - - // Wait for connecting - await driver.wait( - async () => (await driver.getAllWindowHandles()).length === 1, - TIMEOUT['15sec'] - ); - - // Check if there is one window open - assert.equal((await driver.getAllWindowHandles()).length, 1); - }); - - it('should open connected site page', async () => { - await driver.switchToWindow(playgroundWindow); - - await openConnectedSitePage(driver); - - assert.equal( - await driver.driver.getCurrentUrl().then(getUrlPath), - 'connected-sites' - ); - }); - - it(`should find the ${ - selectAllAccounts ? 'accounts' : 'account' - } that connected to the site`, async () => { - if (selectAllAccounts) { - assert.ok( - await driver.isElementPresent(byText(createdAccountName)), - `Can't find - ${createdAccountName}` - ); - assert.ok( - await driver.isElementPresent(byText(defaultAccountName)), - `Can't find - ${defaultAccountName}` - ); - } else { - assert.ok( - await driver.isElementPresent(byText(defaultAccountName)), - `Can't find - ${defaultAccountName}` - ); - assert.equal( - await driver.isElementPresent(byText(createdAccountName)), - false, - `Found - ${createdAccountName}, but shouldn't` - ); - } - }); - - it.each([ - { - describe: 'connected site title', - expectedElement: 'Casper Wallet Playground' - }, - { - describe: 'connected site URL', - expectedElement: 'casper-wallet-playground.make.services' - }, - { - describe: 'disconnect button', - expectedElement: 'Disconnect' - } - ])( - 'should find the $describe on the connected site list', - async ({ expectedElement }) => { - assert.ok( - await driver.isElementPresent(byText(expectedElement)), - `Can't find - ${expectedElement}` - ); - } - ); - } -); diff --git a/e2e/tests/popup/disconnect-account/disconnect-account-flow.test.ts b/e2e/tests/popup/disconnect-account/disconnect-account-flow.test.ts deleted file mode 100644 index 0b588b849..000000000 --- a/e2e/tests/popup/disconnect-account/disconnect-account-flow.test.ts +++ /dev/null @@ -1,90 +0,0 @@ -import { strict as assert } from 'assert'; - -import { Driver } from '../../../webdriver/driver'; -import { buildWebDriver } from '../../../webdriver'; -import { AppRoutes } from '../../../app-routes'; -import { - createAccount, - unlockVault, - openConnectedSitePage, - connectAccount -} from '../../common'; -import { byTestId, byText } from '../../../utils/helpers'; -import { ACCOUNT_NAMES, PLAYGROUND_URL } from '../../../constants'; - -describe('Popup UI: Disconnect account', () => { - let driver: Driver; - // Store the ID of the original window - let playgroundWindow: string; - - beforeEach(async () => { - driver = await buildWebDriver(); - - await driver.navigate(AppRoutes.Popup); - - await unlockVault(driver); - await createAccount(driver, ACCOUNT_NAMES.createdAccountName); - - await driver.get(PLAYGROUND_URL); - playgroundWindow = await driver.getWindowHandle(); - - await connectAccount({ - driver, - currentWindow: playgroundWindow, - connectAllAccounts: true - }); - - await driver.switchToWindow(playgroundWindow); - }); - - afterEach(async () => { - await driver.quit(); - }); - - it('should click the disconnect button on dapp and disconnect all accounts from the site', async () => { - await driver.clickElement(byText('Disconnect')); - - await openConnectedSitePage(driver); - - const areAnyAccountsConnected = await driver.areElementsPresent( - byTestId('account-name') - ); - - assert.equal(areAnyAccountsConnected, false); - assert.ok( - await driver.isElementPresent(byText('No connected sites yet')), - "Can't find - No connected sites yet" - ); - }); - - it.each([ - { - describe: 'one account', - disconnectButton: byTestId('disconnect-account-icon'), - areElementsExpected: true, - expectedElement: ACCOUNT_NAMES.createdAccountName - }, - { - describe: 'all accounts', - disconnectButton: byText('Disconnect'), - areElementsExpected: false, - expectedElement: 'No connected sites yet' - } - ])( - 'should click the disconnect button on connecting site page and disconnect $describe from the site', - async ({ disconnectButton, areElementsExpected, expectedElement }) => { - await openConnectedSitePage(driver); - await driver.clickElement(disconnectButton); - - const areAccountsPresent = await driver.areElementsPresent( - byTestId('account-name') - ); - - assert.equal(areAccountsPresent, areElementsExpected); - assert.ok( - await driver.isElementPresent(byText(expectedElement)), - `Can't find - ${expectedElement}` - ); - } - ); -}); diff --git a/e2e/tests/popup/import-account-with-file-flow/import-account-with-file-flow.test.ts b/e2e/tests/popup/import-account-with-file-flow/import-account-with-file-flow.test.ts deleted file mode 100644 index 5b9bb9e49..000000000 --- a/e2e/tests/popup/import-account-with-file-flow/import-account-with-file-flow.test.ts +++ /dev/null @@ -1,113 +0,0 @@ -import { strict as assert } from 'assert'; - -import { Driver } from '../../../webdriver/driver'; -import { buildWebDriver } from '../../../webdriver'; -import { AppRoutes } from '../../../app-routes'; -import { secretKeyPath } from '../../../__fixtures'; -import { - clickButtonToOpenExtensionWindowAndFocus, - unlockVault -} from '../../common'; -import { - byText, - byTestId, - getUrlPath, - byInputName -} from '../../../utils/helpers'; -import { IMPORTED_ACCOUNT } from '../../../constants'; - -describe('Popup UI: Import account with file', () => { - let driver: Driver; - // Store the ID of the original window - let popupWindow: string; - - beforeAll(async () => { - driver = await buildWebDriver(); - - await driver.navigate(AppRoutes.Popup); - await unlockVault(driver); - }); - - afterAll(async () => { - await driver.quit(); - }); - - it('should open navigation menu', async () => { - await driver.clickElement(byTestId('menu-open-icon')); - - assert.ok( - await driver.isElementPresent(byText('Import account')), - "Can't find - Import account" - ); - }); - - it('should open import account window', async () => { - popupWindow = await driver.getWindowHandle(); - - await clickButtonToOpenExtensionWindowAndFocus( - driver, - popupWindow, - 'Import account' - ); - - assert.ok( - driver.isElementPresent(byText('Import account from secret key file')), - "Can't find - Import account from secret key file" - ); - }); - - it('should upload the file and fill the account name', async () => { - await driver.clickElement(byText('Upload your file')); - - const fileInput = await driver.findElement(byInputName('secretKeyFile')); - const accountNameInput = await driver.findElement(byInputName('name')); - const importButton = await driver.findElement(byText('Import')); - - await fileInput.fill(secretKeyPath); - await accountNameInput.fill(IMPORTED_ACCOUNT.accountName); - - assert.ok(importButton.isEnabled()); - }); - - it('should import successfully and close the import account window', async () => { - await driver.clickElement(byText('Import')); - - await driver.clickElement(byText('Done')); - - assert.equal((await driver.getAllWindowHandles()).length, 1); - }); - - it('should open account list page', async () => { - await driver.switchToWindow(popupWindow); - - await driver.clickElement(byText('Switch account')); - - assert.equal( - await driver.driver.getCurrentUrl().then(getUrlPath), - 'account-list' - ); - }); - - it.each([ - { - describe: 'imported account name', - expectedElement: IMPORTED_ACCOUNT.accountName - }, - { - describe: 'truncated public key of the imported account', - expectedElement: IMPORTED_ACCOUNT.truncatedPublicKey - }, - { - describe: 'imported tag', - expectedElement: 'Imported' - } - ])( - 'should find the $describe on the accounts list', - async ({ expectedElement }) => { - assert.ok( - await driver.isElementPresent(byText(expectedElement), expectedElement), - `Can't find - ${expectedElement}` - ); - } - ); -}); diff --git a/e2e/tests/popup/signature-request-scenarios/signature-request-scenarios.test.ts b/e2e/tests/popup/signature-request-scenarios/signature-request-scenarios.test.ts deleted file mode 100644 index 234f7a849..000000000 --- a/e2e/tests/popup/signature-request-scenarios/signature-request-scenarios.test.ts +++ /dev/null @@ -1,154 +0,0 @@ -import { until } from 'selenium-webdriver'; -import { strict as assert } from 'assert'; - -import { Driver } from '../../../webdriver/driver'; -import { buildWebDriver } from '../../../webdriver'; -import { - clickButtonToOpenExtensionWindowAndFocus, - connectAccount -} from '../../common'; -import { DEFAULT_ACCOUNT, PLAYGROUND_URL } from '../../../constants'; -import { byText } from '../../../utils/helpers'; - -describe('Popup UI: Signature request scenarios', () => { - let driver: Driver; - // Store the ID of the original window - let playgroundWindow: string; - - beforeAll(async () => { - driver = await buildWebDriver(); - - await driver.get(PLAYGROUND_URL); - playgroundWindow = await driver.getWindowHandle(); - - await connectAccount({ - driver, - currentWindow: playgroundWindow, - connectAllAccounts: false - }); - - await driver.switchToWindow(playgroundWindow); - }); - - afterAll(async () => { - await driver.quit(); - }); - - describe.each([ - { - describe: 'transfer', - clickElement: 'Transfer', - deployType: 'Transfer Call', - clickOpenArgumentsElement: 'Transfer Data', - contractArguments: { - 'Recipient (Key)': DEFAULT_ACCOUNT.truncatedPublicKey, - Amount: '2.5 CSPR', - 'Transfer ID': '1234' - } - }, - { - describe: 'delegate', - clickElement: 'Delegate', - deployType: 'Contract Call', - entryPoint: 'delegate', - clickOpenArgumentsElement: 'Contract arguments', - contractArguments: { - Delegator: DEFAULT_ACCOUNT.truncatedPublicKey, - Validator: '0106c...ca2ca', - Amount: '2.5 CSPR' - } - }, - { - describe: 'undelegate', - clickElement: 'Undelegate', - deployType: 'Contract Call', - entryPoint: 'undelegate', - clickOpenArgumentsElement: 'Contract arguments', - contractArguments: { - Delegator: DEFAULT_ACCOUNT.truncatedPublicKey, - Validator: '0106c...ca2ca', - Amount: '2.5 CSPR' - } - }, - { - describe: 'redelegate', - clickElement: 'Redelegate', - deployType: 'Contract Call', - entryPoint: 'redelegate', - clickOpenArgumentsElement: 'Contract arguments', - contractArguments: { - Delegator: DEFAULT_ACCOUNT.truncatedPublicKey, - Validator: '0106c...ca2ca', - Amount: '2.5 CSPR', - 'New validator': '017d9...2009e' - } - } - ])( - 'should sign the $describe request', - ({ - clickElement, - deployType, - entryPoint, - contractArguments, - clickOpenArgumentsElement, - describe - }) => { - it(`should click the ${describe} button on dapp and open signature request window`, async () => { - await clickButtonToOpenExtensionWindowAndFocus( - driver, - playgroundWindow, - clickElement - ); - - assert.ok( - await driver.isElementPresent(byText('Signature Request')), - "Can't find - Signature Request" - ); - }); - - it('should find signature request data', async () => { - await driver.clickElement(byText(clickOpenArgumentsElement)); - - assert.ok( - await driver.isElementPresent(byText(deployType)), - `Can't find - ${deployType}` - ); - - if (entryPoint) { - assert.ok( - await driver.isElementPresent(byText(entryPoint)), - `Can't find - ${entryPoint}` - ); - } - - for (const [key, value] of Object.entries(contractArguments)) { - assert.ok( - await driver.isElementPresent(byText(key)), - `Can't find - ${key}` - ); - assert.ok( - await driver.isElementPresent(byText(value)), - `Can't find - ${value}` - ); - } - }); - - it(`should successfully sign the ${describe} request`, async () => { - await driver.clickElement(byText('Sign')); - - await driver.switchToWindow(playgroundWindow); - - // Wait for the alert to be displayed - await driver.wait(until.alertIsPresent()); - - // Store the alert in a variable - const alert = await driver.driver.switchTo().alert(); - - const alertText = await alert.getText(); - - assert.match(alertText, /Sign successful/); - await alert.accept(); - }); - } - ); -}); diff --git a/e2e/tsconfig.json b/e2e/tsconfig.json deleted file mode 100644 index e929a5894..000000000 --- a/e2e/tsconfig.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "compilerOptions": { - "target": "esnext", - "module": "commonjs", - "allowJs": true, - "esModuleInterop": true, - "allowSyntheticDefaultImports": true, - "strict": true, - "isolatedModules": true, - "resolveJsonModule": true, - "noEmit": true, - "baseUrl": "." - }, -} diff --git a/e2e/utils/helpers.ts b/e2e/utils/helpers.ts deleted file mode 100644 index b6a83301c..000000000 --- a/e2e/utils/helpers.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { By } from 'selenium-webdriver'; - -export const getUrlPath = (url: string) => url.split('#/')[1]; - -export const byText = (text: string) => By.xpath(`//*[text()='${text}']`); - -export const byTestId = (dataTestId: string) => - By.xpath(`//*[@data-testid='${dataTestId}']`); - -export const byInputName = (name: string) => - By.xpath(`//input[@name='${name}']`); - -export const byButtonText = (text: string) => - By.xpath(`//button[text()='${text}']`); diff --git a/e2e/webdriver/WebElementWithAPI.ts b/e2e/webdriver/WebElementWithAPI.ts deleted file mode 100644 index 53b6fb62e..000000000 --- a/e2e/webdriver/WebElementWithAPI.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { until, WebElement } from 'selenium-webdriver'; - -import { IWebElementWithAPI, Key } from './types'; -import { Driver } from './driver'; -import { ElementState } from './constants'; - -export class WebElementWithAPI - extends WebElement - implements IWebElementWithAPI -{ - element: WebElement; - driver: Driver; - - constructor(driver: Driver, element: WebElement) { - super(driver.driver, element.getId()); - this.driver = driver; - this.element = element; - } - - async press(key: Key): Promise { - return this.element.sendKeys(key); - } - async fill(input: Key): Promise { - await this.element.clear(); - await this.element.sendKeys(input); - } - async waitForElementState(state: string, timeout: number): Promise { - switch (state) { - case ElementState.Hidden: - // @ts-ignore TODO: clarify Condition case here - return await driver.wait(until.stalenessOf(element), timeout); - case ElementState.Visible: - return await this.driver.wait( - until.elementIsVisible(this.element), - timeout - ); - default: - throw new Error(`Provided state: '${state}' is not supported`); - } - } -} diff --git a/e2e/webdriver/chrome.ts b/e2e/webdriver/chrome.ts deleted file mode 100644 index 0f331c05f..000000000 --- a/e2e/webdriver/chrome.ts +++ /dev/null @@ -1,99 +0,0 @@ -import * as chrome from 'selenium-webdriver/chrome'; -import { Builder, ThenableWebDriver, Browser } from 'selenium-webdriver'; -import remote from 'selenium-webdriver/remote'; - -import { WebDriverObject } from './types'; -import { extensionName } from '../../constants'; -import { SeleniumPort } from './constants'; - -export class ChromeDriver { - _driver: ThenableWebDriver; - - static async build( - port: number | undefined, - headless: boolean, - seleniumHost: string, - seleniumPort?: string - ): Promise { - const options = new chrome.Options(); - - // Allow Selenium to use Chrome's clipboard for tests - // options.setUserPreferences({ - // profile: { - // content_settings: { - // exceptions: { - // clipboard: { - // '[*.],*': { - // expiration: '0', - // last_modified: Date.now(), - // model: 0, - // setting: 1 - // } - // } - // } - // } - // } - // }); - options.addExtensions('chrome.crx'); - options.setAcceptInsecureCerts(true); - - const builder = new Builder() - .forBrowser(Browser.CHROME) - .setChromeOptions(options); - - if (headless) { - builder.usingServer( - `http://${seleniumHost}:${seleniumPort || SeleniumPort.Chrome}/` - ); - } - - const service = new chrome.ServiceBuilder(); - - // Enables Chrome logging. Default: enabled - // Especially useful for discovering why Chrome has crashed, but can also - // be useful for revealing console errors (from the page or background). - if (process.env.ENABLE_CHROME_LOGGING !== 'false') { - // @ts-ignore - service.setStdio('inherit').enableChromeLogging(); - } - if (port) { - service.setPort(port); - } - builder.setChromeService(service); - - const driver = builder.build(); - const chromeDriver = new ChromeDriver(driver); - const extensionId = await chromeDriver.getExtensionIdByName(extensionName); - driver.setFileDetector(new remote.FileDetector()); - - return { - driver, - extensionUrl: `chrome-extension://${extensionId}` - }; - } - - constructor(driver: ThenableWebDriver) { - this._driver = driver; - } - - async getExtensionIdByName( - extensionName: string - ): Promise { - await this._driver.get('chrome://extensions'); - return await this._driver.executeScript(` - const extensions = document.querySelector("extensions-manager").shadowRoot - .querySelector("extensions-item-list").shadowRoot - .querySelectorAll("extensions-item") - - for (let i = 0; i < extensions.length; i++) { - const extension = extensions[i].shadowRoot - const name = extension.querySelector('#name').textContent - if (name === "${extensionName}") { - return extensions[i].getAttribute("id") - } - } - - return undefined - `); - } -} diff --git a/e2e/webdriver/constants.ts b/e2e/webdriver/constants.ts deleted file mode 100644 index 3f1ecb252..000000000 --- a/e2e/webdriver/constants.ts +++ /dev/null @@ -1,10 +0,0 @@ -export enum ElementState { - Visible = 'visible', - Detached = 'detached', - Hidden = 'hidden' -} - -export enum SeleniumPort { - Chrome = 4444, - Firefox = 4445 -} diff --git a/e2e/webdriver/driver.ts b/e2e/webdriver/driver.ts deleted file mode 100644 index fed79c573..000000000 --- a/e2e/webdriver/driver.ts +++ /dev/null @@ -1,446 +0,0 @@ -import { promises as fs } from 'fs'; -import { strict as assert } from 'assert'; -import { - error as webdriverError, - ThenableWebDriver, - WebElement, - until, - By, - Condition, - WebDriver -} from 'selenium-webdriver'; -// @ts-ignore TODO: clarify types for package -import cssToXPath from 'css-to-xpath'; - -import { WebElementWithAPI } from './WebElementWithAPI'; - -import { DriverKey, PerformanceResults, RawLocator } from './types'; -import { ElementState } from './constants'; -import { TIMEOUT } from '../constants'; - -function wrapElementWithAPI( - element: WebElement, - driver: Driver -): WebElementWithAPI { - return new WebElementWithAPI(driver, element); -} - -/** - * For Selenium WebDriver API documentation, see: - * https://www.selenium.dev/selenium/docs/api/javascript/module/selenium-webdriver/index_exports_WebDriver.html - */ -export class Driver { - driver: ThenableWebDriver; - browser: string; - extensionUrl: string; - timeout: number; - - static Key: DriverKey; - static PAGES = { - POPUP: 'popup' - }; - - constructor( - driver: ThenableWebDriver, - browser: string, - extensionUrl: string, - timeout = 15000 - ) { - this.driver = driver; - this.browser = browser; - this.extensionUrl = extensionUrl; - this.timeout = timeout; - // The following values are found in - // https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/node/selenium-webdriver/lib/input.js#L50-L110 - // These should be replaced with string constants 'Enter' etc for playwright. - Driver.Key = { - BACK_SPACE: '\uE003', - ENTER: '\uE007' - }; - } - - async executeAsyncScript(script: string, ...args: string[]) { - return this.driver.executeAsyncScript(script, args); - } - - async executeScript(script: string, ...args: string[]) { - return this.driver.executeScript(script, args); - } - - buildLocator(locator: RawLocator): By { - if (typeof locator === 'string') { - return By.css(locator); - } else if (locator.value) { - return locator as By; - } else if (locator.xpath) { - return By.xpath(locator.xpath); - } else if (locator.text) { - if (locator.css) { - const xpath = cssToXPath - .parse(locator.css) - .where( - cssToXPath.xPathBuilder - .string() - .contains(locator.text) - .or( - cssToXPath.xPathBuilder - .string() - .contains(locator.text.split(' ').join('')) - ) - ) - .toXPath(); - return By.xpath(xpath); - } - return By.xpath( - `//${locator.tag ?? '*'}[contains(text(), '${locator.text}')]` - ); - } - throw new Error( - `The locator '${locator}' is not supported by the E2E test driver` - ); - } - - async get(url: string) { - await this.driver.get(url); - } - - async fill(rawLocator: RawLocator, input: string) { - const element = await this.findElement(rawLocator); - await element.fill(input); - return element; - } - - async press(rawLocator: RawLocator, keys: string) { - const element = await this.findElement(rawLocator); - await element.press(keys); - return element; - } - - async delay(time: number) { - await new Promise(resolve => setTimeout(resolve, time)); - } - - async wait( - condition: - | PromiseLike - | Condition - | ((driver: WebDriver) => T | PromiseLike) - | Function, - timeout = this.timeout - ) { - return await this.driver.wait(condition, timeout); - } - - async waitForSelector( - rawLocator: RawLocator, - { timeout = this.timeout, state = ElementState.Visible } = {} - ) { - const selector = this.buildLocator(rawLocator); - let element; - if (![ElementState.Visible, ElementState.Detached].includes(state)) { - throw new Error(`Provided state selector ${state} is not supported`); - } - if (state === ElementState.Visible) { - element = await this.driver.wait(until.elementLocated(selector), timeout); - } else if (state === ElementState.Detached) { - element = await this.driver.wait( - until.stalenessOf(await this.findElement(selector)), - timeout - ); - } - return wrapElementWithAPI(element as WebElement, this); - } - - async quit() { - await this.driver.quit(); - } - - // Element interactions - - async findElement(rawLocator: RawLocator, timeout?: number) { - const locator = this.buildLocator(rawLocator); - const element = await this.driver.wait( - until.elementLocated(locator), - timeout || this.timeout - ); - return wrapElementWithAPI(element, this); - } - - async findVisibleElement(rawLocator: string) { - const locator = this.buildLocator(rawLocator); - const element = await this.findElement(locator); - await this.driver.wait(until.elementIsVisible(element), this.timeout); - return wrapElementWithAPI(element, this); - } - - async findClickableElement(rawLocator: RawLocator) { - const locator = this.buildLocator(rawLocator); - const element = await this.findElement(locator); - await Promise.all([ - this.driver.wait(until.elementIsVisible(element), this.timeout), - this.driver.wait(until.elementIsEnabled(element), this.timeout) - ]); - return wrapElementWithAPI(element, this); - } - - async findElements(rawLocator: RawLocator) { - const locator = this.buildLocator(rawLocator); - const elements = await this.driver.wait( - until.elementsLocated(locator), - this.timeout - ); - return elements.map(element => wrapElementWithAPI(element, this)); - } - - async findClickableElements(rawLocator: RawLocator) { - const locator = this.buildLocator(rawLocator); - const elements = await this.findElements(locator); - await Promise.all( - elements.reduce((acc, element) => { - acc.push( - // @ts-ignore - this.driver.wait(until.elementIsVisible(element), this.timeout), - this.driver.wait(until.elementIsEnabled(element), this.timeout) - ); - return acc; - }, []) - ); - return elements.map(element => wrapElementWithAPI(element, this)); - } - - async clickElement(rawLocator: RawLocator) { - const locator = this.buildLocator(rawLocator); - const element = await this.findClickableElement(locator); - await element.click(); - } - - async clickPoint(rawLocator: RawLocator, x: number, y: number) { - const locator = this.buildLocator(rawLocator); - const element = await this.findElement(locator); - await this.driver - .actions() - .move({ origin: element, x, y }) - .click() - .perform(); - } - - async scrollToElement(element: WebElement) { - await this.driver.executeScript( - 'arguments[0].scrollIntoView(true)', - element - ); - } - - async assertElementNotPresent(rawLocator: RawLocator) { - const locator = this.buildLocator(rawLocator); - let dataTab; - try { - dataTab = await this.findElement(locator); - } catch (err) { - assert( - err instanceof webdriverError.NoSuchElementError || - err instanceof webdriverError.TimeoutError - ); - } - assert.ok(!dataTab, 'Found element that should not be present'); - } - - async isElementPresent( - locatorKey: By, - elementName?: string, - timeout?: TIMEOUT - ) { - try { - return Boolean( - await this.wait( - until.elementLocated(locatorKey), - timeout || this.timeout - ) - ); - } catch (e) { - if (elementName) { - await this.verboseReportOnFailure( - `Can't find element - ${elementName}` - ); - } - - return false; - } - } - - async areElementsPresent(locatorKey: By) { - const elements = await this.wait( - () => this.driver.findElements(locatorKey), - TIMEOUT['15sec'] - ); - - return elements.length > 0; - } - - // Navigation - - async navigate(page = Driver.PAGES.POPUP) { - return await this.driver.get(`${this.extensionUrl}/${page}.html`); - } - - // Metrics - - async collectMetrics() { - return await this.driver.executeScript(collectMetrics); - } - - // Window management - - async openNewPage(url: string) { - const newHandle = await this.driver.switchTo().newWindow(''); - await this.driver.get(url); - return newHandle; - } - - async switchToWindow(handle: string) { - await this.driver.switchTo().window(handle); - } - - // https://www.selenium.dev/documentation/webdriver/interactions/windows/#create-new-window-or-new-tab-and-switch - async createNewWindowOrTabAndSwitch(handle: 'tab' | 'window') { - // Opens a new tab/window and switches to new tab/window - await this.driver.switchTo().newWindow(handle); - } - - // Get the window handles of the all windows - async getAllWindowHandles() { - return await this.driver.getAllWindowHandles(); - } - - // Get the window handle of the current window - async getWindowHandle() { - return await this.driver.getWindowHandle(); - } - - async waitUntilXWindowHandles(x: number, delayStep = 1000, timeout = 5000) { - let timeElapsed = 0; - let windowHandles = []; - while (timeElapsed <= timeout) { - windowHandles = await this.driver.getAllWindowHandles(); - if (windowHandles.length === x) { - return windowHandles; - } - await this.delay(delayStep); - timeElapsed += delayStep; - } - throw new Error('waitUntilXWindowHandles timed out polling window handles'); - } - - async switchToWindowWithTitle( - title: string, - initialWindowHandles: string, - delayStep = 1000, - timeout = 5000 - ) { - let windowHandles = - initialWindowHandles || (await this.driver.getAllWindowHandles()); - let timeElapsed = 0; - while (timeElapsed <= timeout) { - for (const handle of windowHandles) { - await this.driver.switchTo().window(handle); - const handleTitle = await this.driver.getTitle(); - if (handleTitle === title) { - return handle; - } - } - await this.delay(delayStep); - timeElapsed += delayStep; - // refresh the window handles - windowHandles = await this.driver.getAllWindowHandles(); - } - - throw new Error(`No window with title: ${title}`); - } - - async closeAllWindowHandlesExcept( - exceptions: string[], - windowHandles: string[] - ): Promise { - // eslint-disable-next-line no-param-reassign - windowHandles = windowHandles || (await this.driver.getAllWindowHandles()); - - for (const handle of windowHandles) { - if (!exceptions.includes(handle)) { - await this.driver.switchTo().window(handle); - await this.delay(1000); - await this.driver.close(); - await this.delay(1000); - } - } - } - - // Error handling - - async verboseReportOnFailure(title: string) { - const artifactDir = `./test-artifacts/${this.browser}/${title}`; - const filepathBase = `${artifactDir}/test-failure`; - await fs.mkdir(artifactDir, { recursive: true }); - const screenshot = await this.driver.takeScreenshot(); - await fs.writeFile(`${filepathBase}-screenshot.png`, screenshot, { - encoding: 'base64' - }); - const htmlSource = await this.driver.getPageSource(); - await fs.writeFile(`${filepathBase}-dom.html`, htmlSource); - const uiState = await this.driver.executeScript( - // @ts-ignore TODO: modify `window` in global.d.ts - () => window.getCleanAppState && window.getCleanAppState() - ); - await fs.writeFile( - `${filepathBase}-state.json`, - JSON.stringify(uiState, null, 2) - ); - } - - async checkBrowserForConsoleErrors() { - const ignoredLogTypes = ['WARNING']; - const ignoredErrorMessages = [ - // Third-party Favicon 404s show up as errors - 'favicon.ico - Failed to load resource: the server responded with a status of 404 (Not Found)', - // Sentry rate limiting - 'Failed to load resource: the server responded with a status of 429', - // 4Byte - 'Failed to load resource: the server responded with a status of 502 (Bad Gateway)' - ]; - const browserLogs = await this.driver.manage().logs().get('browser'); - const errorEntries = browserLogs.filter( - entry => !ignoredLogTypes.includes(entry.level.toString()) - ); - const errorObjects = errorEntries.map(entry => entry.toJSON()); - return errorObjects.filter( - entry => - !ignoredErrorMessages.some(message => entry.message.includes(message)) - ); - } -} - -function collectMetrics() { - const results: PerformanceResults = { - paint: {}, - navigation: [] - }; - - window.performance - .getEntriesByType('paint') - .forEach(({ name, startTime }: PerformanceEntry) => { - results.paint[name] = startTime; - }); - window.performance - .getEntriesByType('navigation') - // @ts-ignore TODO: remote ts-ignore directive - .forEach((navigationEntry: PerformanceNavigationTiming) => { - results.navigation.push({ - domContentLoaded: navigationEntry.domContentLoadedEventEnd, - load: navigationEntry.loadEventEnd, - domInteractive: navigationEntry.domInteractive, - redirectCount: navigationEntry.redirectCount, - type: navigationEntry.type - }); - }); - - return results; -} diff --git a/e2e/webdriver/firefox.ts b/e2e/webdriver/firefox.ts deleted file mode 100644 index b9c3ecb41..000000000 --- a/e2e/webdriver/firefox.ts +++ /dev/null @@ -1,81 +0,0 @@ -import * as fs from 'fs'; -import * as os from 'os'; -import * as path from 'path'; -import * as firefox from 'selenium-webdriver/firefox'; -import { ThenableWebDriver, Browser } from 'selenium-webdriver'; -import { Builder, until, By } from 'selenium-webdriver'; -import remote from 'selenium-webdriver/remote'; - -import { WebDriverObject } from './types'; -import { ExtensionBuildPath } from '../../constants'; -import { SeleniumPort } from './constants'; - -const TEMP_PROFILE_PATH_PREFIX = path.join( - os.tmpdir(), - 'Casper-Signer-Profile' -); - -export class FirefoxDriver { - _driver: ThenableWebDriver; - - static async build( - port: number | undefined, - headless: boolean, - seleniumHost: string, - seleniumPort?: string - ): Promise { - const templateProfile = fs.mkdtempSync(TEMP_PROFILE_PATH_PREFIX); - const options = new firefox.Options().setProfile(templateProfile); - - options.setAcceptInsecureCerts(true); - options.setPreference('dom.events.asyncClipboard.read', true); - - const builder = new Builder() - .forBrowser(Browser.FIREFOX) - .setFirefoxOptions(options); - - if (port) { - const service = new firefox.ServiceBuilder().setPort(port); - builder.setFirefoxService(service); - } - - if (headless) { - builder.usingServer( - `http://${seleniumHost}:${seleniumPort || SeleniumPort.Firefox}/` - ); - } - - const driver = builder.build(); - const fxDriver = new FirefoxDriver(driver); - const extensionId = await fxDriver.installExtension( - ExtensionBuildPath.Firefox - ); - const internalExtensionId = await fxDriver.getInternalId(); - driver.setFileDetector(new remote.FileDetector()); - - return { - driver, - extensionId, - extensionUrl: `moz-extension://${internalExtensionId}` - }; - } - - constructor(driver: ThenableWebDriver) { - this._driver = driver; - } - - async installExtension(addonPath: string): Promise { - // @ts-ignore TODO: clarify firefox driver type - return await this._driver.installAddon(addonPath, true); - } - - async getInternalId() { - await this._driver.get('about:debugging#addons'); - return await this._driver - .wait( - until.elementLocated(By.xpath("//dl/div[contains(., 'UUID')]/dd")), - 1000 - ) - .getText(); - } -} diff --git a/e2e/webdriver/index.ts b/e2e/webdriver/index.ts deleted file mode 100644 index 0c7e84264..000000000 --- a/e2e/webdriver/index.ts +++ /dev/null @@ -1,58 +0,0 @@ -import { Browser } from 'selenium-webdriver'; -import { Driver } from './driver'; -import { ChromeDriver } from './chrome'; -import { FirefoxDriver } from './firefox'; - -import { BuildWebDriver, Browser as BrowserString } from './types'; - -export async function buildWebDriver( - buildWebDriver?: BuildWebDriver -): Promise { - const browser: BrowserString = - buildWebDriver?.browser || - (process.env.SELENIUM_BROWSER as BrowserString) || - 'chrome'; - const headless = !!process.env.SELENIUM_HEADLESS; - const seleniumHost = process.env.SELENIUM_HOST || 'localhost'; - const seleniumPort = process.env.SELENIUM_PORT; - - const { driver: seleniumDriver, extensionUrl } = await buildBrowserWebDriver({ - ...buildWebDriver, - browser, - headless, - seleniumHost, - seleniumPort - }); - - return new Driver(seleniumDriver, browser, extensionUrl); -} - -async function buildBrowserWebDriver({ - browser, - port, - headless, - seleniumHost, - seleniumPort -}: BuildWebDriver) { - switch (browser) { - case Browser.CHROME: { - return await ChromeDriver.build( - port, - headless, - seleniumHost, - seleniumPort - ); - } - case Browser.FIREFOX: { - return await FirefoxDriver.build( - port, - headless, - seleniumHost, - seleniumPort - ); - } - default: { - throw new Error(`Unrecognized browser: ${browser}`); - } - } -} diff --git a/e2e/webdriver/types.ts b/e2e/webdriver/types.ts deleted file mode 100644 index 641b02bf3..000000000 --- a/e2e/webdriver/types.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { ThenableWebDriver, WebElement } from 'selenium-webdriver'; - -export type RawLocator = string | LocatorObject; -export type Key = string | number | Promise; -export type Browser = 'chrome' | 'firefox' | 'safari'; - -export interface BuildWebDriver { - port?: number; - browser: Browser; - headless: boolean; - seleniumHost: string; - seleniumPort?: string; -} - -export interface DriverKey { - BACK_SPACE: string; - ENTER: string; -} - -interface LocatorObject { - value?: string; - xpath?: string; - text?: string; - css?: string; - tag?: string; -} - -export interface WebDriverObject { - driver: ThenableWebDriver; - extensionUrl: string; - extensionId?: string; -} - -export interface IWebElementWithAPI extends WebElement { - fill: (input: Key) => Promise; - press: (key: Key) => Promise; - waitForElementState: (state: string, timeout: number) => Promise; -} - -// Metrics - -interface NavigationResult { - domContentLoaded: number; - load: number; - domInteractive: number; - redirectCount: number; - type: string; -} - -export interface PerformanceResults { - paint: { - [key: string]: number; - }; - navigation: NavigationResult[]; -} diff --git a/package-lock.json b/package-lock.json index 9b2d434c4..e63941c51 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,7 +22,6 @@ "big.js": "^6.2.1", "casper-cep18-js-client": "1.0.2", "casper-js-sdk": "2.13.3", - "crx3": "^1.1.3", "date-fns": "^2.30.0", "facepaint": "^1.2.1", "i18next": "^23.5.1", @@ -58,6 +57,7 @@ "@babel/plugin-proposal-class-properties": "7.18.6", "@babel/preset-env": "7.23.2", "@babel/preset-react": "7.18.6", + "@playwright/test": "^1.39.0", "@redux-devtools/cli": "^3.0.1", "@testing-library/dom": "8.19.0", "@testing-library/jest-dom": "^5.16.5", @@ -70,20 +70,18 @@ "@types/facepaint": "^1.2.3", "@types/jest": "29.2.3", "@types/lodash.throttle": "4.1.7", + "@types/node": "^20.9.0", "@types/react": "^17.0.33", "@types/react-dom": "^17.0.10", "@types/remote-redux-devtools": "^0.5.5", - "@types/selenium-webdriver": "4.1.9", "@types/styled-components": "^5.1.26", "@types/testing-library__react": "^10.2.0", "babel-eslint": "^10.1.0", "babel-loader": "9.1.0", "babel-preset-react-app": "^10.0.0", - "chromedriver": "^119.0.1", "concurrently": "7.6.0", "copy-webpack-plugin": "^11.0.0", "css-loader": "6.8.1", - "css-to-xpath": "^0.1.0", "eslint": "8.49.0", "eslint-config-airbnb": "^19.0.4", "eslint-config-prettier": "^8.3.0", @@ -96,7 +94,6 @@ "eslint-plugin-react-hooks": "4.6.0", "file-loader": "^6.2.0", "fs-extra": "11.1.1", - "geckodriver": "4.2.1", "html-loader": "4.2.0", "html-webpack-plugin": "^5.5.0", "husky": "8.0.2", @@ -108,7 +105,6 @@ "markdownlint-cli": "0.32.2", "prettier": "3.0.3", "remote-redux-devtools": "^0.5.16", - "selenium-webdriver": "4.10.0", "source-map-loader": "4.0.1", "style-loader": "^3.3.1", "terser-webpack-plugin": "5.3.6", @@ -4472,6 +4468,21 @@ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, + "node_modules/@playwright/test": { + "version": "1.39.0", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.39.0.tgz", + "integrity": "sha512-3u1iFqgzl7zr004bGPYiN/5EZpRUSFddQBra8Rqll5N0/vfpqlP9I9EXqAoGacuAbX6c9Ulg/Cjqglp5VkK6UQ==", + "dev": true, + "dependencies": { + "playwright": "1.39.0" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=16" + } + }, "node_modules/@pnpm/network.ca-file": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz", @@ -5607,12 +5618,6 @@ "node": ">=10" } }, - "node_modules/@testim/chrome-version": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@testim/chrome-version/-/chrome-version-1.1.4.tgz", - "integrity": "sha512-kIhULpw9TrGYnHp/8VfdcneIcxKnLixmADtukQRtJUmsVlMg0niMkwV0xZmi8hqa57xqilIHjWFA0GKvEjVU5g==", - "dev": true - }, "node_modules/@testing-library/dom": { "version": "8.19.0", "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.19.0.tgz", @@ -6555,9 +6560,12 @@ "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==" }, "node_modules/@types/node": { - "version": "18.17.15", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.17.15.tgz", - "integrity": "sha512-2yrWpBk32tvV/JAd3HNHWuZn/VDN1P+72hWirHnvsvTGSqbANi+kSeuQR9yAHnbvaBvHDsoTdXV0Fe+iRtHLKA==" + "version": "20.9.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.9.0.tgz", + "integrity": "sha512-nekiGu2NDb1BcVofVcEKMIwzlx4NjHlcjhoxxKBNLtz15Y1z7MYf549DFvkHSId02Ax6kGwWntIBPC3l/JZcmw==", + "dependencies": { + "undici-types": "~5.26.4" + } }, "node_modules/@types/node-fetch": { "version": "2.6.4", @@ -6687,15 +6695,6 @@ "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" }, - "node_modules/@types/selenium-webdriver": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-4.1.9.tgz", - "integrity": "sha512-QNCYI3Rgjf3bZ2GZwXnUpOJUPR8p7+c9Um9MEKggLaUaF8UfjitH5aPCV1PF0DHVEiPYsXayGVS6+67DO3VILw==", - "dev": true, - "dependencies": { - "@types/ws": "*" - } - }, "node_modules/@types/send": { "version": "0.17.1", "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", @@ -7102,60 +7101,6 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/@wdio/logger": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-8.11.0.tgz", - "integrity": "sha512-IsuKSaYi7NKEdgA57h8muzlN/MVp1dQG+V4C//7g4m03YJUnNQLvDhJzLjdeNTfvZy61U7foQSyt+3ktNzZkXA==", - "dev": true, - "dependencies": { - "chalk": "^5.1.2", - "loglevel": "^1.6.0", - "loglevel-plugin-prefix": "^0.8.4", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": "^16.13 || >=18" - } - }, - "node_modules/@wdio/logger/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/@wdio/logger/node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", - "dev": true, - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@wdio/logger/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, "node_modules/@webassemblyjs/ast": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", @@ -8538,17 +8483,6 @@ "node": ">=4" } }, - "node_modules/axios": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.1.tgz", - "integrity": "sha512-vfBmhDpKafglh0EldBEbVuoe7DyAavGSLWhuSm5ZSEKQnHhBf0xAAwybbNH1IkrJNGnS/VG4I5yxig1pCEXE4g==", - "dev": true, - "dependencies": { - "follow-redirects": "^1.15.0", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, "node_modules/axobject-query": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", @@ -8558,12 +8492,6 @@ "dequal": "^2.0.3" } }, - "node_modules/b4a": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz", - "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==", - "dev": true - }, "node_modules/babel-eslint": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", @@ -8959,19 +8887,6 @@ "url": "https://opencollective.com/bigjs" } }, - "node_modules/binary": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", - "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", - "dev": true, - "dependencies": { - "buffers": "~0.1.1", - "chainsaw": "~0.1.0" - }, - "engines": { - "node": "*" - } - }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -9026,12 +8941,6 @@ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" }, - "node_modules/bo-selector": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/bo-selector/-/bo-selector-0.0.10.tgz", - "integrity": "sha512-Drm8W3MFLNhzHTXG93g8ll7wBlmiRr5C9W8R0sbsNQp/8h1IoPnzDH4dEQuJx8VaNq02io2ZfFnzKC1s64xRJg==", - "dev": true - }, "node_modules/body-parser": { "version": "1.20.1", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", @@ -9421,6 +9330,7 @@ "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, "engines": { "node": "*" } @@ -9444,24 +9354,6 @@ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, - "node_modules/buffer-indexof-polyfill": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", - "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/buffers": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", - "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==", - "dev": true, - "engines": { - "node": ">=0.2.0" - } - }, "node_modules/bundle-name": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz", @@ -9850,18 +9742,6 @@ "webidl-conversions": "^3.0.0" } }, - "node_modules/chainsaw": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", - "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==", - "dev": true, - "dependencies": { - "traverse": ">=0.3.0 <0.4" - }, - "engines": { - "node": "*" - } - }, "node_modules/chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -10139,28 +10019,6 @@ "node": ">=6.0" } }, - "node_modules/chromedriver": { - "version": "119.0.1", - "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-119.0.1.tgz", - "integrity": "sha512-lpCFFLaXPpvElTaUOWKdP74pFb/sJhWtWqMjn7Ju1YriWn8dT5JBk84BGXMPvZQs70WfCYWecxdMmwfIu1Mupg==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "@testim/chrome-version": "^1.1.4", - "axios": "^1.6.0", - "compare-versions": "^6.1.0", - "extract-zip": "^2.0.1", - "https-proxy-agent": "^5.0.1", - "proxy-from-env": "^1.1.0", - "tcp-port-used": "^1.0.2" - }, - "bin": { - "chromedriver": "bin/chromedriver" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/ci-info": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.4.0.tgz", @@ -10520,12 +10378,6 @@ "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", "dev": true }, - "node_modules/compare-versions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-6.1.0.tgz", - "integrity": "sha512-LNZQXhqUvqUTotpZ00qLSaify3b4VFD588aRr8MKFw4CMUr98ytzCW5wDH5qx/DEY5kCDXcbcRuCqL0szEf2tg==", - "dev": true - }, "node_modules/component-emitter": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", @@ -11062,22 +10914,6 @@ "node": ">= 8" } }, - "node_modules/crx3": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/crx3/-/crx3-1.1.3.tgz", - "integrity": "sha512-E4c3y/2ak83wAGN4h9Q8j3A2ii4bpRVf2vxinYYy+wJs8pyscMfEnKGzhgngZcRfOhUMr7/sxzy+lTZmQ/4KpQ==", - "dependencies": { - "mri": "^1.1.6", - "pbf": "^3.2.1", - "yazl": "^2.5.1" - }, - "bin": { - "crx3": "bin/crx3.js" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/crypto-random-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", @@ -11180,16 +11016,6 @@ "postcss-value-parser": "^4.0.2" } }, - "node_modules/css-to-xpath": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/css-to-xpath/-/css-to-xpath-0.1.0.tgz", - "integrity": "sha1-rA0cJs7wI/e9jPLh/B93E0vHDEc=", - "dev": true, - "dependencies": { - "bo-selector": "0.0.10", - "xpath-builder": "0.0.7" - } - }, "node_modules/css-vendor": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.8.tgz", @@ -12406,39 +12232,6 @@ "node": ">=0.10" } }, - "node_modules/duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", - "dev": true, - "dependencies": { - "readable-stream": "^2.0.2" - } - }, - "node_modules/duplexer2/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/duplexer2/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, "node_modules/duplexify": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", @@ -12527,6 +12320,15 @@ "integrity": "sha512-/Ng/W/kFv7wdEHYzxdK7Cv0BHEGSkSB3M0Ssl8Ndr1eMiYeas/+Mv4cNaDqamqWx6nd2uQZfPz6g25z25M/sdw==", "dev": true }, + "node_modules/electron/node_modules/@types/node": { + "version": "18.18.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.9.tgz", + "integrity": "sha512-0f5klcuImLnG4Qreu9hPj/rEfFq6YRc5n2mAjSsH+ec/mJL+3voBH0+8T7o8RpFjH7ovc+TRsL/c7OYIQsPTfQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, "node_modules/elliptic": { "version": "6.5.4", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", @@ -14576,45 +14378,6 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - }, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/fstream/node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/fstream/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -14771,109 +14534,6 @@ "node": ">=8" } }, - "node_modules/geckodriver": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/geckodriver/-/geckodriver-4.2.1.tgz", - "integrity": "sha512-4m/CRk0OI8MaANRuFIahvOxYTSjlNAO2p9JmE14zxueknq6cdtB5M9UGRQ8R9aMV0bLGNVHHDnDXmoXdOwJfWg==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "@wdio/logger": "^8.11.0", - "decamelize": "^6.0.0", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.1", - "node-fetch": "^3.3.1", - "tar-fs": "^3.0.4", - "unzipper": "^0.10.14", - "which": "^4.0.0" - }, - "bin": { - "geckodriver": "bin/geckodriver.js" - }, - "engines": { - "node": "^16.13 || >=18 || >=20" - } - }, - "node_modules/geckodriver/node_modules/agent-base": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", - "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", - "dev": true, - "dependencies": { - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/geckodriver/node_modules/http-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", - "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", - "dev": true, - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/geckodriver/node_modules/https-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz", - "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==", - "dev": true, - "dependencies": { - "agent-base": "^7.0.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/geckodriver/node_modules/isexe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", - "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", - "dev": true, - "engines": { - "node": ">=16" - } - }, - "node_modules/geckodriver/node_modules/node-fetch": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", - "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", - "dev": true, - "dependencies": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-fetch" - } - }, - "node_modules/geckodriver/node_modules/which": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", - "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", - "dev": true, - "dependencies": { - "isexe": "^3.1.1" - }, - "bin": { - "node-which": "bin/which.js" - }, - "engines": { - "node": "^16.13.0 || >=18.0.0" - } - }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -16252,6 +15912,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, "funding": [ { "type": "github", @@ -16464,15 +16125,6 @@ "dev": true, "optional": true }, - "node_modules/ip-regex": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", - "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", @@ -17019,12 +16671,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-url": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", - "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", - "dev": true - }, "node_modules/is-utf8": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", @@ -17101,20 +16747,6 @@ "node": ">=12" } }, - "node_modules/is2": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/is2/-/is2-2.0.7.tgz", - "integrity": "sha512-4vBQoURAXC6hnLFxD4VW7uc04XiwTTl/8ydYJxKvPwkWQrSjInkuM5VZVg6BGr1/natq69zDuvO9lGpLClJqvA==", - "dev": true, - "dependencies": { - "deep-is": "^0.1.3", - "ip-regex": "^4.1.0", - "is-url": "^1.2.4" - }, - "engines": { - "node": ">=v0.10.0" - } - }, "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -20290,12 +19922,6 @@ "node": ">= 14" } }, - "node_modules/listenercount": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", - "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==", - "dev": true - }, "node_modules/listr2": { "version": "6.6.1", "resolved": "https://registry.npmjs.org/listr2/-/listr2-6.6.1.tgz", @@ -20654,12 +20280,6 @@ "url": "https://tidelift.com/funding/github/npm/loglevel" } }, - "node_modules/loglevel-plugin-prefix": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/loglevel-plugin-prefix/-/loglevel-plugin-prefix-0.8.4.tgz", - "integrity": "sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g==", - "dev": true - }, "node_modules/long": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", @@ -21280,12 +20900,6 @@ "node": ">=10" } }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", - "dev": true - }, "node_modules/mktemp": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/mktemp/-/mktemp-0.4.0.tgz", @@ -21347,14 +20961,6 @@ "node": ">= 0.8" } }, - "node_modules/mri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", - "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", - "engines": { - "node": ">=4" - } - }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -22708,18 +22314,6 @@ "node": ">=8" } }, - "node_modules/pbf": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/pbf/-/pbf-3.2.1.tgz", - "integrity": "sha512-ClrV7pNOn7rtmoQVF4TS1vyU0WhYRnP92fzbfF75jAIwpnzdJXf8iTd4CMEqO4yUenH6NDqLiwjqlh6QgZzgLQ==", - "dependencies": { - "ieee754": "^1.1.12", - "resolve-protobuf-schema": "^2.1.0" - }, - "bin": { - "pbf": "bin/pbf" - } - }, "node_modules/pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", @@ -22926,6 +22520,36 @@ "node": ">=8" } }, + "node_modules/playwright": { + "version": "1.39.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.39.0.tgz", + "integrity": "sha512-naE5QT11uC/Oiq0BwZ50gDmy8c8WLPRTEWuSSFVG2egBka/1qMoSqYQcROMT9zLwJ86oPofcTH2jBY/5wWOgIw==", + "dev": true, + "dependencies": { + "playwright-core": "1.39.0" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=16" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/playwright-core": { + "version": "1.39.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.39.0.tgz", + "integrity": "sha512-+k4pdZgs1qiM+OUkSjx96YiKsXsmb59evFoqv8SKO067qBA+Z2s/dCzJij/ZhdQcs2zlTAgRKfeiiLm8PQ2qvw==", + "dev": true, + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=16" + } + }, "node_modules/postcss": { "version": "8.4.21", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", @@ -23223,11 +22847,6 @@ "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", "dev": true }, - "node_modules/protocol-buffers-schema": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz", - "integrity": "sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==" - }, "node_modules/proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -23241,12 +22860,6 @@ "node": ">= 0.10" } }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true - }, "node_modules/psl": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", @@ -24429,14 +24042,6 @@ "node": ">= 0.10" } }, - "node_modules/resolve-protobuf-schema": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/resolve-protobuf-schema/-/resolve-protobuf-schema-2.1.0.tgz", - "integrity": "sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==", - "dependencies": { - "protocol-buffers-schema": "^3.3.1" - } - }, "node_modules/resolve.exports": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", @@ -24799,41 +24404,6 @@ "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", "dev": true }, - "node_modules/selenium-webdriver": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.10.0.tgz", - "integrity": "sha512-hSQPw6jgc+ej/UEcdQPG/iBwwMeCEgZr9HByY/J8ToyXztEqXzU9aLsIyrlj1BywBcStO4JQK/zMUWWrV8+riA==", - "dev": true, - "dependencies": { - "jszip": "^3.10.1", - "tmp": "^0.2.1", - "ws": ">=8.13.0" - }, - "engines": { - "node": ">= 14.20.0" - } - }, - "node_modules/selenium-webdriver/node_modules/ws": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", - "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/selfsigned": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", @@ -26204,28 +25774,6 @@ "node": ">= 10" } }, - "node_modules/tar-fs": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.4.tgz", - "integrity": "sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==", - "dev": true, - "dependencies": { - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^3.1.5" - } - }, - "node_modules/tar-stream": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz", - "integrity": "sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==", - "dev": true, - "dependencies": { - "b4a": "^1.6.4", - "fast-fifo": "^1.2.0", - "streamx": "^2.15.0" - } - }, "node_modules/tarn": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/tarn/-/tarn-3.0.2.tgz", @@ -26235,33 +25783,6 @@ "node": ">=8.0.0" } }, - "node_modules/tcp-port-used": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/tcp-port-used/-/tcp-port-used-1.0.2.tgz", - "integrity": "sha512-l7ar8lLUD3XS1V2lfoJlCBaeoaWo/2xfYt81hM7VlvR4RrMVFqfmzfhLVk40hAb368uitje5gPtBRL1m/DGvLA==", - "dev": true, - "dependencies": { - "debug": "4.3.1", - "is2": "^2.0.6" - } - }, - "node_modules/tcp-port-used/node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "node_modules/teex": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/teex/-/teex-1.0.1.tgz", @@ -26634,15 +26155,6 @@ "node": ">=12" } }, - "node_modules/traverse": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", - "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==", - "dev": true, - "engines": { - "node": "*" - } - }, "node_modules/tree-kill": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", @@ -27270,6 +26782,11 @@ "node": "*" } }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", @@ -27389,54 +26906,6 @@ "node": ">=8" } }, - "node_modules/unzipper": { - "version": "0.10.14", - "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.14.tgz", - "integrity": "sha512-ti4wZj+0bQTiX2KmKWuwj7lhV+2n//uXEotUmGuQqrbVZSEGFMbI68+c6JCQ8aAmUWYvtHEz2A8K6wXvueR/6g==", - "dev": true, - "dependencies": { - "big-integer": "^1.6.17", - "binary": "~0.3.0", - "bluebird": "~3.4.1", - "buffer-indexof-polyfill": "~1.0.0", - "duplexer2": "~0.1.4", - "fstream": "^1.0.12", - "graceful-fs": "^4.2.2", - "listenercount": "~1.0.1", - "readable-stream": "~2.3.6", - "setimmediate": "~1.0.4" - } - }, - "node_modules/unzipper/node_modules/bluebird": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", - "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==", - "dev": true - }, - "node_modules/unzipper/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/unzipper/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, "node_modules/upath": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz", @@ -28912,12 +28381,6 @@ "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", "dev": true }, - "node_modules/xpath-builder": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/xpath-builder/-/xpath-builder-0.0.7.tgz", - "integrity": "sha1-Z9a7w/ajIOwxfj5jaMVwa2ER3uw=", - "dev": true - }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -29039,14 +28502,6 @@ "fd-slicer": "~1.1.0" } }, - "node_modules/yazl": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz", - "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==", - "dependencies": { - "buffer-crc32": "~0.2.3" - } - }, "node_modules/yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", @@ -32272,6 +31727,15 @@ } } }, + "@playwright/test": { + "version": "1.39.0", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.39.0.tgz", + "integrity": "sha512-3u1iFqgzl7zr004bGPYiN/5EZpRUSFddQBra8Rqll5N0/vfpqlP9I9EXqAoGacuAbX6c9Ulg/Cjqglp5VkK6UQ==", + "dev": true, + "requires": { + "playwright": "1.39.0" + } + }, "@pnpm/network.ca-file": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz", @@ -33147,12 +32611,6 @@ "defer-to-connect": "^2.0.0" } }, - "@testim/chrome-version": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@testim/chrome-version/-/chrome-version-1.1.4.tgz", - "integrity": "sha512-kIhULpw9TrGYnHp/8VfdcneIcxKnLixmADtukQRtJUmsVlMg0niMkwV0xZmi8hqa57xqilIHjWFA0GKvEjVU5g==", - "dev": true - }, "@testing-library/dom": { "version": "8.19.0", "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.19.0.tgz", @@ -34011,9 +33469,12 @@ "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==" }, "@types/node": { - "version": "18.17.15", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.17.15.tgz", - "integrity": "sha512-2yrWpBk32tvV/JAd3HNHWuZn/VDN1P+72hWirHnvsvTGSqbANi+kSeuQR9yAHnbvaBvHDsoTdXV0Fe+iRtHLKA==" + "version": "20.9.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.9.0.tgz", + "integrity": "sha512-nekiGu2NDb1BcVofVcEKMIwzlx4NjHlcjhoxxKBNLtz15Y1z7MYf549DFvkHSId02Ax6kGwWntIBPC3l/JZcmw==", + "requires": { + "undici-types": "~5.26.4" + } }, "@types/node-fetch": { "version": "2.6.4", @@ -34142,15 +33603,6 @@ "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" }, - "@types/selenium-webdriver": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-4.1.9.tgz", - "integrity": "sha512-QNCYI3Rgjf3bZ2GZwXnUpOJUPR8p7+c9Um9MEKggLaUaF8UfjitH5aPCV1PF0DHVEiPYsXayGVS6+67DO3VILw==", - "dev": true, - "requires": { - "@types/ws": "*" - } - }, "@types/send": { "version": "0.17.1", "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", @@ -34444,41 +33896,6 @@ } } }, - "@wdio/logger": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-8.11.0.tgz", - "integrity": "sha512-IsuKSaYi7NKEdgA57h8muzlN/MVp1dQG+V4C//7g4m03YJUnNQLvDhJzLjdeNTfvZy61U7foQSyt+3ktNzZkXA==", - "dev": true, - "requires": { - "chalk": "^5.1.2", - "loglevel": "^1.6.0", - "loglevel-plugin-prefix": "^0.8.4", - "strip-ansi": "^7.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true - }, - "chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", - "dev": true - }, - "strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "requires": { - "ansi-regex": "^6.0.1" - } - } - } - }, "@webassemblyjs/ast": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", @@ -35567,17 +34984,6 @@ "integrity": "sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g==", "dev": true }, - "axios": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.1.tgz", - "integrity": "sha512-vfBmhDpKafglh0EldBEbVuoe7DyAavGSLWhuSm5ZSEKQnHhBf0xAAwybbNH1IkrJNGnS/VG4I5yxig1pCEXE4g==", - "dev": true, - "requires": { - "follow-redirects": "^1.15.0", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, "axobject-query": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", @@ -35587,12 +34993,6 @@ "dequal": "^2.0.3" } }, - "b4a": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz", - "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==", - "dev": true - }, "babel-eslint": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", @@ -35888,16 +35288,6 @@ "resolved": "https://registry.npmjs.org/big.js/-/big.js-6.2.1.tgz", "integrity": "sha512-bCtHMwL9LeDIozFn+oNhhFoq+yQ3BNdnsLSASUxLciOb1vgvpHsIO1dsENiGMgbb4SkP5TrzWzRiLddn8ahVOQ==" }, - "binary": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", - "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", - "dev": true, - "requires": { - "buffers": "~0.1.1", - "chainsaw": "~0.1.0" - } - }, "binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -35951,12 +35341,6 @@ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" }, - "bo-selector": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/bo-selector/-/bo-selector-0.0.10.tgz", - "integrity": "sha512-Drm8W3MFLNhzHTXG93g8ll7wBlmiRr5C9W8R0sbsNQp/8h1IoPnzDH4dEQuJx8VaNq02io2ZfFnzKC1s64xRJg==", - "dev": true - }, "body-parser": { "version": "1.20.1", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", @@ -36243,7 +35627,8 @@ "buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==" + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true }, "buffer-equal": { "version": "1.0.0", @@ -36261,18 +35646,6 @@ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, - "buffer-indexof-polyfill": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", - "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", - "dev": true - }, - "buffers": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", - "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==", - "dev": true - }, "bundle-name": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz", @@ -36566,15 +35939,6 @@ } } }, - "chainsaw": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", - "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==", - "dev": true, - "requires": { - "traverse": ">=0.3.0 <0.4" - } - }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -36765,21 +36129,6 @@ "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", "dev": true }, - "chromedriver": { - "version": "119.0.1", - "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-119.0.1.tgz", - "integrity": "sha512-lpCFFLaXPpvElTaUOWKdP74pFb/sJhWtWqMjn7Ju1YriWn8dT5JBk84BGXMPvZQs70WfCYWecxdMmwfIu1Mupg==", - "dev": true, - "requires": { - "@testim/chrome-version": "^1.1.4", - "axios": "^1.6.0", - "compare-versions": "^6.1.0", - "extract-zip": "^2.0.1", - "https-proxy-agent": "^5.0.1", - "proxy-from-env": "^1.1.0", - "tcp-port-used": "^1.0.2" - } - }, "ci-info": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.4.0.tgz", @@ -37074,12 +36423,6 @@ "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", "dev": true }, - "compare-versions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-6.1.0.tgz", - "integrity": "sha512-LNZQXhqUvqUTotpZ00qLSaify3b4VFD588aRr8MKFw4CMUr98ytzCW5wDH5qx/DEY5kCDXcbcRuCqL0szEf2tg==", - "dev": true - }, "component-emitter": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", @@ -37488,16 +36831,6 @@ "which": "^2.0.1" } }, - "crx3": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/crx3/-/crx3-1.1.3.tgz", - "integrity": "sha512-E4c3y/2ak83wAGN4h9Q8j3A2ii4bpRVf2vxinYYy+wJs8pyscMfEnKGzhgngZcRfOhUMr7/sxzy+lTZmQ/4KpQ==", - "requires": { - "mri": "^1.1.6", - "pbf": "^3.2.1", - "yazl": "^2.5.1" - } - }, "crypto-random-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", @@ -37570,16 +36903,6 @@ "postcss-value-parser": "^4.0.2" } }, - "css-to-xpath": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/css-to-xpath/-/css-to-xpath-0.1.0.tgz", - "integrity": "sha1-rA0cJs7wI/e9jPLh/B93E0vHDEc=", - "dev": true, - "requires": { - "bo-selector": "0.0.10", - "xpath-builder": "0.0.7" - } - }, "css-vendor": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.8.tgz", @@ -38470,41 +37793,6 @@ "nan": "^2.14.0" } }, - "duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", - "dev": true, - "requires": { - "readable-stream": "^2.0.2" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, "duplexify": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", @@ -38580,6 +37868,17 @@ "@electron/get": "^2.0.0", "@types/node": "^18.11.18", "extract-zip": "^2.0.1" + }, + "dependencies": { + "@types/node": { + "version": "18.18.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.9.tgz", + "integrity": "sha512-0f5klcuImLnG4Qreu9hPj/rEfFq6YRc5n2mAjSsH+ec/mJL+3voBH0+8T7o8RpFjH7ovc+TRsL/c7OYIQsPTfQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + } } }, "electron-to-chromium": { @@ -40135,38 +39434,6 @@ "dev": true, "optional": true }, - "fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - }, - "dependencies": { - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "requires": { - "minimist": "^1.2.6" - } - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -40294,79 +39561,6 @@ } } }, - "geckodriver": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/geckodriver/-/geckodriver-4.2.1.tgz", - "integrity": "sha512-4m/CRk0OI8MaANRuFIahvOxYTSjlNAO2p9JmE14zxueknq6cdtB5M9UGRQ8R9aMV0bLGNVHHDnDXmoXdOwJfWg==", - "dev": true, - "requires": { - "@wdio/logger": "^8.11.0", - "decamelize": "^6.0.0", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.1", - "node-fetch": "^3.3.1", - "tar-fs": "^3.0.4", - "unzipper": "^0.10.14", - "which": "^4.0.0" - }, - "dependencies": { - "agent-base": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", - "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", - "dev": true, - "requires": { - "debug": "^4.3.4" - } - }, - "http-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", - "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", - "dev": true, - "requires": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - } - }, - "https-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz", - "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==", - "dev": true, - "requires": { - "agent-base": "^7.0.2", - "debug": "4" - } - }, - "isexe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", - "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", - "dev": true - }, - "node-fetch": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", - "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", - "dev": true, - "requires": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - } - }, - "which": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", - "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", - "dev": true, - "requires": { - "isexe": "^3.1.1" - } - } - } - }, "gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -41407,7 +40601,8 @@ "ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true }, "ignore": { "version": "5.2.0", @@ -41554,12 +40749,6 @@ "dev": true, "optional": true }, - "ip-regex": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", - "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==", - "dev": true - }, "ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", @@ -41919,12 +41108,6 @@ "unc-path-regex": "^0.1.2" } }, - "is-url": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", - "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", - "dev": true - }, "is-utf8": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", @@ -41980,17 +41163,6 @@ "integrity": "sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==", "dev": true }, - "is2": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/is2/-/is2-2.0.7.tgz", - "integrity": "sha512-4vBQoURAXC6hnLFxD4VW7uc04XiwTTl/8ydYJxKvPwkWQrSjInkuM5VZVg6BGr1/natq69zDuvO9lGpLClJqvA==", - "dev": true, - "requires": { - "deep-is": "^0.1.3", - "ip-regex": "^4.1.0", - "is-url": "^1.2.4" - } - }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -44418,12 +43590,6 @@ } } }, - "listenercount": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", - "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==", - "dev": true - }, "listr2": { "version": "6.6.1", "resolved": "https://registry.npmjs.org/listr2/-/listr2-6.6.1.tgz", @@ -44692,12 +43858,6 @@ "integrity": "sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg==", "dev": true }, - "loglevel-plugin-prefix": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/loglevel-plugin-prefix/-/loglevel-plugin-prefix-0.8.4.tgz", - "integrity": "sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g==", - "dev": true - }, "long": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", @@ -45181,12 +44341,6 @@ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true }, - "mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", - "dev": true - }, "mktemp": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/mktemp/-/mktemp-0.4.0.tgz", @@ -45238,11 +44392,6 @@ } } }, - "mri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", - "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==" - }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -46257,15 +45406,6 @@ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true }, - "pbf": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/pbf/-/pbf-3.2.1.tgz", - "integrity": "sha512-ClrV7pNOn7rtmoQVF4TS1vyU0WhYRnP92fzbfF75jAIwpnzdJXf8iTd4CMEqO4yUenH6NDqLiwjqlh6QgZzgLQ==", - "requires": { - "ieee754": "^1.1.12", - "resolve-protobuf-schema": "^2.1.0" - } - }, "pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", @@ -46420,6 +45560,22 @@ } } }, + "playwright": { + "version": "1.39.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.39.0.tgz", + "integrity": "sha512-naE5QT11uC/Oiq0BwZ50gDmy8c8WLPRTEWuSSFVG2egBka/1qMoSqYQcROMT9zLwJ86oPofcTH2jBY/5wWOgIw==", + "dev": true, + "requires": { + "fsevents": "2.3.2", + "playwright-core": "1.39.0" + } + }, + "playwright-core": { + "version": "1.39.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.39.0.tgz", + "integrity": "sha512-+k4pdZgs1qiM+OUkSjx96YiKsXsmb59evFoqv8SKO067qBA+Z2s/dCzJij/ZhdQcs2zlTAgRKfeiiLm8PQ2qvw==", + "dev": true + }, "postcss": { "version": "8.4.21", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", @@ -46639,11 +45795,6 @@ "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", "dev": true }, - "protocol-buffers-schema": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz", - "integrity": "sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==" - }, "proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -46654,12 +45805,6 @@ "ipaddr.js": "1.9.1" } }, - "proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true - }, "psl": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", @@ -47551,14 +46696,6 @@ "value-or-function": "^3.0.0" } }, - "resolve-protobuf-schema": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/resolve-protobuf-schema/-/resolve-protobuf-schema-2.1.0.tgz", - "integrity": "sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==", - "requires": { - "protocol-buffers-schema": "^3.3.1" - } - }, "resolve.exports": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", @@ -47841,26 +46978,6 @@ "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", "dev": true }, - "selenium-webdriver": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.10.0.tgz", - "integrity": "sha512-hSQPw6jgc+ej/UEcdQPG/iBwwMeCEgZr9HByY/J8ToyXztEqXzU9aLsIyrlj1BywBcStO4JQK/zMUWWrV8+riA==", - "dev": true, - "requires": { - "jszip": "^3.10.1", - "tmp": "^0.2.1", - "ws": ">=8.13.0" - }, - "dependencies": { - "ws": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", - "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", - "dev": true, - "requires": {} - } - } - }, "selfsigned": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", @@ -48944,55 +48061,12 @@ "yallist": "^4.0.0" } }, - "tar-fs": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.4.tgz", - "integrity": "sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==", - "dev": true, - "requires": { - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^3.1.5" - } - }, - "tar-stream": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz", - "integrity": "sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==", - "dev": true, - "requires": { - "b4a": "^1.6.4", - "fast-fifo": "^1.2.0", - "streamx": "^2.15.0" - } - }, "tarn": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/tarn/-/tarn-3.0.2.tgz", "integrity": "sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ==", "dev": true }, - "tcp-port-used": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/tcp-port-used/-/tcp-port-used-1.0.2.tgz", - "integrity": "sha512-l7ar8lLUD3XS1V2lfoJlCBaeoaWo/2xfYt81hM7VlvR4RrMVFqfmzfhLVk40hAb368uitje5gPtBRL1m/DGvLA==", - "dev": true, - "requires": { - "debug": "4.3.1", - "is2": "^2.0.6" - }, - "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - } - } - }, "teex": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/teex/-/teex-1.0.1.tgz", @@ -49296,12 +48370,6 @@ "punycode": "^2.1.1" } }, - "traverse": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", - "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==", - "dev": true - }, "tree-kill": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", @@ -49747,6 +48815,11 @@ "util-deprecate": "^1.0.2" } }, + "undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, "unicode-canonical-property-names-ecmascript": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", @@ -49839,56 +48912,6 @@ "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", "dev": true }, - "unzipper": { - "version": "0.10.14", - "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.14.tgz", - "integrity": "sha512-ti4wZj+0bQTiX2KmKWuwj7lhV+2n//uXEotUmGuQqrbVZSEGFMbI68+c6JCQ8aAmUWYvtHEz2A8K6wXvueR/6g==", - "dev": true, - "requires": { - "big-integer": "^1.6.17", - "binary": "~0.3.0", - "bluebird": "~3.4.1", - "buffer-indexof-polyfill": "~1.0.0", - "duplexer2": "~0.1.4", - "fstream": "^1.0.12", - "graceful-fs": "^4.2.2", - "listenercount": "~1.0.1", - "readable-stream": "~2.3.6", - "setimmediate": "~1.0.4" - }, - "dependencies": { - "bluebird": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", - "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==", - "dev": true - }, - "readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, "upath": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz", @@ -50967,12 +49990,6 @@ "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", "dev": true }, - "xpath-builder": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/xpath-builder/-/xpath-builder-0.0.7.tgz", - "integrity": "sha1-Z9a7w/ajIOwxfj5jaMVwa2ER3uw=", - "dev": true - }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -51069,14 +50086,6 @@ "fd-slicer": "~1.1.0" } }, - "yazl": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz", - "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==", - "requires": { - "buffer-crc32": "~0.2.3" - } - }, "yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", diff --git a/package.json b/package.json index 39e7f24c1..7a75882a1 100644 --- a/package.json +++ b/package.json @@ -25,12 +25,6 @@ "dev:firefox": "npm run dev:build:firefox && NODE_ENV=development BABEL_ENV=development BROWSER=firefox HASH=$(git rev-parse HEAD) PORT=3002 node utils/webserver.js", "start:firefox": "concurrently -k -n start,redux \"npm run dev:firefox\" \"npm run devtools:redux -- --port=8001\"", "start:safari": "npm run dev:build:manifest:v2:safari && ./convert-web-extension.sh && NODE_ENV=development BABEL_ENV=development BROWSER=safari PORT=3003 node utils/webserver.js", - "test:e2e:chrome": "npm run build:chrome && npm run pack-extension:chrome && SELENIUM_BROWSER=chrome jest --config=jest.e2e.config.js --detectOpenHandles e2e/tests && npm run remove-packed-extension:chrome", - "test:e2e:firefox": "npm run build:firefox && SELENIUM_BROWSER=firefox jest --config=jest.e2e.config.js --detectOpenHandles e2e/tests", - "test:e2e:chrome:headless:onboarding": "npm run build:chrome && npm run pack-extension:chrome && SELENIUM_BROWSER=chrome SELENIUM_HEADLESS=true jest --config=jest.e2e.config.js --detectOpenHandles e2e/tests/onboarding-flow && npm run remove-packed-extension:chrome", - "test:e2e:chrome:headless:popup": "MOCK_STATE=true npm run build:chrome && npm run pack-extension:chrome && SELENIUM_BROWSER=chrome SELENIUM_HEADLESS=true jest --config=jest.e2e.config.js --detectOpenHandles e2e/tests/popup && npm run remove-packed-extension:chrome", - "test:e2e:firefox:headless:onboarding": "npm run build:firefox && SELENIUM_BROWSER=firefox SELENIUM_HEADLESS=true jest --config=jest.e2e.config.js --detectOpenHandles e2e/tests/onboarding-flow", - "test:e2e:firefox:headless:popup": "MOCK_STATE=true npm run build:firefox && SELENIUM_BROWSER=firefox SELENIUM_HEADLESS=true jest --config=jest.e2e.config.js --detectOpenHandles e2e/tests/popup", "format:check": "prettier --check 'src/*.{js,jsx,ts,tsx,json,md}'", "format:write": "prettier --write 'src/*.{js,jsx,ts,tsx,json,md}'", "lint": "eslint ./src --ext .js,.jsx,.ts,.tsx", @@ -43,8 +37,10 @@ "dependency:graph": "npx madge --ts-config=tsconfig.json --image=graph.svg src/background/index.ts", "dependency:circular": "npx madge --ts-config=tsconfig.json --circular src/background/index.ts", "dependency:orphans": "npx madge --ts-config=tsconfig.json --orphans src/**/*", - "pack-extension:chrome": "crx3 --keyPath e2e/crx3.pem build/chrome", - "remove-packed-extension:chrome": "rm -rf chrome.crx" + "e2e:chrome:headless:onboarding": "TEST_ENV=true npm run build:chrome && PLAYWRIGHT_BROWSER=chromium npx playwright test e2e-tests/onboarding-flow --project chromium", + "e2e:chrome:ui:onboarding": "TEST_ENV=true npm run build:chrome && PLAYWRIGHT_BROWSER=chromium npx playwright test e2e-tests/onboarding-flow --ui --project chromium", + "e2e:chrome:headless:popup": "TEST_ENV=true MOCK_STATE=true npm run build:chrome && PLAYWRIGHT_BROWSER=chromium npx playwright test e2e-tests/popup --project chromium", + "e2e:chrome:ui:popup": "TEST_ENV=true MOCK_STATE=true npm run build:chrome && PLAYWRIGHT_BROWSER=chromium npx playwright test e2e-tests/popup --ui --project chromium" }, "lint-staged": { "*.md": "markdownlint", @@ -70,7 +66,6 @@ "big.js": "^6.2.1", "casper-cep18-js-client": "1.0.2", "casper-js-sdk": "2.13.3", - "crx3": "^1.1.3", "date-fns": "^2.30.0", "facepaint": "^1.2.1", "i18next": "^23.5.1", @@ -106,6 +101,7 @@ "@babel/plugin-proposal-class-properties": "7.18.6", "@babel/preset-env": "7.23.2", "@babel/preset-react": "7.18.6", + "@playwright/test": "^1.39.0", "@redux-devtools/cli": "^3.0.1", "@testing-library/dom": "8.19.0", "@testing-library/jest-dom": "^5.16.5", @@ -118,20 +114,18 @@ "@types/facepaint": "^1.2.3", "@types/jest": "29.2.3", "@types/lodash.throttle": "4.1.7", + "@types/node": "^20.9.0", "@types/react": "^17.0.33", "@types/react-dom": "^17.0.10", "@types/remote-redux-devtools": "^0.5.5", - "@types/selenium-webdriver": "4.1.9", "@types/styled-components": "^5.1.26", "@types/testing-library__react": "^10.2.0", "babel-eslint": "^10.1.0", "babel-loader": "9.1.0", "babel-preset-react-app": "^10.0.0", - "chromedriver": "^119.0.1", "concurrently": "7.6.0", "copy-webpack-plugin": "^11.0.0", "css-loader": "6.8.1", - "css-to-xpath": "^0.1.0", "eslint": "8.49.0", "eslint-config-airbnb": "^19.0.4", "eslint-config-prettier": "^8.3.0", @@ -144,7 +138,6 @@ "eslint-plugin-react-hooks": "4.6.0", "file-loader": "^6.2.0", "fs-extra": "11.1.1", - "geckodriver": "4.2.1", "html-loader": "4.2.0", "html-webpack-plugin": "^5.5.0", "husky": "8.0.2", @@ -156,7 +149,6 @@ "markdownlint-cli": "0.32.2", "prettier": "3.0.3", "remote-redux-devtools": "^0.5.16", - "selenium-webdriver": "4.10.0", "source-map-loader": "4.0.1", "style-loader": "^3.3.1", "terser-webpack-plugin": "5.3.6", diff --git a/playwright.config.ts b/playwright.config.ts new file mode 100644 index 000000000..52684bdac --- /dev/null +++ b/playwright.config.ts @@ -0,0 +1,44 @@ +import { defineConfig, devices } from '@playwright/test'; + +/** + * Read environment variables from file. + * https://github.com/motdotla/dotenv + */ +// require('dotenv').config(); + +/** + * See https://playwright.dev/docs/test-configuration. + */ +export default defineConfig({ + testDir: './e2e-tests', + /* Run tests in files in parallel */ + fullyParallel: true, + /* Fail the build on CI if you accidentally left test.only in the source code. */ + forbidOnly: !!process.env.CI, + /* Retry on CI only */ + retries: process.env.CI ? 2 : 0, + /* Opt out of parallel tests on CI. */ + workers: process.env.CI ? 2 : undefined, + /* Reporter to use. See https://playwright.dev/docs/test-reporters */ + reporter: 'html', + /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ + use: { + /* Base URL to use in actions like `await page.goto('/')`. */ + // baseURL: 'http://127.0.0.1:3000', + + /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ + trace: 'on-first-retry', + + contextOptions: { + permissions: ['clipboard-read', 'clipboard-write', 'accessibility-events'] + } + }, + + /* Configure projects for major browsers */ + projects: [ + { + name: 'chromium', + use: { ...devices['Desktop Chrome'] } + } + ] +}); diff --git a/src/background/close-window-by-reload-extension.ts b/src/background/close-window-by-reload-extension.ts index f6575d98c..b6f785b2b 100644 --- a/src/background/close-window-by-reload-extension.ts +++ b/src/background/close-window-by-reload-extension.ts @@ -1,10 +1,17 @@ import browser from 'webextension-polyfill'; +import { isSafariBuild } from '@src/utils'; + // It's hacky for Safari browser => browser.runtime.reload(); // window.close() method can only be called on windows that were opened by a script using the Window.open() method. // If the window was > not opened by a script, an error similar to this one appears in the console: // Scripts may not close windows that were not opened by script // WARNING: IT WILL RELOAD ENTIRE EXTENSION export function closeWindowByReloadExtension() { - browser.runtime.reload(); + if (isSafariBuild) { + browser.runtime.reload(); + return; + } + window.close(); + browser.tabs.create({ url: 'onboarding.html', active: true }); } diff --git a/src/background/create-open-window.ts b/src/background/create-open-window.ts index 589e6522f..9bc644082 100644 --- a/src/background/create-open-window.ts +++ b/src/background/create-open-window.ts @@ -1,6 +1,7 @@ -import { RouterPath } from '@src/apps/signature-request/router'; import browser from 'webextension-polyfill'; +import { RouterPath } from '@src/apps/signature-request/router'; + export enum WindowApp { ImportAccount = 'ImportAccount', ConnectToApp = 'ConnectToApp', @@ -102,7 +103,10 @@ export function createOpenWindow({ } async function openNewWindow(): Promise { - return browser.windows.getCurrent().then(currentWindow => { + return browser.windows.getCurrent().then(async currentWindow => { + // If this flag is true, we create a new window without any size and positions. + const isTestEnv = Boolean(process.env.TEST_ENV); + const windowWidth = currentWindow.width ?? 0; const xOffset = currentWindow.left ?? 0; const yOffset = currentWindow.top ?? 0; @@ -113,7 +117,7 @@ export function createOpenWindow({ // We need this check for Firefox. If the Firefox browser is in fullscreen mode it ignores the width and height that we set and opens a popup in a small size. // So we check it and if it is in a fullscreen mode we didn't set width and height, and the popup will also open in fullscreen mode. // This is a default behavior for Safari and Chrome, but Firefox doesn't do this, so we need to do this manually for it. - currentWindow.state === 'fullscreen' + currentWindow.state === 'fullscreen' || isTestEnv ? browser.windows.create({ url: getUrlByWindowApp(windowApp, searchParams), type: 'popup', diff --git a/src/fixtures/initial-state-for-popup-tests.ts b/src/fixtures/initial-state-for-popup-tests.ts index b181c7df3..410d61120 100644 --- a/src/fixtures/initial-state-for-popup-tests.ts +++ b/src/fixtures/initial-state-for-popup-tests.ts @@ -1,67 +1,98 @@ -export const initialStateForPopupTests = { - vaultCipher: - 'Z+mTlwWz7PHWEKcAUF9wq9VNyFYg+Z4Jxa8ZDMdWciRfeup0U/H8s/xqXlafslgdVL1JXlOrL07ifLq8DJ1hmR7SbGSNcJFDdlMJCebTC2MCLq469AffZOeFSYqbd0DgJhMy18yoVMrldYgwWuBcdilub4vko3dI3LNszgoDIKL2mj4Ze3H7LOEB69wN/rsCxGRc+8yPGlJFw/h+7R31bHt2Rgd2pNRUSxBHWga/UVsUMA0bKS28AEb6iF8RiVjWveciNAru0CQdMrFrrudD/AUgKo1a2X8Wv/d0jJ26keGJzWIab8vioym7rml111WGXs6/64mL7jdZ7Z/Wf/mhrJrxhGvHG84QFq56unZ6kmW+5vchUmExSAmxddXpziTeXUgAN5RMRD2Oc28l3EZqkTbVFyj/ZQebodQq7+pSvAZiLVAOE4HpMMJZvhv0v1CW/9H1sQYNllFLlSuCnxnhcstCWNFoTng8xM5vy1E6z3Fqd7xq49Nn40Xv4T4bXiEJvLECfwZNH2jaB687YOffTzKwAlIGp3uNtEMDFipILwWTGlBQP1jMEJeaF/sNo8lfqyAUitUHvpZkkWKMAgH3gC7bj/X5z/YkPhaCdA34fRoApGmQcLZhqVlEzPab4KDzMZ0HFCNQzA==', +import { RootState } from 'typesafe-actions'; + +import { NetworkSetting } from '@src/constants'; +import { TimeoutDurationSetting } from '@popup/constants'; + +export const initialStateForPopupTests: RootState = { + keys: { + passwordHash: + '83a08650bfee28f7c8fa850828cfa9800590f0385d964d03d1cd1b2ef05f42a8', + passwordSaltHash: + '088da9fc6cc474e408acfc9a2d4a2f83776332d53008b1c3ee0b9f52f10c8201', + keyDerivationSaltHash: + '5a92932f02799e90c2e6b994b6b8b23220dd3022570c43837f318e1d0379f1e2' + }, loginRetryCount: 0, + session: { + encryptionKeyHash: + '7b55663cb7cd7d96765373ce0ee8d6901244de1ed241d20f9afe18a81149ea71', + isLocked: true + }, vault: { secretPhrase: [ - 'garlic', - 'mean', - 'depth', - 'spider', 'hold', - 'stereo', - 'mask', - 'thing', - 'office', - 'congress', - 'amateur', - 'body', - 'meadow', - 'tone', - 'robust', - 'furnace', - 'wrong', - 'remember', - 'receive', - 'bounce', - 'opera', - 'bind', - 'bench', - 'own' + 'matrix', + 'spider', + 'subway', + 'bottom', + 'jazz', + 'charge', + 'fire', + 'lawn', + 'valley', + 'stay', + 'coil', + 'moral', + 'hospital', + 'dream', + 'cycle', + 'multiply', + 'december', + 'agree', + 'huge', + 'major', + 'tower', + 'devote', + 'old' ], accounts: [ { publicKey: - '02021006f7e7ecba9dda1fbd68bd88b0b509ce07a24c4ce8a96c62d44bec4beb9f9d', - secretKey: 'cuS+FaNCqTlbuQq9FSn8W9SCBS1WbJt/e4AAhHwTGb0=', + '0202b1943511b8c23b1b2b8ed7ddcedffcc7be70d9366a5005c7beab08a81b7ae633', + secretKey: 'Go8sSp3u/hSaDFCjFK6wdM4VZuWjqxEaNB38RaZHLA0=', name: 'Account 1' + }, + { + publicKey: + '0203b2e05f074452f5e69ba512310deceaca152ebd3394eadcec26c6e68e91aa7724', + secretKey: 'TCDeehVWtWeWP2PM/UKh2gQ6hgUpZ6v1D6lzmonYpm4=', + name: 'Account 2' } ], accountNamesByOriginDict: {}, + siteNameByOriginDict: {}, activeAccountName: 'Account 1', jsonById: {} }, - keys: { - passwordHash: - 'dcaa2a91cfc3517e2c8757b47c6e7e7a643da17f83c6a612aed80c81a32fdc2e', - passwordSaltHash: - 'b83ce544691efea5bf286afdf52f609fcc4ceac600ff07baa6108cf3ae076eac', - keyDerivationSaltHash: - '9b57a8338ab66be1947f7fa3c8afdbb34e3f55dd57d72ca198363fc728295acb' - }, windowManagement: { windowId: null }, - session: { - encryptionKeyHash: - '7a87c30acf34ccff836495f2935e11ac4a82e3e1517d2146bc9624f87238d7ee', - isLocked: true - }, + vaultCipher: + 'G89IRk1Zc+l46uPzkhTwSy09IUM5Q4R1JoIfOCeyMZEn47OnFK7Rk1fSPJ9gsSVsiq+d00AqKuW/lTV+s1OTGOucftVqKBF6XSyR9tG7P2sgRyJ6o5vS/h+tVSyqHt6wHFuTcee1IResAfxPJEjiKbMMm7gN1eFosvqM8utdBOgIkR17+HiojfvdI0Q07kWZXy0SuUceSxnXGHZU2LdMikZI2JmkaEgk+Qgm/nNzqlN2hAKxQRhr+68opUiIN/lpOYPLS64nZou6vuqSKu+Uogd8znNZOcFA+4+1zXlbJEp8HksSqy+fblAxDALpauljIogoPfwLIaSPU1GSwTfG63yuCiMVlAE+FwOAt31J+m0N++obOTomfp6ZjN0uOG700Kfm5NSWMMXqCp/f/M8C466/ONqsl0og/R1KXOw0nPYybzmgXCyS35yZyOXmxzKrKtXRdYVTBz79pjMbR8p1CCDnVLHJyKKIGbsGrX3ADjwkJHmBEjGPL2Qb4Ez7ATzcQ/XEdcK+VfzbNkJivssPMBV+6ETNWrwPbIR4BxfN12TbmdAej7nbP+oaM1plKhcoW1hp0oD60Ngwh8D1ztD9i+3R9yDGVNwjh56ytvk5E1Fo7e02NYBJgjvHFoBz+fX4iHlliHczRRVC3OVceZcPPMCeVuigkz7wirqscxBfnrc+EBXrziOrEc4NobSKJI33UEZAMLjxLZSD8CR9J9RrJzFCrda44P65uSypiSyw49EPdsG4etW9Eop2iHNO5Ny7oCr7mITsFvFkGtXDh+tQ4r6D4b7ZGe2AD2Jm/4t9jcBsPO3wHxPfS7eIHq8RUJZUK7DL90s8gt0wXzIFgIeMIc+mcK0HigU+zYaBHO9O+PUfetEHZANmSwsRu3nmiHogEZaPJAT+ATY3+3GjNMQ=', loginRetryLockoutTime: null, lastActivityTime: null, activeOrigin: null, settings: { - activeNetwork: 'Mainnet', - activeTimeoutDuration: '5 min' + activeNetwork: NetworkSetting.Testnet, + activeTimeoutDuration: TimeoutDurationSetting['5 min'], + isDarkMode: false + }, + recentRecipientPublicKeys: [], + accountInfo: { + balance: { + amountMotes: null, + amountFiat: null + }, + currencyRate: null, + accountCasperActivity: [], + accountErc20TokensActivity: null, + pendingTransactions: [], + erc20Tokens: [], + accountDeploys: [], + accountNftTokens: [], + nftTokensCount: 0, + accountDeploysCount: 0, + accountCasperActivityCount: 0, + accountTrackingIdOfSentNftTokens: {} } }; diff --git a/src/libs/layout/header/header-connection-status.tsx b/src/libs/layout/header/header-connection-status.tsx index 1e18985aa..a88c33a61 100644 --- a/src/libs/layout/header/header-connection-status.tsx +++ b/src/libs/layout/header/header-connection-status.tsx @@ -24,6 +24,7 @@ export function HeaderConnectionStatus() { return ( ( )} diff --git a/src/libs/ui/components/modal/modal.tsx b/src/libs/ui/components/modal/modal.tsx index 46fdc775e..ec37478af 100644 --- a/src/libs/ui/components/modal/modal.tsx +++ b/src/libs/ui/components/modal/modal.tsx @@ -38,10 +38,16 @@ interface RenderContentProps { export interface ModalProps extends BaseProps { children: (renderProps: RenderChildrenProps) => React.ReactNode | string; renderContent: (renderProps: RenderContentProps) => React.ReactNode | string; + dataTestId?: string; placement: 'top' | 'bottom'; } -export const Modal = ({ children, renderContent, placement }: ModalProps) => { +export const Modal = ({ + children, + renderContent, + placement, + dataTestId +}: ModalProps) => { const [isOpen, setIsOpen] = useState(false); const childrenContainerRef = useRef(null); @@ -61,6 +67,7 @@ export const Modal = ({ children, renderContent, placement }: ModalProps) => { <> { event.stopPropagation(); setIsOpen(true); diff --git a/src/libs/ui/components/popover/popover.tsx b/src/libs/ui/components/popover/popover.tsx index c61b5bad5..ca5f738dc 100644 --- a/src/libs/ui/components/popover/popover.tsx +++ b/src/libs/ui/components/popover/popover.tsx @@ -78,6 +78,7 @@ export function Popover({ <> setIsOpen(true)} > {children} diff --git a/webpack.config.js b/webpack.config.js index 6f6b31bcd..1eda08eab 100755 --- a/webpack.config.js +++ b/webpack.config.js @@ -170,7 +170,8 @@ const options = { new webpack.DefinePlugin({ 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV), 'process.env.MOCK_STATE': JSON.stringify(process.env.MOCK_STATE), - 'process.env.BROWSER': JSON.stringify(process.env.BROWSER) + 'process.env.BROWSER': JSON.stringify(process.env.BROWSER), + 'process.env.TEST_ENV': JSON.stringify(process.env.TEST_ENV) }), // manifest file generation new CopyWebpackPlugin({ From 86c965772ab2af170563917e08826908a09a6f70 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 25 Nov 2023 13:48:33 +0200 Subject: [PATCH 085/243] build(deps-dev): bump html-webpack-plugin from 5.5.0 to 5.5.3 (#858) Bumps [html-webpack-plugin](https://github.com/jantimon/html-webpack-plugin) from 5.5.0 to 5.5.3. - [Release notes](https://github.com/jantimon/html-webpack-plugin/releases) - [Changelog](https://github.com/jantimon/html-webpack-plugin/blob/main/CHANGELOG.md) - [Commits](https://github.com/jantimon/html-webpack-plugin/compare/v5.5.0...v5.5.3) --- updated-dependencies: - dependency-name: html-webpack-plugin dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 18 +++++++++--------- package.json | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index e63941c51..6cee0fccb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "Casper Wallet", - "version": "1.6.3", + "version": "1.7.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "Casper Wallet", - "version": "1.6.3", + "version": "1.7.0", "dependencies": { "@formatjs/intl": "2.6.2", "@hookform/resolvers": "2.9.10", @@ -95,7 +95,7 @@ "file-loader": "^6.2.0", "fs-extra": "11.1.1", "html-loader": "4.2.0", - "html-webpack-plugin": "^5.5.0", + "html-webpack-plugin": "^5.5.3", "husky": "8.0.2", "i18next-conv": "14.0.0", "jest": "29.3.1", @@ -15461,9 +15461,9 @@ } }, "node_modules/html-webpack-plugin": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz", - "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==", + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz", + "integrity": "sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg==", "dev": true, "dependencies": { "@types/html-minifier-terser": "^6.0.0", @@ -40279,9 +40279,9 @@ } }, "html-webpack-plugin": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz", - "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==", + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz", + "integrity": "sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg==", "dev": true, "requires": { "@types/html-minifier-terser": "^6.0.0", diff --git a/package.json b/package.json index 7a75882a1..25e02ff0e 100644 --- a/package.json +++ b/package.json @@ -139,7 +139,7 @@ "file-loader": "^6.2.0", "fs-extra": "11.1.1", "html-loader": "4.2.0", - "html-webpack-plugin": "^5.5.0", + "html-webpack-plugin": "^5.5.3", "husky": "8.0.2", "i18next-conv": "14.0.0", "jest": "29.3.1", From 087005b6a1b573ba6d401622db16326232e7a036 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 25 Nov 2023 13:50:17 +0200 Subject: [PATCH 086/243] build(deps-dev): bump prettier from 3.0.3 to 3.1.0 (#859) Bumps [prettier](https://github.com/prettier/prettier) from 3.0.3 to 3.1.0. - [Release notes](https://github.com/prettier/prettier/releases) - [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md) - [Commits](https://github.com/prettier/prettier/compare/3.0.3...3.1.0) --- updated-dependencies: - dependency-name: prettier dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Vynnyk Dmytro --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6cee0fccb..b6686259c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -103,7 +103,7 @@ "lint-staged": "14.0.1", "markdownlint": "0.26.2", "markdownlint-cli": "0.32.2", - "prettier": "3.0.3", + "prettier": "3.1.0", "remote-redux-devtools": "^0.5.16", "source-map-loader": "4.0.1", "style-loader": "^3.3.1", @@ -22661,9 +22661,9 @@ } }, "node_modules/prettier": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", - "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.0.tgz", + "integrity": "sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw==", "dev": true, "bin": { "prettier": "bin/prettier.cjs" @@ -45645,9 +45645,9 @@ "dev": true }, "prettier": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", - "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.0.tgz", + "integrity": "sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw==", "dev": true }, "prettier-linter-helpers": { diff --git a/package.json b/package.json index 25e02ff0e..f6cd97109 100644 --- a/package.json +++ b/package.json @@ -147,7 +147,7 @@ "lint-staged": "14.0.1", "markdownlint": "0.26.2", "markdownlint-cli": "0.32.2", - "prettier": "3.0.3", + "prettier": "3.1.0", "remote-redux-devtools": "^0.5.16", "source-map-loader": "4.0.1", "style-loader": "^3.3.1", From d1f0601545c042ef1f61dbb6b0ff11eca0afc90e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 25 Nov 2023 13:50:58 +0200 Subject: [PATCH 087/243] build(deps): bump react-loading-skeleton from 3.1.0 to 3.3.1 (#860) Bumps [react-loading-skeleton](https://github.com/dvtng/react-loading-skeleton) from 3.1.0 to 3.3.1. - [Release notes](https://github.com/dvtng/react-loading-skeleton/releases) - [Changelog](https://github.com/dvtng/react-loading-skeleton/blob/master/CHANGELOG.md) - [Commits](https://github.com/dvtng/react-loading-skeleton/compare/v3.1.0...v3.3.1) --- updated-dependencies: - dependency-name: react-loading-skeleton dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index b6686259c..f328388c6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -40,7 +40,7 @@ "react-identicons": "^1.2.5", "react-infinite-scroll-hook": "^4.1.1", "react-inlinesvg": "^3.0.1", - "react-loading-skeleton": "^3.1.0", + "react-loading-skeleton": "^3.3.1", "react-player": "^2.13.0", "react-query": "^3.39.3", "react-redux": "8.0.5", @@ -23327,9 +23327,9 @@ "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" }, "node_modules/react-loading-skeleton": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/react-loading-skeleton/-/react-loading-skeleton-3.1.0.tgz", - "integrity": "sha512-j1U1CWWs68nBPOg7tkQqnlFcAMFF6oEK6MgqAo15f8A5p7mjH6xyKn2gHbkcimpwfO0VQXqxAswnSYVr8lWzjw==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/react-loading-skeleton/-/react-loading-skeleton-3.3.1.tgz", + "integrity": "sha512-NilqqwMh2v9omN7LteiDloEVpFyMIa0VGqF+ukqp0ncVlYu1sKYbYGX9JEl+GtOT9TKsh04zCHAbavnQ2USldA==", "peerDependencies": { "react": ">=16.8.0" } @@ -46150,9 +46150,9 @@ "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" }, "react-loading-skeleton": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/react-loading-skeleton/-/react-loading-skeleton-3.1.0.tgz", - "integrity": "sha512-j1U1CWWs68nBPOg7tkQqnlFcAMFF6oEK6MgqAo15f8A5p7mjH6xyKn2gHbkcimpwfO0VQXqxAswnSYVr8lWzjw==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/react-loading-skeleton/-/react-loading-skeleton-3.3.1.tgz", + "integrity": "sha512-NilqqwMh2v9omN7LteiDloEVpFyMIa0VGqF+ukqp0ncVlYu1sKYbYGX9JEl+GtOT9TKsh04zCHAbavnQ2USldA==", "requires": {} }, "react-player": { diff --git a/package.json b/package.json index f6cd97109..6f63a7b6a 100644 --- a/package.json +++ b/package.json @@ -84,7 +84,7 @@ "react-identicons": "^1.2.5", "react-infinite-scroll-hook": "^4.1.1", "react-inlinesvg": "^3.0.1", - "react-loading-skeleton": "^3.1.0", + "react-loading-skeleton": "^3.3.1", "react-player": "^2.13.0", "react-query": "^3.39.3", "react-redux": "8.0.5", From 62c5b2332551339f691a6b9370f1f658a097a39a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 25 Nov 2023 13:53:26 +0200 Subject: [PATCH 088/243] build(deps-dev): bump @adobe/css-tools from 4.0.1 to 4.3.1 (#865) Bumps [@adobe/css-tools](https://github.com/adobe/css-tools) from 4.0.1 to 4.3.1. - [Changelog](https://github.com/adobe/css-tools/blob/main/History.md) - [Commits](https://github.com/adobe/css-tools/commits) --- updated-dependencies: - dependency-name: "@adobe/css-tools" dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index f328388c6..8bd1da27a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -132,9 +132,9 @@ } }, "node_modules/@adobe/css-tools": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.0.1.tgz", - "integrity": "sha512-+u76oB43nOHrF4DDWRLWDCtci7f3QJoEBigemIdIeTi1ODqjx6Tad9NCVnPRwewWlKkVab5PlK8DCtPTyX7S8g==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.1.tgz", + "integrity": "sha512-/62yikz7NLScCGAAST5SHdnjaDJQBDq0M2muyRTpf2VQhw6StBg2ALiu73zSJQ4fMVLA+0uBhBHAle7Wg+2kSg==", "dev": true }, "node_modules/@ampproject/remapping": { @@ -28565,9 +28565,9 @@ "dev": true }, "@adobe/css-tools": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.0.1.tgz", - "integrity": "sha512-+u76oB43nOHrF4DDWRLWDCtci7f3QJoEBigemIdIeTi1ODqjx6Tad9NCVnPRwewWlKkVab5PlK8DCtPTyX7S8g==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.1.tgz", + "integrity": "sha512-/62yikz7NLScCGAAST5SHdnjaDJQBDq0M2muyRTpf2VQhw6StBg2ALiu73zSJQ4fMVLA+0uBhBHAle7Wg+2kSg==", "dev": true }, "@ampproject/remapping": { From 95e689916ddbc4f418934870d4027be5d0dd6bee Mon Sep 17 00:00:00 2001 From: Ostap Piatkovskyi <44294945+ost-ptk@users.noreply.github.com> Date: Sat, 25 Nov 2023 13:58:34 +0200 Subject: [PATCH 089/243] added error handling for transfer and stakes (#867) Co-authored-by: ost-ptk Co-authored-by: Vynnyk Dmytro --- src/apps/popup/app-router.tsx | 12 +- src/apps/popup/pages/stakes/index.tsx | 17 +- src/apps/popup/pages/transfer-nft/index.tsx | 17 +- src/apps/popup/pages/transfer/index.tsx | 33 +- src/apps/popup/router/types.ts | 5 +- src/assets/illustrations/error.svg | 711 ++++++++++++++++++++ 6 files changed, 784 insertions(+), 11 deletions(-) create mode 100644 src/assets/illustrations/error.svg diff --git a/src/apps/popup/app-router.tsx b/src/apps/popup/app-router.tsx index 10691c271..2d9c6cf6a 100644 --- a/src/apps/popup/app-router.tsx +++ b/src/apps/popup/app-router.tsx @@ -21,7 +21,7 @@ import { CreateAccountPage } from '@src/apps/popup/pages/create-account'; import { DownloadSecretKeysPage } from '@popup/pages/download-secret-keys'; import { DownloadedSecretKeysPage } from '@popup/pages/downloaded-secret-keys'; -import { RouterPath, useTypedLocation } from '@popup/router'; +import { RouterPath, useTypedLocation, useTypedNavigate } from '@popup/router'; import { selectVaultHasAccounts } from '@background/redux/vault/selectors'; @@ -38,6 +38,7 @@ import { WalletQrCodePage } from '@popup/pages/wallet-qr-code'; import { TransferNftPage } from '@popup/pages/transfer-nft'; import { ChangePasswordPage } from '@popup/pages/change-password'; import { StakesPage } from '@popup/pages/stakes'; +import { ErrorPath, WindowErrorPage } from '@layout/error'; export function AppRouter() { const isLocked = useSelector(selectVaultIsLocked); @@ -255,6 +256,15 @@ function AppRoutes() { /> } /> } /> + + } + /> ); } diff --git a/src/apps/popup/pages/stakes/index.tsx b/src/apps/popup/pages/stakes/index.tsx index 0eaae0a29..c1be096b7 100644 --- a/src/apps/popup/pages/stakes/index.tsx +++ b/src/apps/popup/pages/stakes/index.tsx @@ -42,6 +42,7 @@ import { dispatchFetchValidatorsDetailsDataRequest } from '@libs/services/validators-service'; import { NoDelegations } from '@popup/pages/stakes/no-delegations'; +import { createErrorLocationState, ErrorPath } from '@layout/error'; export const StakesPage = () => { const [stakeStep, setStakeStep] = useState(StakeSteps.Validator); @@ -204,10 +205,22 @@ export const StakesPage = () => { triesLeft--; // Note: this timeout is needed because the deploy is not immediately visible in the explorer }, 2000); + + setStakeStep(StakeSteps.Success); + } else { + navigate( + ErrorPath, + createErrorLocationState({ + errorHeaderText: t('Something went wrong'), + errorContentText: t( + 'Please check browser console for error details, this will be a valuable for our team to fix the issue.' + ), + errorPrimaryButtonLabel: t('Close'), + errorRedirectPath: RouterPath.Home + }) + ); } }); - // TODO: need UI in case when the delegation request is failed - setStakeStep(StakeSteps.Success); } }; diff --git a/src/apps/popup/pages/transfer-nft/index.tsx b/src/apps/popup/pages/transfer-nft/index.tsx index 4304bef96..770b11ac8 100644 --- a/src/apps/popup/pages/transfer-nft/index.tsx +++ b/src/apps/popup/pages/transfer-nft/index.tsx @@ -36,6 +36,7 @@ import { accountTrackingIdOfSentNftTokensChanged } from '@background/redux/account-info/actions'; import { createAsymmetricKey } from '@libs/crypto/create-asymmetric-key'; +import { createErrorLocationState, ErrorPath } from '@layout/error'; export const TransferNftPage = () => { const [showSuccessScreen, setShowSuccessScreen] = useState(false); @@ -153,10 +154,22 @@ export const TransferNftPage = () => { triesLeft--; // Note: this timeout is needed because the deploy is not immediately visible in the explorer }, 2000); + + setShowSuccessScreen(true); + } else { + navigate( + ErrorPath, + createErrorLocationState({ + errorHeaderText: t('Something went wrong'), + errorContentText: t( + 'Please check browser console for error details, this will be a valuable for our team to fix the issue.' + ), + errorPrimaryButtonLabel: t('Close'), + errorRedirectPath: RouterPath.Home + }) + ); } }); - - setShowSuccessScreen(true); } }; diff --git a/src/apps/popup/pages/transfer/index.tsx b/src/apps/popup/pages/transfer/index.tsx index 306ff1a3d..f29143c0f 100644 --- a/src/apps/popup/pages/transfer/index.tsx +++ b/src/apps/popup/pages/transfer/index.tsx @@ -39,6 +39,7 @@ import { useActiveAccountErc20Tokens } from '@src/hooks/use-active-account-erc20 import { selectAccountBalance } from '@src/background/redux/account-info/selectors'; import { dispatchFetchExtendedDeploysInfo } from '@src/libs/services/account-activity-service'; import { accountPendingTransactionsChanged } from '@src/background/redux/account-info/actions'; +import { createErrorLocationState, ErrorPath } from '@layout/error'; import { getIsErc20Transfer, TransactionSteps } from './utils'; @@ -224,9 +225,21 @@ export const TransferPage = () => { triesLeft--; // Note: this timeout is needed because the deploy is not immediately visible in the explorer }, 2000); + + setTransferStep(TransactionSteps.Success); + } else { + navigate( + ErrorPath, + createErrorLocationState({ + errorHeaderText: t('Something went wrong'), + errorContentText: t( + 'Please check browser console for error details, this will be a valuable for our team to fix the issue.' + ), + errorPrimaryButtonLabel: t('Close'), + errorRedirectPath: RouterPath.Home + }) + ); } - // TODO: need UI in case when the transfer is failed - setTransferStep(TransactionSteps.Success); }); } else { // CSPR transfer @@ -265,9 +278,21 @@ export const TransferPage = () => { triesLeft--; // Note: this timeout is needed because the deploy is not immediately visible in the explorer }, 2000); + + setTransferStep(TransactionSteps.Success); + } else { + navigate( + ErrorPath, + createErrorLocationState({ + errorHeaderText: t('Something went wrong'), + errorContentText: t( + 'Please check browser console for error details, this will be a valuable for our team to fix the issue.' + ), + errorPrimaryButtonLabel: t('Close'), + errorRedirectPath: RouterPath.Home + }) + ); } - // TODO: need UI in case when the transfer is failed - setTransferStep(TransactionSteps.Success); }); } } diff --git a/src/apps/popup/router/types.ts b/src/apps/popup/router/types.ts index 1156cf0f5..a8336b22a 100644 --- a/src/apps/popup/router/types.ts +++ b/src/apps/popup/router/types.ts @@ -1,7 +1,8 @@ import { ActivityType } from '@src/constants'; import { TokenType } from '@src/hooks'; +import { ErrorLocationState } from '@layout/error'; -export type LocationState = { +export interface LocationState extends ErrorLocationState { showNavigationMenu?: boolean; activityDetailsData?: { fromAccount: string; @@ -18,4 +19,4 @@ export type LocationState = { contentType: string; url?: string; }; -}; +} diff --git a/src/assets/illustrations/error.svg b/src/assets/illustrations/error.svg new file mode 100644 index 000000000..3657d2e53 --- /dev/null +++ b/src/assets/illustrations/error.svg @@ -0,0 +1,711 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From e2dde80af616aa1fe27d7255584467ece3c7d28d Mon Sep 17 00:00:00 2001 From: Ostap Piatkovskyi <44294945+ost-ptk@users.noreply.github.com> Date: Mon, 27 Nov 2023 12:08:39 +0200 Subject: [PATCH 090/243] fix: fix wallet setup kick-off automatically in the Reset Wallet flow (#863) * fixed issue with auto launching onboarding after wallet reset * fixed prettier issues --------- Co-authored-by: ost-ptk --- src/apps/popup/pages/stakes/index.tsx | 4 ++-- src/apps/popup/pages/transfer/index.tsx | 4 ++-- src/background/close-window-by-reload-extension.ts | 7 ++++++- ...e-map-account-deploys-list-with-pending-transactions.ts | 4 ++-- src/libs/ui/components/avatar/avatar.tsx | 4 ++-- src/libs/ui/components/checkbox/checkbox.tsx | 4 ++-- .../connection-status-badge/connection-status-badge.tsx | 4 ++-- .../ui/components/secret-phrase-words-view/word-tag.tsx | 4 ++-- src/utils.ts | 1 + 9 files changed, 21 insertions(+), 15 deletions(-) diff --git a/src/apps/popup/pages/stakes/index.tsx b/src/apps/popup/pages/stakes/index.tsx index c1be096b7..006fc5e96 100644 --- a/src/apps/popup/pages/stakes/index.tsx +++ b/src/apps/popup/pages/stakes/index.tsx @@ -414,8 +414,8 @@ export const StakesPage = () => { {stakeStep === StakeSteps.Confirm ? getConfirmButtonText() : stakeStep === StakeSteps.Success - ? 'Done' - : 'Next'} + ? 'Done' + : 'Next'} diff --git a/src/apps/popup/pages/transfer/index.tsx b/src/apps/popup/pages/transfer/index.tsx index f29143c0f..82078a32c 100644 --- a/src/apps/popup/pages/transfer/index.tsx +++ b/src/apps/popup/pages/transfer/index.tsx @@ -437,8 +437,8 @@ export const TransferPage = () => { {transferStep === TransactionSteps.Confirm ? 'Send' : transferStep === TransactionSteps.Success - ? 'Done' - : 'Next'} + ? 'Done' + : 'Next'} diff --git a/src/background/close-window-by-reload-extension.ts b/src/background/close-window-by-reload-extension.ts index b6f785b2b..ef692510f 100644 --- a/src/background/close-window-by-reload-extension.ts +++ b/src/background/close-window-by-reload-extension.ts @@ -1,6 +1,6 @@ import browser from 'webextension-polyfill'; -import { isSafariBuild } from '@src/utils'; +import { isFirefoxBuild, isSafariBuild } from '@src/utils'; // It's hacky for Safari browser => browser.runtime.reload(); // window.close() method can only be called on windows that were opened by a script using the Window.open() method. @@ -9,6 +9,11 @@ import { isSafariBuild } from '@src/utils'; // WARNING: IT WILL RELOAD ENTIRE EXTENSION export function closeWindowByReloadExtension() { if (isSafariBuild) { + browser.tabs.create({ url: 'onboarding.html', active: true }); + browser.runtime.reload(); + return; + } + if (isFirefoxBuild) { browser.runtime.reload(); return; } diff --git a/src/hooks/use-map-account-deploys-list-with-pending-transactions/use-map-account-deploys-list-with-pending-transactions.ts b/src/hooks/use-map-account-deploys-list-with-pending-transactions/use-map-account-deploys-list-with-pending-transactions.ts index 4f63250b1..4bb3a02c1 100644 --- a/src/hooks/use-map-account-deploys-list-with-pending-transactions/use-map-account-deploys-list-with-pending-transactions.ts +++ b/src/hooks/use-map-account-deploys-list-with-pending-transactions/use-map-account-deploys-list-with-pending-transactions.ts @@ -44,8 +44,8 @@ export const useMapAccountDeploysListWithPendingTransactions = ( accountDeploys != null ? [...filteredTransactions, ...accountDeploys] : mappedPendingTransactions.length > 0 - ? mappedPendingTransactions - : null; + ? mappedPendingTransactions + : null; return { accountDeploysListWithPendingTransactions diff --git a/src/libs/ui/components/avatar/avatar.tsx b/src/libs/ui/components/avatar/avatar.tsx index 190307b26..0bc01bb72 100644 --- a/src/libs/ui/components/avatar/avatar.tsx +++ b/src/libs/ui/components/avatar/avatar.tsx @@ -72,8 +72,8 @@ export const Avatar = ({ ? 'assets/icons/connected-dark.svg' : 'assets/icons/connected-dark-big.svg' : displayContext === 'header' - ? 'assets/icons/connected-light.svg' - : 'assets/icons/connected-light-big.svg'; + ? 'assets/icons/connected-light.svg' + : 'assets/icons/connected-light-big.svg'; if (withConnectedStatus && isConnected !== undefined) { return ( diff --git a/src/libs/ui/components/checkbox/checkbox.tsx b/src/libs/ui/components/checkbox/checkbox.tsx index e0f27278c..460300ee2 100644 --- a/src/libs/ui/components/checkbox/checkbox.tsx +++ b/src/libs/ui/components/checkbox/checkbox.tsx @@ -55,8 +55,8 @@ export function Checkbox({ ? 'assets/icons/checkbox-square-checked.svg' : 'assets/icons/checkbox-square.svg' : checked - ? 'assets/icons/checkbox-checked.svg' - : 'assets/icons/checkbox.svg'; + ? 'assets/icons/checkbox-checked.svg' + : 'assets/icons/checkbox.svg'; return ( ` disabled ? theme.color.contentSecondary : selected - ? theme.color.contentOnFill - : 'inherit'}; + ? theme.color.contentOnFill + : 'inherit'}; border-radius: 6px; cursor: ${({ onClick, disabled }) => onClick && !disabled ? 'pointer' : 'auto'}; diff --git a/src/utils.ts b/src/utils.ts index e7e2648b1..66ce1b7e7 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -27,6 +27,7 @@ export const getUrlOrigin = (url: string | undefined) => { }; export const isSafariBuild = process.env.BROWSER === Browser.Safari; +export const isFirefoxBuild = process.env.BROWSER === Browser.Firefox; export const isValidU64 = (value?: string): boolean => { if (!value) { From b6a2b8c6787460751bd5c7aea1daec8cbc515ee4 Mon Sep 17 00:00:00 2001 From: Ostap Piatkovskyi <44294945+ost-ptk@users.noreply.github.com> Date: Mon, 27 Nov 2023 12:12:54 +0200 Subject: [PATCH 091/243] fix: fix truncated public key size (#868) * fixed issue with truncated public key size * fixed prettier issue --------- Co-authored-by: ost-ptk Co-authored-by: Vynnyk Dmytro --- e2e-tests/constants.ts | 10 +++++----- src/libs/layout/header/header-connection-status.tsx | 1 - src/libs/ui/components/hash/utils.ts | 10 ++++++++-- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/e2e-tests/constants.ts b/e2e-tests/constants.ts index c9fdad402..a31e3dca8 100644 --- a/e2e-tests/constants.ts +++ b/e2e-tests/constants.ts @@ -19,29 +19,29 @@ export const IMPORTED_ACCOUNT = { accountName: ACCOUNT_NAMES.importedAccountName, publicKey: '0184f6d260f4ee6869ddb36affe15456de6ae045278fa2f467bb677561ce0dad55', - truncatedPublicKey: '0184...ad55' + truncatedPublicKey: '0184f...dad55' }; export const DEFAULT_FIRST_ACCOUNT = { accountName: ACCOUNT_NAMES.defaultFirstAccountName, publicKey: '0202b1943511b8c23b1b2b8ed7ddcedffcc7be70d9366a5005c7beab08a81b7ae633', - truncatedPublicKey: '0202...e633' + truncatedPublicKey: '0202b...ae633' }; export const DEFAULT_SECOND_ACCOUNT = { accountName: ACCOUNT_NAMES.defaultSecondAccountName, publicKey: '0203b2e05f074452f5e69ba512310deceaca152ebd3394eadcec26c6e68e91aa7724', - truncatedPublicKey: '0203...7724' + truncatedPublicKey: '0203b...a7724' }; export const VALIDATOR = { name: 'Validator', - truncatedPublicKey: '0106...a2ca' + truncatedPublicKey: '0106c...ca2ca' }; export const NEW_VALIDATOR = { name: 'New validator', - truncatedPublicKey: '017d...009e' + truncatedPublicKey: '017d9...2009e' }; diff --git a/src/libs/layout/header/header-connection-status.tsx b/src/libs/layout/header/header-connection-status.tsx index a88c33a61..9c9133f7a 100644 --- a/src/libs/layout/header/header-connection-status.tsx +++ b/src/libs/layout/header/header-connection-status.tsx @@ -33,7 +33,6 @@ export function HeaderConnectionStatus() { Date: Tue, 28 Nov 2023 11:30:33 +0200 Subject: [PATCH 092/243] fix: fix the moon icon (#869) * updated the moon icon * updated the moon icon * fixed issue with same keys --------- Co-authored-by: ost-ptk --- src/apps/popup/pages/navigation-menu/index.tsx | 2 +- src/assets/icons/moon.svg | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/apps/popup/pages/navigation-menu/index.tsx b/src/apps/popup/pages/navigation-menu/index.tsx index 4f434b3e9..01475d6d5 100644 --- a/src/apps/popup/pages/navigation-menu/index.tsx +++ b/src/apps/popup/pages/navigation-menu/index.tsx @@ -207,7 +207,7 @@ export function NavigationMenuPageContent() { } }, { - id: 3, + id: 4, title: t('Change Password'), iconPath: 'assets/icons/secure.svg', disabled: false, diff --git a/src/assets/icons/moon.svg b/src/assets/icons/moon.svg index 0b5805b6c..be97e9441 100644 --- a/src/assets/icons/moon.svg +++ b/src/assets/icons/moon.svg @@ -1,3 +1,3 @@ - - + + From 93b1eef8cbee60beb62bab285e5cc03c929047ec Mon Sep 17 00:00:00 2001 From: Ostap Piatkovskyi <44294945+ost-ptk@users.noreply.github.com> Date: Tue, 28 Nov 2023 11:31:04 +0200 Subject: [PATCH 093/243] spacing between buttons was fixed (#870) Co-authored-by: ost-ptk --- src/apps/popup/pages/token-details/token.tsx | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/apps/popup/pages/token-details/token.tsx b/src/apps/popup/pages/token-details/token.tsx index f8fc7cc3f..3d372d23e 100644 --- a/src/apps/popup/pages/token-details/token.tsx +++ b/src/apps/popup/pages/token-details/token.tsx @@ -32,6 +32,8 @@ const FooterItemContainer = styled(CenteredFlexRow)` const ButtonContainer = styled(CenteredFlexColumn)` cursor: pointer; + + padding: 0 16px; `; type TokenInfoList = { @@ -163,7 +165,7 @@ export const Token = ({ erc20Tokens }: TokenProps) => { target="_blank" href={getBuyWithTopperUrl(activeAccount.publicKey)} > - + - Buy + Buy - + )} From f64e196632336cf2e173da34037d8e8f00894dd2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 28 Nov 2023 11:31:41 +0200 Subject: [PATCH 094/243] build(deps): bump react-hook-form from 7.40.0 to 7.48.2 (#871) Bumps [react-hook-form](https://github.com/react-hook-form/react-hook-form) from 7.40.0 to 7.48.2. - [Release notes](https://github.com/react-hook-form/react-hook-form/releases) - [Changelog](https://github.com/react-hook-form/react-hook-form/blob/master/CHANGELOG.md) - [Commits](https://github.com/react-hook-form/react-hook-form/compare/v7.40.0...v7.48.2) --- updated-dependencies: - dependency-name: react-hook-form dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8bd1da27a..6fdcc5c4e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -34,7 +34,7 @@ "qrcode.react": "^3.1.0", "react": "^17.0.2", "react-dom": "^17.0.2", - "react-hook-form": "7.40.0", + "react-hook-form": "7.48.2", "react-hot-loader": "4.13.1", "react-i18next": "12.0.0", "react-identicons": "^1.2.5", @@ -23178,9 +23178,9 @@ } }, "node_modules/react-hook-form": { - "version": "7.40.0", - "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.40.0.tgz", - "integrity": "sha512-0rokdxMPJs0k9bvFtY6dbcSydyNhnZNXCR49jgDr/aR03FDHFOK6gfh8ccqB3fl696Mk7lqh04xdm+agqWXKSw==", + "version": "7.48.2", + "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.48.2.tgz", + "integrity": "sha512-H0T2InFQb1hX7qKtDIZmvpU1Xfn/bdahWBN1fH19gSe4bBEqTfmlr7H3XWTaVtiK4/tpPaI1F3355GPMZYge+A==", "engines": { "node": ">=12.22.0" }, @@ -46056,9 +46056,9 @@ "requires": {} }, "react-hook-form": { - "version": "7.40.0", - "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.40.0.tgz", - "integrity": "sha512-0rokdxMPJs0k9bvFtY6dbcSydyNhnZNXCR49jgDr/aR03FDHFOK6gfh8ccqB3fl696Mk7lqh04xdm+agqWXKSw==", + "version": "7.48.2", + "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.48.2.tgz", + "integrity": "sha512-H0T2InFQb1hX7qKtDIZmvpU1Xfn/bdahWBN1fH19gSe4bBEqTfmlr7H3XWTaVtiK4/tpPaI1F3355GPMZYge+A==", "requires": {} }, "react-hot-loader": { diff --git a/package.json b/package.json index 6f63a7b6a..4d07f9945 100644 --- a/package.json +++ b/package.json @@ -78,7 +78,7 @@ "qrcode.react": "^3.1.0", "react": "^17.0.2", "react-dom": "^17.0.2", - "react-hook-form": "7.40.0", + "react-hook-form": "7.48.2", "react-hot-loader": "4.13.1", "react-i18next": "12.0.0", "react-identicons": "^1.2.5", From 9f0de564487c6b1473fc381fa522f9c32d704b9e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 2 Dec 2023 13:15:31 +0200 Subject: [PATCH 095/243] build(deps-dev): bump web-ext from 7.6.2 to 7.8.0 (#874) Bumps [web-ext](https://github.com/mozilla/web-ext) from 7.6.2 to 7.8.0. - [Release notes](https://github.com/mozilla/web-ext/releases) - [Commits](https://github.com/mozilla/web-ext/compare/7.6.2...7.8.0) --- updated-dependencies: - dependency-name: web-ext dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 1207 ++++++++++++++++++++++++++++++--------------- package.json | 2 +- 2 files changed, 807 insertions(+), 402 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6fdcc5c4e..dddfafbbf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -114,7 +114,7 @@ "tsconfig-paths-webpack-plugin": "^4.1.0", "typescript": "4.9.3", "url-loader": "^4.1.1", - "web-ext": "7.6.2", + "web-ext": "7.8.0", "webextension-polyfill": "0.10.0", "webpack": "5.88.2", "webpack-cli": "5.1.4", @@ -2938,35 +2938,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/@eslint/eslintrc/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, "node_modules/@eslint/eslintrc/node_modules/globals": { "version": "13.21.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", @@ -2995,9 +2966,9 @@ } }, "node_modules/@eslint/js": { - "version": "8.36.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.36.0.tgz", - "integrity": "sha512-lxJ9R5ygVm8ZWgYdUweoq5ownDlJ4upvoWmO4eLxBYHdMo+vZ/Rx0EN6MbKWDJOSUGrqJy2Gt+Dyv/VKml0fjg==", + "version": "8.48.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.48.0.tgz", + "integrity": "sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -3311,6 +3282,79 @@ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -4268,9 +4312,9 @@ } }, "node_modules/@mdn/browser-compat-data": { - "version": "5.2.42", - "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-5.2.42.tgz", - "integrity": "sha512-CD/2ai1W45cDN/zN2AcYduDavU+nq9aStyQizi4MHxnwkRvS/H24WIjgc1qD8CISoqXa8AAIe+A+zpWxwV7a2Q==", + "version": "5.3.14", + "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-5.3.14.tgz", + "integrity": "sha512-Y9XQrphVcE6u9xMm+gIqN86opbU/5s2W1pdPyKRyFV5B7+2jWM2gLI5JpfhZncaoDKvhy6FYwK04aCz5UM/bTQ==", "dev": true }, "node_modules/@noble/ciphers": { @@ -4412,6 +4456,16 @@ "ws": "^7.0.0" } }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, "node_modules/@pkgr/utils": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.4.2.tgz", @@ -7390,55 +7444,55 @@ } }, "node_modules/addons-linter": { - "version": "5.32.0", - "resolved": "https://registry.npmjs.org/addons-linter/-/addons-linter-5.32.0.tgz", - "integrity": "sha512-Lf6oOyw8X9z5BMd9xhQwSbPlN2PUlzDLnYLAVT5lkrgXEx0fO9hRk4JRxWZ8+rFGz+mCIA2TTClZF2f+MKgJQA==", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/addons-linter/-/addons-linter-6.13.0.tgz", + "integrity": "sha512-vYgDXl8aLmN1zU4HmsQdG6tUFByg499mHnTEMWDUbSkoYDq3koTne08EsqU6sD+o814u8FxclQP7580L0g/tPQ==", "dev": true, "dependencies": { "@fluent/syntax": "0.19.0", - "@mdn/browser-compat-data": "5.2.42", + "@mdn/browser-compat-data": "5.3.14", "addons-moz-compare": "1.3.0", - "addons-scanner-utils": "8.5.0", + "addons-scanner-utils": "9.3.0", "ajv": "8.12.0", "chalk": "4.1.2", "cheerio": "1.0.0-rc.12", "columnify": "1.6.0", "common-tags": "1.8.2", "deepmerge": "4.3.1", - "eslint": "8.36.0", + "eslint": "8.48.0", "eslint-plugin-no-unsanitized": "4.0.2", - "eslint-visitor-keys": "3.3.0", - "espree": "9.5.0", + "eslint-visitor-keys": "3.4.3", + "espree": "9.6.1", "esprima": "4.0.1", "fast-json-patch": "3.1.1", - "glob": "9.3.0", + "glob": "10.3.4", "image-size": "1.0.2", "is-mergeable-object": "1.1.1", "jed": "1.1.1", "json-merge-patch": "1.0.2", "os-locale": "5.0.0", - "pino": "8.11.0", - "postcss": "8.4.21", + "pino": "8.15.0", + "postcss": "8.4.29", "relaxed-json": "1.0.3", - "semver": "7.3.8", + "semver": "7.5.4", "sha.js": "2.4.11", "source-map-support": "0.5.21", "tosource": "1.0.0", "upath": "2.0.1", - "yargs": "17.7.1", + "yargs": "17.7.2", "yauzl": "2.10.0" }, "bin": { "addons-linter": "bin/addons-linter" }, "engines": { - "node": ">=12.21.0" + "node": ">=16.0.0" } }, "node_modules/addons-linter/node_modules/addons-scanner-utils": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/addons-scanner-utils/-/addons-scanner-utils-8.5.0.tgz", - "integrity": "sha512-X35SYZRdSnxx7UZuAk+DizKihQp2Ze2c5GV+5nnRr/FFyx/fOgE3Zo8jdhzSne57PENE9w1ZVocBLJTN6UDB3g==", + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/addons-scanner-utils/-/addons-scanner-utils-9.3.0.tgz", + "integrity": "sha512-YZWzNpP+em650XlZNH7NbTUcHJXqC0ihLEgwn17GGTqervyChqQffd9sm/QXNur0dmj7Ks1mD77iTg9XcJw64A==", "dev": true, "dependencies": { "@types/yauzl": "2.10.0", @@ -7451,7 +7505,7 @@ "peerDependencies": { "body-parser": "1.20.2", "express": "4.18.2", - "node-fetch": "2.6.7", + "node-fetch": "2.6.11", "safe-compare": "1.1.4" }, "peerDependenciesMeta": { @@ -7562,6 +7616,20 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/addons-linter/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/addons-linter/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -7591,6 +7659,12 @@ "node": ">= 0.6" } }, + "node_modules/addons-linter/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, "node_modules/addons-linter/node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -7604,27 +7678,27 @@ } }, "node_modules/addons-linter/node_modules/eslint": { - "version": "8.36.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.36.0.tgz", - "integrity": "sha512-Y956lmS7vDqomxlaaQAHVmeb4tNMp2FWIvU/RnU5BD3IKMD/MJPr76xdyr68P8tV1iNMvN2mRK0yy3c+UjL+bw==", + "version": "8.48.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.48.0.tgz", + "integrity": "sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.1", - "@eslint/js": "8.36.0", - "@humanwhocodes/config-array": "^0.11.8", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.2", + "@eslint/js": "8.48.0", + "@humanwhocodes/config-array": "^0.11.10", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.5.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -7632,22 +7706,19 @@ "find-up": "^5.0.0", "glob-parent": "^6.0.2", "globals": "^13.19.0", - "grapheme-splitter": "^1.0.4", + "graphemer": "^1.4.0", "ignore": "^5.2.0", - "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", + "optionator": "^0.9.3", "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" }, "bin": { @@ -7661,12 +7732,15 @@ } }, "node_modules/addons-linter/node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/addons-linter/node_modules/eslint/node_modules/ajv": { @@ -7707,16 +7781,36 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/addons-linter/node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/addons-linter/node_modules/glob": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.0.tgz", - "integrity": "sha512-EAZejC7JvnQINayvB/7BJbpZpNOJ8Lrw2OZNEvQxe0vaLn1SuwMcfV7/MNaX8L/T0wmptBFI4YMtDvSBxYDc7w==", + "version": "10.3.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.4.tgz", + "integrity": "sha512-6LFElP3A+i/Q8XQKEvZjkEWEOTgAIALR9AO2rwT8bgPhDd1anmqDJDZ6lLddI4ehxxxR1S5RIqKe1uapMQfYaQ==", "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "minimatch": "^7.4.1", - "minipass": "^4.2.4", - "path-scurry": "^1.6.1" + "foreground-child": "^3.1.0", + "jackspeak": "^2.0.3", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/cjs/src/bin.js" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -7738,24 +7832,24 @@ } }, "node_modules/addons-linter/node_modules/glob/node_modules/minimatch": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz", - "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=16 || 14 >=14.17" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/addons-linter/node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -7776,6 +7870,15 @@ "node": ">=8" } }, + "node_modules/addons-linter/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/addons-linter/node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", @@ -7798,12 +7901,12 @@ } }, "node_modules/addons-linter/node_modules/minipass": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", - "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", "dev": true, "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.17" } }, "node_modules/addons-linter/node_modules/ms": { @@ -7856,9 +7959,9 @@ } }, "node_modules/addons-linter/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -7870,6 +7973,32 @@ "node": ">=10" } }, + "node_modules/addons-linter/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/addons-linter/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/addons-linter/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -7894,6 +8023,33 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/addons-linter/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/addons-linter/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, "node_modules/addons-moz-compare": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/addons-moz-compare/-/addons-moz-compare-1.3.0.tgz", @@ -9690,30 +9846,6 @@ "typedjson": "^1.6.0-rc2" } }, - "node_modules/casper-js-sdk/node_modules/node-fetch": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.11.tgz", - "integrity": "sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/casper-js-sdk/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, "node_modules/casper-js-sdk/node_modules/ts-results": { "name": "@casperlabs/ts-results", "version": "3.3.5", @@ -9728,20 +9860,6 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.3.tgz", "integrity": "sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==" }, - "node_modules/casper-js-sdk/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "node_modules/casper-js-sdk/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, "node_modules/chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -13311,23 +13429,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, "node_modules/eslint/node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -13453,14 +13554,14 @@ } }, "node_modules/espree": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.0.tgz", - "integrity": "sha512-JPbJGhKc47++oo4JkEoTe2wjy4fmMwvFpgJT9cQzmfXKp22Dr6Hf1tdCteLz1h0P3t+mGvWZ+4Uankvh8+c6zw==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "dependencies": { - "acorn": "^8.8.0", + "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^3.4.1" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -13470,12 +13571,15 @@ } }, "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/esprima": { @@ -13810,9 +13914,9 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" }, "node_modules/fast-redact": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.2.0.tgz", - "integrity": "sha512-zaTadChr+NekyzallAMXATXLOR8MNx3zqpZ0MUF2aGf4EathnG0f32VLODNlY8IuGY3HoRO2L6/6fSzNsLaHIw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.3.0.tgz", + "integrity": "sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==", "dev": true, "engines": { "node": ">=6" @@ -15008,12 +15112,6 @@ "integrity": "sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w==", "dev": true }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", @@ -16899,6 +16997,24 @@ "set-function-name": "^2.0.1" } }, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, "node_modules/javascript-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-2.1.0.tgz", @@ -18830,16 +18946,6 @@ "url": "https://github.com/sponsors/panva" } }, - "node_modules/js-sdsl": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz", - "integrity": "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" - } - }, "node_modules/js-sha3": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", @@ -21099,10 +21205,16 @@ "integrity": "sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA==" }, "node_modules/nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -21177,9 +21289,9 @@ } }, "node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.11.tgz", + "integrity": "sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -21617,10 +21729,13 @@ "dev": true }, "node_modules/on-exit-leak-free": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.0.tgz", - "integrity": "sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w==", - "dev": true + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz", + "integrity": "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } }, "node_modules/on-finished": { "version": "2.4.1", @@ -22266,13 +22381,13 @@ "integrity": "sha1-BrJhE/Vr6rBCVFojv6iAA8ysJg8=" }, "node_modules/path-scurry": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.0.tgz", - "integrity": "sha512-tZFEaRQbMLjwrsmidsGJ6wDMv0iazJWk6SfIKnY4Xru8auXgmJkOBa5DUbYFcFD2Rzk2+KDlIiF0GVXNCbgC7g==", + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", "dev": true, "dependencies": { "lru-cache": "^9.1.1 || ^10.0.0", - "minipass": "^5.0.0 || ^6.0.2" + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -22282,18 +22397,18 @@ } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.0.tgz", - "integrity": "sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", + "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", "dev": true, "engines": { "node": "14 || >=16.14" } }, "node_modules/path-scurry/node_modules/minipass": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-6.0.2.tgz", - "integrity": "sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", "dev": true, "engines": { "node": ">=16 || 14 >=14.17" @@ -22362,9 +22477,9 @@ } }, "node_modules/pino": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/pino/-/pino-8.11.0.tgz", - "integrity": "sha512-Z2eKSvlrl2rH8p5eveNUnTdd4AjJk8tAsLkHYZQKGHP4WTh2Gi1cOSOs3eWPqaj+niS3gj4UkoreoaWgF3ZWYg==", + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-8.15.0.tgz", + "integrity": "sha512-olUADJByk4twxccmAxb1RiGKOSvddHugCV3wkqjyv+3Sooa2KLrmXrKEWOKi0XPCLasRR5jBXxioE1jxUa4KzQ==", "dev": true, "dependencies": { "atomic-sleep": "^1.0.0", @@ -22418,15 +22533,16 @@ } }, "node_modules/pino-abstract-transport/node_modules/readable-stream": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.4.1.tgz", - "integrity": "sha512-llAHX9QC25bz5RPIoTeJxPaA/hgryaldValRhVZ2fK9bzbmFiscpz8fw6iBTvJfAk1w4FC1KXQme/nO7fbKyKg==", + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.4.2.tgz", + "integrity": "sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA==", "dev": true, "dependencies": { "abort-controller": "^3.0.0", "buffer": "^6.0.3", "events": "^3.3.0", - "process": "^0.11.10" + "process": "^0.11.10", + "string_decoder": "^1.3.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -22551,9 +22667,9 @@ } }, "node_modules/postcss": { - "version": "8.4.21", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", - "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", + "version": "8.4.29", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.29.tgz", + "integrity": "sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw==", "dev": true, "funding": [ { @@ -22563,10 +22679,14 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], "dependencies": { - "nanoid": "^3.3.4", + "nanoid": "^3.3.6", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" }, @@ -22743,9 +22863,9 @@ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, "node_modules/process-warning": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-2.2.0.tgz", - "integrity": "sha512-/1WZ8+VQjR6avWOgHeEPd7SDQmFQ1B5mC1eRXsCm5TarlNmx/wCsa5GEaxGm05BORRtyG/Ex/3xq3TuRvq57qg==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-2.3.1.tgz", + "integrity": "sha512-JjBvFEn7MwFbzUDa2SRtKJSsyO0LlER4V/FmwLMhBlXNbGgGxdyFCxIdMDLerWUycsVUyaoM9QFLvppFy4IWaQ==", "dev": true }, "node_modules/progress": { @@ -25015,9 +25135,9 @@ } }, "node_modules/sonic-boom": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.3.0.tgz", - "integrity": "sha512-LYxp34KlZ1a2Jb8ZQgFCK3niIHzibdwtwNUWKg0qQRzsDoJ3Gfgkf8KdBTFU3SkejDEIlWwnSnpVdOZIhFMl/g==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.7.0.tgz", + "integrity": "sha512-IudtNvSqA/ObjN97tfgNmOKyDOs4dNcg4cUUsHDebqsgb8wGBBwb31LIgShNO8fye0dFI52X1+tFoKKI6Rq1Gg==", "dev": true, "dependencies": { "atomic-sleep": "^1.0.0" @@ -25449,6 +25569,36 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/string-width/node_modules/ansi-regex": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", @@ -25552,6 +25702,19 @@ "node": ">=8" } }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-bom": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", @@ -25909,9 +26072,9 @@ } }, "node_modules/thread-stream": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-2.3.0.tgz", - "integrity": "sha512-kaDqm1DET9pp3NXwR8382WHbnpXnRkN9xGN9dQt3B2+dmXiW8X1SOwmFOxAErEQ47ObhZ96J6yhZNXuyCOL7KA==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-2.4.1.tgz", + "integrity": "sha512-d/Ex2iWd1whipbT681JmTINKw0ZwOUBZm7+Gjs64DHuX34mmw8vJL2bFAaNacaW72zYiTJxSHi5abUuOi5nsfg==", "dev": true, "dependencies": { "real-require": "^0.2.0" @@ -27443,14 +27606,14 @@ } }, "node_modules/web-ext": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/web-ext/-/web-ext-7.6.2.tgz", - "integrity": "sha512-xlxbzgFBIS/UWWlvWxyR1PIqRRzDj1cutoHh+VZu4ZTcJTfv35KVdKkLRZv4PQwHu4dg8VfTg7WEcNP4QLaaFQ==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/web-ext/-/web-ext-7.8.0.tgz", + "integrity": "sha512-ta+VjbNfK5q0pqRmrlH/DQMdJ89sAJFfgcvpqoUoe2gPxLu18zZ5mIakGvyjmfjrkJLOZ2NCNF7suj/qd6xaEQ==", "dev": true, "dependencies": { "@babel/runtime": "7.21.0", "@devicefarmer/adbkit": "3.2.3", - "addons-linter": "5.32.0", + "addons-linter": "6.13.0", "bunyan": "1.8.15", "camelcase": "7.0.1", "chrome-launcher": "0.15.1", @@ -28215,6 +28378,86 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/wrap-ansi-cjs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/wrap-ansi/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -30572,23 +30815,6 @@ "strip-json-comments": "^3.1.1" }, "dependencies": { - "eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true - }, - "espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "requires": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - } - }, "globals": { "version": "13.21.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", @@ -30607,9 +30833,9 @@ } }, "@eslint/js": { - "version": "8.36.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.36.0.tgz", - "integrity": "sha512-lxJ9R5ygVm8ZWgYdUweoq5ownDlJ4upvoWmO4eLxBYHdMo+vZ/Rx0EN6MbKWDJOSUGrqJy2Gt+Dyv/VKml0fjg==", + "version": "8.48.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.48.0.tgz", + "integrity": "sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==", "dev": true }, "@ethersproject/bignumber": { @@ -30844,6 +31070,54 @@ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, + "@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "requires": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true + }, + "ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true + }, + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "requires": { + "ansi-regex": "^6.0.1" + } + }, + "wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "requires": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + } + } + } + }, "@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -31583,9 +31857,9 @@ } }, "@mdn/browser-compat-data": { - "version": "5.2.42", - "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-5.2.42.tgz", - "integrity": "sha512-CD/2ai1W45cDN/zN2AcYduDavU+nq9aStyQizi4MHxnwkRvS/H24WIjgc1qD8CISoqXa8AAIe+A+zpWxwV7a2Q==", + "version": "5.3.14", + "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-5.3.14.tgz", + "integrity": "sha512-Y9XQrphVcE6u9xMm+gIqN86opbU/5s2W1pdPyKRyFV5B7+2jWM2gLI5JpfhZncaoDKvhy6FYwK04aCz5UM/bTQ==", "dev": true }, "@noble/ciphers": { @@ -31687,6 +31961,13 @@ "ws": "^7.0.0" } }, + "@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true + }, "@pkgr/utils": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.4.2.tgz", @@ -34143,49 +34424,49 @@ "dev": true }, "addons-linter": { - "version": "5.32.0", - "resolved": "https://registry.npmjs.org/addons-linter/-/addons-linter-5.32.0.tgz", - "integrity": "sha512-Lf6oOyw8X9z5BMd9xhQwSbPlN2PUlzDLnYLAVT5lkrgXEx0fO9hRk4JRxWZ8+rFGz+mCIA2TTClZF2f+MKgJQA==", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/addons-linter/-/addons-linter-6.13.0.tgz", + "integrity": "sha512-vYgDXl8aLmN1zU4HmsQdG6tUFByg499mHnTEMWDUbSkoYDq3koTne08EsqU6sD+o814u8FxclQP7580L0g/tPQ==", "dev": true, "requires": { "@fluent/syntax": "0.19.0", - "@mdn/browser-compat-data": "5.2.42", + "@mdn/browser-compat-data": "5.3.14", "addons-moz-compare": "1.3.0", - "addons-scanner-utils": "8.5.0", + "addons-scanner-utils": "9.3.0", "ajv": "8.12.0", "chalk": "4.1.2", "cheerio": "1.0.0-rc.12", "columnify": "1.6.0", "common-tags": "1.8.2", "deepmerge": "4.3.1", - "eslint": "8.36.0", + "eslint": "8.48.0", "eslint-plugin-no-unsanitized": "4.0.2", - "eslint-visitor-keys": "3.3.0", - "espree": "9.5.0", + "eslint-visitor-keys": "3.4.3", + "espree": "9.6.1", "esprima": "4.0.1", "fast-json-patch": "3.1.1", - "glob": "9.3.0", + "glob": "10.3.4", "image-size": "1.0.2", "is-mergeable-object": "1.1.1", "jed": "1.1.1", "json-merge-patch": "1.0.2", "os-locale": "5.0.0", - "pino": "8.11.0", - "postcss": "8.4.21", + "pino": "8.15.0", + "postcss": "8.4.29", "relaxed-json": "1.0.3", - "semver": "7.3.8", + "semver": "7.5.4", "sha.js": "2.4.11", "source-map-support": "0.5.21", "tosource": "1.0.0", "upath": "2.0.1", - "yargs": "17.7.1", + "yargs": "17.7.2", "yauzl": "2.10.0" }, "dependencies": { "addons-scanner-utils": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/addons-scanner-utils/-/addons-scanner-utils-8.5.0.tgz", - "integrity": "sha512-X35SYZRdSnxx7UZuAk+DizKihQp2Ze2c5GV+5nnRr/FFyx/fOgE3Zo8jdhzSne57PENE9w1ZVocBLJTN6UDB3g==", + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/addons-scanner-utils/-/addons-scanner-utils-9.3.0.tgz", + "integrity": "sha512-YZWzNpP+em650XlZNH7NbTUcHJXqC0ihLEgwn17GGTqervyChqQffd9sm/QXNur0dmj7Ks1mD77iTg9XcJw64A==", "dev": true, "requires": { "@types/yauzl": "2.10.0", @@ -34271,6 +34552,17 @@ "supports-color": "^7.1.0" } }, + "cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + } + }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -34294,6 +34586,12 @@ "optional": true, "peer": true }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, "escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -34301,27 +34599,27 @@ "dev": true }, "eslint": { - "version": "8.36.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.36.0.tgz", - "integrity": "sha512-Y956lmS7vDqomxlaaQAHVmeb4tNMp2FWIvU/RnU5BD3IKMD/MJPr76xdyr68P8tV1iNMvN2mRK0yy3c+UjL+bw==", + "version": "8.48.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.48.0.tgz", + "integrity": "sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.1", - "@eslint/js": "8.36.0", - "@humanwhocodes/config-array": "^0.11.8", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.2", + "@eslint/js": "8.48.0", + "@humanwhocodes/config-array": "^0.11.10", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.5.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -34329,22 +34627,19 @@ "find-up": "^5.0.0", "glob-parent": "^6.0.2", "globals": "^13.19.0", - "grapheme-splitter": "^1.0.4", + "graphemer": "^1.4.0", "ignore": "^5.2.0", - "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", + "optionator": "^0.9.3", "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" }, "dependencies": { @@ -34369,9 +34664,9 @@ } }, "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true }, "find-up": { @@ -34384,22 +34679,33 @@ "path-exists": "^4.0.0" } }, + "foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + } + }, "glob": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.0.tgz", - "integrity": "sha512-EAZejC7JvnQINayvB/7BJbpZpNOJ8Lrw2OZNEvQxe0vaLn1SuwMcfV7/MNaX8L/T0wmptBFI4YMtDvSBxYDc7w==", + "version": "10.3.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.4.tgz", + "integrity": "sha512-6LFElP3A+i/Q8XQKEvZjkEWEOTgAIALR9AO2rwT8bgPhDd1anmqDJDZ6lLddI4ehxxxR1S5RIqKe1uapMQfYaQ==", "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "minimatch": "^7.4.1", - "minipass": "^4.2.4", - "path-scurry": "^1.6.1" + "foreground-child": "^3.1.0", + "jackspeak": "^2.0.3", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" }, "dependencies": { "minimatch": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz", - "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, "requires": { "brace-expansion": "^2.0.1" @@ -34417,9 +34723,9 @@ } }, "globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -34431,6 +34737,12 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, "json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", @@ -34447,9 +34759,9 @@ } }, "minipass": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", - "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", "dev": true }, "ms": { @@ -34490,14 +34802,31 @@ } }, "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "requires": { "lru-cache": "^6.0.0" } }, + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -34512,6 +34841,27 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true + }, + "yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "requires": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + } + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true } } }, @@ -35897,19 +36247,6 @@ "typedjson": "^1.6.0-rc2" }, "dependencies": { - "node-fetch": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.11.tgz", - "integrity": "sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==", - "requires": { - "whatwg-url": "^5.0.0" - } - }, - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, "ts-results": { "version": "npm:@casperlabs/ts-results@3.3.5", "resolved": "https://registry.npmjs.org/@casperlabs/ts-results/-/ts-results-3.3.5.tgz", @@ -35922,20 +36259,6 @@ "version": "2.5.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.3.tgz", "integrity": "sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==" - }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } } } }, @@ -38323,17 +38646,6 @@ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true }, - "espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "requires": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - } - }, "find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -38712,20 +39024,20 @@ "dev": true }, "espree": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.0.tgz", - "integrity": "sha512-JPbJGhKc47++oo4JkEoTe2wjy4fmMwvFpgJT9cQzmfXKp22Dr6Hf1tdCteLz1h0P3t+mGvWZ+4Uankvh8+c6zw==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "requires": { - "acorn": "^8.8.0", + "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^3.4.1" }, "dependencies": { "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true } } @@ -38986,9 +39298,9 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" }, "fast-redact": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.2.0.tgz", - "integrity": "sha512-zaTadChr+NekyzallAMXATXLOR8MNx3zqpZ0MUF2aGf4EathnG0f32VLODNlY8IuGY3HoRO2L6/6fSzNsLaHIw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.3.0.tgz", + "integrity": "sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==", "dev": true }, "fastest-levenshtein": { @@ -39913,12 +40225,6 @@ "integrity": "sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w==", "dev": true }, - "grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, "graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", @@ -41290,6 +41596,16 @@ "set-function-name": "^2.0.1" } }, + "jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "requires": { + "@isaacs/cliui": "^8.0.2", + "@pkgjs/parseargs": "^0.11.0" + } + }, "javascript-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-2.1.0.tgz", @@ -42718,12 +43034,6 @@ "integrity": "sha512-MSJQC5vXco5Br38mzaQKiq9mwt7lwj2eXpgpRyQYNHYt2lq1PjkWa7DLXX0WVcQLE9HhMh3jPiufS7fhJf+CLQ==", "dev": true }, - "js-sdsl": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz", - "integrity": "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==", - "dev": true - }, "js-sha3": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", @@ -44507,9 +44817,9 @@ "integrity": "sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA==" }, "nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", "dev": true }, "natural-compare": { @@ -44560,9 +44870,9 @@ "dev": true }, "node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.11.tgz", + "integrity": "sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==", "requires": { "whatwg-url": "^5.0.0" }, @@ -44896,9 +45206,9 @@ "dev": true }, "on-exit-leak-free": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.0.tgz", - "integrity": "sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz", + "integrity": "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==", "dev": true }, "on-finished": { @@ -45371,25 +45681,25 @@ "integrity": "sha1-BrJhE/Vr6rBCVFojv6iAA8ysJg8=" }, "path-scurry": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.0.tgz", - "integrity": "sha512-tZFEaRQbMLjwrsmidsGJ6wDMv0iazJWk6SfIKnY4Xru8auXgmJkOBa5DUbYFcFD2Rzk2+KDlIiF0GVXNCbgC7g==", + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", "dev": true, "requires": { "lru-cache": "^9.1.1 || ^10.0.0", - "minipass": "^5.0.0 || ^6.0.2" + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "dependencies": { "lru-cache": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.0.tgz", - "integrity": "sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", + "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", "dev": true }, "minipass": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-6.0.2.tgz", - "integrity": "sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", "dev": true } } @@ -45442,9 +45752,9 @@ "dev": true }, "pino": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/pino/-/pino-8.11.0.tgz", - "integrity": "sha512-Z2eKSvlrl2rH8p5eveNUnTdd4AjJk8tAsLkHYZQKGHP4WTh2Gi1cOSOs3eWPqaj+niS3gj4UkoreoaWgF3ZWYg==", + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-8.15.0.tgz", + "integrity": "sha512-olUADJByk4twxccmAxb1RiGKOSvddHugCV3wkqjyv+3Sooa2KLrmXrKEWOKi0XPCLasRR5jBXxioE1jxUa4KzQ==", "dev": true, "requires": { "atomic-sleep": "^1.0.0", @@ -45481,15 +45791,16 @@ } }, "readable-stream": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.4.1.tgz", - "integrity": "sha512-llAHX9QC25bz5RPIoTeJxPaA/hgryaldValRhVZ2fK9bzbmFiscpz8fw6iBTvJfAk1w4FC1KXQme/nO7fbKyKg==", + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.4.2.tgz", + "integrity": "sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA==", "dev": true, "requires": { "abort-controller": "^3.0.0", "buffer": "^6.0.3", "events": "^3.3.0", - "process": "^0.11.10" + "process": "^0.11.10", + "string_decoder": "^1.3.0" } } } @@ -45577,12 +45888,12 @@ "dev": true }, "postcss": { - "version": "8.4.21", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", - "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", + "version": "8.4.29", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.29.tgz", + "integrity": "sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw==", "dev": true, "requires": { - "nanoid": "^3.3.4", + "nanoid": "^3.3.6", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" } @@ -45705,9 +46016,9 @@ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, "process-warning": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-2.2.0.tgz", - "integrity": "sha512-/1WZ8+VQjR6avWOgHeEPd7SDQmFQ1B5mC1eRXsCm5TarlNmx/wCsa5GEaxGm05BORRtyG/Ex/3xq3TuRvq57qg==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-2.3.1.tgz", + "integrity": "sha512-JjBvFEn7MwFbzUDa2SRtKJSsyO0LlER4V/FmwLMhBlXNbGgGxdyFCxIdMDLerWUycsVUyaoM9QFLvppFy4IWaQ==", "dev": true }, "progress": { @@ -47485,9 +47796,9 @@ } }, "sonic-boom": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.3.0.tgz", - "integrity": "sha512-LYxp34KlZ1a2Jb8ZQgFCK3niIHzibdwtwNUWKg0qQRzsDoJ3Gfgkf8KdBTFU3SkejDEIlWwnSnpVdOZIhFMl/g==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.7.0.tgz", + "integrity": "sha512-IudtNvSqA/ObjN97tfgNmOKyDOs4dNcg4cUUsHDebqsgb8wGBBwb31LIgShNO8fye0dFI52X1+tFoKKI6Rq1Gg==", "dev": true, "requires": { "atomic-sleep": "^1.0.0" @@ -47849,6 +48160,31 @@ } } }, + "string-width-cjs": { + "version": "npm:string-width@4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + } + } + }, "string.prototype.matchall": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", @@ -47907,6 +48243,15 @@ "ansi-regex": "^5.0.1" } }, + "strip-ansi-cjs": { + "version": "npm:strip-ansi@6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, "strip-bom": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", @@ -48157,9 +48502,9 @@ } }, "thread-stream": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-2.3.0.tgz", - "integrity": "sha512-kaDqm1DET9pp3NXwR8382WHbnpXnRkN9xGN9dQt3B2+dmXiW8X1SOwmFOxAErEQ47ObhZ96J6yhZNXuyCOL7KA==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-2.4.1.tgz", + "integrity": "sha512-d/Ex2iWd1whipbT681JmTINKw0ZwOUBZm7+Gjs64DHuX34mmw8vJL2bFAaNacaW72zYiTJxSHi5abUuOi5nsfg==", "dev": true, "requires": { "real-require": "^0.2.0" @@ -49340,14 +49685,14 @@ } }, "web-ext": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/web-ext/-/web-ext-7.6.2.tgz", - "integrity": "sha512-xlxbzgFBIS/UWWlvWxyR1PIqRRzDj1cutoHh+VZu4ZTcJTfv35KVdKkLRZv4PQwHu4dg8VfTg7WEcNP4QLaaFQ==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/web-ext/-/web-ext-7.8.0.tgz", + "integrity": "sha512-ta+VjbNfK5q0pqRmrlH/DQMdJ89sAJFfgcvpqoUoe2gPxLu18zZ5mIakGvyjmfjrkJLOZ2NCNF7suj/qd6xaEQ==", "dev": true, "requires": { "@babel/runtime": "7.21.0", "@devicefarmer/adbkit": "3.2.3", - "addons-linter": "5.32.0", + "addons-linter": "6.13.0", "bunyan": "1.8.15", "camelcase": "7.0.1", "chrome-launcher": "0.15.1", @@ -49915,6 +50260,66 @@ } } }, + "wrap-ansi-cjs": { + "version": "npm:wrap-ansi@7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + } + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/package.json b/package.json index 4d07f9945..ea7cb48e6 100644 --- a/package.json +++ b/package.json @@ -158,7 +158,7 @@ "tsconfig-paths-webpack-plugin": "^4.1.0", "typescript": "4.9.3", "url-loader": "^4.1.1", - "web-ext": "7.6.2", + "web-ext": "7.8.0", "webextension-polyfill": "0.10.0", "webpack": "5.88.2", "webpack-cli": "5.1.4", From a8b5f8f78ccc93497a8b22c2dae6d40706d020cb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 2 Dec 2023 13:15:56 +0200 Subject: [PATCH 096/243] build(deps-dev): bump @adobe/css-tools from 4.3.1 to 4.3.2 (#875) Bumps [@adobe/css-tools](https://github.com/adobe/css-tools) from 4.3.1 to 4.3.2. - [Changelog](https://github.com/adobe/css-tools/blob/main/History.md) - [Commits](https://github.com/adobe/css-tools/commits) --- updated-dependencies: - dependency-name: "@adobe/css-tools" dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index dddfafbbf..dbe039273 100644 --- a/package-lock.json +++ b/package-lock.json @@ -132,9 +132,9 @@ } }, "node_modules/@adobe/css-tools": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.1.tgz", - "integrity": "sha512-/62yikz7NLScCGAAST5SHdnjaDJQBDq0M2muyRTpf2VQhw6StBg2ALiu73zSJQ4fMVLA+0uBhBHAle7Wg+2kSg==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.2.tgz", + "integrity": "sha512-DA5a1C0gD/pLOvhv33YMrbf2FK3oUzwNl9oOJqE4XVjuEtt6XIakRcsd7eLiOSPkp1kTRQGICTA8cKra/vFbjw==", "dev": true }, "node_modules/@ampproject/remapping": { @@ -28808,9 +28808,9 @@ "dev": true }, "@adobe/css-tools": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.1.tgz", - "integrity": "sha512-/62yikz7NLScCGAAST5SHdnjaDJQBDq0M2muyRTpf2VQhw6StBg2ALiu73zSJQ4fMVLA+0uBhBHAle7Wg+2kSg==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.2.tgz", + "integrity": "sha512-DA5a1C0gD/pLOvhv33YMrbf2FK3oUzwNl9oOJqE4XVjuEtt6XIakRcsd7eLiOSPkp1kTRQGICTA8cKra/vFbjw==", "dev": true }, "@ampproject/remapping": { From f8fba6a84e24ae3bbea7d332c9931827fdb96584 Mon Sep 17 00:00:00 2001 From: Vynnyk Dmytro Date: Wed, 6 Dec 2023 22:12:36 +0200 Subject: [PATCH 097/243] Release/1.7.1 (#881) * removed the button from the footer and fixed indent * Release 1.7.1 version --------- Co-authored-by: ost-ptk --- package.json | 2 +- src/apps/popup/pages/wallet-qr-code/content.tsx | 2 +- src/apps/popup/pages/wallet-qr-code/index.tsx | 14 -------------- .../Casper Wallet.xcodeproj/project.pbxproj | 8 ++++---- 4 files changed, 6 insertions(+), 20 deletions(-) diff --git a/package.json b/package.json index ea7cb48e6..aaf3168b9 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "Casper Wallet", "description": "Securely manage your CSPR tokens and interact with dapps with the self-custody wallet for the Casper blockchain.", - "version": "1.7.0", + "version": "1.7.1", "author": "MAKE LLC", "scripts": { "devtools:redux": "redux-devtools --hostname=localhost", diff --git a/src/apps/popup/pages/wallet-qr-code/content.tsx b/src/apps/popup/pages/wallet-qr-code/content.tsx index 49f3febde..9cfa9a758 100644 --- a/src/apps/popup/pages/wallet-qr-code/content.tsx +++ b/src/apps/popup/pages/wallet-qr-code/content.tsx @@ -15,7 +15,7 @@ const QRContainer = styled(CenteredFlexRow)` padding: 20px 16px; background-color: ${({ theme }) => theme.color.backgroundPrimary}; border-radius: ${({ theme }) => theme.borderRadius.base}px; - margin-top: 20px; + margin-top: 24px; `; interface WalletQrCodePageContentProps { diff --git a/src/apps/popup/pages/wallet-qr-code/index.tsx b/src/apps/popup/pages/wallet-qr-code/index.tsx index 4c3e4539f..82f29767e 100644 --- a/src/apps/popup/pages/wallet-qr-code/index.tsx +++ b/src/apps/popup/pages/wallet-qr-code/index.tsx @@ -1,16 +1,12 @@ import React, { useCallback, useState } from 'react'; -import { Trans, useTranslation } from 'react-i18next'; import { shallowEqual, useSelector } from 'react-redux'; import { - FooterButtonsContainer, HeaderSubmenuBarNavLink, PopupHeader, PopupLayout } from '@libs/layout'; import { WalletQrCodePageContent } from '@popup/pages/wallet-qr-code/content'; -import { RouterPath, useTypedNavigate } from '@popup/router'; -import { Button } from '@libs/ui'; import { selectSecretPhrase, selectVaultDerivedAccounts, @@ -32,9 +28,6 @@ export const WalletQrCodePage = () => { shallowEqual ); - const navigate = useTypedNavigate(); - const { t } = useTranslation(); - const setPasswordConfirmed = useCallback(() => { setIsPasswordConfirmed(true); }, []); @@ -77,13 +70,6 @@ export const WalletQrCodePage = () => { /> )} renderContent={() => } - renderFooter={() => ( - - - - )} /> ); }; diff --git a/xcode-project/Casper Wallet/Casper Wallet.xcodeproj/project.pbxproj b/xcode-project/Casper Wallet/Casper Wallet.xcodeproj/project.pbxproj index 77f8baf9d..135e1bfae 100644 --- a/xcode-project/Casper Wallet/Casper Wallet.xcodeproj/project.pbxproj +++ b/xcode-project/Casper Wallet/Casper Wallet.xcodeproj/project.pbxproj @@ -564,7 +564,7 @@ CODE_SIGN_ENTITLEMENTS = "Casper Wallet/Casper Wallet.entitlements"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 37; + CURRENT_PROJECT_VERSION = 38; ENABLE_HARDENED_RUNTIME = YES; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "Casper Wallet/Info.plist"; @@ -578,7 +578,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 10.14; - MARKETING_VERSION = 1.7.0; + MARKETING_VERSION = 1.7.1; OTHER_LDFLAGS = ( "-framework", SafariServices, @@ -601,7 +601,7 @@ CODE_SIGN_ENTITLEMENTS = "Casper Wallet/Casper Wallet.entitlements"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 37; + CURRENT_PROJECT_VERSION = 38; ENABLE_HARDENED_RUNTIME = YES; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "Casper Wallet/Info.plist"; @@ -615,7 +615,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 10.14; - MARKETING_VERSION = 1.7.0; + MARKETING_VERSION = 1.7.1; OTHER_LDFLAGS = ( "-framework", SafariServices, From 2d2113240991b74508cf4c7bb554336e26846a5a Mon Sep 17 00:00:00 2001 From: Ostap Piatkovskyi <44294945+ost-ptk@users.noreply.github.com> Date: Wed, 6 Dec 2023 22:26:16 +0200 Subject: [PATCH 098/243] feature: add contact book to the wallet (#878) * added contact book to the wallet * added contact sort and fixed the issue with updating contact --------- Co-authored-by: ost-ptk Co-authored-by: Vynnyk Dmytro --- src/apps/popup/app-router.tsx | 9 + src/apps/popup/pages/add-contact/content.tsx | 59 ++ src/apps/popup/pages/add-contact/index.tsx | 117 +++ .../pages/add-contact/success-screen.tsx | 58 ++ .../pages/backup-secret-phrase/index.tsx | 6 +- .../popup/pages/contact-details/deleting.tsx | 36 + .../popup/pages/contact-details/details.tsx | 50 + .../popup/pages/contact-details/editing.tsx | 61 ++ .../popup/pages/contact-details/index.tsx | 192 ++++ src/apps/popup/pages/contacts/content.tsx | 58 ++ .../popup/pages/contacts/empty-contacts.tsx | 39 + src/apps/popup/pages/contacts/index.tsx | 47 + .../pages/download-secret-keys/index.tsx | 4 +- .../popup/pages/navigation-menu/index.tsx | 18 +- .../index.tsx | 8 +- src/apps/popup/pages/transfer-nft/index.tsx | 54 +- src/apps/popup/pages/transfer/index.tsx | 27 +- src/apps/popup/pages/wallet-qr-code/index.tsx | 4 +- src/apps/popup/router/paths.ts | 5 +- src/apps/popup/router/types.ts | 1 + src/assets/illustrations/empty-state.svg | 739 ++++++++++++++ src/assets/illustrations/remove-wallet.svg | 920 ++++++++++++++++++ src/background/index.ts | 10 + src/background/redux/contacts/actions.ts | 13 + src/background/redux/contacts/reducer.ts | 42 + src/background/redux/contacts/selectors.ts | 15 + src/background/redux/contacts/types.ts | 14 + src/background/redux/redux-action.ts | 4 +- src/background/redux/root-reducer.ts | 4 +- src/background/redux/session/actions.ts | 4 + src/background/redux/session/reducer.ts | 14 +- src/background/redux/session/selectors.ts | 3 + src/background/redux/session/types.ts | 1 + src/background/redux/utils.ts | 22 +- src/fixtures/initial-state-for-popup-tests.ts | 7 +- .../unlock-protected-page-content/index.tsx | 16 +- .../contacts-plate/contacts-plate.tsx | 41 + src/libs/ui/components/textarea/textarea.tsx | 10 +- .../transfer-succeess-screen.tsx | 23 +- src/libs/ui/forms/contact.ts | 39 + src/libs/ui/forms/form-validation-rules.ts | 36 + src/libs/ui/index.ts | 1 + src/libs/ui/utils/formatters.ts | 14 + 43 files changed, 2792 insertions(+), 53 deletions(-) create mode 100644 src/apps/popup/pages/add-contact/content.tsx create mode 100644 src/apps/popup/pages/add-contact/index.tsx create mode 100644 src/apps/popup/pages/add-contact/success-screen.tsx create mode 100644 src/apps/popup/pages/contact-details/deleting.tsx create mode 100644 src/apps/popup/pages/contact-details/details.tsx create mode 100644 src/apps/popup/pages/contact-details/editing.tsx create mode 100644 src/apps/popup/pages/contact-details/index.tsx create mode 100644 src/apps/popup/pages/contacts/content.tsx create mode 100644 src/apps/popup/pages/contacts/empty-contacts.tsx create mode 100644 src/apps/popup/pages/contacts/index.tsx rename src/apps/popup/pages/{backup-secret-phrase-password => password-protection-page}/index.tsx (91%) create mode 100644 src/assets/illustrations/empty-state.svg create mode 100644 src/assets/illustrations/remove-wallet.svg create mode 100644 src/background/redux/contacts/actions.ts create mode 100644 src/background/redux/contacts/reducer.ts create mode 100644 src/background/redux/contacts/selectors.ts create mode 100644 src/background/redux/contacts/types.ts create mode 100644 src/libs/ui/components/contacts-plate/contacts-plate.tsx create mode 100644 src/libs/ui/forms/contact.ts diff --git a/src/apps/popup/app-router.tsx b/src/apps/popup/app-router.tsx index 2d9c6cf6a..5f6a3ecce 100644 --- a/src/apps/popup/app-router.tsx +++ b/src/apps/popup/app-router.tsx @@ -39,6 +39,9 @@ import { TransferNftPage } from '@popup/pages/transfer-nft'; import { ChangePasswordPage } from '@popup/pages/change-password'; import { StakesPage } from '@popup/pages/stakes'; import { ErrorPath, WindowErrorPage } from '@layout/error'; +import { ContactsBookPage } from '@popup/pages/contacts'; +import { AddContactPage } from '@popup/pages/add-contact'; +import { ContactDetailsPage } from '@popup/pages/contact-details'; export function AppRouter() { const isLocked = useSelector(selectVaultIsLocked); @@ -265,6 +268,12 @@ function AppRoutes() { /> } /> + } /> + } /> + } + /> ); } diff --git a/src/apps/popup/pages/add-contact/content.tsx b/src/apps/popup/pages/add-contact/content.tsx new file mode 100644 index 000000000..945888e68 --- /dev/null +++ b/src/apps/popup/pages/add-contact/content.tsx @@ -0,0 +1,59 @@ +import React from 'react'; +import { FieldErrors, UseFormRegister } from 'react-hook-form'; +import { useTranslation } from 'react-i18next'; + +import { + ContentContainer, + InputsContainer, + ParagraphContainer, + SpacingSize +} from '@libs/layout'; +import { + FormField, + FormFieldStatus, + Input, + TextArea, + Typography +} from '@libs/ui'; +import { ContactFromValues } from '@libs/ui/forms/contact'; + +interface AddContactPageContentProps { + register: UseFormRegister; + errors: FieldErrors; +} + +export const AddContactPageContent = ({ + register, + errors +}: AddContactPageContentProps) => { + const { t } = useTranslation(); + + return ( + + + New contact + + + + + + + + + ); +}; diff --git a/src/apps/popup/pages/add-contact/index.tsx b/src/apps/popup/pages/add-contact/index.tsx new file mode 100644 index 000000000..29c358a83 --- /dev/null +++ b/src/apps/popup/pages/add-contact/index.tsx @@ -0,0 +1,117 @@ +import React, { useEffect, useState } from 'react'; +import { Trans, useTranslation } from 'react-i18next'; +import { useSelector } from 'react-redux'; + +import { + FooterButtonsContainer, + HeaderSubmenuBarNavLink, + PopupHeader, + PopupLayout +} from '@libs/layout'; +import { Button } from '@libs/ui'; +import { AddContactPageContent } from '@popup/pages/add-contact/content'; +import { ContactFromValues, useContactForm } from '@libs/ui/forms/contact'; +import { selectAllContactsNames } from '@background/redux/contacts/selectors'; +import { calculateSubmitButtonDisabled } from '@libs/ui/forms/get-submit-button-state-from-validation'; +import { dispatchToMainStore } from '@background/redux/utils'; +import { newContactAdded } from '@background/redux/contacts/actions'; +import { RouterPath, useTypedLocation, useTypedNavigate } from '@popup/router'; +import { SuccessScreen } from '@popup/pages/add-contact/success-screen'; + +export const AddContactPage = () => { + const [showSuccessScreen, setShowSuccessScreen] = useState(false); + + const { t } = useTranslation(); + const navigate = useTypedNavigate(); + const { state } = useTypedLocation(); + + const contactsNames = useSelector(selectAllContactsNames); + + const { + register, + handleSubmit, + formState: { errors, isValid } + } = useContactForm(contactsNames, state?.recipientPublicKey); + + const onSubmit = ({ name, publicKey }: ContactFromValues) => { + const lastModified = new Date().toISOString(); + + dispatchToMainStore( + newContactAdded({ name, publicKey, lastModified: lastModified }) + ).finally(() => { + setShowSuccessScreen(true); + }); + }; + + useEffect(() => { + const keyDownHandler = (e: KeyboardEvent) => { + if (e.key === 'Enter') { + !showSuccessScreen && handleSubmit(onSubmit)(); + } + }; + + window.addEventListener('keydown', keyDownHandler); + + return () => window.removeEventListener('keydown', keyDownHandler); + }, [handleSubmit, navigate, showSuccessScreen]); + + const isButtonDisabled = calculateSubmitButtonDisabled({ isValid }); + const needToRedirectToHome = Boolean(state?.recipientPublicKey); + + return ( + ( + ( + { + if (needToRedirectToHome) { + navigate(RouterPath.Home); + return; + } + showSuccessScreen + ? navigate(RouterPath.ContactList) + : navigate(-1); + }} + /> + )} + /> + )} + renderContent={() => + showSuccessScreen ? ( + + ) : ( + + ) + } + renderFooter={() => ( + + {showSuccessScreen ? ( + + ) : ( + + )} + + )} + /> + ); +}; diff --git a/src/apps/popup/pages/add-contact/success-screen.tsx b/src/apps/popup/pages/add-contact/success-screen.tsx new file mode 100644 index 000000000..e7fb6a22c --- /dev/null +++ b/src/apps/popup/pages/add-contact/success-screen.tsx @@ -0,0 +1,58 @@ +import React, { useEffect } from 'react'; +import { Trans, useTranslation } from 'react-i18next'; + +import { + ContentContainer, + ParagraphContainer, + SpacingSize, + VerticalSpaceContainer +} from '@libs/layout'; +import { SvgIcon, Typography } from '@libs/ui'; +import { RouterPath, useTypedNavigate } from '@popup/router'; + +interface SuccessScreenProps { + needToRedirectToHome: boolean; +} + +export const SuccessScreen = ({ needToRedirectToHome }: SuccessScreenProps) => { + const { t } = useTranslation(); + const navigate = useTypedNavigate(); + + useEffect(() => { + const keyDownHandler = (e: KeyboardEvent) => { + if (e.key === 'Enter') { + needToRedirectToHome + ? navigate(RouterPath.Home) + : navigate(RouterPath.ContactList); + } + }; + window.addEventListener('keydown', keyDownHandler); + + return () => window.removeEventListener('keydown', keyDownHandler); + }, [navigate, needToRedirectToHome]); + + return ( + + + + + + All done! + + + + + + You will see this contact’s details and select it when you + transfer or delegate tokens. + + + + + + ); +}; diff --git a/src/apps/popup/pages/backup-secret-phrase/index.tsx b/src/apps/popup/pages/backup-secret-phrase/index.tsx index cb18a8959..0b09308ca 100644 --- a/src/apps/popup/pages/backup-secret-phrase/index.tsx +++ b/src/apps/popup/pages/backup-secret-phrase/index.tsx @@ -10,7 +10,7 @@ import { import { Button } from '@libs/ui'; import { RouterPath, useTypedNavigate } from '@popup/router'; -import { BackupSecretPhrasePasswordPage } from '@popup/pages/backup-secret-phrase-password'; +import { PasswordProtectionPage } from '@popup/pages/password-protection-page'; import { BackupSecretPhrasePageContent } from './content'; @@ -27,9 +27,7 @@ export function BackupSecretPhrasePage() { if (!isPasswordConfirmed) { return ( - + ); } diff --git a/src/apps/popup/pages/contact-details/deleting.tsx b/src/apps/popup/pages/contact-details/deleting.tsx new file mode 100644 index 000000000..921ce1cb0 --- /dev/null +++ b/src/apps/popup/pages/contact-details/deleting.tsx @@ -0,0 +1,36 @@ +import React from 'react'; +import { Trans, useTranslation } from 'react-i18next'; + +import { + ContentContainer, + IllustrationContainer, + ParagraphContainer, + SpacingSize +} from '@libs/layout'; +import { SvgIcon, Typography } from '@libs/ui'; + +export const DeleteContactPageContent = () => { + const { t } = useTranslation(); + + return ( + + + + + + + Delete contact? + + + + + You won’t be able to restore it. + + + + ); +}; diff --git a/src/apps/popup/pages/contact-details/details.tsx b/src/apps/popup/pages/contact-details/details.tsx new file mode 100644 index 000000000..8b58b4fa6 --- /dev/null +++ b/src/apps/popup/pages/contact-details/details.tsx @@ -0,0 +1,50 @@ +import React from 'react'; +import styled from 'styled-components'; +import { Trans, useTranslation } from 'react-i18next'; + +import { + ContentContainer, + LeftAlignedFlexColumn, + SpacingSize +} from '@libs/layout'; +import { Avatar, Hash, HashVariant, Tile, Typography } from '@libs/ui'; +import { formatShortTimestamp } from '@libs/ui/utils/formatters'; +import { Contact } from '@background/redux/contacts/types'; + +const Container = styled(LeftAlignedFlexColumn)` + margin-top: 24px; + padding: 32px 16px 16px; + + gap: 32px; +`; + +interface ContactDetailsProps { + contact: Contact; +} + +export const ContactDetails = ({ contact }: ContactDetailsProps) => { + const { t } = useTranslation(); + + return ( + + + + + + {contact.name} + + + + Last edited: {formatShortTimestamp(contact.lastModified)} + + + + + + + ); +}; diff --git a/src/apps/popup/pages/contact-details/editing.tsx b/src/apps/popup/pages/contact-details/editing.tsx new file mode 100644 index 000000000..942ddd0a0 --- /dev/null +++ b/src/apps/popup/pages/contact-details/editing.tsx @@ -0,0 +1,61 @@ +import React from 'react'; +import { Trans, useTranslation } from 'react-i18next'; +import { FieldErrors, UseFormRegister } from 'react-hook-form'; + +import { + ContentContainer, + InputsContainer, + ParagraphContainer, + SpacingSize +} from '@libs/layout'; +import { + FormField, + FormFieldStatus, + Input, + TextArea, + Typography +} from '@libs/ui'; +import { ContactFromValues } from '@libs/ui/forms/contact'; + +interface EditingContactPageContentProps { + register: UseFormRegister; + errors: FieldErrors; +} + +export const EditingContactPageContent = ({ + register, + errors +}: EditingContactPageContentProps) => { + const { t } = useTranslation(); + + return ( + + + + Edit contact + + + + + + + + + + ); +}; diff --git a/src/apps/popup/pages/contact-details/index.tsx b/src/apps/popup/pages/contact-details/index.tsx new file mode 100644 index 000000000..d18a0f5f2 --- /dev/null +++ b/src/apps/popup/pages/contact-details/index.tsx @@ -0,0 +1,192 @@ +import React, { useCallback, useMemo, useState } from 'react'; +import { Trans, useTranslation } from 'react-i18next'; +import { useParams } from 'react-router-dom'; +import { useSelector } from 'react-redux'; + +import { + AlignedFlexRow, + FooterButtonsContainer, + HeaderSubmenuBarNavLink, + PopupHeader, + PopupLayout, + SpacingSize +} from '@libs/layout'; +import { Button, Link, SvgIcon } from '@libs/ui'; +import { getBlockExplorerAccountUrl } from '@src/constants'; +import { + selectAllContacts, + selectAllContactsNames +} from '@background/redux/contacts/selectors'; +import { selectApiConfigBasedOnActiveNetwork } from '@background/redux/settings/selectors'; +import { RouterPath, useTypedNavigate } from '@popup/router'; +import { dispatchToMainStore } from '@background/redux/utils'; +import { + contactRemoved, + contactUpdated +} from '@background/redux/contacts/actions'; +import { PasswordProtectionPage } from 'src/apps/popup/pages/password-protection-page'; +import { contactEditingPermissionChanged } from '@background/redux/session/actions'; +import { selectIsContactEditingAllowed } from '@background/redux/session/selectors'; +import { DeleteContactPageContent } from '@popup/pages/contact-details/deleting'; +import { ContactDetails } from '@popup/pages/contact-details/details'; +import { EditingContactPageContent } from '@popup/pages/contact-details/editing'; +import { calculateSubmitButtonDisabled } from '@libs/ui/forms/get-submit-button-state-from-validation'; +import { useContactForm } from '@libs/ui/forms/contact'; + +export const ContactDetailsPage = () => { + const [isEditing, setIsEditing] = useState(false); + const [isDeleting, setIsDeleting] = useState(false); + + const { contactName } = useParams(); + const { t } = useTranslation(); + const navigate = useTypedNavigate(); + + const contacts = useSelector(selectAllContacts); + const { casperLiveUrl } = useSelector(selectApiConfigBasedOnActiveNetwork); + const isContactEditingAllowed = useSelector(selectIsContactEditingAllowed); + const contactsNames = useSelector(selectAllContactsNames); + + const handlePasswordConfirmed = useCallback(() => { + dispatchToMainStore(contactEditingPermissionChanged()); + }, []); + const contact = useMemo( + () => contacts.find(contact => contact.name === contactName), + [contacts, contactName] + ); + const existingContactNames = useMemo( + () => contactsNames.filter(name => name !== contact?.name!), + [contactsNames, contact?.name] + ); + + const { + register, + handleSubmit, + getValues, + formState: { errors, isValid } + } = useContactForm(existingContactNames, contact?.publicKey!, contact?.name!); + + const isButtonDisabled = useMemo( + () => calculateSubmitButtonDisabled({ isValid }), + [isValid] + ); + const handleCancel = useCallback(() => setIsDeleting(false), []); + const openEditContact = useCallback(() => setIsEditing(true), []); + const openDeleteContact = useCallback(() => setIsDeleting(true), []); + + if (!contact) { + return null; + } + + if (!isContactEditingAllowed && (isEditing || isDeleting)) { + return ( + + ); + } + + const submitEditContactForm = handleSubmit(() => { + const lastModified = new Date().toISOString(); + + const { name: newName, publicKey } = getValues(); + + dispatchToMainStore( + contactUpdated({ + oldName: contact.name, + name: newName, + publicKey: publicKey, + lastModified: lastModified + }) + ).finally(() => { + navigate(RouterPath.ContactList); + }); + }); + + const submitDeleteContact = () => { + dispatchToMainStore(contactRemoved(contact.name)).finally(() => { + navigate(RouterPath.ContactList); + }); + }; + + return ( + ( + ( + <> + + {!isDeleting && !isEditing && ( + + + + + )} + + )} + /> + )} + renderContent={() => { + if (isDeleting) { + return ; + } + + if (isEditing) { + return ( + + ); + } + + return ; + }} + renderFooter={() => ( + + {isDeleting && ( + <> + + + + )} + {isEditing && ( + + )} + {!isDeleting && !isEditing && ( + + )} + + )} + /> + ); +}; diff --git a/src/apps/popup/pages/contacts/content.tsx b/src/apps/popup/pages/contacts/content.tsx new file mode 100644 index 000000000..30fa73c02 --- /dev/null +++ b/src/apps/popup/pages/contacts/content.tsx @@ -0,0 +1,58 @@ +import React from 'react'; +import { Trans, useTranslation } from 'react-i18next'; +import { useSelector } from 'react-redux'; + +import { + ContentContainer, + ParagraphContainer, + SpacingSize +} from '@libs/layout'; +import { List, Typography, ContactsPlate } from '@libs/ui'; +import { + selectAllContacts, + selectLastModified +} from '@background/redux/contacts/selectors'; +import { EmptyContacts } from '@popup/pages/contacts/empty-contacts'; +import { formatShortTimestamp } from '@libs/ui/utils/formatters'; + +export const ContactsBookPageContent = () => { + const { t } = useTranslation(); + + const contacts = useSelector(selectAllContacts); + const lastModified = useSelector(selectLastModified); + + const contactsWithId = contacts.map((contact, index) => ({ + ...contact, + id: index + })); + + if (contactsWithId.length === 0) { + return ; + } + + return ( + + + + Contacts + + + {lastModified && ( + + + + Last updated: {formatShortTimestamp(lastModified)} + + + + )} + ( + + )} + marginLeftForItemSeparatorLine={54} + /> + + ); +}; diff --git a/src/apps/popup/pages/contacts/empty-contacts.tsx b/src/apps/popup/pages/contacts/empty-contacts.tsx new file mode 100644 index 000000000..32e65f763 --- /dev/null +++ b/src/apps/popup/pages/contacts/empty-contacts.tsx @@ -0,0 +1,39 @@ +import React from 'react'; +import { Trans, useTranslation } from 'react-i18next'; + +import { + ContentContainer, + IllustrationContainer, + ParagraphContainer, + SpacingSize +} from '@libs/layout'; +import { SvgIcon, Typography } from '@libs/ui'; + +export const EmptyContacts = () => { + const { t } = useTranslation(); + + return ( + + + + + + + No contacts just yet + + + + + + You can add here a list of contacts to make it easier for you to + send tokens. + + + + + ); +}; diff --git a/src/apps/popup/pages/contacts/index.tsx b/src/apps/popup/pages/contacts/index.tsx new file mode 100644 index 000000000..043308043 --- /dev/null +++ b/src/apps/popup/pages/contacts/index.tsx @@ -0,0 +1,47 @@ +import React from 'react'; +import { Trans, useTranslation } from 'react-i18next'; + +import { + FooterButtonsContainer, + HeaderSubmenuBarNavLink, + PopupHeader, + PopupLayout +} from '@libs/layout'; +import { Button } from '@libs/ui'; +import { ContactsBookPageContent } from '@popup/pages/contacts/content'; +import { RouterPath, useTypedNavigate } from '@popup/router'; + +export const ContactsBookPage = () => { + const { t } = useTranslation(); + const navigate = useTypedNavigate(); + + return ( + ( + ( + navigate(RouterPath.Home)} + /> + )} + /> + )} + renderContent={() => } + renderFooter={() => ( + + + + )} + /> + ); +}; diff --git a/src/apps/popup/pages/download-secret-keys/index.tsx b/src/apps/popup/pages/download-secret-keys/index.tsx index ceb5c9333..cfbc60431 100644 --- a/src/apps/popup/pages/download-secret-keys/index.tsx +++ b/src/apps/popup/pages/download-secret-keys/index.tsx @@ -95,9 +95,7 @@ export function DownloadSecretKeysPage() { )} renderFooter={() => ( diff --git a/src/apps/popup/pages/navigation-menu/index.tsx b/src/apps/popup/pages/navigation-menu/index.tsx index 01475d6d5..3304f8c8e 100644 --- a/src/apps/popup/pages/navigation-menu/index.tsx +++ b/src/apps/popup/pages/navigation-menu/index.tsx @@ -30,6 +30,7 @@ import { lockVault } from '@src/background/redux/sagas/actions'; import { TimeoutDurationSetting } from '@popup/constants'; import { isSafariBuild } from '@src/utils'; import { darkModeSettingChanged } from '@background/redux/settings/actions'; +import { selectCountOfContacts } from '@background/redux/contacts/selectors'; interface ListItemClickableContainerProps { disabled: boolean; @@ -78,6 +79,7 @@ export function NavigationMenuPageContent() { const countOfConnectedSites = useSelector(selectCountOfConnectedSites); const vaultHasImportedAccount = useSelector(selectVaultHasImportedAccount); const isDarkMode = useSelector(selectDarkModeSetting); + const countOfContacts = useSelector(selectCountOfContacts); const { openWindow } = useWindowManager(); const { closeNavigationMenu } = useNavigationMenu(); @@ -137,6 +139,17 @@ export function NavigationMenuPageContent() { items: [ { id: 1, + title: t('Contacts list'), + iconPath: 'assets/icons/team.svg', + currentValue: countOfContacts, + disabled: false, + handleOnClick: () => { + closeNavigationMenu(); + navigate(RouterPath.ContactList); + } + }, + { + id: 2, title: t('Connected sites'), iconPath: 'assets/icons/link.svg', currentValue: countOfConnectedSites, @@ -147,7 +160,7 @@ export function NavigationMenuPageContent() { } }, { - id: 2, + id: 3, title: t('Timeout'), iconPath: 'assets/icons/lock.svg', currentValue: TimeoutDurationSetting[timeoutDurationSetting], @@ -158,7 +171,7 @@ export function NavigationMenuPageContent() { } }, { - id: 3, + id: 4, title: t('Dark mode'), iconPath: isDarkMode ? 'assets/icons/sun.svg' @@ -240,6 +253,7 @@ export function NavigationMenuPageContent() { ], [ t, + countOfContacts, countOfConnectedSites, timeoutDurationSetting, isDarkMode, diff --git a/src/apps/popup/pages/backup-secret-phrase-password/index.tsx b/src/apps/popup/pages/password-protection-page/index.tsx similarity index 91% rename from src/apps/popup/pages/backup-secret-phrase-password/index.tsx rename to src/apps/popup/pages/password-protection-page/index.tsx index 83e6fc402..870bb3c4f 100644 --- a/src/apps/popup/pages/backup-secret-phrase-password/index.tsx +++ b/src/apps/popup/pages/password-protection-page/index.tsx @@ -27,7 +27,7 @@ interface BackupSecretPhrasePasswordPageType { loading?: boolean; } -export const BackupSecretPhrasePasswordPage = ({ +export const PasswordProtectionPage = ({ setPasswordConfirmed, onClick, loading = false @@ -81,11 +81,7 @@ export const BackupSecretPhrasePasswordPage = ({ /> )} renderContent={() => ( - + )} renderFooter={() => ( diff --git a/src/apps/popup/pages/transfer-nft/index.tsx b/src/apps/popup/pages/transfer-nft/index.tsx index 770b11ac8..342562155 100644 --- a/src/apps/popup/pages/transfer-nft/index.tsx +++ b/src/apps/popup/pages/transfer-nft/index.tsx @@ -37,6 +37,7 @@ import { } from '@background/redux/account-info/actions'; import { createAsymmetricKey } from '@libs/crypto/create-asymmetric-key'; import { createErrorLocationState, ErrorPath } from '@layout/error'; +import { selectAllPublicKeys } from '@background/redux/contacts/selectors'; export const TransferNftPage = () => { const [showSuccessScreen, setShowSuccessScreen] = useState(false); @@ -49,6 +50,7 @@ export const TransferNftPage = () => { const { networkName, nodeUrl } = useSelector( selectApiConfigBasedOnActiveNetwork ); + const contactPublicKeys = useSelector(selectAllPublicKeys); const { t } = useTranslation(); const navigate = useTypedNavigate(); @@ -99,6 +101,11 @@ export const TransferNftPage = () => { amountForm.formState.isValid && !haveReverseOwnerLookUp }); + const { recipientPublicKey } = recipientForm.getValues(); + const isRecipientPublicKeyInContact = useMemo( + () => contactPublicKeys.includes(recipientPublicKey), + [contactPublicKeys, recipientPublicKey] + ); const submitTransfer = async () => { if (haveReverseOwnerLookUp || !nftToken) return; @@ -202,20 +209,39 @@ export const TransferNftPage = () => { renderFooter={() => ( {showSuccessScreen ? ( - + <> + + + {!isRecipientPublicKeyInContact && ( + + )} + ) : ( + {transferStep === TransactionSteps.Success && + !isRecipientPublicKeyInContact && ( + + )} )} /> diff --git a/src/apps/popup/pages/wallet-qr-code/index.tsx b/src/apps/popup/pages/wallet-qr-code/index.tsx index 82f29767e..1e6d7d9f6 100644 --- a/src/apps/popup/pages/wallet-qr-code/index.tsx +++ b/src/apps/popup/pages/wallet-qr-code/index.tsx @@ -13,7 +13,7 @@ import { selectVaultImportedAccounts } from '@background/redux/vault/selectors'; import { generateSyncWalletQrData } from '@libs/crypto'; -import { BackupSecretPhrasePasswordPage } from '@popup/pages/backup-secret-phrase-password'; +import { PasswordProtectionPage } from '@popup/pages/password-protection-page'; export const WalletQrCodePage = () => { const [qrStrings, setQrStrings] = useState([]); @@ -49,7 +49,7 @@ export const WalletQrCodePage = () => { if (!isPasswordConfirmed) { return ( - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/illustrations/remove-wallet.svg b/src/assets/illustrations/remove-wallet.svg new file mode 100644 index 000000000..569a35cbe --- /dev/null +++ b/src/assets/illustrations/remove-wallet.svg @@ -0,0 +1,920 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/background/index.ts b/src/background/index.ts index 5c7fc75a6..f4be8dd37 100644 --- a/src/background/index.ts +++ b/src/background/index.ts @@ -63,6 +63,7 @@ import { fetchErc20Tokens } from '@libs/services/erc20-service'; import { openWindow } from './open-window'; import { + contactEditingPermissionChanged, encryptionKeyHashCreated, sessionReseted, vaultUnlocked @@ -136,6 +137,11 @@ import { fetchAuctionValidators, fetchValidatorsDetailsData } from '@libs/services/validators-service'; +import { + contactRemoved, + contactUpdated, + newContactAdded +} from '@background/redux/contacts/actions'; // setup default onboarding action async function handleActionClick() { @@ -556,6 +562,10 @@ browser.runtime.onMessage.addListener( case getType(accountTrackingIdOfSentNftTokensChanged): case getType(accountTrackingIdOfSentNftTokensRemoved): case getType(changePassword): + case getType(newContactAdded): + case getType(contactRemoved): + case getType(contactEditingPermissionChanged): + case getType(contactUpdated): store.dispatch(action); return sendResponse(undefined); diff --git a/src/background/redux/contacts/actions.ts b/src/background/redux/contacts/actions.ts new file mode 100644 index 000000000..9049c237b --- /dev/null +++ b/src/background/redux/contacts/actions.ts @@ -0,0 +1,13 @@ +import { createAction } from 'typesafe-actions'; + +import { + Contact, + EditContactActionType +} from '@background/redux/contacts/types'; + +export const newContactAdded = createAction('NEW_CONTACT_ADDED')(); + +export const contactRemoved = createAction('CONTACT_REMOVED')(); + +export const contactUpdated = + createAction('CONTACT_UPDATED')(); diff --git a/src/background/redux/contacts/reducer.ts b/src/background/redux/contacts/reducer.ts new file mode 100644 index 000000000..5f6f1c009 --- /dev/null +++ b/src/background/redux/contacts/reducer.ts @@ -0,0 +1,42 @@ +import { createReducer } from 'typesafe-actions'; + +import { + contactRemoved, + contactUpdated, + newContactAdded +} from '@background/redux/contacts/actions'; +import { ContactsState } from '@background/redux/contacts/types'; + +const initialState = { contacts: [], lastModified: null } as ContactsState; + +export const reducer = createReducer(initialState) + .handleAction(newContactAdded, (state, action) => { + const sortedContacts = [...state.contacts, action.payload].sort((a, b) => + a.name.localeCompare(b.name) + ); + return { + contacts: sortedContacts, + lastModified: action.payload.lastModified + }; + }) + .handleAction(contactRemoved, (state, action) => { + return { + contacts: state.contacts.filter( + contact => contact.name !== action.payload + ), + lastModified: new Date().toISOString() + }; + }) + .handleAction(contactUpdated, (state, { payload }) => { + const newContacts = { + name: payload.name, + publicKey: payload.publicKey, + lastModified: payload.lastModified + }; + return { + contacts: state.contacts.map(contact => + contact.name === payload.oldName ? newContacts : contact + ), + lastModified: payload.lastModified + }; + }); diff --git a/src/background/redux/contacts/selectors.ts b/src/background/redux/contacts/selectors.ts new file mode 100644 index 000000000..fcb21f461 --- /dev/null +++ b/src/background/redux/contacts/selectors.ts @@ -0,0 +1,15 @@ +import { RootState } from 'typesafe-actions'; + +export const selectAllContacts = (state: RootState) => state.contacts.contacts; + +export const selectCountOfContacts = (state: RootState) => + state.contacts.contacts.length; + +export const selectAllContactsNames = (state: RootState) => + state.contacts.contacts.map(contact => contact.name); + +export const selectAllPublicKeys = (state: RootState) => + state.contacts.contacts.map(contact => contact.publicKey); + +export const selectLastModified = (state: RootState) => + state.contacts.lastModified; diff --git a/src/background/redux/contacts/types.ts b/src/background/redux/contacts/types.ts new file mode 100644 index 000000000..b2ff728af --- /dev/null +++ b/src/background/redux/contacts/types.ts @@ -0,0 +1,14 @@ +export interface Contact { + name: string; + publicKey: string; + lastModified: string; +} + +export type ContactsState = { + contacts: Contact[]; + lastModified: string | null; +}; + +export interface EditContactActionType extends Contact { + oldName: string; +} diff --git a/src/background/redux/redux-action.ts b/src/background/redux/redux-action.ts index dd1b2c943..a6f3aa356 100644 --- a/src/background/redux/redux-action.ts +++ b/src/background/redux/redux-action.ts @@ -12,6 +12,7 @@ import * as settings from './settings/actions'; import * as activeOrigin from './active-origin/actions'; import * as recentRecipientPublicKeys from './recent-recipient-public-keys/actions'; import * as accountInfo from './account-info/actions'; +import * as contacts from './contacts/actions'; const reduxAction = { sagas, @@ -26,7 +27,8 @@ const reduxAction = { activeOrigin, settings, recentRecipientPublicKeys, - accountInfo + accountInfo, + contacts }; export type ReduxAction = ActionType; diff --git a/src/background/redux/root-reducer.ts b/src/background/redux/root-reducer.ts index 2cd9856d0..b77effc30 100644 --- a/src/background/redux/root-reducer.ts +++ b/src/background/redux/root-reducer.ts @@ -12,6 +12,7 @@ import { reducer as settings } from './settings/reducer'; import { reducer as activeOrigin } from './active-origin/reducer'; import { reducer as recentRecipientPublicKeys } from './recent-recipient-public-keys/reducer'; import { reducer as accountInfo } from './account-info/reducer'; +import { reducer as contacts } from './contacts/reducer'; const rootReducer = combineReducers({ vaultCipher, @@ -25,7 +26,8 @@ const rootReducer = combineReducers({ activeOrigin, settings, recentRecipientPublicKeys, - accountInfo + accountInfo, + contacts }); export default rootReducer; diff --git a/src/background/redux/session/actions.ts b/src/background/redux/session/actions.ts index a8398cfe7..885d69b10 100644 --- a/src/background/redux/session/actions.ts +++ b/src/background/redux/session/actions.ts @@ -13,3 +13,7 @@ export const vaultUnlocked = createAction('VAULT_UNLOCKED', () => ({ }))<{ lastActivityTime: number; }>(); + +export const contactEditingPermissionChanged = createAction( + 'CONTACT_EDITING_PERMISSION_CHANGED' +)(); diff --git a/src/background/redux/session/reducer.ts b/src/background/redux/session/reducer.ts index c56dbb1a9..575bf8d15 100644 --- a/src/background/redux/session/reducer.ts +++ b/src/background/redux/session/reducer.ts @@ -4,13 +4,16 @@ import { SessionState } from './types'; import { sessionReseted, encryptionKeyHashCreated, - vaultUnlocked + vaultUnlocked, + contactEditingPermissionChanged } from './actions'; + type State = SessionState; const initialState: State = { encryptionKeyHash: null, - isLocked: true + isLocked: true, + isContactEditingAllowed: false }; export const reducer = createReducer(initialState) @@ -28,4 +31,11 @@ export const reducer = createReducer(initialState) ...state, encryptionKeyHash: action.payload.encryptionKeyHash }) + ) + .handleAction( + contactEditingPermissionChanged, + (state): State => ({ + ...state, + isContactEditingAllowed: true + }) ); diff --git a/src/background/redux/session/selectors.ts b/src/background/redux/session/selectors.ts index 9fa0052eb..5c1018f29 100644 --- a/src/background/redux/session/selectors.ts +++ b/src/background/redux/session/selectors.ts @@ -5,3 +5,6 @@ export const selectEncryptionKeyHash = (state: RootState): string | null => export const selectVaultIsLocked = (state: RootState): boolean => state.session.isLocked; + +export const selectIsContactEditingAllowed = (state: RootState) => + state.session.isContactEditingAllowed; diff --git a/src/background/redux/session/types.ts b/src/background/redux/session/types.ts index 6c856c44e..00578670f 100644 --- a/src/background/redux/session/types.ts +++ b/src/background/redux/session/types.ts @@ -1,4 +1,5 @@ export interface SessionState { encryptionKeyHash: string | null; isLocked: boolean; + isContactEditingAllowed: boolean; } diff --git a/src/background/redux/utils.ts b/src/background/redux/utils.ts index c336e1b0c..a6b459797 100644 --- a/src/background/redux/utils.ts +++ b/src/background/redux/utils.ts @@ -22,6 +22,7 @@ import { SettingsState } from './settings/types'; import { ActiveOriginState } from './active-origin/types'; import { RecentRecipientPublicKeysState } from './recent-recipient-public-keys/types'; import { AccountInfoState } from './account-info/types'; +import { ContactsState } from './contacts/types'; declare global { interface Window { @@ -48,6 +49,7 @@ export const LOGIN_RETRY_LOCKOUT_KEY = 'p6nnYiaxcsaNG3'; export const LAST_ACTIVITY_TIME = 'j8d1dusn76EdD'; export const VAULT_SETTINGS = 'Nmxd8BZh93MHua'; export const RECENT_RECIPIENT_PUBLIC_KEYS = '7c2WyRuGhEtaDX'; +export const CONTACTS_KEY = 'teuwe6zH3A72gc'; type StorageState = { [VAULT_CIPHER_KEY]: string; @@ -57,6 +59,7 @@ type StorageState = { [LAST_ACTIVITY_TIME]: number; [VAULT_SETTINGS]: SettingsState; [RECENT_RECIPIENT_PUBLIC_KEYS]: RecentRecipientPublicKeysState; + [CONTACTS_KEY]: ContactsState; }; // this needs to be private @@ -71,7 +74,8 @@ export async function getExistingMainStoreSingletonOrInit() { [LOGIN_RETRY_LOCKOUT_KEY]: loginRetryLockoutTime, [LAST_ACTIVITY_TIME]: lastActivityTime, [VAULT_SETTINGS]: settings, - [RECENT_RECIPIENT_PUBLIC_KEYS]: recentRecipientPublicKeys + [RECENT_RECIPIENT_PUBLIC_KEYS]: recentRecipientPublicKeys, + [CONTACTS_KEY]: contacts } = (await browser.storage.local.get([ VAULT_CIPHER_KEY, KEYS_KEY, @@ -79,7 +83,8 @@ export async function getExistingMainStoreSingletonOrInit() { LOGIN_RETRY_LOCKOUT_KEY, LAST_ACTIVITY_TIME, VAULT_SETTINGS, - RECENT_RECIPIENT_PUBLIC_KEYS + RECENT_RECIPIENT_PUBLIC_KEYS, + CONTACTS_KEY ])) as StorageState; if (storeSingleton == null) { @@ -96,7 +101,8 @@ export async function getExistingMainStoreSingletonOrInit() { loginRetryLockoutTime, lastActivityTime, settings, - recentRecipientPublicKeys + recentRecipientPublicKeys, + contacts }); } // send start action @@ -119,7 +125,8 @@ export async function getExistingMainStoreSingletonOrInit() { loginRetryLockoutTime, lastActivityTime, settings, - recentRecipientPublicKeys + recentRecipientPublicKeys, + contacts } = state; browser.storage.local .set({ @@ -129,7 +136,8 @@ export async function getExistingMainStoreSingletonOrInit() { [LOGIN_RETRY_LOCKOUT_KEY]: loginRetryLockoutTime, [LAST_ACTIVITY_TIME]: lastActivityTime, [VAULT_SETTINGS]: settings, - [RECENT_RECIPIENT_PUBLIC_KEYS]: recentRecipientPublicKeys + [RECENT_RECIPIENT_PUBLIC_KEYS]: recentRecipientPublicKeys, + [CONTACTS_KEY]: contacts }) .catch(e => { console.error('Persist encrypted vault failed: ', e); @@ -153,6 +161,7 @@ export type PopupState = { activeOrigin: ActiveOriginState; recentRecipientPublicKeys: RecentRecipientPublicKeysState; accountInfo: AccountInfoState; + contacts: ContactsState; }; // These state keys will be passed to popups @@ -170,7 +179,8 @@ export const selectPopupState = (state: RootState): PopupState => { activeOrigin: state.activeOrigin, settings: state.settings, recentRecipientPublicKeys: state.recentRecipientPublicKeys, - accountInfo: state.accountInfo + accountInfo: state.accountInfo, + contacts: state.contacts }; }; diff --git a/src/fixtures/initial-state-for-popup-tests.ts b/src/fixtures/initial-state-for-popup-tests.ts index 410d61120..46d331807 100644 --- a/src/fixtures/initial-state-for-popup-tests.ts +++ b/src/fixtures/initial-state-for-popup-tests.ts @@ -16,7 +16,8 @@ export const initialStateForPopupTests: RootState = { session: { encryptionKeyHash: '7b55663cb7cd7d96765373ce0ee8d6901244de1ed241d20f9afe18a81149ea71', - isLocked: true + isLocked: true, + isContactEditingAllowed: false }, vault: { secretPhrase: [ @@ -94,5 +95,9 @@ export const initialStateForPopupTests: RootState = { accountDeploysCount: 0, accountCasperActivityCount: 0, accountTrackingIdOfSentNftTokens: {} + }, + contacts: { + contacts: [], + lastModified: null } }; diff --git a/src/libs/layout/unlock-protected-page-content/index.tsx b/src/libs/layout/unlock-protected-page-content/index.tsx index 2c3ea046b..bdda48f6b 100644 --- a/src/libs/layout/unlock-protected-page-content/index.tsx +++ b/src/libs/layout/unlock-protected-page-content/index.tsx @@ -1,6 +1,7 @@ import React, { useState } from 'react'; import { Trans, useTranslation } from 'react-i18next'; import { FieldErrors, UseFormRegister } from 'react-hook-form'; +import { useSelector } from 'react-redux'; import { ContentContainer, @@ -16,6 +17,7 @@ import { SvgIcon, Typography } from '@libs/ui'; +import { selectLoginRetryCount } from '@background/redux/login-retry-count/selectors'; import { useLockWalletWhenNoMoreRetries } from './use-lock-wallet-when-no-more-retries'; @@ -26,20 +28,24 @@ interface PasswordFormValues { interface PasswordPageContentType { register: UseFormRegister; errors: FieldErrors; - description: string; + title?: string; } export const UnlockProtectedPageContent = ({ register, errors, - description + title }: PasswordPageContentType) => { const [passwordInputType, setPasswordInputType] = useState('password'); const { t } = useTranslation(); + const loginRetryCount = useSelector(selectLoginRetryCount); + useLockWalletWhenNoMoreRetries(); + const retryLeft = 5 - loginRetryCount; + return ( @@ -51,12 +57,14 @@ export const UnlockProtectedPageContent = ({ - Wallet password required + {title || 'Enter your password'} - {description} + + You have {{ retryLeft }} tries left. + diff --git a/src/libs/ui/components/contacts-plate/contacts-plate.tsx b/src/libs/ui/components/contacts-plate/contacts-plate.tsx new file mode 100644 index 000000000..3a1536222 --- /dev/null +++ b/src/libs/ui/components/contacts-plate/contacts-plate.tsx @@ -0,0 +1,41 @@ +import React from 'react'; +import styled from 'styled-components'; + +import { AlignedFlexRow, FlexColumn, SpacingSize } from '@libs/layout'; +import { Avatar, Hash, HashVariant, Typography } from '@libs/ui'; +import { RouterPath, useTypedNavigate } from '@popup/router'; + +const Container = styled(AlignedFlexRow)` + cursor: pointer; + + padding: 8px 16px; +`; + +interface ContactsPlateProps { + publicKey: string; + name: string; +} + +export const ContactsPlate = ({ publicKey, name }: ContactsPlateProps) => { + const navigate = useTypedNavigate(); + + return ( + { + navigate(RouterPath.ContactDetails.replace(':contactName', name)); + }} + > + + + {name} + + + + ); +}; diff --git a/src/libs/ui/components/textarea/textarea.tsx b/src/libs/ui/components/textarea/textarea.tsx index 33fe12e78..9ef513eed 100644 --- a/src/libs/ui/components/textarea/textarea.tsx +++ b/src/libs/ui/components/textarea/textarea.tsx @@ -9,7 +9,8 @@ const StyledTextArea = styled.textarea<{ resize?: boolean; isDisabled?: boolean; readOnly?: boolean; -}>(({ theme, resize, isDisabled, readOnly }) => ({ + type?: 'captionHash'; +}>(({ theme, resize, isDisabled, type, readOnly }) => ({ fontSize: '1.5rem', border: 'none', borderRadius: theme.borderRadius.base + 'px', @@ -23,6 +24,12 @@ const StyledTextArea = styled.textarea<{ ...((isDisabled || readOnly) && { color: theme.color.contentSecondary + }), + + ...(type === 'captionHash' && { + fontSize: '1.4rem', + lineHeight: '2.4rem', + fontFamily: theme.typography.fontFamily.mono }) })); @@ -35,6 +42,7 @@ interface TextAreaProps extends BaseProps { placeholder?: string; disabled?: boolean; readOnly?: boolean; + type?: 'captionHash'; } export const TextArea = forwardRef(function TextArea( diff --git a/src/libs/ui/components/transfer-success-screen/transfer-succeess-screen.tsx b/src/libs/ui/components/transfer-success-screen/transfer-succeess-screen.tsx index d78e94930..25eaa1e2a 100644 --- a/src/libs/ui/components/transfer-success-screen/transfer-succeess-screen.tsx +++ b/src/libs/ui/components/transfer-success-screen/transfer-succeess-screen.tsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { useEffect } from 'react'; import { Trans, useTranslation } from 'react-i18next'; import { @@ -7,7 +7,8 @@ import { SpacingSize, VerticalSpaceContainer } from '@src/libs/layout'; -import { SvgIcon, Typography } from '@libs/ui'; +import { HomePageTabsId, SvgIcon, Typography } from '@libs/ui'; +import { RouterPath, useTypedNavigate } from '@popup/router'; interface TransferSuccessScreenProps { headerText: string; @@ -17,6 +18,24 @@ export const TransferSuccessScreen = ({ headerText }: TransferSuccessScreenProps) => { const { t } = useTranslation(); + const navigate = useTypedNavigate(); + + useEffect(() => { + const keyDownHandler = (e: KeyboardEvent) => { + if (e.key === 'Enter') { + navigate(RouterPath.Home, { + state: { + // set the active tab to deploys + activeTabId: HomePageTabsId.Deploys + } + }); + } + }; + + window.addEventListener('keydown', keyDownHandler); + + return () => window.removeEventListener('keydown', keyDownHandler); + }, [navigate]); return ( diff --git a/src/libs/ui/forms/contact.ts b/src/libs/ui/forms/contact.ts new file mode 100644 index 000000000..a83edd17e --- /dev/null +++ b/src/libs/ui/forms/contact.ts @@ -0,0 +1,39 @@ +import * as Yup from 'yup'; +import { useForm } from 'react-hook-form'; +import { UseFormProps } from 'react-hook-form/dist/types/form'; + +import { + useContactNameRule, + useContactPublicKeyRule +} from '@libs/ui/forms/form-validation-rules'; +import { yupResolver } from '@hookform/resolvers/yup/dist/yup'; + +export type ContactFromValues = { + name: string; + publicKey: string; +}; + +export const useContactForm = ( + existingContactNames: string[], + defaultPublicKey?: string, + defaultName?: string +) => { + const newContactFormSchema = Yup.object().shape({ + name: useContactNameRule( + value => value != null && !existingContactNames.includes(value) + ), + publicKey: useContactPublicKeyRule() + }); + + const newContactFormOptions: UseFormProps = { + reValidateMode: 'onChange', + mode: 'onChange', + resolver: yupResolver(newContactFormSchema), + defaultValues: { + name: defaultName || '', + publicKey: defaultPublicKey || '' + } + }; + + return useForm(newContactFormOptions); +}; diff --git a/src/libs/ui/forms/form-validation-rules.ts b/src/libs/ui/forms/form-validation-rules.ts index a8cfda497..cb19c0e27 100644 --- a/src/libs/ui/forms/form-validation-rules.ts +++ b/src/libs/ui/forms/form-validation-rules.ts @@ -387,3 +387,39 @@ export const useValidatorPublicKeyRule = (delegatorsNumber?: number) => { ) }); }; + +export const useContactNameRule = ( + isContactNameIsTakenCallback: ( + value: string | undefined + ) => Promise | boolean +) => { + const { t } = useTranslation(); + + return Yup.string() + .required(t('Name is required')) + .max(20, t('This name is too long. Let’s keep it within 20 characters')) + .test( + 'empty', + t("Name can't be empty"), + value => value != null && value.trim() !== '' + ) + .test( + 'unique', + t( + 'You’ve already got a contact with this name. Please find a new name for this one' + ), + value => isContactNameIsTakenCallback(value) + ); +}; + +export const useContactPublicKeyRule = () => { + const { t } = useTranslation(); + + return Yup.string() + .required(t('Public address is required')) + .test({ + name: 'contactPublicKey', + test: value => (value ? isValidPublicKey(value) : false), + message: t('Public address should be a valid public key') + }); +}; diff --git a/src/libs/ui/index.ts b/src/libs/ui/index.ts index bf044dc0a..f19ebb7eb 100644 --- a/src/libs/ui/index.ts +++ b/src/libs/ui/index.ts @@ -48,6 +48,7 @@ export * from './components/skeleton/skeleton'; export * from './components/validator-dropdown-input/validator-dropdown-input'; export * from './components/validator-plate/validator-plate'; export * from './components/error/error'; +export * from './components/contacts-plate/contacts-plate'; export * from './utils/match-media'; export * from './utils/match-size'; diff --git a/src/libs/ui/utils/formatters.ts b/src/libs/ui/utils/formatters.ts index e7a8ecaab..5a68dd9ff 100644 --- a/src/libs/ui/utils/formatters.ts +++ b/src/libs/ui/utils/formatters.ts @@ -44,6 +44,20 @@ export const formatTimestamp = (value: string): string => { return `${nativeIntl.format(date)}`; }; +export const formatShortTimestamp = (value: string): string => { + const date = new Date(value); + const locale = 'en'; + const nativeIntl = new Intl.DateTimeFormat(locale, { + month: 'short', + day: 'numeric', + year: 'numeric', + hour: 'numeric', + minute: 'numeric' + }); + + return `${nativeIntl.format(date)}`; +}; + export const formatDate = (value: string): string => { const timestamp = Number.parseInt(value); From ce52dd298d7e7eb3394cdd2e66dd6ed8eed76567 Mon Sep 17 00:00:00 2001 From: Ostap Piatkovskyi <44294945+ost-ptk@users.noreply.github.com> Date: Wed, 6 Dec 2023 22:26:41 +0200 Subject: [PATCH 099/243] showed user stake amount for validator on undelegate page (#879) Co-authored-by: ost-ptk Co-authored-by: Vynnyk Dmytro --- .../validator-dropdown-input.tsx | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/libs/ui/components/validator-dropdown-input/validator-dropdown-input.tsx b/src/libs/ui/components/validator-dropdown-input/validator-dropdown-input.tsx index c51b265ba..60fe8ba47 100644 --- a/src/libs/ui/components/validator-dropdown-input/validator-dropdown-input.tsx +++ b/src/libs/ui/components/validator-dropdown-input/validator-dropdown-input.tsx @@ -8,7 +8,7 @@ import { SpacingSize, VerticalSpaceContainer } from '@src/libs/layout'; -import { SvgIcon, Input, List, ValidatorPlate, Typography } from '@libs/ui'; +import { Input, List, SvgIcon, Typography, ValidatorPlate } from '@libs/ui'; import { StakeValidatorFormValues } from '@libs/ui/forms/stakes-form'; import { useClickAway } from '@libs/ui/hooks/use-click-away'; import { ValidatorResultWithId } from '@libs/services/validators-service/types'; @@ -152,7 +152,12 @@ export const ValidatorDropdownInput = ({ fee={validator.fee} name={validator?.account_info?.info?.owner?.name} logo={validator?.account_info?.info?.owner?.branding?.logo?.svg} - totalStake={validator.total_stake} + // TODO: remove user_stake after we merge recipient and amount steps for undelegation + totalStake={ + stakesType === AuctionManagerEntryPoint.undelegate + ? validator.user_stake + : validator.total_stake + } delegatorsNumber={validator?.delegators_number} validatorLabel={label} error={errors?.validatorPublicKey} @@ -209,7 +214,12 @@ export const ValidatorDropdownInput = ({ fee={validator.fee} name={validator?.account_info?.info?.owner?.name} logo={validator?.account_info?.info?.owner?.branding?.logo?.svg} - totalStake={validator.total_stake} + // TODO: remove user_stake after we merge recipient and amount steps for undelegation + totalStake={ + stakesType === AuctionManagerEntryPoint.undelegate + ? validator.user_stake + : validator.total_stake + } delegatorsNumber={validator?.delegators_number} handleClick={async () => { setValue('validatorPublicKey', validator.public_key); From 99f6c43d8da60a5a17d112e287a7ad604ae829b2 Mon Sep 17 00:00:00 2001 From: Ostap Piatkovskyi <44294945+ost-ptk@users.noreply.github.com> Date: Thu, 7 Dec 2023 17:46:40 +0200 Subject: [PATCH 100/243] added new UI for account switcher (#883) Co-authored-by: ost-ptk --- .../components/account-list/account-list.tsx | 47 +++++------- src/libs/ui/components/avatar/avatar.tsx | 71 +++++++++++++------ 2 files changed, 67 insertions(+), 51 deletions(-) diff --git a/src/libs/ui/components/account-list/account-list.tsx b/src/libs/ui/components/account-list/account-list.tsx index dd1f85a64..d69c9bb4f 100644 --- a/src/libs/ui/components/account-list/account-list.tsx +++ b/src/libs/ui/components/account-list/account-list.tsx @@ -7,7 +7,6 @@ import { AlignedFlexRow, CenteredFlexRow, FlexColumn, - FlexRow, LeftAlignedFlexColumn, SpacingSize } from '@libs/layout'; @@ -22,13 +21,12 @@ import { sortAccounts } from '@libs/ui/components/account-list/utils'; import { getAccountHashFromPublicKey } from '@libs/entities/Account'; import { AccountActionsMenuPopover, + Avatar, Button, - Checkbox, Hash, HashVariant, List, - Typography, - ConnectionStatusBadge + Typography } from '@libs/ui'; import { RouterPath, useTypedNavigate } from '@popup/router'; import { WindowApp } from '@background/create-open-window'; @@ -38,22 +36,16 @@ const ListItemContainer = styled(FlexColumn)` min-height: 68px; height: 100%; - padding: 12px 8px 12px 16px; + padding: 16px 8px 16px 16px; `; -const ListItemClickableContainer = styled(FlexRow)` +const ListItemClickableContainer = styled(AlignedFlexRow)` width: 100%; cursor: pointer; `; const AccountNameWithHashListItemContainer = styled(LeftAlignedFlexColumn)` width: 100%; - - padding-left: 16px; -`; - -const ConnectionStatusBadgeContainer = styled.div` - margin-left: 44px; `; const ButtonContainer = styled(CenteredFlexRow)` @@ -91,17 +83,18 @@ export const AccountList = ({ closeModal }: AccountListProps) => { })); setAccountListRows(accountListRows); - // We need to sort the account list only on the component mount + // We need to sort the account list only on the component mount and when new accounts are added // eslint-disable-next-line react-hooks/exhaustive-deps - }, []); + }, [accounts]); return ( { const isConnected = connectedAccountNames.includes(account.name); + const isActiveAccount = activeAccountName === account.name; return ( @@ -111,13 +104,15 @@ export const AccountList = ({ closeModal }: AccountListProps) => { changeActiveAccount(account.name); closeModal(event); }} + gap={SpacingSize.Medium} > - { onClick={closeModal} /> - {isConnected && ( - - - - )} ); }} - marginLeftForItemSeparatorLine={60} + marginLeftForItemSeparatorLine={70} renderFooter={() => (