diff --git a/.github/workflows/CI-CD-Wallet-Connect-Package.yml b/.github/workflows/CI-CD-Wallet-Connect-Package.yml index c2e64f2eab..b5f357d0a0 100644 --- a/.github/workflows/CI-CD-Wallet-Connect-Package.yml +++ b/.github/workflows/CI-CD-Wallet-Connect-Package.yml @@ -12,34 +12,6 @@ on: workflow_dispatch: jobs: - wallet-connect-test: - if: github.event_name == 'pull_request' - runs-on: ubuntu-latest - steps: - - name: Cancel previous workflow runs - uses: styfle/cancel-workflow-action@0.4.0 - with: - access_token: ${{ github.token }} - - - uses: actions/checkout@v2 - - - name: Install NodeJS 18.x - uses: actions/setup-node@v2.1.5 - with: - node-version: 18.x - - - name: 'gear-js-wallet: Install dependencies' - working-directory: utils/wallet-connect - run: yarn install - - - name: 'gear-js-wallet: Build pkg' - working-directory: utils/wallet-connect - run: yarn build - - - name: 'gear-js-wallet: Run tests' - working-directory: utils/wallet-connect - run: yarn test - wallet-connect-build: if: github.event_name == 'pull_request' runs-on: ubuntu-latest @@ -56,13 +28,13 @@ jobs: with: node-version: 18.x - - name: 'vara-ui: Install dependencies' + - name: 'wallet-connect: Install dependencies' working-directory: utils/wallet-connect - run: npm install + run: yarn install - - name: 'vara-ui: Build pkg' + - name: 'vwallet-connect: Build pkg' working-directory: utils/wallet-connect - run: npm run build + run: yarn run build publish-to-npm: if: github.event_name == 'push' @@ -81,15 +53,14 @@ jobs: id: check_gear with: file-name: utils/wallet-connect/package.json - file-url: https://unpkg.com/@gear-js/ui@latest/package.json + file-url: https://unpkg.com/@gear-js/wallet-connect@latest/package.json static-checking: localIsNew - name: '@gear-js/wallet-connect: Publish' - if: steps.check_gear.outputs.changed == 'true' working-directory: utils/wallet-connect run: | export token=$(printenv $(printenv GITHUB_ACTOR)) - npm install + yarn install npm run build npm config set //registry.npmjs.org/:_authToken=$token --no-workspaces npm publish diff --git a/idea/frontend/package.json b/idea/frontend/package.json index 23f7fea42e..62c5a167dd 100644 --- a/idea/frontend/package.json +++ b/idea/frontend/package.json @@ -12,6 +12,7 @@ "@gear-js/api": "0.38.1", "@gear-js/react-hooks": "workspace:^", "@gear-js/ui": "workspace:^", + "@gear-js/wallet-connect": "workspace:^", "@hcaptcha/react-hcaptcha": "1.8.1", "@hookform/resolvers": "3.3.2", "@polkadot/api": "11.0.2", @@ -66,7 +67,7 @@ "typescript": "5.5.3", "vite": "4.4.11", "vite-plugin-checker": "0.6.2", - "vite-plugin-node-polyfills": "0.15.0", + "vite-plugin-node-polyfills": "0.22.0", "vite-plugin-svgr": "4.1.0" } } diff --git a/idea/frontend/src/features/wallet/assets/enkrypt.svg b/idea/frontend/src/features/wallet/assets/enkrypt.svg deleted file mode 100644 index 065816410d..0000000000 --- a/idea/frontend/src/features/wallet/assets/enkrypt.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/idea/frontend/src/features/wallet/assets/polkadot.svg b/idea/frontend/src/features/wallet/assets/polkadot.svg deleted file mode 100644 index 657d2c8144..0000000000 --- a/idea/frontend/src/features/wallet/assets/polkadot.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/idea/frontend/src/features/wallet/assets/subwallet.svg b/idea/frontend/src/features/wallet/assets/subwallet.svg deleted file mode 100644 index 688cffca0f..0000000000 --- a/idea/frontend/src/features/wallet/assets/subwallet.svg +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/idea/frontend/src/features/wallet/assets/talisman.svg b/idea/frontend/src/features/wallet/assets/talisman.svg deleted file mode 100644 index 5924ba2b2a..0000000000 --- a/idea/frontend/src/features/wallet/assets/talisman.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/idea/frontend/src/features/wallet/consts.ts b/idea/frontend/src/features/wallet/consts.ts deleted file mode 100644 index ab279d78de..0000000000 --- a/idea/frontend/src/features/wallet/consts.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { Entries } from '@/shared/types'; - -import PolkadotSVG from './assets/polkadot.svg?react'; -import SubwalletSVG from './assets/subwallet.svg?react'; -import TalismanSVG from './assets/talisman.svg?react'; -import EnkryptSVG from './assets/enkrypt.svg?react'; - -const WALLET = { - 'polkadot-js': { name: 'Polkadot JS', SVG: PolkadotSVG }, - 'subwallet-js': { name: 'SubWallet', SVG: SubwalletSVG }, - talisman: { name: 'Talisman', SVG: TalismanSVG }, - enkrypt: { name: 'Enkrypt', SVG: EnkryptSVG }, -}; - -const WALLETS = Object.entries(WALLET) as Entries; - -export { WALLET, WALLETS }; diff --git a/idea/frontend/src/features/wallet/index.ts b/idea/frontend/src/features/wallet/index.ts deleted file mode 100644 index e3bcb1cbd9..0000000000 --- a/idea/frontend/src/features/wallet/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Wallet } from './ui'; - -export { Wallet }; diff --git a/idea/frontend/src/features/wallet/types.ts b/idea/frontend/src/features/wallet/types.ts deleted file mode 100644 index 61e7c46d76..0000000000 --- a/idea/frontend/src/features/wallet/types.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { WALLET } from './consts'; - -type WalletId = keyof typeof WALLET; - -export type { WalletId }; diff --git a/idea/frontend/src/features/wallet/ui/account-button/account-button.module.scss b/idea/frontend/src/features/wallet/ui/account-button/account-button.module.scss deleted file mode 100644 index 3f8dc7c30f..0000000000 --- a/idea/frontend/src/features/wallet/ui/account-button/account-button.module.scss +++ /dev/null @@ -1,5 +0,0 @@ -.accountBtn { - white-space: nowrap; - text-overflow: ellipsis; - text-transform: uppercase; -} diff --git a/idea/frontend/src/features/wallet/ui/account-button/account-button.tsx b/idea/frontend/src/features/wallet/ui/account-button/account-button.tsx deleted file mode 100644 index bf17b5d1f5..0000000000 --- a/idea/frontend/src/features/wallet/ui/account-button/account-button.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import Identicon from '@polkadot/react-identicon'; -import clsx from 'clsx'; -import { buttonStyles } from '@gear-js/ui'; - -import styles from './account-button.module.scss'; - -type Props = { - name?: string; - address: string; - className?: string; - onClick: () => void; -}; - -const AccountButton = ({ name, address, className, onClick }: Props) => { - const accountBtnClasses = clsx(buttonStyles.button, styles.accountBtn, className); - - return ( - - ); -}; - -export { AccountButton }; diff --git a/idea/frontend/src/features/wallet/ui/account-button/index.ts b/idea/frontend/src/features/wallet/ui/account-button/index.ts deleted file mode 100644 index ae1232b095..0000000000 --- a/idea/frontend/src/features/wallet/ui/account-button/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { AccountButton } from './account-button'; - -export { AccountButton }; diff --git a/idea/frontend/src/features/wallet/ui/accounts-modal/accounts-modal.module.scss b/idea/frontend/src/features/wallet/ui/accounts-modal/accounts-modal.module.scss deleted file mode 100644 index 35461e3dd7..0000000000 --- a/idea/frontend/src/features/wallet/ui/accounts-modal/accounts-modal.module.scss +++ /dev/null @@ -1,114 +0,0 @@ -@use '@gear-js/ui/breakpoints' as *; -@use '@gear-js/ui/variables' as ui; -@use '@gear-js/ui/headings' as *; -@use '@/shared/assets/styles/variables' as *; -@use '@/shared/assets/styles/mixins' as *; - -.simplebar { - @include customSimplebar; - max-height: 50vh; - margin-right: -16px; - - :global(.simplebar-content) { - margin-right: 16px; - } -} - -.footer { - display: flex; - - button:nth-child(2) { - margin-left: auto; - } -} - -.list { - @include childrenMargin(16px); - - .accountButton { - width: 100%; - font-weight: 500; - text-transform: uppercase; - padding: 16px 40px; - - &.active { - background: $successColor; - } - } - - .accountName { - font-size: $fontSizeMedium; - padding: 0 5px; - } - - .accountIcon { - @include md { - display: none !important; - } - } -} - -.accountItem { - @include childrenMargin(10px, right); - - display: flex; - align-items: center; - - .accountButton { - flex: 1 1; - - &.active { - cursor: default; - background-color: $successColor; - - &:hover { - background-color: $successColor; - } - } - } -} - -.button { - display: flex; - justify-content: space-between; - background-color: ui.$buttonColorLight; - letter-spacing: 0.08em; - - span { - display: flex; - align-items: center; - } - - &:hover { - background-color: ui.$buttonColorLightHover; - } - - &:not(.enabled) { - pointer-events: none; - - .status { - opacity: 0.6; - } - } - - .status { - text-align: right; - - &Text { - font-size: 12px; - line-height: 14px; - } - - &Accounts { - font-size: 10px; - line-height: 10px; - color: $successColor; - } - } - - .connectIcon { - width: 12px; - height: 12px; - margin-left: 7px; - } -} diff --git a/idea/frontend/src/features/wallet/ui/accounts-modal/accounts-modal.tsx b/idea/frontend/src/features/wallet/ui/accounts-modal/accounts-modal.tsx deleted file mode 100644 index 0fcf8ef477..0000000000 --- a/idea/frontend/src/features/wallet/ui/accounts-modal/accounts-modal.tsx +++ /dev/null @@ -1,133 +0,0 @@ -import { useAccount, useAlert } from '@gear-js/react-hooks'; -import { Button, Modal, buttonStyles } from '@gear-js/ui'; -import cx from 'clsx'; - -import { copyToClipboard } from '@/shared/helpers'; -import LogoutSVG from '@/shared/assets/images/actions/logout.svg?react'; -import CopyKeySVG from '@/shared/assets/images/actions/copyKey.svg?react'; - -import { AccountButton } from '../account-button'; -import { useWallet } from '../../hooks'; -import { WALLETS } from '../../consts'; -import styles from './accounts-modal.module.scss'; - -type Props = { - close: () => void; -}; - -const AccountsModal = ({ close }: Props) => { - const { wallets, isAnyWallet, account, login, logout } = useAccount(); - const alert = useAlert(); - - const { wallet, walletId, setWalletId, resetWalletId } = useWallet(); - - const handleLogoutClick = () => { - logout(); - close(); - }; - - const renderWallets = () => - WALLETS.map(([id, { SVG, name }]) => { - const { status, accounts, connect } = wallets?.[id] || {}; - const isEnabled = Boolean(status); - const isConnected = status === 'connected'; - - const accountsCount = accounts?.length; - const accountsStatus = `${accountsCount} ${accountsCount === 1 ? 'account' : 'accounts'}`; - - const buttonClassName = cx( - buttonStyles.button, - buttonStyles.large, - buttonStyles.block, - styles.button, - isEnabled && styles.enabled, - ); - - return ( -
  • - -
  • - ); - }); - - const walletAccounts = wallets && walletId ? wallets[walletId]?.accounts : undefined; - - const renderAccoounts = () => - walletAccounts?.map((_account) => { - const { address, meta } = _account; - const isActive = address === account?.address; - - const handleClick = () => { - if (isActive) return; - - login(_account); - close(); - }; - - const accountBtnClasses = cx( - buttonStyles.large, - styles.accountButton, - isActive ? styles.active : buttonStyles.light, - ); - - return ( -
  • - -
  • - ); - }); - - const renderFooter = () => - (wallet || account) && ( -
    - {wallet &&
    - ); - - return ( - - {isAnyWallet ? ( - <> - {!wallet && } - - {!!wallet && - (walletAccounts?.length ? ( - - ) : ( -

    No accounts found. Please open your extension and create a new account or import existing.

    - ))} - - ) : ( -

    - Wallet extensions were not found or disconnected. Please check how to install a supported wallet and create an - account{' '} - - here - - . -

    - )} -
    - ); -}; - -export { AccountsModal }; diff --git a/idea/frontend/src/features/wallet/ui/accounts-modal/index.ts b/idea/frontend/src/features/wallet/ui/accounts-modal/index.ts deleted file mode 100644 index b514cf7463..0000000000 --- a/idea/frontend/src/features/wallet/ui/accounts-modal/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { AccountsModal } from './accounts-modal'; - -export { AccountsModal }; diff --git a/idea/frontend/src/features/wallet/ui/wallet/index.ts b/idea/frontend/src/features/wallet/ui/wallet/index.ts deleted file mode 100644 index c7f5f4752f..0000000000 --- a/idea/frontend/src/features/wallet/ui/wallet/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Wallet } from './wallet'; - -export { Wallet }; diff --git a/idea/frontend/src/features/wallet/ui/wallet/wallet.module.scss b/idea/frontend/src/features/wallet/ui/wallet/wallet.module.scss deleted file mode 100644 index 19636cd7fa..0000000000 --- a/idea/frontend/src/features/wallet/ui/wallet/wallet.module.scss +++ /dev/null @@ -1,14 +0,0 @@ -@use '@/shared/assets/styles/variables' as *; - -.accountBtn { - background-color: $bgColorSecondary; - - &:hover { - background-color: $bgColorTertiary; - } - - & > div { - // hacky, but need to override Identicon's 'cursor: copy' - cursor: inherit !important; - } -} diff --git a/idea/frontend/src/features/wallet/ui/wallet/wallet.tsx b/idea/frontend/src/features/wallet/ui/wallet/wallet.tsx deleted file mode 100644 index 46f2db2fe1..0000000000 --- a/idea/frontend/src/features/wallet/ui/wallet/wallet.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import { useAccount } from '@gear-js/react-hooks'; -import { Button, buttonStyles } from '@gear-js/ui'; -import cx from 'clsx'; - -import { useModalState } from '@/hooks'; -import { OnboardingTooltip } from '@/shared/ui/onboardingTooltip'; -import SubstrateSVG from '@/shared/assets/images/logos/substrate.svg?react'; - -import { AccountsModal } from '../accounts-modal'; -import { AccountButton } from '../account-button'; -import styles from './wallet.module.scss'; - -const Wallet = () => { - const { account, isAccountReady } = useAccount(); - const [isModalOpen, openModal, closeModal] = useModalState(); - - if (!isAccountReady) return null; - - return ( - <> - {account ? ( - - ) : ( - - + ); +} + +type ModalProps = Omit, 'size' | 'block'> & { + color: 'primary' | 'light'; +}; + +VaraAccountButton.Modal = (props: ModalProps) => ; + +GearAccountButton.Modal = (props: ModalProps) => ; + +export { VaraAccountButton, GearAccountButton }; diff --git a/utils/wallet-connect/src/components/account-button/index.ts b/utils/wallet-connect/src/components/account-button/index.ts new file mode 100644 index 0000000000..7f984112f4 --- /dev/null +++ b/utils/wallet-connect/src/components/account-button/index.ts @@ -0,0 +1,3 @@ +import { VaraAccountButton, GearAccountButton } from './account-button'; + +export { VaraAccountButton, GearAccountButton }; diff --git a/utils/wallet-connect/src/components/balance/balance.module.scss b/utils/wallet-connect/src/components/balance/balance.module.scss new file mode 100644 index 0000000000..9faa4fef0a --- /dev/null +++ b/utils/wallet-connect/src/components/balance/balance.module.scss @@ -0,0 +1,32 @@ +.balance { + display: flex; + align-items: center; + gap: 10px; +} + +.text { + display: flex; + align-items: flex-end; + gap: 4px; + + &.gear { + color: #fff; + } + + &.vara { + color: #000; + } +} + +.value { + font-size: 20px; + font-weight: 700; + line-height: 22px; + letter-spacing: -0.02em; +} + +.unit { + font-size: 10px; + font-weight: 400; + line-height: 14px; +} diff --git a/utils/wallet-connect/src/components/balance/balance.tsx b/utils/wallet-connect/src/components/balance/balance.tsx new file mode 100644 index 0000000000..2775b79aba --- /dev/null +++ b/utils/wallet-connect/src/components/balance/balance.tsx @@ -0,0 +1,33 @@ +import { useAccount, useApi, useBalanceFormat, useDeriveBalancesAll } from '@gear-js/react-hooks'; +import cx from 'clsx'; + +import { ReactComponent as VaraSVG } from '../../assets/vara.svg'; +import styles from './balance.module.scss'; + +type Props = { + variant: 'gear' | 'vara'; +}; + +function Balance({ variant }: Props) { + const { isApiReady } = useApi(); + const { account } = useAccount(); + const { getFormattedBalance } = useBalanceFormat(); + + const { data: balances } = useDeriveBalancesAll({ address: account?.decodedAddress, watch: true }); + const balance = isApiReady && balances ? getFormattedBalance(balances.freeBalance) : undefined; + + if (!balance) return null; + + return ( +
    + + +

    + {balance.value} + {balance.unit} +

    +
    + ); +} + +export { Balance }; diff --git a/utils/wallet-connect/src/components/balance/index.ts b/utils/wallet-connect/src/components/balance/index.ts new file mode 100644 index 0000000000..d35c5d0857 --- /dev/null +++ b/utils/wallet-connect/src/components/balance/index.ts @@ -0,0 +1,3 @@ +import { Balance } from './balance'; + +export { Balance }; diff --git a/utils/wallet-connect/src/components/index.ts b/utils/wallet-connect/src/components/index.ts new file mode 100644 index 0000000000..2580d7123c --- /dev/null +++ b/utils/wallet-connect/src/components/index.ts @@ -0,0 +1,4 @@ +import { Wallet } from './wallet'; +import { WalletModal } from './wallet-modal'; + +export { Wallet, WalletModal }; diff --git a/utils/wallet-connect/src/components/ui-config.ts b/utils/wallet-connect/src/components/ui-config.ts new file mode 100644 index 0000000000..15b44ade40 --- /dev/null +++ b/utils/wallet-connect/src/components/ui-config.ts @@ -0,0 +1,23 @@ +import * as Gear from '@gear-js/ui'; +import * as Vara from '@gear-js/vara-ui'; + +import { GearAccountButton, VaraAccountButton } from './account-button'; +import { GearWalletButton, VaraWalletButton } from './wallet-button'; + +const UI_CONFIG = { + gear: { + Button: Gear.Button, + AccountButton: GearAccountButton, + WalletButton: GearWalletButton, + Modal: Gear.Modal, + }, + + vara: { + Button: Vara.Button, + AccountButton: VaraAccountButton, + WalletButton: VaraWalletButton, + Modal: Vara.Modal, + }, +} as const; + +export { UI_CONFIG }; diff --git a/utils/wallet-connect/src/components/wallet-button/index.ts b/utils/wallet-connect/src/components/wallet-button/index.ts new file mode 100644 index 0000000000..e16e193195 --- /dev/null +++ b/utils/wallet-connect/src/components/wallet-button/index.ts @@ -0,0 +1,3 @@ +import { VaraWalletButton, GearWalletButton } from './wallet-button'; + +export { VaraWalletButton, GearWalletButton }; diff --git a/utils/wallet-connect/src/components/wallet-button/wallet-button.module.scss b/utils/wallet-connect/src/components/wallet-button/wallet-button.module.scss new file mode 100644 index 0000000000..5c14052144 --- /dev/null +++ b/utils/wallet-connect/src/components/wallet-button/wallet-button.module.scss @@ -0,0 +1,16 @@ +.button { + /* overriding @gear-js/ui and @gear-js/vara-ui */ + justify-content: space-between !important; +} + +.wallet { + display: flex; + align-items: center; +} + +.icon { + margin-right: 8px; + background-color: #fff; + border-radius: 50%; + border: 1px solid #ebeeee; +} diff --git a/utils/wallet-connect/src/components/wallet-button/wallet-button.tsx b/utils/wallet-connect/src/components/wallet-button/wallet-button.tsx new file mode 100644 index 0000000000..6ab87e09a2 --- /dev/null +++ b/utils/wallet-connect/src/components/wallet-button/wallet-button.tsx @@ -0,0 +1,69 @@ +import * as Vara from '@gear-js/vara-ui'; +import * as Gear from '@gear-js/ui'; +import cx from 'clsx'; +import { FunctionComponent, ReactNode, SVGProps } from 'react'; + +import styles from './wallet-button.module.scss'; + +type Props = { + children: ReactNode; + disabled: boolean; + onClick: () => void; +}; + +type WalletProps = { + SVG: FunctionComponent & { title?: string | undefined }>; + name: string; +}; + +function Wallet({ SVG, name }: WalletProps) { + return ( + + + {name} + + ); +} + +function VaraWalletButton({ children, SVG, name, ...props }: Props & WalletProps) { + return ( + + + {children} + + ); +} + +function GearWalletButton({ children, SVG, name, ...props }: Props & WalletProps) { + return ( + + ); +} + +VaraWalletButton.Change = ({ SVG, name, children, ...props }: Omit & WalletProps) => ( + + + {children} + +); + +GearWalletButton.Change = ({ SVG, name, children, ...props }: Omit & WalletProps) => ( + +); + +export { VaraWalletButton, GearWalletButton }; diff --git a/utils/wallet-connect/src/components/wallet-modal/index.ts b/utils/wallet-connect/src/components/wallet-modal/index.ts new file mode 100644 index 0000000000..34eab94792 --- /dev/null +++ b/utils/wallet-connect/src/components/wallet-modal/index.ts @@ -0,0 +1,3 @@ +import { WalletModal } from './wallet-modal'; + +export { WalletModal }; diff --git a/utils/wallet-connect/src/components/wallet-modal/wallet-modal.module.scss b/utils/wallet-connect/src/components/wallet-modal/wallet-modal.module.scss new file mode 100644 index 0000000000..4f404faee6 --- /dev/null +++ b/utils/wallet-connect/src/components/wallet-modal/wallet-modal.module.scss @@ -0,0 +1,85 @@ +.list { + display: flex; + flex-direction: column; + gap: 16px; + + .account { + display: flex; + align-items: center; + gap: 10px; + } +} + +.status { + display: flex; + flex-direction: column; + + font-size: 12px; + line-height: 1; + text-align: right; + + .statusText { + font-weight: 600; + + &.gear { + color: #fff; + } + + &.vara { + color: #a2a2a2; + } + } + + .statusAccounts { + font-weight: 800; + + &.gear { + color: #2bd071; + } + + &.vara { + color: #02f8bf; + } + } +} + +.footer { + display: flex; + justify-content: space-between; +} + +.copyButton, +.logoutButton { + &.gear svg path { + fill: #fff; + } +} + +.editIcon { + &.gear { + margin-left: 10px; + + path { + fill: #fff; + } + } +} + +.text { + &.gear { + color: #fff; + } + + &.vara { + color: #000; + } + + a { + text-decoration: underline; + transition: opacity 0.25s; + + &:hover { + opacity: 0.5; + } + } +} diff --git a/utils/wallet-connect/src/components/wallet-modal/wallet-modal.tsx b/utils/wallet-connect/src/components/wallet-modal/wallet-modal.tsx new file mode 100644 index 0000000000..1fe006731a --- /dev/null +++ b/utils/wallet-connect/src/components/wallet-modal/wallet-modal.tsx @@ -0,0 +1,146 @@ +import { useAccount, useAlert } from '@gear-js/react-hooks'; +import cx from 'clsx'; + +import { copyToClipboard } from '../../utils'; +import { ReactComponent as CopySVG } from '../../assets/copy.svg'; +import { ReactComponent as EditSVG } from '../../assets/edit-icon.svg'; +import { ReactComponent as ExitSVG } from '../../assets/exit.svg'; +import { IS_MOBILE_DEVICE, WALLETS } from '../../consts'; +import { useWallet } from '../../hooks'; +import { UI_CONFIG } from '../ui-config'; +import styles from './wallet-modal.module.scss'; + +type Props = { + variant?: 'gear' | 'vara'; + close: () => void; +}; + +function WalletModal({ variant = 'vara', close }: Props) { + const alert = useAlert(); + const { wallets, isAnyWallet, account, login, logout } = useAccount(); + const { wallet, walletAccounts, setWalletId, resetWalletId } = useWallet(); + + const variantCn = styles[variant]; + const { WalletButton, AccountButton, Button, Modal } = UI_CONFIG[variant]; + + const getWallets = () => + WALLETS.map(([id, { SVG, name }]) => { + const { status, accounts, connect } = wallets?.[id] || {}; + const isEnabled = Boolean(status); + const isConnected = status === 'connected'; + + const accountsCount = accounts?.length || 0; + const accountsStatus = `${accountsCount} ${accountsCount === 1 ? 'account' : 'accounts'}`; + + return ( +
  • + (isConnected ? setWalletId(id) : connect?.())} + disabled={!isEnabled}> + + {isConnected ? 'Enabled' : 'Disabled'} + + {isConnected && {accountsStatus}} + + +
  • + ); + }); + + const getAccounts = () => + walletAccounts?.map((_account) => { + const { address, meta } = _account; + + const isActive = address === account?.address; + const color = isActive ? 'primary' : 'light'; + + const handleClick = () => { + if (isActive) return; + + login(_account); + close(); + }; + + const handleCopyClick = () => { + copyToClipboard({ value: address, alert }); + close(); + }; + + return ( +
  • + + +
  • + ); + }); + + const handleLogoutButtonClick = () => { + logout(); + resetWalletId(); + close(); + }; + + const render = () => { + if (!isAnyWallet) + return IS_MOBILE_DEVICE ? ( +

    + To use this application on mobile devices, open this page inside compatible wallets like Nova or SubWallet. +

    + ) : ( +

    + A compatible wallet was not found or is disabled. Install it following the{' '} + + instructions + + . +

    + ); + + if (!walletAccounts) return
      {getWallets()}
    ; + if (walletAccounts.length) return
      {getAccounts()}
    ; + + return ( +

    + No accounts found. Please open your extension and create a new account or import existing. +

    + ); + }; + + const renderFooter = () => { + if (!wallet) return null; + + return ( +
    + + + + + {account && ( +
    + ); + }; + + return ( + + {render()} + + ); +} + +export { WalletModal }; diff --git a/idea/frontend/src/features/wallet/ui/index.ts b/utils/wallet-connect/src/components/wallet/index.ts similarity index 100% rename from idea/frontend/src/features/wallet/ui/index.ts rename to utils/wallet-connect/src/components/wallet/index.ts diff --git a/utils/wallet-connect/src/components/wallet/wallet.module.scss b/utils/wallet-connect/src/components/wallet/wallet.module.scss new file mode 100644 index 0000000000..65d34a7ea3 --- /dev/null +++ b/utils/wallet-connect/src/components/wallet/wallet.module.scss @@ -0,0 +1,5 @@ +.wallet { + display: flex; + align-items: center; + gap: 20px; +} diff --git a/utils/wallet-connect/src/components/wallet/wallet.tsx b/utils/wallet-connect/src/components/wallet/wallet.tsx new file mode 100644 index 0000000000..88a20d69db --- /dev/null +++ b/utils/wallet-connect/src/components/wallet/wallet.tsx @@ -0,0 +1,46 @@ +import { useAccount } from '@gear-js/react-hooks'; +import { useState } from 'react'; + +import { Balance } from '../balance'; +import { WalletModal } from '../wallet-modal'; +import { UI_CONFIG } from '../ui-config'; +import styles from './wallet.module.scss'; + +type Props = { + variant?: 'gear' | 'vara'; + displayBalance?: boolean; + + // temp solution to support responsiveness in dApps MenuHandler, until it's supported here + accountButtonClassName?: string; +}; + +function Wallet({ variant = 'vara', displayBalance = true, accountButtonClassName }: Props) { + const { account, isAccountReady } = useAccount(); + + const [isModalOpen, setIsModalOpen] = useState(false); + const openModal = () => setIsModalOpen(true); + const closeModal = () => setIsModalOpen(false); + + if (!isAccountReady) return null; + const { Button, AccountButton } = UI_CONFIG[variant]; + + return ( + <> +
    + {displayBalance && } + + {account ? ( +
    + +
    + ) : ( +
    + + {isModalOpen && } + + ); +} + +export { Wallet }; diff --git a/utils/wallet-connect/src/consts.ts b/utils/wallet-connect/src/consts.ts new file mode 100644 index 0000000000..6497785afe --- /dev/null +++ b/utils/wallet-connect/src/consts.ts @@ -0,0 +1,27 @@ +import { ReactComponent as EnkryptSVG } from './assets/enkrypt.svg'; +import { ReactComponent as PolkadotSVG } from './assets/polkadot.svg'; +import { ReactComponent as SubWalletSVG } from './assets/subwallet.svg'; +import { ReactComponent as TalismanSVG } from './assets/talisman.svg'; +import { ReactComponent as NovaSVG } from './assets/nova.svg'; +import { Wallets } from './types'; + +const IS_MOBILE_DEVICE = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent); + +type InjectedWindow = Window & { walletExtension?: { isNovaWallet: boolean } }; +const isNovaWallet = Boolean((window as unknown as InjectedWindow).walletExtension?.isNovaWallet); + +const WALLET = isNovaWallet + ? { + 'polkadot-js': { name: 'Nova Wallet', SVG: NovaSVG }, + 'subwallet-js': { name: 'SubWallet', SVG: SubWalletSVG }, + } + : { + 'polkadot-js': { name: 'Polkadot JS', SVG: PolkadotSVG }, + 'subwallet-js': { name: 'SubWallet', SVG: SubWalletSVG }, + talisman: { name: 'Talisman', SVG: TalismanSVG }, + enkrypt: { name: 'Enkrypt', SVG: EnkryptSVG }, + }; + +const WALLETS = Object.entries(WALLET) as Wallets; + +export { IS_MOBILE_DEVICE, WALLET, WALLETS, isNovaWallet }; diff --git a/idea/frontend/src/features/wallet/hooks/index.ts b/utils/wallet-connect/src/hooks.ts similarity index 62% rename from idea/frontend/src/features/wallet/hooks/index.ts rename to utils/wallet-connect/src/hooks.ts index 9d46578232..473d0442ae 100644 --- a/idea/frontend/src/features/wallet/hooks/index.ts +++ b/utils/wallet-connect/src/hooks.ts @@ -1,15 +1,17 @@ import { useAccount } from '@gear-js/react-hooks'; import { useEffect, useState } from 'react'; -import { WALLET } from '../consts'; -import { WalletId } from '../types'; +import { WALLET } from './consts'; +import { WalletId } from './types'; function useWallet() { - const { account } = useAccount(); + const { wallets, account } = useAccount(); const defaultWalletId = account?.meta.source as WalletId | undefined; const [walletId, setWalletId] = useState(defaultWalletId); + const wallet = walletId ? WALLET[walletId] : undefined; + const walletAccounts = wallets && walletId ? wallets[walletId].accounts : undefined; useEffect(() => { setWalletId(defaultWalletId); @@ -17,7 +19,7 @@ function useWallet() { const resetWalletId = () => setWalletId(undefined); - return { wallet, walletId, setWalletId, resetWalletId }; + return { wallet, walletId, walletAccounts, setWalletId, resetWalletId }; } export { useWallet }; diff --git a/utils/wallet-connect/src/index.ts b/utils/wallet-connect/src/index.ts new file mode 100644 index 0000000000..ba0be0ca5c --- /dev/null +++ b/utils/wallet-connect/src/index.ts @@ -0,0 +1,4 @@ +import { Wallet, WalletModal } from './components'; +import { useWallet } from './hooks'; + +export { Wallet, WalletModal, useWallet }; diff --git a/utils/wallet-connect/src/preview/index.scss b/utils/wallet-connect/src/preview/index.scss new file mode 100644 index 0000000000..5eec11fdaa --- /dev/null +++ b/utils/wallet-connect/src/preview/index.scss @@ -0,0 +1,22 @@ +main { + min-height: 100vh; + + display: flex; + gap: 32px; + flex-direction: column; + align-items: center; + justify-content: center; + + background-color: #aaa; + + h1 { + color: rgba(255, 255, 255, 0.9); + } + + > div { + display: flex; + flex-direction: column; + align-items: center; + gap: 16px; + } +} diff --git a/utils/wallet-connect/src/preview/index.tsx b/utils/wallet-connect/src/preview/index.tsx new file mode 100644 index 0000000000..f0ffadcb40 --- /dev/null +++ b/utils/wallet-connect/src/preview/index.tsx @@ -0,0 +1,48 @@ +import { ApiProvider, AccountProvider, useApi } from '@gear-js/react-hooks'; +import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; +import { StrictMode } from 'react'; +import { createRoot } from 'react-dom/client'; + +import { Wallet } from '../components'; + +import '@gear-js/vara-ui/dist/style.css'; +import './index.scss'; + +// eslint-disable-next-line react-refresh/only-export-components +function App() { + const { isApiReady } = useApi(); + + if (!isApiReady) return null; + + return ( +
    +
    +

    Vara

    + +
    + +
    +

    Gear

    + +
    +
    + ); +} + +const apiArgs = { endpoint: import.meta.env.VITE_NODE_ADDRESS }; +const queryClient = new QueryClient(); + +const container = document.getElementById('root'); +const root = createRoot(container as HTMLElement); + +root.render( + + + + + + + + + , +); diff --git a/utils/wallet-connect/src/types.ts b/utils/wallet-connect/src/types.ts new file mode 100644 index 0000000000..c1c674bb4c --- /dev/null +++ b/utils/wallet-connect/src/types.ts @@ -0,0 +1,13 @@ +import { FunctionComponent, SVGProps } from 'react'; +import { WALLET } from './consts'; + +export type WalletValue = { + name: string; + SVG: FunctionComponent & { title?: string | undefined }>; +}; + +type WalletId = keyof typeof WALLET; + +type Wallets = [WalletId, WalletValue][]; + +export type { WalletId, Wallets }; diff --git a/utils/wallet-connect/src/utils.ts b/utils/wallet-connect/src/utils.ts new file mode 100644 index 0000000000..978edf06b4 --- /dev/null +++ b/utils/wallet-connect/src/utils.ts @@ -0,0 +1,33 @@ +import { AlertContainerFactory } from '@gear-js/react-hooks'; + +const copyToClipboard = async ({ alert, value }: { alert: AlertContainerFactory; value: string }) => { + const onSuccess = () => alert.success('Copied'); + const onError = () => alert.error('Copy error'); + + function unsecuredCopyToClipboard(text: string) { + const textArea = document.createElement('textarea'); + textArea.value = text; + document.body.appendChild(textArea); + textArea.focus(); + textArea.select(); + try { + document.execCommand('copy'); + onSuccess(); + } catch (err) { + console.error('Unable to copy to clipboard', err); + onError(); + } + document.body.removeChild(textArea); + } + + if (window.isSecureContext && navigator.clipboard) { + navigator.clipboard + .writeText(value) + .then(() => onSuccess()) + .catch(() => onError()); + } else { + unsecuredCopyToClipboard(value); + } +}; + +export { copyToClipboard }; diff --git a/utils/wallet-connect/src/vite-env.d.ts b/utils/wallet-connect/src/vite-env.d.ts new file mode 100644 index 0000000000..b1f45c7866 --- /dev/null +++ b/utils/wallet-connect/src/vite-env.d.ts @@ -0,0 +1,2 @@ +/// +/// diff --git a/utils/wallet-connect/tsconfig.json b/utils/wallet-connect/tsconfig.json new file mode 100644 index 0000000000..a7fc6fbf23 --- /dev/null +++ b/utils/wallet-connect/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src"], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/utils/wallet-connect/tsconfig.node.json b/utils/wallet-connect/tsconfig.node.json new file mode 100644 index 0000000000..42872c59f5 --- /dev/null +++ b/utils/wallet-connect/tsconfig.node.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "composite": true, + "skipLibCheck": true, + "module": "ESNext", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/utils/wallet-connect/vite.config.ts b/utils/wallet-connect/vite.config.ts new file mode 100644 index 0000000000..e97125ad17 --- /dev/null +++ b/utils/wallet-connect/vite.config.ts @@ -0,0 +1,34 @@ +import react from '@vitejs/plugin-react'; +import { resolve } from 'path'; +import { defineConfig } from 'vite'; +import svgr from 'vite-plugin-svgr'; +import dts from 'vite-plugin-dts'; +import { nodePolyfills } from 'vite-plugin-node-polyfills'; + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [ + react(), + svgr(), + nodePolyfills(), + + dts({ + exclude: ['src/preview'], + }), + ], + + build: { + lib: { + entry: resolve(__dirname, 'src/components/index.ts'), + formats: ['es'], + }, + + rollupOptions: { + external: ['react', '@gear-js/react-hooks', '@gear-js/ui', '@gear-js/vara-ui'], + output: { + globals: { react: 'React' }, + intro: 'import "./style.css";', + }, + }, + }, +}); diff --git a/yarn.lock b/yarn.lock index 36c5536e71..d29defdf21 100644 --- a/yarn.lock +++ b/yarn.lock @@ -247,7 +247,7 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.19.6, @babel/core@npm:^7.21.3, @babel/core@npm:^7.22.20, @babel/core@npm:^7.23.9": +"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.19.6, @babel/core@npm:^7.21.3, @babel/core@npm:^7.22.20, @babel/core@npm:^7.23.9, @babel/core@npm:^7.24.5": version: 7.25.2 resolution: "@babel/core@npm:7.25.2" dependencies: @@ -543,6 +543,17 @@ __metadata: languageName: node linkType: hard +"@babel/parser@npm:^7.25.3": + version: 7.25.6 + resolution: "@babel/parser@npm:7.25.6" + dependencies: + "@babel/types": ^7.25.6 + bin: + parser: ./bin/babel-parser.js + checksum: 85b237ded09ee43cc984493c35f3b1ff8a83e8dbbb8026b8132e692db6567acc5a1659ec928e4baa25499ddd840d7dae9dee3062be7108fe23ec5f94a8066b1e + languageName: node + linkType: hard + "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:^7.25.0": version: 7.25.0 resolution: "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:7.25.0" @@ -1528,7 +1539,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-react-jsx-self@npm:^7.22.5": +"@babel/plugin-transform-react-jsx-self@npm:^7.22.5, @babel/plugin-transform-react-jsx-self@npm:^7.24.5": version: 7.24.7 resolution: "@babel/plugin-transform-react-jsx-self@npm:7.24.7" dependencies: @@ -1539,7 +1550,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-react-jsx-source@npm:^7.22.5": +"@babel/plugin-transform-react-jsx-source@npm:^7.22.5, @babel/plugin-transform-react-jsx-source@npm:^7.24.1": version: 7.24.7 resolution: "@babel/plugin-transform-react-jsx-source@npm:7.24.7" dependencies: @@ -2135,6 +2146,17 @@ __metadata: languageName: node linkType: hard +"@babel/types@npm:^7.25.6": + version: 7.25.6 + resolution: "@babel/types@npm:7.25.6" + dependencies: + "@babel/helper-string-parser": ^7.24.8 + "@babel/helper-validator-identifier": ^7.24.7 + to-fast-properties: ^2.0.0 + checksum: 9b2f84ff3f874ad05b0b9bf06862c56f478b65781801f82296b4cc01bee39e79c20a7c0a06959fed0ee582c8267e1cb21638318655c5e070b0287242a844d1c9 + languageName: node + linkType: hard + "@bcoe/v8-coverage@npm:^0.2.3": version: 0.2.3 resolution: "@bcoe/v8-coverage@npm:0.2.3" @@ -2353,7 +2375,7 @@ __metadata: languageName: node linkType: hard -"@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0": +"@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.3.0, @eslint-community/eslint-utils@npm:^4.4.0": version: 4.4.0 resolution: "@eslint-community/eslint-utils@npm:4.4.0" dependencies: @@ -2371,6 +2393,13 @@ __metadata: languageName: node linkType: hard +"@eslint-community/regexpp@npm:^4.5.0": + version: 4.11.1 + resolution: "@eslint-community/regexpp@npm:4.11.1" + checksum: 6986685529d30e33c2640973c3d8e7ddd31bef3cc8cb10ad54ddc1dea12680779a2c23a45562aa1462c488137a3570e672d122fac7da22d82294382d915cec70 + languageName: node + linkType: hard + "@eslint/eslintrc@npm:^0.4.3": version: 0.4.3 resolution: "@eslint/eslintrc@npm:0.4.3" @@ -2527,6 +2556,7 @@ __metadata: "@gear-js/api": 0.38.1 "@gear-js/react-hooks": "workspace:^" "@gear-js/ui": "workspace:^" + "@gear-js/wallet-connect": "workspace:^" "@hcaptcha/react-hcaptcha": 1.8.1 "@hookform/resolvers": 3.3.2 "@polkadot/api": 11.0.2 @@ -2577,7 +2607,7 @@ __metadata: typescript: 5.5.3 vite: 4.4.11 vite-plugin-checker: 0.6.2 - vite-plugin-node-polyfills: 0.15.0 + vite-plugin-node-polyfills: 0.22.0 vite-plugin-svgr: 4.1.0 yup: 1.3.2 zod: 3.22.4 @@ -2649,7 +2679,7 @@ __metadata: languageName: unknown linkType: soft -"@gear-js/react-hooks@workspace:^, @gear-js/react-hooks@workspace:utils/gear-hooks": +"@gear-js/react-hooks@0.13.0, @gear-js/react-hooks@workspace:^, @gear-js/react-hooks@workspace:utils/gear-hooks": version: 0.0.0-use.local resolution: "@gear-js/react-hooks@workspace:utils/gear-hooks" dependencies: @@ -2717,7 +2747,7 @@ __metadata: languageName: unknown linkType: soft -"@gear-js/ui@workspace:^, @gear-js/ui@workspace:utils/gear-ui": +"@gear-js/ui@0.5.28, @gear-js/ui@workspace:^, @gear-js/ui@workspace:utils/gear-ui": version: 0.0.0-use.local resolution: "@gear-js/ui@workspace:utils/gear-ui" dependencies: @@ -2754,6 +2784,16 @@ __metadata: languageName: unknown linkType: soft +"@gear-js/vara-ui@npm:0.0.11": + version: 0.0.11 + resolution: "@gear-js/vara-ui@npm:0.0.11" + peerDependencies: + react: ^18.2.0 + react-dom: ^18.2.0 + checksum: 4ce2565e611c6a6246f98bc11ffeaa2f5a65921b51047dec3a26a42f00b1241f504fd6892190a0c33f2322d1d63b0627b473ca1a43206148d98fcf26189b4f8b + languageName: node + linkType: hard + "@gear-js/voucher-indexer@workspace:idea/voucher-indexer": version: 0.0.0-use.local resolution: "@gear-js/voucher-indexer@workspace:idea/voucher-indexer" @@ -2781,6 +2821,42 @@ __metadata: languageName: unknown linkType: soft +"@gear-js/wallet-connect@workspace:^, @gear-js/wallet-connect@workspace:utils/wallet-connect": + version: 0.0.0-use.local + resolution: "@gear-js/wallet-connect@workspace:utils/wallet-connect" + dependencies: + "@gear-js/react-hooks": 0.13.0 + "@gear-js/ui": 0.5.28 + "@gear-js/vara-ui": 0.0.11 + "@polkadot/react-identicon": 3.10.1 + "@tanstack/react-query": 5.56.2 + "@types/react": 18.3.2 + "@types/react-dom": 18.3.0 + "@typescript-eslint/eslint-plugin": 6.0.0 + "@typescript-eslint/parser": 6.0.0 + "@vitejs/plugin-react": 4.3.0 + clsx: 2.1.1 + eslint: 8.57.0 + eslint-plugin-react-hooks: 4.6.2 + eslint-plugin-react-refresh: 0.4.7 + sass: 1.77.2 + typescript: 5.0.2 + vite: 4.4.5 + vite-plugin-dts: 3.5.1 + vite-plugin-node-polyfills: 0.22.0 + vite-plugin-svgr: 3.2.0 + peerDependencies: + "@gear-js/react-hooks": ^0.13.0 + "@gear-js/ui": ^0.5.28 + "@gear-js/vara-ui": ^0.0.11 + peerDependenciesMeta: + "@gear-js/ui": + optional: true + "@gear-js/vara-ui": + optional: true + languageName: unknown + linkType: soft + "@gear-js/web-tests@workspace:idea/tests": version: 0.0.0-use.local resolution: "@gear-js/web-tests@workspace:idea/tests" @@ -3421,6 +3497,59 @@ __metadata: languageName: node linkType: hard +"@microsoft/api-extractor-model@npm:7.29.8": + version: 7.29.8 + resolution: "@microsoft/api-extractor-model@npm:7.29.8" + dependencies: + "@microsoft/tsdoc": ~0.15.0 + "@microsoft/tsdoc-config": ~0.17.0 + "@rushstack/node-core-library": 5.9.0 + checksum: 95a6b5df089d8bf44555f4565a6f0eda9323917266b2f4730b606aeb2c7f36df7c2cbcae9ca48a9198af7a33442cda8ce2c791e0f4c7c92f3bdaee6c3190b1f5 + languageName: node + linkType: hard + +"@microsoft/api-extractor@npm:^7.36.3": + version: 7.47.9 + resolution: "@microsoft/api-extractor@npm:7.47.9" + dependencies: + "@microsoft/api-extractor-model": 7.29.8 + "@microsoft/tsdoc": ~0.15.0 + "@microsoft/tsdoc-config": ~0.17.0 + "@rushstack/node-core-library": 5.9.0 + "@rushstack/rig-package": 0.5.3 + "@rushstack/terminal": 0.14.2 + "@rushstack/ts-command-line": 4.22.8 + lodash: ~4.17.15 + minimatch: ~3.0.3 + resolve: ~1.22.1 + semver: ~7.5.4 + source-map: ~0.6.1 + typescript: 5.4.2 + bin: + api-extractor: bin/api-extractor + checksum: 5e96654b388359bd9a1fb85ea7698921ca0f9dfa9c57e48fc9d28625107fea54863d57c82f4080686f190ae0d6fcd8b7fa7c070e7b8acb359b5cd62137e2bb23 + languageName: node + linkType: hard + +"@microsoft/tsdoc-config@npm:~0.17.0": + version: 0.17.0 + resolution: "@microsoft/tsdoc-config@npm:0.17.0" + dependencies: + "@microsoft/tsdoc": 0.15.0 + ajv: ~8.12.0 + jju: ~1.4.0 + resolve: ~1.22.2 + checksum: dd2de8247d0fc29608da83edf4ab73a21370f6ce10d089853303e91b135fdb1436ccec3bd1024f235dd3180dfe5dae7342989eadd03af55cf06f0e974e5fc213 + languageName: node + linkType: hard + +"@microsoft/tsdoc@npm:0.15.0, @microsoft/tsdoc@npm:~0.15.0": + version: 0.15.0 + resolution: "@microsoft/tsdoc@npm:0.15.0" + checksum: 3f693cff07b220b68563e3f86e9f94a9c8d0791a7446f76149c7d62ae5ed5cb4578bb48b9b5f9baa3dd9a9f77be81903c74654a41e0ca4ecf78936654952a8d4 + languageName: node + linkType: hard + "@noble/curves@npm:^1.3.0": version: 1.4.2 resolution: "@noble/curves@npm:1.4.2" @@ -3745,6 +3874,20 @@ __metadata: languageName: node linkType: hard +"@polkadot/keyring@npm:^13.1.1": + version: 13.1.1 + resolution: "@polkadot/keyring@npm:13.1.1" + dependencies: + "@polkadot/util": 13.1.1 + "@polkadot/util-crypto": 13.1.1 + tslib: ^2.7.0 + peerDependencies: + "@polkadot/util": 13.1.1 + "@polkadot/util-crypto": 13.1.1 + checksum: 415077740d4971e4697f20e28705f7ee9c819f8f1f05f2ab3c52342cb23240028bb0dfce683f7e1ed46a66c1c290d2a688edbb29d594bbf0b57eb9a842e5f809 + languageName: node + linkType: hard + "@polkadot/networks@npm:12.6.2, @polkadot/networks@npm:^12.5.1, @polkadot/networks@npm:^12.6.2": version: 12.6.2 resolution: "@polkadot/networks@npm:12.6.2" @@ -3767,6 +3910,42 @@ __metadata: languageName: node linkType: hard +"@polkadot/networks@npm:13.1.1, @polkadot/networks@npm:^13.1.1": + version: 13.1.1 + resolution: "@polkadot/networks@npm:13.1.1" + dependencies: + "@polkadot/util": 13.1.1 + "@substrate/ss58-registry": ^1.50.0 + tslib: ^2.7.0 + checksum: 82c11848e900259dc4c7a9b4829b566003bfb1db815316047042704d73820fb4658e1acdeb71a87de3bcbf531f89180de2f51ca8ef83659126073ef16efadb16 + languageName: node + linkType: hard + +"@polkadot/react-identicon@npm:3.10.1": + version: 3.10.1 + resolution: "@polkadot/react-identicon@npm:3.10.1" + dependencies: + "@polkadot/keyring": ^13.1.1 + "@polkadot/ui-settings": 3.10.1 + "@polkadot/ui-shared": 3.10.1 + "@polkadot/util": ^13.1.1 + "@polkadot/util-crypto": ^13.1.1 + ethereum-blockies-base64: ^1.0.2 + jdenticon: 3.2.0 + react-copy-to-clipboard: ^5.1.0 + styled-components: ^6.1.1 + tslib: ^2.6.2 + peerDependencies: + "@polkadot/keyring": "*" + "@polkadot/util": "*" + "@polkadot/util-crypto": "*" + react: "*" + react-dom: "*" + react-is: "*" + checksum: bdac505dd915f8da81a01f037fd67ebc08e919c3f9d0fea383b4724f6e35239483987f4896d96b73db8b886d38ced1e2246b271d53c73cb813d881075ff3e82a + languageName: node + linkType: hard + "@polkadot/react-identicon@npm:3.6.3": version: 3.6.3 resolution: "@polkadot/react-identicon@npm:3.6.3" @@ -4042,6 +4221,22 @@ __metadata: languageName: node linkType: hard +"@polkadot/ui-settings@npm:3.10.1": + version: 3.10.1 + resolution: "@polkadot/ui-settings@npm:3.10.1" + dependencies: + "@polkadot/networks": ^13.1.1 + "@polkadot/util": ^13.1.1 + eventemitter3: ^5.0.1 + store: ^2.0.12 + tslib: ^2.6.2 + peerDependencies: + "@polkadot/networks": "*" + "@polkadot/util": "*" + checksum: badf72675bcfc5ae52c77340461bace2d0f1852bbbae25e6521127193a02199db0912f77ce34f8f04d8f92143a07a8230ac63e12441756a1b7c4e3b78e955ca2 + languageName: node + linkType: hard + "@polkadot/ui-settings@npm:3.6.3": version: 3.6.3 resolution: "@polkadot/ui-settings@npm:3.6.3" @@ -4058,6 +4253,19 @@ __metadata: languageName: node linkType: hard +"@polkadot/ui-shared@npm:3.10.1": + version: 3.10.1 + resolution: "@polkadot/ui-shared@npm:3.10.1" + dependencies: + colord: ^2.9.3 + tslib: ^2.6.2 + peerDependencies: + "@polkadot/util": "*" + "@polkadot/util-crypto": "*" + checksum: b6717be072fe2291daa8b6c9987af316f23ddb24b9393a76b5dfd66e1f456cbd4ff7f6dbc149672b1ce8c3a28efbd57a6de2d6a0ec4348b751de782c9ff4fac7 + languageName: node + linkType: hard + "@polkadot/ui-shared@npm:3.6.3": version: 3.6.3 resolution: "@polkadot/ui-shared@npm:3.6.3" @@ -4111,6 +4319,26 @@ __metadata: languageName: node linkType: hard +"@polkadot/util-crypto@npm:13.1.1, @polkadot/util-crypto@npm:^13.1.1": + version: 13.1.1 + resolution: "@polkadot/util-crypto@npm:13.1.1" + dependencies: + "@noble/curves": ^1.3.0 + "@noble/hashes": ^1.3.3 + "@polkadot/networks": 13.1.1 + "@polkadot/util": 13.1.1 + "@polkadot/wasm-crypto": ^7.3.2 + "@polkadot/wasm-util": ^7.3.2 + "@polkadot/x-bigint": 13.1.1 + "@polkadot/x-randomvalues": 13.1.1 + "@scure/base": ^1.1.7 + tslib: ^2.7.0 + peerDependencies: + "@polkadot/util": 13.1.1 + checksum: 54a99d68ffe3cc2c455f4a919e5b64e801f0a029b22823d8fb387a97ca70dafaf125449a9f0d713abce96f7e3cb997f1920c6a669f42f3c162792fb48f18e7b8 + languageName: node + linkType: hard + "@polkadot/util@npm:12.6.2, @polkadot/util@npm:^12.5.1, @polkadot/util@npm:^12.6.2": version: 12.6.2 resolution: "@polkadot/util@npm:12.6.2" @@ -4141,6 +4369,21 @@ __metadata: languageName: node linkType: hard +"@polkadot/util@npm:13.1.1, @polkadot/util@npm:^13.1.1": + version: 13.1.1 + resolution: "@polkadot/util@npm:13.1.1" + dependencies: + "@polkadot/x-bigint": 13.1.1 + "@polkadot/x-global": 13.1.1 + "@polkadot/x-textdecoder": 13.1.1 + "@polkadot/x-textencoder": 13.1.1 + "@types/bn.js": ^5.1.5 + bn.js: ^5.2.1 + tslib: ^2.7.0 + checksum: 88c2095454539f9583b1cef96b7265c9890bd7c345823f572ea345f0ee7d9f8b088144a34b84d43a298f3e41fc5f2932e7ec95e137aa09891f28509d0a3d5733 + languageName: node + linkType: hard + "@polkadot/wasm-bridge@npm:7.3.2": version: 7.3.2 resolution: "@polkadot/wasm-bridge@npm:7.3.2" @@ -4241,6 +4484,16 @@ __metadata: languageName: node linkType: hard +"@polkadot/x-bigint@npm:13.1.1": + version: 13.1.1 + resolution: "@polkadot/x-bigint@npm:13.1.1" + dependencies: + "@polkadot/x-global": 13.1.1 + tslib: ^2.7.0 + checksum: 1c2ca55a7e49306a1c5ae5110c5dd13ad7c14e8a6f0ec36226571ab8c4ad468351f97c36ddea2ad88bd540c786dc27941db6ee92dfede42e75e053982e439559 + languageName: node + linkType: hard + "@polkadot/x-fetch@npm:^12.6.2": version: 12.6.2 resolution: "@polkadot/x-fetch@npm:12.6.2" @@ -4281,6 +4534,15 @@ __metadata: languageName: node linkType: hard +"@polkadot/x-global@npm:13.1.1": + version: 13.1.1 + resolution: "@polkadot/x-global@npm:13.1.1" + dependencies: + tslib: ^2.7.0 + checksum: 0cea1b38cb19b07ec1d50d2913f3187e1ecd7a72e58c49017cad93d1f944d0236842e224b5f4ebe5d1f99ca31483643c33500e385553ed774128e0f00edecee8 + languageName: node + linkType: hard + "@polkadot/x-randomvalues@npm:12.6.2": version: 12.6.2 resolution: "@polkadot/x-randomvalues@npm:12.6.2" @@ -4307,6 +4569,19 @@ __metadata: languageName: node linkType: hard +"@polkadot/x-randomvalues@npm:13.1.1": + version: 13.1.1 + resolution: "@polkadot/x-randomvalues@npm:13.1.1" + dependencies: + "@polkadot/x-global": 13.1.1 + tslib: ^2.7.0 + peerDependencies: + "@polkadot/util": 13.1.1 + "@polkadot/wasm-util": "*" + checksum: 30d8d0c4063d5f85d6f4e55c14822dc0304bb115c46a040f8a74a89fecbe20cfc8f8ef826ab816eedc0b80986ecec20d6d76de2095fa7caf203c761a6c2f1a45 + languageName: node + linkType: hard + "@polkadot/x-textdecoder@npm:12.6.2": version: 12.6.2 resolution: "@polkadot/x-textdecoder@npm:12.6.2" @@ -4327,6 +4602,16 @@ __metadata: languageName: node linkType: hard +"@polkadot/x-textdecoder@npm:13.1.1": + version: 13.1.1 + resolution: "@polkadot/x-textdecoder@npm:13.1.1" + dependencies: + "@polkadot/x-global": 13.1.1 + tslib: ^2.7.0 + checksum: 03007249aee07501e8747a2e19448cb435ee5ca7c4e7dc1de667e811ee813e960311f26f1c1ca989391fb5d28600f68b72eded96ee643d0673b4d8e84cfb2ca0 + languageName: node + linkType: hard + "@polkadot/x-textencoder@npm:12.6.2": version: 12.6.2 resolution: "@polkadot/x-textencoder@npm:12.6.2" @@ -4347,6 +4632,16 @@ __metadata: languageName: node linkType: hard +"@polkadot/x-textencoder@npm:13.1.1": + version: 13.1.1 + resolution: "@polkadot/x-textencoder@npm:13.1.1" + dependencies: + "@polkadot/x-global": 13.1.1 + tslib: ^2.7.0 + checksum: 9a72e477a3db29c273f245317cfc72e2752322a3317bc5aa6818e3c620e17551f5bd0685290ed7b67ccc8d3bf94118d806f6c64cff958983e6d8f45278769f29 + languageName: node + linkType: hard + "@polkadot/x-ws@npm:^12.6.2": version: 12.6.2 resolution: "@polkadot/x-ws@npm:12.6.2" @@ -4623,7 +4918,7 @@ __metadata: languageName: node linkType: hard -"@rollup/plugin-inject@npm:^5.0.3": +"@rollup/plugin-inject@npm:^5.0.5": version: 5.0.5 resolution: "@rollup/plugin-inject@npm:5.0.5" dependencies: @@ -4730,6 +5025,22 @@ __metadata: languageName: node linkType: hard +"@rollup/pluginutils@npm:^5.0.2": + version: 5.1.2 + resolution: "@rollup/pluginutils@npm:5.1.2" + dependencies: + "@types/estree": ^1.0.0 + estree-walker: ^2.0.2 + picomatch: ^2.3.1 + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + checksum: 16c8c154fef9a32c513b52bd79c92ac427edccd05a8dc3994f10c296063940c57bf809d05903b473d9d408aa5977d75b98c701f481dd1856d5ffc37187ac0060 + languageName: node + linkType: hard + "@rollup/rollup-android-arm-eabi@npm:4.0.2": version: 4.0.2 resolution: "@rollup/rollup-android-arm-eabi@npm:4.0.2" @@ -4814,6 +5125,64 @@ __metadata: languageName: node linkType: hard +"@rushstack/node-core-library@npm:5.9.0": + version: 5.9.0 + resolution: "@rushstack/node-core-library@npm:5.9.0" + dependencies: + ajv: ~8.13.0 + ajv-draft-04: ~1.0.0 + ajv-formats: ~3.0.1 + fs-extra: ~7.0.1 + import-lazy: ~4.0.0 + jju: ~1.4.0 + resolve: ~1.22.1 + semver: ~7.5.4 + peerDependencies: + "@types/node": "*" + peerDependenciesMeta: + "@types/node": + optional: true + checksum: beb558f118a796260f7df38b48b6669a94bbdb9711715785e0c5a426bd3a38c14721c03fc05e7a33883ec25a331ef0fb9e36438bb451ace021a7248a4f1fc74b + languageName: node + linkType: hard + +"@rushstack/rig-package@npm:0.5.3": + version: 0.5.3 + resolution: "@rushstack/rig-package@npm:0.5.3" + dependencies: + resolve: ~1.22.1 + strip-json-comments: ~3.1.1 + checksum: bf3eadfc434bff273893efd22b319fe159d0e3b95729cb32ce3ad9f4ab4b6fabe3c4dd7f03ee0ddc7b480f0d989e908349eae6d6dce3500f896728a085af7aab + languageName: node + linkType: hard + +"@rushstack/terminal@npm:0.14.2": + version: 0.14.2 + resolution: "@rushstack/terminal@npm:0.14.2" + dependencies: + "@rushstack/node-core-library": 5.9.0 + supports-color: ~8.1.1 + peerDependencies: + "@types/node": "*" + peerDependenciesMeta: + "@types/node": + optional: true + checksum: 90d38e6979737dcd97fdfdcebcc378194eed32a994341846235769273b6446b702e53e51e18fc8a373e8ed989c5622216aa6804198b8c7ae0e65cd6b103b90a1 + languageName: node + linkType: hard + +"@rushstack/ts-command-line@npm:4.22.8": + version: 4.22.8 + resolution: "@rushstack/ts-command-line@npm:4.22.8" + dependencies: + "@rushstack/terminal": 0.14.2 + "@types/argparse": 1.0.38 + argparse: ~1.0.9 + string-argv: ~0.3.1 + checksum: b0108e4b567c364a7c62b30dc3e4d17130b6f8ba16a0457c56b8c898ba84316e72726a4e043ca5183da7bf5d0189aed585ab3ac8bce5991b8e80ac94d333cd6c + languageName: node + linkType: hard + "@scure/base@npm:^1.1.1, @scure/base@npm:^1.1.5": version: 1.1.7 resolution: "@scure/base@npm:1.1.7" @@ -4821,6 +5190,13 @@ __metadata: languageName: node linkType: hard +"@scure/base@npm:^1.1.7": + version: 1.1.9 + resolution: "@scure/base@npm:1.1.9" + checksum: 120820a37dfe9dfe4cab2b7b7460552d08e67dee8057ed5354eb68d8e3440890ae983ce3bee957d2b45684950b454a2b6d71d5ee77c1fd3fddc022e2a510337f + languageName: node + linkType: hard + "@sinclair/typebox@npm:^0.24.1": version: 0.24.51 resolution: "@sinclair/typebox@npm:0.24.51" @@ -5644,6 +6020,13 @@ __metadata: languageName: node linkType: hard +"@substrate/ss58-registry@npm:^1.50.0": + version: 1.50.0 + resolution: "@substrate/ss58-registry@npm:1.50.0" + checksum: d19d933fadf9bfbebd1c4a62c750620de34bd920ca6beb3ad8d66147c6d672e0773b57fce8394ec52a36c60d0564a92b7961ed1eac8508bca0248e23f62b8460 + languageName: node + linkType: hard + "@svgr/babel-plugin-add-jsx-attribute@npm:8.0.0": version: 8.0.0 resolution: "@svgr/babel-plugin-add-jsx-attribute@npm:8.0.0" @@ -5662,6 +6045,15 @@ __metadata: languageName: node linkType: hard +"@svgr/babel-plugin-add-jsx-attribute@npm:^7.0.0": + version: 7.0.0 + resolution: "@svgr/babel-plugin-add-jsx-attribute@npm:7.0.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: ecdf432de38a6789e419758425e766651c14c78e6c537158796dfdbbb930f69fb36f11b5ad046c6fbb70d4c6ad567d6ffc45e3afa3fc5f3330234c34299e96a7 + languageName: node + linkType: hard + "@svgr/babel-plugin-remove-jsx-attribute@npm:*, @svgr/babel-plugin-remove-jsx-attribute@npm:8.0.0": version: 8.0.0 resolution: "@svgr/babel-plugin-remove-jsx-attribute@npm:8.0.0" @@ -5671,6 +6063,15 @@ __metadata: languageName: node linkType: hard +"@svgr/babel-plugin-remove-jsx-attribute@npm:^7.0.0": + version: 7.0.0 + resolution: "@svgr/babel-plugin-remove-jsx-attribute@npm:7.0.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 808ba216eea6904b2c0b664957b1ad4d3e0d9e36635ad2fca7fb2667031730cbbe067421ac0d50209f7c83dc3b6c2eff8f377780268cd1606c85603bc47b18d7 + languageName: node + linkType: hard + "@svgr/babel-plugin-remove-jsx-empty-expression@npm:*, @svgr/babel-plugin-remove-jsx-empty-expression@npm:8.0.0": version: 8.0.0 resolution: "@svgr/babel-plugin-remove-jsx-empty-expression@npm:8.0.0" @@ -5680,6 +6081,15 @@ __metadata: languageName: node linkType: hard +"@svgr/babel-plugin-remove-jsx-empty-expression@npm:^7.0.0": + version: 7.0.0 + resolution: "@svgr/babel-plugin-remove-jsx-empty-expression@npm:7.0.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: da0cae989cc99b5437c877412da6251eef57edfff8514b879c1245b6519edfda101ebc4ba2be3cce3aa9a6014050ea4413e004084d839afd8ac8ffc587a921bf + languageName: node + linkType: hard + "@svgr/babel-plugin-replace-jsx-attribute-value@npm:8.0.0": version: 8.0.0 resolution: "@svgr/babel-plugin-replace-jsx-attribute-value@npm:8.0.0" @@ -5698,6 +6108,15 @@ __metadata: languageName: node linkType: hard +"@svgr/babel-plugin-replace-jsx-attribute-value@npm:^7.0.0": + version: 7.0.0 + resolution: "@svgr/babel-plugin-replace-jsx-attribute-value@npm:7.0.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: e624918b545e414a1d0fbace6fc6f8c1c27dac4bf6e5fd4cbc9d8fbc9353fdf4bf6c4fe8b84fb938dfb5c0076cd2ed90b91ac60c0a7011f6e8b0cb71eabe60b3 + languageName: node + linkType: hard + "@svgr/babel-plugin-svg-dynamic-title@npm:8.0.0": version: 8.0.0 resolution: "@svgr/babel-plugin-svg-dynamic-title@npm:8.0.0" @@ -5716,6 +6135,15 @@ __metadata: languageName: node linkType: hard +"@svgr/babel-plugin-svg-dynamic-title@npm:^7.0.0": + version: 7.0.0 + resolution: "@svgr/babel-plugin-svg-dynamic-title@npm:7.0.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 3ffc97cc61573ae4fb2e013ec0572b2273f55e8e125bb6c7fc69ae9fb433a675dc879f85166979cf21e1d0f1a5e168dabf116dcc468f132e83928b66cd791e1a + languageName: node + linkType: hard + "@svgr/babel-plugin-svg-em-dimensions@npm:8.0.0": version: 8.0.0 resolution: "@svgr/babel-plugin-svg-em-dimensions@npm:8.0.0" @@ -5734,6 +6162,15 @@ __metadata: languageName: node linkType: hard +"@svgr/babel-plugin-svg-em-dimensions@npm:^7.0.0": + version: 7.0.0 + resolution: "@svgr/babel-plugin-svg-em-dimensions@npm:7.0.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 0f98ee5269983038ec8098fd1906f600199a9c7a48caca9ced1644f988cdb06acc434ec239554d8987bc2098a772c5b472f1cbb6a46dc8f39aa353aea818c963 + languageName: node + linkType: hard + "@svgr/babel-plugin-transform-react-native-svg@npm:8.1.0": version: 8.1.0 resolution: "@svgr/babel-plugin-transform-react-native-svg@npm:8.1.0" @@ -5752,6 +6189,15 @@ __metadata: languageName: node linkType: hard +"@svgr/babel-plugin-transform-react-native-svg@npm:^7.0.0": + version: 7.0.0 + resolution: "@svgr/babel-plugin-transform-react-native-svg@npm:7.0.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 20067965349a9ed5ec339d63a2983a613135ae4dac416bd754683e41fdc91671f62d1950955f4ae57ec03525d13d7b0db467d4c2eb31ec22eafbe240fc840836 + languageName: node + linkType: hard + "@svgr/babel-plugin-transform-svg-component@npm:8.0.0": version: 8.0.0 resolution: "@svgr/babel-plugin-transform-svg-component@npm:8.0.0" @@ -5770,6 +6216,15 @@ __metadata: languageName: node linkType: hard +"@svgr/babel-plugin-transform-svg-component@npm:^7.0.0": + version: 7.0.0 + resolution: "@svgr/babel-plugin-transform-svg-component@npm:7.0.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: cf5be9c6b24a4a9c0afefe67214370af1cd562d9a06082a89486ec25298a223766cdf57591c92750764068a0d27377c3ce3a9609d18eaae59f64c94e60f2b25c + languageName: node + linkType: hard + "@svgr/babel-preset@npm:8.1.0": version: 8.1.0 resolution: "@svgr/babel-preset@npm:8.1.0" @@ -5806,6 +6261,24 @@ __metadata: languageName: node linkType: hard +"@svgr/babel-preset@npm:^7.0.0": + version: 7.0.0 + resolution: "@svgr/babel-preset@npm:7.0.0" + dependencies: + "@svgr/babel-plugin-add-jsx-attribute": ^7.0.0 + "@svgr/babel-plugin-remove-jsx-attribute": ^7.0.0 + "@svgr/babel-plugin-remove-jsx-empty-expression": ^7.0.0 + "@svgr/babel-plugin-replace-jsx-attribute-value": ^7.0.0 + "@svgr/babel-plugin-svg-dynamic-title": ^7.0.0 + "@svgr/babel-plugin-svg-em-dimensions": ^7.0.0 + "@svgr/babel-plugin-transform-react-native-svg": ^7.0.0 + "@svgr/babel-plugin-transform-svg-component": ^7.0.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 8c3ff1df1627b2db03e4755281b02e7f440323c9c9f71e3c8ebdab0e1966e24ca16686224da72a92e34b722e693bfa408aca5c62d42b02382e0c528bd3860be6 + languageName: node + linkType: hard + "@svgr/core@npm:^6.5.1": version: 6.5.1 resolution: "@svgr/core@npm:6.5.1" @@ -5819,6 +6292,18 @@ __metadata: languageName: node linkType: hard +"@svgr/core@npm:^7.0.0": + version: 7.0.0 + resolution: "@svgr/core@npm:7.0.0" + dependencies: + "@babel/core": ^7.21.3 + "@svgr/babel-preset": ^7.0.0 + camelcase: ^6.2.0 + cosmiconfig: ^8.1.3 + checksum: 34fa14557baf560c78a6d7ac79401d35feb081d54ab55ee1b43d1649a89b322b4ecc7dba3daca0063af1f639c499cea1c46e34e5b066655ae7dc3553c1a64672 + languageName: node + linkType: hard + "@svgr/core@npm:^8.1.0": version: 8.1.0 resolution: "@svgr/core@npm:8.1.0" @@ -5852,6 +6337,16 @@ __metadata: languageName: node linkType: hard +"@svgr/hast-util-to-babel-ast@npm:^7.0.0": + version: 7.0.0 + resolution: "@svgr/hast-util-to-babel-ast@npm:7.0.0" + dependencies: + "@babel/types": ^7.21.3 + entities: ^4.4.0 + checksum: c2168c36c8d25e876da879815728310cf204579c97a73908ce33b063cccfb9a18b6e53f53c6daf81506a96761d84b6261bf64faf26f16453f27e73cb322a9256 + languageName: node + linkType: hard + "@svgr/plugin-jsx@npm:^6.5.1": version: 6.5.1 resolution: "@svgr/plugin-jsx@npm:6.5.1" @@ -5866,6 +6361,18 @@ __metadata: languageName: node linkType: hard +"@svgr/plugin-jsx@npm:^7.0.0": + version: 7.0.0 + resolution: "@svgr/plugin-jsx@npm:7.0.0" + dependencies: + "@babel/core": ^7.21.3 + "@svgr/babel-preset": ^7.0.0 + "@svgr/hast-util-to-babel-ast": ^7.0.0 + svg-parser: ^2.0.4 + checksum: 009421b8e3f32bf13ebec4d47c7997106cd806c6922349871f2d9a77cd3304f55d30630dd8948ff77a9ead2ee1869ac39ad65cf95ab95b2192ef21d5704bd367 + languageName: node + linkType: hard + "@svgr/plugin-jsx@npm:^8.1.0": version: 8.1.0 resolution: "@svgr/plugin-jsx@npm:8.1.0" @@ -5935,6 +6442,13 @@ __metadata: languageName: node linkType: hard +"@tanstack/query-core@npm:5.56.2": + version: 5.56.2 + resolution: "@tanstack/query-core@npm:5.56.2" + checksum: e78430464de89fd2543155449391415983c7cdcd1ff2bb86da019414204b6800e2405e341db88000b36a101d3619ee7e94e90da1fa5497b2e021c5765924a64c + languageName: node + linkType: hard + "@tanstack/react-query@npm:5.29.0": version: 5.29.0 resolution: "@tanstack/react-query@npm:5.29.0" @@ -5946,6 +6460,17 @@ __metadata: languageName: node linkType: hard +"@tanstack/react-query@npm:5.56.2": + version: 5.56.2 + resolution: "@tanstack/react-query@npm:5.56.2" + dependencies: + "@tanstack/query-core": 5.56.2 + peerDependencies: + react: ^18 || ^19 + checksum: 7819a3a316c95df41844bd6e3435511594c3762320c21ee1ef2205ede18a87faae4556ff84d52b36ba17c99540b9554e72a5acf0c225481bdaf107ea79ace815 + languageName: node + linkType: hard + "@testing-library/dom@npm:^8.5.0": version: 8.20.1 resolution: "@testing-library/dom@npm:8.20.1" @@ -6063,6 +6588,13 @@ __metadata: languageName: node linkType: hard +"@types/argparse@npm:1.0.38": + version: 1.0.38 + resolution: "@types/argparse@npm:1.0.38" + checksum: 26ed7e3f1e3595efdb883a852f5205f971b798e4c28b7e30a32c5298eee596e8b45834ce831f014d250b9730819ab05acff5b31229666d3af4ba465b4697d0eb + languageName: node + linkType: hard + "@types/aria-query@npm:^5.0.1": version: 5.0.4 resolution: "@types/aria-query@npm:5.0.4" @@ -6070,7 +6602,7 @@ __metadata: languageName: node linkType: hard -"@types/babel__core@npm:^7.1.14, @types/babel__core@npm:^7.20.2": +"@types/babel__core@npm:^7.1.14, @types/babel__core@npm:^7.20.2, @types/babel__core@npm:^7.20.5": version: 7.20.5 resolution: "@types/babel__core@npm:7.20.5" dependencies: @@ -6345,7 +6877,7 @@ __metadata: languageName: node linkType: hard -"@types/json-schema@npm:^7.0.12, @types/json-schema@npm:^7.0.7, @types/json-schema@npm:^7.0.9": +"@types/json-schema@npm:^7.0.11, @types/json-schema@npm:^7.0.12, @types/json-schema@npm:^7.0.7, @types/json-schema@npm:^7.0.9": version: 7.0.15 resolution: "@types/json-schema@npm:7.0.15" checksum: 97ed0cb44d4070aecea772b7b2e2ed971e10c81ec87dd4ecc160322ffa55ff330dace1793489540e3e318d90942064bb697cc0f8989391797792d919737b3b98 @@ -6597,6 +7129,16 @@ __metadata: languageName: node linkType: hard +"@types/react@npm:18.3.2": + version: 18.3.2 + resolution: "@types/react@npm:18.3.2" + dependencies: + "@types/prop-types": "*" + csstype: ^3.0.2 + checksum: d0b8b9d0ede6cd28dbbe34106d914b5e3652d9d7aa9d0f32fe6171506b6fc7c826d9d6571642976a5422bd29c5022fd893a710ed59a1177a0c1df8e02cf17ffe + languageName: node + linkType: hard + "@types/redis@npm:^4.0.11": version: 4.0.11 resolution: "@types/redis@npm:4.0.11" @@ -6817,6 +7359,33 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/eslint-plugin@npm:6.0.0": + version: 6.0.0 + resolution: "@typescript-eslint/eslint-plugin@npm:6.0.0" + dependencies: + "@eslint-community/regexpp": ^4.5.0 + "@typescript-eslint/scope-manager": 6.0.0 + "@typescript-eslint/type-utils": 6.0.0 + "@typescript-eslint/utils": 6.0.0 + "@typescript-eslint/visitor-keys": 6.0.0 + debug: ^4.3.4 + grapheme-splitter: ^1.0.4 + graphemer: ^1.4.0 + ignore: ^5.2.4 + natural-compare: ^1.4.0 + natural-compare-lite: ^1.4.0 + semver: ^7.5.0 + ts-api-utils: ^1.0.1 + peerDependencies: + "@typescript-eslint/parser": ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 863f30b8ceb24d104fc8a41774e4f597a35525533aa99721198293b51628a2d986dcc6413893f27eb9db5a49c2fd2cc91d3aece8ed23d590f3eb4e9939c3d6ad + languageName: node + linkType: hard + "@typescript-eslint/eslint-plugin@npm:6.7.5": version: 6.7.5 resolution: "@typescript-eslint/eslint-plugin@npm:6.7.5" @@ -6892,6 +7461,24 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/parser@npm:6.0.0": + version: 6.0.0 + resolution: "@typescript-eslint/parser@npm:6.0.0" + dependencies: + "@typescript-eslint/scope-manager": 6.0.0 + "@typescript-eslint/types": 6.0.0 + "@typescript-eslint/typescript-estree": 6.0.0 + "@typescript-eslint/visitor-keys": 6.0.0 + debug: ^4.3.4 + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: a22f0c8f67eb244134f9d79d78faf1b6e2c0965495d78eef94a5680868f3d0fd9446a3ce5dc1e36dde02587da5d962944f3d83679c712d0b819ac99cdb9f7143 + languageName: node + linkType: hard + "@typescript-eslint/parser@npm:6.7.5": version: 6.7.5 resolution: "@typescript-eslint/parser@npm:6.7.5" @@ -6930,6 +7517,16 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/scope-manager@npm:6.0.0": + version: 6.0.0 + resolution: "@typescript-eslint/scope-manager@npm:6.0.0" + dependencies: + "@typescript-eslint/types": 6.0.0 + "@typescript-eslint/visitor-keys": 6.0.0 + checksum: 450015be6454f953d0ea0da020ab47597e96a7a15c1002eed16c57430783bd7b045513d57a126606fb35e8971f1ce65fbefd845e3b5496bf75284cbe1681d0b9 + languageName: node + linkType: hard + "@typescript-eslint/scope-manager@npm:6.7.5": version: 6.7.5 resolution: "@typescript-eslint/scope-manager@npm:6.7.5" @@ -6957,6 +7554,23 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/type-utils@npm:6.0.0": + version: 6.0.0 + resolution: "@typescript-eslint/type-utils@npm:6.0.0" + dependencies: + "@typescript-eslint/typescript-estree": 6.0.0 + "@typescript-eslint/utils": 6.0.0 + debug: ^4.3.4 + ts-api-utils: ^1.0.1 + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 53f46237891cfa738f6a4bc766a4dbb8d745b1cb9cbe2d2b40f2a4abcf0327d4aa92d9ce5361e87cd26d82e0159f358e28b0c67759eb053c4fd752654dc9dcb1 + languageName: node + linkType: hard + "@typescript-eslint/type-utils@npm:6.7.5": version: 6.7.5 resolution: "@typescript-eslint/type-utils@npm:6.7.5" @@ -6988,6 +7602,13 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/types@npm:6.0.0": + version: 6.0.0 + resolution: "@typescript-eslint/types@npm:6.0.0" + checksum: a2e232b66b0b057152f4a94d7e0be75f32e389c9c1ec9ed9901ed5aab6e5df08c07bde9865710e315d835e4400ec2232f9c3c525b6edf8a85675ebfbfb69d3a5 + languageName: node + linkType: hard + "@typescript-eslint/types@npm:6.7.5": version: 6.7.5 resolution: "@typescript-eslint/types@npm:6.7.5" @@ -7031,6 +7652,24 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/typescript-estree@npm:6.0.0": + version: 6.0.0 + resolution: "@typescript-eslint/typescript-estree@npm:6.0.0" + dependencies: + "@typescript-eslint/types": 6.0.0 + "@typescript-eslint/visitor-keys": 6.0.0 + debug: ^4.3.4 + globby: ^11.1.0 + is-glob: ^4.0.3 + semver: ^7.5.0 + ts-api-utils: ^1.0.1 + peerDependenciesMeta: + typescript: + optional: true + checksum: 6214ff9cc3c4fd7fe03f846e96a498ecf85916083bb60d419bc5a12142cff912670032b1de5ea52ab353ca7eeb4e1cc8fa475a22958b010043c88e274df49859 + languageName: node + linkType: hard + "@typescript-eslint/typescript-estree@npm:6.7.5": version: 6.7.5 resolution: "@typescript-eslint/typescript-estree@npm:6.7.5" @@ -7067,6 +7706,24 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/utils@npm:6.0.0": + version: 6.0.0 + resolution: "@typescript-eslint/utils@npm:6.0.0" + dependencies: + "@eslint-community/eslint-utils": ^4.3.0 + "@types/json-schema": ^7.0.11 + "@types/semver": ^7.3.12 + "@typescript-eslint/scope-manager": 6.0.0 + "@typescript-eslint/types": 6.0.0 + "@typescript-eslint/typescript-estree": 6.0.0 + eslint-scope: ^5.1.1 + semver: ^7.5.0 + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + checksum: 94b9b616282f6fa1ae50ba371a482a3c8c50268ef8039b4e86d29c445e95025c819358a5cc9955c4668482d97ef026e7a49e7f4b3a4685347136ef5bbd297e4d + languageName: node + linkType: hard + "@typescript-eslint/utils@npm:6.7.5": version: 6.7.5 resolution: "@typescript-eslint/utils@npm:6.7.5" @@ -7104,6 +7761,16 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/visitor-keys@npm:6.0.0": + version: 6.0.0 + resolution: "@typescript-eslint/visitor-keys@npm:6.0.0" + dependencies: + "@typescript-eslint/types": 6.0.0 + eslint-visitor-keys: ^3.4.1 + checksum: b0d9848a4490174db1d25b5f336548bb11dde4e0ce664c3dc341bed89fb3a3ada091aeb7f5d2d371433815332d93339c6cb77f7a24469c329c3d055b15237bfa + languageName: node + linkType: hard + "@typescript-eslint/visitor-keys@npm:6.7.5": version: 6.7.5 resolution: "@typescript-eslint/visitor-keys@npm:6.7.5" @@ -7136,6 +7803,101 @@ __metadata: languageName: node linkType: hard +"@vitejs/plugin-react@npm:4.3.0": + version: 4.3.0 + resolution: "@vitejs/plugin-react@npm:4.3.0" + dependencies: + "@babel/core": ^7.24.5 + "@babel/plugin-transform-react-jsx-self": ^7.24.5 + "@babel/plugin-transform-react-jsx-source": ^7.24.1 + "@types/babel__core": ^7.20.5 + react-refresh: ^0.14.2 + peerDependencies: + vite: ^4.2.0 || ^5.0.0 + checksum: e4642c081e74e701fc07f03f505b44eb428d7105461b8026e7364ecd30dcf7785126bf272767a3bc36899b6abe85479af444612ef6d09509d9bc7d6025cac925 + languageName: node + linkType: hard + +"@volar/language-core@npm:1.11.1, @volar/language-core@npm:~1.11.1": + version: 1.11.1 + resolution: "@volar/language-core@npm:1.11.1" + dependencies: + "@volar/source-map": 1.11.1 + checksum: 7f98fbeb96ff1093dbaa47e790575a98d1fd2103d9bb1598ec7b0ae787fc6af2ffcea12fdea0f0a4e057f38f6ee3a60bd54f2af3985159319021771f79df9451 + languageName: node + linkType: hard + +"@volar/source-map@npm:1.11.1, @volar/source-map@npm:~1.11.1": + version: 1.11.1 + resolution: "@volar/source-map@npm:1.11.1" + dependencies: + muggle-string: ^0.3.1 + checksum: 1ec1034432ee51a0afe187ba9158292dd607a90d01120ee8a36cf27f5d464da5282c8fe7b0de82f52f45474a840c63eba666254c5c21ca5466dc02d0c95cd147 + languageName: node + linkType: hard + +"@volar/typescript@npm:~1.11.1": + version: 1.11.1 + resolution: "@volar/typescript@npm:1.11.1" + dependencies: + "@volar/language-core": 1.11.1 + path-browserify: ^1.0.1 + checksum: 0db2fc32db133e493f05dbafd248560a6d4e5b071a0d80422c67b1875bd36980c113915d876a83e855d55c2880b2e7b9f04f803ce3504a4d6fafcc0b801c621b + languageName: node + linkType: hard + +"@vue/compiler-core@npm:3.5.10": + version: 3.5.10 + resolution: "@vue/compiler-core@npm:3.5.10" + dependencies: + "@babel/parser": ^7.25.3 + "@vue/shared": 3.5.10 + entities: ^4.5.0 + estree-walker: ^2.0.2 + source-map-js: ^1.2.0 + checksum: 7c13ccff151818d757c5985e286f596ff2daf0a6b03ecc9f67035cdcd91b463563da8a4e6190db3367d73fcaa07804060beb4f51ed532ad5f1f602b47d29783f + languageName: node + linkType: hard + +"@vue/compiler-dom@npm:^3.3.0": + version: 3.5.10 + resolution: "@vue/compiler-dom@npm:3.5.10" + dependencies: + "@vue/compiler-core": 3.5.10 + "@vue/shared": 3.5.10 + checksum: 63354721022c948573303556c031365be6e2957bbc222d643be500129a1799e00a37ac3dc2b4b653c78e8c64a165367e13ca6e187f6cf7a69ce9c6fc73fd762d + languageName: node + linkType: hard + +"@vue/language-core@npm:1.8.27, @vue/language-core@npm:^1.8.8": + version: 1.8.27 + resolution: "@vue/language-core@npm:1.8.27" + dependencies: + "@volar/language-core": ~1.11.1 + "@volar/source-map": ~1.11.1 + "@vue/compiler-dom": ^3.3.0 + "@vue/shared": ^3.3.0 + computeds: ^0.0.1 + minimatch: ^9.0.3 + muggle-string: ^0.3.1 + path-browserify: ^1.0.1 + vue-template-compiler: ^2.7.14 + peerDependencies: + typescript: "*" + peerDependenciesMeta: + typescript: + optional: true + checksum: 8660c05319be8dc5daacc2cd929171434215d29f3ad5bfbe0038d1967db05b8bf640286b25f338845cc1e3890b4aaa239ac9e8cb832cc8a50a5bbdff31b2edd1 + languageName: node + linkType: hard + +"@vue/shared@npm:3.5.10, @vue/shared@npm:^3.3.0": + version: 3.5.10 + resolution: "@vue/shared@npm:3.5.10" + checksum: 87d2fa140f80c1a4fc657b9b37b1db41ef89e8037c76b04c8ad0115fecc56d10e9694247d07b6a2f669d6af92c2377f722ac0380c9c9675410091d7b7839e701 + languageName: node + linkType: hard + "abab@npm:^2.0.6": version: 2.0.6 resolution: "abab@npm:2.0.6" @@ -7234,6 +7996,32 @@ __metadata: languageName: node linkType: hard +"ajv-draft-04@npm:~1.0.0": + version: 1.0.0 + resolution: "ajv-draft-04@npm:1.0.0" + peerDependencies: + ajv: ^8.5.0 + peerDependenciesMeta: + ajv: + optional: true + checksum: 3f11fa0e7f7359bef6608657f02ab78e9cc62b1fb7bdd860db0d00351b3863a1189c1a23b72466d2d82726cab4eb20725c76f5e7c134a89865e2bfd0e6828137 + languageName: node + linkType: hard + +"ajv-formats@npm:~3.0.1": + version: 3.0.1 + resolution: "ajv-formats@npm:3.0.1" + dependencies: + ajv: ^8.0.0 + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + checksum: f4e1fe232d67fcafc02eafe373a7a9962351e0439dd0736647ca75c93c3da23b430b6502c255ab4315410ae330d4f3013ac9fe226c40b2524ca93a58e786d086 + languageName: node + linkType: hard + "ajv@npm:^6.10.0, ajv@npm:^6.12.4": version: 6.12.6 resolution: "ajv@npm:6.12.6" @@ -7246,7 +8034,7 @@ __metadata: languageName: node linkType: hard -"ajv@npm:^8.0.1": +"ajv@npm:^8.0.0, ajv@npm:^8.0.1": version: 8.17.1 resolution: "ajv@npm:8.17.1" dependencies: @@ -7258,6 +8046,30 @@ __metadata: languageName: node linkType: hard +"ajv@npm:~8.12.0": + version: 8.12.0 + resolution: "ajv@npm:8.12.0" + dependencies: + fast-deep-equal: ^3.1.1 + json-schema-traverse: ^1.0.0 + require-from-string: ^2.0.2 + uri-js: ^4.2.2 + checksum: 4dc13714e316e67537c8b31bc063f99a1d9d9a497eb4bbd55191ac0dcd5e4985bbb71570352ad6f1e76684fb6d790928f96ba3b2d4fd6e10024be9612fe3f001 + languageName: node + linkType: hard + +"ajv@npm:~8.13.0": + version: 8.13.0 + resolution: "ajv@npm:8.13.0" + dependencies: + fast-deep-equal: ^3.1.3 + json-schema-traverse: ^1.0.0 + require-from-string: ^2.0.2 + uri-js: ^4.4.1 + checksum: 6de82d0b2073e645ca3300561356ddda0234f39b35d2125a8700b650509b296f41c00ab69f53178bbe25ad688bd6ac3747ab44101f2f4bd245952e8fd6ccc3c1 + languageName: node + linkType: hard + "amqplib@npm:0.10.3": version: 0.10.3 resolution: "amqplib@npm:0.10.3" @@ -7523,7 +8335,7 @@ __metadata: languageName: node linkType: hard -"argparse@npm:^1.0.7": +"argparse@npm:^1.0.7, argparse@npm:~1.0.9": version: 1.0.10 resolution: "argparse@npm:1.0.10" dependencies: @@ -8288,16 +9100,6 @@ __metadata: languageName: node linkType: hard -"buffer-polyfill@npm:buffer@^6.0.3, buffer@npm:^6.0.3": - version: 6.0.3 - resolution: "buffer@npm:6.0.3" - dependencies: - base64-js: ^1.3.1 - ieee754: ^1.2.1 - checksum: 5ad23293d9a731e4318e420025800b42bf0d264004c0286c8cc010af7a270c7a0f6522e84f54b9ad65cbd6db20b8badbfd8d2ebf4f80fa03dab093b89e68c3f9 - languageName: node - linkType: hard - "buffer-writer@npm:2.0.0": version: 2.0.0 resolution: "buffer-writer@npm:2.0.0" @@ -8322,6 +9124,16 @@ __metadata: languageName: node linkType: hard +"buffer@npm:^6.0.3": + version: 6.0.3 + resolution: "buffer@npm:6.0.3" + dependencies: + base64-js: ^1.3.1 + ieee754: ^1.2.1 + checksum: 5ad23293d9a731e4318e420025800b42bf0d264004c0286c8cc010af7a270c7a0f6522e84f54b9ad65cbd6db20b8badbfd8d2ebf4f80fa03dab093b89e68c3f9 + languageName: node + linkType: hard + "bufferutil@npm:^4.0.1": version: 4.0.8 resolution: "bufferutil@npm:4.0.8" @@ -8678,6 +9490,13 @@ __metadata: languageName: node linkType: hard +"clsx@npm:2.1.1": + version: 2.1.1 + resolution: "clsx@npm:2.1.1" + checksum: acd3e1ab9d8a433ecb3cc2f6a05ab95fe50b4a3cfc5ba47abb6cbf3754585fcb87b84e90c822a1f256c4198e3b41c7f6c391577ffc8678ad587fc0976b24fd57 + languageName: node + linkType: hard + "cluster-key-slot@npm:1.1.2, cluster-key-slot@npm:^1.1.0": version: 1.1.2 resolution: "cluster-key-slot@npm:1.1.2" @@ -8840,6 +9659,13 @@ __metadata: languageName: node linkType: hard +"computeds@npm:^0.0.1": + version: 0.0.1 + resolution: "computeds@npm:0.0.1" + checksum: 9d81c5850b7c48072253e15e369f72da22288e9d6a9be32adc2729ba076dddec51078e84e00dae9c567cdb2c6e1dd5981f985561b519976a29f1ecc9869779f2 + languageName: node + linkType: hard + "concat-map@npm:0.0.1": version: 0.0.1 resolution: "concat-map@npm:0.0.1" @@ -9411,6 +10237,13 @@ __metadata: languageName: node linkType: hard +"de-indent@npm:^1.0.2": + version: 1.0.2 + resolution: "de-indent@npm:1.0.2" + checksum: 8deacc0f4a397a4414a0fc4d0034d2b7782e7cb4eaf34943ea47754e08eccf309a0e71fa6f56cc48de429ede999a42d6b4bca761bf91683be0095422dbf24611 + languageName: node + linkType: hard + "debug@npm:2.6.9, debug@npm:^2.2.0": version: 2.6.9 resolution: "debug@npm:2.6.9" @@ -10004,7 +10837,7 @@ __metadata: languageName: node linkType: hard -"entities@npm:^4.4.0": +"entities@npm:^4.4.0, entities@npm:^4.5.0": version: 4.5.0 resolution: "entities@npm:4.5.0" checksum: 853f8ebd5b425d350bffa97dd6958143179a5938352ccae092c62d1267c4e392a039be1bae7d51b6e4ffad25f51f9617531fedf5237f15df302ccfb452cbf2d7 @@ -10504,6 +11337,15 @@ __metadata: languageName: node linkType: hard +"eslint-plugin-react-hooks@npm:4.6.2": + version: 4.6.2 + resolution: "eslint-plugin-react-hooks@npm:4.6.2" + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + checksum: 395c433610f59577cfcf3f2e42bcb130436c8a0b3777ac64f441d88c5275f4fcfc89094cedab270f2822daf29af1079151a7a6579a8e9ea8cee66540ba0384c4 + languageName: node + linkType: hard + "eslint-plugin-react-refresh@npm:0.4.3": version: 0.4.3 resolution: "eslint-plugin-react-refresh@npm:0.4.3" @@ -10513,6 +11355,15 @@ __metadata: languageName: node linkType: hard +"eslint-plugin-react-refresh@npm:0.4.7": + version: 0.4.7 + resolution: "eslint-plugin-react-refresh@npm:0.4.7" + peerDependencies: + eslint: ">=7" + checksum: b2fe14d4ed158b6380ffd9831a5ebed4c79828ea806536d5db0aa8370f8a3878b198d77fc7da18bfd862cd9eb19ed4472cc9977f727f81679f80dcb48f8a3861 + languageName: node + linkType: hard + "eslint-plugin-react@npm:7.33.2": version: 7.33.2 resolution: "eslint-plugin-react@npm:7.33.2" @@ -11375,6 +12226,17 @@ __metadata: languageName: node linkType: hard +"fs-extra@npm:~7.0.1": + version: 7.0.1 + resolution: "fs-extra@npm:7.0.1" + dependencies: + graceful-fs: ^4.1.2 + jsonfile: ^4.0.0 + universalify: ^0.1.0 + checksum: 141b9dccb23b66a66cefdd81f4cda959ff89282b1d721b98cea19ba08db3dcbe6f862f28841f3cf24bb299e0b7e6c42303908f65093cb7e201708e86ea5a8dcf + languageName: node + linkType: hard + "fs-minipass@npm:^2.0.0": version: 2.1.0 resolution: "fs-minipass@npm:2.1.0" @@ -11885,6 +12747,15 @@ __metadata: languageName: node linkType: hard +"he@npm:^1.2.0": + version: 1.2.0 + resolution: "he@npm:1.2.0" + bin: + he: bin/he + checksum: 3d4d6babccccd79c5c5a3f929a68af33360d6445587d628087f39a965079d84f18ce9c3d3f917ee1e3978916fc833bb8b29377c3b403f919426f91bc6965e7a7 + languageName: node + linkType: hard + "hexoid@npm:^1.0.0": version: 1.0.0 resolution: "hexoid@npm:1.0.0" @@ -12146,6 +13017,13 @@ __metadata: languageName: node linkType: hard +"import-lazy@npm:~4.0.0": + version: 4.0.0 + resolution: "import-lazy@npm:4.0.0" + checksum: 22f5e51702134aef78890156738454f620e5fe7044b204ebc057c614888a1dd6fdf2ede0fdcca44d5c173fd64f65c985f19a51775b06967ef58cc3d26898df07 + languageName: node + linkType: hard + "import-local@npm:^3.0.2": version: 3.2.0 resolution: "import-local@npm:3.2.0" @@ -13478,6 +14356,13 @@ __metadata: languageName: node linkType: hard +"jju@npm:~1.4.0": + version: 1.4.0 + resolution: "jju@npm:1.4.0" + checksum: 3790481bd2b7827dd6336e6e3dc2dcc6d425679ba7ebde7b679f61dceb4457ea0cda330972494de608571f4973c6dfb5f70fab6f3c5037dbab19ac449a60424f + languageName: node + linkType: hard + "js-tokens@npm:^3.0.0 || ^4.0.0, js-tokens@npm:^4.0.0": version: 4.0.0 resolution: "js-tokens@npm:4.0.0" @@ -13648,6 +14533,18 @@ __metadata: languageName: node linkType: hard +"jsonfile@npm:^4.0.0": + version: 4.0.0 + resolution: "jsonfile@npm:4.0.0" + dependencies: + graceful-fs: ^4.1.6 + dependenciesMeta: + graceful-fs: + optional: true + checksum: 6447d6224f0d31623eef9b51185af03ac328a7553efcee30fa423d98a9e276ca08db87d71e17f2310b0263fd3ffa6c2a90a6308367f661dc21580f9469897c9e + languageName: node + linkType: hard + "jsonfile@npm:^6.0.1": version: 6.1.0 resolution: "jsonfile@npm:6.1.0" @@ -13698,6 +14595,13 @@ __metadata: languageName: node linkType: hard +"kolorist@npm:^1.8.0": + version: 1.8.0 + resolution: "kolorist@npm:1.8.0" + checksum: b056de671acc8a17f1e78d6d46c47dae3e06481eabc9fed213dd9079a7454fd3a7ea1226ec718df81c9208877f7475d038ac27a400958fec278d975839e33643 + languageName: node + linkType: hard + "kuler@npm:^2.0.0": version: 2.0.0 resolution: "kuler@npm:2.0.0" @@ -13961,7 +14865,7 @@ __metadata: languageName: node linkType: hard -"lodash@npm:4.x, lodash@npm:^4.17.15, lodash@npm:^4.17.21": +"lodash@npm:4.x, lodash@npm:^4.17.15, lodash@npm:^4.17.21, lodash@npm:~4.17.15": version: 4.17.21 resolution: "lodash@npm:4.17.21" checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7 @@ -14386,7 +15290,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^9.0.4": +"minimatch@npm:^9.0.3, minimatch@npm:^9.0.4": version: 9.0.5 resolution: "minimatch@npm:9.0.5" dependencies: @@ -14395,6 +15299,15 @@ __metadata: languageName: node linkType: hard +"minimatch@npm:~3.0.3": + version: 3.0.8 + resolution: "minimatch@npm:3.0.8" + dependencies: + brace-expansion: ^1.1.7 + checksum: 850cca179cad715133132693e6963b0db64ab0988c4d211415b087fc23a3e46321e2c5376a01bf5623d8782aba8bdf43c571e2e902e51fdce7175c7215c29f8b + languageName: node + linkType: hard + "minimist@npm:^1.2.0, minimist@npm:^1.2.6": version: 1.2.8 resolution: "minimist@npm:1.2.8" @@ -14532,6 +15445,13 @@ __metadata: languageName: node linkType: hard +"muggle-string@npm:^0.3.1": + version: 0.3.1 + resolution: "muggle-string@npm:0.3.1" + checksum: f2357f906e0160b7df0179c77838cf859f3ca23cb74eca7c043b9fc9e1e416d91497c80fbe2f3c9aeb003c14ad15857fc4e94f1631e8a6695b07e4135626d305 + languageName: node + linkType: hard + "mz@npm:^2.4.0": version: 2.7.0 resolution: "mz@npm:2.7.0" @@ -15484,6 +16404,13 @@ __metadata: languageName: node linkType: hard +"picocolors@npm:^1.1.0": + version: 1.1.0 + resolution: "picocolors@npm:1.1.0" + checksum: a64d653d3a188119ff45781dfcdaeedd7625583f45280aea33fcb032c7a0d3959f2368f9b192ad5e8aade75b74dbd954ffe3106c158509a45e4c18ab379a2acd + languageName: node + linkType: hard + "picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.2.2, picomatch@npm:^2.2.3, picomatch@npm:^2.3.1": version: 2.3.1 resolution: "picomatch@npm:2.3.1" @@ -15959,6 +16886,17 @@ __metadata: languageName: node linkType: hard +"postcss@npm:^8.4.26": + version: 8.4.47 + resolution: "postcss@npm:8.4.47" + dependencies: + nanoid: ^3.3.7 + picocolors: ^1.1.0 + source-map-js: ^1.2.1 + checksum: f78440a9d8f97431dd2ab1ab8e1de64f12f3eff38a3d8d4a33919b96c381046a314658d2de213a5fa5eb296b656de76a3ec269fdea27f16d5ab465b916a0f52c + languageName: node + linkType: hard + "postcss@npm:^8.4.27": version: 8.4.40 resolution: "postcss@npm:8.4.40" @@ -16498,7 +17436,7 @@ __metadata: languageName: node linkType: hard -"react-refresh@npm:^0.14.0": +"react-refresh@npm:^0.14.0, react-refresh@npm:^0.14.2": version: 0.14.2 resolution: "react-refresh@npm:0.14.2" checksum: d80db4bd40a36dab79010dc8aa317a5b931f960c0d83c4f3b81f0552cbcf7f29e115b84bb7908ec6a1eb67720fff7023084eff73ece8a7ddc694882478464382 @@ -16830,7 +17768,7 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^1.0.0, resolve@npm:^1.14.2, resolve@npm:^1.17.0, resolve@npm:^1.19.0, resolve@npm:^1.20.0, resolve@npm:^1.22.1, resolve@npm:^1.22.4": +"resolve@npm:^1.0.0, resolve@npm:^1.14.2, resolve@npm:^1.17.0, resolve@npm:^1.19.0, resolve@npm:^1.20.0, resolve@npm:^1.22.1, resolve@npm:^1.22.4, resolve@npm:~1.22.1, resolve@npm:~1.22.2": version: 1.22.8 resolution: "resolve@npm:1.22.8" dependencies: @@ -16856,7 +17794,7 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@^1.0.0#~builtin, resolve@patch:resolve@^1.14.2#~builtin, resolve@patch:resolve@^1.17.0#~builtin, resolve@patch:resolve@^1.19.0#~builtin, resolve@patch:resolve@^1.20.0#~builtin, resolve@patch:resolve@^1.22.1#~builtin, resolve@patch:resolve@^1.22.4#~builtin": +"resolve@patch:resolve@^1.0.0#~builtin, resolve@patch:resolve@^1.14.2#~builtin, resolve@patch:resolve@^1.17.0#~builtin, resolve@patch:resolve@^1.19.0#~builtin, resolve@patch:resolve@^1.20.0#~builtin, resolve@patch:resolve@^1.22.1#~builtin, resolve@patch:resolve@^1.22.4#~builtin, resolve@patch:resolve@~1.22.1#~builtin, resolve@patch:resolve@~1.22.2#~builtin": version: 1.22.8 resolution: "resolve@patch:resolve@npm%3A1.22.8#~builtin::version=1.22.8&hash=c3c19d" dependencies: @@ -17112,6 +18050,20 @@ __metadata: languageName: node linkType: hard +"rollup@npm:^3.25.2": + version: 3.29.5 + resolution: "rollup@npm:3.29.5" + dependencies: + fsevents: ~2.3.2 + dependenciesMeta: + fsevents: + optional: true + bin: + rollup: dist/bin/rollup + checksum: 6f8304e58ac8170a715e61e46c4aa674b2ae2587ed2a712dab58f72e5e54803ae40b485fbe6b3e6a694f4c8f7a59ab936ccf9f6b686c7cfd1f1970fa9ecadf1a + languageName: node + linkType: hard + "rollup@npm:^3.27.1": version: 3.29.4 resolution: "rollup@npm:3.29.4" @@ -17254,6 +18206,19 @@ __metadata: languageName: node linkType: hard +"sass@npm:1.77.2": + version: 1.77.2 + resolution: "sass@npm:1.77.2" + dependencies: + chokidar: ">=3.0.0 <4.0.0" + immutable: ^4.0.0 + source-map-js: ">=0.6.2 <2.0.0" + bin: + sass: sass.js + checksum: fd75b1f255a30ecd4ee79fa020830d7bf426dd15de2f47cf9610130707dc2a029da3677ca0a6c89e8d4626b0a2816456bb7fb706cb518cfbf2e7c0038ef7a4b8 + languageName: node + linkType: hard + "sax@npm:>=0.6.0": version: 1.4.1 resolution: "sax@npm:1.4.1" @@ -17331,6 +18296,17 @@ __metadata: languageName: node linkType: hard +"semver@npm:~7.5.4": + version: 7.5.4 + resolution: "semver@npm:7.5.4" + dependencies: + lru-cache: ^6.0.0 + bin: + semver: bin/semver.js + checksum: 12d8ad952fa353b0995bf180cdac205a4068b759a140e5d3c608317098b3575ac2f1e09182206bf2eb26120e1c0ed8fb92c48c592f6099680de56bb071423ca3 + languageName: node + linkType: hard + "send@npm:0.18.0": version: 0.18.0 resolution: "send@npm:0.18.0" @@ -17603,6 +18579,13 @@ __metadata: languageName: node linkType: hard +"source-map-js@npm:^1.2.1": + version: 1.2.1 + resolution: "source-map-js@npm:1.2.1" + checksum: 4eb0cd997cdf228bc253bcaff9340afeb706176e64868ecd20efbe6efea931465f43955612346d6b7318789e5265bdc419bc7669c1cebe3db0eb255f57efa76b + languageName: node + linkType: hard + "source-map-support@npm:0.5.13": version: 0.5.13 resolution: "source-map-support@npm:0.5.13" @@ -17749,7 +18732,7 @@ __metadata: languageName: node linkType: hard -"string-argv@npm:0.3.2": +"string-argv@npm:0.3.2, string-argv@npm:~0.3.1": version: 0.3.2 resolution: "string-argv@npm:0.3.2" checksum: 8703ad3f3db0b2641ed2adbb15cf24d3945070d9a751f9e74a924966db9f325ac755169007233e8985a39a6a292f14d4fee20482989b89b96e473c4221508a0f @@ -17936,7 +18919,7 @@ __metadata: languageName: node linkType: hard -"strip-json-comments@npm:^3.1.0, strip-json-comments@npm:^3.1.1": +"strip-json-comments@npm:^3.1.0, strip-json-comments@npm:^3.1.1, strip-json-comments@npm:~3.1.1": version: 3.1.1 resolution: "strip-json-comments@npm:3.1.1" checksum: 492f73e27268f9b1c122733f28ecb0e7e8d8a531a6662efbd08e22cccb3f9475e90a1b82cab06a392f6afae6d2de636f977e231296400d0ec5304ba70f166443 @@ -17970,6 +18953,26 @@ __metadata: languageName: node linkType: hard +"styled-components@npm:^6.1.1": + version: 6.1.13 + resolution: "styled-components@npm:6.1.13" + dependencies: + "@emotion/is-prop-valid": 1.2.2 + "@emotion/unitless": 0.8.1 + "@types/stylis": 4.2.5 + css-to-react-native: 3.2.0 + csstype: 3.1.3 + postcss: 8.4.38 + shallowequal: 1.1.0 + stylis: 4.3.2 + tslib: 2.6.2 + peerDependencies: + react: ">= 16.8.0" + react-dom: ">= 16.8.0" + checksum: cb836c5d4cc8d183f4b70a4a1b1aa13551c57389e9c8fe3286619eef9fc81466fee09c39a1c8b5aa03deb0e466e4d5ee04921f7d9f3b7afe4744e539e6047550 + languageName: node + linkType: hard + "stylehacks@npm:^5.1.1": version: 5.1.1 resolution: "stylehacks@npm:5.1.1" @@ -18062,7 +19065,7 @@ __metadata: languageName: node linkType: hard -"supports-color@npm:^8.0.0, supports-color@npm:^8.1.1": +"supports-color@npm:^8.0.0, supports-color@npm:^8.1.1, supports-color@npm:~8.1.1": version: 8.1.1 resolution: "supports-color@npm:8.1.1" dependencies: @@ -18688,6 +19691,13 @@ __metadata: languageName: node linkType: hard +"tslib@npm:^2.7.0": + version: 2.7.0 + resolution: "tslib@npm:2.7.0" + checksum: 1606d5c89f88d466889def78653f3aab0f88692e80bb2066d090ca6112ae250ec1cfa9dbfaab0d17b60da15a4186e8ec4d893801c67896b277c17374e36e1d28 + languageName: node + linkType: hard + "tsutils@npm:^3.21.0": version: 3.21.0 resolution: "tsutils@npm:3.21.0" @@ -19110,6 +20120,16 @@ __metadata: languageName: node linkType: hard +"typescript@npm:5.4.2": + version: 5.4.2 + resolution: "typescript@npm:5.4.2" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 96d80fde25a09bcb04d399082fb27a808a9e17c2111e43849d2aafbd642d835e4f4ef0de09b0ba795ec2a700be6c4c2c3f62bf4660c05404c948727b5bbfb32a + languageName: node + linkType: hard + "typescript@npm:5.4.5": version: 5.4.5 resolution: "typescript@npm:5.4.5" @@ -19180,6 +20200,16 @@ __metadata: languageName: node linkType: hard +"typescript@patch:typescript@5.4.2#~builtin": + version: 5.4.2 + resolution: "typescript@patch:typescript@npm%3A5.4.2#~builtin::version=5.4.2&hash=d73830" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: c1b669146bca5529873aae60870e243fa8140c85f57ca32c42f898f586d73ce4a6b4f6bb02ae312729e214d7f5859a0c70da3e527a116fdf5ad00c9fc733ecc6 + languageName: node + linkType: hard + "typescript@patch:typescript@5.4.5#~builtin": version: 5.4.5 resolution: "typescript@patch:typescript@npm%3A5.4.5#~builtin::version=5.4.5&hash=d73830" @@ -19308,6 +20338,13 @@ __metadata: languageName: node linkType: hard +"universalify@npm:^0.1.0": + version: 0.1.2 + resolution: "universalify@npm:0.1.2" + checksum: 40cdc60f6e61070fe658ca36016a8f4ec216b29bf04a55dce14e3710cc84c7448538ef4dad3728d0bfe29975ccd7bfb5f414c45e7b78883567fb31b246f02dff + languageName: node + linkType: hard + "universalify@npm:^0.2.0": version: 0.2.0 resolution: "universalify@npm:0.2.0" @@ -19365,7 +20402,7 @@ __metadata: languageName: node linkType: hard -"uri-js@npm:^4.2.2": +"uri-js@npm:^4.2.2, uri-js@npm:^4.4.1": version: 4.4.1 resolution: "uri-js@npm:4.4.1" dependencies: @@ -19563,17 +20600,48 @@ __metadata: languageName: node linkType: hard -"vite-plugin-node-polyfills@npm:0.15.0": - version: 0.15.0 - resolution: "vite-plugin-node-polyfills@npm:0.15.0" +"vite-plugin-dts@npm:3.5.1": + version: 3.5.1 + resolution: "vite-plugin-dts@npm:3.5.1" dependencies: - "@rollup/plugin-inject": ^5.0.3 - buffer-polyfill: "npm:buffer@^6.0.3" + "@microsoft/api-extractor": ^7.36.3 + "@rollup/pluginutils": ^5.0.2 + "@vue/language-core": ^1.8.8 + debug: ^4.3.4 + kolorist: ^1.8.0 + vue-tsc: ^1.8.8 + peerDependencies: + typescript: "*" + vite: "*" + peerDependenciesMeta: + vite: + optional: true + checksum: 8a47a78336fe5074592fbbd8855dbd113707a9f15d2cfa3f9a17d760b0b49b5f5560d728f0acb4e8fae034d781af914279064b61778fa611f88ff2dee8296aa1 + languageName: node + linkType: hard + +"vite-plugin-node-polyfills@npm:0.22.0": + version: 0.22.0 + resolution: "vite-plugin-node-polyfills@npm:0.22.0" + dependencies: + "@rollup/plugin-inject": ^5.0.5 node-stdlib-browser: ^1.2.0 - process: ^0.11.10 peerDependencies: - vite: ^2.0.0 || ^3.0.0 || ^4.0.0 - checksum: 414abec8cf42270b814d7ace894dfab932042ac183224f8a1c1f74d36225427d463845efbfcffed2845d672ff30451d2d3eea750e252518bedf956854f42de69 + vite: ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 + checksum: c08d3df0d5cc3102280483d3f7b216f92a18e0708fcb9f67f78f01ab865474254756bacee17caa90b3f46afe5834cb9d8de0dd0e58c1bbbdae1b949edc1e6b57 + languageName: node + linkType: hard + +"vite-plugin-svgr@npm:3.2.0": + version: 3.2.0 + resolution: "vite-plugin-svgr@npm:3.2.0" + dependencies: + "@rollup/pluginutils": ^5.0.2 + "@svgr/core": ^7.0.0 + "@svgr/plugin-jsx": ^7.0.0 + peerDependencies: + vite: ^2.6.0 || 3 || 4 + checksum: 19887e1db910ecdd6c12645e430d9e1d9ad40fe6945d3f7de68fc235fba0277586deffa47db1a6be2fa511207b01893a3c5bad9d1bd558ca28971feca13ecd9a languageName: node linkType: hard @@ -19630,6 +20698,46 @@ __metadata: languageName: node linkType: hard +"vite@npm:4.4.5": + version: 4.4.5 + resolution: "vite@npm:4.4.5" + dependencies: + esbuild: ^0.18.10 + fsevents: ~2.3.2 + postcss: ^8.4.26 + rollup: ^3.25.2 + peerDependencies: + "@types/node": ">= 14" + less: "*" + lightningcss: ^1.21.0 + sass: "*" + stylus: "*" + sugarss: "*" + terser: ^5.4.0 + dependenciesMeta: + fsevents: + optional: true + peerDependenciesMeta: + "@types/node": + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + bin: + vite: bin/vite.js + checksum: 825d8c13511b764710ca503e603746e20a7cb963194033dc606c46b1650a0d8986b577ba92507b54143cbf467032e9868ea04913a86a8fcb88b69c5b8551938b + languageName: node + linkType: hard + "vm-browserify@npm:^1.0.1": version: 1.1.2 resolution: "vm-browserify@npm:1.1.2" @@ -19697,6 +20805,31 @@ __metadata: languageName: node linkType: hard +"vue-template-compiler@npm:^2.7.14": + version: 2.7.16 + resolution: "vue-template-compiler@npm:2.7.16" + dependencies: + de-indent: ^1.0.2 + he: ^1.2.0 + checksum: a0d52ecbb99bad37f370341b5c594c5caa1f72b15b3f225148ef378fc06aa25c93185ef061f7e6e5e443c9067e70d8f158742716112acf84088932ebcc49ad10 + languageName: node + linkType: hard + +"vue-tsc@npm:^1.8.8": + version: 1.8.27 + resolution: "vue-tsc@npm:1.8.27" + dependencies: + "@volar/typescript": ~1.11.1 + "@vue/language-core": 1.8.27 + semver: ^7.5.4 + peerDependencies: + typescript: "*" + bin: + vue-tsc: bin/vue-tsc.js + checksum: 98c2986df01000a3245b5f08b9db35d0ead4f46fb12f4fe771257b4aa61aa4c26dda359aaa0e6c484a6240563d5188aaa6ed312dd37cc2315922d5e079260001 + languageName: node + linkType: hard + "w3c-xmlserializer@npm:^4.0.0": version: 4.0.0 resolution: "w3c-xmlserializer@npm:4.0.0"