From 999de7117d2bc4b8f1a6ee1008aa993174af007d Mon Sep 17 00:00:00 2001 From: Dong-Ha Kim Date: Mon, 24 Feb 2025 22:10:40 +0700 Subject: [PATCH 1/6] feat: custom wallet ui sidebar --- .storybook/preview.tsx | 5 +- e2e/wallet-setup/connected.setup.ts | 4 +- package.json | 10 +- src/Routes.tsx | 13 +- src/assets/icons/arrow-up-right.svg | 4 +- src/assets/icons/logout.svg | 3 + src/assets/wallet-logos/coinbase.svg | 4 + src/assets/wallet-logos/injected.svg | 1 + src/assets/wallet-logos/metamask.svg | 32 + src/assets/wallet-logos/safe.svg | 6 + src/assets/wallet-logos/wallet-connect.svg | 4 + src/components/Header/Header.tsx | 16 +- src/components/Header/MenuToggle.tsx | 18 +- src/components/Sidebar/Sidebar.styles.tsx | 49 - src/components/Sidebar/Sidebar.tsx | 158 +-- .../Sidebar/components/AccountContent.tsx | 134 +++ .../Sidebar/components/NavigationContent.tsx | 103 ++ .../Sidebar/components/SidebarItem.tsx | 199 ++++ .../Sidebar/components/WalletContent.tsx | 112 ++ src/components/Sidebar/useSidebar.ts | 110 -- src/components/Wallet/Wallet.styles.ts | 32 +- src/components/Wallet/Wallet.tsx | 58 +- src/components/Wallet/Web3Subscribe.tsx | 6 +- src/hooks/useConnection.ts | 87 +- src/hooks/useConnectionEVM.ts | 40 + src/hooks/useInitialUserPropTraces.ts | 11 +- src/hooks/useIsWrongNetwork.ts | 6 +- src/hooks/useOnboard.tsx | 273 ----- src/hooks/useSidebarContext.ts | 12 + src/hooks/useWalletTrace.ts | 22 +- src/index.tsx | 16 +- src/providers/SidebarProvider.tsx | 45 + src/utils/amplitude.ts | 48 +- src/utils/index.ts | 1 - src/utils/onboard.ts | 78 -- vite.config.js | 1 - yarn.lock | 1053 +---------------- 37 files changed, 967 insertions(+), 1807 deletions(-) create mode 100644 src/assets/icons/logout.svg create mode 100644 src/assets/wallet-logos/coinbase.svg create mode 100644 src/assets/wallet-logos/injected.svg create mode 100644 src/assets/wallet-logos/metamask.svg create mode 100644 src/assets/wallet-logos/safe.svg create mode 100644 src/assets/wallet-logos/wallet-connect.svg delete mode 100644 src/components/Sidebar/Sidebar.styles.tsx create mode 100644 src/components/Sidebar/components/AccountContent.tsx create mode 100644 src/components/Sidebar/components/NavigationContent.tsx create mode 100644 src/components/Sidebar/components/SidebarItem.tsx create mode 100644 src/components/Sidebar/components/WalletContent.tsx delete mode 100644 src/components/Sidebar/useSidebar.ts create mode 100644 src/hooks/useConnectionEVM.ts delete mode 100644 src/hooks/useOnboard.tsx create mode 100644 src/hooks/useSidebarContext.ts create mode 100644 src/providers/SidebarProvider.tsx delete mode 100644 src/utils/onboard.ts diff --git a/.storybook/preview.tsx b/.storybook/preview.tsx index 7ed336509..780e8ff40 100644 --- a/.storybook/preview.tsx +++ b/.storybook/preview.tsx @@ -2,16 +2,13 @@ import { Preview } from "@storybook/react"; import { MemoryRouter } from "react-router-dom"; import { default as GlobalStyles } from "../src/components/GlobalStyles/GlobalStyles"; -import { OnboardContext, useOnboardManager } from "../src/hooks/useOnboard"; const preview: Preview = { decorators: [ (Story) => ( - - - + ), ], diff --git a/e2e/wallet-setup/connected.setup.ts b/e2e/wallet-setup/connected.setup.ts index b3989717c..1ab013c36 100644 --- a/e2e/wallet-setup/connected.setup.ts +++ b/e2e/wallet-setup/connected.setup.ts @@ -20,12 +20,12 @@ export default defineWalletSetup(MM_PASSWORD, async (context, walletPage) => { // Go to a locally hosted MetaMask Test Dapp. await page.goto(E2E_DAPP_URL); - // Connect via web3-onboard modal + // Connect via wallet sidebar await page .getByRole("banner") .locator(page.getByRole("button", { name: "Connect" })) .click(); - await page.getByRole("button", { name: "MetaMask" }).click(); + await page.getByTestId("sidebar-menu-item-MetaMask").click(); await metamask.connectToDapp(["Account 1"]); }); diff --git a/package.json b/package.json index b23da1b95..0a2504970 100644 --- a/package.json +++ b/package.json @@ -25,14 +25,6 @@ "@uniswap/sdk-core": "^4.2.0", "@uniswap/v3-sdk": "^3.11.0", "@vercel/kv": "^2.0.0", - "@web3-onboard/coinbase": "^2.4.1", - "@web3-onboard/core": "^2.24.0", - "@web3-onboard/gnosis": "^2.2.0", - "@web3-onboard/injected-wallets": "^2.11.1", - "@web3-onboard/metamask": "^2.2.0", - "@web3-onboard/phantom": "^2.1.1", - "@web3-onboard/react": "^2.11.0", - "@web3-onboard/walletconnect": "^2.4.6", "axios": "^0.27.2", "ethers": "5.7.2", "framer-motion": "^11.3.19", @@ -43,7 +35,7 @@ "react": "v18", "react-dom": "v18", "react-feather": "^2.0.9", - "react-pro-sidebar": "^1.1.0-alpha.1", + "react-pro-sidebar": "^1.1.0", "react-router-dom": "v5", "react-tooltip": "^5.18.0", "superstruct": "^0.15.4", diff --git a/src/Routes.tsx b/src/Routes.tsx index 06663fb54..e9e3d586a 100644 --- a/src/Routes.tsx +++ b/src/Routes.tsx @@ -63,7 +63,6 @@ const warningMessage = ` `; function useRoutes() { - const [openSidebar, setOpenSidebar] = useState(false); const [enableACXBanner, setEnableACXBanner] = useState(true); const { provider, isContractAddress } = useConnection(); const location = useLocation(); @@ -82,8 +81,6 @@ function useRoutes() { }, [location.pathname, history]); return { - openSidebar, - setOpenSidebar, provider, error, removeError, @@ -99,8 +96,6 @@ function useRoutes() { // Need this component for useLocation hook const Routes: React.FC = () => { const { - openSidebar, - setOpenSidebar, error, removeError, location, @@ -140,12 +135,8 @@ const Routes: React.FC = () => { {isContractAddress && ( {warningMessage} )} -
- +
+ }> diff --git a/src/assets/icons/arrow-up-right.svg b/src/assets/icons/arrow-up-right.svg index 477397094..b64b350af 100644 --- a/src/assets/icons/arrow-up-right.svg +++ b/src/assets/icons/arrow-up-right.svg @@ -1,3 +1,3 @@ - - + + diff --git a/src/assets/icons/logout.svg b/src/assets/icons/logout.svg new file mode 100644 index 000000000..ecf6381fd --- /dev/null +++ b/src/assets/icons/logout.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/wallet-logos/coinbase.svg b/src/assets/wallet-logos/coinbase.svg new file mode 100644 index 000000000..9f711c490 --- /dev/null +++ b/src/assets/wallet-logos/coinbase.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/wallet-logos/injected.svg b/src/assets/wallet-logos/injected.svg new file mode 100644 index 000000000..7e011718d --- /dev/null +++ b/src/assets/wallet-logos/injected.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/wallet-logos/metamask.svg b/src/assets/wallet-logos/metamask.svg new file mode 100644 index 000000000..1008eebac --- /dev/null +++ b/src/assets/wallet-logos/metamask.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/wallet-logos/safe.svg b/src/assets/wallet-logos/safe.svg new file mode 100644 index 000000000..308edb381 --- /dev/null +++ b/src/assets/wallet-logos/safe.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/wallet-logos/wallet-connect.svg b/src/assets/wallet-logos/wallet-connect.svg new file mode 100644 index 000000000..de3fb4ad0 --- /dev/null +++ b/src/assets/wallet-logos/wallet-connect.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/components/Header/Header.tsx b/src/components/Header/Header.tsx index ae5366279..3ab13f5ef 100644 --- a/src/components/Header/Header.tsx +++ b/src/components/Header/Header.tsx @@ -16,6 +16,7 @@ import MenuToggle from "./MenuToggle"; import { enableMigration } from "utils"; import useScrollPosition from "hooks/useScrollPosition"; import { isChildPath } from "./utils"; +import { useSidebarContext } from "hooks/useSidebarContext"; const LINKS = !enableMigration ? [ @@ -27,21 +28,16 @@ const LINKS = !enableMigration : []; interface Props { - openSidebar: boolean; - setOpenSidebar: React.Dispatch>; transparentHeader?: boolean; } -const Header: React.FC = ({ - openSidebar, - setOpenSidebar, - transparentHeader, -}) => { +const Header: React.FC = ({ transparentHeader }) => { const location = useLocation(); const scrollPosition = useScrollPosition(); + const { isOpen, openSidebar, closeSidebar } = useSidebarContext(); const toggleMenu = () => { - setOpenSidebar((prevValue) => !prevValue); + isOpen ? closeSidebar() : openSidebar(); }; return ( @@ -77,8 +73,8 @@ const Header: React.FC = ({ - - + + diff --git a/src/components/Header/MenuToggle.tsx b/src/components/Header/MenuToggle.tsx index e960afff4..292308a88 100644 --- a/src/components/Header/MenuToggle.tsx +++ b/src/components/Header/MenuToggle.tsx @@ -1,6 +1,7 @@ import { FC } from "react"; import styled from "@emotion/styled"; import { ReactComponent as HamburgerIcon } from "assets/icons/hamburger.svg"; +import { COLORS } from "utils"; interface MenuToggleProps { toggle: () => void; @@ -17,19 +18,18 @@ const MenuToggle: FC = ({ toggle }) => { export default MenuToggle; const CloseButton = styled.button` - position: relative; + cursor: pointer; + + display: flex; width: 40px; height: 40px; - padding: 0; - margin: 0; - display: flex; justify-content: center; align-items: center; - background-color: transparent; - border: 1px solid #4c4e57; - border-radius: 20px; - cursor: pointer; - outline: none; + gap: 6px; + + border-radius: 12px; + border: 1px solid ${COLORS["grey-500"]}; + background: #2d2e33; :hover { border: 1px solid #e0f3ff; diff --git a/src/components/Sidebar/Sidebar.styles.tsx b/src/components/Sidebar/Sidebar.styles.tsx deleted file mode 100644 index 0a7a41291..000000000 --- a/src/components/Sidebar/Sidebar.styles.tsx +++ /dev/null @@ -1,49 +0,0 @@ -import styled from "@emotion/styled"; - -import { PrimaryButton } from "../Button"; - -export const StyledHeader = styled.div` - background-color: var(--color-primary); - padding: 1.5rem; -`; - -export const CloseButton = styled.div` - text-align: right; - color: var(--color-gray); - font-size: ${20 / 16}rem; - font-weight: 700; - cursor: pointer; - margin-left: auto; - margin-right: 16px; - img { - margin-top: 16px; - height: 20px; - } -`; -export const HeaderText = styled.div` - color: var(--color-gray); - font-size: ${16 / 16}rem; -`; - -export const ConnectButton = styled(PrimaryButton)``; - -export const DisconnectButton = styled(PrimaryButton)` - margin-top: 1.25rem; -`; - -export const ConnectText = styled.div` - > div { - display: inline-block; - background-color: var(--color-white); - height: 12px; - width: 12px; - margin-right: 4px; - border-radius: 8px; - content: " "; - } - color: var(--color-gray); -`; - -export const TopHeaderRow = styled.div` - display: flex; -`; diff --git a/src/components/Sidebar/Sidebar.tsx b/src/components/Sidebar/Sidebar.tsx index 34891493b..fa4588607 100644 --- a/src/components/Sidebar/Sidebar.tsx +++ b/src/components/Sidebar/Sidebar.tsx @@ -1,33 +1,8 @@ -import { useCallback } from "react"; -import { Link } from "react-router-dom"; -import { - Menu, - SubMenu, - MenuItem, - Sidebar as ReactProSidebar, - sidebarClasses, - menuClasses, -} from "react-pro-sidebar"; +import { Sidebar as ReactProSidebar, sidebarClasses } from "react-pro-sidebar"; -import { - StyledHeader, - CloseButton, - HeaderText, - ConnectButton, - DisconnectButton, - ConnectText, - TopHeaderRow, -} from "./Sidebar.styles"; -import { getChainInfo, isSupportedChainId } from "utils"; -import useSidebar from "./useSidebar"; -import closeIcon from "assets/icons/cross.svg"; -import { useConnection } from "hooks"; -import { Text } from "components"; - -interface Props { - openSidebar: boolean; - setOpenSidebar: React.Dispatch>; -} +import { useSidebarContext } from "hooks/useSidebarContext"; +import { NavigationContent } from "./components/NavigationContent"; +import { WalletContent } from "./components/WalletContent"; const sidebarWidth = "450px"; @@ -40,135 +15,28 @@ const sidebarRootStyles = { }, borderLeftWidth: "0px !important", [`.${sidebarClasses.container}`]: { - background: "#34353a", + background: "#202024", }, -}; - -const subMenuRootStyles = { - backgroundColor: "#34353a", - color: "#b5c3ceff", - [`.${menuClasses.subMenuContent}`]: { - backgroundColor: "#34353a", + [`.${sidebarClasses.backdrop}`]: { + background: "#202024", + opacity: 0.5, }, }; -const Sidebar = ({ openSidebar, setOpenSidebar }: Props) => { - const { - sidebarNavigationLinks, - sidebarAboutLinks, - account, - ensName, - isConnected, - chainId, - toggleAboutAccordion, - setIsAboutAccordionOpen, - isAboutAccordionOpen, - } = useSidebar(openSidebar); - const { connect, disconnect, wallet } = useConnection(); - const addrOrEns = ensName ?? account; - - const onClickLink = useCallback(() => { - setOpenSidebar(false); - setIsAboutAccordionOpen(false); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []); - - const onClickOverlay = useCallback(() => { - setOpenSidebar(false); - setIsAboutAccordionOpen(false); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []); +const Sidebar = () => { + const { isOpen, closeSidebar, contentType } = useSidebarContext(); return ( - - - {!isConnected && ( - { - connect({ trackSection: "mobileNavSidebar" }); - }} - > - Connect Wallet - - )} - {isConnected && ( - -
Connected - - )} - setOpenSidebar(false)}> - close_button - - - {addrOrEns && {addrOrEns}} - {isSupportedChainId(chainId) ? ( - {getChainInfo(chainId).name} - ) : isConnected ? ( - Unsupported Network - ) : null} - {isConnected && wallet ? ( - - disconnect(wallet, { trackSection: "mobileNavSidebar" }) - } - > - Disconnect - - ) : null} - - - {sidebarNavigationLinks.map((item) => ( - } - > - {item.title} - - ))} - - {sidebarAboutLinks.map((item) => ( - - {item.title} - - } - > - {item.title} - - ))} - - + {contentType === "navigation" ? : } ); }; diff --git a/src/components/Sidebar/components/AccountContent.tsx b/src/components/Sidebar/components/AccountContent.tsx new file mode 100644 index 000000000..f489c3183 --- /dev/null +++ b/src/components/Sidebar/components/AccountContent.tsx @@ -0,0 +1,134 @@ +import styled from "@emotion/styled"; + +import { getChainInfo, isSupportedChainId, shortenAddress } from "utils"; +import { useConnection } from "hooks"; +import { ReactComponent as LogoutIcon } from "assets/icons/logout.svg"; + +import { SidebarItem } from "./SidebarItem"; +import { SecondaryButton } from "components/Button"; +import { Text } from "components/Text"; + +export function AccountContent() { + const { connect, disconnect, account, isConnected, chainId, connector } = + useConnection(); + + const chainInfo = isSupportedChainId(chainId) + ? getChainInfo(chainId) + : { + name: "Unsupported Network", + logoURI: "", + }; + + return ( + + {isConnected && account ? ( + + disconnect({ connector, trackSection: "mobileNavSidebar" }) + } + /> + ) : ( + { + connect({ trackSection: "mobileNavSidebar" }); + }} + > + Connect Wallet + + )} + + ); +} + +function ConnectedAccount(props: { + address: string; + chainName: string; + chainLogoUrl: string; + onClickDisconnect: () => void; +}) { + return ( + + + + {props.chainName} + + + + {shortenAddress(props.address, "...", 4)} + + {props.chainName} + + + + + + + ); +} + +const ConnectButton = styled(SecondaryButton)` + margin-bottom: 12px; +`; + +const DisconnectButton = styled.div` + display: flex; + width: 32px; + height: 32px; + padding: 8px; + justify-content: center; + align-items: center; + gap: 8px; + + border-radius: 8px; + background: rgba(255, 255, 255, 0.05); + cursor: pointer; + &:hover { + background: rgba(255, 255, 255, 0.1); + } +`; + +const ConnectedAccountContainer = styled.div` + display: flex; + height: 64px; + padding: 12px; + justify-content: space-between; + align-items: center; + margin-bottom: 12px; + + border-radius: 10px; + border: 1px solid rgba(255, 255, 255, 0.05); + background: rgba(255, 255, 255, 0.05); +`; + +const ConnectedAccountLeftContainer = styled.div` + display: flex; + align-items: center; + gap: 12px; +`; + +const ConnectedAccountChainLogoContainer = styled.div` + display: flex; + width: 32px; + height: 32px; + padding: 6px; + justify-content: center; + align-items: center; + + border-radius: 8px; + border: 1px solid rgba(255, 255, 255, 0.05); + background: rgba(255, 255, 255, 0.05); + box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.15); + + img { + width: 20px; + height: 20px; + } +`; + +const ConnectedAccountAddressContainer = styled.div` + display: flex; + flex-direction: column; +`; diff --git a/src/components/Sidebar/components/NavigationContent.tsx b/src/components/Sidebar/components/NavigationContent.tsx new file mode 100644 index 000000000..0dbc65012 --- /dev/null +++ b/src/components/Sidebar/components/NavigationContent.tsx @@ -0,0 +1,103 @@ +import { useCallback } from "react"; + +import { ReactComponent as ExternalLinkIcon } from "assets/icons/arrow-up-right.svg"; +import { useSidebarContext } from "hooks/useSidebarContext"; +import { AccountContent } from "./AccountContent"; +import { SidebarItem } from "./SidebarItem"; + +const sidebarNavigationLinks = [ + { + pathName: "/bridge", + title: "Bridge", + }, + { + pathName: "/pool", + title: "Pool", + }, + { + pathName: "/rewards", + title: "Rewards", + }, + { + pathName: "/transactions", + title: "Transactions", + }, + { + pathName: "https://docs.across.to/", + title: "Docs", + isExternalLink: true, + rightIcon: , + }, +]; + +const sidebarAboutLinks = [ + { + title: "Support (Discord)", + link: "https://discord.across.to", + isExternalLink: true, + }, + { + title: "Github", + link: "https://github.com/across-protocol", + isExternalLink: true, + }, + { + title: "Twitter", + link: "https://twitter.com/AcrossProtocol/", + isExternalLink: true, + }, + { + title: "Medium", + link: "https://medium.com/across-protocol", + isExternalLink: true, + }, + { + title: "Forum", + link: "https://forum.across.to/", + isExternalLink: true, + }, + { + title: "Terms of Service", + link: "https://across.to/terms-of-service", + isExternalLink: true, + }, +]; + +export function NavigationContent() { + const { closeSidebar } = useSidebarContext(); + + const handleClickNavLink = useCallback(() => { + closeSidebar(); + }, [closeSidebar]); + + return ( + <> + + {sidebarNavigationLinks.map((item) => + item.isExternalLink ? ( + + ) : ( + + ) + )} + ({ + label: item.title, + href: item.link, + }))} + /> + + ); +} diff --git a/src/components/Sidebar/components/SidebarItem.tsx b/src/components/Sidebar/components/SidebarItem.tsx new file mode 100644 index 000000000..4438e9251 --- /dev/null +++ b/src/components/Sidebar/components/SidebarItem.tsx @@ -0,0 +1,199 @@ +import styled from "@emotion/styled"; +import { ReactNode, useState } from "react"; + +import { Text } from "components/Text"; +import closeIcon from "assets/icons/cross.svg"; +import { ReactComponent as ChevronDown } from "assets/icons/chevron-down.svg"; +import { useSidebarContext } from "hooks/useSidebarContext"; +import { Link } from "react-router-dom"; +import { COLORS } from "utils"; + +export const SidebarItem = { + Header, + MenuItem, + InternalLink, + ExternalLink, + Collapsible, +}; + +function Header(props: { title: string; children?: ReactNode }) { + const { closeSidebar } = useSidebarContext(); + return ( + + + {props.title} + + close_button + + + {props.children} + + ); +} + +function MenuItem(props: { + label: string; + leftIcon?: ReactNode; + rightIcon?: ReactNode; + onClick?: () => void; + disabled?: boolean; + dataCy?: string; +}) { + return ( + + + {props.leftIcon && props.leftIcon} + {props.label} + + {props.rightIcon && props.rightIcon} + + ); +} + +function InternalLink(props: { + onClick: () => void; + label: string; + path: string; +}) { + return ( + + + + ); +} + +function ExternalLink(props: { + onClick: () => void; + label: string; + linkTo: string; + rightIcon?: ReactNode; +}) { + return ( + + + + ); +} + +function Collapsible(props: { + label: string; + items: { + label: string; + href: string; + }[]; +}) { + const [isOpen, setIsOpen] = useState(false); + return ( + <> + setIsOpen((prev) => !prev)} + label={props.label} + rightIcon={isOpen ? : } + /> + {isOpen && ( + + {props.items.map((item) => ( + setIsOpen(true)} + label={item.label} + linkTo={item.href} + /> + ))} + + )} + + ); +} + +const HeaderContainer = styled.div` + display: flex; + flex-direction: column; +`; + +const HeaderTitleRow = styled.div` + display: flex; + padding: 24px 24px 18px 24px; + justify-content: space-between; + align-items: flex-start; + align-self: stretch; +`; + +const HeaderCloseButton = styled.button` + background-color: transparent; + border: none; + cursor: pointer; + + svg path { + width: 24px; + height: 24px; + fill: #e0e0e0; + } +`; + +const HeaderContentContainer = styled.div` + display: flex; + padding: 0px 24px; + flex-direction: column; +`; + +const MenuItemContainer = styled.div<{ disabled?: boolean }>` + display: flex; + justify-content: space-between; + padding: 18px 24px; + flex-direction: row; + align-items: center; + gap: 10px; + border-bottom: 0.5px solid ${COLORS["grey-400-15"]}; + cursor: ${({ disabled }) => (disabled ? "default" : "pointer")}; + opacity: ${({ disabled }) => (disabled ? 0.5 : 1)}; + + &:hover { + background-color: ${({ disabled }) => + disabled ? "transparent" : COLORS["grey-600"]}; + } + + a { + text-decoration: none; + } + + svg path { + height: 32px; + width: 32px; + } +`; + +const LeftIconContainer = styled.div` + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + gap: 12px; +`; + +const CollapsibleChildItemsContainer = styled.div` + display: flex; + flex-direction: column; +`; + +const ExternalLinkContainer = styled.a` + text-decoration: none; +`; + +const InternalLinkContainer = styled(Link)` + width: 100%; + height: 100%; + text-decoration: none; +`; + +const ChevronUp = styled(ChevronDown)` + transform: rotate(180deg); +`; diff --git a/src/components/Sidebar/components/WalletContent.tsx b/src/components/Sidebar/components/WalletContent.tsx new file mode 100644 index 000000000..b65cdea44 --- /dev/null +++ b/src/components/Sidebar/components/WalletContent.tsx @@ -0,0 +1,112 @@ +import { useCallback } from "react"; +import { Connector, useConnect } from "wagmi"; +import styled from "@emotion/styled"; + +import { useSidebarContext } from "hooks/useSidebarContext"; +import { SidebarItem } from "./SidebarItem"; +import { Text } from "components/Text"; + +import metaMaskIcon from "assets/wallet-logos/metamask.svg"; +import coinbaseIcon from "assets/wallet-logos/coinbase.svg"; +import walletConnectIcon from "assets/wallet-logos/wallet-connect.svg"; +import safeIcon from "assets/wallet-logos/safe.svg"; +import injectedIcon from "assets/wallet-logos/injected.svg"; +import { trackIfWalletSelected } from "utils"; +const connectorNameToIcon = { + MetaMask: metaMaskIcon, + "Coinbase Wallet": coinbaseIcon, + WalletConnect: walletConnectIcon, + Safe: safeIcon, + Injected: injectedIcon, +}; + +export function WalletContent() { + const { connectors, isPending } = useConnect(); + + return ( + <> + + + + EVM + + + {connectors.map((connector) => ( + + ))} + + ); +} + +function WalletItem({ connector }: { connector: Connector }) { + const { closeSidebar } = useSidebarContext(); + const { isPending, connectAsync } = useConnect(); + + const handleClickEvmConnector = useCallback( + async (connector: Connector) => { + await connectAsync( + { connector }, + { + onSuccess: () => { + trackIfWalletSelected(connector.name); + closeSidebar(); + }, + } + ); + }, + [closeSidebar, connectAsync] + ); + + if (connector.name === "Injected") { + console.log(connector); + } + 1; + + return ( + handleClickEvmConnector(connector)} + label={connector.name} + disabled={isPending} + leftIcon={} + /> + ); +} + +function WalletItemIcon({ connector }: { connector: Connector }) { + const { icon: connectorIcon, name } = connector; + const icon = + connectorIcon || + connectorNameToIcon[name as keyof typeof connectorNameToIcon]; + return icon ? ( + + ) : ( + + ); +} + +const WalletTypeSeparator = styled.div` + display: flex; + padding: 8px 24px; + flex-direction: column; + align-items: flex-start; + gap: 10px; + align-self: stretch; + background-color: #2b2b2f; +`; + +const WalletIcon = styled.img` + width: 24px; + height: 24px; + border-radius: 50%; +`; + +const WalletIconPlaceholder = styled.div` + width: 24px; + height: 24px; + border-radius: 50%; + background-color: #2b2b2f; +`; diff --git a/src/components/Sidebar/useSidebar.ts b/src/components/Sidebar/useSidebar.ts deleted file mode 100644 index eb0255c78..000000000 --- a/src/components/Sidebar/useSidebar.ts +++ /dev/null @@ -1,110 +0,0 @@ -import { useState, useEffect } from "react"; -import { useLocation } from "react-router-dom"; -import { usePrevious, useConnection } from "hooks"; -import { useEnsQuery } from "hooks/useEns"; -type SidebarWrapperClasses = "open" | "closed" | "transition"; - -const sidebarNavigationLinks = [ - { - pathName: "/bridge", - title: "Bridge", - }, - { - pathName: "/pool", - title: "Pool", - }, - { - pathName: "/rewards", - title: "Rewards", - }, - { - pathName: "/transactions", - title: "Transactions", - }, -]; - -const sidebarAboutLinks = [ - { - title: "Docs", - link: "https://docs.across.to/", - isExternalLink: true, - }, - { - title: "Support (Discord)", - link: "https://discord.across.to", - isExternalLink: true, - }, - { - title: "Github", - link: "https://github.com/across-protocol", - isExternalLink: true, - }, - { - title: "Twitter", - link: "https://twitter.com/AcrossProtocol/", - isExternalLink: true, - }, - { - title: "Medium", - link: "https://medium.com/across-protocol", - isExternalLink: true, - }, - { - title: "Forum", - link: "https://forum.across.to/", - isExternalLink: true, - }, - { - title: "Terms of Service", - link: "https://across.to/terms-of-service", - isExternalLink: true, - }, -]; - -export default function useSidebar(openSidebar: boolean) { - const { account, isConnected, chainId } = useConnection(); - const location = useLocation(); - - const { - data: { ensName }, - } = useEnsQuery(account); - - const [isAboutAccordionOpen, setIsAboutAccordionOpen] = useState(false); - - // Note: to avoid a UI issue, we need to transition classes between open -> transition -> closed or vice versa. - // This is because we want the element when closed to take up no space, but it needs a moment to render on the DOM before it can - // Properly translateX. - const [className, setClassName] = useState("closed"); - const prevOpenSidebar = usePrevious(openSidebar); - useEffect(() => { - if (openSidebar && openSidebar !== prevOpenSidebar) { - setClassName("transition"); - setTimeout(() => { - setClassName("open"); - }, 100); - } - if (!openSidebar && openSidebar !== prevOpenSidebar) { - setClassName("transition"); - setTimeout(() => { - setClassName("closed"); - }, 250); - } - }, [openSidebar, prevOpenSidebar]); - - const toggleAboutAccordion = () => setIsAboutAccordionOpen((prev) => !prev); - - return { - account, - ensName, - isConnected, - chainId, - location, - className, - setClassName, - sidebarNavigationLinks, - sidebarAboutLinks, - toggleAboutAccordion, - setIsAboutAccordionOpen, - isAboutAccordionOpen, - }; -} diff --git a/src/components/Wallet/Wallet.styles.ts b/src/components/Wallet/Wallet.styles.ts index a5e397cc4..1f3379aa8 100644 --- a/src/components/Wallet/Wallet.styles.ts +++ b/src/components/Wallet/Wallet.styles.ts @@ -64,19 +64,18 @@ export const UnsupportedNetwork = styled.div` `; export const BalanceButton = styled.button` - height: 40px; - padding: 0 16px; + padding: 8px 12px; display: flex; align-items: center; font-size: 16px; line-height: 20px; color: #9daab2; - font-weight: 500; border: 1px solid #4d4f56; border-radius: 12px; background-color: transparent; outline: none; cursor: pointer; + gap: 12px; :hover { color: #e0f3ff; @@ -125,7 +124,28 @@ export const Logo = styled(AcrossLogo)` } `; -export const Account = styled.div` - font: inherit; - /* border: 1px solid var(--color-gray); */ +export const ConnectedAccountChainLogoContainer = styled.div` + display: flex; + width: 24px; + height: 24px; + padding: 4.5px; + justify-content: center; + align-items: center; + + border-radius: 6px; + border: 0.75px solid rgba(255, 255, 255, 0.05); + background: rgba(255, 255, 255, 0.05); + box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.15); + + img { + width: 20px; + height: 20px; + } +`; + +export const ConnectedAccountContainer = styled.div` + display: flex; + flex-direction: row; + align-items: center; + gap: 12px; `; diff --git a/src/components/Wallet/Wallet.tsx b/src/components/Wallet/Wallet.tsx index d0a8faa44..f1dec72c9 100644 --- a/src/components/Wallet/Wallet.tsx +++ b/src/components/Wallet/Wallet.tsx @@ -1,7 +1,10 @@ -import { FC } from "react"; - import { useConnection } from "hooks"; -import { shortenAddress, isSupportedChainId, SHOW_ACX_NAV_TOKEN } from "utils"; +import { + shortenAddress, + isSupportedChainId, + SHOW_ACX_NAV_TOKEN, + getChainInfo, +} from "utils"; import { ConnectButton, @@ -9,22 +12,29 @@ import { BalanceButton, Logo, BalanceWallet, - Account, Separator, WalletWrapper, + ConnectedAccountChainLogoContainer, + ConnectedAccountContainer, } from "./Wallet.styles"; import Web3Subscribe from "./Web3Subscribe"; import { useEnsQuery } from "hooks/useEns"; +import { useSidebarContext } from "hooks/useSidebarContext"; +import { Text } from "components/Text"; -interface Props { - setOpenSidebar: React.Dispatch>; -} - -const Wallet: FC = ({ setOpenSidebar }) => { +const Wallet = () => { const { account, isConnected, chainId, connect } = useConnection(); const { data: { ensName }, } = useEnsQuery(account); + const { openSidebar } = useSidebarContext(); + + const chainInfo = isSupportedChainId(chainId) + ? getChainInfo(chainId) + : { + name: "Unsupported Network", + logoURI: "", + }; if (account && !isSupportedChainId(chainId)) { return ( @@ -50,7 +60,7 @@ const Wallet: FC = ({ setOpenSidebar }) => { return ( - setOpenSidebar(true)} data-cy="acx-balance"> + openSidebar()} data-cy="acx-balance"> {SHOW_ACX_NAV_TOKEN && ( <> @@ -60,13 +70,35 @@ const Wallet: FC = ({ setOpenSidebar }) => { {account && ( <> {SHOW_ACX_NAV_TOKEN && } - - {ensName ?? shortenAddress(account, "..", 4)} - + )} ); }; + +const ConnectedAccount = (props: { + chainLogoUrl: string; + chainName: string; + address: string; + ensName?: string | null; +}) => { + return ( + + + {props.chainName} + + + {props.ensName ?? shortenAddress(props.address, "...", 4)} + + + ); +}; + export default Wallet; diff --git a/src/components/Wallet/Web3Subscribe.tsx b/src/components/Wallet/Web3Subscribe.tsx index 1ccd34dae..142508539 100644 --- a/src/components/Wallet/Web3Subscribe.tsx +++ b/src/components/Wallet/Web3Subscribe.tsx @@ -4,7 +4,7 @@ import { useConnection } from "hooks"; import { isDefined } from "utils"; const Web3Subscribe = () => { - const { wallet } = useConnection(); + const { connector } = useConnection(); const [isCBWallet, setIsCBWallet] = useState(false); const [isSubscribed, setISubscribed] = useState(false); const [isLoading, setIsLoading] = useState(true); @@ -23,9 +23,9 @@ const Web3Subscribe = () => { (window as any)?.coinbaseWalletExtension?.connectionType === "extension_connection_type"; - const cbWalletSelected = wallet?.label === "Coinbase Wallet"; + const cbWalletSelected = connector?.name === "Coinbase Wallet"; setIsCBWallet(cbExtensionEnabled && cbWalletSelected); - }, [wallet]); + }, [connector]); useEffect(() => { (window as any)?.CBWSubscribe?.createSubscriptionUI({ diff --git a/src/hooks/useConnection.ts b/src/hooks/useConnection.ts index a7a41199a..89cbb2208 100644 --- a/src/hooks/useConnection.ts +++ b/src/hooks/useConnection.ts @@ -1,38 +1,81 @@ -import { ethers } from "ethers"; +import { useCallback } from "react"; +import { useAccount, useDisconnect, useSwitchChain } from "wagmi"; -import { useOnboard } from "hooks/useOnboard"; -import { useIsContractAddress } from "hooks/useIsContractAddress"; +import { useIsContractAddress } from "./useIsContractAddress"; +import { useSidebarContext } from "./useSidebarContext"; +import { useEnsQuery } from "./useEns"; +import { useEthersProvider, useEthersSigner } from "./useConnectionEVM"; + +import { + trackConnectWalletButtonClicked, + trackDisconnectWalletButtonClicked, +} from "utils"; +import { + ampli, + ConnectWalletButtonClickedProperties, + DisconnectWalletButtonClickedProperties, +} from "ampli"; export function useConnection() { - const { - provider, - signer, - isConnected, - connect, - disconnect, - account, - chainId, - wallet, - error, - setChain, - didAttemptAutoSelect, - } = useOnboard(); + const { openSidebar } = useSidebarContext(); + + const { isConnected, address, chainId = 0, connector } = useAccount(); + const { disconnect: _disconnect } = useDisconnect(); + const { switchChainAsync } = useSwitchChain(); + const provider = useEthersProvider({ chainId }); + const signer = useEthersSigner({ chainId }); + + const { data: ensName } = useEnsQuery(address); + + const connect = useCallback( + (options?: { + trackSection?: ConnectWalletButtonClickedProperties["section"]; + }) => { + openSidebar("connect-wallet"); + + if (options?.trackSection) { + trackConnectWalletButtonClicked(options.trackSection); + } + }, + [openSidebar] + ); + + const disconnect = useCallback( + ( + options?: Parameters[0] & { + trackSection?: DisconnectWalletButtonClickedProperties["section"]; + } + ) => { + if (options?.trackSection) { + trackDisconnectWalletButtonClicked(options.trackSection); + } + _disconnect({ connector, ...options }); + ampli.client?.setUserId(undefined); + }, + [connector, _disconnect] + ); + + const setChain = useCallback( + async (chainId: number) => { + const didSwitchChain = await switchChainAsync({ chainId }); + return didSwitchChain; + }, + [switchChainAsync] + ); - const isContractAddress = useIsContractAddress(account?.address, chainId); + const isContractAddress = useIsContractAddress(address, chainId); return { - account: account ? ethers.utils.getAddress(account.address) : undefined, - ensName: account?.ens?.name, + account: address, + ensName, chainId, provider, signer, isConnected, connect, disconnect, - error, - wallet, + connector, setChain, isContractAddress, - didAttemptAutoSelect, }; } diff --git a/src/hooks/useConnectionEVM.ts b/src/hooks/useConnectionEVM.ts new file mode 100644 index 000000000..ddf9e356b --- /dev/null +++ b/src/hooks/useConnectionEVM.ts @@ -0,0 +1,40 @@ +import { providers } from "ethers"; +import { useMemo } from "react"; +import { Config, useClient, useConnectorClient } from "wagmi"; +import type { Account, Chain, Client, Transport } from "viem"; + +/** Hook to convert a viem Client to an ethers.js Provider. */ +export function useEthersProvider({ + chainId, +}: { chainId?: number | undefined } = {}) { + const client = useClient({ chainId }); + return useMemo( + () => (client ? clientToProvider(client) : undefined), + [client] + ); +} + +/** Hook to convert a Viem Client to an ethers.js Signer. */ +export function useEthersSigner({ chainId }: { chainId?: number } = {}) { + const { data: client } = useConnectorClient({ chainId }); + return useMemo(() => (client ? clientToSigner(client) : undefined), [client]); +} + +export function clientToProvider(client: Client) { + const { transport } = client; + + if (transport.type === "fallback") + return new providers.FallbackProvider( + (transport.transports as ReturnType[]).map( + ({ value }) => new providers.JsonRpcProvider(value?.url, "any") + ) + ); + return new providers.JsonRpcProvider(transport.url, "any"); +} + +export function clientToSigner(client: Client) { + const { account, transport } = client; + const provider = new providers.Web3Provider(transport, "any"); + const signer = provider.getSigner(account.address); + return signer; +} diff --git a/src/hooks/useInitialUserPropTraces.ts b/src/hooks/useInitialUserPropTraces.ts index 4d443af63..18a7b3dc9 100644 --- a/src/hooks/useInitialUserPropTraces.ts +++ b/src/hooks/useInitialUserPropTraces.ts @@ -16,7 +16,7 @@ export function useInitialUserPropTraces(isAmpliLoaded: boolean) { >(); const [didApplicationLoad, setDidApplicationLoad] = useState(false); - const { didAttemptAutoSelect, wallet, account, chainId } = useConnection(); + const { connector, account, chainId } = useConnection(); const walletBalanceTraceQuery = useWalletBalanceTrace(); // Re-triggers the initial user props when the account changes @@ -31,7 +31,7 @@ export function useInitialUserPropTraces(isAmpliLoaded: boolean) { useEffect(() => { (async () => { // Ensures that we only set the initial user props once - if (!isAmpliLoaded || !didAttemptAutoSelect || areInitialUserPropsSet) { + if (!isAmpliLoaded || areInitialUserPropsSet) { return; } @@ -40,11 +40,11 @@ export function useInitialUserPropTraces(isAmpliLoaded: boolean) { return; } - if (wallet && account && chainId) { + if (connector && account && chainId) { setUserId(account); await Promise.all([ - identifyUserWallet(wallet)?.promise, + identifyUserWallet(account, connector.name)?.promise, identifyWalletChainId(chainId).promise, ]); } @@ -57,12 +57,11 @@ export function useInitialUserPropTraces(isAmpliLoaded: boolean) { })(); }, [ isAmpliLoaded, - didAttemptAutoSelect, areInitialUserPropsSet, account, prevTrackedAccount, chainId, - wallet, + connector, walletBalanceTraceQuery.status, walletBalanceTraceQuery.failureCount, ]); diff --git a/src/hooks/useIsWrongNetwork.ts b/src/hooks/useIsWrongNetwork.ts index dc0a607a9..6a1a17359 100644 --- a/src/hooks/useIsWrongNetwork.ts +++ b/src/hooks/useIsWrongNetwork.ts @@ -21,11 +21,9 @@ export function useIsWrongNetwork(baseChain?: number) { }, [checkWrongNetworkHandler]); const isWrongNetworkHandler = async () => { - const didSetChain = await setChain({ - chainId: `0x${correctChainId.toString(16)}`, - }); + const chain = await setChain(correctChainId); - if (!didSetChain) { + if (chain.id !== correctChainId) { throw new Error( `Wrong network. Please switch to network ${chainInfoTable[correctChainId]?.name}` ); diff --git a/src/hooks/useOnboard.tsx b/src/hooks/useOnboard.tsx deleted file mode 100644 index c8fb68a37..000000000 --- a/src/hooks/useOnboard.tsx +++ /dev/null @@ -1,273 +0,0 @@ -import { - useCallback, - useContext, - useEffect, - useState, - createContext, -} from "react"; -import { - ChainId, - UnsupportedChainIdError, - isSupportedChainId, - insideStorybookRuntime, - trackIfWalletSelected, - trackConnectWalletButtonClicked, - trackDisconnectWalletButtonClicked, - CACHED_WALLET_KEY, - identifyUserWallet, - walletBlacklist, -} from "utils"; -import { onboardInit } from "utils/onboard"; -import { - OnboardAPI, - ConnectOptions, - WalletState, - ConnectedChain, -} from "@web3-onboard/core"; - -import { Account } from "@web3-onboard/core/dist/types"; - -import { useConnectWallet, useSetChain } from "@web3-onboard/react"; -import { Chain } from "@web3-onboard/common"; -import { ethers } from "ethers"; -import { - ampli, - ConnectWalletButtonClickedProperties, - DisconnectWalletButtonClickedProperties, -} from "ampli"; - -export type SetChainOptions = { - chainId: string; - chainNamespace?: string; -}; - -type TrackOnConnectOptions = { - trackSection?: ConnectWalletButtonClickedProperties["section"]; -}; - -type AttemptAutoSelectOptions = { - enableAutoSelect?: boolean; -}; - -type TrackOnDisconnectOptions = { - trackSection?: DisconnectWalletButtonClickedProperties["section"]; -}; - -type OnboardContextValue = { - onboard: OnboardAPI | null; - connect: ( - options?: ConnectOptions & TrackOnConnectOptions - ) => Promise; - disconnect: ( - wallet: WalletState, - options?: TrackOnDisconnectOptions - ) => Promise; - chains: Chain[]; - connectedChain: ConnectedChain | null; - settingChain: boolean; - setChain: (options: SetChainOptions) => Promise; - wallet: WalletState | null; - isConnected: boolean; - signer: ethers.providers.JsonRpcSigner | undefined; - provider: ethers.providers.Web3Provider | null; - account: Account | null; - chainId: ChainId; - error?: Error; - didAttemptAutoSelect: boolean; -}; - -export function useOnboardManager() { - const [onboard, setOnboard] = useState(null); - const [provider, setProvider] = - useState(null); - const [signer, setSigner] = useState< - ethers.providers.JsonRpcSigner | undefined - >(undefined); - const [account, setAccount] = useState(null); - const [error, setError] = useState(undefined); - const [didAttemptAutoSelect, setDidAttemptAutoSelect] = useState(false); - - /** Immediately resolve the onboard when it becomes available */ - if (!onboard) setOnboard(onboardInit()); - - const [{ wallet }, connect, disconnect] = useConnectWallet(); - const [{ chains, connectedChain, settingChain }, setChain] = useSetChain(); - - useEffect(() => { - if ( - wallet?.accounts.some((account) => - walletBlacklist.includes(account.address.toLowerCase()) - ) - ) { - disconnect(wallet); - return; - } - - if (wallet?.accounts) { - setAccount(wallet.accounts[0]); - } else { - setAccount(null); - } - - if (wallet?.provider) { - setProvider(new ethers.providers.Web3Provider(wallet.provider, "any")); - setSigner( - new ethers.providers.Web3Provider(wallet.provider, "any").getSigner() - ); - } else { - setProvider(null); - setSigner(undefined); - } - - if (wallet?.chains) { - const chainId = Number(wallet.chains[0].id); - if (!isSupportedChainId(chainId)) { - setError(new UnsupportedChainIdError(chainId)); - } else { - setError(undefined); - } - } else { - setError(undefined); - } - }, [wallet, disconnect]); - - useEffect(() => { - // Only acknowledge the state where onboard is defined - // Also disable for when running inside of storybook - if (onboard && !insideStorybookRuntime) { - // Retrieve the list of onboard's wallet connections - const walletState = onboard?.state.select("wallets"); - // Subscribe to the state for any changes - const { unsubscribe } = walletState.subscribe((wallets) => { - // Iterate over all wallets and extract their label - const connectedWallets = wallets.map(({ label }) => label); - // If a wallet label is present, update the browser state - // so that this information is preserved on refresh - if (connectedWallets.length > 0) { - window.localStorage.setItem(CACHED_WALLET_KEY, connectedWallets[0]); - } - }); - // Unsubscribe to the observer when this component is - // unmounted - return () => { - try { - unsubscribe(); - } catch (e) { - console.error("Failed to unsubscribe from onboard wallet state", e); - } - }; - } - }, [onboard]); - - const customOnboardDisconnect = useCallback( - (wallet: WalletState, options?: TrackOnDisconnectOptions) => { - if (options?.trackSection) { - trackDisconnectWalletButtonClicked(options.trackSection); - } - ampli.client?.setUserId(undefined); - // User requested to be disconnected, let's clear out the wallet type - // for the event that they're trying to connect using a different wallet - window.localStorage.removeItem(CACHED_WALLET_KEY); - return disconnect(wallet); - }, - [disconnect] - ); - const customOnboardConnect = useCallback( - async ( - options: ConnectOptions & - TrackOnConnectOptions & - AttemptAutoSelectOptions = {} - ) => { - let { trackSection, enableAutoSelect, ...connectOptions } = options; - // Resolve the last wallet type if this user has connected before - const previousConnection = window.localStorage.getItem(CACHED_WALLET_KEY); - // Test the user was connected before a browser refresh and that - // the calling code did not specify an autoSelect parameter - if ( - previousConnection && - !connectOptions?.autoSelect && - !!enableAutoSelect - ) { - // Append the autoSelect option to include the previous connection - // type - connectOptions = { - ...connectOptions, - autoSelect: { - label: previousConnection, - disableModals: true, - }, - }; - } - const walletStates = await connect( - connectOptions?.autoSelect ? connectOptions : undefined - ); - if (walletStates[0]) { - identifyUserWallet(walletStates[0]); - } - if (trackSection) { - trackConnectWalletButtonClicked(trackSection); - } - trackIfWalletSelected(walletStates, previousConnection); - - return walletStates; - }, - [connect] - ); - - useEffect(() => { - // Check if a key exists from the previous wallet - const previousConnection = window.localStorage.getItem(CACHED_WALLET_KEY); - if (!wallet && previousConnection) { - customOnboardConnect({ - enableAutoSelect: true, - }).then(() => { - setDidAttemptAutoSelect(true); - }); - } else { - setDidAttemptAutoSelect(true); - } - }, [customOnboardConnect, wallet]); - - return { - onboard, - connect: customOnboardConnect, - disconnect: customOnboardDisconnect, - chains, - connectedChain, - settingChain, - setChain, - wallet, - isConnected: !!connectedChain, - signer, - provider, - account, - chainId: (Number(wallet?.chains[0].id) as ChainId) || 0, - error, - didAttemptAutoSelect, - }; -} - -export const OnboardContext = createContext( - undefined -); -OnboardContext.displayName = "OnboardContext"; -export const OnboardProvider = ({ - children, -}: { - children: React.ReactNode; -}) => { - const value = useOnboardManager(); - return ( - {children} - ); -}; - -OnboardProvider.displayName = "OnboardProvider"; - -export function useOnboard() { - const context = useContext(OnboardContext); - if (!context) { - throw new Error("useOnboard must be used within an "); - } - return context; -} diff --git a/src/hooks/useSidebarContext.ts b/src/hooks/useSidebarContext.ts new file mode 100644 index 000000000..3361c36ed --- /dev/null +++ b/src/hooks/useSidebarContext.ts @@ -0,0 +1,12 @@ +// useSidebarContext.ts + +import { useContext } from "react"; +import { SidebarContext } from "providers/SidebarProvider"; + +export function useSidebarContext() { + const context = useContext(SidebarContext); + if (!context) { + throw new Error("useSidebarContext must be used within a SidebarProvider"); + } + return context; +} diff --git a/src/hooks/useWalletTrace.ts b/src/hooks/useWalletTrace.ts index 89979fa20..4409a4501 100644 --- a/src/hooks/useWalletTrace.ts +++ b/src/hooks/useWalletTrace.ts @@ -1,12 +1,7 @@ /* eslint-disable react-hooks/exhaustive-deps */ import { useEffect, useState } from "react"; -import { utils } from "ethers"; -import { - trackWalletConnectTransactionCompleted, - chainInfoTable, - CACHED_WALLET_KEY, -} from "utils"; +import { trackWalletConnectTransactionCompleted, chainInfoTable } from "utils"; import { ampli } from "ampli"; import { useConnection, useAmplitude } from "hooks"; @@ -49,24 +44,21 @@ export function useWalletChangeTrace() { >(); const { addToAmpliQueue } = useAmplitude(); - const { wallet } = useConnection(); + const { connector, account } = useConnection(); useEffect(() => { - if (!wallet || !wallet.accounts.length) { + if (!connector || !account) { return; } - const connectedWalletAddress = utils.getAddress(wallet.accounts[0].address); - - if (prevTrackedWallet === connectedWalletAddress) { + if (prevTrackedWallet === account) { return; } - const previousConnection = window.localStorage.getItem(CACHED_WALLET_KEY); addToAmpliQueue(() => { - trackWalletConnectTransactionCompleted(wallet, previousConnection); + trackWalletConnectTransactionCompleted(account, connector.name); }); - setPrevTrackedWallet(connectedWalletAddress); - }, [wallet, wallet?.accounts.length]); + setPrevTrackedWallet(account); + }, [account, connector]); } diff --git a/src/index.tsx b/src/index.tsx index d22fd81cb..ed2888822 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -8,15 +8,17 @@ import { MutationCache, } from "@tanstack/react-query"; import { ReactQueryDevtools } from "@tanstack/react-query-devtools"; +import { WagmiProvider } from "wagmi"; import App from "./App"; import "./onboard-override.css"; import { ErrorProvider } from "hooks"; import { ToastProvider } from "components/Toast/useToast"; -import { OnboardProvider } from "hooks/useOnboard"; import { AmpliProvider } from "hooks/useAmplitude"; +import { SidebarProvider } from "providers/SidebarProvider"; import { enableReactQueryDevTools } from "utils"; import Sentry from "utils/sentry"; +import { wagmiConfig } from "wagmi.config"; const client = new QueryClient({ queryCache: new QueryCache({ @@ -48,18 +50,20 @@ root.render( - - + + - + + + {enableReactQueryDevTools && } - - + + ); diff --git a/src/providers/SidebarProvider.tsx b/src/providers/SidebarProvider.tsx new file mode 100644 index 000000000..339016997 --- /dev/null +++ b/src/providers/SidebarProvider.tsx @@ -0,0 +1,45 @@ +import { createContext, useCallback, useState } from "react"; + +export type SidebarContentType = + | "navigation" + | "connect-wallet" + | "connect-wallet"; + +export const SidebarContext = createContext<{ + isOpen: boolean; + contentType: SidebarContentType; + openSidebar: (contentType?: SidebarContentType) => void; + closeSidebar: () => void; +}>({ + isOpen: false, + contentType: "navigation", + openSidebar: () => {}, + closeSidebar: () => {}, +}); + +export function SidebarProvider({ children }: { children: React.ReactNode }) { + const [isOpen, setIsOpen] = useState(false); + const [contentType, setContentType] = + useState("navigation"); + const openSidebar = useCallback( + (contentType: SidebarContentType = "navigation") => { + setIsOpen(true); + setContentType(contentType); + }, + [] + ); + const closeSidebar = useCallback(() => { + setIsOpen(false); + setTimeout(() => { + setContentType("navigation"); + }, 500); + }, []); + + return ( + + {children} + + ); +} diff --git a/src/utils/amplitude.ts b/src/utils/amplitude.ts index 17a0735b3..870a8ed09 100644 --- a/src/utils/amplitude.ts +++ b/src/utils/amplitude.ts @@ -1,4 +1,3 @@ -import { WalletState } from "@web3-onboard/core"; import { BigNumber, utils } from "ethers"; import { Identify } from "@amplitude/analytics-browser"; @@ -102,37 +101,27 @@ export function trackConnectWalletButtonClicked( }); } -export function trackIfWalletSelected( - walletStates: WalletState[], - previousConnection?: string | null -) { - // Only track if user explicitly selected a wallet in the web3-onboard modal - if (walletStates.length > 0 && !previousConnection) { +export function trackIfWalletSelected(walletType: string) { + // Only track if user explicitly selected a wallet in the sidebar + if (walletType) { return ampli.walletSelected({ page: getPageValue(), action: "onClick", element: "web3OnboardModal", - walletType: walletStates[0].label, + walletType, }); } } export function trackWalletConnectTransactionCompleted( - connectedWallet: WalletState | null, - previousConnection?: string | null + connectedWallet: string, + walletType: string ) { - if (!connectedWallet) { - return ampli.walletConnectTransactionCompleted({ - isReconnect: false, - succeeded: false, - }); - } - return ampli.walletConnectTransactionCompleted({ - isReconnect: Boolean(previousConnection), + isReconnect: false, succeeded: true, - walletAddress: utils.getAddress(connectedWallet.accounts[0].address), - walletType: connectedWallet.label, + walletAddress: connectedWallet, + walletType, }); } @@ -210,21 +199,20 @@ export function setUserId(walletAddress?: string) { ampli.client?.setUserId(walletAddress); } -export function identifyUserWallet(connectedWallet: WalletState | null) { - if (!connectedWallet) { +export function identifyUserWallet( + connectedAddress: string, + walletType: string +) { + if (!connectedAddress || !walletType) { return; } - const connectedWalletAddress = utils.getAddress( - connectedWallet.accounts[0].address - ); - - ampli.client?.setUserId(connectedWalletAddress); + ampli.client?.setUserId(connectedAddress); const identifyObj = new Identify(); - identifyObj.postInsert("AllWalletAddressesConnected", connectedWalletAddress); - identifyObj.set("WalletAddress", connectedWalletAddress); - identifyObj.set("WalletType", connectedWallet.label); + identifyObj.postInsert("AllWalletAddressesConnected", connectedAddress); + identifyObj.set("WalletAddress", connectedAddress); + identifyObj.set("WalletType", walletType); return ampli.client?.identify(identifyObj); } diff --git a/src/utils/index.ts b/src/utils/index.ts index 9031b1b66..2d67e8f6c 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -3,7 +3,6 @@ export * from "./address"; export * from "./format"; export * from "./bridge"; export * from "./errors"; -export * from "./onboard"; export * from "./math"; export * from "./notify"; export * from "./weiMath"; diff --git a/src/utils/onboard.ts b/src/utils/onboard.ts deleted file mode 100644 index a6a19744e..000000000 --- a/src/utils/onboard.ts +++ /dev/null @@ -1,78 +0,0 @@ -import { init } from "@web3-onboard/react"; -import injectedModule from "@web3-onboard/injected-wallets"; -import walletConnectModule from "@web3-onboard/walletconnect"; -import gnosisModule from "@web3-onboard/gnosis"; -import coinbaseModule from "@web3-onboard/coinbase"; - -import { - onboardApiKey, - walletConnectProjectId, - chainInfoList, - providerUrlsTable, -} from "utils"; -import logo from "assets/token-logos/acx.svg"; -import metamaskSDK from "@web3-onboard/metamask"; -import phantomModule from "@web3-onboard/phantom"; - -const injected = injectedModule(); -const gnosis = gnosisModule(); -const walletConnect = walletConnectModule({ - projectId: walletConnectProjectId, - version: 2, -}); -const coinbase = coinbaseModule({ - supportedWalletType: "all", -}); - -const metamaskSDKWallet = metamaskSDK({ - options: { - extensionOnly: false, - dappMetadata: { - name: "Across Bridge", - }, - }, -}); - -const phantom = phantomModule(); - -export function onboardInit() { - return init({ - apiKey: onboardApiKey, - wallets: [ - injected, - coinbase, - walletConnect, - gnosis, - metamaskSDKWallet, - phantom, - ], - - chains: chainInfoList.map((chainInfo) => ({ - id: chainInfo.chainId, - label: chainInfo.fullName || chainInfo.name, - token: chainInfo.nativeCurrencySymbol, - rpcUrl: chainInfo.rpcUrl || providerUrlsTable[chainInfo.chainId], - })), - - appMetadata: { - name: "Across Bridge", - icon: logo, - description: - "Across is the fastest, cheapest and most secure cross-chain bridge for Ethereum, Arbitrum, Optimism, Polygon and other Layer 1 and Layer 2 networks. Transfer tokens with Across.", - recommendedInjectedWallets: [ - { name: "Metamask", url: "https://metamask.io" }, - { name: "Coinbase", url: "https://wallet.coinbase.com/" }, - { name: "WalletConnect", url: "https://walletconnect.org/" }, - { name: "Gnosis Safe", url: "https://gnosis.safe/" }, - ], - }, - accountCenter: { - desktop: { - enabled: false, - }, - mobile: { - enabled: false, - }, - }, - }); -} diff --git a/vite.config.js b/vite.config.js index a7a283d23..ba51c67cd 100644 --- a/vite.config.js +++ b/vite.config.js @@ -43,7 +43,6 @@ export default defineConfig({ optimizeDeps: { disabled: false, include: [ - "@web3-onboard/common", "@walletconnect/ethereum-provider", "rxjs", "rxjs/operators", diff --git a/yarn.lock b/yarn.lock index b1eb63243..53fc56d5f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1395,7 +1395,7 @@ dependencies: regenerator-runtime "^0.13.11" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.17.8", "@babel/runtime@^7.18.3", "@babel/runtime@^7.19.4", "@babel/runtime@^7.21.0", "@babel/runtime@^7.23.2", "@babel/runtime@^7.25.0", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4": +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.17.8", "@babel/runtime@^7.18.3", "@babel/runtime@^7.21.0", "@babel/runtime@^7.25.0", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4": version "7.26.0" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.26.0.tgz#8600c2f595f277c60815256418b85356a65173c1" integrity sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw== @@ -1511,18 +1511,6 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@coinbase/wallet-sdk@4.0.3": - version "4.0.3" - resolved "https://registry.yarnpkg.com/@coinbase/wallet-sdk/-/wallet-sdk-4.0.3.tgz#fd52dd4c168c35979c7b3294018a6f78d163a593" - integrity sha512-y/OGEjlvosikjfB+wk+4CVb9OxD1ob9cidEBLI5h8Hxaf/Qoob2XoVT1uvhtAzBx34KpGYSd+alKvh/GCRre4Q== - dependencies: - buffer "^6.0.3" - clsx "^1.2.1" - eventemitter3 "^5.0.1" - keccak "^3.0.3" - preact "^10.16.0" - sha.js "^2.4.11" - "@coinbase/wallet-sdk@4.2.3": version "4.2.3" resolved "https://registry.yarnpkg.com/@coinbase/wallet-sdk/-/wallet-sdk-4.2.3.tgz#a30fa0605b24bc42c37f52a62d2442bcbb7734af" @@ -2496,7 +2484,7 @@ "@ethersproject/properties" "^5.7.0" "@ethersproject/strings" "^5.7.0" -"@ethersproject/abstract-provider@5.7.0", "@ethersproject/abstract-provider@^5.5.0", "@ethersproject/abstract-provider@^5.5.1", "@ethersproject/abstract-provider@^5.7.0": +"@ethersproject/abstract-provider@5.7.0", "@ethersproject/abstract-provider@^5.5.1", "@ethersproject/abstract-provider@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz#b0a8550f88b6bf9d51f90e4795d48294630cb9ef" integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw== @@ -2509,7 +2497,7 @@ "@ethersproject/transactions" "^5.7.0" "@ethersproject/web" "^5.7.0" -"@ethersproject/abstract-signer@5.7.0", "@ethersproject/abstract-signer@^5.4.0", "@ethersproject/abstract-signer@^5.4.1", "@ethersproject/abstract-signer@^5.5.0", "@ethersproject/abstract-signer@^5.7.0": +"@ethersproject/abstract-signer@5.7.0", "@ethersproject/abstract-signer@^5.4.0", "@ethersproject/abstract-signer@^5.4.1", "@ethersproject/abstract-signer@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz#13f4f32117868452191a4649723cb086d2b596b2" integrity sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ== @@ -2520,7 +2508,7 @@ "@ethersproject/logger" "^5.7.0" "@ethersproject/properties" "^5.7.0" -"@ethersproject/address@5.7.0", "@ethersproject/address@^5.0.2", "@ethersproject/address@^5.4.0", "@ethersproject/address@^5.5.0", "@ethersproject/address@^5.7.0": +"@ethersproject/address@5.7.0", "@ethersproject/address@^5.0.2", "@ethersproject/address@^5.4.0", "@ethersproject/address@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37" integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== @@ -2545,7 +2533,7 @@ dependencies: "@ethersproject/bytes" "^5.7.0" -"@ethersproject/basex@5.7.0", "@ethersproject/basex@^5.5.0", "@ethersproject/basex@^5.7.0": +"@ethersproject/basex@5.7.0", "@ethersproject/basex@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.7.0.tgz#97034dc7e8938a8ca943ab20f8a5e492ece4020b" integrity sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw== @@ -2553,7 +2541,7 @@ "@ethersproject/bytes" "^5.7.0" "@ethersproject/properties" "^5.7.0" -"@ethersproject/bignumber@5.7.0", "@ethersproject/bignumber@^5.0.5", "@ethersproject/bignumber@^5.4.0", "@ethersproject/bignumber@^5.4.1", "@ethersproject/bignumber@^5.5.0", "@ethersproject/bignumber@^5.7.0": +"@ethersproject/bignumber@5.7.0", "@ethersproject/bignumber@^5.0.5", "@ethersproject/bignumber@^5.4.0", "@ethersproject/bignumber@^5.4.1", "@ethersproject/bignumber@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2" integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== @@ -2569,7 +2557,7 @@ dependencies: "@ethersproject/logger" "^5.7.0" -"@ethersproject/constants@5.7.0", "@ethersproject/constants@^5.4.0", "@ethersproject/constants@^5.5.0", "@ethersproject/constants@^5.7.0": +"@ethersproject/constants@5.7.0", "@ethersproject/constants@^5.4.0", "@ethersproject/constants@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e" integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== @@ -2592,7 +2580,7 @@ "@ethersproject/properties" "^5.7.0" "@ethersproject/transactions" "^5.7.0" -"@ethersproject/hash@5.7.0", "@ethersproject/hash@^5.5.0", "@ethersproject/hash@^5.7.0": +"@ethersproject/hash@5.7.0", "@ethersproject/hash@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7" integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== @@ -2652,12 +2640,12 @@ "@ethersproject/bytes" "^5.7.0" js-sha3 "0.8.0" -"@ethersproject/logger@5.7.0", "@ethersproject/logger@^5.5.0", "@ethersproject/logger@^5.7.0": +"@ethersproject/logger@5.7.0", "@ethersproject/logger@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892" integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== -"@ethersproject/networks@5.7.1", "@ethersproject/networks@^5.5.0", "@ethersproject/networks@^5.7.0": +"@ethersproject/networks@5.7.1", "@ethersproject/networks@^5.7.0": version "5.7.1" resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.7.1.tgz#118e1a981d757d45ccea6bb58d9fd3d9db14ead6" integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ== @@ -2672,38 +2660,13 @@ "@ethersproject/bytes" "^5.7.0" "@ethersproject/sha2" "^5.7.0" -"@ethersproject/properties@5.7.0", "@ethersproject/properties@^5.5.0", "@ethersproject/properties@^5.7.0": +"@ethersproject/properties@5.7.0", "@ethersproject/properties@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30" integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== dependencies: "@ethersproject/logger" "^5.7.0" -"@ethersproject/providers@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.5.0.tgz#bc2876a8fe5e0053ed9828b1f3767ae46e43758b" - integrity sha512-xqMbDnS/FPy+J/9mBLKddzyLLAQFjrVff5g00efqxPzcAwXiR+SiCGVy6eJ5iAIirBOATjx7QLhDNPGV+AEQsw== - dependencies: - "@ethersproject/abstract-provider" "^5.5.0" - "@ethersproject/abstract-signer" "^5.5.0" - "@ethersproject/address" "^5.5.0" - "@ethersproject/basex" "^5.5.0" - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/constants" "^5.5.0" - "@ethersproject/hash" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/networks" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/random" "^5.5.0" - "@ethersproject/rlp" "^5.5.0" - "@ethersproject/sha2" "^5.5.0" - "@ethersproject/strings" "^5.5.0" - "@ethersproject/transactions" "^5.5.0" - "@ethersproject/web" "^5.5.0" - bech32 "1.1.4" - ws "7.4.6" - "@ethersproject/providers@5.7.2", "@ethersproject/providers@^5.4.2", "@ethersproject/providers@^5.4.4", "@ethersproject/providers@^5.4.5", "@ethersproject/providers@^5.5.3", "@ethersproject/providers@^5.7.0": version "5.7.2" resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb" @@ -2730,7 +2693,7 @@ bech32 "1.1.4" ws "7.4.6" -"@ethersproject/random@5.7.0", "@ethersproject/random@^5.5.0", "@ethersproject/random@^5.7.0": +"@ethersproject/random@5.7.0", "@ethersproject/random@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.7.0.tgz#af19dcbc2484aae078bb03656ec05df66253280c" integrity sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ== @@ -2738,7 +2701,7 @@ "@ethersproject/bytes" "^5.7.0" "@ethersproject/logger" "^5.7.0" -"@ethersproject/rlp@5.7.0", "@ethersproject/rlp@^5.5.0", "@ethersproject/rlp@^5.7.0": +"@ethersproject/rlp@5.7.0", "@ethersproject/rlp@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.7.0.tgz#de39e4d5918b9d74d46de93af80b7685a9c21304" integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== @@ -2746,7 +2709,7 @@ "@ethersproject/bytes" "^5.7.0" "@ethersproject/logger" "^5.7.0" -"@ethersproject/sha2@5.7.0", "@ethersproject/sha2@^5.5.0", "@ethersproject/sha2@^5.7.0": +"@ethersproject/sha2@5.7.0", "@ethersproject/sha2@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.7.0.tgz#9a5f7a7824ef784f7f7680984e593a800480c9fb" integrity sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw== @@ -2779,7 +2742,7 @@ "@ethersproject/sha2" "^5.7.0" "@ethersproject/strings" "^5.7.0" -"@ethersproject/strings@5.7.0", "@ethersproject/strings@^5.5.0", "@ethersproject/strings@^5.7.0": +"@ethersproject/strings@5.7.0", "@ethersproject/strings@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2" integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== @@ -2788,7 +2751,7 @@ "@ethersproject/constants" "^5.7.0" "@ethersproject/logger" "^5.7.0" -"@ethersproject/transactions@5.7.0", "@ethersproject/transactions@^5.4.0", "@ethersproject/transactions@^5.5.0", "@ethersproject/transactions@^5.6.2", "@ethersproject/transactions@^5.7.0": +"@ethersproject/transactions@5.7.0", "@ethersproject/transactions@^5.4.0", "@ethersproject/transactions@^5.6.2", "@ethersproject/transactions@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b" integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== @@ -2833,7 +2796,7 @@ "@ethersproject/transactions" "^5.7.0" "@ethersproject/wordlists" "^5.7.0" -"@ethersproject/web@5.7.1", "@ethersproject/web@^5.5.0", "@ethersproject/web@^5.5.1", "@ethersproject/web@^5.7.0", "@ethersproject/web@^5.7.1": +"@ethersproject/web@5.7.1", "@ethersproject/web@^5.5.1", "@ethersproject/web@^5.7.0", "@ethersproject/web@^5.7.1": version "5.7.1" resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.7.1.tgz#de1f285b373149bee5928f4eb7bcb87ee5fbb4ae" integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w== @@ -2892,47 +2855,6 @@ resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.1.6.tgz#22958c042e10b67463997bd6ea7115fe28cbcaf9" integrity sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A== -"@formatjs/ecma402-abstract@2.3.2": - version "2.3.2" - resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-2.3.2.tgz#0ee291effe7ee2c340742a6c95d92eacb5e6c00a" - integrity sha512-6sE5nyvDloULiyOMbOTJEEgWL32w+VHkZQs8S02Lnn8Y/O5aQhjOEXwWzvR7SsBE/exxlSpY2EsWZgqHbtLatg== - dependencies: - "@formatjs/fast-memoize" "2.2.6" - "@formatjs/intl-localematcher" "0.5.10" - decimal.js "10" - tslib "2" - -"@formatjs/fast-memoize@2.2.6": - version "2.2.6" - resolved "https://registry.yarnpkg.com/@formatjs/fast-memoize/-/fast-memoize-2.2.6.tgz#fac0a84207a1396be1f1aa4ee2805b179e9343d1" - integrity sha512-luIXeE2LJbQnnzotY1f2U2m7xuQNj2DA8Vq4ce1BY9ebRZaoPB1+8eZ6nXpLzsxuW5spQxr7LdCg+CApZwkqkw== - dependencies: - tslib "2" - -"@formatjs/icu-messageformat-parser@2.11.0": - version "2.11.0" - resolved "https://registry.yarnpkg.com/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.11.0.tgz#28d22a735114b7309c0d3e43d39f2660917867c8" - integrity sha512-Hp81uTjjdTk3FLh/dggU5NK7EIsVWc5/ZDWrIldmf2rBuPejuZ13CZ/wpVE2SToyi4EiroPTQ1XJcJuZFIxTtw== - dependencies: - "@formatjs/ecma402-abstract" "2.3.2" - "@formatjs/icu-skeleton-parser" "1.8.12" - tslib "2" - -"@formatjs/icu-skeleton-parser@1.8.12": - version "1.8.12" - resolved "https://registry.yarnpkg.com/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.12.tgz#43076747cdbe0f23bfac2b2a956bd8219716680d" - integrity sha512-QRAY2jC1BomFQHYDMcZtClqHR55EEnB96V7Xbk/UiBodsuFc5kujybzt87+qj1KqmJozFhk6n4KiT1HKwAkcfg== - dependencies: - "@formatjs/ecma402-abstract" "2.3.2" - tslib "2" - -"@formatjs/intl-localematcher@0.5.10": - version "0.5.10" - resolved "https://registry.yarnpkg.com/@formatjs/intl-localematcher/-/intl-localematcher-0.5.10.tgz#1e0bd3fc1332c1fe4540cfa28f07e9227b659a58" - integrity sha512-af3qATX+m4Rnd9+wHcjJ4w2ijq+rAVP3CCinJQvFv1kgSu1W6jypUmvleJxcewdxmutM8dmIRZFxO/IQBZmP2Q== - dependencies: - tslib "2" - "@fortawesome/fontawesome-common-types@6.1.1": version "6.1.1" resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.1.1.tgz#7dc996042d21fc1ae850e3173b5c67b0549f9105" @@ -3075,18 +2997,6 @@ protobufjs "^7.2.5" yargs "^17.7.2" -"@hapi/hoek@^9.0.0": - version "9.3.0" - resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb" - integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ== - -"@hapi/topo@^5.0.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.1.0.tgz#dc448e332c6c6e37a4dc02fd84ba8d44b9afb012" - integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== - dependencies: - "@hapi/hoek" "^9.0.0" - "@humanwhocodes/module-importer@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" @@ -3570,17 +3480,6 @@ resolved "https://registry.yarnpkg.com/@metamask/safe-event-emitter/-/safe-event-emitter-3.1.2.tgz#bfac8c7a1a149b5bbfe98f59fbfea512dfa3bad4" integrity sha512-5yb2gMI1BDm0JybZezeoX/3XhPDOtTbcFvpTXM9kxsoZjPZFh4XciqRbpD6N86HYZqWDhEaKUDuOyR0sQHEjMA== -"@metamask/sdk-communication-layer@0.30.2": - version "0.30.2" - resolved "https://registry.yarnpkg.com/@metamask/sdk-communication-layer/-/sdk-communication-layer-0.30.2.tgz#d313494981418c363b00b716ca4c6205135f5045" - integrity sha512-fTKz7LsreZV9AUz9VQ3FijWyAzg62mZnLoABoGxWPCHmRdMepaa8mS5pTBGIyR0lEi7F+l8cOwr8TfEpX3IiQw== - dependencies: - bufferutil "^4.0.8" - date-fns "^2.29.3" - debug "^4.3.4" - utf-8-validate "^5.0.2" - uuid "^8.3.2" - "@metamask/sdk-communication-layer@0.31.0": version "0.31.0" resolved "https://registry.yarnpkg.com/@metamask/sdk-communication-layer/-/sdk-communication-layer-0.31.0.tgz#0acc063b62aa09d044c7aab65801712d760e53b2" @@ -3592,13 +3491,6 @@ utf-8-validate "^5.0.2" uuid "^8.3.2" -"@metamask/sdk-install-modal-web@0.30.2": - version "0.30.2" - resolved "https://registry.yarnpkg.com/@metamask/sdk-install-modal-web/-/sdk-install-modal-web-0.30.2.tgz#bba124a6cb54c50ac6274029afe7c83a99f75f1c" - integrity sha512-T/j+tDwXx+Dzo+VGM/0HqnHaWfzaKEbGCsZSbXQVWcC1LMP7i5HBD6M7Xk2HkCwZNMB/l4bSeuCoo33R6y08ag== - dependencies: - qr-code-styling "^1.6.0-rc.1" - "@metamask/sdk-install-modal-web@0.31.5": version "0.31.5" resolved "https://registry.yarnpkg.com/@metamask/sdk-install-modal-web/-/sdk-install-modal-web-0.31.5.tgz#b5e903b63f936b9ae795f31137b4c9f0873c382d" @@ -3631,32 +3523,6 @@ util "^0.12.4" uuid "^8.3.2" -"@metamask/sdk@^0.30.0": - version "0.30.3" - resolved "https://registry.yarnpkg.com/@metamask/sdk/-/sdk-0.30.3.tgz#5fb2576235132815cf708554e8142f29ae47eb44" - integrity sha512-f+H7adG/sQdRymTwf5jr23BadguZkQtQNo9vCVCR6xnVqEhofVhOiMpzEef+uimVKakIqrhSkBQhHbN9UZeIBg== - dependencies: - "@metamask/onboarding" "^1.0.1" - "@metamask/providers" "16.1.0" - "@metamask/sdk-communication-layer" "0.30.2" - "@metamask/sdk-install-modal-web" "0.30.2" - bowser "^2.9.0" - cross-fetch "^4.0.0" - debug "^4.3.4" - eciesjs "^0.4.11" - eth-rpc-errors "^4.0.3" - eventemitter2 "^6.4.9" - i18next "23.11.5" - i18next-browser-languagedetector "7.1.0" - obj-multiplex "^1.0.0" - pump "^3.0.0" - qrcode-terminal-nooctal "^0.12.1" - react-native-webview "^11.26.0" - readable-stream "^3.6.2" - socket.io-client "^4.5.1" - util "^0.12.4" - uuid "^8.3.2" - "@metamask/superstruct@^3.0.0", "@metamask/superstruct@^3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@metamask/superstruct/-/superstruct-3.1.0.tgz#148f786a674fba3ac885c1093ab718515bf7f648" @@ -5158,23 +5024,6 @@ resolved "https://registry.yarnpkg.com/@servie/events/-/events-1.0.0.tgz#8258684b52d418ab7b86533e861186638ecc5dc1" integrity sha512-sBSO19KzdrJCM3gdx6eIxV8M9Gxfgg6iDQmH5TIAGaUu+X9VDdsINXJOnoiZ1Kx3TrHdH4bt5UVglkjsEGBcvw== -"@sideway/address@^4.1.3": - version "4.1.4" - resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.4.tgz#03dccebc6ea47fdc226f7d3d1ad512955d4783f0" - integrity sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw== - dependencies: - "@hapi/hoek" "^9.0.0" - -"@sideway/formula@^3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@sideway/formula/-/formula-3.0.1.tgz#80fcbcbaf7ce031e0ef2dd29b1bfc7c3f583611f" - integrity sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg== - -"@sideway/pinpoint@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" - integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== - "@sinclair/typebox@0.25.24": version "0.25.24" resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.25.24.tgz#8c7688559979f7079aacaf31aa881c3aa410b718" @@ -5847,7 +5696,7 @@ resolved "https://registry.yarnpkg.com/@stablelib/wipe/-/wipe-1.0.1.tgz#d21401f1d59ade56a62e139462a97f104ed19a36" integrity sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg== -"@stablelib/x25519@1.0.3", "@stablelib/x25519@^1.0.3": +"@stablelib/x25519@1.0.3": version "1.0.3" resolved "https://registry.yarnpkg.com/@stablelib/x25519/-/x25519-1.0.3.tgz#13c8174f774ea9f3e5e42213cbf9fc68a3c7b7fd" integrity sha512-KnTbKmUhPhHavzobclVJQG5kuivH+qDLpe84iRqX3CLrKp881cF160JvXJ+hjn1aMyCwYOKeIZefIH/P5cJoRw== @@ -8223,49 +8072,6 @@ mipd "0.0.7" zustand "5.0.0" -"@walletconnect/browser-utils@^1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@walletconnect/browser-utils/-/browser-utils-1.8.0.tgz#33c10e777aa6be86c713095b5206d63d32df0951" - integrity sha512-Wcqqx+wjxIo9fv6eBUFHPsW1y/bGWWRboni5dfD8PtOmrihrEpOCmvRJe4rfl7xgJW8Ea9UqKEaq0bIRLHlK4A== - dependencies: - "@walletconnect/safe-json" "1.0.0" - "@walletconnect/types" "^1.8.0" - "@walletconnect/window-getters" "1.0.0" - "@walletconnect/window-metadata" "1.0.0" - detect-browser "5.2.0" - -"@walletconnect/client@^1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@walletconnect/client/-/client-1.8.0.tgz#6f46b5499c7c861c651ff1ebe5da5b66225ca696" - integrity sha512-svyBQ14NHx6Cs2j4TpkQaBI/2AF4+LXz64FojTjMtV4VMMhl81jSO1vNeg+yYhQzvjcGH/GpSwixjyCW0xFBOQ== - dependencies: - "@walletconnect/core" "^1.8.0" - "@walletconnect/iso-crypto" "^1.8.0" - "@walletconnect/types" "^1.8.0" - "@walletconnect/utils" "^1.8.0" - -"@walletconnect/core@2.10.1": - version "2.10.1" - resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-2.10.1.tgz#d1fb442bd77424666bacdb0f5a07f7708fb3d984" - integrity sha512-WAoXfmj+Zy5q48TnrKUjmHXJCBahzKwbul+noepRZf7JDtUAZ9IOWpUjg+UPRbfK5EiWZ0TF42S6SXidf7EHoQ== - dependencies: - "@walletconnect/heartbeat" "1.2.1" - "@walletconnect/jsonrpc-provider" "1.0.13" - "@walletconnect/jsonrpc-types" "1.0.3" - "@walletconnect/jsonrpc-utils" "1.0.8" - "@walletconnect/jsonrpc-ws-connection" "1.0.13" - "@walletconnect/keyvaluestorage" "^1.0.2" - "@walletconnect/logger" "^2.0.1" - "@walletconnect/relay-api" "^1.0.9" - "@walletconnect/relay-auth" "^1.0.4" - "@walletconnect/safe-json" "^1.0.2" - "@walletconnect/time" "^1.0.2" - "@walletconnect/types" "2.10.1" - "@walletconnect/utils" "2.10.1" - events "^3.3.0" - lodash.isequal "4.5.0" - uint8arrays "^3.1.0" - "@walletconnect/core@2.17.0": version "2.17.0" resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-2.17.0.tgz#bf490e85a4702eff0f7cf81ba0d3c1016dffff33" @@ -8288,36 +8094,6 @@ lodash.isequal "4.5.0" uint8arrays "3.1.0" -"@walletconnect/core@^1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-1.8.0.tgz#6b2748b90c999d9d6a70e52e26a8d5e8bfeaa81e" - integrity sha512-aFTHvEEbXcZ8XdWBw6rpQDte41Rxwnuk3SgTD8/iKGSRTni50gI9S3YEzMj05jozSiOBxQci4pJDMVhIUMtarw== - dependencies: - "@walletconnect/socket-transport" "^1.8.0" - "@walletconnect/types" "^1.8.0" - "@walletconnect/utils" "^1.8.0" - -"@walletconnect/crypto@^1.0.2": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@walletconnect/crypto/-/crypto-1.0.3.tgz#7b8dd4d7e2884fe3543c7c07aea425eef5ef9dd4" - integrity sha512-+2jdORD7XQs76I2Odgr3wwrtyuLUXD/kprNVsjWRhhhdO9Mt6WqVzOPu0/t7OHSmgal8k7SoBQzUc5hu/8zL/g== - dependencies: - "@walletconnect/encoding" "^1.0.2" - "@walletconnect/environment" "^1.0.1" - "@walletconnect/randombytes" "^1.0.3" - aes-js "^3.1.2" - hash.js "^1.1.7" - tslib "1.14.1" - -"@walletconnect/encoding@^1.0.1", "@walletconnect/encoding@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@walletconnect/encoding/-/encoding-1.0.2.tgz#cb3942ad038d6a6bf01158f66773062dd25724da" - integrity sha512-CrwSBrjqJ7rpGQcTL3kU+Ief+Bcuu9PH6JLOb+wM6NITX1GTxR/MfNwnQfhLKK6xpRAyj2/nM04OOH6wS8Imag== - dependencies: - is-typedarray "1.0.0" - tslib "1.14.1" - typedarray-to-buffer "3.1.5" - "@walletconnect/environment@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@walletconnect/environment/-/environment-1.0.1.tgz#1d7f82f0009ab821a2ba5ad5e5a7b8ae3b214cd7" @@ -8341,21 +8117,6 @@ "@walletconnect/utils" "2.17.0" events "3.3.0" -"@walletconnect/ethereum-provider@^2.10.0": - version "2.10.1" - resolved "https://registry.yarnpkg.com/@walletconnect/ethereum-provider/-/ethereum-provider-2.10.1.tgz#4733a98f0b388cf5ae6c2b269f50da87da432ee5" - integrity sha512-Yhoz8EXkKzxOlBT6G+elphqCx/gkH6RxD9/ZAiy9lLc8Ng5p1gvKCVVP5zsGNE9FbkKmHd+J9JJRzn2Bw2yqtQ== - dependencies: - "@walletconnect/jsonrpc-http-connection" "^1.0.7" - "@walletconnect/jsonrpc-provider" "^1.0.13" - "@walletconnect/jsonrpc-types" "^1.0.3" - "@walletconnect/jsonrpc-utils" "^1.0.8" - "@walletconnect/sign-client" "2.10.1" - "@walletconnect/types" "2.10.1" - "@walletconnect/universal-provider" "2.10.1" - "@walletconnect/utils" "2.10.1" - events "^3.3.0" - "@walletconnect/events@1.0.1", "@walletconnect/events@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@walletconnect/events/-/events-1.0.1.tgz#2b5f9c7202019e229d7ccae1369a9e86bda7816c" @@ -8364,15 +8125,6 @@ keyvaluestorage-interface "^1.0.0" tslib "1.14.1" -"@walletconnect/heartbeat@1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@walletconnect/heartbeat/-/heartbeat-1.2.1.tgz#afaa3a53232ae182d7c9cff41c1084472d8f32e9" - integrity sha512-yVzws616xsDLJxuG/28FqtZ5rzrTA4gUjdEMTbWB5Y8V1XHRmqq4efAxCw5ie7WjbXFSUyBHaWlMR+2/CpQC5Q== - dependencies: - "@walletconnect/events" "^1.0.1" - "@walletconnect/time" "^1.0.2" - tslib "1.14.1" - "@walletconnect/heartbeat@1.2.2": version "1.2.2" resolved "https://registry.yarnpkg.com/@walletconnect/heartbeat/-/heartbeat-1.2.2.tgz#e8dc5179db7769950c6f9cf59b23516d9b95227d" @@ -8382,15 +8134,6 @@ "@walletconnect/time" "^1.0.2" events "^3.3.0" -"@walletconnect/iso-crypto@^1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@walletconnect/iso-crypto/-/iso-crypto-1.8.0.tgz#44ddf337c4f02837c062dbe33fa7ab36789df451" - integrity sha512-pWy19KCyitpfXb70hA73r9FcvklS+FvO9QUIttp3c2mfW8frxgYeRXfxLRCIQTkaYueRKvdqPjbyhPLam508XQ== - dependencies: - "@walletconnect/crypto" "^1.0.2" - "@walletconnect/types" "^1.8.0" - "@walletconnect/utils" "^1.8.0" - "@walletconnect/jsonrpc-http-connection@1.0.8": version "1.0.8" resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-http-connection/-/jsonrpc-http-connection-1.0.8.tgz#2f4c3948f074960a3edd07909560f3be13e2c7ae" @@ -8401,25 +8144,6 @@ cross-fetch "^3.1.4" events "^3.3.0" -"@walletconnect/jsonrpc-http-connection@^1.0.7": - version "1.0.7" - resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-http-connection/-/jsonrpc-http-connection-1.0.7.tgz#a6973569b8854c22da707a759d241e4f5c2d5a98" - integrity sha512-qlfh8fCfu8LOM9JRR9KE0s0wxP6ZG9/Jom8M0qsoIQeKF3Ni0FyV4V1qy/cc7nfI46SLQLSl4tgWSfLiE1swyQ== - dependencies: - "@walletconnect/jsonrpc-utils" "^1.0.6" - "@walletconnect/safe-json" "^1.0.1" - cross-fetch "^3.1.4" - tslib "1.14.1" - -"@walletconnect/jsonrpc-provider@1.0.13", "@walletconnect/jsonrpc-provider@^1.0.13": - version "1.0.13" - resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-provider/-/jsonrpc-provider-1.0.13.tgz#9a74da648d015e1fffc745f0c7d629457f53648b" - integrity sha512-K73EpThqHnSR26gOyNEL+acEex3P7VWZe6KE12ZwKzAt2H4e5gldZHbjsu2QR9cLeJ8AXuO7kEMOIcRv1QEc7g== - dependencies: - "@walletconnect/jsonrpc-utils" "^1.0.8" - "@walletconnect/safe-json" "^1.0.2" - tslib "1.14.1" - "@walletconnect/jsonrpc-provider@1.0.14": version "1.0.14" resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-provider/-/jsonrpc-provider-1.0.14.tgz#696f3e3b6d728b361f2e8b853cfc6afbdf2e4e3e" @@ -8429,14 +8153,6 @@ "@walletconnect/safe-json" "^1.0.2" events "^3.3.0" -"@walletconnect/jsonrpc-types@1.0.3", "@walletconnect/jsonrpc-types@^1.0.2", "@walletconnect/jsonrpc-types@^1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-types/-/jsonrpc-types-1.0.3.tgz#65e3b77046f1a7fa8347ae02bc1b841abe6f290c" - integrity sha512-iIQ8hboBl3o5ufmJ8cuduGad0CQm3ZlsHtujv9Eu16xq89q+BG7Nh5VLxxUgmtpnrePgFkTwXirCTkwJH1v+Yw== - dependencies: - keyvaluestorage-interface "^1.0.0" - tslib "1.14.1" - "@walletconnect/jsonrpc-types@1.0.4": version "1.0.4" resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-types/-/jsonrpc-types-1.0.4.tgz#ce1a667d79eadf2a2d9d002c152ceb68739c230c" @@ -8445,7 +8161,15 @@ events "^3.3.0" keyvaluestorage-interface "^1.0.0" -"@walletconnect/jsonrpc-utils@1.0.8", "@walletconnect/jsonrpc-utils@^1.0.3", "@walletconnect/jsonrpc-utils@^1.0.6", "@walletconnect/jsonrpc-utils@^1.0.7", "@walletconnect/jsonrpc-utils@^1.0.8": +"@walletconnect/jsonrpc-types@^1.0.2", "@walletconnect/jsonrpc-types@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-types/-/jsonrpc-types-1.0.3.tgz#65e3b77046f1a7fa8347ae02bc1b841abe6f290c" + integrity sha512-iIQ8hboBl3o5ufmJ8cuduGad0CQm3ZlsHtujv9Eu16xq89q+BG7Nh5VLxxUgmtpnrePgFkTwXirCTkwJH1v+Yw== + dependencies: + keyvaluestorage-interface "^1.0.0" + tslib "1.14.1" + +"@walletconnect/jsonrpc-utils@1.0.8", "@walletconnect/jsonrpc-utils@^1.0.6", "@walletconnect/jsonrpc-utils@^1.0.8": version "1.0.8" resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-utils/-/jsonrpc-utils-1.0.8.tgz#82d0cc6a5d6ff0ecc277cb35f71402c91ad48d72" integrity sha512-vdeb03bD8VzJUL6ZtzRYsFMq1eZQcM3EAzT0a3st59dyLfJ0wq+tKMpmGH7HlB7waD858UWgfIcudbPFsbzVdw== @@ -8454,17 +8178,6 @@ "@walletconnect/jsonrpc-types" "^1.0.3" tslib "1.14.1" -"@walletconnect/jsonrpc-ws-connection@1.0.13": - version "1.0.13" - resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-ws-connection/-/jsonrpc-ws-connection-1.0.13.tgz#23b0cdd899801bfbb44a6556936ec2b93ef2adf4" - integrity sha512-mfOM7uFH4lGtQxG+XklYuFBj6dwVvseTt5/ahOkkmpcAEgz2umuzu7fTR+h5EmjQBdrmYyEBOWADbeaFNxdySg== - dependencies: - "@walletconnect/jsonrpc-utils" "^1.0.6" - "@walletconnect/safe-json" "^1.0.2" - events "^3.3.0" - tslib "1.14.1" - ws "^7.5.1" - "@walletconnect/jsonrpc-ws-connection@1.0.14": version "1.0.14" resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-ws-connection/-/jsonrpc-ws-connection-1.0.14.tgz#eec700e74766c7887de2bd76c91a0206628732aa" @@ -8484,14 +8197,6 @@ idb-keyval "^6.2.1" unstorage "^1.9.0" -"@walletconnect/keyvaluestorage@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@walletconnect/keyvaluestorage/-/keyvaluestorage-1.0.2.tgz#92f5ca0f54c1a88a093778842ce0c874d86369c8" - integrity sha512-U/nNG+VLWoPFdwwKx0oliT4ziKQCEoQ27L5Hhw8YOFGA2Po9A9pULUYNWhDgHkrb0gYDNt//X7wABcEWWBd3FQ== - dependencies: - safe-json-utils "^1.1.1" - tslib "1.14.1" - "@walletconnect/logger@2.1.2": version "2.1.2" resolved "https://registry.yarnpkg.com/@walletconnect/logger/-/logger-2.1.2.tgz#813c9af61b96323a99f16c10089bfeb525e2a272" @@ -8500,26 +8205,6 @@ "@walletconnect/safe-json" "^1.0.2" pino "7.11.0" -"@walletconnect/logger@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@walletconnect/logger/-/logger-2.0.1.tgz#7f489b96e9a1ff6bf3e58f0fbd6d69718bf844a8" - integrity sha512-SsTKdsgWm+oDTBeNE/zHxxr5eJfZmE9/5yp/Ku+zJtcTAjELb3DXueWkDXmE9h8uHIbJzIb5wj5lPdzyrjT6hQ== - dependencies: - pino "7.11.0" - tslib "1.14.1" - -"@walletconnect/mobile-registry@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@walletconnect/mobile-registry/-/mobile-registry-1.4.0.tgz#502cf8ab87330841d794819081e748ebdef7aee5" - integrity sha512-ZtKRio4uCZ1JUF7LIdecmZt7FOLnX72RPSY7aUVu7mj7CSfxDwUn6gBuK6WGtH+NZCldBqDl5DenI5fFSvkKYw== - -"@walletconnect/modal-core@2.6.1": - version "2.6.1" - resolved "https://registry.yarnpkg.com/@walletconnect/modal-core/-/modal-core-2.6.1.tgz#bc76055d0b644a2d4b98024324825c108a700905" - integrity sha512-f2hYlJ5pwzGvjyaZ6BoGR5uiMgXzWXt6w6ktt1N8lmY6PiYp8whZgqx2hTxVWwVlsGnaIfh6UHp1hGnANx0eTQ== - dependencies: - valtio "1.11.0" - "@walletconnect/modal-core@2.7.0": version "2.7.0" resolved "https://registry.yarnpkg.com/@walletconnect/modal-core/-/modal-core-2.7.0.tgz#73c13c3b7b0abf9ccdbac9b242254a86327ce0a4" @@ -8527,16 +8212,6 @@ dependencies: valtio "1.11.2" -"@walletconnect/modal-ui@2.6.1": - version "2.6.1" - resolved "https://registry.yarnpkg.com/@walletconnect/modal-ui/-/modal-ui-2.6.1.tgz#200c54c8dfe3c71321abb2724e18bb357dfd6371" - integrity sha512-RFUOwDAMijSK8B7W3+KoLKaa1l+KEUG0LCrtHqaB0H0cLnhEGdLR+kdTdygw+W8+yYZbkM5tXBm7MlFbcuyitA== - dependencies: - "@walletconnect/modal-core" "2.6.1" - lit "2.7.6" - motion "10.16.2" - qrcode "1.5.3" - "@walletconnect/modal-ui@2.7.0": version "2.7.0" resolved "https://registry.yarnpkg.com/@walletconnect/modal-ui/-/modal-ui-2.7.0.tgz#dbbb7ee46a5a25f7d39db622706f2d197b268cbb" @@ -8547,14 +8222,6 @@ motion "10.16.2" qrcode "1.5.3" -"@walletconnect/modal@2.6.1": - version "2.6.1" - resolved "https://registry.yarnpkg.com/@walletconnect/modal/-/modal-2.6.1.tgz#066fdbfcff83b58c8a9da66ab4af0eb93e3626de" - integrity sha512-G84tSzdPKAFk1zimgV7JzIUFT5olZUVtI3GcOk77OeLYjlMfnDT23RVRHm5EyCrjkptnvpD0wQScXePOFd2Xcw== - dependencies: - "@walletconnect/modal-core" "2.6.1" - "@walletconnect/modal-ui" "2.6.1" - "@walletconnect/modal@2.7.0": version "2.7.0" resolved "https://registry.yarnpkg.com/@walletconnect/modal/-/modal-2.7.0.tgz#55f969796d104cce1205f5f844d8f8438b79723a" @@ -8563,28 +8230,6 @@ "@walletconnect/modal-core" "2.7.0" "@walletconnect/modal-ui" "2.7.0" -"@walletconnect/qrcode-modal@^1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@walletconnect/qrcode-modal/-/qrcode-modal-1.8.0.tgz#ddd6f5c9b7ee52c16adf9aacec2a3eac4994caea" - integrity sha512-BueaFefaAi8mawE45eUtztg3ZFbsAH4DDXh1UNwdUlsvFMjqcYzLUG0xZvDd6z2eOpbgDg2N3bl6gF0KONj1dg== - dependencies: - "@walletconnect/browser-utils" "^1.8.0" - "@walletconnect/mobile-registry" "^1.4.0" - "@walletconnect/types" "^1.8.0" - copy-to-clipboard "^3.3.1" - preact "10.4.1" - qrcode "1.4.4" - -"@walletconnect/randombytes@^1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@walletconnect/randombytes/-/randombytes-1.0.3.tgz#e795e4918367fd1e6a2215e075e64ab93e23985b" - integrity sha512-35lpzxcHFbTN3ABefC9W+uBpNZl1GC4Wpx0ed30gibfO/y9oLdy1NznbV96HARQKSBV9J9M/rrtIvf6a23jfYw== - dependencies: - "@walletconnect/encoding" "^1.0.2" - "@walletconnect/environment" "^1.0.1" - randombytes "^2.1.0" - tslib "1.14.1" - "@walletconnect/relay-api@1.0.11": version "1.0.11" resolved "https://registry.yarnpkg.com/@walletconnect/relay-api/-/relay-api-1.0.11.tgz#80ab7ef2e83c6c173be1a59756f95e515fb63224" @@ -8592,15 +8237,7 @@ dependencies: "@walletconnect/jsonrpc-types" "^1.0.2" -"@walletconnect/relay-api@^1.0.9": - version "1.0.9" - resolved "https://registry.yarnpkg.com/@walletconnect/relay-api/-/relay-api-1.0.9.tgz#f8c2c3993dddaa9f33ed42197fc9bfebd790ecaf" - integrity sha512-Q3+rylJOqRkO1D9Su0DPE3mmznbAalYapJ9qmzDgK28mYF9alcP3UwG/og5V7l7CFOqzCLi7B8BvcBUrpDj0Rg== - dependencies: - "@walletconnect/jsonrpc-types" "^1.0.2" - tslib "1.14.1" - -"@walletconnect/relay-auth@1.0.4", "@walletconnect/relay-auth@^1.0.4": +"@walletconnect/relay-auth@1.0.4": version "1.0.4" resolved "https://registry.yarnpkg.com/@walletconnect/relay-auth/-/relay-auth-1.0.4.tgz#0b5c55c9aa3b0ef61f526ce679f3ff8a5c4c2c7c" integrity sha512-kKJcS6+WxYq5kshpPaxGHdwf5y98ZwbfuS4EE/NkQzqrDFm5Cj+dP8LofzWvjrrLkZq7Afy7WrQMXdLy8Sx7HQ== @@ -8612,11 +8249,6 @@ tslib "1.14.1" uint8arrays "^3.0.0" -"@walletconnect/safe-json@1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@walletconnect/safe-json/-/safe-json-1.0.0.tgz#12eeb11d43795199c045fafde97e3c91646683b2" - integrity sha512-QJzp/S/86sUAgWY6eh5MKYmSfZaRpIlmCJdi5uG4DJlKkZrHEF7ye7gA+VtbVzvTtpM/gRwO2plQuiooIeXjfg== - "@walletconnect/safe-json@1.0.2", "@walletconnect/safe-json@^1.0.1", "@walletconnect/safe-json@^1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@walletconnect/safe-json/-/safe-json-1.0.2.tgz#7237e5ca48046e4476154e503c6d3c914126fa77" @@ -8624,21 +8256,6 @@ dependencies: tslib "1.14.1" -"@walletconnect/sign-client@2.10.1": - version "2.10.1" - resolved "https://registry.yarnpkg.com/@walletconnect/sign-client/-/sign-client-2.10.1.tgz#db60bc9400cd79f0cb2380067343512b21ee4749" - integrity sha512-iG3eJGi1yXeG3xGeVSSMf8wDFyx239B0prLQfy1uYDtYFb2ynnH/09oqAZyKn96W5nfQzUgM2Mz157PVdloH3Q== - dependencies: - "@walletconnect/core" "2.10.1" - "@walletconnect/events" "^1.0.1" - "@walletconnect/heartbeat" "1.2.1" - "@walletconnect/jsonrpc-utils" "1.0.8" - "@walletconnect/logger" "^2.0.1" - "@walletconnect/time" "^1.0.2" - "@walletconnect/types" "2.10.1" - "@walletconnect/utils" "2.10.1" - events "^3.3.0" - "@walletconnect/sign-client@2.17.0": version "2.17.0" resolved "https://registry.yarnpkg.com/@walletconnect/sign-client/-/sign-client-2.17.0.tgz#efe811b1bb10082d964e2f0378aaa1b40f424503" @@ -8654,15 +8271,6 @@ "@walletconnect/utils" "2.17.0" events "3.3.0" -"@walletconnect/socket-transport@^1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@walletconnect/socket-transport/-/socket-transport-1.8.0.tgz#9a1128a249628a0be11a0979b522fe82b44afa1b" - integrity sha512-5DyIyWrzHXTcVp0Vd93zJ5XMW61iDM6bcWT4p8DTRfFsOtW46JquruMhxOLeCOieM4D73kcr3U7WtyR4JUsGuQ== - dependencies: - "@walletconnect/types" "^1.8.0" - "@walletconnect/utils" "^1.8.0" - ws "7.5.3" - "@walletconnect/time@1.0.2", "@walletconnect/time@^1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@walletconnect/time/-/time-1.0.2.tgz#6c5888b835750ecb4299d28eecc5e72c6d336523" @@ -8670,18 +8278,6 @@ dependencies: tslib "1.14.1" -"@walletconnect/types@2.10.1": - version "2.10.1" - resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-2.10.1.tgz#1355bce236f3eef575716ea3efe4beed98a873ef" - integrity sha512-7pccAhajQdiH2kYywjE1XI64IqRI+4ioyGy0wvz8d0UFQ/DSG3MLKR8jHf5aTOafQQ/HRLz6xvlzN4a7gIVkUQ== - dependencies: - "@walletconnect/events" "^1.0.1" - "@walletconnect/heartbeat" "1.2.1" - "@walletconnect/jsonrpc-types" "1.0.3" - "@walletconnect/keyvaluestorage" "^1.0.2" - "@walletconnect/logger" "^2.0.1" - events "^3.3.0" - "@walletconnect/types@2.17.0": version "2.17.0" resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-2.17.0.tgz#20eda5791e3172f8ab9146caa3f317701d4b3232" @@ -8694,26 +8290,6 @@ "@walletconnect/logger" "2.1.2" events "3.3.0" -"@walletconnect/types@^1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-1.8.0.tgz#3f5e85b2d6b149337f727ab8a71b8471d8d9a195" - integrity sha512-Cn+3I0V0vT9ghMuzh1KzZvCkiAxTq+1TR2eSqw5E5AVWfmCtECFkVZBP6uUJZ8YjwLqXheI+rnjqPy7sVM4Fyg== - -"@walletconnect/universal-provider@2.10.1": - version "2.10.1" - resolved "https://registry.yarnpkg.com/@walletconnect/universal-provider/-/universal-provider-2.10.1.tgz#c4a77bd2eed1a335edae5b2b298636092fff63ef" - integrity sha512-81QxTH/X4dRoYCz0U9iOrBYOcj7N897ONcB57wsGhEkV7Rc9htmWJq2CzeOuxvVZ+pNZkE+/aw9LrhizO1Ltxg== - dependencies: - "@walletconnect/jsonrpc-http-connection" "^1.0.7" - "@walletconnect/jsonrpc-provider" "1.0.13" - "@walletconnect/jsonrpc-types" "^1.0.2" - "@walletconnect/jsonrpc-utils" "^1.0.7" - "@walletconnect/logger" "^2.0.1" - "@walletconnect/sign-client" "2.10.1" - "@walletconnect/types" "2.10.1" - "@walletconnect/utils" "2.10.1" - events "^3.3.0" - "@walletconnect/universal-provider@2.17.0": version "2.17.0" resolved "https://registry.yarnpkg.com/@walletconnect/universal-provider/-/universal-provider-2.17.0.tgz#c9d4bbd9b8f0e41b500b2488ccbc207dc5f7a170" @@ -8729,26 +8305,6 @@ "@walletconnect/utils" "2.17.0" events "3.3.0" -"@walletconnect/utils@2.10.1": - version "2.10.1" - resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-2.10.1.tgz#65b37c9800eb0e80a08385b6987471fb46e1e22e" - integrity sha512-DM0dKgm9O58l7VqJEyV2OVv16XRePhDAReI23let6WdW1dSpw/Y/A89Lp99ZJOjLm2FxyblMRF3YRaZtHwBffw== - dependencies: - "@stablelib/chacha20poly1305" "1.0.1" - "@stablelib/hkdf" "1.0.1" - "@stablelib/random" "^1.0.2" - "@stablelib/sha256" "1.0.1" - "@stablelib/x25519" "^1.0.3" - "@walletconnect/relay-api" "^1.0.9" - "@walletconnect/safe-json" "^1.0.2" - "@walletconnect/time" "^1.0.2" - "@walletconnect/types" "2.10.1" - "@walletconnect/window-getters" "^1.0.1" - "@walletconnect/window-metadata" "^1.0.1" - detect-browser "5.3.0" - query-string "7.1.3" - uint8arrays "^3.1.0" - "@walletconnect/utils@2.17.0": version "2.17.0" resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-2.17.0.tgz#02b3af0b80d0c1a994d692d829d066271b04d071" @@ -8771,39 +8327,14 @@ query-string "7.1.3" uint8arrays "3.1.0" -"@walletconnect/utils@^1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-1.8.0.tgz#2591a197c1fa7429941fe428876088fda6632060" - integrity sha512-zExzp8Mj1YiAIBfKNm5u622oNw44WOESzo6hj+Q3apSMIb0Jph9X3GDIdbZmvVZsNPxWDL7uodKgZcCInZv2vA== - dependencies: - "@walletconnect/browser-utils" "^1.8.0" - "@walletconnect/encoding" "^1.0.1" - "@walletconnect/jsonrpc-utils" "^1.0.3" - "@walletconnect/types" "^1.8.0" - bn.js "4.11.8" - js-sha3 "0.8.0" - query-string "6.13.5" - -"@walletconnect/window-getters@1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@walletconnect/window-getters/-/window-getters-1.0.0.tgz#1053224f77e725dfd611c83931b5f6c98c32bfc8" - integrity sha512-xB0SQsLaleIYIkSsl43vm8EwETpBzJ2gnzk7e0wMF3ktqiTGS6TFHxcprMl5R44KKh4tCcHCJwolMCaDSwtAaA== - -"@walletconnect/window-getters@1.0.1", "@walletconnect/window-getters@^1.0.0", "@walletconnect/window-getters@^1.0.1": +"@walletconnect/window-getters@1.0.1", "@walletconnect/window-getters@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@walletconnect/window-getters/-/window-getters-1.0.1.tgz#f36d1c72558a7f6b87ecc4451fc8bd44f63cbbdc" integrity sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q== dependencies: tslib "1.14.1" -"@walletconnect/window-metadata@1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@walletconnect/window-metadata/-/window-metadata-1.0.0.tgz#93b1cc685e6b9b202f29c26be550fde97800c4e5" - integrity sha512-9eFvmJxIKCC3YWOL97SgRkKhlyGXkrHwamfechmqszbypFspaSk+t2jQXAEU7YClHF6Qjw5eYOmy1//zFi9/GA== - dependencies: - "@walletconnect/window-getters" "^1.0.0" - -"@walletconnect/window-metadata@1.0.1", "@walletconnect/window-metadata@^1.0.1": +"@walletconnect/window-metadata@1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@walletconnect/window-metadata/-/window-metadata-1.0.1.tgz#2124f75447b7e989e4e4e1581d55d25bc75f7be5" integrity sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA== @@ -8811,94 +8342,6 @@ "@walletconnect/window-getters" "^1.0.1" tslib "1.14.1" -"@web3-onboard/coinbase@^2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@web3-onboard/coinbase/-/coinbase-2.4.1.tgz#164d839ba5d08cc9dcc0147de6586a40e3125205" - integrity sha512-o5KdsN2hmD1GHAkT5qJORZo0I5AOl0lHMXzyrb7AHsFQpMeeYmGcpAkzOJXUWpuZUf3UPNfo7RHmKzxOlj2t5g== - dependencies: - "@coinbase/wallet-sdk" "4.0.3" - "@web3-onboard/common" "^2.4.1" - -"@web3-onboard/common@^2.3.3", "@web3-onboard/common@^2.4.1": - version "2.4.2" - resolved "https://registry.yarnpkg.com/@web3-onboard/common/-/common-2.4.2.tgz#ffa7b1a7cb6410d9cc4d7b38d50b97a857b334cb" - integrity sha512-3+zkBru5W2jBYFBPPQsnqZ7tuN1GUyM5PzD9/MmhvjCLNhmjFtMQ0MkLzG4Yshodb4UW/DmZpjUVrpjdhEhj/Q== - dependencies: - joi "17.9.1" - viem "2.12.0" - -"@web3-onboard/core@2.24.0", "@web3-onboard/core@^2.24.0": - version "2.24.0" - resolved "https://registry.yarnpkg.com/@web3-onboard/core/-/core-2.24.0.tgz#e31f202b557c51c05f9a8a298552e3143d152017" - integrity sha512-aFfao9ln5DMW9QSTzXHP4ymuFoJslBs3TrYR+z+5B6/lPMK1CUSe5wmPeFVaqTXs4gIGkyWByuznb9LUq/Vong== - dependencies: - "@web3-onboard/common" "^2.4.1" - bnc-sdk "^4.6.7" - bowser "^2.11.0" - eventemitter3 "^4.0.7" - joi "17.9.1" - lodash.merge "^4.6.2" - lodash.partition "^4.6.0" - nanoid "^4.0.0" - rxjs "^7.5.5" - svelte "^3.49.0" - svelte-i18n "^4.0.1" - viem "2.12.0" - -"@web3-onboard/gnosis@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@web3-onboard/gnosis/-/gnosis-2.2.0.tgz#134dd79d13b651934f4233760f4337752d1c35df" - integrity sha512-+CtvrI30jj3zJdplQfrCU1rSAUN6R0rfBZggl8JXvqsH5CNTFjU3ctVWeqbyGBPfcVhRQ5oLqKcj464LTwy2iw== - dependencies: - "@web3-onboard/common" "^2.3.3" - -"@web3-onboard/injected-wallets@^2.11.1": - version "2.11.1" - resolved "https://registry.yarnpkg.com/@web3-onboard/injected-wallets/-/injected-wallets-2.11.1.tgz#7e282da187879735790cde7486dca7d85f39c9c0" - integrity sha512-kssRbYd1GfRHUpdGh5v1tfA+ZRZ2y8YM5EHTzBjH7FPoBMHpZAGCA9N0NF2mZNQ2VDYOuXpz2SipnrYdVP34qQ== - dependencies: - "@web3-onboard/common" "^2.4.1" - joi "17.9.1" - lodash.uniqby "^4.7.0" - -"@web3-onboard/metamask@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@web3-onboard/metamask/-/metamask-2.2.0.tgz#4d6ba8f01bd31f1a82a1229a3afa36cbbf2f8567" - integrity sha512-VGZ6FWKAI6YVY+Q5QK7CXwCH3UWtK66dpo1rEmuuf4dQ2y1A0btwamxEHJQgE6zSy1ebkUvPPZyDB4ySjwsf8g== - dependencies: - "@metamask/sdk" "^0.30.0" - "@web3-onboard/common" "^2.4.1" - -"@web3-onboard/phantom@^2.1.1": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@web3-onboard/phantom/-/phantom-2.1.1.tgz#c7274c065a2134a2e27a8ed7ea8c4d74e665cd63" - integrity sha512-OXDeUpqrZK7zi8CSgCZXlEzppo9mCGm/e3ksQUiffud1ug5lvj+FtuNr1hJBuuIJQ4QnT2zCbM2PZkLOcnETBg== - dependencies: - "@web3-onboard/common" "^2.4.1" - -"@web3-onboard/react@^2.11.0": - version "2.11.0" - resolved "https://registry.yarnpkg.com/@web3-onboard/react/-/react-2.11.0.tgz#1805df2087f7fac81a5575fa97793d32204f86fd" - integrity sha512-aKwkVX3Xt0FshAerq1j15FYZnanEfrcNRl7SjziH8Zh/v82chixBqdPOKG7uh4lYKutIY7OAuyubPPRr/J7mzw== - dependencies: - "@web3-onboard/common" "^2.4.1" - "@web3-onboard/core" "2.24.0" - use-sync-external-store "1.0.0" - -"@web3-onboard/walletconnect@^2.4.6": - version "2.4.6" - resolved "https://registry.yarnpkg.com/@web3-onboard/walletconnect/-/walletconnect-2.4.6.tgz#305b16a022f915356fd8b7547c89858bbd10498c" - integrity sha512-HsJHC++1/RSZIbYWGLCKkkmdu+8ITV3hkBeSQxvrnO9bcCBMY//+SBo2N7hPZqqSiRFvv2/UW4r4hELmhR4pdQ== - dependencies: - "@ethersproject/providers" "5.5.0" - "@walletconnect/client" "^1.8.0" - "@walletconnect/ethereum-provider" "^2.10.0" - "@walletconnect/modal" "2.6.1" - "@walletconnect/qrcode-modal" "^1.8.0" - "@web3-onboard/common" "^2.3.3" - joi "17.9.1" - rxjs "^7.5.2" - "@yarnpkg/esbuild-plugin-pnp@^3.0.0-rc.10": version "3.0.0-rc.15" resolved "https://registry.yarnpkg.com/@yarnpkg/esbuild-plugin-pnp/-/esbuild-plugin-pnp-3.0.0-rc.15.tgz#4e40e7d2eb28825c9a35ab9d04c363931d7c0e67" @@ -9207,7 +8650,7 @@ ansi-regex@^6.0.1: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== -ansi-styles@^3.2.0, ansi-styles@^3.2.1: +ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== @@ -9953,11 +9396,6 @@ bn.js@4.11.6: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" integrity sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA== -bn.js@4.11.8: - version "4.11.8" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" - integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== - bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.0, bn.js@^4.11.6, bn.js@^4.11.8, bn.js@^4.11.9: version "4.12.0" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" @@ -9968,16 +9406,6 @@ bn.js@^5.0.0, bn.js@^5.1.2, bn.js@^5.1.3, bn.js@^5.2.0, bn.js@^5.2.1: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== -bnc-sdk@^4.6.7: - version "4.6.7" - resolved "https://registry.yarnpkg.com/bnc-sdk/-/bnc-sdk-4.6.7.tgz#138a22e04c95c2c697fb836092358d21957e2114" - integrity sha512-jIQ6cmeRBgvH/YDLuYRr2+kxDGcAAi0SOvjlO5nQ5cWdbslw+ASWftd1HmxiVLNCiwEH5bSc/t8a0agZ5njTUQ== - dependencies: - crypto-es "^1.2.2" - nanoid "^3.3.1" - rxjs "^6.6.3" - sturdy-websocket "^0.1.12" - body-parser@1.20.2, body-parser@^1.16.0: version "1.20.2" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" @@ -10010,7 +9438,7 @@ borsh@^0.7.0: bs58 "^4.0.0" text-encoding-utf-8 "^1.0.2" -bowser@^2.11.0, bowser@^2.9.0: +bowser@^2.9.0: version "2.11.0" resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.11.0.tgz#5ca3c35757a7aa5771500c70a73a9f91ef420a8f" integrity sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA== @@ -10204,19 +9632,6 @@ btoa@^1.2.1: resolved "https://registry.yarnpkg.com/btoa/-/btoa-1.2.1.tgz#01a9909f8b2c93f6bf680ba26131eb30f7fa3d73" integrity sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g== -buffer-alloc-unsafe@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" - integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== - -buffer-alloc@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" - integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== - dependencies: - buffer-alloc-unsafe "^1.1.0" - buffer-fill "^1.0.0" - buffer-crc32@~0.2.3: version "0.2.13" resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" @@ -10227,12 +9642,7 @@ buffer-equal-constant-time@1.0.1: resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" integrity sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA== -buffer-fill@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" - integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= - -buffer-from@^1.0.0, buffer-from@^1.1.1: +buffer-from@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== @@ -10270,7 +9680,7 @@ buffer@6.0.3, buffer@^6.0.3, buffer@~6.0.3: base64-js "^1.3.1" ieee754 "^1.2.1" -buffer@^5.0.5, buffer@^5.4.3, buffer@^5.5.0, buffer@^5.6.0: +buffer@^5.0.5, buffer@^5.5.0, buffer@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== @@ -10768,17 +10178,6 @@ cli-boxes@^2.2.1: resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== -cli-color@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/cli-color/-/cli-color-2.0.4.tgz#d658080290968816b322248b7306fad2346fb2c8" - integrity sha512-zlnpg0jNcibNrO7GG9IeHH7maWFeCz+Ja1wx/7tZNU5ASSSSZ+/qZciM0/LHCYxSdqv5h2sdbQ/PXYdOuetXvA== - dependencies: - d "^1.0.1" - es5-ext "^0.10.64" - es6-iterator "^2.0.3" - memoizee "^0.4.15" - timers-ext "^0.1.7" - cli-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" @@ -10887,15 +10286,6 @@ cliui@^3.2.0: strip-ansi "^3.0.1" wrap-ansi "^2.0.0" -cliui@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" - integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== - dependencies: - string-width "^3.1.0" - strip-ansi "^5.2.0" - wrap-ansi "^5.1.0" - cliui@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" @@ -11224,13 +10614,6 @@ cookiejar@^2.1.1: resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.4.tgz#ee669c1fea2cf42dc31585469d193fef0d65771b" integrity sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw== -copy-to-clipboard@^3.3.1: - version "3.3.3" - resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz#55ac43a1db8ae639a4bd99511c148cdd1b83a1b0" - integrity sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA== - dependencies: - toggle-selection "^1.0.6" - core-js-compat@^3.31.0, core-js-compat@^3.33.1, core-js-compat@^3.36.1: version "3.37.1" resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.37.1.tgz#c844310c7852f4bdf49b8d339730b97e17ff09ee" @@ -11402,11 +10785,6 @@ crypto-browserify@3.12.0: randombytes "^2.0.0" randomfill "^1.0.3" -crypto-es@^1.2.2: - version "1.2.7" - resolved "https://registry.yarnpkg.com/crypto-es/-/crypto-es-1.2.7.tgz#754a6d52319a94fb4eb1f119297f17196b360f88" - integrity sha512-UUqiVJ2gUuZFmbFsKmud3uuLcNP2+Opt+5ysmljycFCyhA0+T16XJmo1ev/t5kMChMqWh7IEvURNCqsg+SjZGQ== - crypto-hash@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/crypto-hash/-/crypto-hash-1.3.0.tgz#b402cb08f4529e9f4f09346c3e275942f845e247" @@ -11598,11 +10976,6 @@ decimal.js-light@^2.5.0: resolved "https://registry.yarnpkg.com/decimal.js-light/-/decimal.js-light-2.5.1.tgz#134fd32508f19e208f4fb2f8dac0d2626a867934" integrity sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg== -decimal.js@10: - version "10.5.0" - resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.5.0.tgz#0f371c7cf6c4898ce0afb09836db73cd82010f22" - integrity sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw== - decimal.js@^10.2.1, decimal.js@^10.3.1, decimal.js@^10.4.2: version "10.4.3" resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" @@ -11795,11 +11168,6 @@ destroy@1.2.0: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== -detect-browser@5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/detect-browser/-/detect-browser-5.2.0.tgz#c9cd5afa96a6a19fda0bbe9e9be48a6b6e1e9c97" - integrity sha512-tr7XntDAu50BVENgQfajMLzacmSe34D+qZc4zjnniz0ZVuw/TZcLcyxHQjYpJTM36sGEkZZlYLnIM1hH7alTMA== - detect-browser@5.3.0, detect-browser@^5.2.0: version "5.3.0" resolved "https://registry.yarnpkg.com/detect-browser/-/detect-browser-5.3.0.tgz#9705ef2bddf46072d0f7265a1fe300e36fe7ceca" @@ -12159,11 +11527,6 @@ emittery@^0.13.1: resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== - emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" @@ -12496,7 +11859,7 @@ es-to-primitive@^1.3.0: is-date-object "^1.0.5" is-symbol "^1.0.4" -es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.62, es5-ext@^0.10.63, es5-ext@^0.10.64, es5-ext@~0.10.14, es5-ext@~0.10.2: +es5-ext@^0.10.35, es5-ext@^0.10.62, es5-ext@^0.10.63, es5-ext@^0.10.64, es5-ext@~0.10.14: version "0.10.64" resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.64.tgz#12e4ffb48f1ba2ea777f1fcdd1918ef73ea21714" integrity sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg== @@ -12535,16 +11898,6 @@ es6-symbol@^3.1.1, es6-symbol@^3.1.3: d "^1.0.2" ext "^1.7.0" -es6-weak-map@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" - integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== - dependencies: - d "1" - es5-ext "^0.10.46" - es6-iterator "^2.0.3" - es6-symbol "^3.1.1" - esbuild-android-64@0.14.47: version "0.14.47" resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.14.47.tgz#ef95b42c67bcf4268c869153fa3ad1466c4cea6b" @@ -12813,11 +12166,6 @@ escape-html@~1.0.3: resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== -escape-string-regexp@2.0.0, escape-string-regexp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== - escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" @@ -12828,6 +12176,11 @@ escape-string-regexp@^1.0.5: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + escodegen@1.8.x: version "1.8.1" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018" @@ -13040,7 +12393,7 @@ estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== -estree-walker@2.0.2, estree-walker@^2, estree-walker@^2.0.1, estree-walker@^2.0.2: +estree-walker@2.0.2, estree-walker@^2.0.1, estree-walker@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== @@ -14573,11 +13926,6 @@ globalthis@^1.0.4: define-properties "^1.2.1" gopd "^1.0.1" -globalyzer@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/globalyzer/-/globalyzer-0.1.0.tgz#cb76da79555669a1519d5a8edf093afaa0bf1465" - integrity sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q== - globby@^10.0.1: version "10.0.2" resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.2.tgz#277593e745acaa4646c3ab411289ec47a0392543" @@ -15312,20 +14660,6 @@ hyperlinker@^1.0.0: resolved "https://registry.yarnpkg.com/hyperlinker/-/hyperlinker-1.0.0.tgz#23dc9e38a206b208ee49bc2d6c8ef47027df0c0e" integrity sha512-Ty8UblRWFEcfSuIaajM34LdPXIhbs1ajEX/BBPv24J+enSVaEVY63xQ6lTO9VRYS5LAoghIG0IDJ+p+IPzKUQQ== -i18next-browser-languagedetector@7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/i18next-browser-languagedetector/-/i18next-browser-languagedetector-7.1.0.tgz#01876fac51f86b78975e79b48ccb62e2313a2d7d" - integrity sha512-cr2k7u1XJJ4HTOjM9GyOMtbOA47RtUoWRAtt52z43r3AoMs2StYKyjS3URPhzHaf+mn10hY9dZWamga5WPQjhA== - dependencies: - "@babel/runtime" "^7.19.4" - -i18next@23.11.5: - version "23.11.5" - resolved "https://registry.yarnpkg.com/i18next/-/i18next-23.11.5.tgz#d71eb717a7e65498d87d0594f2664237f9e361ef" - integrity sha512-41pvpVbW9rhZPk5xjCX2TPJi2861LEig/YRhUkY+1FQ2IQPS0bKUDYnEqY8XPPbB48h1uIwLnP9iiEfuSl20CA== - dependencies: - "@babel/runtime" "^7.23.2" - iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" @@ -15498,17 +14832,7 @@ interpret@^1.0.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== -intl-messageformat@^10.5.3: - version "10.7.14" - resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-10.7.14.tgz#ddcbbfdb1682afe56da094f21a4ac74fc3c91552" - integrity sha512-mMGnE4E1otdEutV5vLUdCxRJygHB5ozUBxsPB5qhitewssrS/qGruq9bmvIRkkGsNeK5ZWLfYRld18UHGTIifQ== - dependencies: - "@formatjs/ecma402-abstract" "2.3.2" - "@formatjs/fast-memoize" "2.2.6" - "@formatjs/icu-messageformat-parser" "2.11.0" - tslib "2" - -invariant@2.2.4, invariant@^2.2.4: +invariant@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== @@ -15878,11 +15202,6 @@ is-potential-custom-element-name@^1.0.1: resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== -is-promise@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" - integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== - is-regex@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" @@ -15995,7 +15314,7 @@ is-typed-array@^1.1.14, is-typed-array@^1.1.15: dependencies: which-typed-array "^1.1.16" -is-typedarray@1.0.0, is-typedarray@^1.0.0, is-typedarray@~1.0.0: +is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== @@ -16074,7 +15393,7 @@ isarray@0.0.1: resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== -isarray@^2.0.1, isarray@^2.0.5: +isarray@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== @@ -16117,11 +15436,6 @@ isows@1.0.3: resolved "https://registry.yarnpkg.com/isows/-/isows-1.0.3.tgz#93c1cf0575daf56e7120bab5c8c448b0809d0d74" integrity sha512-2cKei4vlmg2cxEjm3wVSqn8pcoRF/LX/wpifuuNquFO4SQmPwarClT+SUCA2lt+l581tTeZIPIZuIDo2jWN1fg== -isows@1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/isows/-/isows-1.0.4.tgz#810cd0d90cc4995c26395d2aa4cfa4037ebdf061" - integrity sha512-hEzjY+x9u9hPmBom9IIAqdJCwNLax+xrPb51vEPpERoFlIxgmZcHzsT5jKG06nvInKOBGvReAVz80Umed5CczQ== - isows@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/isows/-/isows-1.0.6.tgz#0da29d706fa51551c663c627ace42769850f86e7" @@ -16665,17 +15979,6 @@ jinx-rust@0.1.6: resolved "https://registry.yarnpkg.com/jinx-rust/-/jinx-rust-0.1.6.tgz#c7bce55d97bfbad76a9b930c01fe6a8629a170d7" integrity sha512-qP+wtQL1PrDDFwtPKhNGtjWOmijCrKdfUHWTV2G/ikxfjrh+cjdvkQTmny9RAsVF0jiui9m+F0INWu4cuRcZeQ== -joi@17.9.1: - version "17.9.1" - resolved "https://registry.yarnpkg.com/joi/-/joi-17.9.1.tgz#74899b9fa3646904afa984a11df648eca66c9018" - integrity sha512-FariIi9j6QODKATGBrEX7HZcja8Bsh3rfdGYy/Sb65sGlZWK/QWesU1ghk7aJWDj95knjXlQfSmzFSPPkLVsfw== - dependencies: - "@hapi/hoek" "^9.0.0" - "@hapi/topo" "^5.0.0" - "@sideway/address" "^4.1.3" - "@sideway/formula" "^3.0.1" - "@sideway/pinpoint" "^2.0.0" - jose@^4.9.3: version "4.9.3" resolved "https://registry.yarnpkg.com/jose/-/jose-4.9.3.tgz#890abd3f26725fe0f2aa720bc2f7835702b624db" @@ -17248,15 +16551,6 @@ lit-html@^2.8.0: dependencies: "@types/trusted-types" "^2.0.2" -lit@2.7.6: - version "2.7.6" - resolved "https://registry.yarnpkg.com/lit/-/lit-2.7.6.tgz#810007b876ed43e0c70124de91831921598b1665" - integrity sha512-1amFHA7t4VaaDe+vdQejSVBklwtH9svGoG6/dZi9JhxtJBBlqY5D1RV7iLUYY0trCqQc4NfhYYZilZiVHt7Hxg== - dependencies: - "@lit/reactive-element" "^1.6.0" - lit-element "^3.3.0" - lit-html "^2.7.0" - lit@2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/lit/-/lit-2.8.0.tgz#4d838ae03059bf9cafa06e5c61d8acc0081e974e" @@ -17346,11 +16640,6 @@ lodash.debounce@^4.0.8: resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== -lodash.defaults@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" - integrity sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw= - lodash.flatmap@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.flatmap/-/lodash.flatmap-4.5.0.tgz#ef8cbf408f6e48268663345305c6acc0b778702e" @@ -17381,11 +16670,6 @@ lodash.merge@^4.6.2: resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -lodash.partition@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.partition/-/lodash.partition-4.6.0.tgz#a38e46b73469e0420b0da1212e66d414be364ba4" - integrity sha512-35L3dSF3Q6V1w5j6V3NhNlQjzsRDC/pYKCTdYTmwqSib+Q8ponkAmt/PwEOq3EmI38DSCl+SkIVwLd+uSlVdrg== - lodash.sortby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" @@ -17527,13 +16811,6 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -lru-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" - integrity sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ== - dependencies: - es5-ext "~0.10.2" - lru_map@^0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd" @@ -17706,20 +16983,6 @@ memdown@^1.0.0: ltgt "~2.2.0" safe-buffer "~5.1.1" -memoizee@^0.4.15: - version "0.4.17" - resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.17.tgz#942a5f8acee281fa6fb9c620bddc57e3b7382949" - integrity sha512-DGqD7Hjpi/1or4F/aYAspXKNm5Yili0QDAFAY4QYvpqpgiY6+1jOfqpmByzjxbWd/T9mChbCArXAbDAsTm5oXA== - dependencies: - d "^1.0.2" - es5-ext "^0.10.64" - es6-weak-map "^2.0.3" - event-emitter "^0.3.5" - is-promise "^2.2.2" - lru-queue "^0.1.0" - next-tick "^1.1.0" - timers-ext "^0.1.7" - memoizerific@^1.11.3: version "1.11.3" resolved "https://registry.yarnpkg.com/memoizerific/-/memoizerific-1.11.3.tgz#7c87a4646444c32d75438570905f2dbd1b1a805a" @@ -18046,7 +17309,7 @@ motion@10.16.2: "@motionone/utils" "^10.15.1" "@motionone/vue" "^10.16.2" -mri@1.2.0, mri@^1.1.0, mri@^1.2.0: +mri@1.2.0, mri@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== @@ -18188,21 +17451,11 @@ nano-json-stream-parser@^0.1.2: resolved "https://registry.yarnpkg.com/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz#0cc8f6d0e2b622b479c40d499c46d64b755c6f5f" integrity sha512-9MqxMH/BSJC7dnLsEMPyfN5Dvoo49IsPFYMcHw3Bcfc2kN0lpHRBSzlMSVx4HGyJ7s9B31CyBTVehWJoQ8Ctew== -nanoid@^3.3.1: - version "3.3.7" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" - integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== - nanoid@^3.3.8: version "3.3.8" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.8.tgz#b1be3030bee36aaff18bacb375e5cce521684baf" integrity sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w== -nanoid@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-4.0.0.tgz#6e144dee117609232c3f415c34b0e550e64999a5" - integrity sha512-IgBP8piMxe/gf73RTQx7hmnhwz0aaEXYakvqZyE302IXW3HyVNhdNGC+O2MwMAVhLEnvXlvKtGbtJf6wvHihCg== - natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" @@ -19272,11 +18525,6 @@ playwright@1.44.1: optionalDependencies: fsevents "2.3.2" -pngjs@^3.3.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f" - integrity sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w== - pngjs@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-5.0.0.tgz#e79dd2b215767fd9c04561c01236df960bce7fbb" @@ -19365,11 +18613,6 @@ postcss@^8.4.27: picocolors "^1.1.1" source-map-js "^1.2.1" -preact@10.4.1: - version "10.4.1" - resolved "https://registry.yarnpkg.com/preact/-/preact-10.4.1.tgz#9b3ba020547673a231c6cf16f0fbaef0e8863431" - integrity sha512-WKrRpCSwL2t3tpOOGhf2WfTpcmbpxaWtDbdJdKdjd0aEiTkvOmS4NBkG6kzlaAHI9AkQ3iVqbFWM3Ei7mZ4o1Q== - preact@^10.16.0: version "10.24.3" resolved "https://registry.yarnpkg.com/preact/-/preact-10.24.3.tgz#086386bd47071e3b45410ef20844c21e23828f64" @@ -19686,36 +18929,6 @@ pure-rand@^6.0.0: resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.0.2.tgz#a9c2ddcae9b68d736a8163036f088a2781c8b306" integrity sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ== -qr-code-styling@^1.6.0-rc.1: - version "1.8.4" - resolved "https://registry.yarnpkg.com/qr-code-styling/-/qr-code-styling-1.8.4.tgz#9168f379cc8f239c184951d5c1ad8a32ad0b19f9" - integrity sha512-uxykNuvXaPDK/jGDERDIdDvvocefbHu1oxVYi6K87FUdPPAezkBdcIeFJ8XVX2HSsyLFINile5uzfOMYpGu5ZA== - dependencies: - qrcode-generator "^1.4.4" - -qrcode-generator@^1.4.4: - version "1.4.4" - resolved "https://registry.yarnpkg.com/qrcode-generator/-/qrcode-generator-1.4.4.tgz#63f771224854759329a99048806a53ed278740e7" - integrity sha512-HM7yY8O2ilqhmULxGMpcHSF1EhJJ9yBj8gvDEuZ6M+KGJ0YY2hKpnXvRD+hZPLrDVck3ExIGhmPtSdcjC+guuw== - -qrcode-terminal-nooctal@^0.12.1: - version "0.12.1" - resolved "https://registry.yarnpkg.com/qrcode-terminal-nooctal/-/qrcode-terminal-nooctal-0.12.1.tgz#45016aca0d82b2818de7af0a06d072ad671fbe2e" - integrity sha512-jy/kkD0iIMDjTucB+5T6KBsnirlhegDH47vHgrj5MejchSQmi/EAMM0xMFeePgV9CJkkAapNakpVUWYgHvtdKg== - -qrcode@1.4.4: - version "1.4.4" - resolved "https://registry.yarnpkg.com/qrcode/-/qrcode-1.4.4.tgz#f0c43568a7e7510a55efc3b88d9602f71963ea83" - integrity sha512-oLzEC5+NKFou9P0bMj5+v6Z40evexeE29Z9cummZXZ9QXyMr3lphkURzxjXgPJC5azpxcshoDWV1xE46z+/c3Q== - dependencies: - buffer "^5.4.3" - buffer-alloc "^1.2.0" - buffer-from "^1.1.1" - dijkstrajs "^1.0.1" - isarray "^2.0.1" - pngjs "^3.3.0" - yargs "^13.2.4" - qrcode@1.5.3: version "1.5.3" resolved "https://registry.yarnpkg.com/qrcode/-/qrcode-1.5.3.tgz#03afa80912c0dccf12bc93f615a535aad1066170" @@ -19745,15 +18958,6 @@ qs@~6.5.2: resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== -query-string@6.13.5: - version "6.13.5" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.13.5.tgz#99e95e2fb7021db90a6f373f990c0c814b3812d8" - integrity sha512-svk3xg9qHR39P3JlHuD7g3nRnyay5mHbrPctEBDUxUkHRifPHXJDhBUycdCC0NBjXoDf44Gb+IsOZL1Uwn8M/Q== - dependencies: - decode-uri-component "^0.2.0" - split-on-first "^1.0.0" - strict-uri-encode "^2.0.0" - query-string@7.1.3: version "7.1.3" resolved "https://registry.yarnpkg.com/query-string/-/query-string-7.1.3.tgz#a1cf90e994abb113a325804a972d98276fe02328" @@ -19957,18 +19161,10 @@ react-is@^18.0.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== -react-native-webview@^11.26.0: - version "11.26.1" - resolved "https://registry.yarnpkg.com/react-native-webview/-/react-native-webview-11.26.1.tgz#658c09ed5162dc170b361e48c2dd26c9712879da" - integrity sha512-hC7BkxOpf+z0UKhxFSFTPAM4shQzYmZHoELa6/8a/MspcjEP7ukYKpuSUTLDywQditT8yI9idfcKvfZDKQExGw== - dependencies: - escape-string-regexp "2.0.0" - invariant "2.2.4" - -react-pro-sidebar@^1.1.0-alpha.1: - version "1.1.0-alpha.1" - resolved "https://registry.yarnpkg.com/react-pro-sidebar/-/react-pro-sidebar-1.1.0-alpha.1.tgz#0cecf4ca829da51f6d94770260ebc22791a61cdd" - integrity sha512-kIo4p3gHIdxqANG2KXv7V8KXDmDFsRhk23AGLbXsicCV39k32EP3Os2DXyOj9S6UCDYB+4G3WoeJFiMIkkHe0w== +react-pro-sidebar@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/react-pro-sidebar/-/react-pro-sidebar-1.1.0.tgz#e8f4ca0d7c4ff9fd2c38f8a0b85664083173b7ac" + integrity sha512-rdRJ4PeMsqWq9n69AmF6et6qCbhCF1KEBgjAH8vIiLxE1k5fMxtRYo0k4asxW8qpIH6sqahiMxrxVVoObv8orQ== dependencies: "@emotion/react" "^11.10.5" "@emotion/styled" "^11.10.5" @@ -20671,27 +19867,13 @@ rustbn.js@~0.2.0: resolved "https://registry.yarnpkg.com/rustbn.js/-/rustbn.js-0.2.0.tgz#8082cb886e707155fd1cb6f23bd591ab8d55d0ca" integrity sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA== -rxjs@^6.6.3: - version "6.6.7" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" - integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== - dependencies: - tslib "^1.9.0" - -rxjs@^7.2.0, rxjs@^7.5.2, rxjs@^7.5.4, rxjs@^7.5.5, rxjs@^7.8.0: +rxjs@^7.2.0, rxjs@^7.5.4, rxjs@^7.5.5, rxjs@^7.8.0: version "7.8.1" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== dependencies: tslib "^2.1.0" -sade@^1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/sade/-/sade-1.8.1.tgz#0a78e81d658d394887be57d2a409bf703a3b2701" - integrity sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A== - dependencies: - mri "^1.1.0" - safe-array-concat@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.2.tgz#81d77ee0c4e8b863635227c721278dd524c20edb" @@ -20730,11 +19912,6 @@ safe-event-emitter@^1.0.1: dependencies: events "^3.0.0" -safe-json-utils@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/safe-json-utils/-/safe-json-utils-1.1.1.tgz#0e883874467d95ab914c3f511096b89bfb3e63b1" - integrity sha512-SAJWGKDs50tAbiDXLf89PDwt9XYkWyANFWVzn4dTXl5QyI8t2o/bW5/OJl3lvc2WVU4MEpTo9Yz5NVFNsp+OJQ== - safe-push-apply@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/safe-push-apply/-/safe-push-apply-1.0.0.tgz#01850e981c1602d398c85081f360e4e6d03d27f5" @@ -21558,15 +20735,6 @@ string-width@^2.1.1: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" -string-width@^3.0.0, string-width@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== - dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" - string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" @@ -21703,7 +20871,7 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" -strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: +strip-ansi@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== @@ -21780,13 +20948,6 @@ stubs@^3.0.0: resolved "https://registry.yarnpkg.com/stubs/-/stubs-3.0.0.tgz#e8d2ba1fa9c90570303c030b6900f7d5f89abe5b" integrity sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw== -sturdy-websocket@^0.1.12: - version "0.1.12" - resolved "https://registry.yarnpkg.com/sturdy-websocket/-/sturdy-websocket-0.1.12.tgz#84bb779f948b585a695f76961dc7d1c4a5e87629" - integrity sha512-PA7h8LdjaMoIlC5HAwLVzae4raGWgyroscV4oUpEiTtEFINcNa47/CKYT3e98o+FfsJgrclI2pYpaJrz0aaoew== - dependencies: - lodash.defaults "^4.2.0" - stylis@4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.2.0.tgz#79daee0208964c8fe695a42fcffcac633a211a51" @@ -21861,24 +21022,6 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -svelte-i18n@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/svelte-i18n/-/svelte-i18n-4.0.1.tgz#e2d2ecda9d8848300b80599c2cf4d1e495f616e1" - integrity sha512-jaykGlGT5PUaaq04JWbJREvivlCnALtT+m87Kbm0fxyYHynkQaxQMnIKHLm2WeIuBRoljzwgyvz0Z6/CMwfdmQ== - dependencies: - cli-color "^2.0.3" - deepmerge "^4.2.2" - esbuild "^0.19.2" - estree-walker "^2" - intl-messageformat "^10.5.3" - sade "^1.8.1" - tiny-glob "^0.2.9" - -svelte@^3.49.0: - version "3.49.0" - resolved "https://registry.yarnpkg.com/svelte/-/svelte-3.49.0.tgz#5baee3c672306de1070c3b7888fc2204e36a4029" - integrity sha512-+lmjic1pApJWDfPCpUUTc1m8azDqYCG1JN9YEngrx/hUyIcFJo6VZhj0A1Ai0wqoHcEIuQy+e9tk+4uDgdtsFA== - svg-parser@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" @@ -22166,22 +21309,6 @@ timed-out@^4.0.1: resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" integrity sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA== -timers-ext@^0.1.7: - version "0.1.8" - resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.8.tgz#b4e442f10b7624a29dd2aa42c295e257150cf16c" - integrity sha512-wFH7+SEAcKfJpfLPkrgMPvvwnEtj8W4IurvEyrKsDleXnKLCDw71w8jltvfLa8Rm4qQxxT4jmDBYbJG/z7qoww== - dependencies: - es5-ext "^0.10.64" - next-tick "^1.1.0" - -tiny-glob@^0.2.9: - version "0.2.9" - resolved "https://registry.yarnpkg.com/tiny-glob/-/tiny-glob-0.2.9.tgz#2212d441ac17928033b110f8b3640683129d31e2" - integrity sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg== - dependencies: - globalyzer "0.1.0" - globrex "^0.1.2" - tiny-invariant@^1.0.2, tiny-invariant@^1.1.0, tiny-invariant@^1.3.1: version "1.3.3" resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.3.tgz#46680b7a873a0d5d10005995eb90a70d74d60127" @@ -22259,11 +21386,6 @@ toformat@^2.0.0: resolved "https://registry.yarnpkg.com/toformat/-/toformat-2.0.0.tgz#7a043fd2dfbe9021a4e36e508835ba32056739d8" integrity sha512-03SWBVop6nU8bpyZCx7SodpYznbZF5R4ljwNLBcTQzKOD9xuihRo/psX58llS1BMFhhAI08H3luot5GoXJz2pQ== -toggle-selection@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32" - integrity sha1-bkWxJj8gF/oKzH2J14sVuL932jI= - toidentifier@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" @@ -22426,12 +21548,12 @@ tsconfck@^2.1.0: resolved "https://registry.yarnpkg.com/tsconfck/-/tsconfck-2.1.1.tgz#9b51603d2712d1f4740fa14748ca886a2e1893e5" integrity sha512-ZPCkJBKASZBmBUNqGHmRhdhM8pJYDdOXp4nRgj/O0JwUwsMq50lCDRQP/M5GBNAA0elPrq4gAeu4dkaVCuKWww== -tslib@1.14.1, tslib@^1, tslib@^1.13.0, tslib@^1.14.1, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: +tslib@1.14.1, tslib@^1, tslib@^1.13.0, tslib@^1.14.1, tslib@^1.8.1, tslib@^1.9.3: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@2, tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.3.1, tslib@^2.4.0, tslib@^2.4.1, tslib@^2.6.0, tslib@^2.6.2, tslib@^2.8.0: +tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.3.1, tslib@^2.4.0, tslib@^2.4.1, tslib@^2.6.0, tslib@^2.6.2, tslib@^2.8.0: version "2.8.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== @@ -22661,7 +21783,7 @@ typed-array-length@^1.0.7: possible-typed-array-names "^1.0.0" reflect.getprototypeof "^1.0.6" -typedarray-to-buffer@3.1.5, typedarray-to-buffer@^3.1.5: +typedarray-to-buffer@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== @@ -22719,7 +21841,7 @@ uint8arrays@3.1.0: dependencies: multiformats "^9.4.2" -uint8arrays@^3.0.0, uint8arrays@^3.1.0: +uint8arrays@^3.0.0: version "3.1.1" resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-3.1.1.tgz#2d8762acce159ccd9936057572dade9459f65ae0" integrity sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg== @@ -22983,11 +22105,6 @@ use-sidecar@^1.0.5, use-sidecar@^1.1.2: detect-node-es "^1.1.0" tslib "^2.0.0" -use-sync-external-store@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.0.0.tgz#d98f4a9c2e73d0f958e7e2d2c2bfb5f618cbd8fd" - integrity sha512-AFVsxg5GkFg8GDcxnl+Z0lMAz9rE8DGJCc28qnBuQF7lac57B5smLcT37aXpXIIPz75rW4g3eXHPjhHwdGskOw== - use-sync-external-store@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a" @@ -23085,14 +22202,6 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" -valtio@1.11.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/valtio/-/valtio-1.11.0.tgz#c029dcd17a0f99d2fbec933721fe64cfd32a31ed" - integrity sha512-65Yd0yU5qs86b5lN1eu/nzcTgQ9/6YnD6iO+DDaDbQLn1Zv2w12Gwk43WkPlUBxk5wL/6cD5YMFf7kj6HZ1Kpg== - dependencies: - proxy-compare "2.5.1" - use-sync-external-store "1.2.0" - valtio@1.11.2: version "1.11.2" resolved "https://registry.yarnpkg.com/valtio/-/valtio-1.11.2.tgz#b8049c02dfe65620635d23ebae9121a741bb6530" @@ -23143,20 +22252,6 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -viem@2.12.0: - version "2.12.0" - resolved "https://registry.yarnpkg.com/viem/-/viem-2.12.0.tgz#699ba326a1ce0df81042dc8b6f22fa751f9cefce" - integrity sha512-XBvORspE4x2/gfy7idH6IVFwkJiXirygFCU3lxUH6fttsj8zufLtgiokfvZF/LAZUEDvdxSgL08whSYgffM2fw== - dependencies: - "@adraffy/ens-normalize" "1.10.0" - "@noble/curves" "1.2.0" - "@noble/hashes" "1.3.2" - "@scure/bip32" "1.3.2" - "@scure/bip39" "1.2.1" - abitype "1.0.0" - isows "1.0.4" - ws "8.13.0" - viem@2.9.9: version "2.9.9" resolved "https://registry.yarnpkg.com/viem/-/viem-2.9.9.tgz#c89e6f402ae06601579a7e3069de76eb08c60adb" @@ -24504,15 +23599,6 @@ wrap-ansi@^2.0.0: string-width "^1.0.1" strip-ansi "^3.0.1" -wrap-ansi@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" - integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== - dependencies: - ansi-styles "^3.2.0" - string-width "^3.0.0" - strip-ansi "^5.0.0" - wrap-ansi@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" @@ -24577,11 +23663,6 @@ ws@7.4.6: resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== -ws@7.5.3: - version "7.5.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.3.tgz#160835b63c7d97bfab418fc1b8a9fced2ac01a74" - integrity sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg== - ws@8.13.0: version "8.13.0" resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" @@ -24763,14 +23844,6 @@ yargs-parser@20.2.4: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== -yargs-parser@^13.1.2: - version "13.1.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" - integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - yargs-parser@^18.1.2: version "18.1.3" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" @@ -24820,22 +23893,6 @@ yargs@16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" -yargs@^13.2.4: - version "13.3.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" - integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== - dependencies: - cliui "^5.0.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^3.0.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^13.1.2" - yargs@^15.3.1: version "15.4.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" From ea766aa6d9ca0059ceae6fcd717f44d66ae4427c Mon Sep 17 00:00:00 2001 From: Dong-Ha Kim Date: Mon, 24 Feb 2025 22:46:08 +0700 Subject: [PATCH 2/6] fixup --- src/hooks/useBalance.ts | 2 +- src/stories/Header.stories.tsx | 19 +++++-------------- src/utils/token.ts | 8 ++++++-- 3 files changed, 12 insertions(+), 17 deletions(-) diff --git a/src/hooks/useBalance.ts b/src/hooks/useBalance.ts index d914a983e..9ad2c9bce 100644 --- a/src/hooks/useBalance.ts +++ b/src/hooks/useBalance.ts @@ -21,7 +21,7 @@ const getBalanceBySymbol = async (params: { chainIdToQuery?: ChainId; tokenSymbolToQuery?: string; config: ConfigClient; - provider?: providers.JsonRpcProvider; + provider?: providers.JsonRpcProvider | providers.FallbackProvider; }) => { const { accountToQuery, diff --git a/src/stories/Header.stories.tsx b/src/stories/Header.stories.tsx index 1caf6eabc..f14c66764 100644 --- a/src/stories/Header.stories.tsx +++ b/src/stories/Header.stories.tsx @@ -1,6 +1,6 @@ -import { useState, useEffect } from "react"; import { ComponentStory, ComponentMeta } from "@storybook/react"; import { Header, Sidebar } from "components"; +import { SidebarProvider } from "providers/SidebarProvider"; // More on default export: https://storybook.js.org/docs/react/writing-stories/introduction#default-export export default { @@ -31,20 +31,11 @@ export default { // More on component templates: https://storybook.js.org/docs/react/writing-stories/introduction#using-args const Template: ComponentStory = (args) => { - const [openSidebar, setOpenSidebar] = useState(false); - useEffect(() => { - setOpenSidebar(args.openSidebar); - }, [args.openSidebar]); - return ( -
-
- -
+ +
+ + ); }; diff --git a/src/utils/token.ts b/src/utils/token.ts index 0c617e603..5a7df49d9 100644 --- a/src/utils/token.ts +++ b/src/utils/token.ts @@ -7,7 +7,9 @@ export async function getNativeBalance( chainId: ChainId, account: string, blockNumber: number | "latest" = "latest", - provider?: ethers.providers.JsonRpcProvider + provider?: + | ethers.providers.JsonRpcProvider + | ethers.providers.FallbackProvider ) { provider ??= getProvider(chainId); const balance = await provider.getBalance(account, blockNumber); @@ -26,7 +28,9 @@ export async function getBalance( account: string, tokenAddress: string, blockNumber: number | "latest" = "latest", - provider?: ethers.providers.JsonRpcProvider + provider?: + | ethers.providers.JsonRpcProvider + | ethers.providers.FallbackProvider ): Promise { provider ??= getProvider(chainId); const contract = ERC20__factory.connect(tokenAddress, provider); From d6546fe6cb0b2029e100ae713d733b2f521d8593 Mon Sep 17 00:00:00 2001 From: Dong-Ha Kim Date: Tue, 25 Feb 2025 12:57:26 +0700 Subject: [PATCH 3/6] fixup --- src/components/Sidebar/components/WalletContent.tsx | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/components/Sidebar/components/WalletContent.tsx b/src/components/Sidebar/components/WalletContent.tsx index b65cdea44..63f439d83 100644 --- a/src/components/Sidebar/components/WalletContent.tsx +++ b/src/components/Sidebar/components/WalletContent.tsx @@ -59,11 +59,6 @@ function WalletItem({ connector }: { connector: Connector }) { [closeSidebar, connectAsync] ); - if (connector.name === "Injected") { - console.log(connector); - } - 1; - return ( Date: Tue, 25 Feb 2025 13:07:59 +0700 Subject: [PATCH 4/6] fixup --- src/components/Sidebar/components/WalletContent.tsx | 13 +++++++++++-- src/hooks/useWalletTrace.ts | 2 +- src/utils/amplitude.ts | 5 +++-- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/components/Sidebar/components/WalletContent.tsx b/src/components/Sidebar/components/WalletContent.tsx index 63f439d83..979344d75 100644 --- a/src/components/Sidebar/components/WalletContent.tsx +++ b/src/components/Sidebar/components/WalletContent.tsx @@ -11,7 +11,11 @@ import coinbaseIcon from "assets/wallet-logos/coinbase.svg"; import walletConnectIcon from "assets/wallet-logos/wallet-connect.svg"; import safeIcon from "assets/wallet-logos/safe.svg"; import injectedIcon from "assets/wallet-logos/injected.svg"; -import { trackIfWalletSelected } from "utils"; +import { + trackIfWalletSelected, + trackWalletConnectTransactionCompleted, +} from "utils"; + const connectorNameToIcon = { MetaMask: metaMaskIcon, "Coinbase Wallet": coinbaseIcon, @@ -49,7 +53,12 @@ function WalletItem({ connector }: { connector: Connector }) { await connectAsync( { connector }, { - onSuccess: () => { + onSuccess: (data) => { + trackWalletConnectTransactionCompleted( + data.accounts[0], + connector.name, + false + ); trackIfWalletSelected(connector.name); closeSidebar(); }, diff --git a/src/hooks/useWalletTrace.ts b/src/hooks/useWalletTrace.ts index 4409a4501..3d9354a72 100644 --- a/src/hooks/useWalletTrace.ts +++ b/src/hooks/useWalletTrace.ts @@ -56,7 +56,7 @@ export function useWalletChangeTrace() { } addToAmpliQueue(() => { - trackWalletConnectTransactionCompleted(account, connector.name); + trackWalletConnectTransactionCompleted(account, connector.name, true); }); setPrevTrackedWallet(account); diff --git a/src/utils/amplitude.ts b/src/utils/amplitude.ts index 870a8ed09..deaf3c16c 100644 --- a/src/utils/amplitude.ts +++ b/src/utils/amplitude.ts @@ -115,10 +115,11 @@ export function trackIfWalletSelected(walletType: string) { export function trackWalletConnectTransactionCompleted( connectedWallet: string, - walletType: string + walletType: string, + isReconnect?: boolean ) { return ampli.walletConnectTransactionCompleted({ - isReconnect: false, + isReconnect, succeeded: true, walletAddress: connectedWallet, walletType, From fa3d29a75db6dcfaf0d96594fa1afdd4a1f92ca8 Mon Sep 17 00:00:00 2001 From: Dong-Ha Kim Date: Tue, 25 Feb 2025 15:32:28 +0700 Subject: [PATCH 5/6] fixup --- e2e/wallet-setup/connected.setup.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/e2e/wallet-setup/connected.setup.ts b/e2e/wallet-setup/connected.setup.ts index 1ab013c36..767e00332 100644 --- a/e2e/wallet-setup/connected.setup.ts +++ b/e2e/wallet-setup/connected.setup.ts @@ -21,10 +21,7 @@ export default defineWalletSetup(MM_PASSWORD, async (context, walletPage) => { await page.goto(E2E_DAPP_URL); // Connect via wallet sidebar - await page - .getByRole("banner") - .locator(page.getByRole("button", { name: "Connect" })) - .click(); + await page.getByTestId("wallet-connect-button").click(); await page.getByTestId("sidebar-menu-item-MetaMask").click(); await metamask.connectToDapp(["Account 1"]); From a26e5e7caaade02902fbd2bdc53eee96538f60d8 Mon Sep 17 00:00:00 2001 From: Dong-Ha Kim Date: Tue, 25 Feb 2025 15:50:27 +0700 Subject: [PATCH 6/6] fixup --- e2e/wallet-setup/connected.setup.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/e2e/wallet-setup/connected.setup.ts b/e2e/wallet-setup/connected.setup.ts index 767e00332..8fbded3ba 100644 --- a/e2e/wallet-setup/connected.setup.ts +++ b/e2e/wallet-setup/connected.setup.ts @@ -20,9 +20,12 @@ export default defineWalletSetup(MM_PASSWORD, async (context, walletPage) => { // Go to a locally hosted MetaMask Test Dapp. await page.goto(E2E_DAPP_URL); - // Connect via wallet sidebar - await page.getByTestId("wallet-connect-button").click(); - await page.getByTestId("sidebar-menu-item-MetaMask").click(); + // Connect via wallet + await page + .getByRole("banner") + .locator(page.getByRole("button", { name: "Connect" })) + .click(); + await page.getByText("MetaMask").click(); await metamask.connectToDapp(["Account 1"]); });