diff --git a/.github/workflows/build-deploy.yml b/.github/workflows/build-deploy.yml index 4d3e390e1..f226b48cc 100644 --- a/.github/workflows/build-deploy.yml +++ b/.github/workflows/build-deploy.yml @@ -81,6 +81,8 @@ jobs: GH_NEYNAR_API_KEY=${{ secrets.GH_NEYNAR_API_KEY }} GH_NEXT_PUBLIC_TELEGRAM_BOT_ID=6523818125 GH_NEXT_PUBLIC_TELEGRAM_BOT_USERNAME=EpicAppBot + GH_NEXT_PUBLIC_DAPP_PUBLIC_KEY=7iXtxm8bXK7XGSvnHzYZSojYHYoNiMa4m59ZovYwBzy5 + GH_DAPP_SECRET_KEY=${{ secrets.GH_DAPP_SECRET_KEY }} target: runner tags: | ${{ env.image }} @@ -135,6 +137,8 @@ jobs: GH_NEXT_PUBLIC_TELEGRAM_BOT_USERNAME=subsocial_staging_bot GH_NEXT_PUBLIC_NEYNAR_CLIENT_ID=e8dc01b0-046c-4698-98ac-05432050961d GH_FRAMES_SECRET=JG/W96svVHQ3bdaEKWm1h8xJXqxDtqZ6t7tKCZNWhh0= + GH_NEXT_PUBLIC_DAPP_PUBLIC_KEY=GqJKFQavHPEvngh6hNwt9FbqcEYsNvduGvyQuT6ARTHk + GH_DAPP_SECRET_KEY=85Nb7L8gVozH99wYYu4Ggx64DVFKUXH15iwxSNGCgHBs target: runner tags: | ${{ env.image }} diff --git a/ci.env b/ci.env index 33248a381..ec78a186e 100644 --- a/ci.env +++ b/ci.env @@ -14,6 +14,8 @@ NEXT_PUBLIC_IS_MAINTENANCE='$GH_NEXT_PUBLIC_IS_MAINTENANCE' NEXT_PUBLIC_NEYNAR_CLIENT_ID='$GH_NEXT_PUBLIC_NEYNAR_CLIENT_ID' FRAMES_SECRET='$GH_FRAMES_SECRET' NEYNAR_API_KEY='$GH_NEYNAR_API_KEY' +NEXT_PUBLIC_DAPP_PUBLIC_KEY='$GH_NEXT_PUBLIC_DAPP_PUBLIC_KEY' +DAPP_SECRET_KEY='$GH_DAPP_SECRET_KEY' NEXT_PUBLIC_TELEGRAM_BOT_ID='$GH_NEXT_PUBLIC_TELEGRAM_BOT_ID' NEXT_PUBLIC_TELEGRAM_BOT_USERNAME='$GH_NEXT_PUBLIC_TELEGRAM_BOT_USERNAME' MODERATION_URL='$GH_MODERATION_URL' @@ -48,4 +50,4 @@ NEXT_PUBLIC_OFFCHAIN_POSTING_HUBS='$GH_NEXT_PUBLIC_OFFCHAIN_POSTING_HUBS' NEXT_PUBLIC_TELEGRAM_NOTIFICATION_BOT='$GH_NEXT_PUBLIC_TELEGRAM_NOTIFICATION_BOT' NEXTAUTH_SECRET='$GH_NEXTAUTH_SECRET' NEXTAUTH_URL='$GH_NEXTAUTH_URL' -NEXT_PUBLIC_BASE_URL='$GH_NEXT_PUBLIC_BASE_URL' +NEXT_PUBLIC_BASE_URL='$GH_NEXT_PUBLIC_BASE_URL' \ No newline at end of file diff --git a/docker/Dockerfile b/docker/Dockerfile index 0f76cd87c..bf6455c5a 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -22,6 +22,7 @@ ARG GH_NEXT_PUBLIC_IS_MAINTENANCE ARG GH_NEXT_PUBLIC_NEYNAR_CLIENT_ID ARG GH_FRAMES_SECRET ARG GH_NEYNAR_API_KEY +ARG GH_NEXT_PUBLIC_DAPP_PUBLIC_KEY ARG GH_NEXT_PUBLIC_TELEGRAM_BOT_ID ARG GH_NEXT_PUBLIC_TELEGRAM_BOT_USERNAME ARG GH_NEXT_PUBLIC_AMP_ID @@ -56,6 +57,8 @@ ENV NEXTAUTH_URL=${GH_NEXTAUTH_URL} \ NEXT_PUBLIC_NEYNAR_CLIENT_ID=${GH_NEXT_PUBLIC_NEYNAR_CLIENT_ID} \ FRAMES_SECRET=${GH_FRAMES_SECRET} \ NEYNAR_API_KEY=${GH_NEYNAR_API_KEY} \ + NEXT_PUBLIC_DAPP_PUBLIC_KEY=${GH_NEXT_PUBLIC_DAPP_PUBLIC_KEY} \ + DAPP_SECRET_KEY=${GH_DAPP_SECRET_KEY} \ NEXT_PUBLIC_TELEGRAM_BOT_ID=${GH_NEXT_PUBLIC_TELEGRAM_BOT_ID} \ NEXT_PUBLIC_TELEGRAM_BOT_USERNAME=${GH_NEXT_PUBLIC_TELEGRAM_BOT_USERNAME} \ NEXT_PUBLIC_SUBSTRATE_WSS=${GH_NEXT_PUBLIC_SUBSTRATE_WSS} \ @@ -119,6 +122,8 @@ ARG GH_NEXT_PUBLIC_BASE_PATH ARG GH_NEXT_PUBLIC_IS_MAINTENANCE ARG GH_NEXT_PUBLIC_NEYNAR_CLIENT_ID ARG GH_FRAMES_SECRET +ARG GH_NEXT_PUBLIC_DAPP_PUBLIC_KEY +ARG GH_DAPP_SECRET_KEY ARG GH_NEYNAR_API_KEY ARG GH_NEXT_PUBLIC_TELEGRAM_BOT_ID ARG GH_NEXT_PUBLIC_TELEGRAM_BOT_USERNAME @@ -154,6 +159,8 @@ ENV NEXTAUTH_URL=${GH_NEXTAUTH_URL} \ NEXT_PUBLIC_NEYNAR_CLIENT_ID=${GH_NEXT_PUBLIC_NEYNAR_CLIENT_ID} \ FRAMES_SECRET=${GH_FRAMES_SECRET} \ NEYNAR_API_KEY=${GH_NEYNAR_API_KEY} \ + NEXT_PUBLIC_DAPP_PUBLIC_KEY=${GH_NEXT_PUBLIC_DAPP_PUBLIC_KEY} \ + DAPP_SECRET_KEY=${GH_DAPP_SECRET_KEY} \ NEXT_PUBLIC_TELEGRAM_BOT_ID=${GH_NEXT_PUBLIC_TELEGRAM_BOT_ID} \ NEXT_PUBLIC_TELEGRAM_BOT_USERNAME=${GH_NEXT_PUBLIC_TELEGRAM_BOT_USERNAME} \ NEXT_PUBLIC_SUBSTRATE_WSS=${GH_NEXT_PUBLIC_SUBSTRATE_WSS} \ diff --git a/package.json b/package.json index 923d0a8dc..e4b1df8ae 100644 --- a/package.json +++ b/package.json @@ -41,6 +41,10 @@ "@polkadot/react-identicon": "^3.6.5", "@polkadot/util": "^12.1.2", "@rainbow-me/rainbowkit": "^1.3.5", + "@solana/wallet-adapter-base": "^0.9.23", + "@solana/wallet-adapter-react": "^0.15.35", + "@solana/wallet-adapter-react-ui": "^0.9.35", + "@solana/wallet-adapter-wallets": "^0.19.32", "@solana/web3.js": "^1.95.3", "@subsocial/api": "^0.8.14", "@subsocial/data-hub-sdk": "dappforce/subsocial-data-hub-sdk#staging", diff --git a/src/assets/emojis/confused.png b/src/assets/emojis/confused.png new file mode 100644 index 000000000..5bbaebb66 Binary files /dev/null and b/src/assets/emojis/confused.png differ diff --git a/src/assets/emojis/success.png b/src/assets/emojis/success.png new file mode 100644 index 000000000..f7025cca5 Binary files /dev/null and b/src/assets/emojis/success.png differ diff --git a/src/assets/graphics/eth-logo.png b/src/assets/graphics/eth-logo.png new file mode 100644 index 000000000..5cc4b8f6b Binary files /dev/null and b/src/assets/graphics/eth-logo.png differ diff --git a/src/assets/graphics/phantom-wallet.png b/src/assets/graphics/phantom-wallet.png new file mode 100644 index 000000000..171723529 Binary files /dev/null and b/src/assets/graphics/phantom-wallet.png differ diff --git a/src/components/BottomDrawer.tsx b/src/components/BottomDrawer.tsx index 1583a0cea..25b6f11cc 100644 --- a/src/components/BottomDrawer.tsx +++ b/src/components/BottomDrawer.tsx @@ -56,7 +56,7 @@ export default function BottomDrawer({ )}
- {title} + {title} {description}
diff --git a/src/components/TabButtons.tsx b/src/components/TabButtons.tsx new file mode 100644 index 000000000..edf9fa845 --- /dev/null +++ b/src/components/TabButtons.tsx @@ -0,0 +1,39 @@ +import { cx } from '@/utils/class-names' +import Button from './Button' + +export default function TabButtons({ + className, + selectedTab, + setSelectedTab, + tabs, +}: { + className?: string + tabs: string[] + selectedTab: string + setSelectedTab: (tab: string) => void +}) { + return ( +
+ {tabs.map((tab) => ( + + ))} +
+ ) +} diff --git a/src/components/TaskCard.tsx b/src/components/TaskCard.tsx new file mode 100644 index 000000000..6c1682c7b --- /dev/null +++ b/src/components/TaskCard.tsx @@ -0,0 +1,105 @@ +import Diamond from '@/assets/emojis/diamond.png' +import Check from '@/assets/icons/check.svg' +import Card from '@/components/Card' +import { Skeleton } from '@/components/SkeletonFallback' +import { cx } from '@/utils/class-names' +import { formatNumber } from '@/utils/strings' +import Image, { ImageProps } from 'next/image' +import Link from 'next/link' +import { CSSProperties } from 'react' +import { FaChevronRight } from 'react-icons/fa6' + +export default function TaskCard({ + completed, + image, + reward, + title, + customAction, + onClick, + href, + openInNewTab, + isLoadingReward, + withoutDiamondIcon, + topBanner, +}: { + image: ImageProps['src'] + title: React.ReactNode + reward: number | string + completed: boolean + customAction?: React.ReactNode + onClick?: () => void + href?: string + openInNewTab?: boolean + isLoadingReward?: boolean + withoutDiamondIcon?: boolean + topBanner?: { + icon: JSX.Element + text: string + className?: string + textStyle?: CSSProperties + textClassName?: string + } +}) { + const card = ( + + {topBanner && ( +
+
+ {topBanner.icon} + + {topBanner.text} + +
+
+ )} +
+ +
+ {title} +
+ {!withoutDiamondIcon && ( + + )} + {isLoadingReward ? ( + + ) : ( + + {typeof reward === 'number' + ? `+${formatNumber(reward)}` + : reward} + + )} +
+
+
+ {completed ? ( + + ) : customAction ? ( + customAction + ) : ( + + )} +
+
+
+ ) + if (href) { + return ( + + {card} + + ) + } + return card +} diff --git a/src/components/auth/common/evm/CommonEvmModalContent.tsx b/src/components/auth/common/evm/CommonEvmModalContent.tsx index d49192f00..bb320db16 100644 --- a/src/components/auth/common/evm/CommonEvmModalContent.tsx +++ b/src/components/auth/common/evm/CommonEvmModalContent.tsx @@ -11,6 +11,7 @@ import { getLinkedIdentityQuery, } from '@/services/datahub/identity/query' import { useMyAccount, useMyGrillAddress } from '@/stores/my-account' +import { lastRedirectProtocol } from '@/utils/globals' import { getCurrentUrlOrigin } from '@/utils/links' import { openNewWindow, twitterShareUrl } from '@/utils/social-share' import { IdentityProvider as SDKIdentityProvider } from '@subsocial/data-hub-sdk' @@ -146,6 +147,19 @@ export const CommonEVMLoginContent = ({ className='w-full' label={buttonLabel} secondLabel='Sign Message' + hideButton={isSigning} + additionalSecondActionLabel={ + isSigning && ( + + ) + } loadingText={!isSigned ? 'Pending Confirmation...' : 'Please wait...'} /> ) diff --git a/src/components/auth/common/evm/CustomConnectButton.tsx b/src/components/auth/common/evm/CustomConnectButton.tsx index ef2405516..790652597 100644 --- a/src/components/auth/common/evm/CustomConnectButton.tsx +++ b/src/components/auth/common/evm/CustomConnectButton.tsx @@ -12,9 +12,11 @@ type CustomConnectButtonProps = ButtonProps & { className?: string label?: React.ReactNode secondLabel?: React.ReactNode + additionalSecondActionLabel?: React.ReactNode withWalletActionImage?: boolean onSuccessConnect: (evmAddress: string) => Promise isLoading: boolean + hideButton?: boolean } export const CustomConnectButton = ({ @@ -23,6 +25,8 @@ export const CustomConnectButton = ({ label = 'Connect Ethereum Address', withWalletActionImage = true, secondLabel, + additionalSecondActionLabel, + hideButton, isLoading, ...buttonProps }: CustomConnectButtonProps) => { @@ -81,7 +85,7 @@ export const CustomConnectButton = ({ commonButtonProps.onClick?.(e as any) }} > - {usedLabel} + {label} ) } @@ -102,17 +106,22 @@ export const CustomConnectButton = ({ } return ( - + <> + {!hideButton && ( + + )} + {additionalSecondActionLabel} + ) }} @@ -126,7 +135,9 @@ export const CustomConnectButton = ({
- {customButton} +
+ {customButton} +
) } diff --git a/src/components/auth/common/evm/utils.ts b/src/components/auth/common/evm/utils.ts index 0ba14bbc2..20750ab8b 100644 --- a/src/components/auth/common/evm/utils.ts +++ b/src/components/auth/common/evm/utils.ts @@ -92,7 +92,7 @@ type OpenWalletProps = { } export const openMobileWallet = async ({ connector }: OpenWalletProps) => { - const getUri = connector.mobile?.getUri + const getUri = connector?.mobile?.getUri if (getUri) { const mobileUri = await getUri() diff --git a/src/components/chats/ChatForm.tsx b/src/components/chats/ChatForm.tsx index 02339eba0..42504c137 100644 --- a/src/components/chats/ChatForm.tsx +++ b/src/components/chats/ChatForm.tsx @@ -250,7 +250,7 @@ export default function ChatForm({ const isSufficient = await refetch() if (!isSufficient.data) { refetch() - setOpenMessageModal('not-enough-balance', chatId) + setOpenMessageModal('not-enough-balance', { chatId }) return } resetForm() diff --git a/src/components/chats/ChatItem/profilePosts/ProfileProstsListModal.tsx b/src/components/chats/ChatItem/profilePosts/ProfileProstsListModal.tsx index 371c8e991..488db5b22 100644 --- a/src/components/chats/ChatItem/profilePosts/ProfileProstsListModal.tsx +++ b/src/components/chats/ChatItem/profilePosts/ProfileProstsListModal.tsx @@ -5,7 +5,6 @@ import SkeletonFallback from '@/components/SkeletonFallback' import { env } from '@/env.mjs' import useAuthorizedForModeration from '@/hooks/useAuthorizedForModeration' import useIsModerationAdmin from '@/hooks/useIsModerationAdmin' -import { TabButton } from '@/modules/chat/HomePage/ChatTabs' import { getModerationReasonsQuery } from '@/services/datahub/moderation/query' import { getPaginatedPostIdsByPostIdAndAccount } from '@/services/datahub/posts/queryByAccount' import { useSendEvent } from '@/stores/analytics' @@ -15,7 +14,7 @@ import { isTouchDevice } from '@/utils/device' import { Transition } from '@headlessui/react' import { useMiniAppRaw } from '@tma.js/sdk-react' import { useRouter } from 'next/router' -import { useEffect, useState } from 'react' +import { ReactNode, useEffect, useState } from 'react' import { createPortal } from 'react-dom' import { HiOutlineChevronLeft, @@ -39,7 +38,9 @@ const chatIdByTab = { contest: env.NEXT_PUBLIC_CONTEST_CHAT_ID, } -const ProfilePostsListModal = ({ tabsConfig }: ProfilePostsListModalProps) => { +export default function ProfilePostsListModal({ + tabsConfig, +}: ProfilePostsListModalProps) { const [isOpenDetail, setIsOpenDetail] = useState(false) const [selectedTab, setSelectedTab] = useState( tabsConfig?.defaultTab || 'all' @@ -234,4 +235,48 @@ const ProfilePostsListModal = ({ tabsConfig }: ProfilePostsListModalProps) => { ) } -export default ProfilePostsListModal +export const tabStates = [ + 'all', + 'contest', + 'not-approved', + 'not-approved-contest', +] as const + +export type TabState = (typeof tabStates)[number] +export function TabButton({ + selectedTab, + setSelectedTab, + tab, + children, + className, + size = 'md', + highlightSelected, +}: { + tab: TabState + selectedTab: TabState + setSelectedTab: (tab: TabState) => void + children: ReactNode + className?: string + size?: 'md' | 'sm' + highlightSelected?: boolean +}) { + const isSelected = selectedTab === tab + return ( + + ) +} diff --git a/src/components/chats/ChatPreview/ChatPreview.tsx b/src/components/chats/ChatPreview/ChatPreview.tsx index bfc22b986..a6957ad05 100644 --- a/src/components/chats/ChatPreview/ChatPreview.tsx +++ b/src/components/chats/ChatPreview/ChatPreview.tsx @@ -138,18 +138,6 @@ export default function ChatPreview({ {defaultDesc}

)} - {(() => { - if (withUnreadCount && chatId) { - return ( - - ) - } - - return null - })()} diff --git a/src/components/chats/ChatPreview/ChatUnreadCount.tsx b/src/components/chats/ChatPreview/ChatUnreadCount.tsx index ba17cdabf..fad83f23a 100644 --- a/src/components/chats/ChatPreview/ChatUnreadCount.tsx +++ b/src/components/chats/ChatPreview/ChatUnreadCount.tsx @@ -1,30 +1,22 @@ import useLastReadTimeFromStorage from '@/components/chats/hooks/useLastReadMessageTimeFromStorage' import useUnreadCount from '@/components/chats/hooks/useUnreadCount' -import { cx } from '@/utils/class-names' -import { ComponentProps, useMemo } from 'react' +import { useMemo } from 'react' -export type ChatUnreadCountProps = ComponentProps<'div'> & { +export type ChatUnreadCountProps = { chatId: string + children: (data: { + unreadCount: number + isLoading: boolean + }) => React.ReactNode } export default function ChatUnreadCount({ chatId, - ...props + children, }: ChatUnreadCountProps) { const { getLastReadTime } = useLastReadTimeFromStorage(chatId) const lastReadTime = useMemo(() => getLastReadTime() ?? '', [getLastReadTime]) - const unreadCount = useUnreadCount(chatId, lastReadTime) + const { unreadCount, isLoading } = useUnreadCount(chatId, lastReadTime) - if (unreadCount <= 0) return null - - return ( -
- {unreadCount} -
- ) + return <>{children({ unreadCount, isLoading })} } diff --git a/src/components/chats/ChatRoom/ChatRoom.tsx b/src/components/chats/ChatRoom/ChatRoom.tsx index d6a817a3d..28a53d70a 100644 --- a/src/components/chats/ChatRoom/ChatRoom.tsx +++ b/src/components/chats/ChatRoom/ChatRoom.tsx @@ -2,6 +2,7 @@ import Container from '@/components/Container' import ExtensionModals from '@/components/extensions' import TextArea from '@/components/inputs/TextArea' import { getPostQuery } from '@/services/api/query' +import { ContentContainer } from '@/services/datahub/content-containers/query' import { useMessageData } from '@/stores/message' import { cx } from '@/utils/class-names' import dynamic from 'next/dynamic' @@ -24,6 +25,7 @@ export type ChatRoomProps = ComponentProps<'div'> & { hubId: string topElement?: ReactNode onlyDisplayUnapprovedMessages?: boolean + contentContainer: ContentContainer } export default function ChatRoom({ @@ -36,6 +38,7 @@ export default function ChatRoom({ hubId, topElement, onlyDisplayUnapprovedMessages, + contentContainer, ...props }: ChatRoomProps) { const replyTo = useMessageData((state) => state.replyTo) @@ -56,6 +59,7 @@ export default function ChatRoom({ scrollContainerRef={scrollContainerRef} /> & { scrollContainerRef: RefObject } @@ -78,6 +82,7 @@ function ChatInputWrapper({ hubId, customAction, scrollContainerRef, + contentContainer, }: ChatInputWrapperProps) { const clearAction = useMessageData((state) => state.clearAction) @@ -146,6 +151,7 @@ function ChatInputWrapper({ hubId={hubId} chatId={chatId} onSubmit={scrollToBottom} + containerContainer={contentContainer} /> ) diff --git a/src/components/chats/ChatRoom/MemeChatRoom.tsx b/src/components/chats/ChatRoom/MemeChatRoom.tsx new file mode 100644 index 000000000..ab981aa76 --- /dev/null +++ b/src/components/chats/ChatRoom/MemeChatRoom.tsx @@ -0,0 +1,128 @@ +import Shield from '@/assets/icons/shield.svg' +import Button from '@/components/Button' +import LinkText from '@/components/LinkText' +import Notice from '@/components/Notice' +import ChatRoom from '@/components/chats/ChatRoom' +import Modal, { ModalFunctionalityProps } from '@/components/modals/Modal' +import { env } from '@/env.mjs' +import { ContentContainer } from '@/services/datahub/content-containers/query' +import { useState } from 'react' +import PostMemeButton from './PostMemeButton' + +export default function MemeChatRoom({ + chatId, + shouldShowUnapproved, + isContest, + contentContainer, +}: { + chatId: string + shouldShowUnapproved: boolean + isContest?: { isContestEnded: boolean } + contentContainer: ContentContainer +}) { + const [isOpenRules, setIsOpenRules] = useState(false) + const isCannotPost = isContest?.isContestEnded || shouldShowUnapproved + + return ( + <> + + ) : ( +
+ + +
+ ) + } + /> + setIsOpenRules(false)} + /> + + ) +} + +function RulesModal({ + isContest, + ...props +}: ModalFunctionalityProps & { isContest: boolean }) { + return ( + +
+
    + {isContest ? ( + <> +
  • 🤣 Post memes only about memecoins
  • +
  • ⏰ Contest is open for 1 week
  • +
  • 🤑 300 USD in $PEPE prize pool
  • +
  • + 🏆 +
    + 15 winners x $20 in $PEPE: + 10 chosen by most likes / 5 by EPIC +
    +
  • +
  • +
  • 🚫 No sharing personal information
  • +
  • 🚫 No adult content
  • +
  • 🚫 No spam, no scam
  • +
  • 🚫 No violence
  • + + ) : ( + <> +
  • 🤣 Post funny memes
  • +
  • 🌟 Be polite and respect others
  • +
  • 🚫 No sharing personal information
  • +
  • 🚫 No adult content
  • +
  • 🚫 No spam, no scam
  • +
  • 🚫 No violence
  • + + )} +
+ + ⚠️ All those who break these rules will be banned and will lose all + their points. + + + Read the detailed information + + +
+
+ ) +} diff --git a/src/components/chats/ChatRoom/PostMemeButton.tsx b/src/components/chats/ChatRoom/PostMemeButton.tsx new file mode 100644 index 000000000..677f3a703 --- /dev/null +++ b/src/components/chats/ChatRoom/PostMemeButton.tsx @@ -0,0 +1,402 @@ +import Confused from '@/assets/emojis/confused.png' +import SuccessEmoji from '@/assets/emojis/success.png' +import BottomDrawer from '@/components/BottomDrawer' +import Button, { ButtonProps } from '@/components/Button' +import Card from '@/components/Card' +import Notice from '@/components/Notice' +import Meme2EarnIntroModal, { + hasOpenedMeme2EarnIntroStorage, +} from '@/components/modals/Meme2EarnIntroModal' +import Modal, { ModalFunctionalityProps } from '@/components/modals/Modal' +import EvmConnectWalletModal from '@/components/wallets/evm/EvmConnectWalletModal' +import useIsAddressBlockedInChat from '@/hooks/useIsAddressBlockedInChat' +import useLinkedAddress from '@/hooks/useLinkedProviders' +import usePostMemeThreshold from '@/hooks/usePostMemeThreshold' +import useToastError from '@/hooks/useToastError' +import SolanaButton from '@/modules/telegram/AirdropPage/solana' +import { ContentContainer } from '@/services/datahub/content-containers/query' +import { useSyncExternalTokenBalances } from '@/services/datahub/externalTokenBalances/mutation' +import { ExternalTokenChain } from '@/services/datahub/generated-query' +import { getBalanceQuery } from '@/services/datahub/leaderboard/points-balance/query' +import { getTimeLeftUntilCanPostQuery } from '@/services/datahub/posts/query' +import { useSendEvent } from '@/stores/analytics' +import { useExtensionData } from '@/stores/extension' +import { useMessageData } from '@/stores/message' +import { useMyMainAddress } from '@/stores/my-account' +import { truncateAddress } from '@/utils/account' +import { formatNumber } from '@/utils/strings' +import dayjs from 'dayjs' +import Image from 'next/image' +import { useEffect, useState } from 'react' +import { LuPlusCircle } from 'react-icons/lu' +import useTokenGatedRequirement from '../hooks/useTokenGatedRequirement' + +function countdownText(timeLeft: number) { + const timeDuration = dayjs.duration({ milliseconds: timeLeft }) + const minutes = Math.floor(timeDuration.asMinutes()) + const seconds = Math.floor(timeDuration.asSeconds()) - minutes * 60 + return `${minutes.toString().padStart(2, '0')}:${seconds + .toString() + .padStart(2, '0')}` +} +export default function PostMemeButton({ + chatId, + isContestTab, + contentContainer, +}: { + chatId: string + isContestTab: boolean + contentContainer?: ContentContainer +}) { + const { isLoading: loadingTokenGated, passRequirement } = + useTokenGatedRequirement(contentContainer) + + const sendEvent = useSendEvent() + const [isOpenIntroModal, setIsOpenIntroModal] = useState(false) + const [isOpenLinkEvm, setIsOpenLinkEvm] = useState(false) + const [isOpenTokenGatedModal, setIsOpenTokenGatedModal] = useState(false) + const openExtensionModal = useExtensionData.use.openExtensionModal() + + const myAddress = useMyMainAddress() ?? '' + const { data, isLoading } = getBalanceQuery.useQuery(myAddress) + + const { + data: timeLeftFromApi, + isLoading: loadingTimeLeft, + refetch, + } = getTimeLeftUntilCanPostQuery.useQuery(myAddress) + useEffect(() => { + const listener = () => { + if (document.visibilityState === 'visible') refetch() + } + document.addEventListener('visibilitychange', listener, false) + return () => { + document.removeEventListener('visibilitychange', listener) + } + }, [refetch]) + + const { threshold, isLoading: loadingThreshold } = + usePostMemeThreshold(chatId) + + const { identityAddress, isLoading: loadingEvmAddress } = useLinkedAddress() + const { isBlocked, isLoading: loadingIsBlocked } = useIsAddressBlockedInChat( + myAddress, + chatId + ) + + const [timeLeft, setTimeLeft] = useState(Infinity) + useEffect(() => { + if (typeof timeLeftFromApi?.timeLeft === 'number') { + setTimeLeft(Math.max(timeLeftFromApi.timeLeft, 0)) + const interval = setInterval(() => { + setTimeLeft((prev) => { + const next = Math.max(prev - 1000, 0) + if (next === 0) clearInterval(interval) + return next + }) + }, 1000) + return () => clearInterval(interval) + } + }, [timeLeftFromApi]) + + const isMoreThanThreshold = + !isLoading && + !loadingThreshold && + data && + data >= parseInt(threshold ?? '0') + const isTimeConstrained = + !loadingTimeLeft && timeLeft !== Infinity && (timeLeft ?? 0) > 0 + + if (isBlocked) { + return ( + + ) + } + + return ( + <> + + { + sendEvent('meme2earn_intro_modal_closed') + setIsOpenIntroModal(false) + }} + /> + setIsOpenLinkEvm(false)} + /> + {contentContainer && ( + setIsOpenTokenGatedModal(false)} + openEvmLinkModal={() => setIsOpenLinkEvm(true)} + /> + )} + + ) +} + +function TokenGatedModal({ + contentContainer, + openEvmLinkModal, + ...props +}: ModalFunctionalityProps & { + contentContainer: ContentContainer + openEvmLinkModal: () => void +}) { + const { + amountRequired, + requiredToken, + hasToLinkWallet, + currentToken, + passRequirement, + remainingNeeded, + } = useTokenGatedRequirement(contentContainer) + const [isOpenSuccessModal, setIsOpenSuccessModal] = useState(false) + const [isAfterSync, setIsAfterSync] = useState(false) + + const sendEvent = useSendEvent() + + const [isWaitingSyncDone, setIsWaitingSyncDone] = useState(false) + useEffect(() => { + if (props.isOpen) { + setIsWaitingSyncDone(false) + setIsAfterSync(false) + } + }, [props.isOpen]) + + const { + mutate: syncExternalTokenBalances, + error, + isLoading, + } = useSyncExternalTokenBalances({ + onMutate: () => setIsWaitingSyncDone(true), + onSuccessSync: () => { + setIsWaitingSyncDone(false) + setIsAfterSync(true) + if (passRequirement) { + setIsOpenSuccessModal(true) + } + }, + onError: () => { + setIsWaitingSyncDone(false) + }, + onErrorSync: () => { + setIsWaitingSyncDone(false) + }, + }) + useToastError(error, 'Failed to check balance') + + const [isOpenEvmConnect, setIsOpenEvmConnect] = useState(false) + + const externalToken = contentContainer.externalToken + + return ( + <> + + {hasToLinkWallet ? ( +
+ + {hasToLinkWallet === 'Ethereum' ? ( + + ) : ( + { + sendEvent('token_gated_connect_solana') + props.closeModal() + }} + > + Connect Solana + + )} +
+ ) : ( +
+
+ + + {formatNumber(amountRequired)} {requiredToken} + + + Required tokens amount + + + {currentToken && ( + + + {formatNumber(currentToken.parsedAmount)} {requiredToken} + + + Your balance ( + {truncateAddress(currentToken.blockchainAddress)}) + + + )} +
+ {isAfterSync && !passRequirement && ( + + You need {formatNumber(remainingNeeded)} more {requiredToken} to + gain access to this channel + + )} +
+ + {externalToken && ( + + Buy {currentToken ? 'more ' : ''} + {requiredToken} + + )} +
+
+ )} +
+ setIsOpenEvmConnect(false)} + /> + { + setIsOpenSuccessModal(false) + props.closeModal() + }} + > +
+ + +
+
+ + ) +} + +const linkGenerator: Record string> = { + ETHEREUM: (address) => + `https://app.uniswap.org/swap?chain=mainnet&outputCurrency=${address}`, + SOLANA: (address) => `https://raydium.io/swap/?outputMint=${address}`, +} +function BuyTokenButton({ + address, + chain, + ...props +}: { + address: string + chain: ExternalTokenChain +} & ButtonProps) { + return ( + - - )} - - {isDifferentRecipient && recipient && ( - -
- Notification recipient - } - triggerOnHover - panelSize='sm' - yOffset={6} - placement='top' - > -

You are not currently logged in to this account.

-
-
- + + + ) : ( + + )} + {(scrollToMessage || redirectTo) && ( +
- +
)} - - + + {isDifferentRecipient && recipient && ( + +
+ Notification recipient + } + triggerOnHover + panelSize='sm' + yOffset={6} + placement='top' + > +

You are not currently logged in to this account.

+
+
+ + +
+ )} + ) } diff --git a/src/components/modals/PostMemeThresholdModal.tsx b/src/components/modals/PostMemeThresholdModal.tsx index 3794e2e3c..f8799bf35 100644 --- a/src/components/modals/PostMemeThresholdModal.tsx +++ b/src/components/modals/PostMemeThresholdModal.tsx @@ -18,10 +18,7 @@ export default function PostMemeThresholdModal({ }: ModalFunctionalityProps & { chatId: string }) { const sendEvent = useSendEvent() const { threshold } = usePostMemeThreshold(chatId) - const thresholdPoints = formatNumber( - threshold?.thresholdPointsAmount ?? '0', - { shorten: true } - ) + const thresholdPoints = formatNumber(threshold ?? '0', { shorten: true }) const isContest = chatId === env.NEXT_PUBLIC_CONTEST_CHAT_ID diff --git a/src/components/profile/UpsertProfileModal.tsx b/src/components/profile/UpsertProfileModal.tsx index 7cc871c3d..104f73c8f 100644 --- a/src/components/profile/UpsertProfileModal.tsx +++ b/src/components/profile/UpsertProfileModal.tsx @@ -11,7 +11,7 @@ export type SubsocialProfileModalProps = ModalFunctionalityProps & cancelButtonText?: string } -export default function SubsocialProfileModal({ +export default function UpsertProfileModal({ title, cancelButtonText, ...props diff --git a/src/modules/telegram/TasksPage/ClaimTaskTokensModal.tsx b/src/components/tasks/ClaimTaskModal.tsx similarity index 56% rename from src/modules/telegram/TasksPage/ClaimTaskTokensModal.tsx rename to src/components/tasks/ClaimTaskModal.tsx index b0a6333cb..36aa0b524 100644 --- a/src/modules/telegram/TasksPage/ClaimTaskTokensModal.tsx +++ b/src/components/tasks/ClaimTaskModal.tsx @@ -1,12 +1,9 @@ import Diamond from '@/assets/emojis/diamond.png' -import ReferralTask from '@/assets/graphics/tasks/referral-task.png' -import Telegram from '@/assets/graphics/tasks/telegram.png' -import TwitterX from '@/assets/graphics/tasks/twitter-x.png' import VerticalStepsDots from '@/assets/icons/vertical-steps-dots.svg' import WarningIcon from '@/assets/icons/warning.png' import Button from '@/components/Button' -import LinkText from '@/components/LinkText' import useToastError from '@/hooks/useToastError' +import { GamificationTaskName } from '@/services/datahub/generated-query' import { getBalanceQuery } from '@/services/datahub/leaderboard/points-balance/query' import { getUserReferralStatsQuery } from '@/services/datahub/leaderboard/query' import { GamificationTask } from '@/services/datahub/tasks' @@ -18,168 +15,31 @@ import { } from '@/services/datahub/tasks/query' import { useMyMainAddress } from '@/stores/my-account' import { cx } from '@/utils/class-names' -import { LocalStorage } from '@/utils/storage' import { formatNumber } from '@/utils/strings' import { Transition } from '@headlessui/react' import { useQueryClient } from '@tanstack/react-query' -import Image, { StaticImageData } from 'next/image' +import Image from 'next/image' import { useEffect, useState } from 'react' import { createPortal } from 'react-dom' -import { FiArrowUpRight } from 'react-icons/fi' import { HiXMark } from 'react-icons/hi2' -import SkeletonFallback from '../../../components/SkeletonFallback' import TasksRewardsModal from './TasksRewardsModal' +import { modalConfigByVariant } from './config' -export type ClaimModalVariant = - | 'JOIN_TELEGRAM_CHANNEL_EpicAppNet' - | 'JOIN_TWITTER_EpicAppNet' - | 'INVITE_REFERRALS_5_referrals_v1' - | 'INVITE_REFERRALS_10_referrals_v1' - | 'INVITE_REFERRALS_15_referrals_v1' - | null - -export const claimTaskErrorStore = new LocalStorage(() => 'claim-tasks-error') - -const getReferralTasksObj = (aimRefCount: number) => ({ - image: ReferralTask, - tag: `INVITE_REFERRALS_${aimRefCount}_referrals_v1`, - title: `Invite ${aimRefCount} Friends`, - event: `tasks_referral_${aimRefCount}_open`, - aim: aimRefCount, - steps: [ - - - Invite {aimRefCount} friends to join - {' '} - - , - - Click the button below to earn your reward. - , - ], -}) - -type ReferralTaskModalProps = { - aimRefCount: number -} - -const ReferralTaskModalStepPart = ({ aimRefCount }: ReferralTaskModalProps) => { - const myAddress = useMyMainAddress() - const { data, isLoading } = getUserReferralStatsQuery.useQuery( - myAddress || '' - ) - - const { refCount } = data || {} - - return ( - - ( - - {refCount && refCount > aimRefCount ? aimRefCount : refCount} - - /{aimRefCount}) - - ) -} - -type ModalConfig = { - image: StaticImageData - title: React.ReactNode - stepsWithOrangeText?: number[] - steps: React.ReactNode[] - event: string - tag: string - aim?: number -} - -export const modalConfigByVariant: Record< - Exclude, - ModalConfig -> = { - JOIN_TELEGRAM_CHANNEL_EpicAppNet: { - image: Telegram, - tag: 'JOIN_TELEGRAM_CHANNEL_EpicAppNet', - title: 'Join Our Telegram Channel', - event: 'tasks_telegram_open', - steps: [ -
- - Join the channel: - - - @EpicAppNet - - -
, - - Click the button below to verify your task - , - ], - }, - JOIN_TWITTER_EpicAppNet: { - image: TwitterX, - tag: 'JOIN_TWITTER_EpicAppNet', - title: 'Join Our Twitter', - event: 'tasks_x_open', - stepsWithOrangeText: [2], - steps: [ -
- - Follow us on X - - - @EpicAppNet - -
, - - Click the button below to earn your reward. - , - - If you're not subscribed, a penalty of 1M points will be deducted. - , - ], - }, - INVITE_REFERRALS_5_referrals_v1: getReferralTasksObj(5), - INVITE_REFERRALS_10_referrals_v1: getReferralTasksObj(10), - INVITE_REFERRALS_15_referrals_v1: getReferralTasksObj(15), -} - -type ClaimTasksTokensModalProps = { - modalVariant: ClaimModalVariant +type ClaimTaskModalProps = { close: () => void - data: GamificationTask[] - disableButton?: boolean + isOpen: boolean + task: GamificationTask } -const ClaimTasksTokensModal = ({ - modalVariant, - close, - data, - disableButton, -}: ClaimTasksTokensModalProps) => { +const ClaimTaskModal = ({ isOpen, task, close }: ClaimTaskModalProps) => { const [isOpenAnimation, setIsOpenAnimation] = useState(false) const client = useQueryClient() const [loading, setLoading] = useState(false) const myAddress = useMyMainAddress() + const { data: refStats } = getUserReferralStatsQuery.useQuery(myAddress || '') + const { refCount } = refStats || {} + const { data: claimTaskTokensError } = getGamificationTasksErrorQuery.useQuery('error') const closeModal = () => { @@ -187,19 +47,12 @@ const ClaimTasksTokensModal = ({ close() } - const isOpen = !!modalVariant - - const variant = modalVariant || 'JOIN_TELEGRAM_CHANNEL_EpicAppNet' - const { image: taskImage, steps, - tag, stepsWithOrangeText, title, - } = modalConfigByVariant[variant] - - const task = data?.find((task) => task.tag === tag) + } = modalConfigByVariant[task.name](task) const reward = formatNumber(parseInt(task?.rewardPoints ?? '0')) @@ -214,7 +67,10 @@ const ClaimTasksTokensModal = ({ if (claimTaskTokensError === 'None') { setIsOpenAnimation(true) - getGamificationTasksQuery.invalidate(client, myAddress) + getGamificationTasksQuery.invalidate(client, { + address: myAddress ?? '', + rootSpaceId: '', + }) getBalanceQuery.invalidate(client, myAddress) } }, [claimTaskTokensError, client, myAddress]) @@ -237,6 +93,17 @@ const ClaimTasksTokensModal = ({ useToastError(error, 'Failed to claim task tokens') + let disableButton = false + if ( + task.name === GamificationTaskName.InviteReferrals && + task.metadata?.referralsNumberToAchieve + ) { + disableButton = + refCount !== undefined + ? refCount < task.metadata.referralsNumberToAchieve + : false + } + return createPortal( <> Check the task @@ -342,4 +209,4 @@ const ClaimTasksTokensModal = ({ ) } -export default ClaimTasksTokensModal +export default ClaimTaskModal diff --git a/src/modules/telegram/TasksPage/TasksRewardsModal.tsx b/src/components/tasks/TasksRewardsModal.tsx similarity index 100% rename from src/modules/telegram/TasksPage/TasksRewardsModal.tsx rename to src/components/tasks/TasksRewardsModal.tsx diff --git a/src/components/tasks/config.tsx b/src/components/tasks/config.tsx new file mode 100644 index 000000000..df9b3a71d --- /dev/null +++ b/src/components/tasks/config.tsx @@ -0,0 +1,136 @@ +import ReferralTask from '@/assets/graphics/tasks/referral-task.png' +import Telegram from '@/assets/graphics/tasks/telegram.png' +import TwitterX from '@/assets/graphics/tasks/twitter-x.png' +import LinkText from '@/components/LinkText' +import SkeletonFallback from '@/components/SkeletonFallback' +import { getUserReferralStatsQuery } from '@/services/datahub/leaderboard/query' +import { GamificationTask } from '@/services/datahub/tasks' +import { useMyMainAddress } from '@/stores/my-account' +import { LocalStorage } from '@/utils/storage' +import { ImageProps } from 'next/image' +import { FiArrowUpRight } from 'react-icons/fi' + +export type ClaimModalVariant = + | 'JOIN_TELEGRAM_CHANNEL' + | 'JOIN_TWITTER' + | 'INVITE_REFERRALS' + | null + +export const claimTaskErrorStore = new LocalStorage(() => 'claim-tasks-error') + +type ModalConfig = { + image: ImageProps['src'] + title: React.ReactNode + stepsWithOrangeText?: number[] + steps: React.ReactNode[] + event: string +} + +type ReferralTaskModalProps = { + aimRefCount: number +} +const ReferralTaskModalStepPart = ({ aimRefCount }: ReferralTaskModalProps) => { + const myAddress = useMyMainAddress() + const { data, isLoading } = getUserReferralStatsQuery.useQuery( + myAddress || '' + ) + + const { refCount } = data || {} + + return ( + + ( + + {refCount && refCount > aimRefCount ? aimRefCount : refCount} + + /{aimRefCount}) + + ) +} + +export const modalConfigByVariant: Record< + Exclude, + (task: GamificationTask) => ModalConfig +> = { + JOIN_TELEGRAM_CHANNEL: (task) => ({ + image: Telegram, + title: 'Join Our Telegram Channel', + event: 'tasks_telegram_open', + steps: [ +
+ + Join the channel: + + + @{task.metadata?.telegramChannelToJoin} + + +
, + + Click the button below to verify your task + , + ], + }), + JOIN_TWITTER: (task) => ({ + image: TwitterX, + title: 'Join Our Twitter', + event: 'tasks_x_open', + stepsWithOrangeText: [2], + steps: [ +
+ + Follow us on X + + + @{task.metadata?.twitterChannelToJoin}{' '} + + +
, + + Click the button below to earn your reward. + , + + If you're not subscribed, a penalty of 1M points will be deducted. + , + ], + }), + INVITE_REFERRALS: (task: GamificationTask) => { + const aimRefCount = task.metadata?.referralsNumberToAchieve || 0 + return { + image: ReferralTask, + tag: `INVITE_REFERRALS_${aimRefCount}_referrals_v1`, + title: `Invite ${aimRefCount} Friends`, + event: `tasks_referral_${aimRefCount}_open`, + aim: aimRefCount, + steps: [ + + + Invite {aimRefCount} friends to join + {' '} + + , + + Click the button below to earn your reward. + , + ], + } + }, +} diff --git a/src/components/wallets/UnlinkWalletModal.tsx b/src/components/wallets/UnlinkWalletModal.tsx new file mode 100644 index 000000000..f4da4deb8 --- /dev/null +++ b/src/components/wallets/UnlinkWalletModal.tsx @@ -0,0 +1,85 @@ +import useLinkedAddress from '@/hooks/useLinkedProviders' +import { + reloadEveryIntervalUntilLinkedIdentityFound, + useUpdateExternalProvider, +} from '@/services/datahub/identity/mutation' +import { useMyMainAddress } from '@/stores/my-account' +import { IdentityProvider } from '@subsocial/data-hub-sdk' +import { useEffect } from 'react' +import BottomDrawer from '../BottomDrawer' +import Button from '../Button' +import { ModalFunctionalityProps } from '../modals/Modal' + +type ChainType = 'evm' | 'solana' +const labels: Record = { + evm: 'Ethereum', + solana: 'Solana', +} + +export default function UnlinkWalletModal({ + chain, + ...props +}: ModalFunctionalityProps & { chain: 'evm' | 'solana' }) { + const myAddress = useMyMainAddress() + + const identityProvider = + chain === 'evm' ? IdentityProvider.EVM : IdentityProvider.SOLANA + + const { identityAddress, identityAddressProviderId, refetch } = + useLinkedAddress(myAddress || '', { enabled: true }, identityProvider) + + const { mutate, isLoading, isSuccess, reset } = useUpdateExternalProvider({ + onSuccess: (_, { externalProvider }) => { + reloadEveryIntervalUntilLinkedIdentityFound((identity) => { + const found = identity?.externalProviders.find( + (p) => + // @ts-expect-error different provider for IdentityProvider, one from generated type, one from sdk + p.provider === externalProvider.provider && + p.externalId === externalProvider.id + ) + if (!found) { + refetch() + props.closeModal() + } + return !found + }) + }, + }) + + useEffect(() => { + reset() + }, [props.isOpen, reset]) + + return ( + +
+ + +
+
+ ) +} diff --git a/src/components/wallets/UseMobileModal.tsx b/src/components/wallets/UseMobileModal.tsx new file mode 100644 index 000000000..829b46216 --- /dev/null +++ b/src/components/wallets/UseMobileModal.tsx @@ -0,0 +1,31 @@ +import EvmWallets from '@/assets/graphics/eth-logo.png' +import PhantomWallet from '@/assets/graphics/phantom-wallet.png' +import Image from 'next/image' +import Button from '../Button' +import Modal, { ModalFunctionalityProps } from '../modals/Modal' + +const UseMobileModal = ({ + chain, + ...props +}: ModalFunctionalityProps & { chain: 'evm' | 'solana' }) => { + const imagePath = chain === 'evm' ? EvmWallets : PhantomWallet + + return ( + +
+ + +
+
+ ) +} + +export default UseMobileModal diff --git a/src/components/wallets/evm/EvmConnectWalletModal.tsx b/src/components/wallets/evm/EvmConnectWalletModal.tsx new file mode 100644 index 000000000..ab45bf472 --- /dev/null +++ b/src/components/wallets/evm/EvmConnectWalletModal.tsx @@ -0,0 +1,41 @@ +import { CommonEVMLoginContent } from '@/components/auth/common/evm/CommonEvmModalContent' +import BottomDrawer from '@/components/BottomDrawer' +import { ModalFunctionalityProps } from '@/components/modals/Modal' +import useLinkedAddress from '@/hooks/useLinkedProviders' +import { useSendEvent } from '@/stores/analytics' +import { useMyMainAddress } from '@/stores/my-account' +import { IdentityProvider } from '@subsocial/data-hub-sdk' +import { useState } from 'react' + +export default function EvmConnectWalletModal(props: ModalFunctionalityProps) { + const [isError, setIsError] = useState(false) + const sendEvent = useSendEvent() + const myAddress = useMyMainAddress() + const { refetch } = useLinkedAddress( + myAddress || '', + { enabled: true }, + IdentityProvider.EVM + ) + + return ( + + { + setIsError(true) + }} + onSuccess={() => { + sendEvent('finish_add_provider_evm_standalone') + refetch() + props.closeModal() + }} + /> + + ) +} diff --git a/src/env.mjs b/src/env.mjs index 59e313876..7b120b2a7 100644 --- a/src/env.mjs +++ b/src/env.mjs @@ -32,6 +32,7 @@ export const env = createEnv({ GOOGLE_CLIENT_SECRET: z.string().default(''), FRAMES_SECRET: z.string().default(''), NEYNAR_API_KEY: z.string().default(''), + DAPP_SECRET_KEY: z.string().default(''), }, client: { NEXT_PUBLIC_BASE_URL: z.string().default(''), @@ -81,6 +82,8 @@ export const env = createEnv({ NEXT_PUBLIC_DATAHUB_QUERY_URL: z.string().default(''), NEXT_PUBLIC_DATAHUB_SUBSCRIPTION_URL: z.string().default(''), NEXT_PUBLIC_NEYNAR_CLIENT_ID: z.string().default(''), + + NEXT_PUBLIC_DAPP_PUBLIC_KEY: z.string().default(''), }, experimental__runtimeEnv: { NEXT_PUBLIC_BASE_URL: process.env.NEXT_PUBLIC_BASE_URL, @@ -130,5 +133,6 @@ export const env = createEnv({ process.env.NEXT_PUBLIC_DATAHUB_SUBSCRIPTION_URL, NEXT_PUBLIC_NEYNAR_CLIENT_ID: process.env.NEXT_PUBLIC_NEYNAR_CLIENT_ID, NEXT_PUBLIC_PROPOSALS_HUB: process.env.NEXT_PUBLIC_PROPOSALS_HUB, + NEXT_PUBLIC_DAPP_PUBLIC_KEY: process.env.NEXT_PUBLIC_DAPP_PUBLIC_KEY, }, }) diff --git a/src/hooks/useLinkedEvmAddress.ts b/src/hooks/useLinkedProviders.ts similarity index 89% rename from src/hooks/useLinkedEvmAddress.ts rename to src/hooks/useLinkedProviders.ts index da6ee3d24..ac79cf2d3 100644 --- a/src/hooks/useLinkedEvmAddress.ts +++ b/src/hooks/useLinkedProviders.ts @@ -5,8 +5,11 @@ import { import { useMyGrillAddress } from '@/stores/my-account' import { IdentityProvider } from '@subsocial/data-hub-sdk' +// If you want to get the current user's linked providers, don't pass any address, so it queries data based on user's grill address, +// which is updated by the identity subscription. +// Send address as param only if you need to get the linked providers of another user. export const useLinkedProviders = ( - address: string, + address?: string, config = { enabled: true } ) => { const myGrillAddress = useMyGrillAddress() diff --git a/src/hooks/usePostMemeThreshold.ts b/src/hooks/usePostMemeThreshold.ts index 81a132181..bc757f775 100644 --- a/src/hooks/usePostMemeThreshold.ts +++ b/src/hooks/usePostMemeThreshold.ts @@ -1,18 +1,18 @@ -import { getTokenomicsMetadataQuery } from '@/services/datahub/content-staking/query' +import { getContentContainersQuery } from '@/services/datahub/content-containers/query' export default function usePostMemeThreshold(chatId: string) { - const { data: tokenomics, isLoading } = - getTokenomicsMetadataQuery.useQuery(null) - - const threshold = tokenomics?.thresholdsAndRules?.find( - (t) => t.contextPostId === chatId - ) - const thresholdForAllChats = tokenomics?.thresholdsAndRules?.find( - (t) => t.contextPostId === '*' + const { data, isLoading } = getContentContainersQuery.useQuery( + { + filter: { hidden: false, rootPostIds: [chatId] }, + }, + { enabled: !!chatId } ) + const container = data?.data[0] + + const threshold = container?.accessThresholdPointsAmount return { - threshold: threshold || thresholdForAllChats, + threshold, isLoading, } } diff --git a/src/hooks/useSendMessageWithLoginFlow.ts b/src/hooks/useSendMessageWithLoginFlow.ts index f05886de5..42544972e 100644 --- a/src/hooks/useSendMessageWithLoginFlow.ts +++ b/src/hooks/useSendMessageWithLoginFlow.ts @@ -36,7 +36,7 @@ export default function useSendMessageWithLoginFlow( socialAction: SocialAction.CreateComment, }) if (!isSufficient) { - setOpenMessageModal('not-enough-balance', params.chatId) + setOpenMessageModal('not-enough-balance', { chatId: params.chatId }) return null } diff --git a/src/modules/chat/ChatPage/ChatPage.tsx b/src/modules/chat/ChatPage/ChatPage.tsx index e29706b77..9ce31e9ee 100644 --- a/src/modules/chat/ChatPage/ChatPage.tsx +++ b/src/modules/chat/ChatPage/ChatPage.tsx @@ -11,6 +11,7 @@ import usePrevious from '@/hooks/usePrevious' import useWrapInRef from '@/hooks/useWrapInRef' import { useConfigContext } from '@/providers/config/ConfigProvider' import { getPostQuery } from '@/services/api/query' +import { ContentContainer } from '@/services/datahub/content-containers/query' import { useModerationActions } from '@/services/datahub/moderation/mutation' import { getPostMetadataQuery } from '@/services/datahub/posts/query' import { getSpaceQuery } from '@/services/datahub/spaces/query' @@ -194,6 +195,8 @@ export default function ChatPage({ }} > ( - 'memes-tab', - 'all' - ) - if ( - !tabStates.includes(selectedTab) || - (selectedTab === 'contest' && getIsContestEnded()) - ) { - selectedTab = 'all' - } else if (selectedTab === 'not-approved-contest' && getIsContestEnded()) { - selectedTab = 'not-approved' - } - if ( - !isAdmin && - (selectedTab === 'not-approved' || selectedTab === 'not-approved-contest') - ) { - setSelectedTab('all') - } - - useLayoutEffect(() => { - if (query.tab === 'contest') { - setSelectedTab('contest') - Router.replace('?', undefined, { shallow: true }) - } else if (query.tab === 'all') { - setSelectedTab('all') - Router.replace('?', undefined, { shallow: true }) - } - }, [query.tab, setSelectedTab]) - - const [isOpenRules, setIsOpenRules] = useState(false) - const { data: serverTime } = getServerTimeQuery.useQuery(null) - const isContestEnded = - selectedTab === 'contest' && - serverTime && - env.NEXT_PUBLIC_CONTEST_END_TIME < serverTime - const isCannotPost = - isContestEnded || - selectedTab === 'not-approved' || - selectedTab === 'not-approved-contest' - - const chatId = chatIdsBasedOnSelectedTab[selectedTab] - const isContest = chatId === env.NEXT_PUBLIC_CONTEST_CHAT_ID - const shouldShowUnapproved = - selectedTab === 'not-approved' || selectedTab === 'not-approved-contest' - - return ( - <> - - - - ) : ( -
- - -
- ) - } - /> - setIsOpenRules(false)} - /> - - ) -} - -function countdownText(timeLeft: number) { - const timeDuration = dayjs.duration({ milliseconds: timeLeft }) - const minutes = Math.floor(timeDuration.asMinutes()) - const seconds = Math.floor(timeDuration.asSeconds()) - minutes * 60 - return `${minutes.toString().padStart(2, '0')}:${seconds - .toString() - .padStart(2, '0')}` -} -function PostMemeButton({ - chatId, - isContestTab, -}: { - chatId: string - isContestTab: boolean -}) { - const sendEvent = useSendEvent() - const [isOpenIntroModal, setIsOpenIntroModal] = useState(false) - const [isOpenLinkEvm, setIsOpenLinkEvm] = useState(false) - const openExtensionModal = useExtensionData.use.openExtensionModal() - - const myAddress = useMyMainAddress() ?? '' - const { data, isLoading } = getBalanceQuery.useQuery(myAddress) - - const { - data: timeLeftFromApi, - isLoading: loadingTimeLeft, - refetch, - } = getTimeLeftUntilCanPostQuery.useQuery(myAddress) - useEffect(() => { - const listener = () => { - if (document.visibilityState === 'visible') refetch() - } - document.addEventListener('visibilitychange', listener, false) - return () => { - document.removeEventListener('visibilitychange', listener) - } - }, [refetch]) - - const { threshold, isLoading: loadingThreshold } = - usePostMemeThreshold(chatId) - - const { identityAddress: evmAddress, isLoading: loadingEvmAddress } = - useLinkedAddress() - const { isBlocked, isLoading: loadingIsBlocked } = useIsAddressBlockedInChat( - myAddress, - chatId - ) - - const [timeLeft, setTimeLeft] = useState(Infinity) - useEffect(() => { - if (typeof timeLeftFromApi?.timeLeft === 'number') { - setTimeLeft(Math.max(timeLeftFromApi.timeLeft, 0)) - const interval = setInterval(() => { - setTimeLeft((prev) => { - const next = Math.max(prev - 1000, 0) - if (next === 0) clearInterval(interval) - return next - }) - }, 1000) - return () => clearInterval(interval) - } - }, [timeLeftFromApi]) - - const isMoreThanThreshold = - !isLoading && - !loadingThreshold && - data && - data >= parseInt(threshold?.thresholdPointsAmount ?? '0') - const isTimeConstrained = - !loadingTimeLeft && timeLeft !== Infinity && (timeLeft ?? 0) > 0 - - if (isBlocked) { - return ( - - ) - } - - return ( - <> - - { - sendEvent('meme2earn_intro_modal_closed') - setIsOpenIntroModal(false) - }} - /> - setIsOpenLinkEvm(false)} - /> - - ) -} - -function RulesModal({ - isContest, - ...props -}: ModalFunctionalityProps & { isContest: boolean }) { - return ( - -
-
    - {isContest ? ( - <> -
  • 🤣 Post memes only about memecoins
  • -
  • ⏰ Contest is open for 1 week
  • -
  • 🤑 300 USD in $PEPE prize pool
  • -
  • - 🏆 -
    - 15 winners x $20 in $PEPE: - 10 chosen by most likes / 5 by EPIC -
    -
  • -
  • -
  • 🚫 No sharing personal information
  • -
  • 🚫 No adult content
  • -
  • 🚫 No spam, no scam
  • -
  • 🚫 No violence
  • - - ) : ( - <> -
  • 🤣 Post funny memes
  • -
  • 🌟 Be polite and respect others
  • -
  • 🚫 No sharing personal information
  • -
  • 🚫 No adult content
  • -
  • 🚫 No spam, no scam
  • -
  • 🚫 No violence
  • - - )} -
- - ⚠️ All those who break these rules will be banned and will lose all - their points. - - - Read the detailed information - - -
-
- ) -} diff --git a/src/modules/chat/HomePage/ChatTabs.tsx b/src/modules/chat/HomePage/ChatTabs.tsx deleted file mode 100644 index 891b1bda6..000000000 --- a/src/modules/chat/HomePage/ChatTabs.tsx +++ /dev/null @@ -1,170 +0,0 @@ -import Button from '@/components/Button' -import usePaginatedMessageIds from '@/components/chats/hooks/usePaginatedMessageIds' -import { Skeleton } from '@/components/SkeletonFallback' -import { env } from '@/env.mjs' -import useIsModerationAdmin from '@/hooks/useIsModerationAdmin' -import { getServerTimeQuery } from '@/services/api/query' -import { cx } from '@/utils/class-names' -import { getIsContestEnded } from '@/utils/contest' -import dayjs from 'dayjs' -import { ReactNode } from 'react' - -export const tabStates = [ - 'all', - 'contest', - 'not-approved', - 'not-approved-contest', -] as const - -export type TabState = (typeof tabStates)[number] -export function TabButton({ - selectedTab, - setSelectedTab, - tab, - children, - className, - size = 'md', - highlightSelected, -}: { - tab: TabState - selectedTab: TabState - setSelectedTab: (tab: TabState) => void - children: ReactNode - className?: string - size?: 'md' | 'sm' - highlightSelected?: boolean -}) { - const isSelected = selectedTab === tab - return ( - - ) -} - -export function Tabs({ - setSelectedTab, - selectedTab, - className, -}: { - selectedTab: TabState - setSelectedTab: (tab: TabState) => void - className?: string -}) { - const isAdmin = useIsModerationAdmin() - const { data: serverTime, isLoading } = getServerTimeQuery.useQuery(null) - const daysLeft = dayjs(env.NEXT_PUBLIC_CONTEST_END_TIME).diff( - dayjs(serverTime ?? undefined), - 'days' - ) - const { totalDataCount } = usePaginatedMessageIds({ - hubId: env.NEXT_PUBLIC_MAIN_SPACE_ID, - chatId: env.NEXT_PUBLIC_MAIN_CHAT_ID, - onlyDisplayUnapprovedMessages: true, - }) - - const tabSize: 'sm' | 'md' = isAdmin ? 'sm' : 'md' - if (!isAdmin && getIsContestEnded()) return null - - return ( -
- {isAdmin && ( - <> - - Pending - - {' '} - {totalDataCount ? ` (${totalDataCount})` : ''} - - - {!getIsContestEnded() && ( - - Pending Contest - - )} - - )} - - {isAdmin ? 'Approved' : 'All memes'} - - {!getIsContestEnded() && ( - - {!isAdmin ? ( - <> - {env.NEXT_PUBLIC_CONTEST_NAME} - - {(() => { - if (isLoading || !serverTime) - return - if (env.NEXT_PUBLIC_CONTEST_END_TIME < serverTime) - return Contest ended - if (daysLeft === 0) { - const hoursLeft = dayjs( - env.NEXT_PUBLIC_CONTEST_END_TIME - ).diff(dayjs(serverTime ?? undefined), 'hours') - if (hoursLeft < 1) { - return Less than an hour left - } - return {hoursLeft} hours left - } - return ( - - {daysLeft} day{daysLeft > 1 ? 's' : ''} left - - ) - })()} - - - ) : ( - Contest - )} - - )} -
- ) -} diff --git a/src/modules/chat/HomePage/MissingRewards.tsx b/src/modules/chat/HomePage/MissingRewards.tsx index 587035380..d79d66a23 100644 --- a/src/modules/chat/HomePage/MissingRewards.tsx +++ b/src/modules/chat/HomePage/MissingRewards.tsx @@ -1,5 +1,5 @@ import Button from '@/components/Button' -import useLinkedAddress from '@/hooks/useLinkedEvmAddress' +import useLinkedAddress from '@/hooks/useLinkedProviders' import { getBalanceQuery } from '@/services/datahub/leaderboard/points-balance/query' import { useMyMainAddress } from '@/stores/my-account' import { cx } from '@/utils/class-names' diff --git a/src/modules/moderator/ModeratorHeader.tsx b/src/modules/moderator/ModeratorHeader.tsx index 30a1b0654..9616c3c05 100644 --- a/src/modules/moderator/ModeratorHeader.tsx +++ b/src/modules/moderator/ModeratorHeader.tsx @@ -3,7 +3,9 @@ import Button from '@/components/Button' import SelectInput, { ListItem } from '@/components/inputs/SelectInput' import Logo from '@/components/Logo' import Name from '@/components/Name' +import { env } from '@/env.mjs' import { useTelegramLogin } from '@/providers/config/TelegramLoginProvider' +import { getContentContainersQuery } from '@/services/datahub/content-containers/query' import { getAllModeratorsQuery } from '@/services/datahub/moderation/query' import { useMyAccount, useMyMainAddress } from '@/stores/my-account' import { cx } from '@/utils/class-names' @@ -27,6 +29,7 @@ export default function ModeratorHeader() { Moderator + {myAddress ? (
@@ -56,6 +59,46 @@ export default function ModeratorHeader() { ) } +function ChannelFilter() { + const { data } = getContentContainersQuery.useQuery({ + filter: { hidden: false }, + }) + const searchParams = useSearchParams() + const router = useRouter() + + const options: ListItem[] = + data?.data.map((item) => ({ + id: item.rootPost.id, + label: item.metadata.title ?? '', + })) ?? [] + + const selected = + options.find( + (item) => + item.id === searchParams?.get('channel') || env.NEXT_PUBLIC_MAIN_CHAT_ID + ) || options[0] + + return ( + { + const params = new URLSearchParams(searchParams?.toString()) + params.set('channel', selected.id) + router.push(`?${params.toString()}`, undefined, { shallow: true }) + }} + buttonClassName={cx('py-1.5 pl-3 w-44 h-10')} + optionClassName='p-1.5' + renderItem={(item) => ( +
+ {isValidElement(item.icon) ? item.icon : null} + {item.customLabel ?? item.label} +
+ )} + /> + ) +} + function ModeratorFilter() { const { data: moderators } = getAllModeratorsQuery.useQuery(null) const options: ListItem[] = [ @@ -96,10 +139,12 @@ function ModeratorFilter() { - router.push(`?moderator=${selected.id}`, undefined, { shallow: true }) - } - buttonClassName={cx('py-1.5 pl-3 w-44')} + setSelected={(selected) => { + const params = new URLSearchParams(searchParams?.toString()) + params.set('moderator', selected.id) + router.push(`?${params.toString()}`, undefined, { shallow: true }) + }} + buttonClassName={cx('py-1.5 pl-3 w-44 h-10')} optionClassName='p-1.5' renderItem={(item) => (
diff --git a/src/modules/moderator/index.tsx b/src/modules/moderator/index.tsx index 7b2a7939d..e1f53868a 100644 --- a/src/modules/moderator/index.tsx +++ b/src/modules/moderator/index.tsx @@ -19,6 +19,7 @@ const ModeratorPage = () => { const Content = () => { const searchParams = useSearchParams() const moderator = searchParams?.get('moderator') + const channel = searchParams?.get('channel') return (
@@ -26,13 +27,13 @@ const Content = () => { {!moderator ? ( ) : ( )}
diff --git a/src/modules/points/PointsWidget.tsx b/src/modules/points/PointsWidget.tsx index 260bffec8..f7d8c4719 100644 --- a/src/modules/points/PointsWidget.tsx +++ b/src/modules/points/PointsWidget.tsx @@ -10,7 +10,7 @@ import Card from '@/components/Card' import LinkText from '@/components/LinkText' import LinkAddressModal from '@/components/modals/LinkEvmAddressModal' import RewardPerDayModal from '@/components/modals/RewardPerDayModal' -import SubsocialProfileModal from '@/components/profile/UpsertProfileModal' +import UpsertProfileModal from '@/components/profile/UpsertProfileModal' import useIsMounted from '@/hooks/useIsMounted' import { useSendEvent } from '@/stores/analytics' import { cx } from '@/utils/class-names' @@ -207,7 +207,7 @@ function PointsDrawerContent({ {/* Modals or Drawers with input cannot be put in another drawer, it causes bug because of telegram apps issue */} - setOpenProfileModal(false)} isOpen={openProfileModal} diff --git a/src/modules/telegram/AirdropPage/solana.tsx b/src/modules/telegram/AirdropPage/solana.tsx new file mode 100644 index 000000000..4a4a66476 --- /dev/null +++ b/src/modules/telegram/AirdropPage/solana.tsx @@ -0,0 +1,36 @@ +import Button, { ButtonProps } from '@/components/Button' +import { env } from '@/env.mjs' +import { useEncryptData } from '@/services/api/mutation' +import { useMyAccount, useMyMainAddress } from '@/stores/my-account' +import { useQuery } from '@tanstack/react-query' + +export default function SolanaButton(props: ButtonProps) { + const { url, isLoading } = useGetSolanaWalletUrl() + + return
- setOpenProfileModal(false)} isOpen={openProfileModal} diff --git a/src/modules/telegram/HomePage/MemesPreview.tsx b/src/modules/telegram/HomePage/MemesPreview.tsx index ff5a18c21..1f7e21f39 100644 --- a/src/modules/telegram/HomePage/MemesPreview.tsx +++ b/src/modules/telegram/HomePage/MemesPreview.tsx @@ -1,5 +1,7 @@ +import AddressAvatar from '@/components/AddressAvatar' import LinkText from '@/components/LinkText' import MediaLoader from '@/components/MediaLoader' +import Name from '@/components/Name' import { Skeleton } from '@/components/SkeletonFallback' import usePaginatedMessageIds from '@/components/chats/hooks/usePaginatedMessageIds' import { getPostExtensionProperties } from '@/components/extensions/utils' @@ -76,7 +78,7 @@ const MemesPreview = ({ chatId, hubId }: MemesPreviewProps) => { }) )} { ) } -const MemesPreviewSkeleton = () => { +export const MemesPreviewSkeleton = () => { const items = Array.from({ length: 5 }) return ( @@ -102,12 +104,16 @@ const MemesPreviewSkeleton = () => { ) } -const MemesPreviewItem = ({ +export const MemesPreviewItem = ({ message, className, + href, + address, }: { message: PostData className?: string + href?: string + address?: string }) => { const { body, extensions } = message.content || {} @@ -119,7 +125,10 @@ const MemesPreviewItem = ({ ) return ( - + + {address && ( +
+ + +
+ )} ) } diff --git a/src/modules/telegram/HomePage/TasksPreview.tsx b/src/modules/telegram/HomePage/TasksPreview.tsx index 4dc2a82e8..157b1e021 100644 --- a/src/modules/telegram/HomePage/TasksPreview.tsx +++ b/src/modules/telegram/HomePage/TasksPreview.tsx @@ -1,7 +1,8 @@ import TapTheCat from '@/assets/graphics/tasks/tap-the-cat.png' import LinkText from '@/components/LinkText' +import TaskCard from '@/components/TaskCard' import { useSendEvent } from '@/stores/analytics' -import { DailyTasks, TaskCard } from '../TasksPage' +import { DailyTasks } from '../TasksPage' const TasksPreview = () => { const sendEvent = useSendEvent() diff --git a/src/modules/telegram/MemesPage/index.tsx b/src/modules/telegram/MemesPage/index.tsx deleted file mode 100644 index c6f654e6b..000000000 --- a/src/modules/telegram/MemesPage/index.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import LayoutWithBottomNavigation from '@/components/layouts/LayoutWithBottomNavigation' -import HomePageModals from '@/components/modals/HomePageModals' -import useTgNoScroll from '@/hooks/useTgNoScroll' -import ChatContent from '../../chat/HomePage/ChatContent' -import ContestEvmModal from '../ContestEvmModal' -import HowToEarnMessage from './HowToEarnMessage' - -const MemesPage = () => { - useTgNoScroll() - - return ( - - - - - - - ) -} - -export default MemesPage diff --git a/src/modules/telegram/MenuPage/Menu.tsx b/src/modules/telegram/MenuPage/Menu.tsx index 03847a4a0..d2460f93d 100644 --- a/src/modules/telegram/MenuPage/Menu.tsx +++ b/src/modules/telegram/MenuPage/Menu.tsx @@ -3,7 +3,7 @@ import Link from 'next/link' import React from 'react' import { MdOutlineKeyboardArrowRight } from 'react-icons/md' -type MenuProps = { +export type MenuProps = { menuItems: { title: string desc?: React.ReactNode @@ -12,6 +12,7 @@ type MenuProps = { icon: string href?: string onClick?: () => void + openInNewTab?: boolean }[][] } @@ -49,6 +50,7 @@ type MenuItemProps = { onClick?: () => void textClassName?: string withBorder?: boolean + openInNewTab?: boolean } const MenuItem = ({ @@ -56,11 +58,11 @@ const MenuItem = ({ desc, icon, disabled, - hidden, href, textClassName, onClick, withBorder, + openInNewTab, }: MenuItemProps) => { const children = ( <> @@ -90,7 +92,11 @@ const MenuItem = ({ }) return href ? ( - + {children} ) : ( diff --git a/src/modules/telegram/MenuPage/index.tsx b/src/modules/telegram/MenuPage/index.tsx index 69deb1e46..0cc7d8e75 100644 --- a/src/modules/telegram/MenuPage/index.tsx +++ b/src/modules/telegram/MenuPage/index.tsx @@ -4,26 +4,32 @@ import Name from '@/components/Name' import Toast from '@/components/Toast' import BackButton from '@/components/layouts/BackButton' import LayoutWithBottomNavigation from '@/components/layouts/LayoutWithBottomNavigation' -import LinkAddressModal from '@/components/modals/LinkEvmAddressModal' -import SubsocialProfileModal from '@/components/profile/UpsertProfileModal' +import UpsertProfileModal from '@/components/profile/UpsertProfileModal' import { getReferralLink } from '@/components/referral/utils' +import UnlinkWalletModal from '@/components/wallets/UnlinkWalletModal' +import UseMobileModal from '@/components/wallets/UseMobileModal' +import EvmConnectWalletModal from '@/components/wallets/evm/EvmConnectWalletModal' import useIsModerationAdmin from '@/hooks/useIsModerationAdmin' -import { useLinkedProviders } from '@/hooks/useLinkedEvmAddress' +import { useLinkedProviders } from '@/hooks/useLinkedProviders' import useTgNoScroll from '@/hooks/useTgNoScroll' import PointsWidget from '@/modules/points/PointsWidget' import { useMyMainAddress } from '@/stores/my-account' +import { useSubscriptionState } from '@/stores/subscription' import { truncateAddress } from '@/utils/account' +import { isTouchDevice } from '@/utils/device' import { copyToClipboard } from '@/utils/strings' import { IdentityProvider } from '@subsocial/data-hub-sdk' import Image from 'next/image' -import { useState } from 'react' +import { useRouter } from 'next/router' +import { useEffect, useState } from 'react' import { toast } from 'sonner' +import { useGetSolanaWalletUrl } from '../AirdropPage/solana' import { CrearLocalData, DeleteAccountConfirmationModal, } from './ClearDataModals' import LoginAsUser from './LoginAsUser' -import Menu from './Menu' +import Menu, { MenuProps } from './Menu' import SearchUser from './SearchUser' type Page = 'menu' | 'my-account' | 'my-crypto-addresses' | 'moderation-tools' @@ -161,7 +167,7 @@ function MyAccountPageContent({ setPage }: ContentProps) { - setModalKind(undefined)} isOpen={modalKind === 'edit-profile'} @@ -178,16 +184,27 @@ function MyAccountPageContent({ setPage }: ContentProps) { ) } -type AddressesModalKind = 'evm' | 'solana' | undefined +type ModalChain = 'evm' | 'solana' function MyCryptoAddressesContent({ setPage }: ContentProps) { - const myAddress = useMyMainAddress() - const [modaKind, setModalKind] = useState(undefined) + const [modalKind, setModalKind] = useState() + const { url: solanaWalletUrl } = useGetSolanaWalletUrl() + const router = useRouter() + const [isOpenUseMobileModal, setIsOpenUseMobileModal] = useState(false) + const [openEvmConnectWalletModal, setOpenEvmConnectWalletModal] = + useState(false) + const [openUnlinkModal, setOpenUnlinkModal] = useState(false) + const [connectSolanaClick, setConnectSolanaClick] = useState(false) - const providerByModalKind = - modaKind === 'evm' ? IdentityProvider.EVM : IdentityProvider.SOLANA + useEffect(() => { + if (connectSolanaClick) { + useSubscriptionState + .getState() + .setSubscriptionState('identity', 'always-sub') + } + }, [connectSolanaClick]) - const { providers } = useLinkedProviders(myAddress || '') + const { providers } = useLinkedProviders() const evmProvider = providers?.find( (provider) => provider.provider === IdentityProvider.EVM.toString() @@ -197,22 +214,51 @@ function MyCryptoAddressesContent({ setPage }: ContentProps) { (provider) => provider.provider === IdentityProvider.SOLANA.toString() ) - const cryptoAddressesItems = [ + const cryptoAddressesItems: MenuProps['menuItems'] = [ [ { - title: `${evmProvider?.externalId ? 'Edit' : 'Add'} Ethereum Address`, + title: `${evmProvider?.externalId ? 'Unlink' : 'Add'} Ethereum Address`, desc: evmProvider?.externalId ? ( {truncateAddress(evmProvider?.externalId)} ) : undefined, - icon: evmProvider?.externalId ? '✏️' : '🛠️', - onClick: () => setModalKind('evm'), + icon: evmProvider?.externalId ? '🖇️' : '🛠️', + onClick: () => { + setModalKind('evm') + if (evmProvider?.externalId) { + setOpenUnlinkModal(true) + } else { + if (!isTouchDevice()) { + setIsOpenUseMobileModal(true) + return + } + + setOpenEvmConnectWalletModal(true) + } + }, }, { - title: `${solanaProvider?.externalId ? 'Edit' : 'Add'} Solana Address`, - icon: solanaProvider?.externalId ? '✏️' : '🛠️', - onClick: () => setModalKind('solana'), + title: `${ + solanaProvider?.externalId ? 'Unlink' : 'Add' + } Solana Address`, + icon: solanaProvider?.externalId ? '🖇️' : '🛠️', + href: solanaProvider?.externalId ? undefined : solanaWalletUrl, + openInNewTab: true, + onClick: () => { + setModalKind('solana') + + if (solanaProvider?.externalId) { + setOpenUnlinkModal(true) + } else { + if (!isTouchDevice()) { + setIsOpenUseMobileModal(true) + return + } + + setConnectSolanaClick(true) + } + }, desc: solanaProvider?.externalId ? ( {truncateAddress(solanaProvider?.externalId)} @@ -236,10 +282,20 @@ function MyCryptoAddressesContent({ setPage }: ContentProps) { - setModalKind(undefined)} + setOpenEvmConnectWalletModal(false)} + /> + setOpenUnlinkModal(false)} + /> + + setIsOpenUseMobileModal(false)} + chain={modalKind as ModalChain} /> ) diff --git a/src/modules/telegram/TapPage/PointsClicker.tsx b/src/modules/telegram/TapPage/PointsClicker.tsx index bf6b423fb..92049af75 100644 --- a/src/modules/telegram/TapPage/PointsClicker.tsx +++ b/src/modules/telegram/TapPage/PointsClicker.tsx @@ -1,6 +1,7 @@ import Button from '@/components/Button' import CatClicker from '@/components/CatClicker' import FormatBalance from '@/components/FormatBalance' +import { getTokenomicsMetadataQuery } from '@/services/datahub/content-staking/query' import { decreaseEnergyValue, increasePointsBalance, @@ -10,7 +11,6 @@ import { getClickedPointsByDayQuery, getEnergyStateQuery, } from '@/services/datahub/leaderboard/points-balance/query' -import { getActiveStakingTokenomicMetadataQuery } from '@/services/datahub/leaderboard/query' import { getDayAndWeekTimestamp } from '@/services/datahub/utils' import { useSendEvent } from '@/stores/analytics' import { useMyMainAddress } from '@/stores/my-account' @@ -54,7 +54,7 @@ const PointsClicker = ({ className }: PointsClickerProps) => { myAddress || '' ) const { data: tokenomicMetadata, isLoading: isTokenomicMetadataLoading } = - getActiveStakingTokenomicMetadataQuery.useQuery({}) + getTokenomicsMetadataQuery.useQuery({}) const { data: clickedPointsByDay, isLoading: isClickedPointsLoading } = getClickedPointsByDayQuery.useQuery(myAddress || '') @@ -250,7 +250,7 @@ const LikeMemesInfoMessage = ({ }: LikeMemesInfoMessageProps) => { const [domReady, setDomReady] = useState(false) const { data: tokenomicMetadata, isLoading: isTokenomicMetadataLoading } = - getActiveStakingTokenomicMetadataQuery.useQuery({}) + getTokenomicsMetadataQuery.useQuery({}) const sendEvent = useSendEvent() diff --git a/src/modules/telegram/TasksPage/index.tsx b/src/modules/telegram/TasksPage/index.tsx index bb6105dfb..1e2712d4a 100644 --- a/src/modules/telegram/TasksPage/index.tsx +++ b/src/modules/telegram/TasksPage/index.tsx @@ -1,12 +1,14 @@ -import Diamond from '@/assets/emojis/diamond.png' import Calendar from '@/assets/graphics/tasks/calendar.png' import Like from '@/assets/graphics/tasks/like.png' -import Check from '@/assets/icons/check.svg' -import Card from '@/components/Card' import LinkText from '@/components/LinkText' -import { Skeleton } from '@/components/SkeletonFallback' +import TaskCard from '@/components/TaskCard' import LayoutWithBottomNavigation from '@/components/layouts/LayoutWithBottomNavigation' import DailyRewardModal from '@/components/modals/DailyRewardModal' +import ClaimTaskModal from '@/components/tasks/ClaimTaskModal' +import { + ClaimModalVariant, + modalConfigByVariant, +} from '@/components/tasks/config' import useTgNoScroll from '@/hooks/useTgNoScroll' import LikeCount from '@/modules/points/LikePreview' import PointsWidget from '@/modules/points/PointsWidget' @@ -16,25 +18,17 @@ import { getTodaySuperLikeCountQuery, getTokenomicsMetadataQuery, } from '@/services/datahub/content-staking/query' -import { getUserReferralStatsQuery } from '@/services/datahub/leaderboard/query' +import { GamificationTask } from '@/services/datahub/tasks' import { clearGamificationTasksError, getGamificationTasksQuery, } from '@/services/datahub/tasks/query' import { useSendEvent } from '@/stores/analytics' import { useMyMainAddress } from '@/stores/my-account' -import { cx } from '@/utils/class-names' import { formatNumber } from '@/utils/strings' import { useQueryClient } from '@tanstack/react-query' -import Image, { ImageProps } from 'next/image' -import Link from 'next/link' -import { CSSProperties, useState } from 'react' -import { FaChevronRight } from 'react-icons/fa6' +import { useState } from 'react' import SkeletonFallback from '../../../components/SkeletonFallback' -import ClaimTasksTokensModal, { - ClaimModalVariant, - modalConfigByVariant, -} from './ClaimTaskTokensModal' export default function TasksPage() { useTgNoScroll() @@ -158,24 +152,22 @@ const inviteFriendsTasksName = 'INVITE_REFERRALS' function InviteFriendsTasks() { const myAddress = useMyMainAddress() const sendEvent = useSendEvent() - const [modalVariant, setModalVariant] = useState(null) + const [isOpenClaimTaskModal, setIsOpenClaimTaskModal] = useState(false) + const [selectedTask, setSelectedTask] = useState( + null + ) const client = useQueryClient() - const { data: refStats } = getUserReferralStatsQuery.useQuery(myAddress || '') - const { refCount } = refStats || {} - - const { data: gamificationTasks } = getGamificationTasksQuery.useQuery( - myAddress || '' - ) + const { data: gamificationTasks } = getGamificationTasksQuery.useQuery({ + address: myAddress || '', + rootSpaceId: '', + }) const data = gamificationTasks?.data?.filter( (item) => item.name === inviteFriendsTasksName ) || [] - const { aim } = - modalConfigByVariant[modalVariant || 'JOIN_TELEGRAM_CHANNEL_EpicAppNet'] - return (
@@ -197,9 +189,8 @@ function InviteFriendsTasks() {
{data.map((task, index) => { - const tag = task.tag as Exclude - - const { image, title, event } = modalConfigByVariant[tag] + const { image, title, event } = + modalConfigByVariant[task.name]?.(task) return ( - setModalVariant(null)} - data={data || []} - disableButton={ - aim && refCount !== undefined ? refCount < aim : undefined - } - /> + {selectedTask && ( + setIsOpenClaimTaskModal(false)} + /> + )}
) } @@ -237,13 +228,18 @@ const basicTasksNames = ['JOIN_TELEGRAM_CHANNEL', 'JOIN_TWITTER'] function BasicTasks() { const sendEvent = useSendEvent() - const [modalVariant, setModalVariant] = useState(null) + const [isOpenClaimTaskModal, setIsOpenClaimTaskModal] = useState(false) + const [selectedTask, setSelectedTask] = useState( + null + ) + const myAddress = useMyMainAddress() const client = useQueryClient() - const { data: gamificationTasks } = getGamificationTasksQuery.useQuery( - myAddress || '' - ) + const { data: gamificationTasks } = getGamificationTasksQuery.useQuery({ + address: myAddress || '', + rootSpaceId: '', + }) const data = gamificationTasks?.data?.filter((item) => @@ -264,7 +260,7 @@ function BasicTasks() { {data.map((task, index) => { const tag = task.tag as Exclude - const variant = modalConfigByVariant[tag] + const variant = modalConfigByVariant[tag]?.(task) if (!variant) return null const { image, title, event } = variant || {} @@ -277,7 +273,8 @@ function BasicTasks() { if (task !== undefined && !task.claimed) { clearGamificationTasksError(client) - setModalVariant(tag) + setIsOpenClaimTaskModal(true) + setSelectedTask(task) } }} title={title} @@ -288,108 +285,15 @@ function BasicTasks() { ) })}
- setModalVariant(null)} - data={data || []} - /> - - ) -} - -export function TaskCard({ - completed, - image, - reward, - title, - customAction, - onClick, - href, - openInNewTab, - isLoadingReward, - withoutDiamondIcon, - topBanner, -}: { - image: ImageProps['src'] - title: React.ReactNode - reward: number | string - completed: boolean - customAction?: React.ReactNode - onClick?: () => void - href?: string - openInNewTab?: boolean - isLoadingReward?: boolean - withoutDiamondIcon?: boolean - topBanner?: { - icon: JSX.Element - text: string - className?: string - textStyle?: CSSProperties - textClassName?: string - } -}) { - const card = ( - - {topBanner && ( -
-
- {topBanner.icon} - - {topBanner.text} - -
-
+ {selectedTask && ( + setIsOpenClaimTaskModal(false)} + /> )} -
- -
- {title} -
- {!withoutDiamondIcon && ( - - )} - {isLoadingReward ? ( - - ) : ( - - {typeof reward === 'number' - ? `+${formatNumber(reward)}` - : reward} - - )} -
-
-
- {completed ? ( - - ) : customAction ? ( - customAction - ) : ( - - )} -
-
-
+ ) - if (href) { - return ( - - {card} - - ) - } - return card } function NewTasks() { diff --git a/src/modules/telegram/MemesPage/HowToEarnMessage.tsx b/src/modules/telegram/channels/ChannelContentPage/HowToEarnMessage.tsx similarity index 100% rename from src/modules/telegram/MemesPage/HowToEarnMessage.tsx rename to src/modules/telegram/channels/ChannelContentPage/HowToEarnMessage.tsx diff --git a/src/modules/telegram/channels/ChannelContentPage/context.tsx b/src/modules/telegram/channels/ChannelContentPage/context.tsx new file mode 100644 index 000000000..e505c2492 --- /dev/null +++ b/src/modules/telegram/channels/ChannelContentPage/context.tsx @@ -0,0 +1,56 @@ +import { + ContentContainer, + getContentContainersQuery, +} from '@/services/datahub/content-containers/query' +import { ReactNode, createContext, useContext, useState } from 'react' + +type ChannelContentPageContextType = { + rootPostId: string + contentContainer: ContentContainer | null | undefined + isLoading: boolean + setIsModerating: (isModerating: boolean) => void + isModerating: boolean +} + +const ChannelContentPageContext = createContext({ + rootPostId: '', + contentContainer: null, + isLoading: false, + setIsModerating: () => {}, + isModerating: false, +}) + +export function ChannelContentPageProvider({ + children, + rootPostId, +}: { + children: ReactNode + rootPostId: string +}) { + const [isModerating, setIsModerating] = useState(false) + const { data, isLoading } = getContentContainersQuery.useQuery( + { + filter: { rootPostIds: [rootPostId], hidden: false }, + }, + { enabled: !!rootPostId } + ) + const container = data?.data?.[0] + + return ( + + {children} + + ) +} + +export function useChannelContentPageContext() { + return useContext(ChannelContentPageContext) +} diff --git a/src/modules/telegram/channels/ChannelContentPage/index.tsx b/src/modules/telegram/channels/ChannelContentPage/index.tsx new file mode 100644 index 000000000..81a483c7f --- /dev/null +++ b/src/modules/telegram/channels/ChannelContentPage/index.tsx @@ -0,0 +1,267 @@ +import Button from '@/components/Button' +import Container from '@/components/Container' +import SkeletonFallback, { Skeleton } from '@/components/SkeletonFallback' +import TabButtons from '@/components/TabButtons' +import TaskCard from '@/components/TaskCard' +import MemeChatRoom from '@/components/chats/ChatRoom/MemeChatRoom' +import LayoutWithBottomNavigation from '@/components/layouts/LayoutWithBottomNavigation' +import ClaimTaskModal from '@/components/tasks/ClaimTaskModal' +import { modalConfigByVariant } from '@/components/tasks/config' +import useAuthorizedForModeration from '@/hooks/useAuthorizedForModeration' +import useTgNoScroll from '@/hooks/useTgNoScroll' +import { GamificationTask } from '@/services/datahub/tasks' +import { + clearGamificationTasksError, + getGamificationTasksQuery, +} from '@/services/datahub/tasks/query' +import { useSendEvent } from '@/stores/analytics' +import { useMyMainAddress } from '@/stores/my-account' +import { Transition } from '@headlessui/react' +import { useQueryClient } from '@tanstack/react-query' +import Image from 'next/image' +import { useRouter } from 'next/router' +import { useState } from 'react' +import { AiOutlineInfoCircle } from 'react-icons/ai' +import { FaChevronLeft } from 'react-icons/fa6' +import HowToEarnMessage from './HowToEarnMessage' +import { + ChannelContentPageProvider, + useChannelContentPageContext, +} from './context' + +export default function ChannelContentPage({ + rootPostId, +}: { + rootPostId: string +}) { + useTgNoScroll() + + return ( + + + + + + + + ) +} + +function ChatContent() { + const { contentContainer, isModerating } = useChannelContentPageContext() + if (!contentContainer) return null + + return ( + + ) +} + +function ChannelNavbar() { + const [isAboutOpen, setIsAboutOpen] = useState(false) + const [selectedTab, setSelectedTab] = useState('Details') + const router = useRouter() + + const { + contentContainer, + isLoading, + rootPostId, + isModerating, + setIsModerating, + } = useChannelContentPageContext() + + const myAddress = useMyMainAddress() ?? '' + const canModerate = useAuthorizedForModeration(rootPostId, myAddress) + + return ( + <> + + +
+
+
+ {contentContainer?.metadata.coverImage && ( + + )} +
+
+ + + +
+
+ + + + {contentContainer?.metadata.title} + {' '} + Channel + + +
+ {selectedTab === 'Details' && ( + +

+ {contentContainer?.metadata.description} +

+
+ )} + {selectedTab === 'Tasks' && } +
+
+
+
+ + ) +} + +function ChannelTasks() { + const myAddress = useMyMainAddress() + const { contentContainer } = useChannelContentPageContext() + const { + data: gamificationTasks, + isLoading, + isSuccess, + } = getGamificationTasksQuery.useQuery( + { + address: myAddress || '', + rootSpaceId: contentContainer?.rootSpace?.id || '', + }, + { enabled: !!contentContainer?.rootSpace?.id } + ) + const sendEvent = useSendEvent() + const client = useQueryClient() + + const [isOpenTaskModal, setIsOpenTaskModal] = useState(false) + const [selectedTask, setSelectedTask] = useState( + null + ) + + return ( +
+ {isLoading && + Array.from({ length: 3 }).map((_, idx) => ( + + ))} + {isSuccess && !gamificationTasks.data.length && ( +
+ No tasks available +
+ )} + {gamificationTasks?.data.map((task, index) => { + const taskConfig = modalConfigByVariant[task.name] + const config = taskConfig?.(task) + + return ( + { + sendEvent(config.event) + + if (task !== undefined && !task.claimed) { + clearGamificationTasksError(client) + setIsOpenTaskModal(true) + setSelectedTask(task) + } + }} + title={config.title} + openInNewTab + reward={parseInt(task.rewardPoints ?? '0')} + completed={task.claimed ?? false} + /> + ) + })} + {selectedTask && ( + setIsOpenTaskModal(false)} + /> + )} +
+ ) +} diff --git a/src/modules/telegram/channels/ChannelsPage/index.tsx b/src/modules/telegram/channels/ChannelsPage/index.tsx new file mode 100644 index 000000000..e61de4458 --- /dev/null +++ b/src/modules/telegram/channels/ChannelsPage/index.tsx @@ -0,0 +1,154 @@ +import BlueGradient from '@/assets/graphics/blue-gradient.png' +import { Skeleton } from '@/components/SkeletonFallback' +import ChatUnreadCount from '@/components/chats/ChatPreview/ChatUnreadCount' +import LayoutWithBottomNavigation from '@/components/layouts/LayoutWithBottomNavigation' +import HomePageModals from '@/components/modals/HomePageModals' +import useTgNoScroll from '@/hooks/useTgNoScroll' +import PointsWidget from '@/modules/points/PointsWidget' +import { getPostQuery } from '@/services/api/query' +import { + ContentContainer, + getContentContainersQuery, +} from '@/services/datahub/content-containers/query' +import { ContentContainerType } from '@/services/datahub/generated-query' +import { useGetTopMemes } from '@/services/datahub/posts/query' +import { useIsAnyQueriesLoading } from '@/subsocial-query' +import { cx } from '@/utils/class-names' +import { formatNumber } from '@/utils/strings' +import Image from 'next/image' +import Link from 'next/link' +import { FaChevronRight } from 'react-icons/fa6' +import { + MemesPreviewItem, + MemesPreviewSkeleton, +} from '../../HomePage/MemesPreview' + +export default function ChannelsPage() { + useTgNoScroll() + + return ( + + + + +
+ + +
+
+ ) +} + +function ChannelsList() { + const { data, isLoading } = getContentContainersQuery.useQuery({ + filter: { + hidden: false, + containerType: [ + ContentContainerType.PublicChannel, + ContentContainerType.CommunityChannel, + ], + }, + }) + + const sorted = data?.data.sort((a, b) => + b.containerType === ContentContainerType.PublicChannel ? 1 : -1 + ) + + return ( +
+ {isLoading && ( + <> + {Array.from({ length: 3 }).map((_, i) => ( + + ))} + + )} + {(sorted ?? []).map((channel) => ( + + ))} +
+ ) +} + +function Channel({ channel }: { channel: ContentContainer }) { + useTgNoScroll() + + return ( + + +
+ {channel.metadata.title} + + {({ unreadCount, isLoading }) => + isLoading ? ( + + ) : ( + unreadCount > 0 && ( + + +{formatNumber(unreadCount, { shorten: true })} memes + + ) + ) + } + +
+ + + ) +} + +function TopMemesToday() { + const { data: topMemesIds, isLoading } = useGetTopMemes() + + const renderedMessageQueries = getPostQuery.useQueries(topMemesIds) + const isMessageLoading = useIsAnyQueriesLoading(renderedMessageQueries) + + return ( +
+
+

Top memes today

+ + Authors of the best memes earn 💎 20,000 points + +
+
+ {isLoading || isMessageLoading ? ( + + ) : ( + renderedMessageQueries + .slice(0, 5) + .map(({ data: message, isLoading }, index) => { + if (!message) return null + + return isLoading ? ( + + ) : ( + + ) + }) + )} +
+
+ ) +} diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx index 963ea7c4c..bb3535574 100644 --- a/src/pages/_app.tsx +++ b/src/pages/_app.tsx @@ -13,6 +13,7 @@ import useSaveTappedPointsAndEnergy, { import { ConfigProvider } from '@/providers/config/ConfigProvider' import TelegramLoginProvider from '@/providers/config/TelegramLoginProvider' import EvmProvider from '@/providers/evm/EvmProvider' +import SolanaProvider from '@/providers/solana/SolanaProvider' import { getDatahubHealthQuery } from '@/services/datahub/health/query' import { getLinkedIdentityQuery } from '@/services/datahub/identity/query' import { increaseEnergyValue } from '@/services/datahub/leaderboard/points-balance/optimistic' @@ -28,6 +29,7 @@ import { initAllStores } from '@/stores/registry' import '@/styles/globals.css' import { cx } from '@/utils/class-names' import { isTouchDevice } from '@/utils/device' +import { lastRedirectProtocol } from '@/utils/globals' import '@rainbow-me/rainbowkit/styles.css' import { useQueryClient } from '@tanstack/react-query' import { SDKProvider } from '@tma.js/sdk-react' @@ -48,11 +50,11 @@ export type AppCommonProps = { } export default function App(props: AppProps) { - // useEffect(() => { - // import('eruda').then(({ default: eruda }) => { - // eruda.init() - // }) - // }, []) + useEffect(() => { + import('eruda').then(({ default: eruda }) => { + eruda.init() + }) + }, []) return ( ) { const isInitialized = useRef(false) useEffect(() => { + // for wallet connect integration, because in telegram app, window.open doesn't really work without this + window.open = (function (open) { + return function (url, _, features) { + if (typeof url === 'string') { + lastRedirectProtocol.protocol = url.split('://')[0] + } + return open.call(window, url, '_blank', features) + } + })(window.open) + if (isInitialized.current) return isInitialized.current = true initAllStores() @@ -149,11 +161,13 @@ function AppContent({ Component, pageProps }: AppProps) {
- - - - - + + + + + + +
diff --git a/src/pages/api/datahub/external-token.ts b/src/pages/api/datahub/external-token.ts new file mode 100644 index 000000000..844eeb764 --- /dev/null +++ b/src/pages/api/datahub/external-token.ts @@ -0,0 +1,20 @@ +import { ApiResponse, handlerWrapper } from '@/server/common' +import { syncExternalTokenBalances } from '@/server/datahub-queue/external-token' +import { z } from 'zod' + +export type ApiDatahubModerationResponse = ApiResponse +export default handlerWrapper({ + inputSchema: z.object({ payload: z.any() }), + dataGetter: (req) => req.body, +})({ + allowedMethods: ['POST'], + errorLabel: 'external-token', + handler: async (data, _req, res) => { + await syncExternalTokenBalances(data.payload) + + res.json({ + message: 'OK', + success: true, + }) + }, +}) diff --git a/src/pages/api/encrypt.ts b/src/pages/api/encrypt.ts new file mode 100644 index 000000000..807fe0b3e --- /dev/null +++ b/src/pages/api/encrypt.ts @@ -0,0 +1,35 @@ +import { env } from '@/env.mjs' +import { ApiResponse, handlerWrapper } from '@/server/common' +import bs58 from 'bs58' +import nacl from 'tweetnacl' +import { z } from 'zod' + +type ResponseData = { encrypted: string; nonce: string } +export type ApiEncryptResponseData = ApiResponse + +export default handlerWrapper({ + dataGetter: (req) => req.body, + inputSchema: z.object({ + data: z.string(), + }), +})({ + errorLabel: 'encrypt', + allowedMethods: ['POST'], + handler: async ({ data }, _, res) => { + const nonce = nacl.randomBytes(nacl.box.nonceLength) + const encrypted = Buffer.from( + nacl.secretbox( + Buffer.from(data) as unknown as Uint8Array, + nonce, + bs58.decode(env.DAPP_SECRET_KEY) + ) + ).toString('hex') + + res.json({ + encrypted, + nonce: bs58.encode(nonce), + message: 'OK', + success: true, + }) + }, +}) diff --git a/src/pages/solana/connect.tsx b/src/pages/solana/connect.tsx new file mode 100644 index 000000000..5e90ed9f0 --- /dev/null +++ b/src/pages/solana/connect.tsx @@ -0,0 +1,122 @@ +import Button from '@/components/Button' +import Container from '@/components/Container' +import { env } from '@/env.mjs' +import useLinkedAddress from '@/hooks/useLinkedProviders' +import { addExternalProviderToIdentity } from '@/server/datahub-queue/identity' +import { createSignedSocialDataEvent } from '@/services/datahub/utils' +import { decryptPayload } from '@/stores/encryption' +import { decodeSecretKey, loginWithSecretKey } from '@/utils/account' +import { getCommonServerSideProps } from '@/utils/page' +import { IdentityProvider } from '@subsocial/data-hub-sdk' +import bs58 from 'bs58' +import { useEffect } from 'react' +import nacl from 'tweetnacl' + +export const getServerSideProps = getCommonServerSideProps( + {}, + async (context) => { + const message = context.query.message as string + const solanaAddress = context.query.solana_address as string + const address = context.query.address as string + const signerKey = context.query.signer as string + const signerNonce = context.query.signer_nonce as string + const nonce = context.query.nonce as string + const data = context.query.data as string + const phantomEncryptionPublicKey = context.query + .phantom_encryption_public_key as string + + const sharedSecretDapp = nacl.box.before( + bs58.decode(phantomEncryptionPublicKey), + bs58.decode(env.DAPP_SECRET_KEY) + ) + const decryptedSigData = decryptPayload(data, nonce, sharedSecretDapp) as { + signature: string + } + const decryptRes = nacl.secretbox.open( + Buffer.from(signerKey, 'hex') as unknown as Uint8Array, + bs58.decode(signerNonce), + bs58.decode(env.DAPP_SECRET_KEY) + ) + + if (!decryptRes) { + return { + props: { + solanaAddress, + address, + error: 'Bad Request', + }, + } + } + + const secretKey = decodeSecretKey(Buffer.from(decryptRes).toString()) + const signer = await loginWithSecretKey(secretKey) + await addExternalProviderToIdentity( + await createSignedSocialDataEvent( + 'synth_add_linked_identity_external_provider', + { + address: signer.address, + proxyToAddress: address, + timestamp: Date.now(), + signer, + }, + { + externalProvider: { + id: solanaAddress, + provider: IdentityProvider.SOLANA, + solProofMsg: message, + solProofMsgSig: decryptedSigData.signature, + }, + } + ) + ) + + return { + props: { + solanaAddress, + address, + error: '', + }, + } + } +) + +export default function SolanaConnectPage({ + solanaAddress, + error, + address, +}: { + solanaAddress: string + error: string + address: string +}) { + const { refetch } = useLinkedAddress( + address, + { enabled: true }, + IdentityProvider.SOLANA + ) + + useEffect(() => { + refetch() + }, [refetch]) + + return ( + +

+ {error + ? 'Uh-oh! 🚫 Something went wrong with the connection process. Give it another try!' + : 'Your Solana Address Successfully Linked 🎉'} +

+

+ {error ? error : `Your Solana address: ${solanaAddress}`} +

+ + +
+ ) +} diff --git a/src/pages/solana/sign.tsx b/src/pages/solana/sign.tsx new file mode 100644 index 000000000..c5042187f --- /dev/null +++ b/src/pages/solana/sign.tsx @@ -0,0 +1,182 @@ +import Button from '@/components/Button' +import Container from '@/components/Container' +import { env } from '@/env.mjs' +import { datahubQueueRequest } from '@/server/datahub-queue/utils' +import { decryptPayload, encryptPayload } from '@/stores/encryption' +import { getCommonServerSideProps } from '@/utils/page' +import bs58 from 'bs58' +import { gql } from 'graphql-request' +import nacl from 'tweetnacl' + +const LINK_IDENTITY_SOLANA_MESSAGE = gql` + mutation LinkIdentitySolanaMessage($address: String!) { + linkedIdentityExternalProviderSolanaProofMsg(address: $address) { + message + } + } +` +async function getLinkIdentitySolanaMessage(address: string) { + const res = await datahubQueueRequest< + { linkedIdentityExternalProviderSolanaProofMsg: { message: string } }, + { address: string } + >({ + document: LINK_IDENTITY_SOLANA_MESSAGE, + variables: { + address, + }, + }) + return res?.linkedIdentityExternalProviderSolanaProofMsg?.message +} + +export const getServerSideProps = getCommonServerSideProps<{ + link?: string + error?: string +}>({}, async (context) => { + const signer = context.query.signer as string + const signerNonce = context.query.signer_nonce as string + const address = context.query.address as string + const phantomEncryptionPublicKey = context.query + .phantom_encryption_public_key as string + const data = context.query.data as string + const nonce = context.query.nonce as string + + const errorMessage = context.query.errorMessage as string + if (errorMessage) { + return { + props: { + error: errorMessage, + }, + } + } + + if ( + !signer || + !signerNonce || + !address || + !phantomEncryptionPublicKey || + !data || + !nonce + ) { + return { + props: { + error: 'Missing required parameters', + }, + } + } + + const sharedSecretDapp = nacl.box.before( + bs58.decode(phantomEncryptionPublicKey), + bs58.decode(env.DAPP_SECRET_KEY) + ) + const connectData = decryptPayload(data, nonce, sharedSecretDapp) as { + public_key: string + session: string + } + + const decrypted = nacl.secretbox.open( + Buffer.from(signer, 'hex') as unknown as Uint8Array, + bs58.decode(signerNonce), + bs58.decode(env.DAPP_SECRET_KEY) + ) + if (!decrypted) { + return { + props: { + error: 'Bad Request', + }, + } + } + + const message = await getLinkIdentitySolanaMessage(connectData.public_key) + const [signNonce, encrypted] = encryptPayload( + { + message: bs58.encode(Buffer.from(message) as any), + session: connectData.session, + }, + sharedSecretDapp + ) + + return { + props: { + address, + solanaAddress: connectData.public_key, + encrypted: bs58.encode(encrypted), + nonce: bs58.encode(signNonce), + signer, + phantomEncryptionPublicKey, + signerNonce, + message, + }, + } +}) + +export default function SolanaSignPage( + props: + | { + address: string + solanaAddress: string + encrypted: string + nonce: string + signer: string + phantomEncryptionPublicKey: string + signerNonce: string + message: string + } + | { error: string } +) { + if ('error' in props) { + return ( + +

+ Uh-oh! 🚫 Something went wrong with the wallet verification process. + Give it another try! +

+

{props.error}

+ + +
+ ) + } + + const { + address, + solanaAddress, + encrypted, + nonce, + signer, + signerNonce, + phantomEncryptionPublicKey, + message, + } = props + + const params = { + dapp_encryption_public_key: env.NEXT_PUBLIC_DAPP_PUBLIC_KEY, + nonce, + payload: encrypted, + redirect_link: `${env.NEXT_PUBLIC_BASE_URL}/solana/connect?solana_address=${solanaAddress}&signer=${signer}&signer_nonce=${signerNonce}&address=${address}&message=${message}&phantom_encryption_public_key=${phantomEncryptionPublicKey}`, + } + + return ( + +

Verify your Solana Address

+

+ Your Solana address: {solanaAddress} +

+ + +
+ ) +} diff --git a/src/pages/tg/channels/[id].tsx b/src/pages/tg/channels/[id].tsx new file mode 100644 index 000000000..a65511014 --- /dev/null +++ b/src/pages/tg/channels/[id].tsx @@ -0,0 +1,39 @@ +import ChannelContentPage from '@/modules/telegram/channels/ChannelContentPage' +import { AppCommonProps } from '@/pages/_app' +import { getContentContainersQuery } from '@/services/datahub/content-containers/query' +import { getCommonStaticProps } from '@/utils/page' +import { dehydrate, QueryClient } from '@tanstack/react-query' + +export function getStaticPaths() { + return { + paths: [], + fallback: 'blocking', + } +} + +export const getStaticProps = getCommonStaticProps( + () => ({}), + async (context) => { + const rootPostId = context.params?.id as string + if (!rootPostId) return + + const client = new QueryClient() + try { + await getContentContainersQuery.fetchQuery(client, { + filter: { rootPostIds: [rootPostId], hidden: false }, + }) + } catch (err) { + console.error('Error prefetching channel detail page', err) + } + + return { + props: { + rootPostId, + dehydratedState: dehydrate(client), + }, + revalidate: 60 * 60, + } + } +) + +export default ChannelContentPage diff --git a/src/pages/tg/channels/index.tsx b/src/pages/tg/channels/index.tsx new file mode 100644 index 000000000..ed545fcf5 --- /dev/null +++ b/src/pages/tg/channels/index.tsx @@ -0,0 +1,3 @@ +import ChannelsPage from '@/modules/telegram/channels/ChannelsPage' + +export default ChannelsPage diff --git a/src/pages/tg/memes.tsx b/src/pages/tg/memes.tsx deleted file mode 100644 index 0f3696115..000000000 --- a/src/pages/tg/memes.tsx +++ /dev/null @@ -1,64 +0,0 @@ -import { env } from '@/env.mjs' -import MemesPage from '@/modules/telegram/MemesPage' -import { AppCommonProps } from '@/pages/_app' -import { prefetchBlockedEntities } from '@/server/moderation/prefetch' -import { getPostQuery } from '@/services/api/query' -import { getPaginatedPostIdsByPostId } from '@/services/datahub/posts/query' -import { getProfileQuery } from '@/services/datahub/profiles/query' -import { getCommonStaticProps } from '@/utils/page' -import { QueryClient, dehydrate } from '@tanstack/react-query' -import { getProfilesServer } from '../api/profiles' - -async function prefetchChatData(client: QueryClient, chatId: string) { - if (!chatId) return - - // as now this query without myAddress is only used as placeholder data, no need to invalidate it - const firstPageData = await getPaginatedPostIdsByPostId.fetchFirstPageQuery( - client, - { postId: chatId, onlyDisplayUnapprovedMessages: false, myAddress: '' }, - 1 - ) - const ownerIds = firstPageData.data - .map((id) => { - const post = getPostQuery.getQueryData(client, id) - return post?.struct.ownerId - }) - .filter(Boolean) - const profiles = await getProfilesServer(ownerIds) - profiles.forEach((profile) => { - getProfileQuery.setQueryData(client, profile.address, profile) - }) -} - -export const getStaticProps = getCommonStaticProps( - () => ({ - head: { - title: 'EPIC - A Meme-to-Earn Platform', - description: 'Earn meme coins 💰 by posting and liking memes 🤣', - disableZoom: true, - }, - }), - async () => { - const client = new QueryClient() - await Promise.all([ - prefetchChatData(client, env.NEXT_PUBLIC_MAIN_CHAT_ID), - prefetchChatData(client, env.NEXT_PUBLIC_CONTEST_CHAT_ID), - prefetchBlockedEntities( - client, - [env.NEXT_PUBLIC_MAIN_SPACE_ID].filter(Boolean), - [env.NEXT_PUBLIC_MAIN_CHAT_ID, env.NEXT_PUBLIC_CONTEST_CHAT_ID].filter( - Boolean - ) - ), - ] as const) - - return { - revalidate: 20, - props: { - dehydratedState: dehydrate(client), - }, - } - } -) - -export default MemesPage diff --git a/src/providers/solana/SolanaProvider.tsx b/src/providers/solana/SolanaProvider.tsx new file mode 100644 index 000000000..c57668bc0 --- /dev/null +++ b/src/providers/solana/SolanaProvider.tsx @@ -0,0 +1,39 @@ +import { WalletAdapterNetwork } from '@solana/wallet-adapter-base' +import { + ConnectionProvider, + WalletProvider, +} from '@solana/wallet-adapter-react' +import { WalletModalProvider } from '@solana/wallet-adapter-react-ui' +import { + PhantomWalletAdapter, + SolflareWalletAdapter, + TorusWalletAdapter, +} from '@solana/wallet-adapter-wallets' +import { clusterApiUrl } from '@solana/web3.js' +import { ReactNode, useMemo } from 'react' + +// Default styles that can be overridden by your app +require('@solana/wallet-adapter-react-ui/styles.css') + +export default function SolanaProvider({ children }: { children: ReactNode }) { + const network = WalletAdapterNetwork.Mainnet + const endpoint = useMemo(() => clusterApiUrl(network), [network]) + + const wallets = useMemo( + () => [ + new PhantomWalletAdapter(), + new SolflareWalletAdapter(), + new TorusWalletAdapter(), + ], + // eslint-disable-next-line react-hooks/exhaustive-deps + [network] + ) + + return ( + + + {children} + + + ) +} diff --git a/src/server/datahub-queue/external-token.ts b/src/server/datahub-queue/external-token.ts new file mode 100644 index 000000000..33cc0e42f --- /dev/null +++ b/src/server/datahub-queue/external-token.ts @@ -0,0 +1,35 @@ +import { SocialEventDataApiInput } from '@subsocial/data-hub-sdk' +import { gql } from 'graphql-request' +import { + SyncExternalTokenBalancesMutation, + SyncExternalTokenBalancesMutationVariables, +} from './generated' +import { datahubQueueRequest, throwErrorIfNotProcessed } from './utils' + +const SYNC_EXTERNAL_TOKEN_BALANCES = gql` + mutation SyncExternalTokenBalances($args: SocialProfileAddReferrerIdInput!) { + socialProfileSyncExternalTokenBalance(args: $args) { + processed + callId + message + } + } +` + +export async function syncExternalTokenBalances( + input: SocialEventDataApiInput +) { + const res = await datahubQueueRequest< + SyncExternalTokenBalancesMutation, + SyncExternalTokenBalancesMutationVariables + >({ + document: SYNC_EXTERNAL_TOKEN_BALANCES, + variables: { + args: input as any, + }, + }) + throwErrorIfNotProcessed( + res.socialProfileSyncExternalTokenBalance, + 'Failed to sync external token balances' + ) +} diff --git a/src/server/datahub-queue/generated.ts b/src/server/datahub-queue/generated.ts index c6926de20..432ed01d7 100644 --- a/src/server/datahub-queue/generated.ts +++ b/src/server/datahub-queue/generated.ts @@ -50,6 +50,22 @@ export type CreateMutateActiveStakingSuperLikeInput = { sig: Scalars['String']['input']; }; +export type CreateMutateContentContainerConfigInput = { + callData?: InputMaybe; + dataType: SocialEventDataType; + protVersion?: InputMaybe; + providerAddr: Scalars['String']['input']; + sig: Scalars['String']['input']; +}; + +export type CreateMutateExternalTokenInput = { + callData?: InputMaybe; + dataType: SocialEventDataType; + protVersion?: InputMaybe; + providerAddr: Scalars['String']['input']; + sig: Scalars['String']['input']; +}; + export type CreateMutateGamificationEntityInput = { callData?: InputMaybe; dataType: SocialEventDataType; @@ -183,11 +199,14 @@ export type Mutation = { addPostViewsBatch: IngestDataResponseDto; addTappingActivityStates: IngestDataResponseDto; claimEntranceDailyReward: IngestDataResponseDto; + contentContainerConfigCreate: IngestDataResponseDto; + contentContainerConfigUpdate: IngestDataResponseDto; createLinkedIdentity: IngestDataResponseDto; createPostOffChain: IngestDataResponseDto; createPostOptimistic: IngestDataResponseDto; createSpaceOffChain: IngestDataResponseDto; deleteLinkedIdentity: IngestDataResponseDto; + externalTokenCreate: IngestDataResponseDto; gamificationClaimTask: IngestDataResponseDto; gamificationUpdateTaskStatus: IngestDataResponseDto; ingestDataFromIndexerNeynar: IngestPersistentDataFromSquidResponseDto; @@ -203,6 +222,7 @@ export type Mutation = { setPostApproveStatus: IngestDataResponseDto; socialProfileAddReferrerId: IngestDataResponseDto; socialProfileSetActionPermissions: IngestDataResponseDto; + socialProfileSyncExternalTokenBalance: IngestDataResponseDto; updateLinkedIdentityExternalProvider: IngestDataResponseDto; updatePostBlockchainSyncStatus: IngestDataResponseDto; updatePostOptimistic: IngestDataResponseDto; @@ -245,6 +265,16 @@ export type MutationClaimEntranceDailyRewardArgs = { }; +export type MutationContentContainerConfigCreateArgs = { + args: CreateMutateContentContainerConfigInput; +}; + + +export type MutationContentContainerConfigUpdateArgs = { + args: CreateMutateContentContainerConfigInput; +}; + + export type MutationCreateLinkedIdentityArgs = { createLinkedIdentityInput: CreateMutateLinkedIdentityInput; }; @@ -270,6 +300,11 @@ export type MutationDeleteLinkedIdentityArgs = { }; +export type MutationExternalTokenCreateArgs = { + args: CreateMutateExternalTokenInput; +}; + + export type MutationGamificationClaimTaskArgs = { args: CreateMutateGamificationEntityInput; }; @@ -345,6 +380,11 @@ export type MutationSocialProfileSetActionPermissionsArgs = { }; +export type MutationSocialProfileSyncExternalTokenBalanceArgs = { + args: SocialProfileAddReferrerIdInput; +}; + + export type MutationUpdateLinkedIdentityExternalProviderArgs = { args: CreateMutateLinkedIdentityInput; }; @@ -450,6 +490,8 @@ export enum SocialCallName { SynthAddLinkedIdentityExternalProvider = 'synth_add_linked_identity_external_provider', SynthAddPostView = 'synth_add_post_view', SynthAddPostViewsBatch = 'synth_add_post_views_batch', + SynthCreateContentContainerConfig = 'synth_create_content_container_config', + SynthCreateExternalToken = 'synth_create_external_token', SynthCreateLinkedIdentity = 'synth_create_linked_identity', SynthCreatePostTxFailed = 'synth_create_post_tx_failed', SynthCreatePostTxRetry = 'synth_create_post_tx_retry', @@ -475,6 +517,8 @@ export enum SocialCallName { SynthSetPostApproveStatus = 'synth_set_post_approve_status', SynthSocialProfileAddReferrerId = 'synth_social_profile_add_referrer_id', SynthSocialProfileSetActionPermissions = 'synth_social_profile_set_action_permissions', + SynthSocialProfileSyncExternalTokenBalance = 'synth_social_profile_sync_external_token_balance', + SynthUpdateContentContainerConfig = 'synth_update_content_container_config', SynthUpdateLinkedIdentityExternalProvider = 'synth_update_linked_identity_external_provider', SynthUpdatePostTxFailed = 'synth_update_post_tx_failed', SynthUpdatePostTxRetry = 'synth_update_post_tx_retry', @@ -547,6 +591,13 @@ export type LinkIdentityMutationVariables = Exact<{ export type LinkIdentityMutation = { __typename?: 'Mutation', initLinkedIdentity: { __typename?: 'IngestDataResponseDto', processed: boolean, callId?: string | null, message?: string | null } }; +export type SyncExternalTokenBalancesMutationVariables = Exact<{ + args: SocialProfileAddReferrerIdInput; +}>; + + +export type SyncExternalTokenBalancesMutation = { __typename?: 'Mutation', socialProfileSyncExternalTokenBalance: { __typename?: 'IngestDataResponseDto', processed: boolean, callId?: string | null, message?: string | null } }; + export type CreateFramesLikeMutationVariables = Exact<{ args: CreateMutateActiveStakingSuperLikeInput; }>; @@ -698,6 +749,15 @@ export const LinkIdentity = gql` } } `; +export const SyncExternalTokenBalances = gql` + mutation SyncExternalTokenBalances($args: SocialProfileAddReferrerIdInput!) { + socialProfileSyncExternalTokenBalance(args: $args) { + processed + callId + message + } +} + `; export const CreateFramesLike = gql` mutation CreateFramesLike($args: CreateMutateActiveStakingSuperLikeInput!) { activeStakingCreateFarcasterFrameLike(args: $args) { diff --git a/src/server/datahub-queue/identity.ts b/src/server/datahub-queue/identity.ts index ae208c4a7..bd0b1683c 100644 --- a/src/server/datahub-queue/identity.ts +++ b/src/server/datahub-queue/identity.ts @@ -55,7 +55,6 @@ const ADD_EXTERNAL_PROVIDER_TO_IDENTITY_MUTATION = gql` export async function addExternalProviderToIdentity( input: SocialEventDataApiInput ) { - await backendSigWrapper(input) const res = await datahubQueueRequest< AddExternalProviderToIdentityMutation, AddExternalProviderToIdentityMutationVariables @@ -65,6 +64,7 @@ export async function addExternalProviderToIdentity( args: input as any, }, }) + throwErrorIfNotProcessed( res.addNewLinkedIdentityExternalProvider, 'Failed to add external provider to identity' diff --git a/src/services/api/mutation.ts b/src/services/api/mutation.ts index a82d13839..6b3cf9191 100644 --- a/src/services/api/mutation.ts +++ b/src/services/api/mutation.ts @@ -1,5 +1,6 @@ import { CreateUserIdResponse } from '@/pages/api/create-user-id' import { ApiDatahubRemoveIdentityBody } from '@/pages/api/datahub/remove-identity' +import { ApiEncryptResponseData } from '@/pages/api/encrypt' import { RevalidateChatInput } from '@/pages/api/revalidation/chat' import { SaveFileRequest, SaveFileResponse } from '@/pages/api/save-file' import { SaveImageResponse } from '@/pages/api/save-image' @@ -56,3 +57,9 @@ async function removeMyLinkedIdentity() { return apiInstance.post('/api/datahub/remove-identity', data) } export const useRemoveMyLinkedIdentity = mutationWrapper(removeMyLinkedIdentity) + +async function encryptData(data: string) { + const res = await apiInstance.post('/api/encrypt', { data }) + return res.data as ApiEncryptResponseData +} +export const useEncryptData = mutationWrapper(encryptData) diff --git a/src/services/datahub/content-containers/query.ts b/src/services/datahub/content-containers/query.ts new file mode 100644 index 000000000..7c6acff4a --- /dev/null +++ b/src/services/datahub/content-containers/query.ts @@ -0,0 +1,59 @@ +import { createQuery } from '@/subsocial-query' +import { gql } from 'graphql-request' +import { + ContentContainerConfigsArgsInputDto, + GetContentContainersQuery, + GetContentContainersQueryVariables, +} from '../generated-query' +import { datahubQueryRequest } from '../utils' + +const GET_CONTENT_CONTAINERS = gql` + query GetContentContainers($args: ContentContainerConfigsArgsInputDto!) { + contentContainerConfigs(args: $args) { + data { + id + rootPost { + id + } + rootSpace { + id + } + metadata { + title + description + coverImage + image + } + createCommentPricePointsAmount + containerType + accessThresholdPointsAmount + likeThresholdExternalTokenAmount + accessThresholdExternalTokenAmount + externalToken { + id + chain + name + address + decimals + } + } + total + offset + } + } +` +export type ContentContainer = + GetContentContainersQuery['contentContainerConfigs']['data'][0] +export const getContentContainersQuery = createQuery({ + key: 'getContentContainers', + fetcher: async (args: ContentContainerConfigsArgsInputDto) => { + const res = await datahubQueryRequest< + GetContentContainersQuery, + GetContentContainersQueryVariables + >({ + document: GET_CONTENT_CONTAINERS, + variables: { args }, + }) + return res.contentContainerConfigs + }, +}) diff --git a/src/services/datahub/content-staking/query.ts b/src/services/datahub/content-staking/query.ts index 53ec6a3c1..75e1d2398 100644 --- a/src/services/datahub/content-staking/query.ts +++ b/src/services/datahub/content-staking/query.ts @@ -636,15 +636,9 @@ export const getDailyRewardQuery = createQuery({ export const GET_TOKENOMICS_METADATA = gql` query GetTokenomicsMetadata { activeStakingTokenomicMetadata { + maxTapsPerDay superLikeWeightPoints likerRewardDistributionPercent - socialActionPrice { - createCommentPoints - } - thresholdsAndRules { - contextPostId - thresholdPointsAmount - } } } ` diff --git a/src/services/datahub/events/subscription.tsx b/src/services/datahub/events/subscription.tsx index 92b138920..b9fb177e7 100644 --- a/src/services/datahub/events/subscription.tsx +++ b/src/services/datahub/events/subscription.tsx @@ -1,6 +1,6 @@ import Toast from '@/components/Toast' import { linkEvmAddressCallbacks } from '@/components/modals/LinkEvmAddressModal' -import { claimTaskErrorStore } from '@/modules/telegram/TasksPage/ClaimTaskTokensModal' +import { claimTaskErrorStore } from '@/components/tasks/config' import { getPostQuery } from '@/services/api/query' import { deleteOptimisticData } from '@/services/subsocial/commentIds/optimistic' import { getCurrentWallet } from '@/services/subsocial/hooks' @@ -14,6 +14,7 @@ import { getDailyRewardQuery, getTodaySuperLikeCountQuery, } from '../content-staking/query' +import { syncExternalTokenBalancesCallbacks } from '../externalTokenBalances/mutation' import { ServiceMessageStatusCode, SocialCallName, @@ -38,13 +39,8 @@ export function useDatahubEventsSubscriber() { useEffect(() => { if (!myAddress) return - const listener = () => { - unsubRef.current = subscription(queryClient) - } - listener() - document.addEventListener('visibilitychange', listener) + unsubRef.current = subscription(queryClient) return () => { - document.removeEventListener('visibilitychange', listener) unsubRef.current?.() } }, [queryClient, myAddress]) @@ -309,6 +305,23 @@ async function processSubscriptionEvent( } } + if ( + eventData.meta.callName === + SocialCallName.SynthSocialProfileSyncExternalTokenBalance && + eventData.meta.code === ServiceMessageStatusCode.InternalServerError + ) { + const externalTokenId = eventData.meta.extension.externalTokenId + if (externalTokenId) { + syncExternalTokenBalancesCallbacks.triggerCallbacks( + { + address: mainAddress, + externalTokenId: eventData.meta.extension.externalTokenId, + }, + 'onError' + ) + } + } + if (reason) { if (eventData.meta.callName === SocialCallName.CreatePost) { const callId = eventData.meta.callId diff --git a/src/services/datahub/externalTokenBalances/mutation.ts b/src/services/datahub/externalTokenBalances/mutation.ts new file mode 100644 index 000000000..10465cf6f --- /dev/null +++ b/src/services/datahub/externalTokenBalances/mutation.ts @@ -0,0 +1,125 @@ +import { apiInstance } from '@/services/api/utils' +import { getCurrentWallet } from '@/services/subsocial/hooks' +import { getMyMainAddress } from '@/stores/my-account' +import mutationWrapper from '@/subsocial-query/base' +import { + SocialCallDataArgs, + socialCallName, + SynthSocialProfileSyncExternalTokenBalanceCallParsedArgs, +} from '@subsocial/data-hub-sdk' +import { createSignedSocialDataEvent, DatahubParams } from '../utils' + +async function syncExternalTokenBalances( + params: DatahubParams< + SocialCallDataArgs<'synth_social_profile_sync_external_token_balance'> + > +) { + const input = await createSignedSocialDataEvent( + socialCallName.synth_social_profile_sync_external_token_balance, + params, + params.args + ) + + await apiInstance.post('/api/datahub/external-token', { + payload: input, + }) +} + +export const syncExternalTokenBalancesCallbacks: { + _data: Record< + string, + { + onSuccessCallbacks: (() => void)[] + onErrorCallbacks: (() => void)[] + } + > + getKey: (data: { address: string; externalTokenId: string }) => string + getCallbacks: (data: { address: string; externalTokenId: string }) => { + onSuccessCallbacks: (() => void)[] + onErrorCallbacks: (() => void)[] + } + setCallback: ( + data: { address: string; externalTokenId: string }, + { + onSuccessCallbacks, + onErrorCallbacks, + }: { + onSuccessCallbacks?: () => void + onErrorCallbacks?: () => void + } + ) => void + triggerCallbacks: ( + data: { address: string; externalTokenId: string }, + type: 'onSuccess' | 'onError' + ) => void +} = { + _data: {}, + getKey: ({ address, externalTokenId }) => `${address}-${externalTokenId}`, + getCallbacks(data) { + const key = this.getKey(data) + if (!this._data[key]) { + this._data[key] = { + onSuccessCallbacks: [], + onErrorCallbacks: [], + } + } + return this._data[key] + }, + setCallback(data, { onSuccessCallbacks, onErrorCallbacks }) { + const key = this.getKey(data) + if (!this._data[key]) { + this._data[key] = { + onSuccessCallbacks: [], + onErrorCallbacks: [], + } + } + if (onSuccessCallbacks) { + this._data[key].onSuccessCallbacks.push(onSuccessCallbacks) + } + if (onErrorCallbacks) { + this._data[key].onErrorCallbacks.push(onErrorCallbacks) + } + }, + triggerCallbacks(data, type) { + const key = this.getKey(data) + if (!this._data[key]) { + return + } + const callbacks = this._data[key][`${type}Callbacks`] + callbacks.forEach((cb) => cb()) + this._data[key] = { + onSuccessCallbacks: [], + onErrorCallbacks: [], + } + }, +} +const useSyncExternalTokenBalancesRaw = mutationWrapper( + async (data: SynthSocialProfileSyncExternalTokenBalanceCallParsedArgs) => { + await syncExternalTokenBalances({ + ...getCurrentWallet(), + args: data, + }) + } +) +export function useSyncExternalTokenBalances( + config?: Parameters[0] & { + onSuccessSync?: () => void + onErrorSync?: () => void + } +) { + return useSyncExternalTokenBalancesRaw({ + ...config, + onMutate: (...params) => { + const [{ externalTokenId }] = params + config?.onMutate?.(...params) + + syncExternalTokenBalancesCallbacks.setCallback( + { address: getMyMainAddress() ?? '', externalTokenId }, + { + onSuccessCallbacks: config?.onSuccessSync, + onErrorCallbacks: config?.onErrorSync, + } + ) + }, + }) +} diff --git a/src/services/datahub/externalTokenBalances/query.ts b/src/services/datahub/externalTokenBalances/query.ts new file mode 100644 index 000000000..bdbde550b --- /dev/null +++ b/src/services/datahub/externalTokenBalances/query.ts @@ -0,0 +1,80 @@ +import { getMyMainAddress } from '@/stores/my-account' +import { createQuery } from '@/subsocial-query' +import { LocalStorage } from '@/utils/storage' +import { convertToBigInt } from '@/utils/strings' +import { gql } from 'graphql-request' +import { + GetExternalTokenBalancesQuery, + GetExternalTokenBalancesQueryVariables, +} from '../generated-query' +import { datahubQueryRequest } from '../utils' + +const GET_EXTERNAL_TOKEN_BALANCES = gql` + query GetExternalTokenBalances($address: String!) { + socialProfileBalances(args: { where: { address: $address } }) { + externalTokenBalances { + id + active + amount + blockchainAddress + externalToken { + id + address + decimals + } + } + } + } +` +export const getExternalTokenBalancesCache = new LocalStorage( + () => 'my-balance-cache' +) +export type ExternalTokenBalance = NonNullable< + NonNullable< + GetExternalTokenBalancesQuery['socialProfileBalances'] + >['externalTokenBalances'] +>[number] & { parsedAmount: number } +async function getExternalTokenBalances( + address: string +): Promise { + const res = await datahubQueryRequest< + GetExternalTokenBalancesQuery, + GetExternalTokenBalancesQueryVariables + >({ + document: GET_EXTERNAL_TOKEN_BALANCES, + variables: { address }, + }) + + const balances = (res.socialProfileBalances?.externalTokenBalances || []) + .filter((balance) => balance.active) + .map((balance) => ({ + ...balance, + parsedAmount: Number( + convertToBigInt(balance.amount) / + BigInt(10 ** balance.externalToken.decimals) + ), + })) + if (address === getMyMainAddress()) { + getExternalTokenBalancesCache.set(JSON.stringify(balances)) + } + return balances +} +export const getExternalTokenBalancesQuery = createQuery({ + key: 'getExternalTokenBalances', + fetcher: getExternalTokenBalances, + defaultConfigGenerator: (address) => { + let cache: ExternalTokenBalance[] | undefined = undefined + if (getMyMainAddress() === address) { + try { + const data = JSON.parse(getExternalTokenBalancesCache.get() || '') + if (Array.isArray(data)) { + cache = data as ExternalTokenBalance[] + } + } catch {} + } + return { + enabled: !!address, + placeholderData: cache || undefined, + } + }, +}) diff --git a/src/services/datahub/externalTokenBalances/subscription.tsx b/src/services/datahub/externalTokenBalances/subscription.tsx new file mode 100644 index 000000000..9b1bc40de --- /dev/null +++ b/src/services/datahub/externalTokenBalances/subscription.tsx @@ -0,0 +1,148 @@ +import Toast from '@/components/Toast' +import { getMyMainAddress, useMyMainAddress } from '@/stores/my-account' +import { convertToBigInt } from '@/utils/strings' +import { QueryClient, useQueryClient } from '@tanstack/react-query' +import { gql } from 'graphql-request' +import { useEffect, useRef } from 'react' +import { toast } from 'sonner' +import { SubscribeExternalTokenBalancesSubscription } from '../generated-query' +import { datahubSubscription } from '../utils' +import { syncExternalTokenBalancesCallbacks } from './mutation' +import { + ExternalTokenBalance, + getExternalTokenBalancesCache, + getExternalTokenBalancesQuery, +} from './query' + +export function useDatahubExternalTokenBalancesSubscriber() { + const queryClient = useQueryClient() + const unsubRef = useRef<(() => void) | undefined>() + const myAddress = useMyMainAddress() + + useEffect(() => { + if (!myAddress) return + + const listener = () => { + unsubRef.current = subscription(queryClient, myAddress!) + } + listener() + return () => { + unsubRef.current?.() + } + }, [queryClient, myAddress]) +} + +const SUBSCRIBE_EXTERNAL_TOKEN_BALANCES = gql` + subscription SubscribeExternalTokenBalances($address: String!) { + socialProfileExternalTokenBalanceSubscription(args: { address: $address }) { + event + entity { + id + active + amount + blockchainAddress + externalToken { + id + address + decimals + } + } + } + } +` + +export function subscribeExternalTokenBalances( + queryClient: QueryClient, + myAddress: string, + once?: boolean, + callback?: () => void +) { + const client = datahubSubscription() + let unsub = client.subscribe( + { + query: SUBSCRIBE_EXTERNAL_TOKEN_BALANCES, + variables: { address: myAddress }, + }, + { + complete: () => undefined, + next: async (data) => { + const eventData = + data.data?.socialProfileExternalTokenBalanceSubscription + if (!eventData) return + + await processSubscriptionEvent(queryClient, eventData) + callback?.() + if (once) { + unsub() + } + }, + error: () => { + console.error('error subscription') + }, + } + ) + return unsub +} + +let isSubscribed = false +export function subscription(queryClient: QueryClient, myAddress: string) { + if (isSubscribed) return + isSubscribed = true + + async function subscribe() { + return subscribeExternalTokenBalances(queryClient, myAddress) + } + + const unsub = subscribe() + + return () => { + unsub.then((unsub) => unsub?.()) + isSubscribed = false + } +} + +async function processSubscriptionEvent( + client: QueryClient, + eventData: SubscribeExternalTokenBalancesSubscription['socialProfileExternalTokenBalanceSubscription'] +) { + const mainAddress = getMyMainAddress() ?? '' + getExternalTokenBalancesQuery.setQueryData(client, mainAddress, (oldData) => { + const newToken: ExternalTokenBalance = { + ...eventData.entity, + parsedAmount: Number( + convertToBigInt(eventData.entity.amount) / + BigInt(10 ** eventData.entity.externalToken.decimals) + ), + } + const oldDataBalanceIndex = oldData?.findIndex( + (balance) => balance.id === eventData.entity.id + ) + if (oldDataBalanceIndex === -1 || oldDataBalanceIndex === undefined) { + if (eventData.entity.active) return [...(oldData ?? []), newToken] + return oldData + } + + const newData = [...(oldData ?? [])] + if (eventData.entity.active) { + newData[oldDataBalanceIndex] = newToken + } else { + newData.splice(oldDataBalanceIndex, 1) + } + return newData + }) + toast.custom((t) => ( + + )) + syncExternalTokenBalancesCallbacks.triggerCallbacks( + { + address: mainAddress, + externalTokenId: eventData.entity.externalToken.id, + }, + 'onSuccess' + ) + const newData = getExternalTokenBalancesQuery.getQueryData( + client, + mainAddress + ) + getExternalTokenBalancesCache.set(JSON.stringify(newData)) +} diff --git a/src/services/datahub/generated-query.ts b/src/services/datahub/generated-query.ts index 61de38e0d..08136cb12 100644 --- a/src/services/datahub/generated-query.ts +++ b/src/services/datahub/generated-query.ts @@ -327,6 +327,83 @@ export type CommentDataShort = { summary?: Maybe } +export type ContainerConfigMetadata = { + __typename?: 'ContainerConfigMetadata' + coverImage?: Maybe + description?: Maybe + image?: Maybe + isExternalTokenRewardPool?: Maybe + rewardPoolAmount?: Maybe + title?: Maybe + winnersNumber?: Maybe +} + +export type ContentContainerConfig = { + __typename?: 'ContentContainerConfig' + accessThresholdExternalTokenAmount?: Maybe + accessThresholdPointsAmount?: Maybe + addressBlockOneTimePenaltyPointsAmount?: Maybe + closedAt?: Maybe + containerType: ContentContainerType + createCommentPricePointsAmount?: Maybe + createdAtTime: Scalars['DateTime']['output'] + expirationWindowFrom?: Maybe + expirationWindowTo?: Maybe + externalToken?: Maybe + hidden: Scalars['Boolean']['output'] + id: Scalars['String']['output'] + isCreatorModerationPenalty?: Maybe + isDeductionRewardsOnModeration?: Maybe + isExpirable: Scalars['Boolean']['output'] + isPostModerationPenalty?: Maybe + likeThresholdExternalTokenAmount?: Maybe + metadata: ContainerConfigMetadata + openAt?: Maybe + postBlockOneTimePenaltyPointsAmount?: Maybe + rootPost: Post + rootSpace?: Maybe + slug: Scalars['String']['output'] + updatedAtTime?: Maybe +} + +export type ContentContainerConfigsArgsInputDto = { + filter: ContentContainerConfigsFilter + offset?: InputMaybe + orderBy?: InputMaybe + orderDirection?: InputMaybe + pageSize?: InputMaybe +} + +export type ContentContainerConfigsFilter = { + containerType?: InputMaybe> + hidden?: InputMaybe + ids?: InputMaybe> + isClosed?: InputMaybe + isExpirable?: InputMaybe + isOpen?: InputMaybe + rootPostIds?: InputMaybe> + rootSpaceId?: InputMaybe +} + +export type ContentContainerConfigsResourcesResponseDto = { + __typename?: 'ContentContainerConfigsResourcesResponseDto' + data: Array + offset?: Maybe + pageSize?: Maybe + total?: Maybe +} + +export type ContentContainerExternalTokenContractMethods = { + __typename?: 'ContentContainerExternalTokenContractMethods' + balanceOf: Scalars['String']['output'] +} + +export enum ContentContainerType { + CommunityChannel = 'COMMUNITY_CHANNEL', + Contest = 'CONTEST', + PublicChannel = 'PUBLIC_CHANNEL', +} + export type ContentExtension = { __typename?: 'ContentExtension' amount?: Maybe @@ -439,6 +516,8 @@ export enum DataHubSubscriptionEventEnum { ServiceAccountWarningEvent = 'SERVICE_ACCOUNT_WARNING_EVENT', SocialProfileBalancesCreated = 'SOCIAL_PROFILE_BALANCES_CREATED', SocialProfileBalancesStateUpdated = 'SOCIAL_PROFILE_BALANCES_STATE_UPDATED', + SocialProfileExternalTokenBalanceCreated = 'SOCIAL_PROFILE_EXTERNAL_TOKEN_BALANCE_CREATED', + SocialProfileExternalTokenBalanceStateUpdated = 'SOCIAL_PROFILE_EXTERNAL_TOKEN_BALANCE_STATE_UPDATED', } export enum DataType { @@ -535,6 +614,25 @@ export type ExtensionPinnedResource = { space?: Maybe } +export type ExternalToken = { + __typename?: 'ExternalToken' + address: Scalars['String']['output'] + chain: ExternalTokenChain + contractAbi: Scalars['String']['output'] + contractMethods?: Maybe + createdByAccount: Account + decimals: Scalars['Int']['output'] + id: Scalars['String']['output'] + name: Scalars['String']['output'] + relatedContentContainers: Array + symbol: Scalars['String']['output'] +} + +export enum ExternalTokenChain { + Ethereum = 'ETHEREUM', + Solana = 'SOLANA', +} + export type FindPostsFilter = { AND?: InputMaybe> OR?: InputMaybe> @@ -607,6 +705,7 @@ export type FindSpacesWithFilterResponseDto = { export type FindTasksFilter = { address: Scalars['String']['input'] completed?: InputMaybe + rootSpaceId?: InputMaybe } export type FindTasksResponseDto = { @@ -651,6 +750,7 @@ export type GamificationTask = { periodicityConfig?: Maybe periodicityType: GamificationTaskPeriodicity rewardPoints: Scalars['String']['output'] + rootSpace?: Maybe startedAt?: Maybe tag: Scalars['String']['output'] updatedAt?: Maybe @@ -727,6 +827,7 @@ export type InitModeratorInputDto = { export type IsBalanceSufficientForSocialActionInput = { address: Scalars['String']['input'] + containerId?: InputMaybe socialAction: SocialAction } @@ -772,6 +873,7 @@ export type LinkedIdentityExternalProvider = { isAutoInitialized: Scalars['Boolean']['output'] linkedIdentity: LinkedIdentity provider: IdentityProvider + synthetic: Scalars['Boolean']['output'] updatedAtTime?: Maybe username?: Maybe } @@ -1053,6 +1155,7 @@ export type Post = { canonical?: Maybe /** content CID */ content?: Maybe + contentContainerConfig?: Maybe createdAtBlock?: Maybe createdAtTime?: Maybe createdByAccount: Account @@ -1185,6 +1288,7 @@ export type Query = { activeStakingDateDetails: DateTimeDetailsResponseDto activeStakingIsActiveStaker: Scalars['Boolean']['output'] activeStakingRankedPostIdsByActiveStakingActivity: RankedPostIdsByActiveStakingActivityResponse + activeStakingRankedPostIdsBySuperLikesNumber: RankedPostIdsBySuperLikesCountResponse activeStakingRewardsByPosts: Array activeStakingRewardsByWeek: Array activeStakingRewardsReportByWeek: Array @@ -1196,6 +1300,7 @@ export type Query = { activeStakingSuperLikesNumberGoal: Scalars['Int']['output'] activeStakingTokenomicMetadata: TokenomicMetadataResponse activeStakingTotalActivityMetricsForFixedPeriod: TotalActivityMetricsForFixedPeriodResponseDto + contentContainerConfigs: ContentContainerConfigsResourcesResponseDto domains: DomainsResponse gamificationEntranceDailyRewardSequence?: Maybe gamificationTappingActivityStatsByDate: TappingActivityStatsByDateResponseDto @@ -1267,6 +1372,10 @@ export type QueryActiveStakingRankedPostIdsByActiveStakingActivityArgs = { args: RankedPostIdsByActiveStakingActivityInput } +export type QueryActiveStakingRankedPostIdsBySuperLikesNumberArgs = { + args: RankedPostIdsBySuperLikesCountInput +} + export type QueryActiveStakingRewardsByPostsArgs = { args: RewardsByPostsInput } @@ -1303,6 +1412,10 @@ export type QueryActiveStakingTotalActivityMetricsForFixedPeriodArgs = { args: TotalActivityMetricsForFixedPeriodInput } +export type QueryContentContainerConfigsArgs = { + args: ContentContainerConfigsArgsInputDto +} + export type QueryDomainsArgs = { args: DomainsInput } @@ -1445,6 +1558,14 @@ export type RankedAddressWithDetails = { reward: Scalars['String']['output'] } +export type RankedPostIdBySuperLikesCountWithDetails = { + __typename?: 'RankedPostIdBySuperLikesCountWithDetails' + postId: Scalars['String']['output'] + rank: Scalars['Int']['output'] + rootPostId?: Maybe + score: Scalars['Float']['output'] +} + export type RankedPostIdWithDetails = { __typename?: 'RankedPostIdWithDetails' ownerAddress?: Maybe @@ -1474,6 +1595,27 @@ export type RankedPostIdsByActiveStakingActivityResponse = { total: Scalars['Int']['output'] } +export type RankedPostIdsBySuperLikesCountInput = { + filter?: InputMaybe + limit?: InputMaybe + offset?: InputMaybe + order?: InputMaybe +} + +export type RankedPostIdsBySuperLikesCountInputFilter = { + period: ActiveStakingPeriod + rootPostId?: InputMaybe + timestamp?: InputMaybe +} + +export type RankedPostIdsBySuperLikesCountResponse = { + __typename?: 'RankedPostIdsBySuperLikesCountResponse' + data: Array + limit: Scalars['Int']['output'] + offset: Scalars['Int']['output'] + total: Scalars['Int']['output'] +} + export type RankedReferrerWithDetails = { __typename?: 'RankedReferrerWithDetails' address: Scalars['String']['output'] @@ -1695,6 +1837,8 @@ export enum SocialCallName { SynthAddLinkedIdentityExternalProvider = 'synth_add_linked_identity_external_provider', SynthAddPostView = 'synth_add_post_view', SynthAddPostViewsBatch = 'synth_add_post_views_batch', + SynthCreateContentContainerConfig = 'synth_create_content_container_config', + SynthCreateExternalToken = 'synth_create_external_token', SynthCreateLinkedIdentity = 'synth_create_linked_identity', SynthCreatePostTxFailed = 'synth_create_post_tx_failed', SynthCreatePostTxRetry = 'synth_create_post_tx_retry', @@ -1718,6 +1862,8 @@ export enum SocialCallName { SynthSetPostApproveStatus = 'synth_set_post_approve_status', SynthSocialProfileAddReferrerId = 'synth_social_profile_add_referrer_id', SynthSocialProfileSetActionPermissions = 'synth_social_profile_set_action_permissions', + SynthSocialProfileSyncExternalTokenBalance = 'synth_social_profile_sync_external_token_balance', + SynthUpdateContentContainerConfig = 'synth_update_content_container_config', SynthUpdateLinkedIdentityExternalProvider = 'synth_update_linked_identity_external_provider', SynthUpdatePostTxFailed = 'synth_update_post_tx_failed', SynthUpdatePostTxRetry = 'synth_update_post_tx_retry', @@ -1761,6 +1907,7 @@ export type SocialProfileBalances = { activeStakingTempReward: Scalars['String']['output'] activeStakingTempToken: Scalars['String']['output'] activeStakingTempTokenInitial: Scalars['String']['output'] + externalTokenBalances?: Maybe> id: Scalars['String']['output'] } @@ -1774,6 +1921,25 @@ export type SocialProfileBalancesSubscriptionPayload = { event: DataHubSubscriptionEventEnum } +export type SocialProfileExternalTokenBalance = { + __typename?: 'SocialProfileExternalTokenBalance' + active: Scalars['Boolean']['output'] + amount: Scalars['String']['output'] + blockchainAddress: Scalars['String']['output'] + createdAt: Scalars['DateTime']['output'] + externalToken: ExternalToken + id: Scalars['String']['output'] + linkedIdentityExternalProvider: LinkedIdentityExternalProvider + socialProfileBalance: SocialProfileBalances + updatedAt?: Maybe +} + +export type SocialProfileExternalTokenBalanceSubscriptionPayload = { + __typename?: 'SocialProfileExternalTokenBalanceSubscriptionPayload' + entity: SocialProfileExternalTokenBalance + event: DataHubSubscriptionEventEnum +} + export type SocialProfileInput = { where: SocialProfileInputWhereArgs } @@ -1870,6 +2036,7 @@ export type Subscription = { post: PostSubscriptionPayload serviceMessageToTarget: AccountServiceMessageToTargetResponse socialProfileBalancesSubscription: SocialProfileBalancesSubscriptionPayload + socialProfileExternalTokenBalanceSubscription: SocialProfileExternalTokenBalanceSubscriptionPayload } export type SubscriptionServiceMessageToTargetArgs = { @@ -1880,6 +2047,10 @@ export type SubscriptionSocialProfileBalancesSubscriptionArgs = { args: SocialProfileBalancesSubscriptionInput } +export type SubscriptionSocialProfileExternalTokenBalanceSubscriptionArgs = { + args: SocialProfileBalancesSubscriptionInput +} + export type SubscriptionPayloadMeta = { __typename?: 'SubscriptionPayloadMeta' stakerDistributedRewardPoints: Scalars['String']['output'] @@ -2214,6 +2385,45 @@ export type SubscribeBalancesSubscription = { } } +export type GetContentContainersQueryVariables = Exact<{ + args: ContentContainerConfigsArgsInputDto +}> + +export type GetContentContainersQuery = { + __typename?: 'Query' + contentContainerConfigs: { + __typename?: 'ContentContainerConfigsResourcesResponseDto' + total?: number | null + offset?: number | null + data: Array<{ + __typename?: 'ContentContainerConfig' + id: string + createCommentPricePointsAmount?: string | null + containerType: ContentContainerType + accessThresholdPointsAmount?: string | null + likeThresholdExternalTokenAmount?: string | null + accessThresholdExternalTokenAmount?: string | null + rootPost: { __typename?: 'Post'; id: string } + rootSpace?: { __typename?: 'Space'; id: string } | null + metadata: { + __typename?: 'ContainerConfigMetadata' + title?: string | null + description?: string | null + coverImage?: string | null + image?: string | null + } + externalToken?: { + __typename?: 'ExternalToken' + id: string + chain: ExternalTokenChain + name: string + address: string + decimals: number + } | null + }> + } +} + export type GetSuperLikeCountsQueryVariables = Exact<{ postIds: Array | Scalars['String']['input'] }> @@ -2388,17 +2598,9 @@ export type GetTokenomicsMetadataQuery = { __typename?: 'Query' activeStakingTokenomicMetadata: { __typename?: 'TokenomicMetadataResponse' + maxTapsPerDay: number superLikeWeightPoints: string likerRewardDistributionPercent: number - socialActionPrice: { - __typename?: 'SocialActionPriceResponse' - createCommentPoints: string - } - thresholdsAndRules: Array<{ - __typename?: 'ThresholdsAndRulesResponse' - contextPostId: string - thresholdPointsAmount: string - }> } } @@ -2443,6 +2645,55 @@ export type SubscribeEventsSubscription = { } } +export type GetExternalTokenBalancesQueryVariables = Exact<{ + address: Scalars['String']['input'] +}> + +export type GetExternalTokenBalancesQuery = { + __typename?: 'Query' + socialProfileBalances?: { + __typename?: 'SocialProfileBalances' + externalTokenBalances?: Array<{ + __typename?: 'SocialProfileExternalTokenBalance' + id: string + active: boolean + amount: string + blockchainAddress: string + externalToken: { + __typename?: 'ExternalToken' + id: string + address: string + decimals: number + } + }> | null + } | null +} + +export type SubscribeExternalTokenBalancesSubscriptionVariables = Exact<{ + address: Scalars['String']['input'] +}> + +export type SubscribeExternalTokenBalancesSubscription = { + __typename?: 'Subscription' + socialProfileExternalTokenBalanceSubscription: { + __typename?: 'SocialProfileExternalTokenBalanceSubscriptionPayload' + event: DataHubSubscriptionEventEnum + entity: { + __typename?: 'SocialProfileExternalTokenBalance' + id: string + active: boolean + amount: string + blockchainAddress: string + externalToken: { + __typename?: 'ExternalToken' + id: string + address: string + decimals: number + } + } + } +} + export type GetGeneralStatsQueryVariables = Exact<{ [key: string]: never }> export type GetGeneralStatsQuery = { @@ -2662,22 +2913,6 @@ export type GetUserReferralsStatsQuery = { } } -export type GetTokenomicMetadataQueryVariables = Exact<{ [key: string]: never }> - -export type GetTokenomicMetadataQuery = { - __typename?: 'Query' - activeStakingTokenomicMetadata: { - __typename?: 'TokenomicMetadataResponse' - maxTapsPerDay: number - superLikeWeightPoints: string - likerRewardDistributionPercent: number - socialActionPrice: { - __typename?: 'SocialActionPriceResponse' - createCommentPoints: string - } - } -} - export type GetBalanceQueryVariables = Exact<{ address: Scalars['String']['input'] }> @@ -3183,6 +3418,35 @@ export type GetUnapprovedMemesCountQuery = { } } +export type GetPostsCountByTodayQueryVariables = Exact<{ + createdAtTimeGte: Scalars['String']['input'] + createdAtTimeLte: Scalars['String']['input'] + postId: Scalars['String']['input'] +}> + +export type GetPostsCountByTodayQuery = { + __typename?: 'Query' + posts: { __typename?: 'FindPostsResponseDto'; total?: number | null } +} + +export type GetTopMemesQueryVariables = Exact<{ + timestamp: Scalars['String']['input'] +}> + +export type GetTopMemesQuery = { + __typename?: 'Query' + activeStakingRankedPostIdsBySuperLikesNumber: { + __typename?: 'RankedPostIdsBySuperLikesCountResponse' + total: number + data: Array<{ + __typename?: 'RankedPostIdBySuperLikesCountWithDetails' + postId: string + score: number + rank: number + }> + } +} + export type SubscribePostSubscriptionVariables = Exact<{ [key: string]: never }> export type SubscribePostSubscription = { @@ -3377,6 +3641,7 @@ export type GetSpacesQuery = { export type GetGamificationTasksQueryVariables = Exact<{ address: Scalars['String']['input'] + rootSpaceId: Scalars['String']['input'] }> export type GetGamificationTasksQuery = { @@ -3394,6 +3659,13 @@ export type GetGamificationTasksQuery = { completed: boolean claimed: boolean linkedIdentity: { __typename?: 'LinkedIdentity'; id: string } + metadata?: { + __typename?: 'GamificationTaskMetadata' + telegramChannelToJoin?: string | null + twitterChannelToJoin?: string | null + likesNumberToAchieve?: string | null + referralsNumberToAchieve?: number | null + } | null }> } } @@ -3493,6 +3765,41 @@ export const SubscribeBalances = gql` } } ` +export const GetContentContainers = gql` + query GetContentContainers($args: ContentContainerConfigsArgsInputDto!) { + contentContainerConfigs(args: $args) { + data { + id + rootPost { + id + } + rootSpace { + id + } + metadata { + title + description + coverImage + image + } + createCommentPricePointsAmount + containerType + accessThresholdPointsAmount + likeThresholdExternalTokenAmount + accessThresholdExternalTokenAmount + externalToken { + id + chain + name + address + decimals + } + } + total + offset + } + } +` export const GetSuperLikeCounts = gql` query GetSuperLikeCounts($postIds: [String!]!) { activeStakingSuperLikeCountsByPost(args: { postPersistentIds: $postIds }) { @@ -3623,15 +3930,9 @@ export const GetDailyReward = gql` export const GetTokenomicsMetadata = gql` query GetTokenomicsMetadata { activeStakingTokenomicMetadata { + maxTapsPerDay superLikeWeightPoints likerRewardDistributionPercent - socialActionPrice { - createCommentPoints - } - thresholdsAndRules { - contextPostId - thresholdPointsAmount - } } } ` @@ -3667,6 +3968,41 @@ export const SubscribeEvents = gql` } } ` +export const GetExternalTokenBalances = gql` + query GetExternalTokenBalances($address: String!) { + socialProfileBalances(args: { where: { address: $address } }) { + externalTokenBalances { + id + active + amount + blockchainAddress + externalToken { + id + address + decimals + } + } + } + } +` +export const SubscribeExternalTokenBalances = gql` + subscription SubscribeExternalTokenBalances($address: String!) { + socialProfileExternalTokenBalanceSubscription(args: { address: $address }) { + event + entity { + id + active + amount + blockchainAddress + externalToken { + id + address + decimals + } + } + } + } +` export const GetGeneralStats = gql` query GetGeneralStats { activeStakingTotalActivityMetricsForFixedPeriod( @@ -3862,18 +4198,6 @@ export const GetUserReferralsStats = gql` } } ` -export const GetTokenomicMetadata = gql` - query GetTokenomicMetadata { - activeStakingTokenomicMetadata { - maxTapsPerDay - superLikeWeightPoints - likerRewardDistributionPercent - socialActionPrice { - createCommentPoints - } - } - } -` export const GetBalance = gql` query GetBalance($address: String!) { socialProfileBalances(args: { where: { address: $address } }) { @@ -4166,6 +4490,45 @@ export const GetUnapprovedMemesCount = gql` } } ` +export const GetPostsCountByToday = gql` + query GetPostsCountByToday( + $createdAtTimeGte: String! + $createdAtTimeLte: String! + $postId: String! + ) { + posts( + args: { + filter: { + createdAtTimeGte: $createdAtTimeGte + createdAtTimeLte: $createdAtTimeLte + rootPostId: $postId + } + pageSize: 100 + } + ) { + total + } + } +` +export const GetTopMemes = gql` + query GetTopMemes($timestamp: String!) { + activeStakingRankedPostIdsBySuperLikesNumber( + args: { + filter: { period: DAY, timestamp: $timestamp } + limit: 5 + offset: 0 + order: DESC + } + ) { + data { + postId + score + rank + } + total + } + } +` export const SubscribePost = gql` subscription SubscribePost { post { @@ -4278,8 +4641,10 @@ export const GetSpaces = gql` ${SpaceFragment} ` export const GetGamificationTasks = gql` - query GetGamificationTasks($address: String!) { - gamificationTasks(args: { filter: { address: $address } }) { + query GetGamificationTasks($address: String!, $rootSpaceId: String!) { + gamificationTasks( + args: { filter: { address: $address, rootSpaceId: $rootSpaceId } } + ) { data { rewardPoints id @@ -4291,6 +4656,12 @@ export const GetGamificationTasks = gql` linkedIdentity { id } + metadata { + telegramChannelToJoin + twitterChannelToJoin + likesNumberToAchieve + referralsNumberToAchieve + } } total } diff --git a/src/services/datahub/identity/mutation.ts b/src/services/datahub/identity/mutation.ts index cb75c4b80..70eb6bef4 100644 --- a/src/services/datahub/identity/mutation.ts +++ b/src/services/datahub/identity/mutation.ts @@ -42,7 +42,7 @@ export async function linkIdentity( ) } -function reloadEveryIntervalUntilLinkedIdentityFound( +export function reloadEveryIntervalUntilLinkedIdentityFound( foundChecker: (linkedIdentity: Identity | null) => boolean ) { const intervalId = setInterval(async () => { @@ -95,7 +95,7 @@ async function addExternalProviderToIdentity( SocialCallDataArgs<'synth_add_linked_identity_external_provider'> > ) { - const input = await createSocialDataEventPayload( + const input = await createSignedSocialDataEvent( socialCallName.synth_add_linked_identity_external_provider, params, params.args @@ -165,15 +165,16 @@ export const useUpdateExternalProvider = mutationWrapper( }, { onSuccess: (_, { externalProvider }) => { - reloadEveryIntervalUntilLinkedIdentityFound( - (identity) => - !!identity?.externalProviders.find( - (p) => - // @ts-expect-error different provider for IdentityProvider, one from generated type, one from sdk - p.provider === externalProvider.provider && - p.externalId === externalProvider.id - ) - ) + reloadEveryIntervalUntilLinkedIdentityFound((identity) => { + const isFound = !!identity?.externalProviders.find( + (p) => + // @ts-expect-error different provider for IdentityProvider, one from generated type, one from sdk + p.provider === externalProvider.provider && + p.externalId === externalProvider.id + ) + if (!externalProvider.enabled) return !isFound + return isFound + }) }, } ) diff --git a/src/services/datahub/leaderboard/index.ts b/src/services/datahub/leaderboard/index.ts index 5a8881ff5..3df0ae02c 100644 --- a/src/services/datahub/leaderboard/index.ts +++ b/src/services/datahub/leaderboard/index.ts @@ -219,33 +219,3 @@ export async function getUserReferralStats(address: string) { })), } } - -const GET_ACTIVE_STAKING_TOKENOMIC_METADATA = gql` - query GetTokenomicMetadata { - activeStakingTokenomicMetadata { - maxTapsPerDay - superLikeWeightPoints - likerRewardDistributionPercent - socialActionPrice { - createCommentPoints - } - } - } -` - -export async function getActiveStakingTokenomicMetadata() { - const res = await datahubQueryRequest<{ - activeStakingTokenomicMetadata: { - maxTapsPerDay: number - likerRewardDistributionPercent: number - superLikeWeightPoints: string - socialActionPrice: { - createCommentPoints: string - } - } - }>({ - document: GET_ACTIVE_STAKING_TOKENOMIC_METADATA, - }) - - return res.activeStakingTokenomicMetadata -} diff --git a/src/services/datahub/leaderboard/query.ts b/src/services/datahub/leaderboard/query.ts index 53fe1481a..10a220a19 100644 --- a/src/services/datahub/leaderboard/query.ts +++ b/src/services/datahub/leaderboard/query.ts @@ -1,6 +1,5 @@ import { createQuery } from '@/subsocial-query' import { - getActiveStakingTokenomicMetadata, getLeaderboardData, getUserData, getUserReferrals, @@ -60,14 +59,6 @@ export const getLeaderboardDataByWeekQuery = createQuery({ }), }) -export const getActiveStakingTokenomicMetadataQuery = createQuery({ - key: 'activeStakingTokenomicMetadata', - fetcher: () => getActiveStakingTokenomicMetadata(), - defaultConfigGenerator: (data) => ({ - enabled: !!data, - }), -}) - export const leaderboardDataQueryByPeriod = { allTime: getLeaderboardDataByAllTimeQuery, week: getLeaderboardDataByWeekQuery, diff --git a/src/services/datahub/posts/mutation.ts b/src/services/datahub/posts/mutation.ts index d8c31221a..e62b156c9 100644 --- a/src/services/datahub/posts/mutation.ts +++ b/src/services/datahub/posts/mutation.ts @@ -305,7 +305,7 @@ type ApproveUserArgs = async function approveUser(args: ApproveUserArgs) { const input = await createSignedSocialDataEvent( socialCallName.synth_social_profile_set_action_permissions, - { ...getCurrentWallet(), args }, + { ...getCurrentWallet() }, args ) @@ -323,7 +323,7 @@ type ApproveMessageArgs = SocialCallDataArgs<'synth_set_post_approve_status'> async function approveMessage(args: ApproveMessageArgs) { const input = await createSignedSocialDataEvent( socialCallName.synth_set_post_approve_status, - { ...getCurrentWallet(), args }, + { ...getCurrentWallet() }, args ) diff --git a/src/services/datahub/posts/query.ts b/src/services/datahub/posts/query.ts index 08f7916c8..89c58cf81 100644 --- a/src/services/datahub/posts/query.ts +++ b/src/services/datahub/posts/query.ts @@ -1,9 +1,11 @@ +import usePaginatedMessageIds from '@/components/chats/hooks/usePaginatedMessageIds' import { CHAT_PER_PAGE } from '@/constants/chat' import { env } from '@/env.mjs' import { getPostQuery, getServerTime } from '@/services/api/query' import { queryClient } from '@/services/provider' import { QueryConfig, createQuery, poolQuery } from '@/subsocial-query' import { PostData } from '@subsocial/api/types' +import { isEmptyArray } from '@subsocial/utils' import { QueryClient, UseInfiniteQueryResult, @@ -12,6 +14,7 @@ import { } from '@tanstack/react-query' import dayjs from 'dayjs' import { gql } from 'graphql-request' +import { useEffect } from 'react' import { commentIdsOptimisticEncoder, isClientGeneratedOptimisticId, @@ -623,7 +626,7 @@ export const getUserPostedMemesForCountQuery = createQuery({ }) const GET_POSTS_COUNT_BY_TODAY = gql` - query GetUnapprovedMemesCount( + query GetPostsCountByToday( $createdAtTimeGte: String! $createdAtTimeLte: String! $postId: String! @@ -674,3 +677,90 @@ export const getPostsCountByTodayQuery = createQuery({ enabled: !!params?.chatId, }), }) + +const GET_TOP_MEMES = gql` + query GetTopMemes($timestamp: String!) { + activeStakingRankedPostIdsBySuperLikesNumber( + args: { + filter: { period: DAY, timestamp: $timestamp } + limit: 5 + offset: 0 + order: DESC + } + ) { + data { + postId + score + rank + } + total + } + } +` +export const getTopMemesQuery = createQuery({ + key: 'getTopMemes', + fetcher: async () => { + const timestamp = dayjs.utc(new Date()).startOf('day').unix().toString() + + const res = await datahubQueryRequest< + { + activeStakingRankedPostIdsBySuperLikesNumber: { + data: { + postId: string + score: number + rank: number + }[] + total: number + } + }, + { + timestamp: string + } + >({ + document: GET_TOP_MEMES, + variables: { + timestamp: timestamp, + }, + }) + return res.activeStakingRankedPostIdsBySuperLikesNumber.data + }, + defaultConfigGenerator: () => ({ + enabled: true, + }), +}) + +const TOP_MEMES_SIZE = 5 + +export const useGetTopMemes = () => { + const { data, isLoading } = getTopMemesQuery.useQuery({}) + + const dataLength = data?.length || 0 + + const topMemesIds = data?.map((item) => item.postId) || [] + + const { + messageIds, + isLoading: isLastMemesLoading, + loadMore, + } = usePaginatedMessageIds({ + hubId: env.NEXT_PUBLIC_MAIN_SPACE_ID, + chatId: env.NEXT_PUBLIC_MAIN_CHAT_ID, + onlyDisplayUnapprovedMessages: false, + }) + + useEffect(() => { + if (isEmptyArray(messageIds) && dataLength < TOP_MEMES_SIZE) { + loadMore() + } + }, [loadMore, messageIds, dataLength]) + + return { + isLoading: isLoading && isLastMemesLoading, + data: + dataLength < TOP_MEMES_SIZE + ? Array.from( + new Set([...topMemesIds, ...messageIds.slice(0, 5 - dataLength)]) + ) + : topMemesIds, + } +} diff --git a/src/services/datahub/posts/subscription.tsx b/src/services/datahub/posts/subscription.tsx index 7492fbe39..fedf5915e 100644 --- a/src/services/datahub/posts/subscription.tsx +++ b/src/services/datahub/posts/subscription.tsx @@ -10,6 +10,7 @@ import { QueryClient, useQueryClient } from '@tanstack/react-query' import { gql } from 'graphql-request' import { useEffect, useRef } from 'react' import { toast } from 'sonner' +import { getContentContainersQuery } from '../content-containers/query' import { getTokenomicsMetadataQuery } from '../content-staking/query' import { DataHubSubscriptionEventEnum, @@ -189,6 +190,17 @@ async function processMessage( const ownerId = newPost?.struct.ownerId const isCurrentOwner = ownerId === myAddress + async function getContentContainer() { + const contentContainers = await getContentContainersQuery.fetchQuery( + queryClient, + { + filter: { rootPostIds: [rootPostId ?? ''] }, + } + ) + const contentContainer = contentContainers.data?.[0] + return contentContainer ?? undefined + } + if (isCreationEvent) { const tokenomics = await getTokenomicsMetadataQuery.fetchQuery( queryClient, @@ -197,6 +209,7 @@ async function processMessage( if (isCreationEvent && newPost) { if (newPost.struct.approvedInRootPost) { if (isCurrentOwner) { + const contentContainer = await getContentContainer() toast.custom((t) => ( ( @@ -204,7 +217,7 @@ async function processMessage( )} t={t} title='Meme Sent!' - description={`${tokenomics.socialActionPrice.createCommentPoints} points have been used. More memes, more fun!`} + description={`${contentContainer.createCommentPricePointsAmount} points have been used. More memes, more fun!`} /> )) } @@ -257,8 +270,14 @@ async function processMessage( } if (sentMeme === 1 || sentMeme === 3) { - useMessageData.getState().setOpenMessageModal('on-review') + const contentContainer = await getContentContainer() + useMessageData.getState().setOpenMessageModal('on-review', { + contentContainer, + chatId: contentContainer.rootPost.id, + }) } else { + const contentContainer = await getContentContainer() + const cost = contentContainer.createCommentPricePointsAmount const remaining = Math.max( MIN_MEME_FOR_REVIEW - (sentMeme ?? 0), 0 @@ -266,12 +285,10 @@ async function processMessage( const title = 'Under review' const description = remaining > 0 - ? `${ - tokenomics.socialActionPrice.createCommentPoints - } points have been used. We received your meme! We need at least ${remaining} more meme${ + ? `${cost} points have been used. We received your meme! We need at least ${remaining} more meme${ remaining > 1 ? 's' : '' } from you to mark you as a verified creator.` - : `${tokenomics.socialActionPrice.createCommentPoints} points have been used. We received ${sentMeme} memes from you! Now we need a bit of time to finish review you as a verified creator.` + : `${cost} points have been used. We received ${sentMeme} memes from you! Now we need a bit of time to finish review you as a verified creator.` toast.custom((t) => ( ({ document: GET_GAMIFICATION_TASKS, - variables: { address }, + variables: { address, rootSpaceId }, }) return res.gamificationTasks diff --git a/src/services/datahub/utils.ts b/src/services/datahub/utils.ts index b70713c95..4ef079f84 100644 --- a/src/services/datahub/utils.ts +++ b/src/services/datahub/utils.ts @@ -128,7 +128,10 @@ export async function createSignedSocialDataEvent< T extends keyof typeof socialCallName >( callName: T, - params: DatahubParams<{}>, + params: Pick< + DatahubParams<{}>, + 'timestamp' | 'address' | 'uuid' | 'proxyToAddress' | 'signer' + >, eventArgs: SocialCallDataArgs | undefined, content?: any ) { diff --git a/src/stores/encryption.ts b/src/stores/encryption.ts new file mode 100644 index 000000000..e53453e97 --- /dev/null +++ b/src/stores/encryption.ts @@ -0,0 +1,37 @@ +import bs58 from 'bs58' +import nacl from 'tweetnacl' + +export const encryptPayload = ( + payload: any, + sharedSecret: Uint8Array +): [Uint8Array, Uint8Array] => { + if (!sharedSecret) throw new Error('missing shared secret') + + const nonce = nacl.randomBytes(24) + + const encryptedPayload = nacl.box.after( + Buffer.from(JSON.stringify(payload)) as unknown as Uint8Array, + nonce, + sharedSecret + ) + + return [nonce, encryptedPayload] +} + +export const decryptPayload = ( + data: string, + nonce: string, + sharedSecret?: Uint8Array +) => { + if (!sharedSecret) throw new Error('missing shared secret') + + const decryptedData = nacl.box.open.after( + bs58.decode(data), + bs58.decode(nonce), + sharedSecret + ) + if (!decryptedData) { + throw new Error('Unable to decrypt data') + } + return JSON.parse(Buffer.from(decryptedData).toString('utf8')) +} diff --git a/src/stores/message.ts b/src/stores/message.ts index 04447ba16..64b6be373 100644 --- a/src/stores/message.ts +++ b/src/stores/message.ts @@ -1,4 +1,5 @@ import { env } from '@/env.mjs' +import { ContentContainer } from '@/services/datahub/content-containers/query' import { LocalStorage } from '@/utils/storage' import { useParentData } from './parent' import { create, createSelectors } from './utils' @@ -24,7 +25,10 @@ type State = { unreadMessage: UnreadMessage isOpenMessageModal: 'not-enough-balance' | 'on-review' | 'blocked' | '' - currentChatId: string + currentData: { + chatId: string + contentContainer?: ContentContainer + } } let savedStateBeforeEditing: State | null = null @@ -45,7 +49,7 @@ type Actions = { setOpenMessageModal: ( isOpenMessageModal: State['isOpenMessageModal'], - chatId?: string + currentData?: State['currentData'] ) => void } @@ -60,7 +64,10 @@ const INITIAL_STATE: State = { lastMessageTime: Date.now(), }, isOpenMessageModal: '', - currentChatId: env.NEXT_PUBLIC_MAIN_CHAT_ID, + currentData: { + chatId: env.NEXT_PUBLIC_MAIN_CHAT_ID, + contentContainer: undefined, + }, } const useMessageDataBase = create()((set, get) => ({ @@ -102,9 +109,12 @@ const useMessageDataBase = create()((set, get) => ({ } set({ unreadMessage }) }, - setOpenMessageModal: (isOpenMessageModal, chatId) => { + setOpenMessageModal: ( + isOpenMessageModal, + currentData?: { chatId: string; contentContainer?: ContentContainer } + ) => { set({ isOpenMessageModal }) - if (chatId) set({ currentChatId: chatId }) + if (currentData) set({ currentData }) }, reset: () => { savedStateBeforeEditing = null diff --git a/src/utils/globals.ts b/src/utils/globals.ts new file mode 100644 index 000000000..197e74bb4 --- /dev/null +++ b/src/utils/globals.ts @@ -0,0 +1,3 @@ +export const lastRedirectProtocol = { + protocol: '', +} diff --git a/src/utils/strings.ts b/src/utils/strings.ts index bc78be97a..49f883791 100644 --- a/src/utils/strings.ts +++ b/src/utils/strings.ts @@ -88,3 +88,11 @@ export function parseJSONData(data: string | null) { return undefined } } + +export function convertToBigInt(num: number | string) { + try { + return BigInt(num) + } catch { + return BigInt(0) + } +} diff --git a/yarn.lock b/yarn.lock index 2ca0d0146..e88f16eb2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -179,6 +179,14 @@ dependencies: "@babel/highlight" "^7.22.5" +"@babel/code-frame@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.7.tgz#882fd9e09e8ee324e496bd040401c6f046ef4465" + integrity sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA== + dependencies: + "@babel/highlight" "^7.24.7" + picocolors "^1.0.0" + "@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.5", "@babel/compat-data@^7.21.5": version "7.21.7" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.21.7.tgz#61caffb60776e49a57ba61a88f02bedd8714f6bc" @@ -251,6 +259,16 @@ "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" +"@babel/generator@^7.25.6": + version "7.25.6" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.25.6.tgz#0df1ad8cb32fe4d2b01d8bf437f153d19342a87c" + integrity sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw== + dependencies: + "@babel/types" "^7.25.6" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + jsesc "^2.5.1" + "@babel/helper-annotate-as-pure@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" @@ -265,6 +283,13 @@ dependencies: "@babel/types" "^7.22.5" +"@babel/helper-annotate-as-pure@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz#5373c7bc8366b12a033b4be1ac13a206c6656aab" + integrity sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg== + dependencies: + "@babel/types" "^7.24.7" + "@babel/helper-builder-binary-assignment-operator-visitor@^7.18.6": version "7.21.5" resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.21.5.tgz#817f73b6c59726ab39f6ba18c234268a519e5abb" @@ -331,6 +356,19 @@ "@babel/helper-split-export-declaration" "^7.22.6" "@nicolo-ribaudo/semver-v6" "^6.3.3" +"@babel/helper-create-class-features-plugin@^7.25.0": + version "7.25.4" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.4.tgz#57eaf1af38be4224a9d9dd01ddde05b741f50e14" + integrity sha512-ro/bFs3/84MDgDmMwbcHgDa8/E6J3QKNTk4xJJnVeFtGE+tL0K26E3pNxhYz2b67fJpt7Aphw5XcploKXuCvCQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-member-expression-to-functions" "^7.24.8" + "@babel/helper-optimise-call-expression" "^7.24.7" + "@babel/helper-replace-supers" "^7.25.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" + "@babel/traverse" "^7.25.4" + semver "^6.3.1" + "@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.20.5": version "7.21.8" resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.21.8.tgz#a7886f61c2e29e21fd4aaeaf1e473deba6b571dc" @@ -427,6 +465,14 @@ dependencies: "@babel/types" "^7.22.5" +"@babel/helper-member-expression-to-functions@^7.24.8": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz#6155e079c913357d24a4c20480db7c712a5c3fb6" + integrity sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA== + dependencies: + "@babel/traverse" "^7.24.8" + "@babel/types" "^7.24.8" + "@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz#1a8f4c9f4027d23f520bd76b364d44434a72660c" @@ -441,6 +487,14 @@ dependencies: "@babel/types" "^7.21.4" +"@babel/helper-module-imports@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz#f2f980392de5b84c3328fc71d38bd81bbb83042b" + integrity sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA== + dependencies: + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + "@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.20.11", "@babel/helper-module-transforms@^7.21.5": version "7.21.5" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.21.5.tgz#d937c82e9af68d31ab49039136a222b17ac0b420" @@ -469,6 +523,16 @@ "@babel/traverse" "^7.22.5" "@babel/types" "^7.22.5" +"@babel/helper-module-transforms@^7.24.8": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz#ee713c29768100f2776edf04d4eb23b8d27a66e6" + integrity sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ== + dependencies: + "@babel/helper-module-imports" "^7.24.7" + "@babel/helper-simple-access" "^7.24.7" + "@babel/helper-validator-identifier" "^7.24.7" + "@babel/traverse" "^7.25.2" + "@babel/helper-optimise-call-expression@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz#9369aa943ee7da47edab2cb4e838acf09d290ffe" @@ -483,6 +547,13 @@ dependencies: "@babel/types" "^7.22.5" +"@babel/helper-optimise-call-expression@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz#8b0a0456c92f6b323d27cfd00d1d664e76692a0f" + integrity sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A== + dependencies: + "@babel/types" "^7.24.7" + "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.21.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.21.5" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.21.5.tgz#345f2377d05a720a4e5ecfa39cbf4474a4daed56" @@ -493,6 +564,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== +"@babel/helper-plugin-utils@^7.24.7", "@babel/helper-plugin-utils@^7.24.8": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz#94ee67e8ec0e5d44ea7baeb51e571bd26af07878" + integrity sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg== + "@babel/helper-remap-async-to-generator@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz#997458a0e3357080e54e1d79ec347f8a8cd28519" @@ -537,6 +613,15 @@ "@babel/traverse" "^7.22.5" "@babel/types" "^7.22.5" +"@babel/helper-replace-supers@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.25.0.tgz#ff44deac1c9f619523fe2ca1fd650773792000a9" + integrity sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.24.8" + "@babel/helper-optimise-call-expression" "^7.24.7" + "@babel/traverse" "^7.25.0" + "@babel/helper-simple-access@^7.21.5": version "7.21.5" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.21.5.tgz#d697a7971a5c39eac32c7e63c0921c06c8a249ee" @@ -551,6 +636,14 @@ dependencies: "@babel/types" "^7.22.5" +"@babel/helper-simple-access@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz#bcade8da3aec8ed16b9c4953b74e506b51b5edb3" + integrity sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg== + dependencies: + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + "@babel/helper-skip-transparent-expression-wrappers@^7.20.0": version "7.20.0" resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz#fbe4c52f60518cab8140d77101f0e63a8a230684" @@ -565,6 +658,14 @@ dependencies: "@babel/types" "^7.22.5" +"@babel/helper-skip-transparent-expression-wrappers@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz#5f8fa83b69ed5c27adc56044f8be2b3ea96669d9" + integrity sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ== + dependencies: + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + "@babel/helper-split-export-declaration@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" @@ -589,6 +690,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== +"@babel/helper-string-parser@^7.24.8": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz#5b3329c9a58803d5df425e5785865881a81ca48d" + integrity sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ== + "@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": version "7.19.1" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" @@ -599,6 +705,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz#9544ef6a33999343c8740fa51350f30eeaaaf193" integrity sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ== +"@babel/helper-validator-identifier@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz#75b889cfaf9e35c2aaf42cf0d72c8e91719251db" + integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w== + "@babel/helper-validator-option@^7.18.6", "@babel/helper-validator-option@^7.21.0": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz#8224c7e13ace4bafdc4004da2cf064ef42673180" @@ -609,6 +720,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz#de52000a15a177413c8234fa3a8af4ee8102d0ac" integrity sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw== +"@babel/helper-validator-option@^7.24.7": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz#3725cdeea8b480e86d34df15304806a06975e33d" + integrity sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q== + "@babel/helper-wrap-function@^7.18.9": version "7.20.5" resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz#75e2d84d499a0ab3b31c33bcfe59d6b8a45f62e3" @@ -665,6 +781,16 @@ chalk "^2.0.0" js-tokens "^4.0.0" +"@babel/highlight@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.7.tgz#a05ab1df134b286558aae0ed41e6c5f731bf409d" + integrity sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw== + dependencies: + "@babel/helper-validator-identifier" "^7.24.7" + chalk "^2.4.2" + js-tokens "^4.0.0" + picocolors "^1.0.0" + "@babel/parser@^7.14.0", "@babel/parser@^7.16.8", "@babel/parser@^7.20.7", "@babel/parser@^7.21.5", "@babel/parser@^7.21.8": version "7.21.8" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.8.tgz#642af7d0333eab9c0ad70b14ac5e76dbde7bfdf8" @@ -675,6 +801,13 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.6.tgz#201f8b47be20c76c7c5743b9c16129760bf9a975" integrity sha512-EIQu22vNkceq3LbjAq7knDf/UmtI2qbcNI8GRBlijez6TpQLvSodJPYfydQmNA5buwkxxxa/PVI44jjYZ+/cLw== +"@babel/parser@^7.25.0", "@babel/parser@^7.25.6": + version "7.25.6" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.25.6.tgz#85660c5ef388cbbf6e3d2a694ee97a38f18afe2f" + integrity sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q== + dependencies: + "@babel/types" "^7.25.6" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2" @@ -925,6 +1058,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.20.2" +"@babel/plugin-syntax-jsx@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz#39a1fa4a7e3d3d7f34e2acc6be585b718d30e02d" + integrity sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-logical-assignment-operators@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" @@ -988,6 +1128,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.20.2" +"@babel/plugin-syntax-typescript@^7.24.7": + version "7.25.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.4.tgz#04db9ce5a9043d9c635e75ae7969a2cd50ca97ff" + integrity sha512-uMOCoHVU52BsSWxPOMVv5qKRdeSlPuImUCB2dlPuBSU+W2/ROE7/Zg8F2Kepbk+8yBa68LlRKxO+xgEVWorsDg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/plugin-syntax-unicode-sets-regex@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357" @@ -1323,6 +1470,15 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-simple-access" "^7.22.5" +"@babel/plugin-transform-modules-commonjs@^7.24.7": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz#ab6421e564b717cb475d6fff70ae7f103536ea3c" + integrity sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA== + dependencies: + "@babel/helper-module-transforms" "^7.24.8" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-simple-access" "^7.24.7" + "@babel/plugin-transform-modules-systemjs@^7.20.11": version "7.20.11" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz#467ec6bba6b6a50634eea61c9c232654d8a4696e" @@ -1647,6 +1803,17 @@ "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-syntax-typescript" "^7.20.0" +"@babel/plugin-transform-typescript@^7.24.7": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.25.2.tgz#237c5d10de6d493be31637c6b9fa30b6c5461add" + integrity sha512-lBwRvjSmqiMYe/pS0+1gggjJleUJi7NzjvQ1Fkqtt69hBa/0t1YuW/MLQMAPixfwaQOHUXsd6jeU3Z+vdGv3+A== + dependencies: + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-create-class-features-plugin" "^7.25.0" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" + "@babel/plugin-syntax-typescript" "^7.24.7" + "@babel/plugin-transform-unicode-escapes@^7.21.5": version "7.21.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.21.5.tgz#1e55ed6195259b0e9061d81f5ef45a9b009fb7f2" @@ -1895,6 +2062,17 @@ "@babel/plugin-transform-modules-commonjs" "^7.21.5" "@babel/plugin-transform-typescript" "^7.21.3" +"@babel/preset-typescript@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.24.7.tgz#66cd86ea8f8c014855671d5ea9a737139cbbfef1" + integrity sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-validator-option" "^7.24.7" + "@babel/plugin-syntax-jsx" "^7.24.7" + "@babel/plugin-transform-modules-commonjs" "^7.24.7" + "@babel/plugin-transform-typescript" "^7.24.7" + "@babel/regjsgen@^0.8.0": version "0.8.0" resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" @@ -1925,6 +2103,15 @@ "@babel/parser" "^7.22.5" "@babel/types" "^7.22.5" +"@babel/template@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.0.tgz#e733dc3134b4fede528c15bc95e89cb98c52592a" + integrity sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q== + dependencies: + "@babel/code-frame" "^7.24.7" + "@babel/parser" "^7.25.0" + "@babel/types" "^7.25.0" + "@babel/traverse@^7.14.0", "@babel/traverse@^7.16.8", "@babel/traverse@^7.20.5", "@babel/traverse@^7.21.5": version "7.21.5" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.21.5.tgz#ad22361d352a5154b498299d523cf72998a4b133" @@ -1957,6 +2144,19 @@ debug "^4.1.0" globals "^11.1.0" +"@babel/traverse@^7.24.7", "@babel/traverse@^7.24.8", "@babel/traverse@^7.25.0", "@babel/traverse@^7.25.2", "@babel/traverse@^7.25.4": + version "7.25.6" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.6.tgz#04fad980e444f182ecf1520504941940a90fea41" + integrity sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ== + dependencies: + "@babel/code-frame" "^7.24.7" + "@babel/generator" "^7.25.6" + "@babel/parser" "^7.25.6" + "@babel/template" "^7.25.0" + "@babel/types" "^7.25.6" + debug "^4.3.1" + globals "^11.1.0" + "@babel/types@^7.0.0", "@babel/types@^7.16.8", "@babel/types@^7.18.13", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.20.0", "@babel/types@^7.20.5", "@babel/types@^7.20.7", "@babel/types@^7.21.0", "@babel/types@^7.21.4", "@babel/types@^7.21.5", "@babel/types@^7.4.4": version "7.21.5" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.5.tgz#18dfbd47c39d3904d5db3d3dc2cc80bedb60e5b6" @@ -1975,6 +2175,15 @@ "@babel/helper-validator-identifier" "^7.22.5" to-fast-properties "^2.0.0" +"@babel/types@^7.24.7", "@babel/types@^7.24.8", "@babel/types@^7.25.0", "@babel/types@^7.25.6": + version "7.25.6" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.6.tgz#893942ddb858f32ae7a004ec9d3a76b3463ef8e6" + integrity sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw== + dependencies: + "@babel/helper-string-parser" "^7.24.8" + "@babel/helper-validator-identifier" "^7.24.7" + to-fast-properties "^2.0.0" + "@bufbuild/protobuf@^1.7.2": version "1.10.0" resolved "https://registry.yarnpkg.com/@bufbuild/protobuf/-/protobuf-1.10.0.tgz#1a67ac889c2d464a3492b3e54c38f80517963b16" @@ -2037,6 +2246,16 @@ resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.8.1.tgz#182b5a4704ef8ad91bde93f7a860a88fd92c79a3" integrity sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ== +"@emurgo/cardano-serialization-lib-browser@^11.5.0": + version "11.5.0" + resolved "https://registry.yarnpkg.com/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-11.5.0.tgz#f2d15b538add436e0aa8b67a1d00ca654a680006" + integrity sha512-qchOJ9NYDUz10tzs5r5QhP9hK0p+ZOlRiBwPdTAxqAYLw/8emYBkQQLaS8T1DF6EkeudyrgS00ym5Trw1fo4iA== + +"@emurgo/cardano-serialization-lib-nodejs@11.5.0": + version "11.5.0" + resolved "https://registry.yarnpkg.com/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-11.5.0.tgz#0662e2a17d7d1e944f8cdb86396133c8edaec059" + integrity sha512-IlVABlRgo9XaTR1NunwZpWcxnfEv04ba2l1vkUz4S1W7Jt36F4CtffP+jPeqBZGnAe+fnUwo0XjIJC3ZTNToNQ== + "@esbuild/aix-ppc64@0.21.5": version "0.21.5" resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz#c7184a326533fcdf1b8ee0733e21c713b975575f" @@ -2285,11 +2504,23 @@ "@ethereumjs/util" "^8.1.0" crc-32 "^1.2.0" +"@ethereumjs/common@^4.3.0", "@ethereumjs/common@^4.4.0": + version "4.4.0" + resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-4.4.0.tgz#fba41612f527a815bf304e98653d6b5fc5d6d4de" + integrity sha512-Fy5hMqF6GsE6DpYTyqdDIJPJgUtDn4dL120zKw+Pswuo+iLyBsEYuSyzMw6NVzD2vDzcBG9fE4+qX4X2bPc97w== + dependencies: + "@ethereumjs/util" "^9.1.0" + "@ethereumjs/rlp@^4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@ethereumjs/rlp/-/rlp-4.0.1.tgz#626fabfd9081baab3d0a3074b0c7ecaf674aaa41" integrity sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw== +"@ethereumjs/rlp@^5.0.2": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@ethereumjs/rlp/-/rlp-5.0.2.tgz#c89bd82f2f3bec248ab2d517ae25f5bbc4aac842" + integrity sha512-DziebCdg4JpGlEqEdGgXmjqcFoJi+JGulUXwEjsZGAscAQ7MyD/7LE/GVCP29vEQxKc7AAwjT3A2ywHp2xfoCA== + "@ethereumjs/tx@^4.1.2", "@ethereumjs/tx@^4.2.0": version "4.2.0" resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-4.2.0.tgz#5988ae15daf5a3b3c815493bc6b495e76009e853" @@ -2300,7 +2531,17 @@ "@ethereumjs/util" "^8.1.0" ethereum-cryptography "^2.0.0" -"@ethereumjs/util@^8.1.0": +"@ethereumjs/tx@^5.3.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-5.4.0.tgz#6f47894cc3e2d4e63d87c62b41ed7e8180a1de58" + integrity sha512-SCHnK7m/AouZ7nyoR0MEXw1OO/tQojSbp88t8oxhwes5iZkZCtfFdUrJaiIb72qIpH2FVw6s1k1uP7LXuH7PsA== + dependencies: + "@ethereumjs/common" "^4.4.0" + "@ethereumjs/rlp" "^5.0.2" + "@ethereumjs/util" "^9.1.0" + ethereum-cryptography "^2.2.1" + +"@ethereumjs/util@^8.0.6", "@ethereumjs/util@^8.1.0": version "8.1.0" resolved "https://registry.yarnpkg.com/@ethereumjs/util/-/util-8.1.0.tgz#299df97fb6b034e0577ce9f94c7d9d1004409ed4" integrity sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA== @@ -2309,6 +2550,14 @@ ethereum-cryptography "^2.0.0" micro-ftch "^0.3.1" +"@ethereumjs/util@^9.1.0": + version "9.1.0" + resolved "https://registry.yarnpkg.com/@ethereumjs/util/-/util-9.1.0.tgz#75e3898a3116d21c135fa9e29886565609129bce" + integrity sha512-XBEKsYqLGXLah9PNJbgdkigthkG7TAGvlD/sH12beMXEyHDyigfcbdvHhmLyDWgDyOJn4QwiQUaF7yeuhnjdog== + dependencies: + "@ethereumjs/rlp" "^5.0.2" + ethereum-cryptography "^2.2.1" + "@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" @@ -3031,6 +3280,14 @@ resolved "https://registry.yarnpkg.com/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.10.1.tgz#60bb2aaf129f9e00621f8d698722ddba6ee1f8ac" integrity sha512-Dq5rYfEpdeel0bLVN+nfD1VWmzCkK+pJbSjIawGE+RY4+NIJqhbUDDQjvV0NUK84fMfwxvtFoCtEe70HfZjFcw== +"@fivebinaries/coin-selection@2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@fivebinaries/coin-selection/-/coin-selection-2.2.1.tgz#f5329909ac8cd1bf87decdcd054c88a8d69399a0" + integrity sha512-iYFsYr7RY7TEvTqP9NKR4p/yf3Iybf9abUDR7lRjzanGsrLwVsREvIuyE05iRYFrvqarlk+gWRPsdR1N2hUBrg== + dependencies: + "@emurgo/cardano-serialization-lib-browser" "^11.5.0" + "@emurgo/cardano-serialization-lib-nodejs" "11.5.0" + "@floating-ui/core@^1.4.1": version "1.4.1" resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.4.1.tgz#0d633f4b76052668afb932492ac452f7ebe97f17" @@ -3108,6 +3365,20 @@ resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.5.tgz#105c37d9d9620ce69b7f692a20c821bf1ad2cbf9" integrity sha512-sTcG+QZ6fdEUObICavU+aB3Mp8HY4n14wYHdxK4fXjPmv3PXZZeY5RaguJmGyeH/CJQhX3fqKUtS4qc1LoHwhQ== +"@fractalwagmi/popup-connection@^1.0.18": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@fractalwagmi/popup-connection/-/popup-connection-1.1.1.tgz#2dfff4f3bb89d17947adae597f355faf46c194a9" + integrity sha512-hYL+45iYwNbwjvP2DxP3YzVsrAGtj/RV9LOgMpJyCxsfNoyyOoi2+YrnywKkiANingiG2kJ1nKsizbu1Bd4zZw== + +"@fractalwagmi/solana-wallet-adapter@^0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@fractalwagmi/solana-wallet-adapter/-/solana-wallet-adapter-0.1.1.tgz#13d97bca657007a62b2118ea60f5d9e73f654a37" + integrity sha512-oTZLEuD+zLKXyhZC5tDRMPKPj8iaxKLxXiCjqRfOo4xmSbS2izGRWLJbKMYYsJysn/OI3UJ3P6CWP8WUWi0dZg== + dependencies: + "@fractalwagmi/popup-connection" "^1.0.18" + "@solana/wallet-adapter-base" "^0.9.17" + bs58 "^5.0.0" + "@graphql-codegen/add@^4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@graphql-codegen/add/-/add-4.0.1.tgz#c187af820fdd2fc7a9c1c2453bc389cd4e16699e" @@ -3749,6 +4020,16 @@ dependencies: multiformats "^9.5.4" +"@jnwng/walletconnect-solana@^0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@jnwng/walletconnect-solana/-/walletconnect-solana-0.2.0.tgz#aebea64beaa47273b9b9a71c62d88d543900ab96" + integrity sha512-nyRq0xLEj9i2J4UXQ0Mr4KzsooTMbLu0ewHOqdQV7iZE0PfbtKa8poTSF4ZBAQD8hoMHEx+I7zGFCNMI9BTrTA== + dependencies: + "@walletconnect/qrcode-modal" "^1.8.0" + "@walletconnect/sign-client" "^2.7.2" + "@walletconnect/utils" "^2.4.5" + bs58 "^5.0.0" + "@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": version "0.3.3" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" @@ -3758,16 +4039,35 @@ "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" +"@jridgewell/gen-mapping@^0.3.5": + version "0.3.5" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" + integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== + dependencies: + "@jridgewell/set-array" "^1.2.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.24" + "@jridgewell/resolve-uri@3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + "@jridgewell/set-array@^1.0.1": version "1.1.2" resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== +"@jridgewell/set-array@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" + integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== + "@jridgewell/source-map@^0.3.3": version "0.3.5" resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.5.tgz#a3bb4d5c6825aab0d281268f47f6ad5853431e91" @@ -3786,6 +4086,11 @@ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== +"@jridgewell/sourcemap-codec@^1.4.14": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" + integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== + "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": version "0.3.18" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz#25783b2086daf6ff1dcb53c9249ae480e4dd4cd6" @@ -3794,6 +4099,14 @@ "@jridgewell/resolve-uri" "3.1.0" "@jridgewell/sourcemap-codec" "1.4.14" +"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": + version "0.3.25" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" + integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + "@json-rpc-tools/provider@^1.5.5": version "1.7.6" resolved "https://registry.yarnpkg.com/@json-rpc-tools/provider/-/provider-1.7.6.tgz#8a17c34c493fa892632e278fd9331104e8491ec6" @@ -3819,6 +4132,55 @@ "@json-rpc-tools/types" "^1.7.6" "@pedrouid/environment" "^1.0.1" +"@keystonehq/alias-sampling@^0.1.1": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@keystonehq/alias-sampling/-/alias-sampling-0.1.2.tgz#63af931ffe6500aef4c0d87775a5b279189abf8d" + integrity sha512-5ukLB3bcgltgaFfQfYKYwHDUbwHicekYo53fSEa7xhVkAEqsA74kxdIwoBIURmGUtXe3EVIRm4SYlgcrt2Ri0w== + +"@keystonehq/bc-ur-registry-sol@^0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@keystonehq/bc-ur-registry-sol/-/bc-ur-registry-sol-0.3.1.tgz#5319c7c4a22cc83bbacfa6fe09aaa6fb21363f24" + integrity sha512-Okr5hwPxBZxB4EKLK1GSC9vsrh/tFMQ5dvs3EQ9NCOmCn7CXdXIMSeafrpGCHk484Jf5c6X0Wq0yf0VqY2A/8Q== + dependencies: + "@keystonehq/bc-ur-registry" "^0.5.0" + bs58check "^2.1.2" + uuid "^8.3.2" + +"@keystonehq/bc-ur-registry@^0.5.0": + version "0.5.5" + resolved "https://registry.yarnpkg.com/@keystonehq/bc-ur-registry/-/bc-ur-registry-0.5.5.tgz#b7cd9b08846c627e988933049aac94d3412fbb16" + integrity sha512-PoclPHf0OhpIKLfLwzymsu+CjkWf5ZKvaVjpkq3HUalcI4KW8wLk0m8qI2kBVv6F0BQ0ERPqW8OfjLTVqIgWLA== + dependencies: + "@ngraveio/bc-ur" "^1.1.5" + bs58check "^2.1.2" + tslib "^2.3.0" + +"@keystonehq/sdk@^0.13.1": + version "0.13.1" + resolved "https://registry.yarnpkg.com/@keystonehq/sdk/-/sdk-0.13.1.tgz#782a1f71cfc38a7635a8bcb0cb99ae403a6316a8" + integrity sha512-545l83TE5t1cyUZUaNqZOAh15ibWOg9QbK/YeLwnrxt+GOod+ATk3j9SpN6yTSLO8DNl2/x6dKRIFVtTEkZDAg== + dependencies: + "@ngraveio/bc-ur" "^1.0.0" + qrcode.react "^1.0.1" + react "16.13.1" + react-dom "16.13.1" + react-modal "^3.12.1" + react-qr-reader "^2.2.1" + rxjs "^6.6.3" + typescript "^4.6.2" + +"@keystonehq/sol-keyring@^0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@keystonehq/sol-keyring/-/sol-keyring-0.3.1.tgz#9ed61269bab92601eedb7f1adb9ca3258634dbbc" + integrity sha512-RU6I3HQrQ9NpRDP9TwlBIy5DftVcNcyk0NWfhkPy/YanhMcCB0cRPw68iQl1rMnR6n1G2+YrBHMxm6swCW+B4Q== + dependencies: + "@keystonehq/bc-ur-registry" "^0.5.0" + "@keystonehq/bc-ur-registry-sol" "^0.3.1" + "@keystonehq/sdk" "^0.13.1" + "@solana/web3.js" "^1.36.0" + bs58 "^5.0.0" + uuid "^8.3.2" + "@khmyznikov/pwa-install@^0.2.5": version "0.2.5" resolved "https://registry.yarnpkg.com/@khmyznikov/pwa-install/-/pwa-install-0.2.5.tgz#4cb80c36f4dcbdab506b23e06eec62b6f00c8866" @@ -3870,6 +4232,65 @@ resolved "https://registry.yarnpkg.com/@ledgerhq/connect-kit-loader/-/connect-kit-loader-1.1.8.tgz#6cc32191660dd9d6e8f89047af09b0f201e30190" integrity sha512-mDJsOucVW8m3Lk2fdQst+P74SgiKebvq1iBk4sXLbADQOwhL9bWGaArvO+tW7jPJZwEfSPWBdHcHoYi11XAwZw== +"@ledgerhq/devices@6.27.1", "@ledgerhq/devices@^6.27.1": + version "6.27.1" + resolved "https://registry.yarnpkg.com/@ledgerhq/devices/-/devices-6.27.1.tgz#3b13ab1d1ba8201e9e74a08f390560483978c962" + integrity sha512-jX++oy89jtv7Dp2X6gwt3MMkoajel80JFWcdc0HCouwDsV1mVJ3SQdwl/bQU0zd8HI6KebvUP95QTwbQLLK/RQ== + dependencies: + "@ledgerhq/errors" "^6.10.0" + "@ledgerhq/logs" "^6.10.0" + rxjs "6" + semver "^7.3.5" + +"@ledgerhq/devices@^8.4.2": + version "8.4.2" + resolved "https://registry.yarnpkg.com/@ledgerhq/devices/-/devices-8.4.2.tgz#f1c56194cf1343d56cad49c8feba92ad93432e14" + integrity sha512-oWNTp3jCMaEvRHsXNYE/yo+PFMgXAJGFHLOU1UdE4/fYkniHbD9wdxwyZrZvrxr9hNw4/9wHiThyITwPtMzG7g== + dependencies: + "@ledgerhq/errors" "^6.18.0" + "@ledgerhq/logs" "^6.12.0" + rxjs "^7.8.1" + semver "^7.3.5" + +"@ledgerhq/errors@^6.10.0", "@ledgerhq/errors@^6.18.0": + version "6.18.0" + resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-6.18.0.tgz#d55d6a57430d7a86532a9033ce0b45103264c620" + integrity sha512-L3jQWAGyooxRDk/MRlW2v4Ji9+kloBtdmz9wBkHaj2j0n+05rweJSV3GHw9oye1BYMbVFqFffmT4H3hlXlCasw== + +"@ledgerhq/hw-transport-webhid@6.27.1": + version "6.27.1" + resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-webhid/-/hw-transport-webhid-6.27.1.tgz#8fd1710d23b6bd7cbe2382dd02054dfabe788447" + integrity sha512-u74rBYlibpbyGblSn74fRs2pMM19gEAkYhfVibq0RE1GNFjxDMFC1n7Sb+93Jqmz8flyfB4UFJsxs8/l1tm2Kw== + dependencies: + "@ledgerhq/devices" "^6.27.1" + "@ledgerhq/errors" "^6.10.0" + "@ledgerhq/hw-transport" "^6.27.1" + "@ledgerhq/logs" "^6.10.0" + +"@ledgerhq/hw-transport@6.27.1": + version "6.27.1" + resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-6.27.1.tgz#88072278f69c279cb6569352acd4ae2fec33ace3" + integrity sha512-hnE4/Fq1YzQI4PA1W0H8tCkI99R3UWDb3pJeZd6/Xs4Qw/q1uiQO+vNLC6KIPPhK0IajUfuI/P2jk0qWcMsuAQ== + dependencies: + "@ledgerhq/devices" "^6.27.1" + "@ledgerhq/errors" "^6.10.0" + events "^3.3.0" + +"@ledgerhq/hw-transport@^6.27.1": + version "6.31.2" + resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-6.31.2.tgz#79c95f7928a64a0e3b5bc4ea7b5be04b9f738322" + integrity sha512-B27UIzMzm2IXPGYnEB95R7eHxpXBkTBHh6MUJJQZVknt8LilEz1tfpTYUdzAKDGQ+Z5MZyYb01Eh3Zqm3kn3uw== + dependencies: + "@ledgerhq/devices" "^8.4.2" + "@ledgerhq/errors" "^6.18.0" + "@ledgerhq/logs" "^6.12.0" + events "^3.3.0" + +"@ledgerhq/logs@^6.10.0", "@ledgerhq/logs@^6.12.0": + version "6.12.0" + resolved "https://registry.yarnpkg.com/@ledgerhq/logs/-/logs-6.12.0.tgz#ad903528bf3687a44da435d7b2479d724d374f5d" + integrity sha512-ExDoj1QV5eC6TEbMdLUMMk9cfvNKhhv5gXol4SmULRVCx/3iyCPhJ74nsb3S0Vb+/f+XujBEj3vQn5+cwS0fNA== + "@lit-labs/ssr-dom-shim@^1.0.0", "@lit-labs/ssr-dom-shim@^1.1.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.2.0.tgz#353ce4a76c83fadec272ea5674ede767650762fd" @@ -3920,6 +4341,14 @@ "@metamask/safe-event-emitter" "^3.0.0" "@metamask/utils" "^8.3.0" +"@metamask/rpc-errors@^5.1.1": + version "5.1.1" + resolved "https://registry.yarnpkg.com/@metamask/rpc-errors/-/rpc-errors-5.1.1.tgz#f82732ad0952d34d219eca42699c0c74bee95a9e" + integrity sha512-JjZnDi2y2CfvbohhBl+FOQRzmFlJpybcQlIk37zEX8B96eVSPbH/T8S0p7cSF8IE33IWx6JkD8Ycsd+2TXFxCw== + dependencies: + "@metamask/utils" "^5.0.0" + fast-safe-stringify "^2.0.6" + "@metamask/rpc-errors@^6.2.1": version "6.2.1" resolved "https://registry.yarnpkg.com/@metamask/rpc-errors/-/rpc-errors-6.2.1.tgz#f5daf429ededa7cb83069dc621bd5738fe2a1d80" @@ -3938,7 +4367,7 @@ resolved "https://registry.yarnpkg.com/@metamask/safe-event-emitter/-/safe-event-emitter-3.1.1.tgz#e89b840a7af8097a8ed4953d8dc8470d1302d3ef" integrity sha512-ihb3B0T/wJm1eUuArYP4lCTSEoZsClHhuWyfo/kMX3m/odpqNcPfsz5O2A3NT7dXCAgWPGDQGPqygCpgeniKMw== -"@metamask/utils@^5.0.1": +"@metamask/utils@^5.0.0", "@metamask/utils@^5.0.1": version "5.0.2" resolved "https://registry.yarnpkg.com/@metamask/utils/-/utils-5.0.2.tgz#140ba5061d90d9dac0280c19cab101bc18c8857c" integrity sha512-yfmE79bRQtnMzarnKfX7AEJBwFTxvTyw3nBQlu/5rmGXrjAeAMltoGxO62TFurxrQAFMNa/fEjIHNvungZp0+g== @@ -3964,6 +4393,11 @@ superstruct "^1.0.3" uuid "^9.0.1" +"@mobily/ts-belt@^3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@mobily/ts-belt/-/ts-belt-3.13.1.tgz#8f8ce2a2eca41d88c2ca70c84d0f47d0f7f5cd5f" + integrity sha512-K5KqIhPI/EoCTbA6CGbrenM9s41OouyK8A03fGJJcla/zKucsgLbz8HNbeseoLarRPgyWJsUyCYqFhI7t3Ra9Q== + "@motionone/animation@^10.15.1", "@motionone/animation@^10.17.0": version "10.17.0" resolved "https://registry.yarnpkg.com/@motionone/animation/-/animation-10.17.0.tgz#7633c6f684b5fee2b61c405881b8c24662c68fca" @@ -4157,15 +4591,28 @@ integrity sha512-tEQ7oinq1/CjSG9uSTerca3v4AZ+dFa+4Yu6ihaG8Ud8ddqLQgFGcnwYls13H5X5CPDPZJdYxyeMui6muOLd4g== "@neynar/nodejs-sdk@^1.19.3": - version "1.46.1" - resolved "https://registry.yarnpkg.com/@neynar/nodejs-sdk/-/nodejs-sdk-1.46.1.tgz#427c081a3c8a3c8355eb4fba7250b7f002162813" - integrity sha512-kKWoBrALVh6k3/G0tMzqSSITM2QR3kL+gxTt0yYcqKyUTS4Z7GQDop7Y89MnokplUy/QJbEWyl4oS38eLvNXWQ== + version "1.49.1" + resolved "https://registry.yarnpkg.com/@neynar/nodejs-sdk/-/nodejs-sdk-1.49.1.tgz#da3698af1c77eddd199cf6f837842f914993aab8" + integrity sha512-QPjcjE4sHT8PMOrbnK+/0XSWdo/8oRcnWZO7k+YQ0er7B1M+zSCknonU4ufbmEdq8HgrdpLR5AOt185BQvwppg== dependencies: "@openapitools/openapi-generator-cli" "^2.7.0" axios "^1.6.2" semver "^7.6.0" viem "^1.19.9" +"@ngraveio/bc-ur@^1.0.0", "@ngraveio/bc-ur@^1.1.5": + version "1.1.13" + resolved "https://registry.yarnpkg.com/@ngraveio/bc-ur/-/bc-ur-1.1.13.tgz#27719fd3e745ccdbe97a7950905edcd1fed4844b" + integrity sha512-j73akJMV4+vLR2yQ4AphPIT5HZmxVjn/LxpL7YHoINnXoH6ccc90Zzck6/n6a3bCXOVZwBxq+YHwbAKRV+P8Zg== + dependencies: + "@keystonehq/alias-sampling" "^0.1.1" + assert "^2.0.0" + bignumber.js "^9.0.1" + cbor-sync "^1.0.4" + crc "^3.8.0" + jsbi "^3.1.5" + sha.js "^2.4.11" + "@nicolo-ribaudo/semver-v6@^6.3.3": version "6.3.3" resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/semver-v6/-/semver-v6-6.3.3.tgz#ea6d23ade78a325f7a52750aab1526b02b628c29" @@ -4199,20 +4646,20 @@ dependencies: "@noble/hashes" "1.4.0" -"@noble/curves@^1.3.0", "@noble/curves@^1.4.2": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.5.0.tgz#7a9b9b507065d516e6dce275a1e31db8d2a100dd" - integrity sha512-J5EKamIHnKPyClwVrzmaf5wSdQXgdHcPZIZLu3bwnbeCx8/7NPK5q2ZBWF+5FvYGByjiQQsJYX6jfgB2wDPn3A== - dependencies: - "@noble/hashes" "1.4.0" - -"@noble/curves@^1.4.0", "@noble/curves@~1.4.0": +"@noble/curves@1.4.2", "@noble/curves@^1.3.0", "@noble/curves@^1.4.0", "@noble/curves@~1.4.0": version "1.4.2" resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.4.2.tgz#40309198c76ed71bc6dbf7ba24e81ceb4d0d1fe9" integrity sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw== dependencies: "@noble/hashes" "1.4.0" +"@noble/curves@^1.1.0", "@noble/curves@^1.4.2": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.5.0.tgz#7a9b9b507065d516e6dce275a1e31db8d2a100dd" + integrity sha512-J5EKamIHnKPyClwVrzmaf5wSdQXgdHcPZIZLu3bwnbeCx8/7NPK5q2ZBWF+5FvYGByjiQQsJYX6jfgB2wDPn3A== + dependencies: + "@noble/hashes" "1.4.0" + "@noble/hashes@1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.2.0.tgz#a3150eeb09cc7ab207ebf6d7b9ad311a9bdbed12" @@ -4233,7 +4680,7 @@ resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.3.tgz#39908da56a4adc270147bb07968bf3b16cfe1699" integrity sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA== -"@noble/hashes@1.4.0", "@noble/hashes@^1.3.1", "@noble/hashes@^1.3.3", "@noble/hashes@^1.4.0", "@noble/hashes@~1.4.0": +"@noble/hashes@1.4.0", "@noble/hashes@^1.2.0", "@noble/hashes@^1.3.1", "@noble/hashes@^1.3.3", "@noble/hashes@^1.4.0", "@noble/hashes@~1.4.0": version "1.4.0" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.4.0.tgz#45814aa329f30e4fe0ba49426f49dfccdd066426" integrity sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg== @@ -4414,6 +4861,45 @@ "@parcel/watcher-win32-ia32" "2.4.1" "@parcel/watcher-win32-x64" "2.4.1" +"@particle-network/analytics@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@particle-network/analytics/-/analytics-1.0.1.tgz#b3657cf7aaea57f90a7ac2c03f72b8786c298012" + integrity sha512-ApcSMo1BXQlywO+lvOpG3Y2/SVGNCpJzXO/4e3zHzE/9j+uMehsilDzPwWQwLhrCXZYwVm7mmE71Gs36yobiNw== + dependencies: + hash.js "^1.1.7" + uuidv4 "^6.2.13" + +"@particle-network/auth@^1.3.1": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@particle-network/auth/-/auth-1.3.1.tgz#f9ee51749e3b10e700e0d8c51a8c0769ab0b9851" + integrity sha512-hu6ie5RjjN4X+6y/vfjyCsSX3pQuS8k8ZoMb61QWwhWsnZXKzpBUVeAEk55aGfxxXY+KfBkSmZosyaZHGoHnfw== + dependencies: + "@particle-network/analytics" "^1.0.1" + "@particle-network/chains" "*" + "@particle-network/crypto" "^1.0.1" + buffer "^6.0.3" + draggabilly "^3.0.0" + +"@particle-network/chains@*": + version "1.6.8" + resolved "https://registry.yarnpkg.com/@particle-network/chains/-/chains-1.6.8.tgz#9e788f92b8ecb4dc99f72c04ea9fe145b738d892" + integrity sha512-8YnKI5yq7Wprdc0vomW4FOnYcbp39GozUgUJomIJIOpOm+m+cJRgsQxLe+IHmJ9ZyfKN4NkOPQF5ANA7maxBUQ== + +"@particle-network/crypto@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@particle-network/crypto/-/crypto-1.0.1.tgz#26afef622a3eb906dca5c810fef8001ffee29029" + integrity sha512-GgvHmHcFiNkCLZdcJOgctSbgvs251yp+EAdUydOE3gSoIxN6KEr/Snu9DebENhd/nFb7FDk5ap0Hg49P7pj1fg== + dependencies: + crypto-js "^4.1.1" + uuidv4 "^6.2.13" + +"@particle-network/solana-wallet@^1.3.2": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@particle-network/solana-wallet/-/solana-wallet-1.3.2.tgz#9966209ccda60abb0114bf0447a524c781536b76" + integrity sha512-KviKVP87OtWq813y8IumM3rIQMNkTjHBaQmCUbTWGebz3csFOv54JIoy1r+3J3NnA+mBxBdZeRedZ5g+07v75w== + dependencies: + "@particle-network/auth" "^1.3.1" + "@peculiar/asn1-schema@^2.3.6": version "2.3.6" resolved "https://registry.yarnpkg.com/@peculiar/asn1-schema/-/asn1-schema-2.3.6.tgz#3dd3c2ade7f702a9a94dfb395c192f5fa5d6b922" @@ -5295,6 +5781,14 @@ tslib "^2.6.2" ws "^8.16.0" +"@project-serum/sol-wallet-adapter@^0.2.6": + version "0.2.6" + resolved "https://registry.yarnpkg.com/@project-serum/sol-wallet-adapter/-/sol-wallet-adapter-0.2.6.tgz#b4cd25a566294354427c97c26d716112b91a0107" + integrity sha512-cpIb13aWPW8y4KzkZAPDgw+Kb+DXjCC6rZoH74MGm3I/6e/zKyGnfAuW5olb2zxonFqsYgnv7ev8MQnvSgJ3/g== + dependencies: + bs58 "^4.0.1" + eventemitter3 "^4.0.7" + "@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": version "1.1.2" resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" @@ -5542,6 +6036,13 @@ "@swc/helpers" "^0.5.0" clsx "^2.0.0" +"@react-native-async-storage/async-storage@^1.17.7": + version "1.24.0" + resolved "https://registry.yarnpkg.com/@react-native-async-storage/async-storage/-/async-storage-1.24.0.tgz#888efbc62a26f7d9464b32f4d3027b7f2771999b" + integrity sha512-W4/vbwUOYOjco0x3toB8QCr7EjIP6nE9G7o8PMguvvjYT5Awg09lyV4enACRx4s++PPulBiBSjL0KTFx2u0Z/g== + dependencies: + merge-options "^3.0.4" + "@react-native-async-storage/async-storage@^1.18.1": version "1.19.1" resolved "https://registry.yarnpkg.com/@react-native-async-storage/async-storage/-/async-storage-1.19.1.tgz#09d35caaa31823b40fdfeebf95decf8f992a6274" @@ -5858,6 +6359,11 @@ fflate "^0.7.3" string.prototype.codepointat "^0.2.1" +"@sinclair/typebox@^0.31.28": + version "0.31.28" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.31.28.tgz#b68831e7bc7d09daac26968ea32f42bedc968ede" + integrity sha512-/s55Jujywdw/Jpan+vsy6JZs1z2ZTGxTmbZTPiuSL2wz9mfzA2gN1zzaqmvfi4pq+uOt7Du85fkiwv5ymW84aQ== + "@sindresorhus/slugify@^1.1.0": version "1.1.2" resolved "https://registry.yarnpkg.com/@sindresorhus/slugify/-/slugify-1.1.2.tgz#c2c0129298b8caace2d9156176fe244d0e83156c" @@ -5874,6 +6380,42 @@ escape-string-regexp "^2.0.0" lodash.deburr "^4.1.0" +"@socket.io/component-emitter@~3.1.0": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz#821f8442f4175d8f0467b9daf26e3a18e2d02af2" + integrity sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA== + +"@solana-mobile/mobile-wallet-adapter-protocol-web3js@^2.1.2": + version "2.1.3" + resolved "https://registry.yarnpkg.com/@solana-mobile/mobile-wallet-adapter-protocol-web3js/-/mobile-wallet-adapter-protocol-web3js-2.1.3.tgz#34da335bc69b6fb0abeadee3f0672841d4f9d688" + integrity sha512-IEvPzp4m39sWTS3gybbVfk1WQ5Bx9TrGlthtRlVw1BJPvjbmT6lTcnndgXp7HmMkz5e6cc8fwJWp3EKx5upAug== + dependencies: + "@solana-mobile/mobile-wallet-adapter-protocol" "^2.1.2" + bs58 "^5.0.0" + js-base64 "^3.7.5" + +"@solana-mobile/mobile-wallet-adapter-protocol@^2.1.2": + version "2.1.3" + resolved "https://registry.yarnpkg.com/@solana-mobile/mobile-wallet-adapter-protocol/-/mobile-wallet-adapter-protocol-2.1.3.tgz#6c87c98f7afec698e14f42726a8b7a161d9e0c78" + integrity sha512-rj1/cSQVjPYdQjHsJDxmlpgRjI9jly/0Md3bEeqCan2sLXPf5F6+TiVlAg9+Hxg+uVWd1peUrepFUdOykbklSw== + dependencies: + "@solana/wallet-standard" "^1.1.2" + "@solana/wallet-standard-util" "^1.1.1" + "@wallet-standard/core" "^1.0.3" + js-base64 "^3.7.5" + +"@solana-mobile/wallet-adapter-mobile@^2.0.0": + version "2.1.3" + resolved "https://registry.yarnpkg.com/@solana-mobile/wallet-adapter-mobile/-/wallet-adapter-mobile-2.1.3.tgz#62892131016cb6128922947db8702993a41e4f71" + integrity sha512-V9gxV7/F1BLode6I+j134kFvQv1mnF0OlN+tYPHEmJOcH4caDfH6rlJy7t9Pktkl9ZEVTO9kT8K19Y4MRl6nxg== + dependencies: + "@solana-mobile/mobile-wallet-adapter-protocol-web3js" "^2.1.2" + "@solana/wallet-adapter-base" "^0.9.23" + "@solana/wallet-standard-features" "^1.2.0" + js-base64 "^3.7.5" + optionalDependencies: + "@react-native-async-storage/async-storage" "^1.17.7" + "@solana/buffer-layout@^4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@solana/buffer-layout/-/buffer-layout-4.0.1.tgz#b996235eaec15b1e0b5092a8ed6028df77fa6c15" @@ -5881,85 +6423,530 @@ dependencies: buffer "~6.0.3" -"@solana/web3.js@^1.95.3": - version "1.95.3" - resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.95.3.tgz#70b5f4d76823f56b5af6403da51125fffeb65ff3" - integrity sha512-O6rPUN0w2fkNqx/Z3QJMB9L225Ex10PRDH8bTaIUPZXMPV0QP8ZpPvjQnXK+upUczlRgzHzd6SjKIha1p+I6og== +"@solana/wallet-adapter-alpha@^0.1.10": + version "0.1.10" + resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-alpha/-/wallet-adapter-alpha-0.1.10.tgz#497ac17634dac4de17eba643768df9b30a13129a" + integrity sha512-TOUhDyUNSmp8bqeUueN0LPmurTAEmYm3PTrPGSnsq6JFeTzwTv5xZRygtCvULpBzCPZu/7AfIqh/TSoz4P92aw== dependencies: - "@babel/runtime" "^7.25.0" - "@noble/curves" "^1.4.2" - "@noble/hashes" "^1.4.0" - "@solana/buffer-layout" "^4.0.1" - agentkeepalive "^4.5.0" - bigint-buffer "^1.1.5" - bn.js "^5.2.1" - borsh "^0.7.0" - bs58 "^4.0.1" - buffer "6.0.3" - fast-stable-stringify "^1.0.0" - jayson "^4.1.1" - node-fetch "^2.7.0" - rpc-websockets "^9.0.2" - superstruct "^2.0.2" + "@solana/wallet-adapter-base" "^0.9.23" -"@stablelib/aead@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/aead/-/aead-1.0.1.tgz#c4b1106df9c23d1b867eb9b276d8f42d5fc4c0c3" - integrity sha512-q39ik6sxGHewqtO0nP4BuSe3db5G1fEJE8ukvngS2gLkBXyy6E7pLubhbYgnkDFv6V8cWaxcE4Xn0t6LWcJkyg== +"@solana/wallet-adapter-avana@^0.1.13": + version "0.1.13" + resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-avana/-/wallet-adapter-avana-0.1.13.tgz#dfa5385edcc24557fa6962ade55915a696abc74a" + integrity sha512-dvKDzaFo9KgfNh0ohI6qOBTnOU2f6cHKPiDxdtLfXVubdic1mUYzuA2PcrBZQuRc5EBcvHbGCpr3Ds90cGB+xQ== + dependencies: + "@solana/wallet-adapter-base" "^0.9.23" -"@stablelib/binary@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/binary/-/binary-1.0.1.tgz#c5900b94368baf00f811da5bdb1610963dfddf7f" - integrity sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q== +"@solana/wallet-adapter-base-ui@^0.1.2": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-base-ui/-/wallet-adapter-base-ui-0.1.2.tgz#f5ad35c0ac1d086c69591613fb1a0bd2eae20c4e" + integrity sha512-33l0WqY0mKKhcrNBbqS9anvT4MjzNnKewoF1VcdbI/uSlMOZtGy+9fr8ETVFI+ivr44QHpvbiZX9dmz2mTCGXw== dependencies: - "@stablelib/int" "^1.0.1" + "@solana/wallet-adapter-react" "^0.15.35" -"@stablelib/bytes@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/bytes/-/bytes-1.0.1.tgz#0f4aa7b03df3080b878c7dea927d01f42d6a20d8" - integrity sha512-Kre4Y4kdwuqL8BR2E9hV/R5sOrUj6NanZaZis0V6lX5yzqC3hBuVSDXUIBqQv/sCpmuWRiHLwqiT1pqqjuBXoQ== +"@solana/wallet-adapter-base@^0.9.17", "@solana/wallet-adapter-base@^0.9.23": + version "0.9.23" + resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-base/-/wallet-adapter-base-0.9.23.tgz#3b17c28afd44e173f44f658bf9700fd637e12a11" + integrity sha512-apqMuYwFp1jFi55NxDfvXUX2x1T0Zh07MxhZ/nCCTGys5raSfYUh82zen2BLv8BSDj/JxZ2P/s7jrQZGrX8uAw== + dependencies: + "@solana/wallet-standard-features" "^1.1.0" + "@wallet-standard/base" "^1.0.1" + "@wallet-standard/features" "^1.0.3" + eventemitter3 "^4.0.7" -"@stablelib/chacha20poly1305@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/chacha20poly1305/-/chacha20poly1305-1.0.1.tgz#de6b18e283a9cb9b7530d8767f99cde1fec4c2ee" - integrity sha512-MmViqnqHd1ymwjOQfghRKw2R/jMIGT3wySN7cthjXCBdO+qErNPUBnRzqNpnvIwg7JBCg3LdeCZZO4de/yEhVA== +"@solana/wallet-adapter-bitkeep@^0.3.20": + version "0.3.20" + resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-bitkeep/-/wallet-adapter-bitkeep-0.3.20.tgz#96f59932238d6dad3af3d983cee82ca6665236e8" + integrity sha512-v6Jd13CZOPNIAX0nFlopAJ3HDvC+MhiB4sde3C8sSnNbjVi9h1WLHBmaUfgqU6mAyhDjWUZjKt4zYlMhLdp/bg== dependencies: - "@stablelib/aead" "^1.0.1" - "@stablelib/binary" "^1.0.1" - "@stablelib/chacha" "^1.0.1" - "@stablelib/constant-time" "^1.0.1" - "@stablelib/poly1305" "^1.0.1" - "@stablelib/wipe" "^1.0.1" + "@solana/wallet-adapter-base" "^0.9.23" -"@stablelib/chacha@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/chacha/-/chacha-1.0.1.tgz#deccfac95083e30600c3f92803a3a1a4fa761371" - integrity sha512-Pmlrswzr0pBzDofdFuVe1q7KdsHKhhU24e8gkEwnTGOmlC7PADzLVxGdn2PoNVBBabdg0l/IfLKg6sHAbTQugg== +"@solana/wallet-adapter-bitpie@^0.5.18": + version "0.5.18" + resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-bitpie/-/wallet-adapter-bitpie-0.5.18.tgz#c77e6d3a43811ed133cf9a92e344aed8ddef15f5" + integrity sha512-gEflEwAyUbfmU4NEmsoDYt1JNFyoBQGm99BBvrvXdJsDdExvT6PwHNi5YlQKp1A4EAqjqaEj+nQzr6ygUpmCBQ== dependencies: - "@stablelib/binary" "^1.0.1" - "@stablelib/wipe" "^1.0.1" + "@solana/wallet-adapter-base" "^0.9.23" -"@stablelib/constant-time@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/constant-time/-/constant-time-1.0.1.tgz#bde361465e1cf7b9753061b77e376b0ca4c77e35" - integrity sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg== +"@solana/wallet-adapter-clover@^0.4.19": + version "0.4.19" + resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-clover/-/wallet-adapter-clover-0.4.19.tgz#76e63d52d5596f34eb48c1a216f81e9600fa320b" + integrity sha512-48PoaPte/SRYeU25bvOSmSEqoKCcyOBH9CXebsDcXkrgf+g46KRlAlsY605q1ebzr+iaFEONtTdxW8LthvJtbA== + dependencies: + "@solana/wallet-adapter-base" "^0.9.23" -"@stablelib/ed25519@^1.0.2": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@stablelib/ed25519/-/ed25519-1.0.3.tgz#f8fdeb6f77114897c887bb6a3138d659d3f35996" - integrity sha512-puIMWaX9QlRsbhxfDc5i+mNPMY+0TmQEskunY1rZEBPi1acBCVQAhnsk/1Hk50DGPtVsZtAWQg4NHGlVaO9Hqg== +"@solana/wallet-adapter-coin98@^0.5.20": + version "0.5.20" + resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-coin98/-/wallet-adapter-coin98-0.5.20.tgz#7ad234b4715cadda80bc09e2ccd9e960ceba1e77" + integrity sha512-gnDFNsFq4IeB6jtQj6fZOUthuuQpvtomCkwkwsOWARNhl8nhnsfbuNs3r4XaT4Q79my07ogNQUBPGKY/8CqjiA== dependencies: - "@stablelib/random" "^1.0.2" - "@stablelib/sha512" "^1.0.1" - "@stablelib/wipe" "^1.0.1" + "@solana/wallet-adapter-base" "^0.9.23" + bs58 "^4.0.1" -"@stablelib/hash@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/hash/-/hash-1.0.1.tgz#3c944403ff2239fad8ebb9015e33e98444058bc5" - integrity sha512-eTPJc/stDkdtOcrNMZ6mcMK1e6yBbqRBaNW55XA1jU8w/7QdnCF0CmMmOD1m7VSkBR44PWrMHU2l6r8YEQHMgg== +"@solana/wallet-adapter-coinbase@^0.1.19": + version "0.1.19" + resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-coinbase/-/wallet-adapter-coinbase-0.1.19.tgz#b750fa739c67390e0918bd7ccc21f39fd602d462" + integrity sha512-hcf9ieAbQxD2g8/5glXVAt67w+3iixpjMMZC7lT7Wa8SJZsq6lmISC9AtZctDEQcWSVV0IkedZp3bg6bp22kng== + dependencies: + "@solana/wallet-adapter-base" "^0.9.23" -"@stablelib/hkdf@1.0.1": - version "1.0.1" +"@solana/wallet-adapter-coinhub@^0.3.18": + version "0.3.18" + resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-coinhub/-/wallet-adapter-coinhub-0.3.18.tgz#3f23b32a88328ae0ba66fc25b15d65e4b13979eb" + integrity sha512-yeJo+cHVlUBlH16Q+knnFDJrH9wzEB3zvSq57PXfqvlWSjySm4PkkK7srRoAwfNOxL/eArSJWfBwRprsymttJQ== + dependencies: + "@solana/wallet-adapter-base" "^0.9.23" + +"@solana/wallet-adapter-fractal@^0.1.8": + version "0.1.8" + resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-fractal/-/wallet-adapter-fractal-0.1.8.tgz#27c6a33c6d56ffb74bab157f2cc6cde7d03d1e54" + integrity sha512-lV/rXOMQSR7sBIEDx8g0jwvXP/fT2Vw/47CSj9BaVYC5LGphhuoYbcI4ko1y0Zv+dJu8JVRTeKbnaiRBjht5DA== + dependencies: + "@fractalwagmi/solana-wallet-adapter" "^0.1.1" + "@solana/wallet-adapter-base" "^0.9.23" + +"@solana/wallet-adapter-huobi@^0.1.15": + version "0.1.15" + resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-huobi/-/wallet-adapter-huobi-0.1.15.tgz#a9e7eaf26fbef743f0b47572ddc46e92e6a62f44" + integrity sha512-VKwlK0fE7v97NEWwP86iBY/xgnB3fQJv2/RYaw8ODAcfJqVQZAV6EhDR8fo6++jdS1KkcWc2GcHdBMrqPli3yQ== + dependencies: + "@solana/wallet-adapter-base" "^0.9.23" + +"@solana/wallet-adapter-hyperpay@^0.1.14": + version "0.1.14" + resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-hyperpay/-/wallet-adapter-hyperpay-0.1.14.tgz#1dcf15366165cc4e742346eb42b353c8c67f44f4" + integrity sha512-K0qMVpPHbeIVAvhwnn+2GR8jjBe/a5EP514TL/10SQQ8vTLd7ggNWZdTRCjUkHRlsbTOK7yYWAOHu3gx7429rw== + dependencies: + "@solana/wallet-adapter-base" "^0.9.23" + +"@solana/wallet-adapter-keystone@^0.1.15": + version "0.1.15" + resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-keystone/-/wallet-adapter-keystone-0.1.15.tgz#baff234defdb932347451bb413f09e93433c9ba6" + integrity sha512-2A31/vuDRAfASOEyWvJ2YjtwCQohwim3/K+KzhPfvG20C4wr6agDbMXi1T2lDWwrd13kyP+dIgOzPfuLn09tWw== + dependencies: + "@keystonehq/sol-keyring" "^0.3.1" + "@solana/wallet-adapter-base" "^0.9.23" + +"@solana/wallet-adapter-krystal@^0.1.12": + version "0.1.12" + resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-krystal/-/wallet-adapter-krystal-0.1.12.tgz#bcb6cdf6a553dde575042353fdd155a890478fdd" + integrity sha512-umQV9cbLZcqJFkcjpdOgPvTeDvUjcivRSzWgbx27drmeQ9bi4w9bYH5XkFmbj9iD98q+fjrYQUOK772IHZqrkQ== + dependencies: + "@solana/wallet-adapter-base" "^0.9.23" + +"@solana/wallet-adapter-ledger@^0.9.25": + version "0.9.25" + resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-ledger/-/wallet-adapter-ledger-0.9.25.tgz#c9243b47d94469788e8090fbe8a136867e944bd9" + integrity sha512-59yD3aveLwlzXqk4zBCaPLobeqAhmtMxPizfUBOjzwRKyepi1Nnnt9AC9Af3JrweU2x4qySRxAaZfU/iNqJ3rQ== + dependencies: + "@ledgerhq/devices" "6.27.1" + "@ledgerhq/hw-transport" "6.27.1" + "@ledgerhq/hw-transport-webhid" "6.27.1" + "@solana/wallet-adapter-base" "^0.9.23" + buffer "^6.0.3" + +"@solana/wallet-adapter-mathwallet@^0.9.18": + version "0.9.18" + resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-mathwallet/-/wallet-adapter-mathwallet-0.9.18.tgz#23172fef715a7dc8b600887c5d0fb996eb6c6cf0" + integrity sha512-sleBX+wB8Wahu2lLBCWihkFtnl64DMJgla/kgsf75PCNmNA93+WLA4gYOK+fFKeBkU12a/Hp5oZKEQsQGFPSOA== + dependencies: + "@solana/wallet-adapter-base" "^0.9.23" + +"@solana/wallet-adapter-neko@^0.2.12": + version "0.2.12" + resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-neko/-/wallet-adapter-neko-0.2.12.tgz#aeacd2ca856692fd41e1c5c86bc986349df42db1" + integrity sha512-ei1QoQZhiYMuH/qm3bnXlueT0jQmH4tZfQvEwudFB8+a0fLtSA8lZU+CYI1jd1YLDjkUEIiXV6R/u32nlCuYDA== + dependencies: + "@solana/wallet-adapter-base" "^0.9.23" + +"@solana/wallet-adapter-nightly@^0.1.16": + version "0.1.16" + resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-nightly/-/wallet-adapter-nightly-0.1.16.tgz#51be8f39d8ccac609c59c96ea1f5df95d71274ca" + integrity sha512-JaPzT8R4HHUqGn/QdElx9iRW98h0NaANBt0j3CZZYWlqsdG0f8fFfy2xofILA+qnDL6NaRI9AzQ4NcQGuVZsVQ== + dependencies: + "@solana/wallet-adapter-base" "^0.9.23" + +"@solana/wallet-adapter-nufi@^0.1.17": + version "0.1.17" + resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-nufi/-/wallet-adapter-nufi-0.1.17.tgz#131a02453905aafdecaef12d251b0b0aaab08a44" + integrity sha512-ggTZKvYPJS3m/9hsMaGSH0F8kqumPqP0WdY7WNihWR6O4Pr401kDBdgXPXNSGorIahdPrRBzp5UrahnrlodvTQ== + dependencies: + "@solana/wallet-adapter-base" "^0.9.23" + +"@solana/wallet-adapter-onto@^0.1.7": + version "0.1.7" + resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-onto/-/wallet-adapter-onto-0.1.7.tgz#f1a9b0aa8205f7bc7c552139ff9a7699e9bf753d" + integrity sha512-WS4LY0Z0J+NcyEkjdjkD11uKURkRQ/RHMYSFE59U+MuBHggEpXJFZuJzUE9SZbG1ltlLTh13hS5ZuiEz7F+faA== + dependencies: + "@solana/wallet-adapter-base" "^0.9.23" + +"@solana/wallet-adapter-particle@^0.1.12": + version "0.1.12" + resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-particle/-/wallet-adapter-particle-0.1.12.tgz#666755a156ad2ce24baa48b92bc1b1c39447a57c" + integrity sha512-6tD5pbyuyCRDswDVD5LCakVQ/vIwjO2lXlVvJFDLdhGa6MinbjTHigLmE58nkTgKATRScyS8FuCCzGmYcXGbow== + dependencies: + "@particle-network/solana-wallet" "^1.3.2" + "@solana/wallet-adapter-base" "^0.9.23" + +"@solana/wallet-adapter-phantom@^0.9.24": + version "0.9.24" + resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-phantom/-/wallet-adapter-phantom-0.9.24.tgz#9cc0c55d784f99f81a711bae895c38819960b2fc" + integrity sha512-D24AxRHmRJ4AYoRvijbiuUb9LmC4xLGKLMSJS2ly+zGxVmaPASPM/ThaY/DlYTDL31QvkYtl8RzSR4yIU1gpLg== + dependencies: + "@solana/wallet-adapter-base" "^0.9.23" + +"@solana/wallet-adapter-react-ui@^0.9.35": + version "0.9.35" + resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-react-ui/-/wallet-adapter-react-ui-0.9.35.tgz#f44bf71a636845cf6862ac7fd556ee6f7b1a3757" + integrity sha512-SyHUavEAyzBL5zim5xAlYaqP5jF3bOtxi/02wgXzMpKXUYpG4EiXXY3DeGw5eUbcvvej45rQENtTHWEEH9fW+A== + dependencies: + "@solana/wallet-adapter-base" "^0.9.23" + "@solana/wallet-adapter-base-ui" "^0.1.2" + "@solana/wallet-adapter-react" "^0.15.35" + +"@solana/wallet-adapter-react@^0.15.35": + version "0.15.35" + resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-react/-/wallet-adapter-react-0.15.35.tgz#0d42e6774c0d55f3782d3eb5edb6ac9888858b08" + integrity sha512-i4hc/gNLTYNLMEt2LS+4lrrc0QAwa5SU2PtYMnZ2A3rsoKF5m1bv1h6cjLj2KBry4/zRGEBoqkiMOC5zHkLnRQ== + dependencies: + "@solana-mobile/wallet-adapter-mobile" "^2.0.0" + "@solana/wallet-adapter-base" "^0.9.23" + "@solana/wallet-standard-wallet-adapter-react" "^1.1.0" + +"@solana/wallet-adapter-safepal@^0.5.18": + version "0.5.18" + resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-safepal/-/wallet-adapter-safepal-0.5.18.tgz#7eaaeaf6cb162beaed74a61b5beb6b95a67c63ea" + integrity sha512-E/EIO5j+f0FS9Yj5o5JLJ/qHh3Se/9jP2KdHKhooWTlXWbQDzrxMjV88qIKKl5sgWEndqRYDuDbAdW+2dhw6hw== + dependencies: + "@solana/wallet-adapter-base" "^0.9.23" + +"@solana/wallet-adapter-saifu@^0.1.15": + version "0.1.15" + resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-saifu/-/wallet-adapter-saifu-0.1.15.tgz#f02df273b3829486b4d26dd265a80f8af1de1960" + integrity sha512-4nrziKQ+4QInh+COsICpNNUlUt456EJ60SZLxvG/z1AOGpatuzT0gN1+RdMcwHGUtiPBPCkEneUVhFZhhbMJlg== + dependencies: + "@solana/wallet-adapter-base" "^0.9.23" + +"@solana/wallet-adapter-salmon@^0.1.14": + version "0.1.14" + resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-salmon/-/wallet-adapter-salmon-0.1.14.tgz#4a6c6d570600e07af731d4ba2565f22a23211d85" + integrity sha512-CMXdbhaj3prloCJwvxO7e1wfAyRd58QiPB8pjvB4GBbznyoSnHbFXmpxZrKX1Dk6FoJOGBgjB71xnreGcc6oMw== + dependencies: + "@solana/wallet-adapter-base" "^0.9.23" + salmon-adapter-sdk "^1.1.1" + +"@solana/wallet-adapter-sky@^0.1.15": + version "0.1.15" + resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-sky/-/wallet-adapter-sky-0.1.15.tgz#43ea9e2f1505b4ab163b276ac8bd9a6a6467d105" + integrity sha512-1vlk1/jnlOC/WfDDgDoUk3XtEhB3hq1fKtUb+xj0pVuSOg2Db+8ka9vPPYlVaKHoGvjm30iGGfr3ZrCxVfG6OQ== + dependencies: + "@solana/wallet-adapter-base" "^0.9.23" + +"@solana/wallet-adapter-solflare@^0.6.28": + version "0.6.28" + resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-solflare/-/wallet-adapter-solflare-0.6.28.tgz#3de42a43220cca361050ebd1755078012a5b0fe2" + integrity sha512-iiUQtuXp8p4OdruDawsm1dRRnzUCcsu+lKo8OezESskHtbmZw2Ifej0P99AbJbBAcBw7q4GPI6987Vh05Si5rw== + dependencies: + "@solana/wallet-adapter-base" "^0.9.23" + "@solana/wallet-standard-chains" "^1.1.0" + "@solflare-wallet/metamask-sdk" "^1.0.2" + "@solflare-wallet/sdk" "^1.3.0" + "@wallet-standard/wallet" "^1.0.1" + +"@solana/wallet-adapter-solong@^0.9.18": + version "0.9.18" + resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-solong/-/wallet-adapter-solong-0.9.18.tgz#c7b2f043c2142d40cda7537ad028f31bd5b95815" + integrity sha512-n40eemFUbJlOP+FKvn8rgq+YAOW51lEsn7uVz5ZjmiaW6MnRQniId9KkGYPPOUjytFyM+6/4x6IXI+QJknlSqA== + dependencies: + "@solana/wallet-adapter-base" "^0.9.23" + +"@solana/wallet-adapter-spot@^0.1.15": + version "0.1.15" + resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-spot/-/wallet-adapter-spot-0.1.15.tgz#f442a2f5560ed3abc0fefa5984aaa0af695f3b28" + integrity sha512-daU2iBTSJp1RGfQrB2uV06+2WHfeyW0uhjoJ3zTkz24kXqv5/ycoPHr8Gi2jkDSGMFkewnjWF8g0KMEzq2VYug== + dependencies: + "@solana/wallet-adapter-base" "^0.9.23" + +"@solana/wallet-adapter-tokenary@^0.1.12": + version "0.1.12" + resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-tokenary/-/wallet-adapter-tokenary-0.1.12.tgz#83d99309528794fb2380354c164729e68abe1440" + integrity sha512-iIsOzzEHfRfDUiwYy2BAVGeMl+xBUu92qYK1yAKeKxQPF5McJrnjS3FXwT/onBU5WMdxI6dWm0HKZUiDwefN6A== + dependencies: + "@solana/wallet-adapter-base" "^0.9.23" + +"@solana/wallet-adapter-tokenpocket@^0.4.19": + version "0.4.19" + resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-tokenpocket/-/wallet-adapter-tokenpocket-0.4.19.tgz#a380eb15270d1d209d4d7b4e961270b977e4070e" + integrity sha512-zKXTN+tuKIr/stSxUeG9XPBks9iqeliBWS9JF8eq+8u/Qb/bIDbNSQmd8Z5u1x2lf0puiStc9/iUu/+MLaOSVg== + dependencies: + "@solana/wallet-adapter-base" "^0.9.23" + +"@solana/wallet-adapter-torus@^0.11.28": + version "0.11.28" + resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-torus/-/wallet-adapter-torus-0.11.28.tgz#b857eeab77ff16a0e2400bc841e261ce58fb9da3" + integrity sha512-bu1oJQ+AoIZICxz8J1lVcdL+iBBrdbynnEs5N6dxwoM/cMGLbX7PGYqaH0J1dEXisA+1H5AzGAnW4UU05VBmLA== + dependencies: + "@solana/wallet-adapter-base" "^0.9.23" + "@toruslabs/solana-embed" "^0.3.4" + assert "^2.0.0" + crypto-browserify "^3.12.0" + process "^0.11.10" + stream-browserify "^3.0.0" + +"@solana/wallet-adapter-trezor@^0.1.2": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-trezor/-/wallet-adapter-trezor-0.1.2.tgz#05c1a31ac9bbbbf9457927cec1152965423c7362" + integrity sha512-x4nXntYi1SIv63ZdXWX/Rq/VKwguByKu67WpyUXsu8kOdviksb20bQMuAR7Ue41oJ9zSnLlTxAxA1SuWNkFRBg== + dependencies: + "@solana/wallet-adapter-base" "^0.9.23" + "@trezor/connect-web" "^9.2.1" + buffer "^6.0.3" + +"@solana/wallet-adapter-trust@^0.1.13": + version "0.1.13" + resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-trust/-/wallet-adapter-trust-0.1.13.tgz#7c67b76d1977f9e2e45a8b6f5e4c470b29c1d33e" + integrity sha512-lkmPfNdyRgx+z0K7i2cDa3a6SOKXpi3FiaYSo8Zozoxkp+Ga/NXVWxlXtMca4GAc/MnJMVp7yF/31kyFIee+3A== + dependencies: + "@solana/wallet-adapter-base" "^0.9.23" + +"@solana/wallet-adapter-unsafe-burner@^0.1.7": + version "0.1.7" + resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-unsafe-burner/-/wallet-adapter-unsafe-burner-0.1.7.tgz#11e734988af382f2eeb533d0eacca297de4bf190" + integrity sha512-SuBVqQxA1NNUwP4Lo70rLPaM8aWkV1EFAlxkRoRLtwyw/gM8bxTO6+9EVyKCv+ix3yw1rCGIF3B0idXx0i37eQ== + dependencies: + "@noble/curves" "^1.1.0" + "@solana/wallet-adapter-base" "^0.9.23" + "@solana/wallet-standard-features" "^1.1.0" + "@solana/wallet-standard-util" "^1.1.0" + +"@solana/wallet-adapter-walletconnect@^0.1.16": + version "0.1.16" + resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-walletconnect/-/wallet-adapter-walletconnect-0.1.16.tgz#c335970ddec1247e546a4811fceb4f5edf9487de" + integrity sha512-jNaQwSho8hT7gF1ifePE8TJc1FULx8jCF16KX3fZPtzXDxKrj0R4VUpHMGcw4MlDknrnZNLOJAVvyiawAkPCRQ== + dependencies: + "@jnwng/walletconnect-solana" "^0.2.0" + "@solana/wallet-adapter-base" "^0.9.23" + +"@solana/wallet-adapter-wallets@^0.19.32": + version "0.19.32" + resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-wallets/-/wallet-adapter-wallets-0.19.32.tgz#2b3c887e825a480c7c210d2794c19a7c2c1ed57a" + integrity sha512-voZYQiIy1yXuKvm7x7YpnQ53eiJC7NpIYSQjzApOUiswiBRVeYcnPO4O/MMPUwsGkS7iZKqKZjo5CnOaN44n+g== + dependencies: + "@solana/wallet-adapter-alpha" "^0.1.10" + "@solana/wallet-adapter-avana" "^0.1.13" + "@solana/wallet-adapter-bitkeep" "^0.3.20" + "@solana/wallet-adapter-bitpie" "^0.5.18" + "@solana/wallet-adapter-clover" "^0.4.19" + "@solana/wallet-adapter-coin98" "^0.5.20" + "@solana/wallet-adapter-coinbase" "^0.1.19" + "@solana/wallet-adapter-coinhub" "^0.3.18" + "@solana/wallet-adapter-fractal" "^0.1.8" + "@solana/wallet-adapter-huobi" "^0.1.15" + "@solana/wallet-adapter-hyperpay" "^0.1.14" + "@solana/wallet-adapter-keystone" "^0.1.15" + "@solana/wallet-adapter-krystal" "^0.1.12" + "@solana/wallet-adapter-ledger" "^0.9.25" + "@solana/wallet-adapter-mathwallet" "^0.9.18" + "@solana/wallet-adapter-neko" "^0.2.12" + "@solana/wallet-adapter-nightly" "^0.1.16" + "@solana/wallet-adapter-nufi" "^0.1.17" + "@solana/wallet-adapter-onto" "^0.1.7" + "@solana/wallet-adapter-particle" "^0.1.12" + "@solana/wallet-adapter-phantom" "^0.9.24" + "@solana/wallet-adapter-safepal" "^0.5.18" + "@solana/wallet-adapter-saifu" "^0.1.15" + "@solana/wallet-adapter-salmon" "^0.1.14" + "@solana/wallet-adapter-sky" "^0.1.15" + "@solana/wallet-adapter-solflare" "^0.6.28" + "@solana/wallet-adapter-solong" "^0.9.18" + "@solana/wallet-adapter-spot" "^0.1.15" + "@solana/wallet-adapter-tokenary" "^0.1.12" + "@solana/wallet-adapter-tokenpocket" "^0.4.19" + "@solana/wallet-adapter-torus" "^0.11.28" + "@solana/wallet-adapter-trezor" "^0.1.2" + "@solana/wallet-adapter-trust" "^0.1.13" + "@solana/wallet-adapter-unsafe-burner" "^0.1.7" + "@solana/wallet-adapter-walletconnect" "^0.1.16" + "@solana/wallet-adapter-xdefi" "^0.1.7" + +"@solana/wallet-adapter-xdefi@^0.1.7": + version "0.1.7" + resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-xdefi/-/wallet-adapter-xdefi-0.1.7.tgz#caa3c134148a4b9867a474ec3d139b4d7326d522" + integrity sha512-d0icfBOQyaY8kpsdU/wQwaBIahZZPzkXkXfBjpMGwjixD8oeZUFfsg8LC7T1rOIUObeczlocaR/lwtEqWpnaeg== + dependencies: + "@solana/wallet-adapter-base" "^0.9.23" + +"@solana/wallet-standard-chains@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@solana/wallet-standard-chains/-/wallet-standard-chains-1.1.0.tgz#459b297e71b0d9c1196c11a0578b38c85998be7d" + integrity sha512-IRJHf94UZM8AaRRmY18d34xCJiVPJej1XVwXiTjihHnmwD0cxdQbc/CKjrawyqFyQAKJx7raE5g9mnJsAdspTg== + dependencies: + "@wallet-standard/base" "^1.0.1" + +"@solana/wallet-standard-core@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@solana/wallet-standard-core/-/wallet-standard-core-1.1.1.tgz#7187c085dcee38719902217a7ecdd1bf3f27afa3" + integrity sha512-DoQ5Ryly4GAZtxRUmW2rIWrgNvTYVCWrFCFFjZI5s4zu2QNsP7sHZUax3kc1GbmFLXNL1FWRZlPOXRs6e0ZEng== + dependencies: + "@solana/wallet-standard-chains" "^1.1.0" + "@solana/wallet-standard-features" "^1.2.0" + "@solana/wallet-standard-util" "^1.1.1" + +"@solana/wallet-standard-features@^1.1.0", "@solana/wallet-standard-features@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@solana/wallet-standard-features/-/wallet-standard-features-1.2.0.tgz#be8b3824abf5ebcfeaa7298445bf53f76a27c935" + integrity sha512-tUd9srDLkRpe1BYg7we+c4UhRQkq+XQWswsr/L1xfGmoRDF47BPSXf4zE7ZU2GRBGvxtGt7lwJVAufQyQYhxTQ== + dependencies: + "@wallet-standard/base" "^1.0.1" + "@wallet-standard/features" "^1.0.3" + +"@solana/wallet-standard-util@^1.1.0", "@solana/wallet-standard-util@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@solana/wallet-standard-util/-/wallet-standard-util-1.1.1.tgz#f645fdd8b7d3c553a3b59aa19c25c51a1badce66" + integrity sha512-dPObl4ntmfOc0VAGGyyFvrqhL8UkHXmVsgbj0K9RcznKV4KB3MgjGwzo8CTSX5El5lkb0rDeEzFqvToJXRz3dw== + dependencies: + "@noble/curves" "^1.1.0" + "@solana/wallet-standard-chains" "^1.1.0" + "@solana/wallet-standard-features" "^1.2.0" + +"@solana/wallet-standard-wallet-adapter-base@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@solana/wallet-standard-wallet-adapter-base/-/wallet-standard-wallet-adapter-base-1.1.2.tgz#f030f412cd16b06e95c6da5548a03113319d3620" + integrity sha512-DqhzYbgh3disHMgcz6Du7fmpG29BYVapNEEiL+JoVMa+bU9d4P1wfwXUNyJyRpGGNXtwhyZjIk2umWbe5ZBNaQ== + dependencies: + "@solana/wallet-adapter-base" "^0.9.23" + "@solana/wallet-standard-chains" "^1.1.0" + "@solana/wallet-standard-features" "^1.2.0" + "@solana/wallet-standard-util" "^1.1.1" + "@wallet-standard/app" "^1.0.1" + "@wallet-standard/base" "^1.0.1" + "@wallet-standard/features" "^1.0.3" + "@wallet-standard/wallet" "^1.0.1" + +"@solana/wallet-standard-wallet-adapter-react@^1.1.0", "@solana/wallet-standard-wallet-adapter-react@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@solana/wallet-standard-wallet-adapter-react/-/wallet-standard-wallet-adapter-react-1.1.2.tgz#a7bc71786e8f891d2dd83f7de30db4708767a56a" + integrity sha512-bN6W4QkzenyjUoUz3sC5PAed+z29icGtPh9VSmLl1ZrRO7NbFB49a8uwUUVXNxhL/ZbMsyVKhb9bNj47/p8uhQ== + dependencies: + "@solana/wallet-standard-wallet-adapter-base" "^1.1.2" + "@wallet-standard/app" "^1.0.1" + "@wallet-standard/base" "^1.0.1" + +"@solana/wallet-standard-wallet-adapter@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@solana/wallet-standard-wallet-adapter/-/wallet-standard-wallet-adapter-1.1.2.tgz#a9ff9e4d5c379e4f38c03a2b69c9a221904181b6" + integrity sha512-lCwoA+vhPfmvjcmJOhSRV94wouVWTfJv1Z7eeULAe+GodCeKA/0T9/uBYgXHUxQjLHd7o8LpLYIkfm+xjA5sMA== + dependencies: + "@solana/wallet-standard-wallet-adapter-base" "^1.1.2" + "@solana/wallet-standard-wallet-adapter-react" "^1.1.2" + +"@solana/wallet-standard@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@solana/wallet-standard/-/wallet-standard-1.1.2.tgz#b68e38db863f6945979fe278f2cecc2e21f84c2d" + integrity sha512-o7wk+zr5/QgyE393cGRC04K1hacR4EkBu3MB925ddaLvCVaXjwr2asgdviGzN9PEm3FiEJp3sMmMKYHFnwOITQ== + dependencies: + "@solana/wallet-standard-core" "^1.1.1" + "@solana/wallet-standard-wallet-adapter" "^1.1.2" + +"@solana/web3.js@^1.36.0", "@solana/web3.js@^1.63.1", "@solana/web3.js@^1.95.0", "@solana/web3.js@^1.95.3": + version "1.95.3" + resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.95.3.tgz#70b5f4d76823f56b5af6403da51125fffeb65ff3" + integrity sha512-O6rPUN0w2fkNqx/Z3QJMB9L225Ex10PRDH8bTaIUPZXMPV0QP8ZpPvjQnXK+upUczlRgzHzd6SjKIha1p+I6og== + dependencies: + "@babel/runtime" "^7.25.0" + "@noble/curves" "^1.4.2" + "@noble/hashes" "^1.4.0" + "@solana/buffer-layout" "^4.0.1" + agentkeepalive "^4.5.0" + bigint-buffer "^1.1.5" + bn.js "^5.2.1" + borsh "^0.7.0" + bs58 "^4.0.1" + buffer "6.0.3" + fast-stable-stringify "^1.0.0" + jayson "^4.1.1" + node-fetch "^2.7.0" + rpc-websockets "^9.0.2" + superstruct "^2.0.2" + +"@solflare-wallet/metamask-sdk@^1.0.2": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@solflare-wallet/metamask-sdk/-/metamask-sdk-1.0.3.tgz#3baaa22de2c86515e6ba6025285cd1f5d74b04e5" + integrity sha512-os5Px5PTMYKGS5tzOoyjDxtOtj0jZKnbI1Uwt8+Jsw1HHIA+Ib2UACCGNhQ/un2f8sIbTfLD1WuucNMOy8KZpQ== + dependencies: + "@solana/wallet-standard-features" "^1.1.0" + "@wallet-standard/base" "^1.0.1" + bs58 "^5.0.0" + eventemitter3 "^5.0.1" + uuid "^9.0.0" + +"@solflare-wallet/sdk@^1.3.0": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@solflare-wallet/sdk/-/sdk-1.4.2.tgz#630b9a26f7bca255ee4a7088f287ae8c8335e345" + integrity sha512-jrseNWipwl9xXZgrzwZF3hhL0eIVxuEtoZOSLmuPuef7FgHjstuTtNJAeT4icA7pzdDV4hZvu54pI2r2f7SmrQ== + dependencies: + bs58 "^5.0.0" + eventemitter3 "^5.0.1" + uuid "^9.0.0" + +"@stablelib/aead@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/aead/-/aead-1.0.1.tgz#c4b1106df9c23d1b867eb9b276d8f42d5fc4c0c3" + integrity sha512-q39ik6sxGHewqtO0nP4BuSe3db5G1fEJE8ukvngS2gLkBXyy6E7pLubhbYgnkDFv6V8cWaxcE4Xn0t6LWcJkyg== + +"@stablelib/binary@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/binary/-/binary-1.0.1.tgz#c5900b94368baf00f811da5bdb1610963dfddf7f" + integrity sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q== + dependencies: + "@stablelib/int" "^1.0.1" + +"@stablelib/bytes@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/bytes/-/bytes-1.0.1.tgz#0f4aa7b03df3080b878c7dea927d01f42d6a20d8" + integrity sha512-Kre4Y4kdwuqL8BR2E9hV/R5sOrUj6NanZaZis0V6lX5yzqC3hBuVSDXUIBqQv/sCpmuWRiHLwqiT1pqqjuBXoQ== + +"@stablelib/chacha20poly1305@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/chacha20poly1305/-/chacha20poly1305-1.0.1.tgz#de6b18e283a9cb9b7530d8767f99cde1fec4c2ee" + integrity sha512-MmViqnqHd1ymwjOQfghRKw2R/jMIGT3wySN7cthjXCBdO+qErNPUBnRzqNpnvIwg7JBCg3LdeCZZO4de/yEhVA== + dependencies: + "@stablelib/aead" "^1.0.1" + "@stablelib/binary" "^1.0.1" + "@stablelib/chacha" "^1.0.1" + "@stablelib/constant-time" "^1.0.1" + "@stablelib/poly1305" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/chacha@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/chacha/-/chacha-1.0.1.tgz#deccfac95083e30600c3f92803a3a1a4fa761371" + integrity sha512-Pmlrswzr0pBzDofdFuVe1q7KdsHKhhU24e8gkEwnTGOmlC7PADzLVxGdn2PoNVBBabdg0l/IfLKg6sHAbTQugg== + dependencies: + "@stablelib/binary" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/constant-time@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/constant-time/-/constant-time-1.0.1.tgz#bde361465e1cf7b9753061b77e376b0ca4c77e35" + integrity sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg== + +"@stablelib/ed25519@^1.0.2": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@stablelib/ed25519/-/ed25519-1.0.3.tgz#f8fdeb6f77114897c887bb6a3138d659d3f35996" + integrity sha512-puIMWaX9QlRsbhxfDc5i+mNPMY+0TmQEskunY1rZEBPi1acBCVQAhnsk/1Hk50DGPtVsZtAWQg4NHGlVaO9Hqg== + dependencies: + "@stablelib/random" "^1.0.2" + "@stablelib/sha512" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/hash@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/hash/-/hash-1.0.1.tgz#3c944403ff2239fad8ebb9015e33e98444058bc5" + integrity sha512-eTPJc/stDkdtOcrNMZ6mcMK1e6yBbqRBaNW55XA1jU8w/7QdnCF0CmMmOD1m7VSkBR44PWrMHU2l6r8YEQHMgg== + +"@stablelib/hkdf@1.0.1": + version "1.0.1" resolved "https://registry.yarnpkg.com/@stablelib/hkdf/-/hkdf-1.0.1.tgz#b4efd47fd56fb43c6a13e8775a54b354f028d98d" integrity sha512-SBEHYE16ZXlHuaW5RcGk533YlBj4grMeg5TooN80W3NpcHRtLZLLXvKyX0qcRFxf+BGDobJLnwkvgEwHIDBR6g== dependencies: @@ -5996,7 +6983,7 @@ "@stablelib/constant-time" "^1.0.1" "@stablelib/wipe" "^1.0.1" -"@stablelib/random@^1.0.1", "@stablelib/random@^1.0.2": +"@stablelib/random@1.0.2", "@stablelib/random@^1.0.1", "@stablelib/random@^1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@stablelib/random/-/random-1.0.2.tgz#2dece393636489bf7e19c51229dd7900eddf742c" integrity sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w== @@ -6027,7 +7014,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== @@ -6057,8 +7044,8 @@ integrity sha512-jHMVmIAjkhSzswZEid2xhWtQb7yyux/8Am/i5xBQfDw6azwSPdr1nfXCKaIYs5R/NRcqi543V9roDQQQogTaKQ== "@subsocial/data-hub-sdk@dappforce/subsocial-data-hub-sdk#staging": - version "0.0.102" - resolved "https://codeload.github.com/dappforce/subsocial-data-hub-sdk/tar.gz/7b9c238ef96951f659682263c35c324acf0b5d1a" + version "0.0.108" + resolved "https://codeload.github.com/dappforce/subsocial-data-hub-sdk/tar.gz/04a39b1888ae160b686d96a2bc9781b476ed30cf" dependencies: "@neynar/nodejs-sdk" "^1.19.3" "@subsocial/api" "^0.8.13" @@ -6305,74 +7292,74 @@ "@svgr/plugin-jsx" "^6.5.1" "@svgr/plugin-svgo" "^6.5.1" -"@swc/core-darwin-arm64@1.7.14": - version "1.7.14" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.7.14.tgz#a4530ec755ea183802cc9dfe4900ab5f6a327fea" - integrity sha512-V0OUXjOH+hdGxDYG8NkQzy25mKOpcNKFpqtZEzLe5V/CpLJPnpg1+pMz70m14s9ZFda9OxsjlvPbg1FLUwhgIQ== - -"@swc/core-darwin-x64@1.7.14": - version "1.7.14" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.7.14.tgz#2c9c717fd28dd1dde9c21cf58b01f1cda7976b1a" - integrity sha512-9iFvUnxG6FC3An5ogp5jbBfQuUmTTwy8KMB+ZddUoPB3NR1eV+Y9vOh/tfWcenSJbgOKDLgYC5D/b1mHAprsrQ== - -"@swc/core-linux-arm-gnueabihf@1.7.14": - version "1.7.14" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.7.14.tgz#fed055c9c65347177c8df88720f8a51793a4df06" - integrity sha512-zGJsef9qPivKSH8Vv4F/HiBXBTHZ5Hs3ZjVGo/UIdWPJF8fTL9OVADiRrl34Q7zOZEtGXRwEKLUW1SCQcbDvZA== - -"@swc/core-linux-arm64-gnu@1.7.14": - version "1.7.14" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.7.14.tgz#ca740c8ea26f041b2dc43ba87facec452052814f" - integrity sha512-AxV3MPsoI7i4B8FXOew3dx3N8y00YoJYvIPfxelw07RegeCEH3aHp2U2DtgbP/NV1ugZMx0TL2Z2DEvocmA51g== - -"@swc/core-linux-arm64-musl@1.7.14": - version "1.7.14" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.7.14.tgz#fbc6fed24f5ad58b948e5b7abe6cd1f07112bef1" - integrity sha512-JDLdNjUj3zPehd4+DrQD8Ltb3B5lD8D05IwePyDWw+uR/YPc7w/TX1FUVci5h3giJnlMCJRvi1IQYV7K1n7KtQ== - -"@swc/core-linux-x64-gnu@1.7.14": - version "1.7.14" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.7.14.tgz#509a37833e4fbf89506b9291d9bd131fa2017fca" - integrity sha512-Siy5OvPCLLWmMdx4msnEs8HvEVUEigSn0+3pbLjv78iwzXd0qSBNHUPZyC1xeurVaUbpNDxZTpPRIwpqNE2+Og== - -"@swc/core-linux-x64-musl@1.7.14": - version "1.7.14" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.7.14.tgz#81156cc6ff814ad4b8fcf6eb6658d3f247db0b57" - integrity sha512-FtEGm9mwtRYQNK43WMtUIadxHs/ja2rnDurB99os0ZoFTGG2IHuht2zD97W0wB8JbqEabT1XwSG9Y5wmN+ciEQ== - -"@swc/core-win32-arm64-msvc@1.7.14": - version "1.7.14" - resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.7.14.tgz#c605fa783b5fbe1fff784ace4c4bb074b8d6026d" - integrity sha512-Jp8KDlfq7Ntt2/BXr0y344cYgB1zf0DaLzDZ1ZJR6rYlAzWYSccLYcxHa97VGnsYhhPspMpmCvHid97oe2hl4A== - -"@swc/core-win32-ia32-msvc@1.7.14": - version "1.7.14" - resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.7.14.tgz#3e15dc3b662c9fab851a38b3e271c8e2da4ba03a" - integrity sha512-I+cFsXF0OU0J9J4zdWiQKKLURO5dvCujH9Jr8N0cErdy54l9d4gfIxdctfTF+7FyXtWKLTCkp+oby9BQhkFGWA== - -"@swc/core-win32-x64-msvc@1.7.14": - version "1.7.14" - resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.7.14.tgz#83958d92e9f07865ec9365212111fbc295660f0d" - integrity sha512-NNrprQCK6d28mG436jVo2TD+vACHseUECacEBGZ9Ef0qfOIWS1XIt2MisQKG0Oea2VvLFl6tF/V4Lnx/H0Sn3Q== +"@swc/core-darwin-arm64@1.7.21": + version "1.7.21" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.7.21.tgz#51df5abc3f0f4c82d2a97bd1d012315b69a225db" + integrity sha512-hh5uOZ7jWF66z2TRMhhXtWMQkssuPCSIZPy9VHf5KvZ46cX+5UeECDthchYklEVZQyy4Qr6oxfh4qff/5spoMA== + +"@swc/core-darwin-x64@1.7.21": + version "1.7.21" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.7.21.tgz#dc334a8dfa29a67e4697cfbd223842e77a553c48" + integrity sha512-lTsPquqSierQ6jWiWM7NnYXXZGk9zx3NGkPLHjPbcH5BmyiauX0CC/YJYJx7YmS2InRLyALlGmidHkaF4JY28A== + +"@swc/core-linux-arm-gnueabihf@1.7.21": + version "1.7.21" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.7.21.tgz#04fa126e379aa6e710b5ac6f346b02b8e30faa16" + integrity sha512-AgSd0fnSzAqCvWpzzZCq75z62JVGUkkXEOpfdi99jj/tryPy38KdXJtkVWJmufPXlRHokGTBitalk33WDJwsbA== + +"@swc/core-linux-arm64-gnu@1.7.21": + version "1.7.21" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.7.21.tgz#012495884d29170c85671314d2040655b7af951c" + integrity sha512-l+jw6RQ4Y43/8dIst0c73uQE+W3kCWrCFqMqC/xIuE/iqHOnvYK6YbA1ffOct2dImkHzNiKuoehGqtQAc6cNaQ== + +"@swc/core-linux-arm64-musl@1.7.21": + version "1.7.21" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.7.21.tgz#69e7487ca3d438a593f3359271c7e7abe4b63abc" + integrity sha512-29KKZXrTo/c9F1JFL9WsNvCa6UCdIVhHP5EfuYhlKbn5/YmSsNFkuHdUtZFEd5U4+jiShXDmgGCtLW2d08LIwg== + +"@swc/core-linux-x64-gnu@1.7.21": + version "1.7.21" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.7.21.tgz#b702103410cff10b72ccc441040f45b41b828cc4" + integrity sha512-HsP3JwddvQj5HvnjmOr+Bd5plEm6ccpfP5wUlm3hywzvdVkj+yR29bmD7UwpV/1zCQ60Ry35a7mXhKI6HQxFgw== + +"@swc/core-linux-x64-musl@1.7.21": + version "1.7.21" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.7.21.tgz#e6598cedc13c8538ada09a5b60dfbc6717e3588b" + integrity sha512-hYKLVeUTHqvFK628DFJEwxoX6p42T3HaQ4QjNtf3oKhiJWFh9iTRUrN/oCB5YI3R9WMkFkKh+99gZ/Dd0T5lsg== + +"@swc/core-win32-arm64-msvc@1.7.21": + version "1.7.21" + resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.7.21.tgz#7d3d14fce61046e60dc5bf705b34c9b8d3df844c" + integrity sha512-qyWAKW10aMBe6iUqeZ7NAJIswjfggVTUpDINpQGUJhz+pR71YZDidXgZXpaDB84YyDB2JAlRqd1YrLkl7CMiIw== + +"@swc/core-win32-ia32-msvc@1.7.21": + version "1.7.21" + resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.7.21.tgz#4317d0737c982c88ff30c07c95ccc8f6621455ca" + integrity sha512-cy61wS3wgH5mEwBiQ5w6/FnQrchBDAdPsSh0dKSzNmI+4K8hDxS8uzdBycWqJXO0cc+mA77SIlwZC3hP3Kum2g== + +"@swc/core-win32-x64-msvc@1.7.21": + version "1.7.21" + resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.7.21.tgz#3d6f97dfbc4f1741be769b83c1329fb1dbf7d8ec" + integrity sha512-/rexGItJURNJOdae+a48M+loT74nsEU+PyRRVAkZMKNRtLoYFAr0cpDlS5FodIgGunp/nqM0bst4H2w6Y05IKA== "@swc/core@^1.3.55": - version "1.7.14" - resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.7.14.tgz#d10492b5a4168cb1e73cf561a315e8b0f62255ed" - integrity sha512-9aeXeifnyuvc2pcuuhPQgVUwdpGEzZ+9nJu0W8/hNl/aESFsJGR5i9uQJRGu0atoNr01gK092fvmqMmQAPcKow== + version "1.7.21" + resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.7.21.tgz#88aa8ce9747f508804c016ebfe38436682dca378" + integrity sha512-7/cN0SZ+y2V6e0hsDD8koGR0QVh7Jl3r756bwaHLLSN+kReoUb/yVcLsA8iTn90JLME3DkQK4CPjxDCQiyMXNg== dependencies: "@swc/counter" "^0.1.3" "@swc/types" "^0.1.12" optionalDependencies: - "@swc/core-darwin-arm64" "1.7.14" - "@swc/core-darwin-x64" "1.7.14" - "@swc/core-linux-arm-gnueabihf" "1.7.14" - "@swc/core-linux-arm64-gnu" "1.7.14" - "@swc/core-linux-arm64-musl" "1.7.14" - "@swc/core-linux-x64-gnu" "1.7.14" - "@swc/core-linux-x64-musl" "1.7.14" - "@swc/core-win32-arm64-msvc" "1.7.14" - "@swc/core-win32-ia32-msvc" "1.7.14" - "@swc/core-win32-x64-msvc" "1.7.14" + "@swc/core-darwin-arm64" "1.7.21" + "@swc/core-darwin-x64" "1.7.21" + "@swc/core-linux-arm-gnueabihf" "1.7.21" + "@swc/core-linux-arm64-gnu" "1.7.21" + "@swc/core-linux-arm64-musl" "1.7.21" + "@swc/core-linux-x64-gnu" "1.7.21" + "@swc/core-linux-x64-musl" "1.7.21" + "@swc/core-win32-arm64-msvc" "1.7.21" + "@swc/core-win32-ia32-msvc" "1.7.21" + "@swc/core-win32-x64-msvc" "1.7.21" "@swc/counter@^0.1.3": version "0.1.3" @@ -6506,11 +7493,297 @@ resolved "https://registry.yarnpkg.com/@tma.js/sdk/-/sdk-2.2.0.tgz#c3e57e3e0181ab0dcd65cc1f2252942a86ad7bef" integrity sha512-Dn2Rg248NCCidI8qia77PJheDx2KDvHn6Fg3AHmOdv7DEMMfNf8D4o5DFHtZzGoMvvNTrrYrqK/KQxbs0wpYTg== +"@toruslabs/base-controllers@^2.8.0": + version "2.9.0" + resolved "https://registry.yarnpkg.com/@toruslabs/base-controllers/-/base-controllers-2.9.0.tgz#e23f4228b5a90bf94ba9b0b27451f3024bd1acc4" + integrity sha512-rKc+bR4QB/wdbH0CxLZC5e2PUZcIgkr9yY7TMd3oIffDklaYBnsuC5ES2/rgK1aRUDRWz+qWbTwLqsY6PlT37Q== + dependencies: + "@ethereumjs/util" "^8.0.6" + "@toruslabs/broadcast-channel" "^6.2.0" + "@toruslabs/http-helpers" "^3.3.0" + "@toruslabs/openlogin-jrpc" "^4.0.0" + async-mutex "^0.4.0" + bignumber.js "^9.1.1" + bowser "^2.11.0" + eth-rpc-errors "^4.0.3" + json-rpc-random-id "^1.0.1" + lodash "^4.17.21" + loglevel "^1.8.1" + +"@toruslabs/broadcast-channel@^6.2.0": + version "6.3.1" + resolved "https://registry.yarnpkg.com/@toruslabs/broadcast-channel/-/broadcast-channel-6.3.1.tgz#d4b0a08c3a0fa88d42d7f33387ce9be928c2d4b2" + integrity sha512-BEtJQ+9bMfFoGuCsp5NmxyY+C980Ho+3BZIKSiYwRtl5qymJ+jMX5lsoCppoQblcb34dP6FwEjeFw80Y9QC/rw== + dependencies: + "@babel/runtime" "^7.21.0" + "@toruslabs/eccrypto" "^2.1.1" + "@toruslabs/metadata-helpers" "^3.2.0" + bowser "^2.11.0" + loglevel "^1.8.1" + oblivious-set "1.1.1" + socket.io-client "^4.6.1" + unload "^2.4.1" + +"@toruslabs/eccrypto@^2.1.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@toruslabs/eccrypto/-/eccrypto-2.2.1.tgz#19012cc4e774e8c3df7ceebb2c1a07ecfd784917" + integrity sha512-7sviL0wLYsfA5ogEAOIdb0tu/QAOFXfHc9B8ONYtF04x4Mg3Nr89LL35FhjaEm055q8Ru7cUQhEFSiqJqm9GCw== + dependencies: + elliptic "^6.5.4" + +"@toruslabs/http-helpers@^3.3.0", "@toruslabs/http-helpers@^3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@toruslabs/http-helpers/-/http-helpers-3.4.0.tgz#6d1da9e6aba094af62e73cf639a69844c82202f3" + integrity sha512-CoeJSL32mpp0gmYjxv48odu6pfjHk/rbJHDwCtYPcMHAl+qUQ/DTpVOOn9U0fGkD+fYZrQmZbRkXFgLhiT0ajQ== + dependencies: + lodash.merge "^4.6.2" + loglevel "^1.8.1" + +"@toruslabs/metadata-helpers@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@toruslabs/metadata-helpers/-/metadata-helpers-3.2.0.tgz#b297933ac37481a9c86a125ac6a4e5c2f109fb78" + integrity sha512-2bCc6PNKd9y+aWfZQ1FXd47QmfyT4NmmqPGfsqk+sQS2o+MlxIyLuh9uh7deMgXo4b4qBDX+RQGbIKM1zVk56w== + dependencies: + "@toruslabs/eccrypto" "^2.1.1" + "@toruslabs/http-helpers" "^3.4.0" + elliptic "^6.5.4" + ethereum-cryptography "^2.0.0" + json-stable-stringify "^1.0.2" + +"@toruslabs/openlogin-jrpc@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@toruslabs/openlogin-jrpc/-/openlogin-jrpc-3.2.0.tgz#fff051d05b6c01b6329e2da9b134fae99305d1e0" + integrity sha512-G+K0EHyVUaAEyeD4xGsnAZRpn/ner8lQ2HC2+pGKg6oGmzKI2wGMDcw2KMH6+HKlfBGVJ5/VR9AQfC/tZlLDmQ== + dependencies: + "@toruslabs/openlogin-utils" "^3.0.0" + end-of-stream "^1.4.4" + eth-rpc-errors "^4.0.3" + events "^3.3.0" + fast-safe-stringify "^2.1.1" + once "^1.4.0" + pump "^3.0.0" + readable-stream "^3.6.2" + +"@toruslabs/openlogin-jrpc@^4.0.0": + version "4.7.2" + resolved "https://registry.yarnpkg.com/@toruslabs/openlogin-jrpc/-/openlogin-jrpc-4.7.2.tgz#e04dd6945da92d790f713a58aaa1657c57b330c8" + integrity sha512-9Eb0cPc0lPuS6v2YkQlgzfbRnZ6fLez9Ike5wznoHSFA2/JVu1onwuI56EV1HwswdDrOWPPQEyzI1j9NriZ0ew== + dependencies: + "@metamask/rpc-errors" "^5.1.1" + "@toruslabs/openlogin-utils" "^4.7.0" + end-of-stream "^1.4.4" + events "^3.3.0" + fast-safe-stringify "^2.1.1" + once "^1.4.0" + pump "^3.0.0" + readable-stream "^4.4.2" + +"@toruslabs/openlogin-utils@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@toruslabs/openlogin-utils/-/openlogin-utils-3.0.0.tgz#2c264fa9a2787a1d2b8c703a38740c7c27967fa7" + integrity sha512-T5t29/AIFqXc84x4OoAkZWjd0uoP2Lk6iaFndnIIMzCPu+BwwV0spX/jd/3YYNjZ8Po8D+faEnwAhiqemYeK2w== + dependencies: + base64url "^3.0.1" + keccak "^3.0.3" + randombytes "^2.1.0" + +"@toruslabs/openlogin-utils@^4.7.0": + version "4.7.0" + resolved "https://registry.yarnpkg.com/@toruslabs/openlogin-utils/-/openlogin-utils-4.7.0.tgz#741d6ba1c0754b59a182b1c6dd8d0263695ed980" + integrity sha512-w6XkHs4WKuufsf/zzteBzs4EJuOknrUmJ+iv5FZ8HzIpMQeL/984CP8HYaFSEYkbGCP4ydAnhY4Uh0QAhpDbPg== + dependencies: + base64url "^3.0.1" + +"@toruslabs/solana-embed@^0.3.4": + version "0.3.4" + resolved "https://registry.yarnpkg.com/@toruslabs/solana-embed/-/solana-embed-0.3.4.tgz#547727e6d202f734d1e97a6658bdb3cf54599938" + integrity sha512-yj+aBJoBAneap7Jlu9/OOp7irWNuC5CqAhyhVcmb0IjWrCUFnioLdL0U7UfGaqVm/5O0leJh7/Z5Ll+3toWJBg== + dependencies: + "@solana/web3.js" "^1.63.1" + "@toruslabs/base-controllers" "^2.8.0" + "@toruslabs/http-helpers" "^3.3.0" + "@toruslabs/openlogin-jrpc" "^3.2.0" + eth-rpc-errors "^4.0.3" + fast-deep-equal "^3.1.3" + is-stream "^2.0.1" + lodash-es "^4.17.21" + loglevel "^1.8.1" + pump "^3.0.0" + "@total-typescript/ts-reset@^0.5.1": version "0.5.1" resolved "https://registry.yarnpkg.com/@total-typescript/ts-reset/-/ts-reset-0.5.1.tgz#93b0535d00faa588518bcfb0db30182e63e4f7af" integrity sha512-AqlrT8YA1o7Ff5wPfMOL0pvL+1X+sw60NN6CcOCqs658emD6RfiXhF7Gu9QcfKBH7ELY2nInLhKSCWVoNL70MQ== +"@trezor/analytics@1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@trezor/analytics/-/analytics-1.2.0.tgz#3096ac08a8019ed7ca41716b4fb30316bf7849f0" + integrity sha512-q3lJtHL0tXDEbjl/pENpmUVzVcTd9NW4G2gskY2OKLsUykWP0pqN+9YX41C/f2TvMePVEA67kzXTm9US2sB2eA== + dependencies: + "@trezor/env-utils" "1.2.0" + "@trezor/utils" "9.2.0" + +"@trezor/blockchain-link-types@1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@trezor/blockchain-link-types/-/blockchain-link-types-1.2.0.tgz#3b6ac069ed6655b95354a649a5598f548568b215" + integrity sha512-MCukIR4R6IuzAS4I51j9r0KRYXGBNzqMAPh0Fc9gerWvEC9rNrcsbYYDJy/7wYsiAxHRVYiqUyq9yTjUzUkdUA== + dependencies: + "@solana/web3.js" "^1.95.0" + "@trezor/type-utils" "1.1.0" + "@trezor/utxo-lib" "2.2.0" + socks-proxy-agent "6.1.1" + +"@trezor/blockchain-link-utils@1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@trezor/blockchain-link-utils/-/blockchain-link-utils-1.2.0.tgz#17d4bd52888917d3b692659c2427e064833d6fd1" + integrity sha512-C9nMCbj5qaMvKzUXfMb1+nfPZd6StTeIBpQBFEnvHOcCl6p4Meab1HUSVJ+Dcd1Y+y0mhlWGcOw8ZvBTLIB/Pg== + dependencies: + "@mobily/ts-belt" "^3.13.1" + "@solana/web3.js" "^1.95.0" + "@trezor/env-utils" "1.2.0" + "@trezor/utils" "9.2.0" + +"@trezor/blockchain-link@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@trezor/blockchain-link/-/blockchain-link-2.3.0.tgz#b0232fc8b3a62a9166727e622cbb6578e9ba9530" + integrity sha512-kuDHXIVhiTzpCmqoCH3zzCtM2BK+MEIvlj+GpA9VHPQbMGM55YU6c7M2jtq3vbw1XdtyvmvTD/s7Y8/WZR+IMg== + dependencies: + "@solana/buffer-layout" "^4.0.1" + "@solana/web3.js" "^1.95.0" + "@trezor/blockchain-link-types" "1.2.0" + "@trezor/blockchain-link-utils" "1.2.0" + "@trezor/utils" "9.2.0" + "@trezor/utxo-lib" "2.2.0" + "@types/web" "^0.0.138" + events "^3.3.0" + ripple-lib "^1.10.1" + socks-proxy-agent "6.1.1" + ws "^8.18.0" + +"@trezor/connect-analytics@1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@trezor/connect-analytics/-/connect-analytics-1.2.0.tgz#9f9586e0b2b228d6d604a281ef432402711d0ac6" + integrity sha512-tgbxoHQN8TUMjZ9k2XgIya3+nYcQFG+eUKNHzBe6zN2vyXuWF93jAph4uC42L+8YbYYya080BwCXjq0YfGZQgA== + dependencies: + "@trezor/analytics" "1.2.0" + +"@trezor/connect-common@0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@trezor/connect-common/-/connect-common-0.2.0.tgz#c5dda8328a3be12e26070927cd150160ffa133aa" + integrity sha512-yfLbOOBQyKoXblLGTjhArv0AxAUrxm+asOYT+WFR+SocuIxFlWLOEk80HYfowucPJ1aN0W8T/kTOPCO+x9pd+Q== + dependencies: + "@trezor/env-utils" "1.2.0" + "@trezor/utils" "9.2.0" + +"@trezor/connect-web@^9.2.1": + version "9.4.0" + resolved "https://registry.yarnpkg.com/@trezor/connect-web/-/connect-web-9.4.0.tgz#22ed3e603b7e984ed494dedf6cffece224526e3f" + integrity sha512-y3upWE6LA7Qq2uHiTcw3IOgT4vSYfG9fxUOBmtiEpBo5A0QHH7MNDk5eTVoKJ7Hcc2A/qOCR8aA++3hOXTZGrA== + dependencies: + "@trezor/connect" "9.4.0" + "@trezor/connect-common" "0.2.0" + "@trezor/utils" "9.2.0" + +"@trezor/connect@9.4.0": + version "9.4.0" + resolved "https://registry.yarnpkg.com/@trezor/connect/-/connect-9.4.0.tgz#803690b47e640666fd8089ff7461ef1249fc097a" + integrity sha512-gtY5coDzTEaJ/mrdXkRgpWARO/bWcEDFIuJMPjpEr27UzeTZy8loSFRA7jR3IsJXHyxJ7g8iLrd4jeuC9rdpow== + dependencies: + "@babel/preset-typescript" "^7.24.7" + "@ethereumjs/common" "^4.3.0" + "@ethereumjs/tx" "^5.3.0" + "@fivebinaries/coin-selection" "2.2.1" + "@trezor/blockchain-link" "2.3.0" + "@trezor/blockchain-link-types" "1.2.0" + "@trezor/connect-analytics" "1.2.0" + "@trezor/connect-common" "0.2.0" + "@trezor/protobuf" "1.2.0" + "@trezor/protocol" "1.2.0" + "@trezor/schema-utils" "1.2.0" + "@trezor/transport" "1.3.0" + "@trezor/utils" "9.2.0" + "@trezor/utxo-lib" "2.2.0" + blakejs "^1.2.1" + bs58 "^5.0.0" + bs58check "^3.0.1" + cross-fetch "^4.0.0" + +"@trezor/env-utils@1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@trezor/env-utils/-/env-utils-1.2.0.tgz#8fb771a6f43e31b7dcf8c383c1f06c21f16b9674" + integrity sha512-dbOR+PIeReZW4iooN+DQIMWloZAV92jMGOTzEdcY6NA63nCV8QUSxoNZwZtU9nVRPeJLrT6cVkVG80nZjlplow== + dependencies: + ua-parser-js "^1.0.37" + +"@trezor/protobuf@1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@trezor/protobuf/-/protobuf-1.2.0.tgz#1d0db025a6167910b3a6d640c04da18188e4dd45" + integrity sha512-lc09F0MotgKx3W9+hPGY1f/egRgymNha6PQJTgTaXam/6yoP7MSA9obQlmvndJZymbdqLb9jbtigGuLgoxx6Bw== + dependencies: + "@trezor/schema-utils" "1.2.0" + protobufjs "7.2.6" + +"@trezor/protocol@1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@trezor/protocol/-/protocol-1.2.0.tgz#54a404b03068924b3eec9b68923a81434e75b2d7" + integrity sha512-2dE/deXGszpnOAF1FHvx1QG8pwkwCm2UqN3lfD0mBobpvTjkLqNROuOCwDN/HApMV0f3OYoIVR6Y3mgkRfc42w== + +"@trezor/schema-utils@1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@trezor/schema-utils/-/schema-utils-1.2.0.tgz#8841cf1ce7351a34727a07dac6c615c361d18f76" + integrity sha512-LUvcNpYjrkOyThVqzMobWXl7W39apyp5tlaj0LRkCQFRvpt1q8eXynjdLb2ofJTiwrMvLLFB4NRRpD3hBqu1LQ== + dependencies: + "@sinclair/typebox" "^0.31.28" + ts-mixer "^6.0.3" + +"@trezor/transport@1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@trezor/transport/-/transport-1.3.0.tgz#d011332ad2c34176e5d388b0d763d0f4c834b28b" + integrity sha512-rgUwtH63PJRoOftkLcIo4/ElkaKq/2ban4wf2y/8k7lseU4OQXl5yxBJS7dGc3rVtxSBd3QhL6TY3h9icrJUVQ== + dependencies: + "@trezor/protobuf" "1.2.0" + "@trezor/protocol" "1.2.0" + "@trezor/utils" "9.2.0" + cross-fetch "^4.0.0" + long "^4.0.0" + protobufjs "7.2.6" + usb "^2.11.0" + +"@trezor/type-utils@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@trezor/type-utils/-/type-utils-1.1.0.tgz#cbf65c188555565afe03b16e2ea1238e6fea5b71" + integrity sha512-zoPN9ZmdYlr03WyCWEQY6xCHPfhsodENYHPcZMKObVsUlhtMh1Z7OSD/pzd/NzOPBAtSctNbldx4aFu9A88afw== + +"@trezor/utils@9.2.0": + version "9.2.0" + resolved "https://registry.yarnpkg.com/@trezor/utils/-/utils-9.2.0.tgz#2fad23ff7e584461707fd7ed449e6a79a5376730" + integrity sha512-OslmtISmVl2r5lS/BPagyaWYudT/fSiezrSaKA1aDctGKOrze1JkA7p5J1j0uUAgjf9HODCiH8+PBAVXjUZL8A== + dependencies: + bignumber.js "^9.1.2" + +"@trezor/utxo-lib@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@trezor/utxo-lib/-/utxo-lib-2.2.0.tgz#1310900ed01c7851babee54650ba6fa09f9160e8" + integrity sha512-Fhu+QZjOMpiipmJWdRAwbJEVk4DtwZfh7jy67vjgliWlO9p8M5Ap3XzlbZGF9+mKLrACjv/yhN63XMqTbxVcqw== + dependencies: + "@trezor/utils" "9.2.0" + bchaddrjs "^0.5.2" + bech32 "^2.0.0" + bip66 "^1.1.5" + bitcoin-ops "^1.4.1" + blake-hash "^2.0.0" + blakejs "^1.2.1" + bn.js "^5.2.1" + bs58 "^5.0.0" + bs58check "^3.0.1" + create-hmac "^1.1.7" + int64-buffer "^1.0.1" + pushdata-bitcoin "^1.0.1" + tiny-secp256k1 "^1.1.6" + typeforce "^1.18.0" + varuint-bitcoin "^1.1.2" + wif "^4.0.0" + "@trysound/sax@0.2.0": version "0.2.0" resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" @@ -6620,6 +7893,11 @@ resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.194.tgz#b71eb6f7a0ff11bff59fc987134a093029258a76" integrity sha512-r22s9tAS7imvBt2lyHC9B8AGwWnXaYb1tY09oyLkXDs4vArpYJzw09nj8MLx5VfciBPGIb+ZwG0ssYnEPJxn/g== +"@types/lodash@^4.14.136": + version "4.17.7" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.7.tgz#2f776bcb53adc9e13b2c0dfd493dfcbd7de43612" + integrity sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA== + "@types/long@^4.0.1": version "4.0.2" resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.2.tgz#b74129719fc8d11c01868010082d483b7545591a" @@ -6792,11 +8070,21 @@ resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.11.tgz#11af57b127e32487774841f7a4e54eab166d03c4" integrity sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA== -"@types/uuid@^8.3.4": +"@types/uuid@8.3.4", "@types/uuid@^8.3.4": version "8.3.4" resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.3.4.tgz#bd86a43617df0594787d38b735f55c805becf1bc" integrity sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw== +"@types/w3c-web-usb@^1.0.6": + version "1.0.10" + resolved "https://registry.yarnpkg.com/@types/w3c-web-usb/-/w3c-web-usb-1.0.10.tgz#cf89cccd2d93b6245e784c19afe0a9f5038d4528" + integrity sha512-CHgUI5kTc/QLMP8hODUHhge0D4vx+9UiAwIGiT0sTy/B2XpdX1U5rJt6JSISgr6ikRT7vxV9EVAFeYZqUnl1gQ== + +"@types/web@^0.0.138": + version "0.0.138" + resolved "https://registry.yarnpkg.com/@types/web/-/web-0.0.138.tgz#52ca1e688275a0b82a5522a7accaaa182aa029b1" + integrity sha512-oQD74hl+cNCZdSWIupJCXZ2azTuB3MJ/mrWlgYt+v4pD7/Dr78gl5hKAdieZNf9NrAqwUez79bHtnFVSNSscWA== + "@types/websocket@^1.0.5": version "1.0.10" resolved "https://registry.yarnpkg.com/@types/websocket/-/websocket-1.0.10.tgz#804b1a02780da522f5742bc184a6d16a2eb78c7c" @@ -6804,7 +8092,7 @@ dependencies: "@types/node" "*" -"@types/ws@^7.4.4": +"@types/ws@^7.2.0", "@types/ws@^7.4.4": version "7.4.7" resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.7.tgz#f7c390a36f7a0679aa69de2d501319f4f8d9b702" integrity sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww== @@ -6997,22 +8285,69 @@ resolved "https://registry.yarnpkg.com/@wagmi/core/-/core-1.0.5.tgz#6224c0885135adaafcf991b75b89d48c8290d032" integrity sha512-n8Y84WJkofGjhd4a+vpZzPPEQiHnkIGMe0uHOXfkm4eKJZyaJqvVJFPMWE6xFJkk0hxZ+1zw5xn0ZhdroHwHvg== dependencies: - "@wagmi/chains" "0.2.23" - "@wagmi/connectors" "1.0.3" - abitype "0.8.1" - eventemitter3 "^4.0.7" - zustand "^4.3.1" + "@wagmi/chains" "0.2.23" + "@wagmi/connectors" "1.0.3" + abitype "0.8.1" + eventemitter3 "^4.0.7" + zustand "^4.3.1" + +"@wagmi/core@^1.1.0": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@wagmi/core/-/core-1.3.1.tgz#78af0d087277773e4b07f19617da854d19229415" + integrity sha512-H+16Jy5hdMhaMYfEHnp3nnhOw9nG5BTS9Dxd9nDYwIhRkWuIWODpPu0lYfaQ0mR7TYIyi1nBQ0GplYYhV0lwQg== + dependencies: + "@wagmi/chains" "1.3.0" + "@wagmi/connectors" "2.6.0" + abitype "0.8.7" + eventemitter3 "^4.0.7" + zustand "^4.3.1" + +"@wallet-standard/app@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@wallet-standard/app/-/app-1.0.1.tgz#f83c3ae887f7fb52497a7b259bba734ae10a2994" + integrity sha512-LnLYq2Vy2guTZ8GQKKSXQK3+FRGPil75XEdkZqE6fiLixJhZJoJa5hT7lXxwe0ykVTt9LEThdTbOpT7KadS26Q== + dependencies: + "@wallet-standard/base" "^1.0.1" + +"@wallet-standard/base@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@wallet-standard/base/-/base-1.0.1.tgz#860dd94d47c9e3c5c43b79d91c6afdbd7a36264e" + integrity sha512-1To3ekMfzhYxe0Yhkpri+Fedq0SYcfrOfJi3vbLjMwF2qiKPjTGLwZkf2C9ftdQmxES+hmxhBzTwF4KgcOwf8w== + +"@wallet-standard/core@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@wallet-standard/core/-/core-1.0.3.tgz#3b6743e207ca4e1e725ae20f1838b400fb0694ff" + integrity sha512-Jb33IIjC1wM1HoKkYD7xQ6d6PZ8EmMZvyc8R7dFgX66n/xkvksVTW04g9yLvQXrLFbcIjHrCxW6TXMhvpsAAzg== + dependencies: + "@wallet-standard/app" "^1.0.1" + "@wallet-standard/base" "^1.0.1" + "@wallet-standard/features" "^1.0.3" + "@wallet-standard/wallet" "^1.0.1" + +"@wallet-standard/features@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@wallet-standard/features/-/features-1.0.3.tgz#c992876c5e4f7a0672f8869c4146c87e0dfe48c8" + integrity sha512-m8475I6W5LTatTZuUz5JJNK42wFRgkJTB0I9tkruMwfqBF2UN2eomkYNVf9RbrsROelCRzSFmugqjKZBFaubsA== + dependencies: + "@wallet-standard/base" "^1.0.1" + +"@wallet-standard/wallet@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@wallet-standard/wallet/-/wallet-1.0.1.tgz#95438941a2a1ee12a794444357b59d53e19b374c" + integrity sha512-qkhJeuQU2afQTZ02yMZE5SFc91Fo3hyFjFkpQglHudENNyiSG0oUKcIjky8X32xVSaumgTZSQUAzpXnCTWHzKQ== + dependencies: + "@wallet-standard/base" "^1.0.1" -"@wagmi/core@^1.1.0": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@wagmi/core/-/core-1.3.1.tgz#78af0d087277773e4b07f19617da854d19229415" - integrity sha512-H+16Jy5hdMhaMYfEHnp3nnhOw9nG5BTS9Dxd9nDYwIhRkWuIWODpPu0lYfaQ0mR7TYIyi1nBQ0GplYYhV0lwQg== +"@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: - "@wagmi/chains" "1.3.0" - "@wagmi/connectors" "2.6.0" - abitype "0.8.7" - eventemitter3 "^4.0.7" - zustand "^4.3.1" + "@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/core@2.11.0": version "2.11.0" @@ -7037,6 +8372,28 @@ lodash.isequal "4.5.0" uint8arrays "^3.1.0" +"@walletconnect/core@2.15.1": + version "2.15.1" + resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-2.15.1.tgz#98536057874246988428d9aadf4b25b23c3fd57f" + integrity sha512-9MWVt33MFrLiAeK9nqY/B30/y0M4uiq8v9EXenIBQdlgkmXM++RTcOnn7u7EAbthGgzx3WLPRm4ViwIb+rI/Cg== + dependencies: + "@walletconnect/heartbeat" "1.2.2" + "@walletconnect/jsonrpc-provider" "1.0.14" + "@walletconnect/jsonrpc-types" "1.0.4" + "@walletconnect/jsonrpc-utils" "1.0.8" + "@walletconnect/jsonrpc-ws-connection" "1.0.14" + "@walletconnect/keyvaluestorage" "1.1.1" + "@walletconnect/logger" "2.1.2" + "@walletconnect/relay-api" "1.0.11" + "@walletconnect/relay-auth" "1.0.4" + "@walletconnect/safe-json" "1.0.2" + "@walletconnect/time" "1.0.2" + "@walletconnect/types" "2.15.1" + "@walletconnect/utils" "2.15.1" + events "3.3.0" + lodash.isequal "4.5.0" + uint8arrays "3.1.0" + "@walletconnect/core@2.7.4": version "2.7.4" resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-2.7.4.tgz#1471215ca8cc08ae4719ca1bb6d45dd1b49dea3a" @@ -7154,7 +8511,7 @@ "@walletconnect/utils" "2.8.3" events "^3.3.0" -"@walletconnect/events@^1.0.1": +"@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" integrity sha512-NPTqaoi0oPBVNuLv7qPaJazmGHs5JGyO8eEAk5VGKmJzDR7AHzD4k6ilox5kxk1iwiOnFopBOOMLs86Oa76HpQ== @@ -7171,6 +8528,15 @@ "@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" + integrity sha512-uASiRmC5MwhuRuf05vq4AT48Pq8RMi876zV8rr8cV969uTOzWdB/k+Lj5yI2PBtB1bGQisGen7MM1GcZlQTBXw== + dependencies: + "@walletconnect/events" "^1.0.1" + "@walletconnect/time" "^1.0.2" + events "^3.3.0" + "@walletconnect/jsonrpc-http-connection@^1.0.4", "@walletconnect/jsonrpc-http-connection@^1.0.7": version "1.0.8" resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-http-connection/-/jsonrpc-http-connection-1.0.8.tgz#2f4c3948f074960a3edd07909560f3be13e2c7ae" @@ -7190,6 +8556,15 @@ "@walletconnect/safe-json" "^1.0.2" tslib "1.14.1" +"@walletconnect/jsonrpc-provider@1.0.14", "@walletconnect/jsonrpc-provider@^1.0.13", "@walletconnect/jsonrpc-provider@^1.0.6": + version "1.0.14" + resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-provider/-/jsonrpc-provider-1.0.14.tgz#696f3e3b6d728b361f2e8b853cfc6afbdf2e4e3e" + integrity sha512-rtsNY1XqHvWj0EtITNeuf8PHMvlCLiS3EjQL+WOkxEOA4KPxsohFnBDeyPYiNm4ZvkQdLnece36opYidmtbmow== + dependencies: + "@walletconnect/jsonrpc-utils" "^1.0.8" + "@walletconnect/safe-json" "^1.0.2" + events "^3.3.0" + "@walletconnect/jsonrpc-provider@^1.0.11", "@walletconnect/jsonrpc-provider@^1.0.12": version "1.0.12" resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-provider/-/jsonrpc-provider-1.0.12.tgz#965408d99fc889d49c194cd207804282805f45ed" @@ -7199,15 +8574,6 @@ "@walletconnect/safe-json" "^1.0.2" tslib "1.14.1" -"@walletconnect/jsonrpc-provider@^1.0.13", "@walletconnect/jsonrpc-provider@^1.0.6": - version "1.0.14" - resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-provider/-/jsonrpc-provider-1.0.14.tgz#696f3e3b6d728b361f2e8b853cfc6afbdf2e4e3e" - integrity sha512-rtsNY1XqHvWj0EtITNeuf8PHMvlCLiS3EjQL+WOkxEOA4KPxsohFnBDeyPYiNm4ZvkQdLnece36opYidmtbmow== - dependencies: - "@walletconnect/jsonrpc-utils" "^1.0.8" - "@walletconnect/safe-json" "^1.0.2" - events "^3.3.0" - "@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" @@ -7216,7 +8582,7 @@ keyvaluestorage-interface "^1.0.0" tslib "1.14.1" -"@walletconnect/jsonrpc-types@^1.0.2", "@walletconnect/jsonrpc-types@^1.0.3": +"@walletconnect/jsonrpc-types@1.0.4", "@walletconnect/jsonrpc-types@^1.0.2", "@walletconnect/jsonrpc-types@^1.0.3": version "1.0.4" resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-types/-/jsonrpc-types-1.0.4.tgz#ce1a667d79eadf2a2d9d002c152ceb68739c230c" integrity sha512-P6679fG/M+wuWg9TY8mh6xFSdYnFyFjwFelxyISxMDrlbXokorEVXYOxiqEbrU3x1BmBoCAJJ+vtEaEoMlpCBQ== @@ -7254,7 +8620,7 @@ tslib "1.14.1" ws "^7.5.1" -"@walletconnect/keyvaluestorage@^1.0.2", "@walletconnect/keyvaluestorage@^1.1.1": +"@walletconnect/keyvaluestorage@1.1.1", "@walletconnect/keyvaluestorage@^1.0.2", "@walletconnect/keyvaluestorage@^1.1.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@walletconnect/keyvaluestorage/-/keyvaluestorage-1.1.1.tgz#dd2caddabfbaf80f6b8993a0704d8b83115a1842" integrity sha512-V7ZQq2+mSxAq7MrRqDxanTzu2RcElfK1PfNYiaVnJgJ7Q7G7hTVwF8voIBx92qsRyGHZihrwNPHuZd1aKkd0rA== @@ -7323,7 +8689,7 @@ detect-browser "^5.3.0" query-string "^6.13.5" -"@walletconnect/logger@^2.0.1": +"@walletconnect/logger@2.1.2", "@walletconnect/logger@^2.0.1": version "2.1.2" resolved "https://registry.yarnpkg.com/@walletconnect/logger/-/logger-2.1.2.tgz#813c9af61b96323a99f16c10089bfeb525e2a272" integrity sha512-aAb28I3S6pYXZHQm5ESB+V6rDqIYfsnHaQyzFbwUUBFY4H0OXx/YtTl8lvhUNhMMfb9UxbwEBS253TlXUYJWSw== @@ -7331,6 +8697,11 @@ "@walletconnect/safe-json" "^1.0.2" pino "7.11.0" +"@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.5.4": version "2.5.4" resolved "https://registry.yarnpkg.com/@walletconnect/modal-core/-/modal-core-2.5.4.tgz#7d739a90a9cf103067eea46507ea649e8dada436" @@ -7382,6 +8753,18 @@ "@walletconnect/modal-core" "2.6.2" "@walletconnect/modal-ui" "2.6.2" +"@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" @@ -7392,6 +8775,13 @@ 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" + integrity sha512-tLPErkze/HmC9aCmdZOhtVmYZq1wKfWTJtygQHoWtgg722Jd4homo54Cs4ak2RUFUZIGO2RsOpIcWipaua5D5Q== + dependencies: + "@walletconnect/jsonrpc-types" "^1.0.2" + "@walletconnect/relay-api@^1.0.9": version "1.0.10" resolved "https://registry.yarnpkg.com/@walletconnect/relay-api/-/relay-api-1.0.10.tgz#5aef3cd07c21582b968136179aa75849dcc65499" @@ -7399,7 +8789,7 @@ dependencies: "@walletconnect/jsonrpc-types" "^1.0.2" -"@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== @@ -7411,7 +8801,12 @@ tslib "1.14.1" uint8arrays "^3.0.0" -"@walletconnect/safe-json@^1.0.1", "@walletconnect/safe-json@^1.0.2": +"@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" integrity sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA== @@ -7463,7 +8858,22 @@ "@walletconnect/utils" "2.8.3" events "^3.3.0" -"@walletconnect/time@^1.0.2": +"@walletconnect/sign-client@^2.7.2": + version "2.15.1" + resolved "https://registry.yarnpkg.com/@walletconnect/sign-client/-/sign-client-2.15.1.tgz#95b430164a8c6f3fe629531a5481dec9c9be02b4" + integrity sha512-YnLNEmCHgZ8yBpE3hwZnHD/bVznVMguSAlwLBNOoWUH2f4d9mR8bqa6KeVXqZ3e8mVHcxKTJTjTJ3oQMLyKIjw== + dependencies: + "@walletconnect/core" "2.15.1" + "@walletconnect/events" "1.0.1" + "@walletconnect/heartbeat" "1.2.2" + "@walletconnect/jsonrpc-utils" "1.0.8" + "@walletconnect/logger" "2.1.2" + "@walletconnect/time" "1.0.2" + "@walletconnect/types" "2.15.1" + "@walletconnect/utils" "2.15.1" + events "3.3.0" + +"@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" integrity sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g== @@ -7482,6 +8892,18 @@ "@walletconnect/logger" "^2.0.1" events "^3.3.0" +"@walletconnect/types@2.15.1": + version "2.15.1" + resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-2.15.1.tgz#5a093d28a32581e88fd4246690989099789f0830" + integrity sha512-4WkMsHD8ioZI5GmxNT0qMlz6msI7ZajBcTyDxfRncaNZVau0C+Btw1U4jWO+gxwJVDJY+Ue/cb1QKJ5BanZsyw== + dependencies: + "@walletconnect/events" "1.0.1" + "@walletconnect/heartbeat" "1.2.2" + "@walletconnect/jsonrpc-types" "1.0.4" + "@walletconnect/keyvaluestorage" "1.1.1" + "@walletconnect/logger" "2.1.2" + events "3.3.0" + "@walletconnect/types@2.7.4": version "2.7.4" resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-2.7.4.tgz#958864e7ef497206a24db0ca629a478ca8e1cc08" @@ -7506,6 +8928,11 @@ "@walletconnect/logger" "^2.0.1" 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.11.0": version "2.11.0" resolved "https://registry.yarnpkg.com/@walletconnect/universal-provider/-/universal-provider-2.11.0.tgz#89053c2360b5ce766c213ca4e33bb4ce4976b0be" @@ -7572,6 +8999,26 @@ query-string "7.1.3" uint8arrays "^3.1.0" +"@walletconnect/utils@2.15.1", "@walletconnect/utils@^2.4.5": + version "2.15.1" + resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-2.15.1.tgz#4f90abe4869ee1cff6c0102c57b45e959811ca8d" + integrity sha512-i5AR8XpZdcX8ghaCjYV13Er/KAGe56c1mLaG9c2cv9kmnZMZijeMdInjX/flnSM1RFDUiZXvKPMUNwlCL4NsWw== + 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.11" + "@walletconnect/safe-json" "1.0.2" + "@walletconnect/time" "1.0.2" + "@walletconnect/types" "2.15.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.7.4": version "2.7.4" resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-2.7.4.tgz#314a164aabb7551dae4ac58e63312c9ae6369e1e" @@ -7613,14 +9060,26 @@ query-string "7.1.3" uint8arrays "^3.1.0" -"@walletconnect/window-getters@^1.0.1": +"@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": 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.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": 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== @@ -7719,6 +9178,13 @@ abitype@1.0.5: resolved "https://registry.yarnpkg.com/abitype/-/abitype-1.0.5.tgz#29d0daa3eea867ca90f7e4123144c1d1270774b6" integrity sha512-YzDhti7cjlfaBhHutMaboYB21Ha3rXR9QTkNJFzYC4kC8YclaiwPBBBJY8ejFdu2wnJeZCVZSMlQJ7fi8S6hsw== +abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + accepts@~1.3.5, accepts@~1.3.8: version "1.3.8" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" @@ -7767,6 +9233,13 @@ aes-js@^3.1.2: resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.1.2.tgz#db9aabde85d5caabbfc0d4f2a4446960f627146a" integrity sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ== +agent-base@6, agent-base@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + agent-base@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.0.1.tgz#ec4df4e6406bdf71490ade302ea45f86bf365ea9" @@ -7845,6 +9318,11 @@ ansi-escapes@^4.2.1, ansi-escapes@^4.3.0: dependencies: type-fest "^0.21.3" +ansi-regex@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" + integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== + ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" @@ -7855,7 +9333,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.1: +ansi-styles@^3.2.0, 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== @@ -8008,6 +9486,15 @@ asap@^2.0.0, asap@~2.0.3: resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== +asn1.js@^4.10.1: + version "4.10.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" + integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + asn1js@^3.0.1, asn1js@^3.0.5: version "3.0.5" resolved "https://registry.yarnpkg.com/asn1js/-/asn1js-3.0.5.tgz#5ea36820443dbefb51cc7f88a2ebb5b462114f38" @@ -8017,6 +9504,17 @@ asn1js@^3.0.1, asn1js@^3.0.5: pvutils "^1.1.3" tslib "^2.4.0" +assert@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-2.1.0.tgz#6d92a238d05dc02e7427c881fb8be81c8448b2dd" + integrity sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw== + dependencies: + call-bind "^1.0.2" + is-nan "^1.3.2" + object-is "^1.1.5" + object.assign "^4.1.4" + util "^0.12.5" + ast-types-flow@^0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" @@ -8034,6 +9532,13 @@ async-mutex@^0.2.6: dependencies: tslib "^2.0.0" +async-mutex@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/async-mutex/-/async-mutex-0.4.1.tgz#bccf55b96f2baf8df90ed798cb5544a1f6ee4c2c" + integrity sha512-WfoBo4E/TbCX1G95XTjbWTE3X2XLG0m1Xbv2cwOtuPdyH9CZvnaA5nCt1ucjaKEgW2A5IF71hxrRhr83Je5xjA== + dependencies: + tslib "^2.4.0" + async@^3.2.3: version "3.2.4" resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" @@ -8102,7 +9607,7 @@ axios@0.24.0, axios@^0.24.0: dependencies: follow-redirects "^1.14.4" -axios@1.7.4, axios@^1.6.2: +axios@1.7.4: version "1.7.4" resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.4.tgz#4c8ded1b43683c8dd362973c393f3ede24052aa2" integrity sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw== @@ -8118,6 +9623,15 @@ axios@^0.21.0: dependencies: follow-redirects "^1.14.0" +axios@^1.6.2: + version "1.7.5" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.5.tgz#21eed340eb5daf47d29b6e002424b3e88c8c54b1" + integrity sha512-fZu86yCo+svH3uqJ/yTdQ0QHpQu5oL+/QE+QPSv6BZSkDAoky9vytxp7u5qk83OJFS3kEBcesWni9WTZAv3tSw== + dependencies: + follow-redirects "^1.15.6" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + axobject-query@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.1.1.tgz#3b6e5c6d4e43ca7ba51c5babf99d22a9c68485e1" @@ -8244,13 +9758,18 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -base-x@^3.0.2: +base-x@^3.0.2, base-x@^3.0.9: version "3.0.10" resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.10.tgz#62de58653f8762b5d6f8d9fe30fa75f7b2585a75" integrity sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ== dependencies: safe-buffer "^5.0.1" +base-x@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-4.0.0.tgz#d0e3b7753450c73f8ad2389b5c018a4af7b2224a" + integrity sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw== + base64-js@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-0.0.8.tgz#1101e9544f4a76b1bc3b26d452ca96d7a35e7978" @@ -8261,16 +9780,46 @@ base64-js@^1.3.1: resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== +base64url@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/base64url/-/base64url-3.0.1.tgz#6399d572e2bc3f90a9a8b22d5dbb0a32d33f788d" + integrity sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A== + +bchaddrjs@^0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/bchaddrjs/-/bchaddrjs-0.5.2.tgz#1f52b5077329774e7c82d4882964628106bb11a0" + integrity sha512-OO7gIn3m7ea4FVx4cT8gdlWQR2+++EquhdpWQJH9BQjK63tJJ6ngB3QMZDO6DiBoXiIGUsTPHjlrHVxPGcGxLQ== + dependencies: + bs58check "2.1.2" + buffer "^6.0.3" + cashaddrjs "0.4.4" + stream-browserify "^3.0.0" + bech32@1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== +bech32@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/bech32/-/bech32-2.0.0.tgz#078d3686535075c8c79709f054b1b226a133b355" + integrity sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg== + +big-integer@1.6.36: + version "1.6.36" + resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.36.tgz#78631076265d4ae3555c04f85e7d9d2f3a071a36" + integrity sha512-t70bfa7HYEA1D9idDbmuv7YbsbVkQ+Hp+8KFSul4aE5e/i1bjCNIRYJZlA8Q8p0r9T8cF/RVvwUgRA//FydEyg== + big-integer@^1.6.44: version "1.6.51" resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== +big-integer@^1.6.48: + version "1.6.52" + resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.52.tgz#60a887f3047614a8e1bffe5d7173490a97dc8c85" + integrity sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg== + big.js@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" @@ -8283,7 +9832,7 @@ bigint-buffer@^1.1.5: dependencies: bindings "^1.3.0" -bignumber.js@^9.0.1: +bignumber.js@^9.0.0, bignumber.js@^9.0.1, bignumber.js@^9.1.2: version "9.1.2" resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.2.tgz#b7c4242259c008903b13707983b5f4bbd31eda0c" integrity sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug== @@ -8305,6 +9854,18 @@ bindings@^1.3.0: dependencies: file-uri-to-path "1.0.0" +bip66@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/bip66/-/bip66-1.1.5.tgz#01fa8748785ca70955d5011217d1b3139969ca22" + integrity sha512-nemMHz95EmS38a26XbbdxIYj5csHd3RMP3H5bwQknX0WYHF01qhpufP42mLOwVICuH2JmhIhXiWs89MfUGL7Xw== + dependencies: + safe-buffer "^5.0.1" + +bitcoin-ops@^1.3.0, bitcoin-ops@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/bitcoin-ops/-/bitcoin-ops-1.4.1.tgz#e45de620398e22fd4ca6023de43974ff42240278" + integrity sha512-pef6gxZFztEhaE9RY9HmWVmiIHqCb2OyS4HPKkpc6CIiiOa3Qmuoylxc5P2EkU3w+5eTSifI9SEZC88idAIGow== + bl@^4.0.3, bl@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" @@ -8323,7 +9884,16 @@ bl@^5.0.0: inherits "^2.0.4" readable-stream "^3.4.0" -blakejs@^1.1.0: +blake-hash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/blake-hash/-/blake-hash-2.0.0.tgz#af184dce641951126d05b7d1c3de3224f538d66e" + integrity sha512-Igj8YowDu1PRkRsxZA7NVkdFNxH5rKv5cpLxQ0CVXSIA77pVYwCPRQJ2sMew/oneUpfuYRyjG6r8SmmmnbZb1w== + dependencies: + node-addon-api "^3.0.0" + node-gyp-build "^4.2.2" + readable-stream "^3.6.0" + +blakejs@^1.1.0, blakejs@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.2.1.tgz#5057e4206eadb4a97f7c0b6e197a505042fc3814" integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ== @@ -8340,12 +9910,12 @@ blueimp-canvas-to-blob@^3.29.0: resolved "https://registry.yarnpkg.com/blueimp-canvas-to-blob/-/blueimp-canvas-to-blob-3.29.0.tgz#d965f06cb1a67fdae207a2be56683f55ef531466" integrity sha512-0pcSSGxC0QxT+yVkivxIqW0Y4VlO2XSDPofBAqoJ1qJxgH9eiUDLv50Rixij2cDuEfx4M6DpD9UGZpRhT5Q8qg== -bn.js@^4.11.9: +bn.js@^4.0.0, bn.js@^4.1.0, 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" integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== -bn.js@^5.1.1, bn.js@^5.2.0, bn.js@^5.2.1: +bn.js@^5.0.0, bn.js@^5.1.1, bn.js@^5.2.0, bn.js@^5.2.1: version "5.2.1" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== @@ -8382,6 +9952,11 @@ borsh@^0.7.0: bs58 "^4.0.0" text-encoding-utf-8 "^1.0.2" +bowser@^2.11.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.11.0.tgz#5ca3c35757a7aa5771500c70a73a9f91ef420a8f" + integrity sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA== + boxen@7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/boxen/-/boxen-7.0.0.tgz#9e5f8c26e716793fc96edcf7cf754cdf5e3fbf32" @@ -8425,7 +10000,7 @@ braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.0.1" -brorand@^1.1.0: +brorand@^1.0.1, brorand@^1.0.5, brorand@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== @@ -8435,6 +10010,61 @@ browser-readablestream-to-it@^1.0.0, browser-readablestream-to-it@^1.0.1, browse resolved "https://registry.yarnpkg.com/browser-readablestream-to-it/-/browser-readablestream-to-it-1.0.3.tgz#ac3e406c7ee6cdf0a502dd55db33bab97f7fba76" integrity sha512-+12sHB+Br8HIh6VAMVEG5r3UXCyESIgDW7kzk3BjIXa43DVqVwL7GC5TW3jeh+72dtcH99pPVpw0X8i0jt+/kw== +browserify-aes@^1.0.4, browserify-aes@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0, browserify-rsa@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" + integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== + dependencies: + bn.js "^5.0.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.3.tgz#7afe4c01ec7ee59a89a558a4b75bd85ae62d4208" + integrity sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw== + dependencies: + bn.js "^5.2.1" + browserify-rsa "^4.1.0" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.5.5" + hash-base "~3.0" + inherits "^2.0.4" + parse-asn1 "^5.1.7" + readable-stream "^2.3.8" + safe-buffer "^5.2.1" + browserslist@^4.21.3, browserslist@^4.21.5: version "4.21.5" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.5.tgz#75c5dae60063ee641f977e00edd3cfb2fb7af6a7" @@ -8462,6 +10092,30 @@ bs58@^4.0.0, bs58@^4.0.1: dependencies: base-x "^3.0.2" +bs58@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-5.0.0.tgz#865575b4d13c09ea2a84622df6c8cbeb54ffc279" + integrity sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ== + dependencies: + base-x "^4.0.0" + +bs58check@2.1.2, bs58check@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-2.1.2.tgz#53b018291228d82a5aa08e7d796fdafda54aebfc" + integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== + dependencies: + bs58 "^4.0.0" + create-hash "^1.1.0" + safe-buffer "^5.1.2" + +bs58check@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-3.0.1.tgz#2094d13720a28593de1cba1d8c4e48602fdd841c" + integrity sha512-hjuuJvoWEybo7Hn/0xOrczQKKEKD63WguEjlhLExYs2wUBcebDC1jDNK17eEAD2lYfw82d5ASC1d7K3SWszjaQ== + dependencies: + "@noble/hashes" "^1.2.0" + bs58 "^5.0.0" + bser@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" @@ -8469,11 +10123,34 @@ bser@2.1.1: dependencies: node-int64 "^0.4.0" -buffer-from@^1.0.0: +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-fill@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" + integrity sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ== + +buffer-from@^1.0.0, buffer-from@^1.1.1: 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== +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== + buffer@6.0.3, buffer@^6.0.1, buffer@^6.0.3, buffer@~6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" @@ -8482,7 +10159,7 @@ buffer@6.0.3, buffer@^6.0.1, buffer@^6.0.3, buffer@~6.0.3: base64-js "^1.3.1" ieee754 "^1.2.1" -buffer@^5.5.0: +buffer@^5.1.0, buffer@^5.4.3, buffer@^5.5.0: version "5.7.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== @@ -8538,7 +10215,7 @@ cac@^6.7.12, cac@^6.7.14: resolved "https://registry.yarnpkg.com/cac/-/cac-6.7.14.tgz#804e1e6f506ee363cb0e3ccbb09cad5dd9870959" integrity sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ== -call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.7: +call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== @@ -8618,6 +10295,18 @@ capital-case@^1.0.4: tslib "^2.0.3" upper-case-first "^2.0.2" +cashaddrjs@0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/cashaddrjs/-/cashaddrjs-0.4.4.tgz#169f1ae620d325db77700273d972282adeeee331" + integrity sha512-xZkuWdNOh0uq/mxJIng6vYWfTowZLd9F4GMAlp2DwFHlcCqCm91NtuAc47RuV4L7r4PYcY5p6Cr2OKNb4hnkWA== + dependencies: + big-integer "1.6.36" + +cbor-sync@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cbor-sync/-/cbor-sync-1.0.4.tgz#5a11a1ab75c2a14d1af1b237fd84aa8c1593662f" + integrity sha512-GWlXN4wiz0vdWWXBU71Dvc1q3aBo0HytqwAZnXF1wOwjqNnDWA1vZ1gDMFLlqohak31VQzmhiYfiCX5QSSfagA== + cborg@^1.5.4, cborg@^1.6.0: version "1.10.2" resolved "https://registry.yarnpkg.com/cborg/-/cborg-1.10.2.tgz#83cd581b55b3574c816f82696307c7512db759a1" @@ -8653,7 +10342,7 @@ chalk@5.0.1: resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.0.1.tgz#ca57d71e82bb534a296df63bbacc4a1c22b2a4b6" integrity sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w== -chalk@^2.0.0: +chalk@^2.0.0, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -8806,6 +10495,14 @@ cids@^1.0.0, cids@^1.1.5: multihashes "^4.0.1" uint8arrays "^3.0.0" +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + citty@^0.1.5, citty@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/citty/-/citty-0.1.6.tgz#0f7904da1ed4625e1a9ea7e0fa780981aab7c5e4" @@ -8895,6 +10592,15 @@ clipboardy@^4.0.0: is-wsl "^3.1.0" is64bit "^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" @@ -9195,6 +10901,11 @@ core-js@^2.4.0: resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + cors@^2.8.5: version "2.8.5" resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" @@ -9229,6 +10940,44 @@ crc-32@^1.2.0: resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff" integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ== +crc@^3.8.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/crc/-/crc-3.8.0.tgz#ad60269c2c856f8c299e2c4cc0de4556914056c6" + integrity sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ== + dependencies: + buffer "^5.1.0" + +create-ecdh@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" + integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== + dependencies: + bn.js "^4.1.0" + elliptic "^6.5.3" + +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + cross-fetch@^3.1.4, cross-fetch@^3.1.5: version "3.1.8" resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.8.tgz#0327eba65fd68a7d119f8fb2bf9334a1a7956f82" @@ -9236,6 +10985,13 @@ cross-fetch@^3.1.4, cross-fetch@^3.1.5: dependencies: node-fetch "^2.6.12" +cross-fetch@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-4.0.0.tgz#f037aef1580bb3a1a35164ea2a848ba81b445983" + integrity sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g== + dependencies: + node-fetch "^2.6.12" + cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" @@ -9250,6 +11006,28 @@ crossws@^0.2.0, crossws@^0.2.2: resolved "https://registry.yarnpkg.com/crossws/-/crossws-0.2.4.tgz#82a8b518bff1018ab1d21ced9e35ffbe1681ad03" integrity sha512-DAxroI2uSOgUKLz00NX6A8U/8EE3SZHmIND+10jkVSaypvyt57J5JEOxAQOL6lQxyzi/wZbTIwssU1uy69h5Vg== +crypto-browserify@^3.12.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + +crypto-js@^4.1.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-4.2.0.tgz#4d931639ecdfd12ff80e8186dba6af2c2e856631" + integrity sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q== + crypto-random-string@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" @@ -9385,7 +11163,7 @@ debug@2.6.9, debug@^2.2.0, debug@^2.6.6: dependencies: ms "2.0.0" -debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.4: +debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.4, debug@~4.3.1, debug@~4.3.2: version "4.3.6" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.6.tgz#2ab2c38fbaffebf8aa95fdfe6d88438c7a13c52b" integrity sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg== @@ -9411,6 +11189,11 @@ decamelize@^1.2.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== +decimal.js@^10.2.0: + version "10.4.3" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" + integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== + decode-named-character-reference@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz#daabac9690874c394c81e4162a0304b35d824f0e" @@ -9569,6 +11352,14 @@ dequal@^2.0.0: resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== +des.js@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.1.0.tgz#1d37f5766f3bbff4ee9638e871a8768c173b81da" + integrity sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg== + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + destr@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/destr/-/destr-2.0.0.tgz#60847d02b211de6e252fc72806f4ec39ec257e7b" @@ -9584,6 +11375,11 @@ 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.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/detect-browser/-/detect-browser-5.3.0.tgz#9705ef2bddf46072d0f7265a1fe300e36fe7ceca" @@ -9629,6 +11425,15 @@ didyoumean@^1.2.2: resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + dijkstrajs@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/dijkstrajs/-/dijkstrajs-1.0.3.tgz#4c8dbdea1f0f6478bff94d9c49c784d623e4fc23" @@ -9742,6 +11547,14 @@ dotenv@^16.0.0, dotenv@^16.0.3: resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.3.tgz#115aec42bac5053db3c456db30cc243a5a836a07" integrity sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ== +draggabilly@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/draggabilly/-/draggabilly-3.0.0.tgz#48defe10a67f346a0338caaa40c0765c4d3912d6" + integrity sha512-aEs+B6prbMZQMxc9lgTpCBfyCUhRur/VFucHhIOvlvvdARTj7TcDmX/cdOUtqbjJJUh7+agyJXR5Z6IFe1MxwQ== + dependencies: + get-size "^3.0.0" + unidragger "^3.0.0" + dset@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/dset/-/dset-3.1.2.tgz#89c436ca6450398396dc6538ea00abc0c54cd45a" @@ -9839,6 +11652,19 @@ elliptic@6.5.4: minimalistic-assert "^1.0.1" minimalistic-crypto-utils "^1.0.1" +elliptic@^6.4.0, elliptic@^6.5.3, elliptic@^6.5.4, elliptic@^6.5.5: + version "6.5.7" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.7.tgz#8ec4da2cb2939926a1b9a73619d768207e647c8b" + integrity sha512-ESVCtTwiA+XhY3wyh24QqRGBoP3rEdDUl3EDUUo9tft074fi19IrdpH7hLCMMP3CIj7jb3W96rn8lt/BqIlt5Q== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + embla-carousel-autoplay@^8.0.1: version "8.0.2" resolved "https://registry.yarnpkg.com/embla-carousel-autoplay/-/embla-carousel-autoplay-8.0.2.tgz#c6f321e9bb51efc2097076ddada4a090635d6b7f" @@ -9867,6 +11693,11 @@ emoji-regex@^10.2.1: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-10.3.0.tgz#76998b9268409eb3dae3de989254d456e70cfe23" integrity sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw== +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" @@ -9899,13 +11730,29 @@ encoding@^0.1.13: dependencies: iconv-lite "^0.6.2" -end-of-stream@^1.1.0, end-of-stream@^1.4.1: +end-of-stream@^1.1.0, end-of-stream@^1.4.1, end-of-stream@^1.4.4: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== dependencies: once "^1.4.0" +engine.io-client@~6.5.2: + version "6.5.4" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-6.5.4.tgz#b8bc71ed3f25d0d51d587729262486b4b33bd0d0" + integrity sha512-GeZeeRjpD2qf49cZQ0Wvh/8NJNfeXkXXcoGh+F77oEAgo9gUHwT1fCRxSNU+YEEaysOJTnsFHmM5oAcPy4ntvQ== + dependencies: + "@socket.io/component-emitter" "~3.1.0" + debug "~4.3.1" + engine.io-parser "~5.2.1" + ws "~8.17.1" + xmlhttprequest-ssl "~2.0.0" + +engine.io-parser@~5.2.1: + version "5.2.3" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.2.3.tgz#00dc5b97b1f233a23c9398d0209504cf5f94d92f" + integrity sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q== + enhanced-resolve@^5.12.0: version "5.14.0" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.14.0.tgz#0b6c676c8a3266c99fa281e4433a706f5c0c61c4" @@ -10420,7 +12267,7 @@ eth-query@^2.1.2: json-rpc-random-id "^1.0.0" xtend "^4.0.1" -eth-rpc-errors@^4.0.2: +eth-rpc-errors@^4.0.2, eth-rpc-errors@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/eth-rpc-errors/-/eth-rpc-errors-4.0.3.tgz#6ddb6190a4bf360afda82790bb7d9d5e724f423a" integrity sha512-Z3ymjopaoft7JDoxZcEb3pwdGh7yiYMhOwm2doUt6ASXlMavpNlK6Cre0+IMl2VSGyEU9rkiperQhp5iRxn5Pg== @@ -10444,6 +12291,16 @@ ethereum-cryptography@^2.0.0: "@scure/bip32" "1.3.3" "@scure/bip39" "1.2.2" +ethereum-cryptography@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz#58f2810f8e020aecb97de8c8c76147600b0b8ccf" + integrity sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg== + dependencies: + "@noble/curves" "1.4.2" + "@noble/hashes" "1.4.0" + "@scure/bip32" "1.4.0" + "@scure/bip39" "1.3.0" + ethers@^5.7.2: version "5.7.2" resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" @@ -10506,6 +12363,16 @@ ethers@^6.12.0: tslib "2.4.0" ws "8.5.0" +ev-emitter@^2.0.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ev-emitter/-/ev-emitter-2.1.2.tgz#91737a2deae9fa95453e7e86cfae976f8c3ced38" + integrity sha512-jQ5Ql18hdCQ4qS+RCrbLfz1n+Pags27q5TwMKvZyhp5hh2UULUYZUy1keqj6k6SYsdqIYjnmz7xyyEY0V67B8Q== + +event-target-shim@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + eventemitter3@^4.0.0, eventemitter3@^4.0.7: version "4.0.7" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" @@ -10516,11 +12383,19 @@ eventemitter3@^5.0.0, eventemitter3@^5.0.1: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4" integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== -events@^3.3.0: +events@3.3.0, events@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + execa@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" @@ -10581,6 +12456,11 @@ execa@^8.0.1: signal-exit "^4.1.0" strip-final-newline "^3.0.0" +exenv@^1.2.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/exenv/-/exenv-1.2.2.tgz#2ae78e85d9894158670b03d47bec1f03bd91bb9d" + integrity sha512-Z+ktTxTwv9ILfgKCk32OX3n/doe+OcLTRtqK9pcL+JsP3J1/VW8Uvl4ZjLlKqeW4rzK4oesDOGMEMRIZqtP4Iw== + expand-template@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" @@ -10713,7 +12593,7 @@ fast-redact@^3.0.0: resolved "https://registry.yarnpkg.com/fast-redact/-/fast-redact-3.5.0.tgz#e9ea02f7e57d0cd8438180083e93077e496285e4" integrity sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A== -fast-safe-stringify@2.1.1, fast-safe-stringify@^2.0.6: +fast-safe-stringify@2.1.1, fast-safe-stringify@^2.0.6, fast-safe-stringify@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== @@ -10849,6 +12729,13 @@ find-cache-dir@^3.3.1: make-dir "^3.0.2" pkg-dir "^4.1.0" +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" @@ -11109,6 +12996,11 @@ get-port-please@^3.1.2: resolved "https://registry.yarnpkg.com/get-port-please/-/get-port-please-3.1.2.tgz#502795e56217128e4183025c89a48c71652f4e49" integrity sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ== +get-size@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/get-size/-/get-size-3.0.0.tgz#00e39a8042a3de237b2fcf288eaf55d3f472417c" + integrity sha512-Y8aiXLq4leR7807UY0yuKEwif5s3kbVp1nTv+i4jBeoUzByTLKkLWu/HorS6/pB+7gsB0o7OTogC8AoOOeT0Hw== + get-stream@^5.0.0: version "5.2.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" @@ -11411,6 +13303,23 @@ has@^1.0.3: resolved "https://registry.yarnpkg.com/has/-/has-1.0.4.tgz#2eb2860e000011dae4f1406a86fe80e530fb2ec6" integrity sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ== +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +hash-base@~3.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" + integrity sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" @@ -11719,6 +13628,14 @@ https-proxy-agent@7.0.4: agent-base "^7.0.2" debug "4" +https-proxy-agent@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + https-proxy-agent@^6.0.0: version "6.1.0" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-6.1.0.tgz#e00f1efb849171ea349721481d3bcbef03ab4d13" @@ -11839,7 +13756,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4: +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3, inherits@~2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -11896,6 +13813,11 @@ inquirer@^8.0.0: through "^2.3.6" wrap-ansi "^7.0.0" +int64-buffer@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/int64-buffer/-/int64-buffer-1.0.1.tgz#c78d841b444cadf036cd04f8683696c740f15dca" + integrity sha512-+3azY4pXrjAupJHU1V9uGERWlhoqNswJNji6aD/02xac7oxol508AsMC5lxKhEqyZeDFy3enq5OGWXF4u75hiw== + interface-datastore@^6.0.2: version "6.1.1" resolved "https://registry.yarnpkg.com/interface-datastore/-/interface-datastore-6.1.1.tgz#5150a00de2e7513eaadba58bcafd059cb50004c1" @@ -11941,6 +13863,14 @@ ioredis@^5.3.2: redis-parser "^3.0.0" standard-as-callback "^2.1.0" +ip-address@^9.0.5: + version "9.0.5" + resolved "https://registry.yarnpkg.com/ip-address/-/ip-address-9.0.5.tgz#117a960819b08780c3bd1f14ef3c1cc1d3f3ea5a" + integrity sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g== + dependencies: + jsbn "1.1.0" + sprintf-js "^1.1.3" + ip-regex@^4.0.0: version "4.3.0" resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.3.0.tgz#687275ab0f57fa76978ff8f4dddc8a23d5990db5" @@ -12123,7 +14053,7 @@ is-alphanumerical@^2.0.0: is-alphabetical "^2.0.0" is-decimal "^2.0.0" -is-arguments@^1.1.1: +is-arguments@^1.0.4, is-arguments@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== @@ -12231,11 +14161,23 @@ is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== + is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== +is-generator-function@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" + integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== + dependencies: + has-tostringtag "^1.0.0" + is-glob@4.0.3, is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" @@ -12289,6 +14231,14 @@ is-module@^1.0.0: resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" integrity sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g== +is-nan@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d" + integrity sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + is-negative-zero@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" @@ -12392,7 +14342,7 @@ is-shared-array-buffer@^1.0.2: dependencies: call-bind "^1.0.2" -is-stream@^2.0.0: +is-stream@^2.0.0, is-stream@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== @@ -12416,7 +14366,7 @@ is-symbol@^1.0.2, is-symbol@^1.0.3: dependencies: has-symbols "^1.0.2" -is-typed-array@^1.1.10: +is-typed-array@^1.1.10, is-typed-array@^1.1.3: version "1.1.13" resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229" integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw== @@ -12504,11 +14454,16 @@ is64bit@^2.0.0: dependencies: system-architecture "^0.1.0" -isarray@^2.0.5: +isarray@^2.0.1, 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== +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -12697,6 +14652,11 @@ joycon@^3.0.1: resolved "https://registry.yarnpkg.com/joycon/-/joycon-3.1.1.tgz#bce8596d6ae808f8b68168f5fc69280996894f03" integrity sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw== +js-base64@^3.7.5: + version "3.7.7" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-3.7.7.tgz#e51b84bf78fbf5702b9541e2cb7bfcb893b43e79" + integrity sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw== + js-sdsl@^4.1.4: version "4.4.0" resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.4.0.tgz#8b437dbe642daa95760400b602378ed8ffea8430" @@ -12719,6 +14679,16 @@ js-yaml@^4.0.0, js-yaml@^4.1.0: dependencies: argparse "^2.0.1" +jsbi@^3.1.5: + version "3.2.5" + resolved "https://registry.yarnpkg.com/jsbi/-/jsbi-3.2.5.tgz#b37bb90e0e5c2814c1c2a1bcd8c729888a2e37d6" + integrity sha512-aBE4n43IPvjaddScbvWRA2YlTzKEynHzu7MqOyTipdHucf/VxS63ViCjxYRg86M8Rxwbt/GfzHl1kKERkt45fQ== + +jsbn@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-1.1.0.tgz#b01307cb29b618a1ed26ec79e911f803c4da0040" + integrity sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A== + jsesc@^2.5.1: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" @@ -12833,6 +14803,16 @@ jsonpointer@^5.0.0: resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.1.tgz#2110e0af0900fd37467b5907ecd13a7884a1b559" integrity sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ== +jsonschema@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/jsonschema/-/jsonschema-1.2.2.tgz#83ab9c63d65bf4d596f91d81195e78772f6452bc" + integrity sha512-iX5OFQ6yx9NgbHCwse51ohhKgLuLL7Z5cNOeZOPIlDUtAMrxlruHLzVZxbltdHE5mEDXN+75oFOwq6Gn0MZwsA== + +jsqr@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/jsqr/-/jsqr-1.4.0.tgz#8efb8d0a7cc6863cb6d95116b9069123ce9eb2d1" + integrity sha512-dxLob7q65Xg2DvstYkRpkYtmKm2sPJ9oFhrhmudT1dZvNFFTlroai3AWSpLey/w5vMcLBXRgOJsbXpdN9HzU/A== + "jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.3: version "3.3.3" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz#76b3e6e6cece5c69d49a5792c3d01bd1a0cdc7ea" @@ -13041,6 +15021,14 @@ localforage@^1.10.0: dependencies: lie "3.1.1" +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + locate-path@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" @@ -13055,6 +15043,11 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" +lodash-es@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" + integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== + lodash.camelcase@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" @@ -13125,7 +15118,7 @@ lodash.truncate@^4.4.2: resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== -lodash@4.17.21, lodash@^4.17.20, lodash@^4.17.21, lodash@~4.17.0: +lodash@4.17.21, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@~4.17.0: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -13153,7 +15146,7 @@ loglevel-plugin-prefix@^0.8.4: resolved "https://registry.yarnpkg.com/loglevel-plugin-prefix/-/loglevel-plugin-prefix-0.8.4.tgz#2fe0e05f1a820317d98d8c123e634c1bd84ff644" integrity sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g== -loglevel@^1.7.0: +loglevel@^1.7.0, loglevel@^1.8.1: version "1.9.1" resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.9.1.tgz#d63976ac9bcd03c7c873116d41c2a85bafff1be7" integrity sha512-hP3I3kCrDIMuRwAwHltphhDM1r8i55H33GgqjXbrisuJhF4kRhW1dNuxsRklp4bXl8DSdLaNLuiL4A/LWRfxvg== @@ -13279,6 +15272,15 @@ match-sorter@^6.3.1: "@babel/runtime" "^7.12.5" remove-accents "0.4.2" +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + mdast-util-definitions@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz#c5c1a84db799173b4dcf7643cda999e440c24db2" @@ -13952,6 +15954,14 @@ micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: braces "^3.0.2" picomatch "^2.3.1" +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": version "1.52.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" @@ -14208,6 +16218,11 @@ mz@^2.7.0: object-assign "^4.0.1" thenify-all "^1.0.0" +nan@^2.13.2: + version "2.20.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.20.0.tgz#08c5ea813dd54ed16e5bd6505bf42af4f7838ca3" + integrity sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw== + nanoid@^3.0.2, nanoid@^3.1.20, nanoid@^3.1.23, nanoid@^3.3.7: version "3.3.7" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" @@ -14364,7 +16379,7 @@ node-addon-api@^2.0.0: resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== -node-addon-api@^3.2.1: +node-addon-api@^3.0.0, node-addon-api@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161" integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== @@ -14379,6 +16394,11 @@ node-addon-api@^7.0.0: resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-7.1.0.tgz#71f609369379c08e251c558527a107107b5e0fdb" integrity sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g== +node-addon-api@^8.0.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-8.1.0.tgz#55a573685dd4bd053f189cffa4e6332d2b1f1645" + integrity sha512-yBY+qqWSv3dWKGODD6OGE6GnTX7Q2r+4+DfpqxHSHh8x0B4EKP9+wVGLS6U/AM1vxSNNmUEuIV5EGhYwPpfOwQ== + node-domexception@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" @@ -14427,6 +16447,11 @@ node-gyp-build@^4.2.0, node-gyp-build@^4.3.0: resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.1.tgz#976d3ad905e71b76086f4f0b0d3637fe79b6cda5" integrity sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw== +node-gyp-build@^4.2.2, node-gyp-build@^4.5.0: + version "4.8.2" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.2.tgz#4f802b71c1ab2ca16af830e6c1ea7dd1ad9496fa" + integrity sha512-IRUxE4BVsHWXkV/SFOut4qTlagw2aM8T5/vnTsmrHJvVoKueJHRc/JaFND7QDDc61kLYUJ6qlZM3sqTSyx2dTw== + node-html-parser@^5.2.0: version "5.4.2" resolved "https://registry.yarnpkg.com/node-html-parser/-/node-html-parser-5.4.2.tgz#93e004038c17af80226c942336990a0eaed8136a" @@ -14591,6 +16616,11 @@ obliterator@^2.0.2: resolved "https://registry.yarnpkg.com/obliterator/-/obliterator-2.0.4.tgz#fa650e019b2d075d745e44f1effeb13a2adbe816" integrity sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ== +oblivious-set@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/oblivious-set/-/oblivious-set-1.1.1.tgz#d9d38e9491d51f27a5c3ec1681d2ba40aa81e98b" + integrity sha512-Oh+8fK09mgGmAshFdH6hSVco6KZmd1tTwNFWj35OvzdmJTMZtAkbn05zar2iG3v6sDs1JLEtOiBGNb6BHwkb2w== + ofetch@^1.0.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ofetch/-/ofetch-1.1.1.tgz#a0e5117500f4ac02e2c61ec1bb754bc54d5ba44d" @@ -14739,13 +16769,20 @@ p-limit@3.1.0, p-limit@^3.0.2: dependencies: yocto-queue "^0.1.0" -p-limit@^2.2.0: +p-limit@^2.0.0, p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== dependencies: p-try "^2.0.0" +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + p-locate@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" @@ -14802,6 +16839,18 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" +parse-asn1@^5.0.0, parse-asn1@^5.1.7: + version "5.1.7" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.7.tgz#73cdaaa822125f9647165625eb45f8a051d2df06" + integrity sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg== + dependencies: + asn1.js "^4.10.1" + browserify-aes "^1.2.0" + evp_bytestokey "^1.0.3" + hash-base "~3.0" + pbkdf2 "^3.1.2" + safe-buffer "^5.2.1" + parse-css-color@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/parse-css-color/-/parse-css-color-0.2.1.tgz#b687a583f2e42e66ffdfce80a570706966e807c9" @@ -14898,6 +16947,11 @@ path-case@^3.0.4: dot-case "^3.0.4" tslib "^2.0.3" +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== + path-exists@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" @@ -14965,6 +17019,17 @@ pathe@^1.1.1, pathe@^1.1.2: resolved "https://registry.yarnpkg.com/pathe/-/pathe-1.1.2.tgz#6c4cb47a945692e48a1ddd6e4094d170516437ec" integrity sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ== +pbkdf2@^3.0.3, pbkdf2@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" + integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + picocolors@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" @@ -15063,6 +17128,11 @@ pkg-types@^1.1.0: mlly "^1.7.0" pathe "^1.1.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" @@ -15186,6 +17256,11 @@ preact-render-to-string@^5.1.19: dependencies: pretty-format "^3.8.0" +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.12.0, preact@^10.16.0: version "10.22.0" resolved "https://registry.yarnpkg.com/preact/-/preact-10.22.0.tgz#a50f38006ae438d255e2631cbdaf7488e6dd4e16" @@ -15261,11 +17336,21 @@ prismjs@^1.28.0: resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.29.0.tgz#f113555a8fa9b57c35e637bba27509dcf802dd12" integrity sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q== +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + process-warning@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-1.0.0.tgz#980a0b25dc38cd6034181be4b7726d89066b4616" integrity sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q== +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== + promise@^7.1.1: version "7.3.1" resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" @@ -15273,7 +17358,7 @@ promise@^7.1.1: dependencies: asap "~2.0.3" -prop-types@15.8.1, prop-types@^15.5.0, prop-types@^15.8.1: +prop-types@15.8.1, prop-types@^15.5.0, prop-types@^15.6.0, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: version "15.8.1" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== @@ -15299,6 +17384,24 @@ property-information@^6.0.0: resolved "https://registry.yarnpkg.com/property-information/-/property-information-6.5.0.tgz#6212fbb52ba757e92ef4fb9d657563b933b7ffec" integrity sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig== +protobufjs@7.2.6: + version "7.2.6" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.2.6.tgz#4a0ccd79eb292717aacf07530a07e0ed20278215" + integrity sha512-dgJaEDDL6x8ASUZ1YqWciTRrdOuYNzoOf27oHNfdyvKqHr5i0FV7FSLU+aIeFjyFgVxrpTOtQUi0BLLBymZaBw== + dependencies: + "@protobufjs/aspromise" "^1.1.2" + "@protobufjs/base64" "^1.1.2" + "@protobufjs/codegen" "^2.0.4" + "@protobufjs/eventemitter" "^1.1.0" + "@protobufjs/fetch" "^1.1.0" + "@protobufjs/float" "^1.0.2" + "@protobufjs/inquire" "^1.1.0" + "@protobufjs/path" "^1.1.2" + "@protobufjs/pool" "^1.1.0" + "@protobufjs/utf8" "^1.1.0" + "@types/node" ">=13.7.0" + long "^5.0.0" + protobufjs@^6.10.2: version "6.11.4" resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.4.tgz#29a412c38bf70d89e537b6d02d904a6f448173aa" @@ -15373,6 +17476,18 @@ proxy-from-env@^1.1.0: resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + pump@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" @@ -15391,6 +17506,13 @@ punycode@^2.1.0: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== +pushdata-bitcoin@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/pushdata-bitcoin/-/pushdata-bitcoin-1.0.1.tgz#15931d3cd967ade52206f523aa7331aef7d43af7" + integrity sha512-hw7rcYTJRAl4olM8Owe8x0fBuJJ+WGbMhQuLWOXEMN3PxPCKQHRkhfL+XG0+iXUmSHjkMmb3Ba55Mt21cZc9kQ== + dependencies: + bitcoin-ops "^1.3.0" + pvtsutils@^1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/pvtsutils/-/pvtsutils-1.3.2.tgz#9f8570d132cdd3c27ab7d51a2799239bf8d8d5de" @@ -15415,6 +17537,28 @@ qr.js@0.0.0: resolved "https://registry.yarnpkg.com/qr.js/-/qr.js-0.0.0.tgz#cace86386f59a0db8050fa90d9b6b0e88a1e364f" integrity sha512-c4iYnWb+k2E+vYpRimHqSu575b1/wKl4XFeJGpFmrJQz5I88v9aY2czh7s0w36srfCM1sXgC/xpoJz5dJfq+OQ== +qrcode.react@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/qrcode.react/-/qrcode.react-1.0.1.tgz#2834bb50e5e275ffe5af6906eff15391fe9e38a5" + integrity sha512-8d3Tackk8IRLXTo67Y+c1rpaiXjoz/Dd2HpcMdW//62/x8J1Nbho14Kh8x974t9prsLHN6XqVgcnRiBGFptQmg== + dependencies: + loose-envify "^1.4.0" + prop-types "^15.6.0" + qr.js "0.0.0" + +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, qrcode@^1.5.1: version "1.5.3" resolved "https://registry.yarnpkg.com/qrcode/-/qrcode-1.5.3.tgz#03afa80912c0dccf12bc93f615a535aad1066170" @@ -15479,7 +17623,7 @@ radix3@^1.1.0: resolved "https://registry.yarnpkg.com/radix3/-/radix3-1.1.2.tgz#fd27d2af3896c6bf4bcdfab6427c69c2afc69ec0" integrity sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA== -randombytes@^2.1.0: +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== @@ -15491,6 +17635,14 @@ randomcolor@^0.6.2: resolved "https://registry.yarnpkg.com/randomcolor/-/randomcolor-0.6.2.tgz#7a57362ae1a1278439aeed2c15e5deb8ea33f56d" integrity sha512-Mn6TbyYpFgwFuQ8KJKqf3bqqY9O1y37/0jgSK/61PUxV4QfIMv0+K2ioq8DfOjkBslcjwSzRfIDEXfzA9aCx7A== +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + range-parser@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" @@ -15549,6 +17701,16 @@ react-device-detect@^2.2.3: dependencies: ua-parser-js "^1.0.33" +react-dom@16.13.1: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.13.1.tgz#c1bd37331a0486c078ee54c4740720993b2e0e7f" + integrity sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.2" + scheduler "^0.19.1" + react-dom@18.2.0: version "18.2.0" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" @@ -15606,6 +17768,11 @@ react-is@^16.13.1, react-is@^16.7.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== +react-lifecycles-compat@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" + integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== + react-lite-youtube-embed@^2.3.52: version "2.3.52" resolved "https://registry.yarnpkg.com/react-lite-youtube-embed/-/react-lite-youtube-embed-2.3.52.tgz#7f8125a03e7a940745b63d11abd6821ffe1babe5" @@ -15635,6 +17802,16 @@ react-markdown@^9.0.1: unist-util-visit "^5.0.0" vfile "^6.0.0" +react-modal@^3.12.1: + version "3.16.1" + resolved "https://registry.yarnpkg.com/react-modal/-/react-modal-3.16.1.tgz#34018528fc206561b1a5467fc3beeaddafb39b2b" + integrity sha512-VStHgI3BVcGo7OXczvnJN7yT2TWHJPDXZWyI/a0ssFNhGZWsPmB8cF0z33ewDXq4VfYMO1vXgiv/g8Nj9NDyWg== + dependencies: + exenv "^1.2.0" + prop-types "^15.7.2" + react-lifecycles-compat "^3.0.0" + warning "^4.0.3" + react-native-fetch-api@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/react-native-fetch-api/-/react-native-fetch-api-3.0.0.tgz#81e1bb6562c292521bc4eca52fe1097f4c1ebab5" @@ -15650,6 +17827,15 @@ react-qr-code@^2.0.11: prop-types "^15.8.1" qr.js "0.0.0" +react-qr-reader@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/react-qr-reader/-/react-qr-reader-2.2.1.tgz#dc89046d1c1a1da837a683dd970de5926817d55b" + integrity sha512-EL5JEj53u2yAOgtpAKAVBzD/SiKWn0Bl7AZy6ZrSf1lub7xHwtaXe6XSx36Wbhl1VMGmvmrwYMRwO1aSCT2fwA== + dependencies: + jsqr "^1.2.0" + prop-types "^15.7.2" + webrtc-adapter "^7.2.1" + react-remove-scroll-bar@^2.3.3, react-remove-scroll-bar@^2.3.4: version "2.3.6" resolved "https://registry.yarnpkg.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz#3e585e9d163be84a010180b18721e851ac81a29c" @@ -15735,6 +17921,15 @@ react-youtube@^10.1.0: prop-types "15.8.1" youtube-player "5.5.2" +react@16.13.1: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react/-/react-16.13.1.tgz#2e818822f1a9743122c063d6410d85c1e3afe48e" + integrity sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.2" + react@18.2.0: version "18.2.0" resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" @@ -15749,7 +17944,20 @@ read-cache@^1.0.0: dependencies: pify "^2.3.0" -readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: +readable-stream@^2.3.8: + version "2.3.8" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.5.0, readable-stream@^3.6.0, readable-stream@^3.6.2: version "3.6.2" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== @@ -15758,6 +17966,17 @@ readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: string_decoder "^1.1.1" util-deprecate "^1.0.1" +readable-stream@^4.4.2: + version "4.5.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-4.5.2.tgz#9e7fc4c45099baeed934bff6eb97ba6cf2729e09" + integrity sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g== + dependencies: + abort-controller "^3.0.0" + buffer "^6.0.3" + events "^3.3.0" + process "^0.11.10" + string_decoder "^1.3.0" + readdirp@~3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" @@ -16091,6 +18310,70 @@ rimraf@^3.0.0, rimraf@^3.0.2: dependencies: glob "^7.1.3" +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +ripple-address-codec@^4.1.1, ripple-address-codec@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/ripple-address-codec/-/ripple-address-codec-4.3.1.tgz#68fbaf646bb8567f70743af7f1ce4479f73efbf6" + integrity sha512-Qa3+9wKVvpL/xYtT6+wANsn0A1QcC5CT6IMZbRJZ/1lGt7gmwIfsrCuz1X0+LCEO7zgb+3UT1I1dc0k/5dwKQQ== + dependencies: + base-x "^3.0.9" + create-hash "^1.1.2" + +ripple-binary-codec@^1.1.3: + version "1.11.0" + resolved "https://registry.yarnpkg.com/ripple-binary-codec/-/ripple-binary-codec-1.11.0.tgz#d99c848c51a19746b738785001fb7208704bfe30" + integrity sha512-g7+gs3T+NfoeW6vIq5dcN0CkIT4t/zwRzFxz8X2RzfbrWRnewPUKqQbmBgs05tXLX5NuWPaneiaAVpFpYBcdfw== + dependencies: + assert "^2.0.0" + big-integer "^1.6.48" + buffer "6.0.3" + create-hash "^1.2.0" + decimal.js "^10.2.0" + ripple-address-codec "^4.3.1" + +ripple-keypairs@^1.0.3: + version "1.3.1" + resolved "https://registry.yarnpkg.com/ripple-keypairs/-/ripple-keypairs-1.3.1.tgz#7fa531df36b138134afb53555a87d7f5eb465b2e" + integrity sha512-dmPlraWKJciFJxHcoubDahGnoIalG5e/BtV6HNDUs7wLXmtnLMHt6w4ed9R8MTL2zNrVPiIdI/HCtMMo0Tm7JQ== + dependencies: + bn.js "^5.1.1" + brorand "^1.0.5" + elliptic "^6.5.4" + hash.js "^1.0.3" + ripple-address-codec "^4.3.1" + +ripple-lib-transactionparser@0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/ripple-lib-transactionparser/-/ripple-lib-transactionparser-0.8.2.tgz#7aaad3ba1e1aeee1d5bcff32334a7a838f834dce" + integrity sha512-1teosQLjYHLyOQrKUQfYyMjDR3MAq/Ga+MJuLUfpBMypl4LZB4bEoMcmG99/+WVTEiZOezJmH9iCSvm/MyxD+g== + dependencies: + bignumber.js "^9.0.0" + lodash "^4.17.15" + +ripple-lib@^1.10.1: + version "1.10.1" + resolved "https://registry.yarnpkg.com/ripple-lib/-/ripple-lib-1.10.1.tgz#9c353702792b25465cdb269265d6f5bb27b1471b" + integrity sha512-OQk+Syl2JfxKxV2KuF/kBMtnh012I5tNnziP3G4WDGCGSIAgeqkOgkR59IQ0YDNrs1YW8GbApxrdMSRi/QClcA== + dependencies: + "@types/lodash" "^4.14.136" + "@types/ws" "^7.2.0" + bignumber.js "^9.0.0" + https-proxy-agent "^5.0.0" + jsonschema "1.2.2" + lodash "^4.17.4" + ripple-address-codec "^4.1.1" + ripple-binary-codec "^1.1.3" + ripple-keypairs "^1.0.3" + ripple-lib-transactionparser "0.8.2" + ws "^7.2.0" + rollup-plugin-terser@^7.0.0: version "7.0.2" resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz#e8fbba4869981b2dc35ae7e8a502d5c6c04d324d" @@ -16156,6 +18439,13 @@ rpc-websockets@^9.0.2: bufferutil "^4.0.1" utf-8-validate "^5.0.2" +rtcpeerconnection-shim@^1.2.15: + version "1.2.15" + resolved "https://registry.yarnpkg.com/rtcpeerconnection-shim/-/rtcpeerconnection-shim-1.2.15.tgz#e7cc189a81b435324c4949aa3dfb51888684b243" + integrity sha512-C6DxhXt7bssQ1nHb154lqeL0SXz5Dx4RczXZu2Aa/L1NJFnEVDxFwCBo3fqtuljhHIGceg5JKBV4XJ0gW5JKyw== + dependencies: + sdp "^2.6.0" + run-applescript@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/run-applescript/-/run-applescript-5.0.0.tgz#e11e1c932e055d5c6b40d98374e0268d9b11899c" @@ -16182,6 +18472,13 @@ run@^1.4.0: dependencies: minimatch "*" +rxjs@6, 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.8.1, rxjs@^7.5.5, rxjs@^7.8.0, rxjs@^7.8.1: version "7.8.1" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" @@ -16189,19 +18486,12 @@ rxjs@7.8.1, rxjs@^7.5.5, rxjs@^7.8.0, rxjs@^7.8.1: dependencies: tslib "^2.1.0" -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" - -safe-buffer@5.1.2: +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: +safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -16230,6 +18520,14 @@ safe-stable-stringify@^2.1.0: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== +salmon-adapter-sdk@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/salmon-adapter-sdk/-/salmon-adapter-sdk-1.1.1.tgz#d5fdd2d27b1a6c58e38c188c977eeeeface8b20c" + integrity sha512-28ysSzmDjx2AbotxSggqdclh9MCwlPJUldKkCph48oS5Xtwu0QOg8T9ZRHS2Mben4Y8sTq6VvxXznKssCYFBJA== + dependencies: + "@project-serum/sol-wallet-adapter" "^0.2.6" + eventemitter3 "^4.0.7" + sanitize-html@^2.7.0: version "2.13.0" resolved "https://registry.yarnpkg.com/sanitize-html/-/sanitize-html-2.13.0.tgz#71aedcdb777897985a4ea1877bf4f895a1170dae" @@ -16279,6 +18577,14 @@ scale-ts@^1.6.0: resolved "https://registry.yarnpkg.com/scale-ts/-/scale-ts-1.6.0.tgz#e9641093c5a9e50f964ddb1607139034e3e932e9" integrity sha512-Ja5VCjNZR8TGKhUumy9clVVxcDpM+YFjAnkMuwQy68Hixio3VRRvWdE3g8T/yC+HXA0ZDQl2TGyUmtmbcVl40Q== +scheduler@^0.19.1: + version "0.19.1" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.19.1.tgz#4f3e2ed2c1a7d65681f4c854fa8c5a1ccb40f196" + integrity sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + scheduler@^0.23.0: version "0.23.0" resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe" @@ -16324,11 +18630,21 @@ scule@^1.0.0: resolved "https://registry.yarnpkg.com/scule/-/scule-1.0.0.tgz#895e6f4ba887e78d8b9b4111e23ae84fef82376d" integrity sha512-4AsO/FrViE/iDNEPaAQlb77tf0csuq27EsVpy6ett584EcRTp6pTDLoGWVxCD77y5iU5FauOvhsI4o1APwPoSQ== +sdp@^2.12.0, sdp@^2.6.0: + version "2.12.0" + resolved "https://registry.yarnpkg.com/sdp/-/sdp-2.12.0.tgz#338a106af7560c86e4523f858349680350d53b22" + integrity sha512-jhXqQAQVM+8Xj5EjJGVweuEzgtGWb3tmEEpl3CLP3cStInSbVHSg0QWOGQzNq8pSID4JkpeV2mPqlMDLrm0/Vw== + semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +semver@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + semver@^7.3.5, semver@^7.3.7: version "7.5.0" resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.0.tgz#ed8c5dc8efb6c629c88b23d41dc9bf40c1d96cd0" @@ -16463,7 +18779,7 @@ setprototypeof@1.2.0: resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== -sha.js@^2.4.11: +sha.js@^2.4.0, sha.js@^2.4.11, sha.js@^2.4.8: version "2.4.11" resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== @@ -16600,6 +18916,11 @@ slugify@^1.6.6: resolved "https://registry.yarnpkg.com/slugify/-/slugify-1.6.6.tgz#2d4ac0eacb47add6af9e04d3be79319cbcc7924b" integrity sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw== +smart-buffer@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" + integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== + smoldot@2.0.26: version "2.0.26" resolved "https://registry.yarnpkg.com/smoldot/-/smoldot-2.0.26.tgz#0e64c7fcd26240fbe4c8d6b6e4b9a9aca77e00f6" @@ -16615,6 +18936,41 @@ snake-case@^3.0.4: dot-case "^3.0.4" tslib "^2.0.3" +socket.io-client@^4.6.1: + version "4.7.5" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-4.7.5.tgz#919be76916989758bdc20eec63f7ee0ae45c05b7" + integrity sha512-sJ/tqHOCe7Z50JCBCXrsY3I2k03iOiUe+tj1OmKeD2lXPiGH/RUCdTZFoqVyN7l1MnpIzPrGtLcijffmeouNlQ== + dependencies: + "@socket.io/component-emitter" "~3.1.0" + debug "~4.3.2" + engine.io-client "~6.5.2" + socket.io-parser "~4.2.4" + +socket.io-parser@~4.2.4: + version "4.2.4" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.2.4.tgz#c806966cf7270601e47469ddeec30fbdfda44c83" + integrity sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew== + dependencies: + "@socket.io/component-emitter" "~3.1.0" + debug "~4.3.1" + +socks-proxy-agent@6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz#e664e8f1aaf4e1fb3df945f09e3d94f911137f87" + integrity sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew== + dependencies: + agent-base "^6.0.2" + debug "^4.3.1" + socks "^2.6.1" + +socks@^2.6.1: + version "2.8.3" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.8.3.tgz#1ebd0f09c52ba95a09750afe3f3f9f724a800cb5" + integrity sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw== + dependencies: + ip-address "^9.0.5" + smart-buffer "^4.2.0" + sonic-boom@^2.2.1: version "2.8.0" resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-2.8.0.tgz#c1def62a77425090e6ad7516aad8eb402e047611" @@ -16719,6 +19075,11 @@ sponge-case@^1.0.1: dependencies: tslib "^2.0.3" +sprintf-js@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a" + integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA== + stable@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" @@ -16751,6 +19112,14 @@ store@^2.0.12: resolved "https://registry.yarnpkg.com/store/-/store-2.0.12.tgz#8c534e2a0b831f72b75fc5f1119857c44ef5d593" integrity sha512-eO9xlzDpXLiMr9W1nQ3Nfp9EzZieIQc10zPPMP5jsVV7bLOziSFFBP0XoDXACEIFtdI+rIz0NwWVA/QVJ8zJtw== +stream-browserify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-3.0.0.tgz#22b0a2850cdf6503e73085da1fc7b7d0c2122f2f" + integrity sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA== + dependencies: + inherits "~2.0.4" + readable-stream "^3.5.0" + stream-shift@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.3.tgz#85b8fab4d71010fc3ba8772e8046cc49b8a3864b" @@ -16778,6 +19147,15 @@ string-env-interpolation@1.0.1, string-env-interpolation@^1.0.1: resolved "https://registry.yarnpkg.com/string-env-interpolation/-/string-env-interpolation-1.0.1.tgz#ad4397ae4ac53fe6c91d1402ad6f6a52862c7152" integrity sha512-78lwMoCcn0nNu8LszbP1UA7g55OeE4v7rCeWnM5B453rnNr4aq+5it3FEYtZrSEiMvHZOZ9Jlqb0OD0M2VInqg== +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.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" @@ -16842,13 +19220,20 @@ string.prototype.trimstart@^1.0.6: define-properties "^1.1.4" es-abstract "^1.20.4" -string_decoder@^1.1.1: +string_decoder@^1.1.1, string_decoder@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== dependencies: safe-buffer "~5.2.0" +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + stringify-entities@^3.0.1: version "3.1.0" resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-3.1.0.tgz#b8d3feac256d9ffcc9fa1fefdcf3ca70576ee903" @@ -16875,6 +19260,13 @@ stringify-object@^3.3.0: is-obj "^1.0.1" is-regexp "^1.0.0" +strip-ansi@^5.0.0, strip-ansi@^5.1.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== + dependencies: + ansi-regex "^4.1.0" + strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" @@ -17231,6 +19623,17 @@ tiny-inflate@^1.0.0: resolved "https://registry.yarnpkg.com/tiny-inflate/-/tiny-inflate-1.0.3.tgz#122715494913a1805166aaf7c93467933eea26c4" integrity sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw== +tiny-secp256k1@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/tiny-secp256k1/-/tiny-secp256k1-1.1.6.tgz#7e224d2bee8ab8283f284e40e6b4acb74ffe047c" + integrity sha512-FmqJZGduTyvsr2cF3375fqGHUovSwDi/QytexX1Se4BPuPZpTE5Ftp5fg+EFSuEf3lhZqgCRjEG3ydUQ/aNiwA== + dependencies: + bindings "^1.3.0" + bn.js "^4.11.8" + create-hmac "^1.1.7" + elliptic "^6.4.0" + nan "^2.13.2" + title-case@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/title-case/-/title-case-3.0.3.tgz#bc689b46f02e411f1d1e1d081f7c3deca0489982" @@ -17333,6 +19736,11 @@ ts-log@^2.2.3: resolved "https://registry.yarnpkg.com/ts-log/-/ts-log-2.2.5.tgz#aef3252f1143d11047e2cb6f7cfaac7408d96623" integrity sha512-PGcnJoTBnVGy6yYNFxWVNkdcAuAMstvutN9MgDJIV6L0oG8fB+ZNNy1T+wJzah8RPGor1mZuPQkVfXNDpy9eHA== +ts-mixer@^6.0.3: + version "6.0.4" + resolved "https://registry.yarnpkg.com/ts-mixer/-/ts-mixer-6.0.4.tgz#1da39ceabc09d947a82140d9f09db0f84919ca28" + integrity sha512-ufKpbmrugz5Aou4wcr5Wc1UUFWOLhq+Fm6qa6P0w0K5Qw2yhaUoiWszhCVuNQyNwrlGiscHOmqYoAox1PtvgjA== + tsconfig-paths@^3.14.1: version "3.14.2" resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz#6e32f1f79412decd261f92d633a9dc1cfa99f088" @@ -17473,11 +19881,21 @@ typedarray-to-buffer@3.1.5, typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" +typeforce@^1.18.0: + version "1.18.0" + resolved "https://registry.yarnpkg.com/typeforce/-/typeforce-1.18.0.tgz#d7416a2c5845e085034d70fcc5b6cc4a90edbfdc" + integrity sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g== + typescript@5: version "5.3.3" resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.3.3.tgz#b3ce6ba258e72e6305ba66f5c9b452aaee3ffe37" integrity sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw== +typescript@^4.6.2: + version "4.9.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== + ua-parser-js@^0.7.30: version "0.7.35" resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.35.tgz#8bda4827be4f0b1dda91699a29499575a1f1d307" @@ -17505,6 +19923,13 @@ uid@2.0.2: dependencies: "@lukeed/csprng" "^1.0.0" +uint8arrays@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-3.1.0.tgz#8186b8eafce68f28bd29bd29d683a311778901e2" + integrity sha512-ei5rfKtoRO8OyOIor2Rz5fhzjThwIHJZ3uyDPnDHTXbP0aMQ1RN/6AI5B5d9dBxJOU+BvOAk7ZQ1xphsX8Lrog== + dependencies: + multiformats "^9.4.2" + uint8arrays@^2.0.5, uint8arrays@^2.1.2: version "2.1.10" resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-2.1.10.tgz#34d023c843a327c676e48576295ca373c56e286a" @@ -17591,6 +20016,13 @@ unicode-trie@^2.0.0: pako "^0.2.5" tiny-inflate "^1.0.0" +unidragger@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/unidragger/-/unidragger-3.0.1.tgz#72b2e63f2571ca6e95a884b139dfec764e08c7f3" + integrity sha512-RngbGSwBFmqGBWjkaH+yB677uzR95blSQyxq6hYbrQCejH3Mx1nm8DVOuh3M9k2fQyTstWUG5qlgCnNqV/9jVw== + dependencies: + ev-emitter "^2.0.0" + unified@^11.0.0: version "11.0.4" resolved "https://registry.yarnpkg.com/unified/-/unified-11.0.4.tgz#f4be0ac0fe4c88cb873687c07c64c49ed5969015" @@ -17735,6 +20167,11 @@ unixify@^1.0.0: dependencies: normalize-path "^2.1.1" +unload@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/unload/-/unload-2.4.1.tgz#b0c5b7fb44e17fcbf50dcb8fb53929c59dd226a5" + integrity sha512-IViSAm8Z3sRBYA+9wc0fLQmU9Nrxb16rcDmIiR6Y9LJSZzI7QY5QsDhqPpKOjAn0O9/kfK1TfNEMMAGPTIraPw== + unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" @@ -17827,6 +20264,15 @@ urlpattern-polyfill@^8.0.0: resolved "https://registry.yarnpkg.com/urlpattern-polyfill/-/urlpattern-polyfill-8.0.2.tgz#99f096e35eff8bf4b5a2aa7d58a1523d6ebc7ce5" integrity sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ== +usb@^2.11.0: + version "2.13.0" + resolved "https://registry.yarnpkg.com/usb/-/usb-2.13.0.tgz#521d11244cbe991a3f247c770821635abdcc9c7f" + integrity sha512-pTNKyxD1DfC1DYu8kFcIdpE8f33e0c2Sbmmi0HEs28HTVC555uocvYR1g5DDv4CBibacCh4BqRyYZJylN4mBbw== + dependencies: + "@types/w3c-web-usb" "^1.0.6" + node-addon-api "^8.0.0" + node-gyp-build "^4.5.0" + use-breakpoint@^3.0.7: version "3.0.7" resolved "https://registry.yarnpkg.com/use-breakpoint/-/use-breakpoint-3.0.7.tgz#7dace4fc2b0a45e70005590d7a66435c00251fa2" @@ -17864,26 +20310,45 @@ utf-8-validate@^5.0.2: dependencies: node-gyp-build "^4.3.0" -util-deprecate@^1.0.1, util-deprecate@^1.0.2: +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== +util@^0.12.5: + version "0.12.5" + resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" + integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== + dependencies: + inherits "^2.0.3" + is-arguments "^1.0.4" + is-generator-function "^1.0.7" + is-typed-array "^1.1.3" + which-typed-array "^1.1.2" + utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== -uuid@^8.3.2: +uuid@8.3.2, uuid@^8.3.2: version "8.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== -uuid@^9.0.1: +uuid@^9.0.0, uuid@^9.0.1: version "9.0.1" resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== +uuidv4@^6.2.13: + version "6.2.13" + resolved "https://registry.yarnpkg.com/uuidv4/-/uuidv4-6.2.13.tgz#8f95ec5ef22d1f92c8e5d4c70b735d1c89572cb7" + integrity sha512-AXyzMjazYB3ovL3q051VLH06Ixj//Knx7QnUSi1T//Ie3io6CpsPu9nVMOx5MoLWh6xV0B9J0hIaxungxXUbPQ== + dependencies: + "@types/uuid" "8.3.4" + uuid "8.3.2" + valibot@^0.31.0: version "0.31.1" resolved "https://registry.yarnpkg.com/valibot/-/valibot-0.31.1.tgz#fa1481da7cf28a2fdb15e37b0b292023a30293cb" @@ -17928,6 +20393,13 @@ varint@^6.0.0: resolved "https://registry.yarnpkg.com/varint/-/varint-6.0.0.tgz#9881eb0ce8feaea6512439d19ddf84bf551661d0" integrity sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg== +varuint-bitcoin@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/varuint-bitcoin/-/varuint-bitcoin-1.1.2.tgz#e76c138249d06138b480d4c5b40ef53693e24e92" + integrity sha512-4EVb+w4rx+YfVM32HQX42AbbT7/1f5zwAYhIujKXKk8NQK+JfRVl3pqT3hjNn/L+RstigmGGKVwHA/P0wgITZw== + dependencies: + safe-buffer "^5.1.1" + vary@^1, vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" @@ -18050,6 +20522,13 @@ wagmi@^1.4.13: abitype "0.8.7" use-sync-external-store "^1.2.0" +warning@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3" + integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w== + dependencies: + loose-envify "^1.0.0" + wcwidth@>=1.0.1, wcwidth@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" @@ -18124,6 +20603,14 @@ webpack-sources@^1.4.3: source-list-map "^2.0.0" source-map "~0.6.1" +webrtc-adapter@^7.2.1: + version "7.7.1" + resolved "https://registry.yarnpkg.com/webrtc-adapter/-/webrtc-adapter-7.7.1.tgz#b2c227a6144983b35057df67bd984a7d4bfd17f1" + integrity sha512-TbrbBmiQBL9n0/5bvDdORc6ZfRY/Z7JnEj+EYOD1ghseZdpJ+nF2yx14k3LgQKc7JZnG7HAcL+zHnY25So9d7A== + dependencies: + rtcpeerconnection-shim "^1.2.15" + sdp "^2.12.0" + websocket-driver@>=0.5.1: version "0.7.4" resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" @@ -18193,7 +20680,7 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409" integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== -which-typed-array@^1.1.14: +which-typed-array@^1.1.14, which-typed-array@^1.1.2: version "1.1.15" resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d" integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA== @@ -18230,6 +20717,13 @@ widest-line@^4.0.1: dependencies: string-width "^5.0.1" +wif@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/wif/-/wif-4.0.0.tgz#598d4659f361b1d2a8aed13214783fa374b4b146" + integrity sha512-kADznC+4AFJNXpT8rLhbsfI7EmAcorc5nWvAdKUchGmwXEBD3n55q0/GZ3DBmc6auAvuTSsr/utiKizuXdNYOQ== + dependencies: + bs58check "^3.0.1" + word-wrap@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" @@ -18414,6 +20908,15 @@ workers-og@~0.0.23: satori "^0.10.11" yoga-wasm-web "^0.3.3" +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.0.1, wrap-ansi@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" @@ -18461,7 +20964,7 @@ ws@8.13.0, ws@^8.12.0: resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== -ws@8.17.1: +ws@8.17.1, ws@~8.17.1: version "8.17.1" resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.1.tgz#9293da530bb548febc95371d90f9c878727d919b" integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ== @@ -18471,21 +20974,26 @@ ws@8.5.0: resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f" integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg== +ws@^7.2.0, ws@^7.5.10: + version "7.5.10" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" + integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== + ws@^7.3.1, ws@^7.4.0, ws@^7.5.1: version "7.5.9" resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== -ws@^7.5.10: - version "7.5.10" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" - integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== - -ws@^8.16.0, ws@^8.5.0, ws@^8.8.1: +ws@^8.16.0, ws@^8.18.0, ws@^8.5.0, ws@^8.8.1: version "8.18.0" resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc" integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== +xmlhttprequest-ssl@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz#91360c86b914e67f44dce769180027c0da618c67" + integrity sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A== + xtend@^4.0.0, xtend@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" @@ -18531,6 +21039,14 @@ yaml@^2.1.1: resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.2.2.tgz#ec551ef37326e6d42872dad1970300f8eb83a073" integrity sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA== +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" @@ -18549,6 +21065,22 @@ yargs-parser@^21.1.1: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== +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"