From a0e44b0a22d1d4756033d21958f2207a3d510ef6 Mon Sep 17 00:00:00 2001 From: attemka Date: Thu, 2 May 2024 17:28:09 +0400 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=B6=E2=80=8D=E2=99=80=EF=B8=8F=20Walle?= =?UTF-8?q?tConnect=20integration=20(#5867)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * mvp of walletconnect integration * fixed empty class error * code refactor, visual fixes * fixed linter issues * build issues * fixed signer bugs, fixed reset after refresh, various bugs * moved chainId to env params * bugfix, code refactor, mobile implementation, minor fixes * fixed confirm action * linter * prioritise web2 login, enable walletConnect for mobile * moved WalletConnect deps to atlas package * cr fixes, bugfix * fixed disconnect functionality * lint * code refactor, secondary button * fixed wallet reject for nova wallet * moved towards dynamic set of url * removed unused var * unused dep --------- Co-authored-by: Artem --- packages/atlas/atlas.config.yml | 6 + packages/atlas/package.json | 2 + packages/atlas/src/.env | 2 + packages/atlas/src/assets/icons/WcLogo.tsx | 14 + packages/atlas/src/assets/icons/index.ts | 1 + .../atlas/src/assets/icons/svgs/WC-logo.svg | 1 + .../ExternalSignInModalWalletStep.tsx | 50 +- .../_auth/LogInModal/LogInModal.tsx | 23 +- .../TransactionModal/TransactionModal.tsx | 5 +- packages/atlas/src/config/configSchema.ts | 8 + .../atlas/src/providers/auth/auth.helpers.ts | 6 +- .../src/providers/auth/auth.provider.tsx | 13 +- .../src/providers/wallet/tmpwallet/consts.ts | 4 + .../providers/wallet/tmpwallet/core/index.ts | 1 + .../providers/wallet/tmpwallet/core/types.ts | 43 + .../src/providers/wallet/tmpwallet/index.ts | 3 + .../src/providers/wallet/tmpwallet/signer.ts | 60 + .../src/providers/wallet/tmpwallet/types.ts | 25 + .../wallet/tmpwallet/wallet-connect.ts | 188 ++ .../src/providers/wallet/wallet.helpers.ts | 20 +- .../src/providers/wallet/wallet.provider.tsx | 103 +- .../src/providers/wallet/wallet.store.ts | 2 +- .../src/providers/wallet/wallet.types.ts | 9 +- yarn.lock | 1746 ++++++++++++++++- 24 files changed, 2228 insertions(+), 107 deletions(-) create mode 100644 packages/atlas/src/assets/icons/WcLogo.tsx create mode 100644 packages/atlas/src/assets/icons/svgs/WC-logo.svg create mode 100644 packages/atlas/src/providers/wallet/tmpwallet/consts.ts create mode 100644 packages/atlas/src/providers/wallet/tmpwallet/core/index.ts create mode 100644 packages/atlas/src/providers/wallet/tmpwallet/core/types.ts create mode 100644 packages/atlas/src/providers/wallet/tmpwallet/index.ts create mode 100644 packages/atlas/src/providers/wallet/tmpwallet/signer.ts create mode 100644 packages/atlas/src/providers/wallet/tmpwallet/types.ts create mode 100644 packages/atlas/src/providers/wallet/tmpwallet/wallet-connect.ts diff --git a/packages/atlas/atlas.config.yml b/packages/atlas/atlas.config.yml index 998ff52667..6b689bb3a5 100644 --- a/packages/atlas/atlas.config.yml +++ b/packages/atlas/atlas.config.yml @@ -270,6 +270,12 @@ features: members: avatarServiceUrl: '$VITE_AVATAR_SERVICE_URL' # URL for avatar service - used to upload member's avatar hcaptchaSiteKey: '$VITE_HCAPTCHA_SITE_KEY' # Site key for hCaptcha - used to verify users are not bots when creating memberships - depends on hCaptcha being enabled in the faucet + walletConnect: + walletConnectProjectId: '$VITE_WALLET_CONNECT_PROJECT_ID' # WalletConnect project ID - used to connect to WalletConnect + metadata: + name: Atlas + description: Web3 video streaming platform + icons: ['https://dev.gleev.xyz/favicon.ico'] playback: playbackRates: [2, 1.5, 1.25, 1, 0.5, 0.25] # Playback rates available in the player comments: diff --git a/packages/atlas/package.json b/packages/atlas/package.json index dcd67f0399..ac1419530b 100644 --- a/packages/atlas/package.json +++ b/packages/atlas/package.json @@ -50,6 +50,8 @@ "@sentry/react": "^7.53.1", "@talismn/connect-wallets": "^1.2.1", "@tippyjs/react": "^4.2.6", + "@walletconnect/modal": "^2.6.2", + "@walletconnect/universal-provider": "^2.11.1", "aos": "^2.3.4", "awesome-debounce-promise": "^2.1.0", "axios": "^1.2.1", diff --git a/packages/atlas/src/.env b/packages/atlas/src/.env index a7dbeed4c9..4ed1ec82cd 100644 --- a/packages/atlas/src/.env +++ b/packages/atlas/src/.env @@ -17,6 +17,7 @@ VITE_ASSET_LOGS_URL= VITE_GEOLOCATION_SERVICE_URL=https://geolocation.joystream.org VITE_HCAPTCHA_SITE_KEY=41cae189-7676-4f6b-aa56-635be26d3ceb VITE_CHANGENOW_PUBLIC_API_KEY=0d8a58104f82b860a70e9460bccf62ae1e0fca4a93fd7e0c27c90448187b988f +VITE_WALLET_CONNECT_PROJECT_ID=33b2609463e399daee8c51726546c8dd # YPP configuration VITE_GOOGLE_CONSOLE_CLIENT_ID=246331758613-rc1psegmsr9l4e33nqu8rre3gno5dsca.apps.googleusercontent.com @@ -55,6 +56,7 @@ VITE_NEXT_NODE_URL=wss://3.73.121.180.nip.io/ws-rpc VITE_NEXT_FAUCET_URL=https://3.73.121.180.nip.io/member-faucet/register VITE_NEXT_YPP_FAUCET_URL=wss://3.73.121.180.nip.io/ws-rpc + # Local development env URLs VITE_LOCAL_ORION_AUTH_URL=http://localhost:4074/api/v1 VITE_LOCAL_ORION_URL=http://localhost:4350/graphql diff --git a/packages/atlas/src/assets/icons/WcLogo.tsx b/packages/atlas/src/assets/icons/WcLogo.tsx new file mode 100644 index 0000000000..e161ea38d6 --- /dev/null +++ b/packages/atlas/src/assets/icons/WcLogo.tsx @@ -0,0 +1,14 @@ +// THIS FILE WAS AUTOGENERATED BY SVGR. DO NOT MODIFY IT MANUALLY; +import { Ref, SVGProps, forwardRef, memo } from 'react' + +const SvgWcLogo = forwardRef((props: SVGProps, ref: Ref) => ( + + + +)) +SvgWcLogo.displayName = 'SvgWcLogo' +const Memo = memo(SvgWcLogo) +export { Memo as SvgWcLogo } diff --git a/packages/atlas/src/assets/icons/index.ts b/packages/atlas/src/assets/icons/index.ts index aabfdb1d7b..2c5746dd06 100644 --- a/packages/atlas/src/assets/icons/index.ts +++ b/packages/atlas/src/assets/icons/index.ts @@ -1,4 +1,5 @@ // THIS FILE WAS AUTOGENERATED BY SVGR. DO NOT MODIFY IT MANUALLY +export * from './WcLogo' export * from './ActionAddChannel' export * from './ActionAddImage' export * from './ActionAddVideo' diff --git a/packages/atlas/src/assets/icons/svgs/WC-logo.svg b/packages/atlas/src/assets/icons/svgs/WC-logo.svg new file mode 100644 index 0000000000..c742388d37 --- /dev/null +++ b/packages/atlas/src/assets/icons/svgs/WC-logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/atlas/src/components/_auth/ExternalSignInModal/ExternalSignInSteps/ExternalSignInModalWalletStep/ExternalSignInModalWalletStep.tsx b/packages/atlas/src/components/_auth/ExternalSignInModal/ExternalSignInSteps/ExternalSignInModalWalletStep/ExternalSignInModalWalletStep.tsx index 7306d44f11..842c055d2f 100644 --- a/packages/atlas/src/components/_auth/ExternalSignInModal/ExternalSignInSteps/ExternalSignInModalWalletStep/ExternalSignInModalWalletStep.tsx +++ b/packages/atlas/src/components/_auth/ExternalSignInModal/ExternalSignInSteps/ExternalSignInModalWalletStep/ExternalSignInModalWalletStep.tsx @@ -1,5 +1,6 @@ import { Wallet } from '@talismn/connect-wallets' import { FC, useCallback, useEffect, useMemo, useState } from 'react' +import shallow from 'zustand/shallow' import { GetMembershipsQuery, useGetMembershipsLazyQuery } from '@/api/queries/__generated__/memberships.generated' import { SvgActionNewTab, SvgAlertsError24, SvgAlertsInformative24, SvgLogoPolkadot } from '@/assets/icons' @@ -8,8 +9,10 @@ import { AuthenticationModalStepTemplate } from '@/components/_auth/Authenticati import { Loader } from '@/components/_loaders/Loader' import { useMediaMatch } from '@/hooks/useMediaMatch' import { useMountEffect } from '@/hooks/useMountEffect' +import { useAuthStore } from '@/providers/auth/auth.store' import { UnknownWallet, getWalletsList } from '@/providers/wallet/wallet.helpers' import { useWallet } from '@/providers/wallet/wallet.hooks' +import { isWalletConnectWallet } from '@/providers/wallet/wallet.types' import { isMobile } from '@/utils/browser' import { capitalizeFirstLetter } from '@/utils/misc' @@ -41,15 +44,22 @@ export const ExternalSignInModalWalletStep: FC(0) const [hasError, setHasError] = useState(false) const [isConnecting, setIsConnecting] = useState(false) - const { wallet: walletFromStore, signInToWallet } = useWallet() + const { wallet: walletFromStore, signInToWallet, signInWithWalletConnect } = useWallet() const [fetchMemberships] = useGetMembershipsLazyQuery({}) + const { setAuthModalOpenName } = useAuthStore( + (state) => ({ + setAuthModalOpenName: state.actions.setAuthModalOpenName, + }), + shallow + ) const wallets = useMemo(() => { const unsortedWallets = getWalletsList().filter((wallet) => wallet.installed) + if (isMobileDevice) { // eslint-disable-next-line @typescript-eslint/no-explicit-any const rawWallets = Object.keys((window as any).injectedWeb3 || {}) - const allMoblieWallets = new Set([ + const allMobileWallets = new Set([ 'polkawallet', ...rawWallets, ...unsortedWallets @@ -58,7 +68,7 @@ export const ExternalSignInModalWalletStep: FC wallet.extensionName), ]) - return Array.from(allMoblieWallets) + return Array.from(allMobileWallets) .map((walletName) => { const possiblyInstalledWallet = unsortedWallets.find( (wallet) => wallet.extensionName === walletName && wallet.extensionName === 'subwallet-js' @@ -75,7 +85,7 @@ export const ExternalSignInModalWalletStep: FC rawWallet === walletName), + installed: [...rawWallets, 'WalletConnect'].some((rawWallet) => rawWallet === walletName), ...(MOBILE_SUPPORTED_WALLETS[walletName as keyof typeof MOBILE_SUPPORTED_WALLETS] ?? { logo: { src: '' } }), } as UnknownWallet }) @@ -91,10 +101,22 @@ export const ExternalSignInModalWalletStep: FC { + const message = err?.message + if (message === 'user_action' || err?.code >= 4000) { + setIsConnecting(false) + return null + } + }) + : await signInToWallet(selectedWallet?.extensionName) if (!accounts) { - setHasError(true) + if (selectedWallet?.extensionName !== 'WalletConnect') { + setHasError(true) + } + setAuthModalOpenName('externalLogIn') // set error state return } @@ -106,6 +128,7 @@ export const ExternalSignInModalWalletStep: FC { setSelectedWalletIdx(idx) @@ -126,7 +157,6 @@ export const ExternalSignInModalWalletStep: FC w.extensionName === walletFromStore.extensionName) - if (selectedWalletIdx === index) return setSelectedWalletIdx(index) @@ -146,7 +176,7 @@ export const ExternalSignInModalWalletStep: FC { }} additionalActionsNode={ !isLoading && ( - + + + + + ) } > @@ -111,10 +118,12 @@ export const LogInModal = () => { - Use your {atlasConfig.general.appName} account.{' '} - setAuthModalOpenName('signUp')}>Create account - + + + Use your {atlasConfig.general.appName} account.{' '} + setAuthModalOpenName('signUp')}>Create account + + } hasNavigatedBack > diff --git a/packages/atlas/src/components/_overlays/TransactionModal/TransactionModal.tsx b/packages/atlas/src/components/_overlays/TransactionModal/TransactionModal.tsx index e9ada4618a..24a8326d05 100644 --- a/packages/atlas/src/components/_overlays/TransactionModal/TransactionModal.tsx +++ b/packages/atlas/src/components/_overlays/TransactionModal/TransactionModal.tsx @@ -89,6 +89,9 @@ export const TransactionModal: FC = ({ onClose, status, c } }, [decrementOverlaysOpenCount]) + // @ts-ignore different wallet types before lib integration + const walletLogo = wallet?.logo ? wallet.logo.src : wallet.metadata.logoUrl || null + return ( @@ -116,7 +119,7 @@ export const TransactionModal: FC = ({ onClose, status, c > : } + icon={walletLogo ? : } /> Continue in {wallet?.title} diff --git a/packages/atlas/src/config/configSchema.ts b/packages/atlas/src/config/configSchema.ts index f2322fd54c..27133b9733 100644 --- a/packages/atlas/src/config/configSchema.ts +++ b/packages/atlas/src/config/configSchema.ts @@ -122,6 +122,14 @@ export const configSchema = z.object({ avatarServiceUrl: z.string(), hcaptchaSiteKey: z.string().nullable(), }), + walletConnect: z.object({ + walletConnectProjectId: z.string().nullable(), + metadata: z.object({ + name: z.string().nullable(), + description: z.string().nullable(), + icons: z.array(z.string()).nullable(), + }), + }), playback: z.object({ playbackRates: z.array(z.number()) }), comments: z.object({ reactions: z.array(z.object({ id: z.number(), emoji: z.string(), name: z.string() })), diff --git a/packages/atlas/src/providers/auth/auth.helpers.ts b/packages/atlas/src/providers/auth/auth.helpers.ts index a181532bf7..e5db05bf77 100644 --- a/packages/atlas/src/providers/auth/auth.helpers.ts +++ b/packages/atlas/src/providers/auth/auth.helpers.ts @@ -137,8 +137,10 @@ export const loginRequest = ( export const logoutRequest = () => axiosInstance.post(`${ORION_AUTH_URL}/logout`, {}, { withCredentials: true }) export const getCorrectLoginModal = (): AuthModals => { - const hasAtleastOneWallet = getWalletsList().some((wallet) => wallet.installed) - return hasAtleastOneWallet ? 'externalLogIn' : 'logIn' + const hasAtLeastOneWallet = getWalletsList().some( + (wallet) => wallet.extensionName !== 'WalletConnect' && wallet.installed + ) + return hasAtLeastOneWallet ? 'externalLogIn' : 'logIn' } export const prepareEncryptionArtifacts = async (email: string, password: string, mnemonic: string) => { diff --git a/packages/atlas/src/providers/auth/auth.provider.tsx b/packages/atlas/src/providers/auth/auth.provider.tsx index 3052d57de5..c554627f8f 100644 --- a/packages/atlas/src/providers/auth/auth.provider.tsx +++ b/packages/atlas/src/providers/auth/auth.provider.tsx @@ -15,6 +15,7 @@ import { useAuthStore } from '@/providers/auth/auth.store' import { useJoystream } from '@/providers/joystream/joystream.provider' import { useWallet } from '@/providers/wallet/wallet.hooks' import { useWalletStore } from '@/providers/wallet/wallet.store' +import { isWalletConnectWallet } from '@/providers/wallet/wallet.types' import { SentryLogger } from '@/utils/logs' import { @@ -44,6 +45,7 @@ export const AuthProvider: FC = ({ children }) => { actions: { setAnonymousUserId, setEncodedSeed }, } = useAuthStore() const lastUsedWalletName = useWalletStore((store) => store.lastUsedWalletName) + const currentWallet = useWalletStore((store) => store.wallet) const { signInToWallet } = useWallet() useMountEffect(() => { @@ -247,6 +249,15 @@ export const AuthProvider: FC = ({ children }) => { const handleLogout: AuthContextValue['handleLogout'] = useCallback(async () => { try { + if (currentWallet && isWalletConnectWallet(currentWallet)) { + await currentWallet?.client?.disconnect({ + topic: currentWallet?.session?.topic || '', + reason: { + code: -1, + message: 'Disconnected by client!', + }, + }) + } await logoutRequest() handleAnonymousAuth(anonymousUserId).then((userId) => { setAnonymousUserId(userId ?? null) @@ -257,7 +268,7 @@ export const AuthProvider: FC = ({ children }) => { } catch (error) { SentryLogger.error('Error when logging out', 'auth.provider', error) } - }, [anonymousUserId, setAnonymousUserId, setEncodedSeed, trackLogout]) + }, [anonymousUserId, currentWallet, setAnonymousUserId, setEncodedSeed, trackLogout]) const isWalletUser = useMemo(() => encodedSeed === null && !!currentUser, [currentUser, encodedSeed]) diff --git a/packages/atlas/src/providers/wallet/tmpwallet/consts.ts b/packages/atlas/src/providers/wallet/tmpwallet/consts.ts new file mode 100644 index 0000000000..7eb18f13f2 --- /dev/null +++ b/packages/atlas/src/providers/wallet/tmpwallet/consts.ts @@ -0,0 +1,4 @@ +export const JOYSTREAM_DEFAULT_CHAIN_ID = 'polkadot:6b5e488e0fa8f9821110d5c13f4c468a' +export const WC_VERSION = '2.0' + +export const JOYSTREAM_SS58_PREFIX = 126 diff --git a/packages/atlas/src/providers/wallet/tmpwallet/core/index.ts b/packages/atlas/src/providers/wallet/tmpwallet/core/index.ts new file mode 100644 index 0000000000..fdc633235f --- /dev/null +++ b/packages/atlas/src/providers/wallet/tmpwallet/core/index.ts @@ -0,0 +1 @@ +export * from './types.js' diff --git a/packages/atlas/src/providers/wallet/tmpwallet/core/types.ts b/packages/atlas/src/providers/wallet/tmpwallet/core/types.ts new file mode 100644 index 0000000000..72ef3a96ba --- /dev/null +++ b/packages/atlas/src/providers/wallet/tmpwallet/core/types.ts @@ -0,0 +1,43 @@ +import type { Signer } from '@polkadot/types/types' + +export type KeypairType = 'ed25519' | 'sr25519' + +export interface Account { + address: string + type?: KeypairType + genesisHash?: string | null + name?: string +} + +export enum WalletType { + INJECTED = 'INJECTED', + WALLET_CONNECT = 'WALLET_CONNECT', + LEDGER = 'LEDGER', +} + +export interface BaseWalletProvider { + getWallets: () => Promise +} + +export interface WalletMetadata { + id: string + title: string + description?: string + urls?: { main?: string; browsers?: Record } + iconUrl?: string + version?: string +} + +export type UnsubscribeFn = () => void + +export interface BaseWallet { + metadata: WalletMetadata + type: WalletType + // signer will be available when the wallet is connected, otherwise it is undefined + signer: Signer | undefined + connect: () => Promise + disconnect: () => Promise + isConnected: () => boolean + getAccounts: () => Promise + subscribeAccounts: (cb: (accounts: Account[]) => void) => Promise +} diff --git a/packages/atlas/src/providers/wallet/tmpwallet/index.ts b/packages/atlas/src/providers/wallet/tmpwallet/index.ts new file mode 100644 index 0000000000..e0114b41cf --- /dev/null +++ b/packages/atlas/src/providers/wallet/tmpwallet/index.ts @@ -0,0 +1,3 @@ +export * from './wallet-connect.js' +export * from './types.js' +export * from './consts.js' diff --git a/packages/atlas/src/providers/wallet/tmpwallet/signer.ts b/packages/atlas/src/providers/wallet/tmpwallet/signer.ts new file mode 100644 index 0000000000..1f70efee7f --- /dev/null +++ b/packages/atlas/src/providers/wallet/tmpwallet/signer.ts @@ -0,0 +1,60 @@ +import { TypeRegistry } from '@polkadot/types' +import type { Signer, SignerPayloadJSON, SignerPayloadRaw, SignerResult } from '@polkadot/types/types' +import type { HexString } from '@polkadot/util/types' +import SignClient from '@walletconnect/sign-client' +import type { SessionTypes } from '@walletconnect/types' + +import { PolkadotNamespaceChainId } from './types' + +interface Signature { + signature: HexString +} + +export class WalletConnectSigner implements Signer { + registry: TypeRegistry + client: SignClient + session: SessionTypes.Struct + chainId: PolkadotNamespaceChainId + id = 0 + + constructor(client: SignClient, session: SessionTypes.Struct, chainId: PolkadotNamespaceChainId) { + this.client = client + this.session = session + this.chainId = chainId + this.registry = new TypeRegistry() + } + + signPayload = async (payload: SignerPayloadJSON): Promise => { + const request = { + topic: this.session.topic, + chainId: `polkadot:${payload.genesisHash.replace('0x', '').substring(0, 32)}`, + request: { + id: 1, + jsonrpc: '2.0', + method: 'polkadot_signTransaction', + params: { address: payload.address, transactionPayload: payload }, + }, + } + + const { signature } = await this.client.request(request) + + return { id: ++this.id, signature } + } + + signRaw = async (raw: SignerPayloadRaw): Promise => { + const request = { + topic: this.session.topic, + chainId: this.chainId, + request: { + id: 1, + jsonrpc: '2.0', + method: 'polkadot_signMessage', + params: { address: raw.address, message: raw.data }, + }, + } + + const { signature } = await this.client.request(request) + + return { id: ++this.id, signature } + } +} diff --git a/packages/atlas/src/providers/wallet/tmpwallet/types.ts b/packages/atlas/src/providers/wallet/tmpwallet/types.ts new file mode 100644 index 0000000000..4c946affa6 --- /dev/null +++ b/packages/atlas/src/providers/wallet/tmpwallet/types.ts @@ -0,0 +1,25 @@ +import { SignClientTypes } from '@walletconnect/types' + +export type WcAccount = `${string}:${string}:${string}` + +export type PolkadotNamespaceChainId = `polkadot:${string}` + +interface ModalState { + open: boolean +} + +export type ConnectionModal = { + openModal: () => Promise + subscribeModal: (callback: (state: ModalState) => void) => () => void + closeModal: () => void +} + +export interface WalletConnectConfiguration extends SignClientTypes.Options { + // ToDo: Remove ```projectId``` when the following issue is resolved: + // https://github.com/WalletConnect/walletconnect-monorepo/pull/3435 + projectId: string + chainIds?: PolkadotNamespaceChainId[] + relayUrl?: string + optionalChainIds?: PolkadotNamespaceChainId[] + onSessionDelete?: () => void +} diff --git a/packages/atlas/src/providers/wallet/tmpwallet/wallet-connect.ts b/packages/atlas/src/providers/wallet/tmpwallet/wallet-connect.ts new file mode 100644 index 0000000000..b89bd3b123 --- /dev/null +++ b/packages/atlas/src/providers/wallet/tmpwallet/wallet-connect.ts @@ -0,0 +1,188 @@ +import type { Signer } from '@polkadot/types/types' +import { WalletConnectModal } from '@walletconnect/modal' +import Client, { SignClient } from '@walletconnect/sign-client' +import type { SessionTypes } from '@walletconnect/types' + +import { JOYSTREAM_DEFAULT_CHAIN_ID, WC_VERSION } from './consts' +import { Account, BaseWallet, BaseWalletProvider, UnsubscribeFn, WalletMetadata, WalletType } from './core' +import { WalletConnectSigner } from './signer.js' +import type { WalletConnectConfiguration, WcAccount } from './types.js' + +const toWalletAccount = (wcAccount: WcAccount) => ({ address: wcAccount.split(':')[2] }) + +interface ModalState { + open: boolean +} + +export class WalletConnectWallet implements BaseWallet { + type = WalletType.WALLET_CONNECT + appName: string + metadata: WalletMetadata + config: WalletConnectConfiguration + client: Client | undefined + signer: Signer | undefined + session: SessionTypes.Struct | undefined + walletConnectModal: WalletConnectModal + + constructor(config: WalletConnectConfiguration, appName: string) { + this.config = config + this.appName = appName + this.metadata = { + id: 'wallet-connect', + title: config.metadata?.name || 'Wallet Connect', + description: config.metadata?.description || '', + urls: { main: config.metadata?.url || '' }, + iconUrl: config.metadata?.icons[0] || '', + version: WC_VERSION, + } + this.walletConnectModal = new WalletConnectModal({ + projectId: config.projectId, + // chains: config.chainIds, + themeMode: 'dark', + themeVariables: { + '--wcm-z-index': '9999', + }, + }) + } + + reset(): void { + this.client = undefined + this.session = undefined + this.signer = undefined + } + + async getAccounts(): Promise { + let accounts: Account[] = [] + + if (this.session) { + const wcAccounts = Object.values(this.session.namespaces) + .map((namespace) => namespace.accounts) + .flat() + + accounts = wcAccounts.map((wcAccount) => toWalletAccount(wcAccount as WcAccount)) + } + + return accounts + } + + async subscribeAccounts(cb: (accounts: Account[]) => void): Promise { + const handler = async () => { + cb(await this.getAccounts()) + } + + await handler() + + this.client?.on('session_delete', handler) + this.client?.on('session_expire', handler) + this.client?.on('session_update', handler) + + return () => { + this.client?.off('session_update', handler) + this.client?.off('session_expire', handler) + this.client?.off('session_update', handler) + } + } + + async connect() { + this.reset() + + this.client = await SignClient.init(this.config) + + this.client.on('session_delete', () => { + this.reset() + + if (this.config.onSessionDelete) { + this.config.onSessionDelete() + } + }) + + const namespaces = { + requiredNamespaces: { + polkadot: { + chains: this.config.chainIds, + methods: ['polkadot_signTransaction', 'polkadot_signMessage'], + events: [], + }, + }, + optionalNamespaces: { + polkadot: { + chains: this.config.optionalChainIds, + methods: ['polkadot_signTransaction', 'polkadot_signMessage'], + events: [], + }, + }, + } + + const lastKeyIndex = this.client.session.getAll().length - 1 + const lastSession = this.client.session.getAll()[lastKeyIndex] + const signerChainId = Array.isArray(this.config.chainIds) ? this.config.chainIds[0] : JOYSTREAM_DEFAULT_CHAIN_ID + + if (lastSession) { + return new Promise((resolve) => { + this.session = lastSession + + this.signer = new WalletConnectSigner(this.client!, lastSession, signerChainId) + resolve() + }) + } + + const { uri, approval } = await this.client.connect(namespaces) + + return new Promise((resolve, reject) => { + if (uri) { + this.walletConnectModal.openModal({ uri }) + } + + const unsubscribeModal = this.walletConnectModal.subscribeModal((state: ModalState) => { + if (state.open === false) { + unsubscribeModal() + reject({ message: 'user_action' }) + } + }) + + approval() + .then((session) => { + this.session = session + this.signer = new WalletConnectSigner(this.client!, session, signerChainId) + + resolve() + }) + .catch((error) => { + reject(error) + }) + .finally(() => this.walletConnectModal.closeModal()) + }) + } + + async disconnect() { + if (this.session?.topic) { + this.client?.disconnect({ + topic: this.session?.topic, + reason: { + code: -1, + message: 'Disconnected by client!', + }, + }) + } + + this.reset() + } + + isConnected() { + return !!(this.client && this.signer && this.session) + } +} + +export class WalletConnectProvider implements BaseWalletProvider { + config: WalletConnectConfiguration + appName: string + + constructor(config: WalletConnectConfiguration, appName: string) { + this.config = config + this.appName = appName + } + + getWallets(): Promise { + return new Promise((resolve) => resolve([new WalletConnectWallet(this.config, this.appName)])) + } +} diff --git a/packages/atlas/src/providers/wallet/wallet.helpers.ts b/packages/atlas/src/providers/wallet/wallet.helpers.ts index caf25524de..b25c309248 100644 --- a/packages/atlas/src/providers/wallet/wallet.helpers.ts +++ b/packages/atlas/src/providers/wallet/wallet.helpers.ts @@ -1,4 +1,6 @@ -import { BaseDotsamaWallet, getWallets } from '@talismn/connect-wallets' +import { BaseDotsamaWallet, Wallet, getWallets } from '@talismn/connect-wallets' + +import { atlasConfig } from '@/config' export const getWalletsList = () => { const supportedWallets = getWallets() @@ -14,7 +16,21 @@ export const getWalletsList = () => { return [...acc, new UnknownWallet(walletName)] }, [] as UnknownWallet[]) - return [...supportedWallets, ...unknownWallets] + const wcWallet = { + extensionName: 'WalletConnect', + title: 'WalletConnect', + logo: { + src: 'https://dev.gleev.xyz/favicon.ico', + alt: 'WalletConnect', + }, + installed: true, + } as Wallet + + return [ + ...supportedWallets, + ...unknownWallets, + ...(atlasConfig.features.walletConnect.walletConnectProjectId ? [wcWallet] : []), + ] } // eslint-disable-next-line @typescript-eslint/no-explicit-any diff --git a/packages/atlas/src/providers/wallet/wallet.provider.tsx b/packages/atlas/src/providers/wallet/wallet.provider.tsx index 883bd471a6..4c023d6403 100644 --- a/packages/atlas/src/providers/wallet/wallet.provider.tsx +++ b/packages/atlas/src/providers/wallet/wallet.provider.tsx @@ -5,11 +5,17 @@ import { FC, PropsWithChildren, createContext, useCallback, useContext, useEffec import { atlasConfig } from '@/config' import { JoystreamContext, JoystreamContextValue } from '@/providers/joystream/joystream.provider' import { useWalletStore } from '@/providers/wallet/wallet.store' -import { SignerWalletAccount, WalletContextValue } from '@/providers/wallet/wallet.types' +import { + SignerWalletAccount, + WCWallet, + WalletContextValue, + isWalletConnectWallet, +} from '@/providers/wallet/wallet.types' import { formatJoystreamAddress } from '@/utils/address' -import { SentryLogger } from '@/utils/logs' +import { ConsoleLogger, SentryLogger } from '@/utils/logs' import { retryWalletPromise } from '@/utils/misc' +import { WalletConnectConfiguration, WalletConnectWallet } from './tmpwallet' import { filterUnsupportedAccounts, getWalletsList } from './wallet.helpers' const WalletContext = createContext(undefined) @@ -25,6 +31,9 @@ export const WalletProvider: FC = ({ children }) => { } = useWalletStore((state) => state.actions) const joystreamCtx = useContext(JoystreamContext) + const walletConnectConfig = atlasConfig.features.walletConnect + const { name, icons, description } = walletConnectConfig.metadata + const [isSignerMetadataOutdated, setIsSignerMetadataOutdated] = useState(false) const setWalletAccounts = useCallback( @@ -42,6 +51,41 @@ export const WalletProvider: FC = ({ children }) => { [_setWalletAccounts] ) + const getWalletConnectParams = useCallback(async () => { + const chainMetadata = await joystreamCtx?.joystream?.getChainMetadata() + + const genesisHash = chainMetadata?.genesisHash + + if (!genesisHash) { + SentryLogger.error( + 'WalletConnect Config error', + 'wallet.provider.tsx', + 'No genesis hash found in chain metadata. WalletConnect configuration is incorrect' + ) + } + const chainId = `polkadot:${genesisHash?.replace('0x', '').substring(0, 32)}` as `polkadot:${string}` + + const walletConnectParams: WalletConnectConfiguration = { + projectId: walletConnectConfig.walletConnectProjectId || '', + relayUrl: 'wss://relay.walletconnect.com', + metadata: { + name: name || '', + description: description || '', + url: `${window.location.protocol}//${location.host}`, + icons: icons || [], + }, + chainIds: [chainId], + optionalChainIds: [chainId], + + onSessionDelete: () => { + // do something when session is removed + ConsoleLogger.log('WalletConnect session deleted') + }, + } + + return walletConnectParams + }, [description, icons, joystreamCtx?.joystream, name, walletConnectConfig.walletConnectProjectId]) + const initSignerWallet = useCallback( async (walletName: string): Promise => { try { @@ -84,6 +128,36 @@ export const WalletProvider: FC = ({ children }) => { }, [setWallet, setWalletAccounts, setWalletStatus] ) + const signInWithWalletConnect = useCallback(async () => { + const walletConnectParams = await getWalletConnectParams() + const wcWallet = new WalletConnectWallet(walletConnectParams, atlasConfig.general.appName) + await wcWallet.connect() + const accounts = await wcWallet.getAccounts() + const accountsWithWallet = accounts + // eslint-disable-next-line @typescript-eslint/no-explicit-any + .map((account: any) => { + return { + ...account, + address: formatJoystreamAddress(account.address), + source: 'WalletConnect', + wallet: wcWallet, + signer: wcWallet.signer, + } + }) + + setWalletAccounts(accountsWithWallet) + const storeWallet = { + extensionName: 'WalletConnect', + logo: { + src: 'https://walletconnect.com/static/favicon.png', + alt: 'WalletConnect', + }, + ...wcWallet, + subscribeAccounts: wcWallet.subscribeAccounts.bind(wcWallet), + } as WCWallet + setWallet(storeWallet) + return accountsWithWallet + }, [getWalletConnectParams, setWallet, setWalletAccounts]) const signInToWallet = useCallback( async (walletName?: string, invokedAutomatically?: boolean): Promise => { @@ -92,7 +166,11 @@ export const WalletProvider: FC = ({ children }) => { } try { - const initializedAccounts = await (!invokedAutomatically + const walletType = walletName === 'WalletConnect' ? 'WALLET_CONNECT' : 'INJECTED' + + const initializedAccounts = await (walletType === 'WALLET_CONNECT' + ? signInWithWalletConnect() + : !invokedAutomatically ? initSignerWallet(walletName) : retryWalletPromise(() => initSignerWallet(walletName), 1000, 5000)) if (initializedAccounts === null) { @@ -104,13 +182,18 @@ export const WalletProvider: FC = ({ children }) => { return null } }, - [initSignerWallet] + [initSignerWallet, signInWithWalletConnect] ) const checkSignerStatus = useCallback(async () => { const chainMetadata = await joystreamCtx?.joystream?.getChainMetadata() - if (wallet?.extension.metadata && chainMetadata) { + // @ts-ignore edit wallet type + if (!wallet || isWalletConnectWallet(wallet)) { + return + } + + if (wallet?.extension?.metadata && chainMetadata) { const [localGenesisHash, localSpecVersion] = lastChainMetadataVersion ?? ['', 0] // update was skipped @@ -133,12 +216,13 @@ export const WalletProvider: FC = ({ children }) => { const isOutdated = currentChain.specVersion < chainMetadata.specVersion setIsSignerMetadataOutdated(isOutdated) } - }, [joystreamCtx?.joystream, lastChainMetadataVersion, wallet?.extension.metadata]) + }, [joystreamCtx?.joystream, lastChainMetadataVersion, wallet]) const updateSignerMetadata = useCallback(async () => { const chainMetadata = await joystreamCtx?.joystream?.getChainMetadata() - return wallet?.extension.metadata.provide(chainMetadata) - }, [joystreamCtx?.joystream, wallet?.extension.metadata]) + if (!wallet) return + return wallet?.extension.metadata.provider(chainMetadata) + }, [joystreamCtx?.joystream, wallet]) const skipSignerMetadataUpdate = useCallback(async () => { const chainMetadata = await joystreamCtx?.joystream?.getChainMetadata() @@ -184,8 +268,9 @@ export const WalletProvider: FC = ({ children }) => { isSignerMetadataOutdated, updateSignerMetadata, skipSignerMetadataUpdate, + signInWithWalletConnect, }), - [signInToWallet, isSignerMetadataOutdated, updateSignerMetadata, skipSignerMetadataUpdate] + [signInToWallet, isSignerMetadataOutdated, updateSignerMetadata, skipSignerMetadataUpdate, signInWithWalletConnect] ) // if (error) { diff --git a/packages/atlas/src/providers/wallet/wallet.store.ts b/packages/atlas/src/providers/wallet/wallet.store.ts index 6ebf5a75c5..7e8a687b75 100644 --- a/packages/atlas/src/providers/wallet/wallet.store.ts +++ b/packages/atlas/src/providers/wallet/wallet.store.ts @@ -30,7 +30,7 @@ export const useWalletStore = createStore( setWallet: (wallet) => { set((state) => { state.wallet = wallet - state.lastUsedWalletName = wallet.extensionName + state.lastUsedWalletName = wallet.extensionName || null }) }, setWalletAccounts: (accounts) => { diff --git a/packages/atlas/src/providers/wallet/wallet.types.ts b/packages/atlas/src/providers/wallet/wallet.types.ts index 92b41aea27..6fa583c338 100644 --- a/packages/atlas/src/providers/wallet/wallet.types.ts +++ b/packages/atlas/src/providers/wallet/wallet.types.ts @@ -1,12 +1,19 @@ import { Wallet, WalletAccount } from '@talismn/connect-wallets' -export type SignerWallet = Wallet +import { WalletConnectWallet } from '@/providers/wallet/tmpwallet' + +export type SignerWallet = Wallet | WCWallet +export type WCWallet = Partial & WalletConnectWallet export type SignerWalletStatus = 'unknown' | 'connected' | 'disconnected' | 'pending' export type SignerWalletAccount = WalletAccount +export const isWalletConnectWallet = (wallet: SignerWallet): wallet is WCWallet => + wallet.extensionName === 'WalletConnect' + export type WalletContextValue = { isSignerMetadataOutdated: boolean skipSignerMetadataUpdate: () => Promise signInToWallet: (walletName?: string, invokedAutomatically?: boolean) => Promise updateSignerMetadata: () => Promise + signInWithWalletConnect: () => Promise } diff --git a/yarn.lock b/yarn.lock index 7c78a08a3e..d1588959cd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4213,6 +4213,13 @@ __metadata: languageName: node linkType: hard +"@ioredis/commands@npm:^1.1.1": + version: 1.2.0 + resolution: "@ioredis/commands@npm:1.2.0" + checksum: 9b20225ba36ef3e5caf69b3c0720597c3016cc9b1e157f519ea388f621dd9037177f84cfe7e25c4c32dad7dd90c70ff9123cd411f747e053cf292193c9c461e2 + languageName: node + linkType: hard + "@isaacs/cliui@npm:^8.0.2": version: 8.0.2 resolution: "@isaacs/cliui@npm:8.0.2" @@ -4431,6 +4438,8 @@ __metadata: "@types/scroll-lock": ^2.1.0 "@types/video.js": ^7.3.50 "@vitejs/plugin-react": ^3.0.0 + "@walletconnect/modal": ^2.6.2 + "@walletconnect/universal-provider": ^2.11.1 aos: ^2.3.4 awesome-debounce-promise: ^2.1.0 axios: ^1.2.1 @@ -4755,6 +4764,22 @@ __metadata: languageName: node linkType: hard +"@lit-labs/ssr-dom-shim@npm:^1.0.0, @lit-labs/ssr-dom-shim@npm:^1.1.0": + version: 1.2.0 + resolution: "@lit-labs/ssr-dom-shim@npm:1.2.0" + checksum: 704621c28df8d651e54a1b93f6ede8103db2dd3e7a1f02463fe5492bd28aa22de813314c7833260204fed5c8491a6bbd763f6051abc25690df537d812a508c35 + languageName: node + linkType: hard + +"@lit/reactive-element@npm:^1.3.0, @lit/reactive-element@npm:^1.6.0": + version: 1.6.3 + resolution: "@lit/reactive-element@npm:1.6.3" + dependencies: + "@lit-labs/ssr-dom-shim": ^1.0.0 + checksum: 79b58631c38effeabad090070324431da8a22cf0ff665f5e4de35e4d791f984742b3d340c9c7fce996d1124a8da95febc582471b4c237236c770b1300b56ef6e + languageName: node + linkType: hard + "@livesession/sdk@npm:^1.1.4": version: 1.1.4 resolution: "@livesession/sdk@npm:1.1.4" @@ -4827,6 +4852,91 @@ __metadata: languageName: node linkType: hard +"@motionone/animation@npm:^10.15.1, @motionone/animation@npm:^10.17.0": + version: 10.17.0 + resolution: "@motionone/animation@npm:10.17.0" + dependencies: + "@motionone/easing": ^10.17.0 + "@motionone/types": ^10.17.0 + "@motionone/utils": ^10.17.0 + tslib: ^2.3.1 + checksum: 8cab13cde7ccbe29bcaff1cb43ba39acdc51d9be4726628f4d0ba27898c59456887fd9ec56aceaa3d5b82993efbdfa9a7b9e99d4b96bc458f486208394027093 + languageName: node + linkType: hard + +"@motionone/dom@npm:^10.16.2, @motionone/dom@npm:^10.16.4": + version: 10.17.0 + resolution: "@motionone/dom@npm:10.17.0" + dependencies: + "@motionone/animation": ^10.17.0 + "@motionone/generators": ^10.17.0 + "@motionone/types": ^10.17.0 + "@motionone/utils": ^10.17.0 + hey-listen: ^1.0.8 + tslib: ^2.3.1 + checksum: 6415f17032136218dfa88b9b00fbab738e514544129edf6f5c01dbdacefe9be48efd2d06f3d0cb7f2f5d2d2d79c94362effc7d034332406fd4dec6a710e603a2 + languageName: node + linkType: hard + +"@motionone/easing@npm:^10.17.0": + version: 10.17.0 + resolution: "@motionone/easing@npm:10.17.0" + dependencies: + "@motionone/utils": ^10.17.0 + tslib: ^2.3.1 + checksum: 2870d9e94645cf4ed3a27309a858dccee26615291ec46b56e993ef3ac9f059a659b02a2115ed61d27250fc8800acc9640f0319aeb402de7fa0e15dffbebeb548 + languageName: node + linkType: hard + +"@motionone/generators@npm:^10.17.0": + version: 10.17.0 + resolution: "@motionone/generators@npm:10.17.0" + dependencies: + "@motionone/types": ^10.17.0 + "@motionone/utils": ^10.17.0 + tslib: ^2.3.1 + checksum: 6d048a0362692db3f450b97c1679a8d0265bff93106412bdcc33b9c48b9362a3e97f672f29a2932d5e393330750fdd55921c1c9b2bf20690922a37a0164e649f + languageName: node + linkType: hard + +"@motionone/svelte@npm:^10.16.2": + version: 10.16.4 + resolution: "@motionone/svelte@npm:10.16.4" + dependencies: + "@motionone/dom": ^10.16.4 + tslib: ^2.3.1 + checksum: 699e20955ea832bcf32d410ae9f88edf61a5c2cf2b56527119ab1df6fecbf2632b62d541743d0f6d278fd700a15a20b9eb7c8aa5266e7aed5e113b8f8f75b863 + languageName: node + linkType: hard + +"@motionone/types@npm:^10.15.1, @motionone/types@npm:^10.17.0": + version: 10.17.0 + resolution: "@motionone/types@npm:10.17.0" + checksum: 3996c84e1578b17146c14bd581ab682b7b2a06ca7fd5a7dc378a0f3b10539256d7b803a7df748f0c60d6df6b33950269a27ba2bb1839de779196bd024bee4b87 + languageName: node + linkType: hard + +"@motionone/utils@npm:^10.15.1, @motionone/utils@npm:^10.17.0": + version: 10.17.0 + resolution: "@motionone/utils@npm:10.17.0" + dependencies: + "@motionone/types": ^10.17.0 + hey-listen: ^1.0.8 + tslib: ^2.3.1 + checksum: 408e278c9051a221e528bb9ca0a773018b9953ecd53bb88715421afc009f4647417b0d9f163c8195467badd934f39ade24f57e007416988e4291242e749ea43d + languageName: node + linkType: hard + +"@motionone/vue@npm:^10.16.2": + version: 10.16.4 + resolution: "@motionone/vue@npm:10.16.4" + dependencies: + "@motionone/dom": ^10.16.4 + tslib: ^2.3.1 + checksum: 746e38d0ee831829bfac2ce471f3d98a9e37bd8cbdf2706fa3becce69c17f51180a1ee47582d97758d68aafdfc9a187ab47ff216c77254ac994287dabcf266c1 + languageName: node + linkType: hard + "@multiformats/base-x@npm:^4.0.1": version: 4.0.1 resolution: "@multiformats/base-x@npm:4.0.1" @@ -5194,6 +5304,151 @@ __metadata: languageName: node linkType: hard +"@parcel/watcher-android-arm64@npm:2.4.0": + version: 2.4.0 + resolution: "@parcel/watcher-android-arm64@npm:2.4.0" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@parcel/watcher-darwin-arm64@npm:2.4.0": + version: 2.4.0 + resolution: "@parcel/watcher-darwin-arm64@npm:2.4.0" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@parcel/watcher-darwin-x64@npm:2.4.0": + version: 2.4.0 + resolution: "@parcel/watcher-darwin-x64@npm:2.4.0" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@parcel/watcher-freebsd-x64@npm:2.4.0": + version: 2.4.0 + resolution: "@parcel/watcher-freebsd-x64@npm:2.4.0" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@parcel/watcher-linux-arm-glibc@npm:2.4.0": + version: 2.4.0 + resolution: "@parcel/watcher-linux-arm-glibc@npm:2.4.0" + conditions: os=linux & cpu=arm & libc=glibc + languageName: node + linkType: hard + +"@parcel/watcher-linux-arm64-glibc@npm:2.4.0": + version: 2.4.0 + resolution: "@parcel/watcher-linux-arm64-glibc@npm:2.4.0" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@parcel/watcher-linux-arm64-musl@npm:2.4.0": + version: 2.4.0 + resolution: "@parcel/watcher-linux-arm64-musl@npm:2.4.0" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@parcel/watcher-linux-x64-glibc@npm:2.4.0": + version: 2.4.0 + resolution: "@parcel/watcher-linux-x64-glibc@npm:2.4.0" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@parcel/watcher-linux-x64-musl@npm:2.4.0": + version: 2.4.0 + resolution: "@parcel/watcher-linux-x64-musl@npm:2.4.0" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@parcel/watcher-wasm@npm:2.4.0": + version: 2.4.0 + resolution: "@parcel/watcher-wasm@npm:2.4.0" + dependencies: + is-glob: ^4.0.3 + micromatch: ^4.0.5 + napi-wasm: ^1.1.0 + checksum: f32af594a20a809981b6830e8abdb59e604b670568f2344c7bc69b7447fbc135fb8a6900ba1feb5a197b3a5633a663bdfd9502e4a684aebd10abfb99f36f678b + languageName: node + linkType: hard + +"@parcel/watcher-win32-arm64@npm:2.4.0": + version: 2.4.0 + resolution: "@parcel/watcher-win32-arm64@npm:2.4.0" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@parcel/watcher-win32-ia32@npm:2.4.0": + version: 2.4.0 + resolution: "@parcel/watcher-win32-ia32@npm:2.4.0" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@parcel/watcher-win32-x64@npm:2.4.0": + version: 2.4.0 + resolution: "@parcel/watcher-win32-x64@npm:2.4.0" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@parcel/watcher@npm:^2.4.0": + version: 2.4.0 + resolution: "@parcel/watcher@npm:2.4.0" + dependencies: + "@parcel/watcher-android-arm64": 2.4.0 + "@parcel/watcher-darwin-arm64": 2.4.0 + "@parcel/watcher-darwin-x64": 2.4.0 + "@parcel/watcher-freebsd-x64": 2.4.0 + "@parcel/watcher-linux-arm-glibc": 2.4.0 + "@parcel/watcher-linux-arm64-glibc": 2.4.0 + "@parcel/watcher-linux-arm64-musl": 2.4.0 + "@parcel/watcher-linux-x64-glibc": 2.4.0 + "@parcel/watcher-linux-x64-musl": 2.4.0 + "@parcel/watcher-win32-arm64": 2.4.0 + "@parcel/watcher-win32-ia32": 2.4.0 + "@parcel/watcher-win32-x64": 2.4.0 + detect-libc: ^1.0.3 + is-glob: ^4.0.3 + micromatch: ^4.0.5 + node-addon-api: ^7.0.0 + node-gyp: latest + dependenciesMeta: + "@parcel/watcher-android-arm64": + optional: true + "@parcel/watcher-darwin-arm64": + optional: true + "@parcel/watcher-darwin-x64": + optional: true + "@parcel/watcher-freebsd-x64": + optional: true + "@parcel/watcher-linux-arm-glibc": + optional: true + "@parcel/watcher-linux-arm64-glibc": + optional: true + "@parcel/watcher-linux-arm64-musl": + optional: true + "@parcel/watcher-linux-x64-glibc": + optional: true + "@parcel/watcher-linux-x64-musl": + optional: true + "@parcel/watcher-win32-arm64": + optional: true + "@parcel/watcher-win32-ia32": + optional: true + "@parcel/watcher-win32-x64": + optional: true + checksum: 9ff89d7e8c0beeee998b28a173870c657b65aa76fafb3c98524f4c28f37103b70e84538de3a380a1126b28e4e84c90df87804398c38fdcaef877f87aa06db961 + languageName: node + linkType: hard + "@peculiar/asn1-schema@npm:^2.1.6": version: 2.3.0 resolution: "@peculiar/asn1-schema@npm:2.3.0" @@ -6823,6 +7078,176 @@ __metadata: languageName: node linkType: hard +"@stablelib/aead@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/aead@npm:1.0.1" + checksum: 1a6f68d138f105d17dd65349751515bd252ab0498c77255b8555478d28415600dde493f909eb718245047a993f838dfae546071e1687566ffb7b8c3e10c918d9 + languageName: node + linkType: hard + +"@stablelib/binary@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/binary@npm:1.0.1" + dependencies: + "@stablelib/int": ^1.0.1 + checksum: dca9b98eb1f56a4002b5b9e7351fbc49f3d8616af87007c01e833bd763ac89214eb5f3b7e18673c91ce59d4a0e4856a2eb661ace33d39f17fb1ad267271fccd8 + languageName: node + linkType: hard + +"@stablelib/bytes@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/bytes@npm:1.0.1" + checksum: 456267e08c3384abcb71d3ad3e97a6f99185ad754bac016f501ebea4e4886f37900589143b57e33bdbbf513a92fc89368c15dd4517e0540d0bdc79ecdf9dd087 + languageName: node + linkType: hard + +"@stablelib/chacha20poly1305@npm:1.0.1": + version: 1.0.1 + resolution: "@stablelib/chacha20poly1305@npm:1.0.1" + 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 + checksum: 81f1a32330838d31e4dc3144d76eba7244b56d9ea38c1f604f2c34d93ed8e67e9a6167d2cfd72254c13cc46dfc1f5ce5157b37939a575295d69d9144abb4e4fb + languageName: node + linkType: hard + +"@stablelib/chacha@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/chacha@npm:1.0.1" + dependencies: + "@stablelib/binary": ^1.0.1 + "@stablelib/wipe": ^1.0.1 + checksum: f061f36c4ca4bf177dd7cac11e7c65ced164f141b6065885141ae5a55f32e16ba0209aefcdcc966aef013f1da616ce901a3a80653b4b6f833cf7e3397ae2d6bd + languageName: node + linkType: hard + +"@stablelib/constant-time@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/constant-time@npm:1.0.1" + checksum: dba4f4bf508de2ff15f7f0cbd875e70391aa3ba3698290fe1ed2feb151c243ba08a90fc6fb390ec2230e30fcc622318c591a7c0e35dcb8150afb50c797eac3d7 + languageName: node + linkType: hard + +"@stablelib/ed25519@npm:^1.0.2": + version: 1.0.3 + resolution: "@stablelib/ed25519@npm:1.0.3" + dependencies: + "@stablelib/random": ^1.0.2 + "@stablelib/sha512": ^1.0.1 + "@stablelib/wipe": ^1.0.1 + checksum: e18279de078edac67396ba07dbb862dce0fe89efa8141c21a5b04108a29914bd51636019522323ca5097ec596a90b3028ed64e88ee009b0ac7de7c1ab6499ccb + languageName: node + linkType: hard + +"@stablelib/hash@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/hash@npm:1.0.1" + checksum: 3ff1f12d1a4082aaf4b6cdf40c2010aabe5c4209d3b40b97b5bbb0d9abc0ee94abdc545e57de0614afaea807ca0212ac870e247ec8f66cdce91ec39ce82948cf + languageName: node + linkType: hard + +"@stablelib/hkdf@npm:1.0.1": + version: 1.0.1 + resolution: "@stablelib/hkdf@npm:1.0.1" + dependencies: + "@stablelib/hash": ^1.0.1 + "@stablelib/hmac": ^1.0.1 + "@stablelib/wipe": ^1.0.1 + checksum: 9d45e303715a1835c8612b78e6c1b9d2b7463699b484241d8681fb5c17e0f2bbde5ce211c882134b64616a402e09177baeba80426995ff227b3654a155ab225d + languageName: node + linkType: hard + +"@stablelib/hmac@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/hmac@npm:1.0.1" + dependencies: + "@stablelib/constant-time": ^1.0.1 + "@stablelib/hash": ^1.0.1 + "@stablelib/wipe": ^1.0.1 + checksum: e3b93f7144a5846a6e30213278f7570de6d3f9d09131b95ce76d5c5c8bf37bf5d1830f2ee8d847555707271dbfd6e2461221719fd4d8b27ff06b9dd689c0ec21 + languageName: node + linkType: hard + +"@stablelib/int@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/int@npm:1.0.1" + checksum: 65bfbf50a382eea70c68e05366bf379cfceff8fbc076f1c267ef2f2411d7aed64fd140c415cb6c29f19a3910d3b8b7805d4b32ad5721a5007a8e744a808c7ae3 + languageName: node + linkType: hard + +"@stablelib/keyagreement@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/keyagreement@npm:1.0.1" + dependencies: + "@stablelib/bytes": ^1.0.1 + checksum: 3c8ec904dd50f72f3162f5447a0fa8f1d9ca6e24cd272d3dbe84971267f3b47f9bd5dc4e4eeedf3fbac2fe01f2d9277053e57c8e60db8c5544bfb35c62d290dd + languageName: node + linkType: hard + +"@stablelib/poly1305@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/poly1305@npm:1.0.1" + dependencies: + "@stablelib/constant-time": ^1.0.1 + "@stablelib/wipe": ^1.0.1 + checksum: 70b845bb0481c66b7ba3f3865d01e4c67a4dffc9616fc6de1d23efc5e828ec09de25f8e3be4e1f15a23b8e87e3036ee3d949c2fd4785047e6f7028bbec0ead18 + languageName: node + linkType: hard + +"@stablelib/random@npm:^1.0.1, @stablelib/random@npm:^1.0.2": + version: 1.0.2 + resolution: "@stablelib/random@npm:1.0.2" + dependencies: + "@stablelib/binary": ^1.0.1 + "@stablelib/wipe": ^1.0.1 + checksum: f5ace0a588dc4c21f01cb85837892d4c872e994ae77a58a8eb7dd61aa0b26fb1e9b46b0445e71af57d963ef7d9f5965c64258fc0d04df7b2947bc48f2d3560c5 + languageName: node + linkType: hard + +"@stablelib/sha256@npm:1.0.1": + version: 1.0.1 + resolution: "@stablelib/sha256@npm:1.0.1" + dependencies: + "@stablelib/binary": ^1.0.1 + "@stablelib/hash": ^1.0.1 + "@stablelib/wipe": ^1.0.1 + checksum: 38669871e1bda72eb537629ebceac1c72da8890273a9fbe088f81f6d14c1ec04e78be8c5b455380a06c67f8e62b2508e11e9063fcc257dbaa1b5c27ac756ba77 + languageName: node + linkType: hard + +"@stablelib/sha512@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/sha512@npm:1.0.1" + dependencies: + "@stablelib/binary": ^1.0.1 + "@stablelib/hash": ^1.0.1 + "@stablelib/wipe": ^1.0.1 + checksum: b7c82f7608a35948a2147a534c0c9afc80deab3fd5f72a2e27b2454e7c0c6944d39381be3abcb1b7fac5b824ba030ae3e98209d517a579c143d8ed63930b042f + languageName: node + linkType: hard + +"@stablelib/wipe@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/wipe@npm:1.0.1" + checksum: 287802eb146810a46ba72af70b82022caf83a8aeebde23605f5ee0decf64fe2b97a60c856e43b6617b5801287c30cfa863cfb0469e7fcde6f02d143cf0c6cbf4 + languageName: node + linkType: hard + +"@stablelib/x25519@npm:^1.0.3": + version: 1.0.3 + resolution: "@stablelib/x25519@npm:1.0.3" + dependencies: + "@stablelib/keyagreement": ^1.0.1 + "@stablelib/random": ^1.0.2 + "@stablelib/wipe": ^1.0.1 + checksum: f8537066b542b6770c1b5b2ae5ad0688d1b986e4bf818067c152c123a5471531987bbf024224f75f387f481ccc5b628e391e49e92102b8b1a3e2d449d6105402 + languageName: node + linkType: hard + "@stdlib/array-float32@npm:^0.0.x": version: 0.0.6 resolution: "@stdlib/array-float32@npm:0.0.6" @@ -10090,6 +10515,13 @@ __metadata: languageName: node linkType: hard +"@types/trusted-types@npm:^2.0.2": + version: 2.0.7 + resolution: "@types/trusted-types@npm:2.0.7" + checksum: 8e4202766a65877efcf5d5a41b7dd458480b36195e580a3b1085ad21e948bc417d55d6f8af1fd2a7ad008015d4117d5fdfe432731157da3c68678487174e4ba3 + languageName: node + linkType: hard + "@types/unist@npm:*, @types/unist@npm:^2.0.0": version: 2.0.6 resolution: "@types/unist@npm:2.0.6" @@ -10316,87 +10748,386 @@ __metadata: version: 2.14.2 resolution: "@videojs/http-streaming@npm:2.14.2" dependencies: - "@babel/runtime": ^7.12.5 - "@videojs/vhs-utils": 3.0.5 - aes-decrypter: 3.1.3 - global: ^4.4.0 - m3u8-parser: 4.7.1 - mpd-parser: 0.21.1 - mux.js: 6.0.1 - video.js: ^6 || ^7 - peerDependencies: - video.js: ^6 || ^7 - checksum: 917855c1498ba745d8147297516a8cef0800d8caa3024e4af1f7cb5a6cf087ea0387a031dd7ba5b7d515ba37fe671ec61b0330a17e2cc1854cd2a4b5706fb620 + "@babel/runtime": ^7.12.5 + "@videojs/vhs-utils": 3.0.5 + aes-decrypter: 3.1.3 + global: ^4.4.0 + m3u8-parser: 4.7.1 + mpd-parser: 0.21.1 + mux.js: 6.0.1 + video.js: ^6 || ^7 + peerDependencies: + video.js: ^6 || ^7 + checksum: 917855c1498ba745d8147297516a8cef0800d8caa3024e4af1f7cb5a6cf087ea0387a031dd7ba5b7d515ba37fe671ec61b0330a17e2cc1854cd2a4b5706fb620 + languageName: node + linkType: hard + +"@videojs/http-streaming@npm:2.15.1": + version: 2.15.1 + resolution: "@videojs/http-streaming@npm:2.15.1" + dependencies: + "@babel/runtime": ^7.12.5 + "@videojs/vhs-utils": 3.0.5 + aes-decrypter: 3.1.3 + global: ^4.4.0 + m3u8-parser: 4.8.0 + mpd-parser: ^0.22.1 + mux.js: 6.0.1 + video.js: ^6 || ^7 + peerDependencies: + video.js: ^6 || ^7 + checksum: 8b3bb74d67cbe0aa6f1ed6f8d38091ac2988d8f2200d20eab9fc1fdb71c33a435d614e2524b214054c7f98fdf15109b5414dfe0b05588b4a4251f76f197efef4 + languageName: node + linkType: hard + +"@videojs/vhs-utils@npm:3.0.5, @videojs/vhs-utils@npm:^3.0.4, @videojs/vhs-utils@npm:^3.0.5": + version: 3.0.5 + resolution: "@videojs/vhs-utils@npm:3.0.5" + dependencies: + "@babel/runtime": ^7.12.5 + global: ^4.4.0 + url-toolkit: ^2.2.1 + checksum: 637dc9a8848027eab4213d6e85439d216577d0cb0346767c15bbb07a5a730aa30545f0b5d7bfd636f40212e490f34bf103e331f0bc180b4d3c245e77f30b437f + languageName: node + linkType: hard + +"@videojs/xhr@npm:2.6.0": + version: 2.6.0 + resolution: "@videojs/xhr@npm:2.6.0" + dependencies: + "@babel/runtime": ^7.5.5 + global: ~4.4.0 + is-function: ^1.0.1 + checksum: 217d3d49f8088461959840f93f0b45d713e6d03254d89352e2eb4bfca9501eee03bac25d0ad878e976c9cbec902039210a86906ef57a5f8d86bfdfa1a3999def + languageName: node + linkType: hard + +"@vitejs/plugin-react@npm:^3.0.0": + version: 3.0.0 + resolution: "@vitejs/plugin-react@npm:3.0.0" + dependencies: + "@babel/core": ^7.20.5 + "@babel/plugin-transform-react-jsx-self": ^7.18.6 + "@babel/plugin-transform-react-jsx-source": ^7.19.6 + magic-string: ^0.27.0 + react-refresh: ^0.14.0 + peerDependencies: + vite: ^4.0.0 + checksum: 6004e4da8f705288ca9163ff5ba43bf7495c516af527d3b0c2799455cc2933667bd8a5be6759547525abafeecbde9d9bd25e52b0c793637ddf425a013d3435be + languageName: node + linkType: hard + +"@vitejs/plugin-react@npm:^3.0.1": + version: 3.1.0 + resolution: "@vitejs/plugin-react@npm:3.1.0" + dependencies: + "@babel/core": ^7.20.12 + "@babel/plugin-transform-react-jsx-self": ^7.18.6 + "@babel/plugin-transform-react-jsx-source": ^7.19.6 + magic-string: ^0.27.0 + react-refresh: ^0.14.0 + peerDependencies: + vite: ^4.1.0-beta.0 + checksum: 450fac79e67cba9e1581c860f78e687b44108ab4117663ef20db279316e03cd8e87f94fef376e27cc5e200bd52813dcc09b70ea570c7c7cc291fcd47eb260fbc + languageName: node + linkType: hard + +"@walletconnect/core@npm:2.11.1": + version: 2.11.1 + resolution: "@walletconnect/core@npm:2.11.1" + dependencies: + "@walletconnect/heartbeat": 1.2.1 + "@walletconnect/jsonrpc-provider": 1.0.13 + "@walletconnect/jsonrpc-types": 1.0.3 + "@walletconnect/jsonrpc-utils": 1.0.8 + "@walletconnect/jsonrpc-ws-connection": 1.0.14 + "@walletconnect/keyvaluestorage": ^1.1.1 + "@walletconnect/logger": ^2.0.1 + "@walletconnect/relay-api": ^1.0.9 + "@walletconnect/relay-auth": ^1.0.4 + "@walletconnect/safe-json": ^1.0.2 + "@walletconnect/time": ^1.0.2 + "@walletconnect/types": 2.11.1 + "@walletconnect/utils": 2.11.1 + events: ^3.3.0 + isomorphic-unfetch: 3.1.0 + lodash.isequal: 4.5.0 + uint8arrays: ^3.1.0 + checksum: ab32b6355f52320bf17553fd6326a2de7674832e96e4fd521e2186692ac77a286f1186594d0cefae996c09306c2d183b64647a5b87b08bc65fa31f6a2e47ca96 + languageName: node + linkType: hard + +"@walletconnect/environment@npm:^1.0.1": + version: 1.0.1 + resolution: "@walletconnect/environment@npm:1.0.1" + dependencies: + tslib: 1.14.1 + checksum: a18731d857bdca73910147e59992cef3c6e292c37ab3d3013307bd706f06cb216aa804f0f48b25a78df6493ad8127e633629f4b50acb4f69d3765d6ac0524f68 + languageName: node + linkType: hard + +"@walletconnect/events@npm:^1.0.1": + version: 1.0.1 + resolution: "@walletconnect/events@npm:1.0.1" + dependencies: + keyvaluestorage-interface: ^1.0.0 + tslib: 1.14.1 + checksum: d28aa4dcc981bdaf38f0aeed979731ca793cead7e7a4ee730a9146d99d89db09a86c8e3192ed860638283276961c0723ba00cf3b8776f0692b36ec7df6c01be4 + languageName: node + linkType: hard + +"@walletconnect/heartbeat@npm:1.2.1": + version: 1.2.1 + resolution: "@walletconnect/heartbeat@npm:1.2.1" + dependencies: + "@walletconnect/events": ^1.0.1 + "@walletconnect/time": ^1.0.2 + tslib: 1.14.1 + checksum: df4d492a2d336283f834bc205c09b795f85cd507a61b14745dc2124e510a250fefbd83d51216f93df2e0aa0cf8120134db2679de8019eddd63877e9928997952 + languageName: node + linkType: hard + +"@walletconnect/jsonrpc-http-connection@npm:^1.0.7": + version: 1.0.7 + resolution: "@walletconnect/jsonrpc-http-connection@npm:1.0.7" + dependencies: + "@walletconnect/jsonrpc-utils": ^1.0.6 + "@walletconnect/safe-json": ^1.0.1 + cross-fetch: ^3.1.4 + tslib: 1.14.1 + checksum: c4efcd46d4b344727ca6879badca2c2f855499ac76c8dace5d118f4423167adce34e41a99f3dcab0febb945ce51c6ef0ac8556567d5e38d8dad864b131eb5b00 + languageName: node + linkType: hard + +"@walletconnect/jsonrpc-provider@npm:1.0.13": + version: 1.0.13 + resolution: "@walletconnect/jsonrpc-provider@npm:1.0.13" + dependencies: + "@walletconnect/jsonrpc-utils": ^1.0.8 + "@walletconnect/safe-json": ^1.0.2 + tslib: 1.14.1 + checksum: 497dfdd9f988432f171bc98336f3583c679059f0a166f95d6e51c8e1937c17abd9a5fd3aadfcebf6964bae14edd1e05fb0453e370d6e3bbc7ff4919fcad7c478 + languageName: node + linkType: hard + +"@walletconnect/jsonrpc-types@npm:1.0.3, @walletconnect/jsonrpc-types@npm:^1.0.2, @walletconnect/jsonrpc-types@npm:^1.0.3": + version: 1.0.3 + resolution: "@walletconnect/jsonrpc-types@npm:1.0.3" + dependencies: + keyvaluestorage-interface: ^1.0.0 + tslib: 1.14.1 + checksum: 26e6f1d8f4207328d3df465c36d0d67844772863dc8e9e78e6cfec417cfc359300eab049d99ea558982b3f0948f4ca26b75253bdf635ffd82ffe30a5276b790c + languageName: node + linkType: hard + +"@walletconnect/jsonrpc-utils@npm:1.0.8, @walletconnect/jsonrpc-utils@npm:^1.0.6, @walletconnect/jsonrpc-utils@npm:^1.0.7, @walletconnect/jsonrpc-utils@npm:^1.0.8": + version: 1.0.8 + resolution: "@walletconnect/jsonrpc-utils@npm:1.0.8" + dependencies: + "@walletconnect/environment": ^1.0.1 + "@walletconnect/jsonrpc-types": ^1.0.3 + tslib: 1.14.1 + checksum: f43a85dfce8150c3e3d1f009e8d8241ab8e10b026ea435f0918edf4db6b3a17586ba9d9c54a93cc61e4d3c685611e5bd5954fc377a581af503acd38e6d84c2ef + languageName: node + linkType: hard + +"@walletconnect/jsonrpc-ws-connection@npm:1.0.14": + version: 1.0.14 + resolution: "@walletconnect/jsonrpc-ws-connection@npm:1.0.14" + dependencies: + "@walletconnect/jsonrpc-utils": ^1.0.6 + "@walletconnect/safe-json": ^1.0.2 + events: ^3.3.0 + ws: ^7.5.1 + checksum: a401e60b19390098183ef1b2a7b3e15c4dd3c64f9ac87fd2bbc0ae1f7fb31539ba542374ca021193efc4a2ae59fa3b04e588aed98cdf5c364f50524403d50f9f + languageName: node + linkType: hard + +"@walletconnect/keyvaluestorage@npm:^1.1.1": + version: 1.1.1 + resolution: "@walletconnect/keyvaluestorage@npm:1.1.1" + dependencies: + "@walletconnect/safe-json": ^1.0.1 + idb-keyval: ^6.2.1 + unstorage: ^1.9.0 + peerDependencies: + "@react-native-async-storage/async-storage": 1.x + peerDependenciesMeta: + "@react-native-async-storage/async-storage": + optional: true + checksum: 7f85cb83963153417745367742070ccb78e03bd62adb549de57a7d5fae7bcfbd9a8f42b2f445ca76a3817ffacacc69d85bbf67757c3616ee7b3525f2f8a0faea + languageName: node + linkType: hard + +"@walletconnect/logger@npm:^2.0.1": + version: 2.0.1 + resolution: "@walletconnect/logger@npm:2.0.1" + dependencies: + pino: 7.11.0 + tslib: 1.14.1 + checksum: b686679d176d5d22a3441d93e71be2652e6c447682a6d6f014baf7c2d9dcd23b93e2f434d4410e33cc532d068333f6b3c1d899aeb0d6f60cc296ed17f57b0c2c + languageName: node + linkType: hard + +"@walletconnect/modal-core@npm:2.6.2": + version: 2.6.2 + resolution: "@walletconnect/modal-core@npm:2.6.2" + dependencies: + valtio: 1.11.2 + checksum: 94daceba50c323b06ecbeac2968d9f0972f327359c6118887c6526cd64006249b12f64322d71bc6c4a2b928436ecc89cf3d3af706511fcdc264c1f4b34a2dd5d + languageName: node + linkType: hard + +"@walletconnect/modal-ui@npm:2.6.2": + version: 2.6.2 + resolution: "@walletconnect/modal-ui@npm:2.6.2" + dependencies: + "@walletconnect/modal-core": 2.6.2 + lit: 2.8.0 + motion: 10.16.2 + qrcode: 1.5.3 + checksum: cd1ec0205eb491e529670599d3dd26f6782d7c5a99d5594bf6949a8c760c1c5f4eb6ed72b8662450774fe4e2dd47678f2c05145c8f2494bd7153446ddf4bd7ed + languageName: node + linkType: hard + +"@walletconnect/modal@npm:^2.6.2": + version: 2.6.2 + resolution: "@walletconnect/modal@npm:2.6.2" + dependencies: + "@walletconnect/modal-core": 2.6.2 + "@walletconnect/modal-ui": 2.6.2 + checksum: 68b354d49960b96d22de0e47a3801df27c01a3e96ec5fbde3ca6df1344ca2b20668b0c4d58fe1803f5670ac7b7b4c6f5b7b405e354f5f9eaff5cca147c13de9c + languageName: node + linkType: hard + +"@walletconnect/relay-api@npm:^1.0.9": + version: 1.0.9 + resolution: "@walletconnect/relay-api@npm:1.0.9" + dependencies: + "@walletconnect/jsonrpc-types": ^1.0.2 + tslib: 1.14.1 + checksum: 5870579b6552f1ce7351878f1acb8386b0c11288c64d39133c7cee5040feeb7ccf9114228d97a59749d60366ad107b097d656407d534567c24f5d3878ea6e246 + languageName: node + linkType: hard + +"@walletconnect/relay-auth@npm:^1.0.4": + version: 1.0.4 + resolution: "@walletconnect/relay-auth@npm:1.0.4" + dependencies: + "@stablelib/ed25519": ^1.0.2 + "@stablelib/random": ^1.0.1 + "@walletconnect/safe-json": ^1.0.1 + "@walletconnect/time": ^1.0.2 + tslib: 1.14.1 + uint8arrays: ^3.0.0 + checksum: 35b3229d7b57e74fdb8fe6827d8dd8291dc60bacda880a57b2acb47a34d38f12be46c971c9eff361eb4073e896648b550de7a7a3852ef3752f9619c08dfba891 + languageName: node + linkType: hard + +"@walletconnect/safe-json@npm:^1.0.1, @walletconnect/safe-json@npm:^1.0.2": + version: 1.0.2 + resolution: "@walletconnect/safe-json@npm:1.0.2" + dependencies: + tslib: 1.14.1 + checksum: fee03fcc70adb5635ab9419ea6ec6555aa2467bef650ad3b9526451c3a5cf247836db0f3ae3bb435d2e585d99e50c2ebe7dc9c429cfa3df900cf3fe4bd06d37f + languageName: node + linkType: hard + +"@walletconnect/sign-client@npm:2.11.1": + version: 2.11.1 + resolution: "@walletconnect/sign-client@npm:2.11.1" + dependencies: + "@walletconnect/core": 2.11.1 + "@walletconnect/events": ^1.0.1 + "@walletconnect/heartbeat": 1.2.1 + "@walletconnect/jsonrpc-utils": 1.0.8 + "@walletconnect/logger": ^2.0.1 + "@walletconnect/time": ^1.0.2 + "@walletconnect/types": 2.11.1 + "@walletconnect/utils": 2.11.1 + events: ^3.3.0 + checksum: 4d7f0c95d72245e00a1485b59a1621ea245330689172cb54d386a5b85e2a49a66a690fe5601e03f8e1bb58e998d9f0cf7322d0c0705856e29e88bee9d706ee3f + languageName: node + linkType: hard + +"@walletconnect/time@npm:^1.0.2": + version: 1.0.2 + resolution: "@walletconnect/time@npm:1.0.2" + dependencies: + tslib: 1.14.1 + checksum: e3fc0113ca9e7ecedfc65f9e1517196682d5ffcda60750f51073b8d704719a17fea75da8b242c804bfa5b994707723043892a2db3cc86988b190b7b8711fe3c0 languageName: node linkType: hard -"@videojs/http-streaming@npm:2.15.1": - version: 2.15.1 - resolution: "@videojs/http-streaming@npm:2.15.1" +"@walletconnect/types@npm:2.11.1": + version: 2.11.1 + resolution: "@walletconnect/types@npm:2.11.1" dependencies: - "@babel/runtime": ^7.12.5 - "@videojs/vhs-utils": 3.0.5 - aes-decrypter: 3.1.3 - global: ^4.4.0 - m3u8-parser: 4.8.0 - mpd-parser: ^0.22.1 - mux.js: 6.0.1 - video.js: ^6 || ^7 - peerDependencies: - video.js: ^6 || ^7 - checksum: 8b3bb74d67cbe0aa6f1ed6f8d38091ac2988d8f2200d20eab9fc1fdb71c33a435d614e2524b214054c7f98fdf15109b5414dfe0b05588b4a4251f76f197efef4 + "@walletconnect/events": ^1.0.1 + "@walletconnect/heartbeat": 1.2.1 + "@walletconnect/jsonrpc-types": 1.0.3 + "@walletconnect/keyvaluestorage": ^1.1.1 + "@walletconnect/logger": ^2.0.1 + events: ^3.3.0 + checksum: c24f75d5f93eb5dd783108efd9a672c200b1ef8ab16d64ac2764348c1d17fb4946fe475bf9a590ebeb1f79e0cdd3c957d6700ef0fff140f59d34a7dc5ca5cbd5 languageName: node linkType: hard -"@videojs/vhs-utils@npm:3.0.5, @videojs/vhs-utils@npm:^3.0.4, @videojs/vhs-utils@npm:^3.0.5": - version: 3.0.5 - resolution: "@videojs/vhs-utils@npm:3.0.5" +"@walletconnect/universal-provider@npm:^2.11.1": + version: 2.11.1 + resolution: "@walletconnect/universal-provider@npm:2.11.1" dependencies: - "@babel/runtime": ^7.12.5 - global: ^4.4.0 - url-toolkit: ^2.2.1 - checksum: 637dc9a8848027eab4213d6e85439d216577d0cb0346767c15bbb07a5a730aa30545f0b5d7bfd636f40212e490f34bf103e331f0bc180b4d3c245e77f30b437f + "@walletconnect/jsonrpc-http-connection": ^1.0.7 + "@walletconnect/jsonrpc-provider": 1.0.13 + "@walletconnect/jsonrpc-types": ^1.0.2 + "@walletconnect/jsonrpc-utils": ^1.0.7 + "@walletconnect/logger": ^2.0.1 + "@walletconnect/sign-client": 2.11.1 + "@walletconnect/types": 2.11.1 + "@walletconnect/utils": 2.11.1 + events: ^3.3.0 + checksum: 2fd7988efb25b26964630b907ae328a8dc25915b9434a98ca53317334538d5c31a724d97164ecf1158b25a77c59a260d77f358199147744fc68203b7e4538800 languageName: node linkType: hard -"@videojs/xhr@npm:2.6.0": - version: 2.6.0 - resolution: "@videojs/xhr@npm:2.6.0" +"@walletconnect/utils@npm:2.11.1": + version: 2.11.1 + resolution: "@walletconnect/utils@npm:2.11.1" dependencies: - "@babel/runtime": ^7.5.5 - global: ~4.4.0 - is-function: ^1.0.1 - checksum: 217d3d49f8088461959840f93f0b45d713e6d03254d89352e2eb4bfca9501eee03bac25d0ad878e976c9cbec902039210a86906ef57a5f8d86bfdfa1a3999def + "@stablelib/chacha20poly1305": 1.0.1 + "@stablelib/hkdf": 1.0.1 + "@stablelib/random": ^1.0.2 + "@stablelib/sha256": 1.0.1 + "@stablelib/x25519": ^1.0.3 + "@walletconnect/relay-api": ^1.0.9 + "@walletconnect/safe-json": ^1.0.2 + "@walletconnect/time": ^1.0.2 + "@walletconnect/types": 2.11.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 + checksum: d3b90a4c1060009f1bb636474e850c051ba92684a6cb863c6e3458164930c275e3e5d2f776c540fa66be6df59546a2fd668122a1de9d5bcf511ec62a0e93fcd8 languageName: node linkType: hard -"@vitejs/plugin-react@npm:^3.0.0": - version: 3.0.0 - resolution: "@vitejs/plugin-react@npm:3.0.0" +"@walletconnect/window-getters@npm:^1.0.1": + version: 1.0.1 + resolution: "@walletconnect/window-getters@npm:1.0.1" dependencies: - "@babel/core": ^7.20.5 - "@babel/plugin-transform-react-jsx-self": ^7.18.6 - "@babel/plugin-transform-react-jsx-source": ^7.19.6 - magic-string: ^0.27.0 - react-refresh: ^0.14.0 - peerDependencies: - vite: ^4.0.0 - checksum: 6004e4da8f705288ca9163ff5ba43bf7495c516af527d3b0c2799455cc2933667bd8a5be6759547525abafeecbde9d9bd25e52b0c793637ddf425a013d3435be + tslib: 1.14.1 + checksum: fae312c4e1be5574d97f071de58e6aa0d0296869761499caf9d4a9a5fd2643458af32233a2120521b00873a599ff88457d405bd82ced5fb5bd6dc3191c07a3e5 languageName: node linkType: hard -"@vitejs/plugin-react@npm:^3.0.1": - version: 3.1.0 - resolution: "@vitejs/plugin-react@npm:3.1.0" +"@walletconnect/window-metadata@npm:^1.0.1": + version: 1.0.1 + resolution: "@walletconnect/window-metadata@npm:1.0.1" dependencies: - "@babel/core": ^7.20.12 - "@babel/plugin-transform-react-jsx-self": ^7.18.6 - "@babel/plugin-transform-react-jsx-source": ^7.19.6 - magic-string: ^0.27.0 - react-refresh: ^0.14.0 - peerDependencies: - vite: ^4.1.0-beta.0 - checksum: 450fac79e67cba9e1581c860f78e687b44108ab4117663ef20db279316e03cd8e87f94fef376e27cc5e200bd52813dcc09b70ea570c7c7cc291fcd47eb260fbc + "@walletconnect/window-getters": ^1.0.1 + tslib: 1.14.1 + checksum: e82aea7195c6fe95c00e87bb38051c5549838c2e8302da94f1afa48206f79f0b620166c9820f847494505d282d1568e2086a1561b0493d2d0a1fa115f9106aef languageName: node linkType: hard @@ -10967,6 +11698,16 @@ __metadata: languageName: node linkType: hard +"anymatch@npm:^3.1.3": + version: 3.1.3 + resolution: "anymatch@npm:3.1.3" + dependencies: + normalize-path: ^3.0.0 + picomatch: ^2.0.4 + checksum: 3e044fd6d1d26545f235a9fe4d7a534e2029d8e59fa7fd9f2a6eb21230f6b5380ea1eaf55136e60cbf8e613544b3b766e7a6fa2102e2a3a117505466e3025dc2 + languageName: node + linkType: hard + "aos@npm:^2.3.4": version: 2.3.4 resolution: "aos@npm:2.3.4" @@ -11233,6 +11974,13 @@ __metadata: languageName: node linkType: hard +"atomic-sleep@npm:^1.0.0": + version: 1.0.0 + resolution: "atomic-sleep@npm:1.0.0" + checksum: b95275afb2f80732f22f43a60178430c468906a415a7ff18bcd0feeebc8eec3930b51250aeda91a476062a90e07132b43a1794e8d8ffcf9b650e8139be75fa36 + languageName: node + linkType: hard + "attr-accept@npm:^2.2.2": version: 2.2.2 resolution: "attr-accept@npm:2.2.2" @@ -12152,6 +12900,15 @@ __metadata: languageName: node linkType: hard +"citty@npm:^0.1.5": + version: 0.1.5 + resolution: "citty@npm:0.1.5" + dependencies: + consola: ^3.2.3 + checksum: 9a2379fd01345500f1eb2bcc33f5e60be8379551091b43a3ba4e3a39c63a92e41453dea542ab9f2528fe9e19177ff1453c01a845a74529292af34fdafd23a5f6 + languageName: node + linkType: hard + "classlist-polyfill@npm:^1.0.3": version: 1.2.0 resolution: "classlist-polyfill@npm:1.2.0" @@ -12229,6 +12986,17 @@ __metadata: languageName: node linkType: hard +"clipboardy@npm:^4.0.0": + version: 4.0.0 + resolution: "clipboardy@npm:4.0.0" + dependencies: + execa: ^8.0.1 + is-wsl: ^3.1.0 + is64bit: ^2.0.0 + checksum: ac7fa4438451d4a509fd7163505c08be92087c1a0ab8f54f8063eb04a69191ded1b59333344e2fd60bad9688e2a3dd69e50a813bf05ebf8369fa8bf65a0f47a2 + languageName: node + linkType: hard + "cliui@npm:^6.0.0": version: 6.0.0 resolution: "cliui@npm:6.0.0" @@ -12269,6 +13037,13 @@ __metadata: languageName: node linkType: hard +"cluster-key-slot@npm:^1.1.0": + version: 1.1.2 + resolution: "cluster-key-slot@npm:1.1.2" + checksum: be0ad2d262502adc998597e83f9ded1b80f827f0452127c5a37b22dfca36bab8edf393f7b25bb626006fb9fb2436106939ede6d2d6ecf4229b96a47f27edd681 + languageName: node + linkType: hard + "color-convert@npm:^1.9.0": version: 1.9.3 resolution: "color-convert@npm:1.9.3" @@ -12453,6 +13228,13 @@ __metadata: languageName: node linkType: hard +"consola@npm:^3.2.3": + version: 3.2.3 + resolution: "consola@npm:3.2.3" + checksum: 32ec70e177dd2385c42e38078958cc7397be91db21af90c6f9faa0b16168b49b1c61d689338604bbb2d64370b9347a35f42a9197663a913d3a405bb0ce728499 + languageName: node + linkType: hard + "console-control-strings@npm:^1.1.0": version: 1.1.0 resolution: "console-control-strings@npm:1.1.0" @@ -12510,6 +13292,13 @@ __metadata: languageName: node linkType: hard +"cookie-es@npm:^1.0.0": + version: 1.0.0 + resolution: "cookie-es@npm:1.0.0" + checksum: e8721cf4d38f3e44049c9118874b323f4f674b1c5cef84a2b888f5bf86ad720ad17b51b43150cad7535a375c24e2921da603801ad28aa6125c3d36c031b41468 + languageName: node + linkType: hard + "cookie-signature@npm:1.0.6": version: 1.0.6 resolution: "cookie-signature@npm:1.0.6" @@ -12666,6 +13455,15 @@ __metadata: languageName: node linkType: hard +"cross-fetch@npm:^3.1.4": + version: 3.1.8 + resolution: "cross-fetch@npm:3.1.8" + dependencies: + node-fetch: ^2.6.12 + checksum: 78f993fa099eaaa041122ab037fe9503ecbbcb9daef234d1d2e0b9230a983f64d645d088c464e21a247b825a08dc444a6e7064adfa93536d3a9454b4745b3632 + languageName: node + linkType: hard + "cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": version: 7.0.3 resolution: "cross-spawn@npm:7.0.3" @@ -12677,6 +13475,13 @@ __metadata: languageName: node linkType: hard +"crossws@npm:^0.1.0": + version: 0.1.1 + resolution: "crossws@npm:0.1.1" + checksum: 4cd8eadb497d852998b770d54a10779ba9e0c38c823d141c35040c7a7afc7a6fcd274ce82a8614e992e3f71cb5e41c71a01ee0923ab6e1bec215842404555d7d + languageName: node + linkType: hard + "crypto-js@npm:^3.1.9-1": version: 3.3.0 resolution: "crypto-js@npm:3.3.0" @@ -13017,6 +13822,13 @@ __metadata: languageName: node linkType: hard +"decode-uri-component@npm:^0.2.2": + version: 0.2.2 + resolution: "decode-uri-component@npm:0.2.2" + checksum: 95476a7d28f267292ce745eac3524a9079058bbb35767b76e3ee87d42e34cd0275d2eb19d9d08c3e167f97556e8a2872747f5e65cbebcac8b0c98d83e285f139 + languageName: node + linkType: hard + "deep-eql@npm:^3.0.1": version: 3.0.1 resolution: "deep-eql@npm:3.0.1" @@ -13090,6 +13902,13 @@ __metadata: languageName: node linkType: hard +"defu@npm:^6.1.3, defu@npm:^6.1.4": + version: 6.1.4 + resolution: "defu@npm:6.1.4" + checksum: 40e3af6338f195ac1564f53d1887fa2d0429ac7e8c081204bc4d29191180059d3952b5f4e08fe5df8d59eb873aa26e9c88b56d4fac699673d4a372c93620b229 + languageName: node + linkType: hard + "del@npm:^6.0.0": version: 6.1.1 resolution: "del@npm:6.1.1" @@ -13127,6 +13946,13 @@ __metadata: languageName: node linkType: hard +"denque@npm:^2.1.0": + version: 2.1.0 + resolution: "denque@npm:2.1.0" + checksum: 1d4ae1d05e59ac3a3481e7b478293f4b4c813819342273f3d5b826c7ffa9753c520919ba264f377e09108d24ec6cf0ec0ac729a5686cbb8f32d797126c5dae74 + languageName: node + linkType: hard + "depd@npm:2.0.0": version: 2.0.0 resolution: "depd@npm:2.0.0" @@ -13170,6 +13996,13 @@ __metadata: languageName: node linkType: hard +"destr@npm:^2.0.1, destr@npm:^2.0.2": + version: 2.0.2 + resolution: "destr@npm:2.0.2" + checksum: cb63dd477d1c323f95650ce7784f1497466d68150ac0fddd6c99652be45c9dcb997d53fd5eb6c6fda6c0b2a5e5b4fc7fa3c3e18dace3d810ba4cf45d8b55bdd6 + languageName: node + linkType: hard + "destroy@npm:1.2.0": version: 1.2.0 resolution: "destroy@npm:1.2.0" @@ -13177,6 +14010,13 @@ __metadata: languageName: node linkType: hard +"detect-browser@npm:5.3.0": + version: 5.3.0 + resolution: "detect-browser@npm:5.3.0" + checksum: dd6e08d55da1d9e0f22510ac79872078ae03d9dfa13c5e66c96baedc1c86567345a88f96949161f6be8f3e0fafa93bf179bdb1cd311b14f5f163112fcc70ab49 + languageName: node + linkType: hard + "detect-indent@npm:^6.0.0, detect-indent@npm:^6.1.0": version: 6.1.0 resolution: "detect-indent@npm:6.1.0" @@ -13184,6 +14024,15 @@ __metadata: languageName: node linkType: hard +"detect-libc@npm:^1.0.3": + version: 1.0.3 + resolution: "detect-libc@npm:1.0.3" + bin: + detect-libc: ./bin/detect-libc.js + checksum: daaaed925ffa7889bd91d56e9624e6c8033911bb60f3a50a74a87500680652969dbaab9526d1e200a4c94acf80fc862a22131841145a0a8482d60a99c24f4a3e + languageName: node + linkType: hard + "detect-node-es@npm:^1.1.0": version: 1.1.0 resolution: "detect-node-es@npm:1.1.0" @@ -13354,6 +14203,13 @@ __metadata: languageName: node linkType: hard +"dijkstrajs@npm:^1.0.1": + version: 1.0.3 + resolution: "dijkstrajs@npm:1.0.3" + checksum: 82ff2c6633f235dd5e6bed04ec62cdfb1f327b4d7534557bd52f18991313f864ee50654543072fff4384a92b643ada4d5452f006b7098dbdfad6c8744a8c9e08 + languageName: node + linkType: hard + "dir-glob@npm:^3.0.1": version: 3.0.1 resolution: "dir-glob@npm:3.0.1" @@ -13562,6 +14418,18 @@ __metadata: languageName: node linkType: hard +"duplexify@npm:^4.1.2": + version: 4.1.2 + resolution: "duplexify@npm:4.1.2" + dependencies: + end-of-stream: ^1.4.1 + inherits: ^2.0.3 + readable-stream: ^3.1.1 + stream-shift: ^1.0.0 + checksum: 964376c61c0e92f6ed0694b3ba97c84f199413dc40ab8dfdaef80b7a7f4982fcabf796214e28ed614a5bc1ec45488a29b81e7d46fa3f5ddf65bcb118c20145ad + languageName: node + linkType: hard + "dynamic-dedupe@npm:^0.3.0": version: 0.3.0 resolution: "dynamic-dedupe@npm:0.3.0" @@ -13655,6 +14523,13 @@ __metadata: languageName: node linkType: hard +"encode-utf8@npm:^1.0.3": + version: 1.0.3 + resolution: "encode-utf8@npm:1.0.3" + checksum: 550224bf2a104b1d355458c8a82e9b4ea07f9fc78387bc3a49c151b940ad26473de8dc9e121eefc4e84561cb0b46de1e4cd2bc766f72ee145e9ea9541482817f + languageName: node + linkType: hard + "encodeurl@npm:~1.0.2": version: 1.0.2 resolution: "encodeurl@npm:1.0.2" @@ -14544,7 +15419,7 @@ __metadata: languageName: node linkType: hard -"events@npm:^3.2.0": +"events@npm:^3.2.0, events@npm:^3.3.0": version: 3.3.0 resolution: "events@npm:3.3.0" checksum: f6f487ad2198aa41d878fa31452f1a3c00958f46e9019286ff4787c84aac329332ab45c9cdc8c445928fc6d7ded294b9e005a7fce9426488518017831b272780 @@ -14596,6 +15471,23 @@ __metadata: languageName: node linkType: hard +"execa@npm:^8.0.1": + version: 8.0.1 + resolution: "execa@npm:8.0.1" + dependencies: + cross-spawn: ^7.0.3 + get-stream: ^8.0.1 + human-signals: ^5.0.0 + is-stream: ^3.0.0 + merge-stream: ^2.0.0 + npm-run-path: ^5.1.0 + onetime: ^6.0.0 + signal-exit: ^4.1.0 + strip-final-newline: ^3.0.0 + checksum: cac1bf86589d1d9b73bdc5dda65c52012d1a9619c44c526891956745f7b366ca2603d29fe3f7460bacc2b48c6eab5d6a4f7afe0534b31473d3708d1265545e1f + languageName: node + linkType: hard + "express@npm:^4.17.3, express@npm:^4.18.2": version: 4.18.2 resolution: "express@npm:4.18.2" @@ -14737,6 +15629,13 @@ __metadata: languageName: node linkType: hard +"fast-redact@npm:^3.0.0": + version: 3.3.0 + resolution: "fast-redact@npm:3.3.0" + checksum: 3f7becc70a5a2662a9cbfdc52a4291594f62ae998806ee00315af307f32d9559dbf512146259a22739ee34401950ef47598c1f4777d33b0ed5027203d67f549c + languageName: node + linkType: hard + "fastest-levenshtein@npm:^1.0.12, fastest-levenshtein@npm:^1.0.16": version: 1.0.16 resolution: "fastest-levenshtein@npm:1.0.16" @@ -14878,6 +15777,13 @@ __metadata: languageName: node linkType: hard +"filter-obj@npm:^1.1.0": + version: 1.1.0 + resolution: "filter-obj@npm:1.1.0" + checksum: cf2104a7c45ff48e7f505b78a3991c8f7f30f28bd8106ef582721f321f1c6277f7751aacd5d83026cb079d9d5091082f588d14a72e7c5d720ece79118fa61e10 + languageName: node + linkType: hard + "finalhandler@npm:1.2.0": version: 1.2.0 resolution: "finalhandler@npm:1.2.0" @@ -15272,6 +16178,13 @@ __metadata: languageName: node linkType: hard +"get-port-please@npm:^3.1.2": + version: 3.1.2 + resolution: "get-port-please@npm:3.1.2" + checksum: 8e65b56459ead2f31c446d76bb8eb639c33e04e72b07a4dd5d8acc39738f12962591e90b2befecf10492844d0d11c2122c281f5204ee48692d4a8ba0ec68733a + languageName: node + linkType: hard + "get-port@npm:^5.1.1": version: 5.1.1 resolution: "get-port@npm:5.1.1" @@ -15286,6 +16199,13 @@ __metadata: languageName: node linkType: hard +"get-stream@npm:^8.0.1": + version: 8.0.1 + resolution: "get-stream@npm:8.0.1" + checksum: 01e3d3cf29e1393f05f44d2f00445c5f9ec3d1c49e8179b31795484b9c117f4c695e5e07b88b50785d5c8248a788c85d9913a79266fc77e3ef11f78f10f1b974 + languageName: node + linkType: hard + "get-symbol-description@npm:^1.0.0": version: 1.0.0 resolution: "get-symbol-description@npm:1.0.0" @@ -15626,6 +16546,23 @@ __metadata: languageName: node linkType: hard +"h3@npm:^1.10.1, h3@npm:^1.8.2": + version: 1.10.1 + resolution: "h3@npm:1.10.1" + dependencies: + cookie-es: ^1.0.0 + defu: ^6.1.4 + destr: ^2.0.2 + iron-webcrypto: ^1.0.0 + ohash: ^1.1.3 + radix3: ^1.1.0 + ufo: ^1.3.2 + uncrypto: ^0.1.3 + unenv: ^1.9.0 + checksum: f2849e08610adc6d65259142336cfee0ad42d6e1342d87f396a6b53a8bb8e9919dac5263e8403d5a1d0b8774150b96f9bf2b3c6c836017ca80152559c0195b80 + languageName: node + linkType: hard + "handlebars@npm:^4.7.7": version: 4.7.7 resolution: "handlebars@npm:4.7.7" @@ -15781,6 +16718,13 @@ __metadata: languageName: node linkType: hard +"hey-listen@npm:^1.0.8": + version: 1.0.8 + resolution: "hey-listen@npm:1.0.8" + checksum: 6bad60b367688f5348e25e7ca3276a74b59ac5a09b0455e6ff8ab7d4a9e38cd2116c708a7dcd8a954d27253ce1d8717ec891d175723ea739885b828cf44e4072 + languageName: node + linkType: hard + "history@npm:^5.3.0": version: 5.3.0 resolution: "history@npm:5.3.0" @@ -15871,6 +16815,13 @@ __metadata: languageName: node linkType: hard +"http-shutdown@npm:^1.2.2": + version: 1.2.2 + resolution: "http-shutdown@npm:1.2.2" + checksum: 5dccd94f4fe4f51f9cbd7ec4586121160cd6470728e581662ea8032724440d891c4c92b8210b871ac468adadb3c99c40098ad0f752a781a550abae49dfa26206 + languageName: node + linkType: hard + "https-proxy-agent@npm:^4.0.0": version: 4.0.0 resolution: "https-proxy-agent@npm:4.0.0" @@ -15905,6 +16856,13 @@ __metadata: languageName: node linkType: hard +"human-signals@npm:^5.0.0": + version: 5.0.0 + resolution: "human-signals@npm:5.0.0" + checksum: 6504560d5ed91444f16bea3bd9dfc66110a339442084e56c3e7fa7bbdf3f406426d6563d662bdce67064b165eac31eeabfc0857ed170aaa612cf14ec9f9a464c + languageName: node + linkType: hard + "humanize-ms@npm:^1.2.1": version: 1.2.1 resolution: "humanize-ms@npm:1.2.1" @@ -15950,6 +16908,13 @@ __metadata: languageName: node linkType: hard +"idb-keyval@npm:^6.2.1": + version: 6.2.1 + resolution: "idb-keyval@npm:6.2.1" + checksum: 7c0836f832096086e99258167740181132a71dd2694c8b8454a4f5ec69114ba6d70983115153306f0b6de1c8d3bad04f67eed3dff8f50c96815b9985d6d78470 + languageName: node + linkType: hard + "ieee754@npm:^1.1.13, ieee754@npm:^1.2.1": version: 1.2.1 resolution: "ieee754@npm:1.2.1" @@ -16165,6 +17130,23 @@ __metadata: languageName: node linkType: hard +"ioredis@npm:^5.3.2": + version: 5.3.2 + resolution: "ioredis@npm:5.3.2" + dependencies: + "@ioredis/commands": ^1.1.1 + cluster-key-slot: ^1.1.0 + debug: ^4.3.4 + denque: ^2.1.0 + lodash.defaults: ^4.2.0 + lodash.isarguments: ^3.1.0 + redis-errors: ^1.2.0 + redis-parser: ^3.0.0 + standard-as-callback: ^2.1.0 + checksum: 9a23559133e862a768778301efb68ae8c2af3c33562174b54a4c2d6574b976e85c75a4c34857991af733e35c48faf4c356e7daa8fb0a3543d85ff1768c8754bc + languageName: node + linkType: hard + "ip@npm:^1.1.5": version: 1.1.8 resolution: "ip@npm:1.1.8" @@ -16186,6 +17168,13 @@ __metadata: languageName: node linkType: hard +"iron-webcrypto@npm:^1.0.0": + version: 1.0.0 + resolution: "iron-webcrypto@npm:1.0.0" + checksum: bbd96cbbfec7d072296bc7464763b96555bdadb12aca50f1f1c7e4fcdc6acb102bc3488333e924f94404dd50eda24f84b67ad28323b9138ec7255a023e8dc19e + languageName: node + linkType: hard + "is-absolute-url@npm:^3.0.0": version: 3.0.3 resolution: "is-absolute-url@npm:3.0.3" @@ -16312,6 +17301,15 @@ __metadata: languageName: node linkType: hard +"is-docker@npm:^3.0.0": + version: 3.0.0 + resolution: "is-docker@npm:3.0.0" + bin: + is-docker: cli.js + checksum: b698118f04feb7eaf3338922bd79cba064ea54a1c3db6ec8c0c8d8ee7613e7e5854d802d3ef646812a8a3ace81182a085dfa0a71cc68b06f3fa794b9783b3c90 + languageName: node + linkType: hard + "is-extglob@npm:^2.1.1": version: 2.1.1 resolution: "is-extglob@npm:2.1.1" @@ -16379,6 +17377,17 @@ __metadata: languageName: node linkType: hard +"is-inside-container@npm:^1.0.0": + version: 1.0.0 + resolution: "is-inside-container@npm:1.0.0" + dependencies: + is-docker: ^3.0.0 + bin: + is-inside-container: cli.js + checksum: c50b75a2ab66ab3e8b92b3bc534e1ea72ca25766832c0623ac22d134116a98bcf012197d1caabe1d1c4bd5f84363d4aa5c36bb4b585fbcaf57be172cd10a1a03 + languageName: node + linkType: hard + "is-interactive@npm:^1.0.0": version: 1.0.0 resolution: "is-interactive@npm:1.0.0" @@ -16644,6 +17653,24 @@ __metadata: languageName: node linkType: hard +"is-wsl@npm:^3.1.0": + version: 3.1.0 + resolution: "is-wsl@npm:3.1.0" + dependencies: + is-inside-container: ^1.0.0 + checksum: f9734c81f2f9cf9877c5db8356bfe1ff61680f1f4c1011e91278a9c0564b395ae796addb4bf33956871041476ec82c3e5260ed57b22ac91794d4ae70a1d2f0a9 + languageName: node + linkType: hard + +"is64bit@npm:^2.0.0": + version: 2.0.0 + resolution: "is64bit@npm:2.0.0" + dependencies: + system-architecture: ^0.1.0 + checksum: 253079e64b6f9bb90295a63b73a046bea67364cdc104bc5abeffcf4cbc52b3e66b0e921cb14f686deb71b5cab628f9f490845c1194c6e94f84068d177c7f15cd + languageName: node + linkType: hard + "isarray@npm:~1.0.0": version: 1.0.0 resolution: "isarray@npm:1.0.0" @@ -16689,6 +17716,16 @@ __metadata: languageName: node linkType: hard +"isomorphic-unfetch@npm:3.1.0": + version: 3.1.0 + resolution: "isomorphic-unfetch@npm:3.1.0" + dependencies: + node-fetch: ^2.6.1 + unfetch: ^4.2.0 + checksum: 82b92fe4ec2823a81ab0fc0d11bd94d710e6f9a940d56b3cba31896d4345ec9ffc7949f4ff31ebcae84f6b95f7ebf3474c4c7452b834eb4078ea3f2c37e459c5 + languageName: node + linkType: hard + "isomorphic-ws@npm:^5.0.0": version: 5.0.0 resolution: "isomorphic-ws@npm:5.0.0" @@ -16878,6 +17915,15 @@ __metadata: languageName: node linkType: hard +"jiti@npm:^1.21.0": + version: 1.21.0 + resolution: "jiti@npm:1.21.0" + bin: + jiti: bin/jiti.js + checksum: a7bd5d63921c170eaec91eecd686388181c7828e1fa0657ab374b9372bfc1f383cf4b039e6b272383d5cb25607509880af814a39abdff967322459cca41f2961 + languageName: node + linkType: hard + "js-cookie@npm:3.0.1": version: 3.0.1 resolution: "js-cookie@npm:3.0.1" @@ -17068,6 +18114,13 @@ __metadata: languageName: node linkType: hard +"jsonc-parser@npm:^3.2.0": + version: 3.2.1 + resolution: "jsonc-parser@npm:3.2.1" + checksum: 656d9027b91de98d8ab91b3aa0d0a4cab7dc798a6830845ca664f3e76c82d46b973675bbe9b500fae1de37fd3e81aceacbaa2a57884bf2f8f29192150d2d1ef7 + languageName: node + linkType: hard + "jsonfile@npm:^4.0.0": version: 4.0.0 resolution: "jsonfile@npm:4.0.0" @@ -17181,6 +18234,13 @@ __metadata: languageName: node linkType: hard +"keyvaluestorage-interface@npm:^1.0.0": + version: 1.0.0 + resolution: "keyvaluestorage-interface@npm:1.0.0" + checksum: e20530e71b738dc094ad170a91a98d4b9bdc772dd9044b23cdaaa102aafa8997b1ac867550a1e66ba1d64fcaa949214df31aed18413b4bac31e5fe1f2c76c9de + languageName: node + linkType: hard + "kind-of@npm:^6.0.2, kind-of@npm:^6.0.3": version: 6.0.3 resolution: "kind-of@npm:6.0.3" @@ -17293,6 +18353,35 @@ __metadata: languageName: node linkType: hard +"listhen@npm:^1.5.5": + version: 1.6.0 + resolution: "listhen@npm:1.6.0" + dependencies: + "@parcel/watcher": ^2.4.0 + "@parcel/watcher-wasm": 2.4.0 + citty: ^0.1.5 + clipboardy: ^4.0.0 + consola: ^3.2.3 + crossws: ^0.1.0 + defu: ^6.1.4 + get-port-please: ^3.1.2 + h3: ^1.10.1 + http-shutdown: ^1.2.2 + jiti: ^1.21.0 + mlly: ^1.5.0 + node-forge: ^1.3.1 + pathe: ^1.1.2 + std-env: ^3.7.0 + ufo: ^1.3.2 + untun: ^0.1.3 + uqr: ^0.1.2 + bin: + listen: bin/listhen.mjs + listhen: bin/listhen.mjs + checksum: b5e1725838847ff6c08e65c62ec2977debe4becc35b0d75b7d2a064da9ec14ad098726859e626c7295e2cdc1309084e604679b02aa26df93997326675e56bff6 + languageName: node + linkType: hard + "listr2@npm:^4.0.5": version: 4.0.5 resolution: "listr2@npm:4.0.5" @@ -17335,6 +18424,37 @@ __metadata: languageName: node linkType: hard +"lit-element@npm:^3.3.0": + version: 3.3.3 + resolution: "lit-element@npm:3.3.3" + dependencies: + "@lit-labs/ssr-dom-shim": ^1.1.0 + "@lit/reactive-element": ^1.3.0 + lit-html: ^2.8.0 + checksum: 29a596fa556e231cce7246ca3e5687ad238f299b0cb374a0934d5e6fe9adf1436e031d4fbd21b280aabfc0e21a66e6c4b52da558a908df2566d09d960f3ca93d + languageName: node + linkType: hard + +"lit-html@npm:^2.8.0": + version: 2.8.0 + resolution: "lit-html@npm:2.8.0" + dependencies: + "@types/trusted-types": ^2.0.2 + checksum: 2d70df07248bcb2f502a3afb1e91d260735024fa669669ffb1417575aa39c3092779725ac1b90f5f39e4ce78c63f431f51176bc67f532389f0285a6991573255 + languageName: node + linkType: hard + +"lit@npm:2.8.0": + version: 2.8.0 + resolution: "lit@npm:2.8.0" + dependencies: + "@lit/reactive-element": ^1.6.0 + lit-element: ^3.3.0 + lit-html: ^2.8.0 + checksum: 2480e733f7d022d3ecba91abc58a20968f0ca8f5fa30b3341ecf4bcf4845e674ad27b721a5ae53529cafc6ca603c015b80d0979ceb7a711e268ef20bb6bc7527 + languageName: node + linkType: hard + "loader-runner@npm:^4.2.0": version: 4.3.0 resolution: "loader-runner@npm:4.3.0" @@ -17400,6 +18520,13 @@ __metadata: languageName: node linkType: hard +"lodash.defaults@npm:^4.2.0": + version: 4.2.0 + resolution: "lodash.defaults@npm:4.2.0" + checksum: 84923258235592c8886e29de5491946ff8c2ae5c82a7ac5cddd2e3cb697e6fbdfbbb6efcca015795c86eec2bb953a5a2ee4016e3735a3f02720428a40efbb8f1 + languageName: node + linkType: hard + "lodash.includes@npm:^4.3.0": version: 4.3.0 resolution: "lodash.includes@npm:4.3.0" @@ -17407,6 +18534,13 @@ __metadata: languageName: node linkType: hard +"lodash.isarguments@npm:^3.1.0": + version: 3.1.0 + resolution: "lodash.isarguments@npm:3.1.0" + checksum: ae1526f3eb5c61c77944b101b1f655f846ecbedcb9e6b073526eba6890dc0f13f09f72e11ffbf6540b602caee319af9ac363d6cdd6be41f4ee453436f04f13b5 + languageName: node + linkType: hard + "lodash.isboolean@npm:^3.0.3": version: 3.0.3 resolution: "lodash.isboolean@npm:3.0.3" @@ -17414,6 +18548,13 @@ __metadata: languageName: node linkType: hard +"lodash.isequal@npm:4.5.0": + version: 4.5.0 + resolution: "lodash.isequal@npm:4.5.0" + checksum: da27515dc5230eb1140ba65ff8de3613649620e8656b19a6270afe4866b7bd461d9ba2ac8a48dcc57f7adac4ee80e1de9f965d89d4d81a0ad52bb3eec2609644 + languageName: node + linkType: hard + "lodash.isinteger@npm:^4.0.4": version: 4.0.4 resolution: "lodash.isinteger@npm:4.0.4" @@ -17565,6 +18706,13 @@ __metadata: languageName: node linkType: hard +"lru-cache@npm:^10.0.2": + version: 10.2.2 + resolution: "lru-cache@npm:10.2.2" + checksum: 98e8fc93691c546f719a76103ef2bee5a3ac823955c755a47641ec41f8c7fafa1baeaba466937cc1cbfa9cfd47e03536d10e2db3158a64ad91ff3a58a32c893e + languageName: node + linkType: hard + "lru-cache@npm:^10.2.0": version: 10.2.0 resolution: "lru-cache@npm:10.2.0" @@ -18271,6 +19419,15 @@ __metadata: languageName: node linkType: hard +"mime@npm:^3.0.0": + version: 3.0.0 + resolution: "mime@npm:3.0.0" + bin: + mime: cli.js + checksum: f43f9b7bfa64534e6b05bd6062961681aeb406a5b53673b53b683f27fcc4e739989941836a355eef831f4478923651ecc739f4a5f6e20a76487b432bfd4db928 + languageName: node + linkType: hard + "mimic-fn@npm:^2.1.0": version: 2.1.0 resolution: "mimic-fn@npm:2.1.0" @@ -18505,6 +19662,18 @@ __metadata: languageName: node linkType: hard +"mlly@npm:^1.2.0, mlly@npm:^1.5.0": + version: 1.5.0 + resolution: "mlly@npm:1.5.0" + dependencies: + acorn: ^8.11.3 + pathe: ^1.1.2 + pkg-types: ^1.0.3 + ufo: ^1.3.2 + checksum: 82fda663265628ee83a31e99950553371f42f6995838795d44320c78497bf17ab04d1f26c49998944178e4e2416f6f0a580bbca3e272114ee597ae9f3c128b47 + languageName: node + linkType: hard + "mock-socket@npm:^9.2.1": version: 9.3.1 resolution: "mock-socket@npm:9.3.1" @@ -18546,6 +19715,20 @@ __metadata: languageName: node linkType: hard +"motion@npm:10.16.2": + version: 10.16.2 + resolution: "motion@npm:10.16.2" + dependencies: + "@motionone/animation": ^10.15.1 + "@motionone/dom": ^10.16.2 + "@motionone/svelte": ^10.16.2 + "@motionone/types": ^10.15.1 + "@motionone/utils": ^10.15.1 + "@motionone/vue": ^10.16.2 + checksum: 0b91256808c2374d8b7f4ac5e7ed513f2ca8df2b7d1be4fbc00ec5baece5162ada648aedaa5bc1d60be9ad2e6c9bc1d3bb160333051c20ab79e241b8e02e3c92 + languageName: node + linkType: hard + "mp4box@npm:^0.5.2": version: 0.5.2 resolution: "mp4box@npm:0.5.2" @@ -18697,6 +19880,13 @@ __metadata: languageName: node linkType: hard +"napi-wasm@npm:^1.1.0": + version: 1.1.0 + resolution: "napi-wasm@npm:1.1.0" + checksum: 649a5d03477b89ee75cd8d7be5404daa5c889915640fd4ab042f2d38d265e961f86933e83982388d72c8b0a3952f36f099b96598ea88210205519ec2adc41d8d + languageName: node + linkType: hard + "natural-compare-lite@npm:^1.4.0": version: 1.4.0 resolution: "natural-compare-lite@npm:1.4.0" @@ -18771,6 +19961,15 @@ __metadata: languageName: node linkType: hard +"node-addon-api@npm:^7.0.0": + version: 7.1.0 + resolution: "node-addon-api@npm:7.1.0" + dependencies: + node-gyp: latest + checksum: 26640c8d2ed7e2059e2ed65ee79e2a195306b3f1fc27ad11448943ba91d37767bd717a9a0453cc97e83a1109194dced8336a55f8650000458ef625c0b8b5e3df + languageName: node + linkType: hard + "node-dir@npm:^0.1.10, node-dir@npm:^0.1.17": version: 0.1.17 resolution: "node-dir@npm:0.1.17" @@ -18794,6 +19993,13 @@ __metadata: languageName: node linkType: hard +"node-fetch-native@npm:^1.4.0, node-fetch-native@npm:^1.4.1, node-fetch-native@npm:^1.6.1": + version: 1.6.1 + resolution: "node-fetch-native@npm:1.6.1" + checksum: 1a248ada34561ce1010f09ca81cf5cd9c834b51aec957e82b6811d673e209a44630a835da599f0dd0c3d927f15c5f864d6ed494093c4a42601609f988d5919f2 + languageName: node + linkType: hard + "node-fetch@npm:2.6.7, node-fetch@npm:^2.6.1, node-fetch@npm:^2.6.7, node-fetch@npm:^2.x.x": version: 2.6.7 resolution: "node-fetch@npm:2.6.7" @@ -18808,7 +20014,7 @@ __metadata: languageName: node linkType: hard -"node-fetch@npm:^2.0.0": +"node-fetch@npm:^2.0.0, node-fetch@npm:^2.6.12": version: 2.7.0 resolution: "node-fetch@npm:2.7.0" dependencies: @@ -18822,6 +20028,13 @@ __metadata: languageName: node linkType: hard +"node-forge@npm:^1.3.1": + version: 1.3.1 + resolution: "node-forge@npm:1.3.1" + checksum: 08fb072d3d670599c89a1704b3e9c649ff1b998256737f0e06fbd1a5bf41cae4457ccaee32d95052d80bbafd9ffe01284e078c8071f0267dc9744e51c5ed42a9 + languageName: node + linkType: hard + "node-gyp-build@npm:^4.2.0": version: 4.5.0 resolution: "node-gyp-build@npm:4.5.0" @@ -19130,6 +20343,31 @@ __metadata: languageName: node linkType: hard +"ofetch@npm:^1.3.3": + version: 1.3.3 + resolution: "ofetch@npm:1.3.3" + dependencies: + destr: ^2.0.1 + node-fetch-native: ^1.4.0 + ufo: ^1.3.0 + checksum: 945d757b25ba144f9f45d9de3382de743f0950e68e76726a4c0d2ef01456fa6700a6b102cc343a4e06f71d5ac59a8affdd9a673751c448f4265996f7f22ffa3d + languageName: node + linkType: hard + +"ohash@npm:^1.1.3": + version: 1.1.3 + resolution: "ohash@npm:1.1.3" + checksum: 44c7321cb950ce6e87d46584fd5cc8dd3dd15fcd4ade0ac2995d0497dc6b6b1ae9bd844c59af185d63923da5cfe9b37ae37a9dbd9ac455f3ad0cdfb5a73d5ef6 + languageName: node + linkType: hard + +"on-exit-leak-free@npm:^0.2.0": + version: 0.2.0 + resolution: "on-exit-leak-free@npm:0.2.0" + checksum: d22b0f0538069110626b578db6e68b6ee0e85b1ee9cc5ef9b4de1bba431431d6a8da91a61e09d2ad46f22a96f968e5237833cb9d0b69bc4d294f7ec82f609b05 + languageName: node + linkType: hard + "on-finished@npm:2.4.1": version: 2.4.1 resolution: "on-finished@npm:2.4.1" @@ -19523,6 +20761,13 @@ __metadata: languageName: node linkType: hard +"pathe@npm:^1.1.0, pathe@npm:^1.1.1, pathe@npm:^1.1.2": + version: 1.1.2 + resolution: "pathe@npm:1.1.2" + checksum: ec5f778d9790e7b9ffc3e4c1df39a5bb1ce94657a4e3ad830c1276491ca9d79f189f47609884671db173400256b005f4955f7952f52a2aeb5834ad5fb4faf134 + languageName: node + linkType: hard + "pathval@npm:^1.1.1": version: 1.1.1 resolution: "pathval@npm:1.1.1" @@ -19591,6 +20836,44 @@ __metadata: languageName: node linkType: hard +"pino-abstract-transport@npm:v0.5.0": + version: 0.5.0 + resolution: "pino-abstract-transport@npm:0.5.0" + dependencies: + duplexify: ^4.1.2 + split2: ^4.0.0 + checksum: c503f867de3189f8217ab9cf794e8a631dddd0029a829f0f985f5511308152ebd53e363764fbc5570b3d1c715b341e3923456ce16ad84cd41be2b9a074ada234 + languageName: node + linkType: hard + +"pino-std-serializers@npm:^4.0.0": + version: 4.0.0 + resolution: "pino-std-serializers@npm:4.0.0" + checksum: 89d487729b58c9d3273a0ee851ead068d6d2e2ccc1af8e1c1d28f1b3442423679bec7ec04d9a2aba36f94f335e82be9f4de19dc4fbc161e71c136aaa15b85ad3 + languageName: node + linkType: hard + +"pino@npm:7.11.0": + version: 7.11.0 + resolution: "pino@npm:7.11.0" + dependencies: + atomic-sleep: ^1.0.0 + fast-redact: ^3.0.0 + on-exit-leak-free: ^0.2.0 + pino-abstract-transport: v0.5.0 + pino-std-serializers: ^4.0.0 + process-warning: ^1.0.0 + quick-format-unescaped: ^4.0.3 + real-require: ^0.1.0 + safe-stable-stringify: ^2.1.0 + sonic-boom: ^2.2.1 + thread-stream: ^0.15.1 + bin: + pino: bin.js + checksum: b919e7dbe41de978bb050dcef94fd687c012eb78d344a18f75f04ce180d5810fc162be1f136722d70cd005ed05832c4023a38b9acbc1076ae63c9f5ec5ca515c + languageName: node + linkType: hard + "pirates@npm:^4.0.4, pirates@npm:^4.0.5": version: 4.0.5 resolution: "pirates@npm:4.0.5" @@ -19636,6 +20919,17 @@ __metadata: languageName: node linkType: hard +"pkg-types@npm:^1.0.3": + version: 1.0.3 + resolution: "pkg-types@npm:1.0.3" + dependencies: + jsonc-parser: ^3.2.0 + mlly: ^1.2.0 + pathe: ^1.1.0 + checksum: 4b305c834b912ddcc8a0fe77530c0b0321fe340396f84cbb87aecdbc126606f47f2178f23b8639e71a4870f9631c7217aef52ffed0ae17ea2dbbe7e43d116a6e + languageName: node + linkType: hard + "pluralize@npm:^8.0.0": version: 8.0.0 resolution: "pluralize@npm:8.0.0" @@ -19643,6 +20937,13 @@ __metadata: languageName: node linkType: hard +"pngjs@npm:^5.0.0": + version: 5.0.0 + resolution: "pngjs@npm:5.0.0" + checksum: 04e912cc45fb9601564e2284efaf0c5d20d131d9b596244f8a6789fc6cdb6b18d2975a6bbf7a001858d7e159d5c5c5dd7b11592e97629b7137f7f5cef05904c8 + languageName: node + linkType: hard + "polished@npm:^4.2.2": version: 4.2.2 resolution: "polished@npm:4.2.2" @@ -19847,6 +21148,13 @@ __metadata: languageName: node linkType: hard +"process-warning@npm:^1.0.0": + version: 1.0.0 + resolution: "process-warning@npm:1.0.0" + checksum: c708a03241deec3cabaeee39c4f9ee8c4d71f1c5ef9b746c8252cdb952a6059068cfcdaf348399775244cbc441b6ae5e26a9c87ed371f88335d84f26d19180f9 + languageName: node + linkType: hard + "process@npm:^0.11.10": version: 0.11.10 resolution: "process@npm:0.11.10" @@ -19963,6 +21271,13 @@ __metadata: languageName: node linkType: hard +"proxy-compare@npm:2.5.1": + version: 2.5.1 + resolution: "proxy-compare@npm:2.5.1" + checksum: c7cc151ac255150bcb24becde6495b3e399416c31991af377ce082255b51f07eaeb5d861bf8bf482703e92f88b90a5892ad57d3153ea29450d03ef921683d9fa + languageName: node + linkType: hard + "proxy-from-env@npm:^1.0.0, proxy-from-env@npm:^1.1.0": version: 1.1.0 resolution: "proxy-from-env@npm:1.1.0" @@ -20051,6 +21366,20 @@ __metadata: languageName: node linkType: hard +"qrcode@npm:1.5.3": + version: 1.5.3 + resolution: "qrcode@npm:1.5.3" + dependencies: + dijkstrajs: ^1.0.1 + encode-utf8: ^1.0.3 + pngjs: ^5.0.0 + yargs: ^15.3.1 + bin: + qrcode: bin/qrcode + checksum: 9a8a20a0a9cb1d15de8e7b3ffa214e8b6d2a8b07655f25bd1b1d77f4681488f84d7bae569870c0652872d829d5f8ac4922c27a6bd14c13f0e197bf07b28dead7 + languageName: node + linkType: hard + "qs@npm:6.11.0": version: 6.11.0 resolution: "qs@npm:6.11.0" @@ -20069,6 +21398,18 @@ __metadata: languageName: node linkType: hard +"query-string@npm:7.1.3": + version: 7.1.3 + resolution: "query-string@npm:7.1.3" + dependencies: + decode-uri-component: ^0.2.2 + filter-obj: ^1.1.0 + split-on-first: ^1.0.0 + strict-uri-encode: ^2.0.0 + checksum: 91af02dcd9cc9227a052841d5c2eecb80a0d6489d05625df506a097ef1c59037cfb5e907f39b84643cbfd535c955abec3e553d0130a7b510120c37d06e0f4346 + languageName: node + linkType: hard + "queue-microtask@npm:^1.2.2": version: 1.2.3 resolution: "queue-microtask@npm:1.2.3" @@ -20076,6 +21417,13 @@ __metadata: languageName: node linkType: hard +"quick-format-unescaped@npm:^4.0.3": + version: 4.0.4 + resolution: "quick-format-unescaped@npm:4.0.4" + checksum: 7bc32b99354a1aa46c089d2a82b63489961002bb1d654cee3e6d2d8778197b68c2d854fd23d8422436ee1fdfd0abaddc4d4da120afe700ade68bd357815b26fd + languageName: node + linkType: hard + "quick-lru@npm:^4.0.1": version: 4.0.1 resolution: "quick-lru@npm:4.0.1" @@ -20090,6 +21438,13 @@ __metadata: languageName: node linkType: hard +"radix3@npm:^1.1.0": + version: 1.1.0 + resolution: "radix3@npm:1.1.0" + checksum: e5e6ed8fcf68be4d124bca4f7da7ba0fc7c5b6f9e98bc3f4424459c45d50f1f92506c5f7f8421b5cfee5823c524a4a2cef416053e88845813ce9fc9c7086729a + languageName: node + linkType: hard + "ramda@npm:0.29.0": version: 0.29.0 resolution: "ramda@npm:0.29.0" @@ -20727,6 +22082,13 @@ __metadata: languageName: node linkType: hard +"real-require@npm:^0.1.0": + version: 0.1.0 + resolution: "real-require@npm:0.1.0" + checksum: 96745583ed4f82cd5c6a6af012fd1d3c6fc2f13ae1bcff1a3c4f8094696013a1a07c82c5aa66a403d7d4f84949fc2203bc927c7ad120caad125941ca2d7e5e8e + languageName: node + linkType: hard + "recast@npm:^0.21.0": version: 0.21.5 resolution: "recast@npm:0.21.5" @@ -20771,6 +22133,22 @@ __metadata: languageName: node linkType: hard +"redis-errors@npm:^1.0.0, redis-errors@npm:^1.2.0": + version: 1.2.0 + resolution: "redis-errors@npm:1.2.0" + checksum: f28ac2692113f6f9c222670735aa58aeae413464fd58ccf3fce3f700cae7262606300840c802c64f2b53f19f65993da24dc918afc277e9e33ac1ff09edb394f4 + languageName: node + linkType: hard + +"redis-parser@npm:^3.0.0": + version: 3.0.0 + resolution: "redis-parser@npm:3.0.0" + dependencies: + redis-errors: ^1.0.0 + checksum: 89290ae530332f2ae37577647fa18208d10308a1a6ba750b9d9a093e7398f5e5253f19855b64c98757f7129cccce958e4af2573fdc33bad41405f87f1943459a + languageName: node + linkType: hard + "regenerate-unicode-properties@npm:^10.1.0": version: 10.1.0 resolution: "regenerate-unicode-properties@npm:10.1.0" @@ -21387,6 +22765,13 @@ __metadata: languageName: node linkType: hard +"safe-stable-stringify@npm:^2.1.0": + version: 2.4.3 + resolution: "safe-stable-stringify@npm:2.4.3" + checksum: 3aeb64449706ee1f5ad2459fc99648b131d48e7a1fbb608d7c628020177512dc9d94108a5cb61bbc953985d313d0afea6566d243237743e02870490afef04b43 + languageName: node + linkType: hard + "safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0": version: 2.1.2 resolution: "safer-buffer@npm:2.1.2" @@ -21670,7 +23055,7 @@ __metadata: languageName: node linkType: hard -"signal-exit@npm:^4.0.1": +"signal-exit@npm:^4.0.1, signal-exit@npm:^4.1.0": version: 4.1.0 resolution: "signal-exit@npm:4.1.0" checksum: 64c757b498cb8629ffa5f75485340594d2f8189e9b08700e69199069c8e3070fb3e255f7ab873c05dc0b3cec412aea7402e10a5990cb6a050bd33ba062a6c549 @@ -21830,6 +23215,15 @@ __metadata: languageName: node linkType: hard +"sonic-boom@npm:^2.2.1": + version: 2.8.0 + resolution: "sonic-boom@npm:2.8.0" + dependencies: + atomic-sleep: ^1.0.0 + checksum: c7f9c89f931d7f60f8e0741551a729f0d81e6dc407a99420fc847a9a4c25af048a615b1188ab3c4f1fb3708fe4904973ddab6ebcc8ed5b78b50ab81a99045910 + languageName: node + linkType: hard + "source-map-js@npm:^1.0.2": version: 1.0.2 resolution: "source-map-js@npm:1.0.2" @@ -21923,6 +23317,20 @@ __metadata: languageName: node linkType: hard +"split-on-first@npm:^1.0.0": + version: 1.1.0 + resolution: "split-on-first@npm:1.1.0" + checksum: 16ff85b54ddcf17f9147210a4022529b343edbcbea4ce977c8f30e38408b8d6e0f25f92cd35b86a524d4797f455e29ab89eb8db787f3c10708e0b47ebf528d30 + languageName: node + linkType: hard + +"split2@npm:^4.0.0": + version: 4.2.0 + resolution: "split2@npm:4.2.0" + checksum: 05d54102546549fe4d2455900699056580cca006c0275c334611420f854da30ac999230857a85fdd9914dc2109ae50f80fda43d2a445f2aa86eccdc1dfce779d + languageName: node + linkType: hard + "sponge-case@npm:^1.0.1": version: 1.0.1 resolution: "sponge-case@npm:1.0.1" @@ -21969,6 +23377,13 @@ __metadata: languageName: node linkType: hard +"standard-as-callback@npm:^2.1.0": + version: 2.1.0 + resolution: "standard-as-callback@npm:2.1.0" + checksum: 88bec83ee220687c72d94fd86a98d5272c91d37ec64b66d830dbc0d79b62bfa6e47f53b71646011835fc9ce7fae62739545d13124262b53be4fbb3e2ebad551c + languageName: node + linkType: hard + "statuses@npm:2.0.1": version: 2.0.1 resolution: "statuses@npm:2.0.1" @@ -21976,6 +23391,13 @@ __metadata: languageName: node linkType: hard +"std-env@npm:^3.7.0": + version: 3.7.0 + resolution: "std-env@npm:3.7.0" + checksum: 4f489d13ff2ab838c9acd4ed6b786b51aa52ecacdfeaefe9275fcb220ff2ac80c6e95674723508fd29850a694569563a8caaaea738eb82ca16429b3a0b50e510 + languageName: node + linkType: hard + "store2@npm:^2.14.2": version: 2.14.2 resolution: "store2@npm:2.14.2" @@ -22009,6 +23431,13 @@ __metadata: languageName: node linkType: hard +"strict-uri-encode@npm:^2.0.0": + version: 2.0.0 + resolution: "strict-uri-encode@npm:2.0.0" + checksum: eaac4cf978b6fbd480f1092cab8b233c9b949bcabfc9b598dd79a758f7243c28765ef7639c876fa72940dac687181b35486ea01ff7df3e65ce3848c64822c581 + languageName: node + linkType: hard + "string-argv@npm:^0.3.1": version: 0.3.1 resolution: "string-argv@npm:0.3.1" @@ -22455,6 +23884,13 @@ __metadata: languageName: node linkType: hard +"system-architecture@npm:^0.1.0": + version: 0.1.0 + resolution: "system-architecture@npm:0.1.0" + checksum: ca0dd793c45c354ab57dd7fc8ce7dc9923a6e07382bd3b22eb5b08f55ddb0217c390d00767549c5155fd4ce7ef23ffdd8cfb33dd4344cbbd37837d085a50f6f0 + languageName: node + linkType: hard + "table@npm:^6.8.1": version: 6.8.1 resolution: "table@npm:6.8.1" @@ -22627,6 +24063,15 @@ __metadata: languageName: node linkType: hard +"thread-stream@npm:^0.15.1": + version: 0.15.2 + resolution: "thread-stream@npm:0.15.2" + dependencies: + real-require: ^0.1.0 + checksum: 0547795a8f357ba1ac0dba29c71f965182e29e21752951a04a7167515ee37524bfba6c410f31e65a01a8d3e5b93400b812889aa09523e38ce4d744c894ffa6c0 + languageName: node + linkType: hard + "through2@npm:^2.0.3": version: 2.0.5 resolution: "through2@npm:2.0.5" @@ -22958,7 +24403,7 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^1.13.0, tslib@npm:^1.8.1, tslib@npm:^1.9.3": +"tslib@npm:1.14.1, tslib@npm:^1.13.0, tslib@npm:^1.8.1, tslib@npm:^1.9.3": version: 1.14.1 resolution: "tslib@npm:1.14.1" checksum: dbe628ef87f66691d5d2959b3e41b9ca0045c3ee3c7c7b906cc1e328b39f199bb1ad9e671c39025bd56122ac57dfbf7385a94843b1cc07c60a4db74795829acd @@ -22979,6 +24424,13 @@ __metadata: languageName: node linkType: hard +"tslib@npm:^2.3.1, tslib@npm:^2.5.0, tslib@npm:^2.6.2": + version: 2.6.2 + resolution: "tslib@npm:2.6.2" + checksum: 329ea56123005922f39642318e3d1f0f8265d1e7fcb92c633e0809521da75eeaca28d2cf96d7248229deb40e5c19adf408259f4b9640afd20d13aecc1430f3ad + languageName: node + linkType: hard + "tslib@npm:^2.4.1": version: 2.5.3 resolution: "tslib@npm:2.5.3" @@ -22993,13 +24445,6 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^2.5.0, tslib@npm:^2.6.2": - version: 2.6.2 - resolution: "tslib@npm:2.6.2" - checksum: 329ea56123005922f39642318e3d1f0f8265d1e7fcb92c633e0809521da75eeaca28d2cf96d7248229deb40e5c19adf408259f4b9640afd20d13aecc1430f3ad - languageName: node - linkType: hard - "tsutils@npm:^3.21.0": version: 3.21.0 resolution: "tsutils@npm:3.21.0" @@ -23191,6 +24636,13 @@ __metadata: languageName: node linkType: hard +"ufo@npm:^1.3.0, ufo@npm:^1.3.1, ufo@npm:^1.3.2": + version: 1.4.0 + resolution: "ufo@npm:1.4.0" + checksum: 7c7ca3d823ae56a0439bc7038116a26a8c4e95aa9252aef43091f08f104af5557c2d220d990d07891c2771ca7c0589c479e330737ce6d7bbee485bb031046f19 + languageName: node + linkType: hard + "uglify-js@npm:^3.1.4": version: 3.16.0 resolution: "uglify-js@npm:3.16.0" @@ -23209,6 +24661,15 @@ __metadata: languageName: node linkType: hard +"uint8arrays@npm:^3.1.0": + version: 3.1.1 + resolution: "uint8arrays@npm:3.1.1" + dependencies: + multiformats: ^9.4.2 + checksum: b93b6c3f0a526b116799f3a3409bd4b5d5553eb3e73e485998ece7974742254fbc0d2f7988dd21ac86c4b974552f45d9ae9cf9cba9647e529f8eb1fdd2ed84d0 + languageName: node + linkType: hard + "unbox-primitive@npm:^1.0.2": version: 1.0.2 resolution: "unbox-primitive@npm:1.0.2" @@ -23228,6 +24689,13 @@ __metadata: languageName: node linkType: hard +"uncrypto@npm:^0.1.3": + version: 0.1.3 + resolution: "uncrypto@npm:0.1.3" + checksum: 07160e08806dd6cea16bb96c3fd54cd70fc801e02fc3c6f86980144d15c9ebbd1c55587f7280a207b3af6cd34901c0d0b77ada5a02c2f7081a033a05acf409e2 + languageName: node + linkType: hard + "undici@npm:^5.12.0": version: 5.14.0 resolution: "undici@npm:5.14.0" @@ -23244,6 +24712,19 @@ __metadata: languageName: node linkType: hard +"unenv@npm:^1.9.0": + version: 1.9.0 + resolution: "unenv@npm:1.9.0" + dependencies: + consola: ^3.2.3 + defu: ^6.1.3 + mime: ^3.0.0 + node-fetch-native: ^1.6.1 + pathe: ^1.1.1 + checksum: 4cfbeedee1436e7f417d655c521e4c6220228f5b96afff90b5253d4504282c6de5acdd982aa51c977ce38d21d7692a33d10fc857166b3488655ff29c3bb754a2 + languageName: node + linkType: hard + "unfetch@npm:^3.1.1": version: 3.1.2 resolution: "unfetch@npm:3.1.2" @@ -23251,7 +24732,7 @@ __metadata: languageName: node linkType: hard -"unfetch@npm:^4.1.0": +"unfetch@npm:^4.1.0, unfetch@npm:^4.2.0": version: 4.2.0 resolution: "unfetch@npm:4.2.0" checksum: 6a4b2557e1d921eaa80c4425ce27a404945ec26491ed06e62598f333996a91a44c7908cb26dc7c2746d735762b13276cf4aa41829b4c8f438dde63add3045d7a @@ -23492,6 +24973,63 @@ __metadata: languageName: node linkType: hard +"unstorage@npm:^1.9.0": + version: 1.10.1 + resolution: "unstorage@npm:1.10.1" + dependencies: + anymatch: ^3.1.3 + chokidar: ^3.5.3 + destr: ^2.0.2 + h3: ^1.8.2 + ioredis: ^5.3.2 + listhen: ^1.5.5 + lru-cache: ^10.0.2 + mri: ^1.2.0 + node-fetch-native: ^1.4.1 + ofetch: ^1.3.3 + ufo: ^1.3.1 + peerDependencies: + "@azure/app-configuration": ^1.4.1 + "@azure/cosmos": ^4.0.0 + "@azure/data-tables": ^13.2.2 + "@azure/identity": ^3.3.2 + "@azure/keyvault-secrets": ^4.7.0 + "@azure/storage-blob": ^12.16.0 + "@capacitor/preferences": ^5.0.6 + "@netlify/blobs": ^6.2.0 + "@planetscale/database": ^1.11.0 + "@upstash/redis": ^1.23.4 + "@vercel/kv": ^0.2.3 + idb-keyval: ^6.2.1 + peerDependenciesMeta: + "@azure/app-configuration": + optional: true + "@azure/cosmos": + optional: true + "@azure/data-tables": + optional: true + "@azure/identity": + optional: true + "@azure/keyvault-secrets": + optional: true + "@azure/storage-blob": + optional: true + "@capacitor/preferences": + optional: true + "@netlify/blobs": + optional: true + "@planetscale/database": + optional: true + "@upstash/redis": + optional: true + "@vercel/kv": + optional: true + idb-keyval: + optional: true + checksum: 59dc9f21d25df2bc8d14e3965235cbb85e3e2e8cb332da70ca471ba4519269a06936eba4012916251f3b88e23176df44b64abb826202a3a3c9d0a185bfe5e500 + languageName: node + linkType: hard + "untildify@npm:^4.0.0": version: 4.0.0 resolution: "untildify@npm:4.0.0" @@ -23499,6 +25037,19 @@ __metadata: languageName: node linkType: hard +"untun@npm:^0.1.3": + version: 0.1.3 + resolution: "untun@npm:0.1.3" + dependencies: + citty: ^0.1.5 + consola: ^3.2.3 + pathe: ^1.1.1 + bin: + untun: bin/untun.mjs + checksum: ad886c242dbac250f88ef6f18ad780fa084d07e4d030ab5ceacfe4378aa4bf2d3549b8ed8352bad5776facd9aaee05e3f914c661adc11bace867e2a12fd7bee5 + languageName: node + linkType: hard + "update-browserslist-db@npm:^1.0.13": version: 1.0.13 resolution: "update-browserslist-db@npm:1.0.13" @@ -23545,6 +25096,13 @@ __metadata: languageName: node linkType: hard +"uqr@npm:^0.1.2": + version: 0.1.2 + resolution: "uqr@npm:0.1.2" + checksum: 717766f03814172f5a9934dae2c4c48f6de065a4fd7da82aa513bd8300b621c1e606efdd174478cab79093e5ba244a99f0c0b1b0b9c0175656ab5e637a006d92 + languageName: node + linkType: hard + "uri-js@npm:^4.2.2": version: 4.4.1 resolution: "uri-js@npm:4.4.1" @@ -23648,6 +25206,15 @@ __metadata: languageName: node linkType: hard +"use-sync-external-store@npm:1.2.0": + version: 1.2.0 + resolution: "use-sync-external-store@npm:1.2.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: 5c639e0f8da3521d605f59ce5be9e094ca772bd44a4ce7322b055a6f58eeed8dda3c94cabd90c7a41fb6fa852210092008afe48f7038792fd47501f33299116a + languageName: node + linkType: hard + "utf-8-validate@npm:^5.0.2": version: 5.0.9 resolution: "utf-8-validate@npm:5.0.9" @@ -23750,6 +25317,24 @@ __metadata: languageName: node linkType: hard +"valtio@npm:1.11.2": + version: 1.11.2 + resolution: "valtio@npm:1.11.2" + dependencies: + proxy-compare: 2.5.1 + use-sync-external-store: 1.2.0 + peerDependencies: + "@types/react": ">=16.8" + react: ">=16.8" + peerDependenciesMeta: + "@types/react": + optional: true + react: + optional: true + checksum: cce2d9212aac9fc4bdeba2d381188cc831cfe8d2d03039024cfcd58ba1801f2a5b14d01c2bb21a2c9f12046d2ede64f1dd887175185f39bee553677a35592c30 + languageName: node + linkType: hard + "value-or-promise@npm:1.0.11, value-or-promise@npm:^1.0.11": version: 1.0.11 resolution: "value-or-promise@npm:1.0.11" @@ -24513,6 +26098,21 @@ __metadata: languageName: node linkType: hard +"ws@npm:^7.5.1": + version: 7.5.9 + resolution: "ws@npm:7.5.9" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: c3c100a181b731f40b7f2fddf004aa023f79d64f489706a28bc23ff88e87f6a64b3c6651fbec3a84a53960b75159574d7a7385709847a62ddb7ad6af76f49138 + languageName: node + linkType: hard + "ws@npm:^8.2.3": version: 8.11.0 resolution: "ws@npm:8.11.0"