diff --git a/.npmrc b/.npmrc index 1805fed2..282c484c 100644 --- a/.npmrc +++ b/.npmrc @@ -1,3 +1,3 @@ public-hoist-pattern[]=* publish-branch=dev -strict-peer-dependencies=false +prefer-workspace-packages=true diff --git a/.vscode/settings.json b/.vscode/settings.json index 1cfd22c4..2071a75c 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -6,7 +6,7 @@ "editor.defaultFormatter": "dbaeumer.vscode-eslint" }, "[typescript]": { - "editor.defaultFormatter": "dbaeumer.vscode-eslint" + "editor.defaultFormatter": "esbenp.prettier-vscode" }, "[typescriptreact]": { "editor.defaultFormatter": "dbaeumer.vscode-eslint" diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index bd69bfd3..fa3c1161 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -16,13 +16,14 @@ This project and everyone participating in it is governed by the [`graz` Code of ### Why this library exist? -Currently there is no stable library for cosmos wallets, in ethereum there's [`wagmi`](https://wagmi.sh) with hook patterns that we inspired from. +At the time there were no stable libraries for cosmos wallets. We were inspired by the patterns in [`wagmi`](https://wagmi.sh) in the Ethereum ecosystem. ## What should I know before I get started? -It would be better you know these things: +It greatly helps if you already have a basic understanding of: - [Cosmos ecosystem](https://cosmos.network/) +- [Cosmjs](https://cosmos.github.io/cosmjs/) - [`react-query`](https://react-query.tanstack.com/) - [`zustand`](https://github.com/pmndrs/zustand) - [Keplr Wallet](https://docs.keplr.app) @@ -49,11 +50,9 @@ The following steps will get you up and running to contribute to `graz`: ```sh ├── packages/ # local packages -│   ├── eslint-config/ # project eslint configuration -│   ├── prettier-config/ # project prettier configuration │   └── graz/ # graz ├── docs/ # documentation website -└── example/ # example website (nextjs + chakra ui) +└── example/* # example website (nextjs + chakra ui) ``` ### graz @@ -66,31 +65,34 @@ The following steps will get you up and running to contribute to `graz`: │   └── provider/ # application state providers │   └── store/ # application state stores │   └── types/ # shared types -├── dist/ # output +├── dist/ # output graz package +├── chains/ # output chains ``` ## Development -- `pnpm install`: bootstrap the entire project +- `pnpm graz install`: install `graz` project +- `pnpm graz build`: build `graz` package +- `pnpm install`: install all projects - `pnpm dev`: compiles `graz` and start the development server of the example app -- `pnpm docs dev`: start the documentation website +- `pnpm project:docs dev`: start the documentation website - `pnpm example dev`: start the example app ## Pull Request -Pull requests need only the 👍 of one collaborator to be merged. +Pull requests only need one collaborator 👍 to be merged. ### Commit Convention Before you create a Pull Request, please check whether your commits comply with the commit conventions used in this repository. -When you create a commit we kindly ask you to follow the convention category(scope or module): message in your commit message while using one of the following categories: +When you create a commit we kindly ask you to follow the convention of category (scope or module): title in your commit message, using one of the following categories: - `feat / feature`: all changes that introduce completely new code or new features -- `fix`: changes that fix a bug (ideally you will additionally reference an issue if present) -- `refactor`: any code related change that is not a fix nor a feature +- `fix`: changes that fix a bug (reference the relevant issue(s) if possible) +- `refactor`: any code-related change that is not a fix nor a feature - `docs`: changing existing or creating new documentation (i.e. README, docs for usage of a lib or cli usage) -- `build`: all changes regarding the build of the software, changes to dependencies or the addition of new dependencies +- `build`: all changes regarding the build of the software, updates to dependencies, or the addition of new dependencies - `test`: all changes regarding tests (adding new tests or changing existing ones) - `ci`: all changes regarding the configuration of continuous integration (i.e. github actions, ci system) - `chore`: all changes to the repository that do not fit into any of the above categories diff --git a/README.md b/README.md index b1abc696..7ff18b67 100644 --- a/README.md +++ b/README.md @@ -9,8 +9,8 @@ ## Features - 🪝 20+ hooks for interfacing with wallets, clients, signers, etc. (connecting, view balances, send tokens, etc.) -- 💳 Multiple wallet supports (Keplr, Leap, Cosmostation, WalletConnect ) -- ⚙️ Generate mainnet & testnet `ChainInfo` from chain registry +- 💳 Multiple wallet supports (Keplr, Leap, Cosmostation, Vectis, Metamask Snap, WalletConnect) +- ⚙️ Generate mainnet & testnet `ChainInfo` - 📚 Built-in caching, request deduplication, and all the good stuff from [`@tanstack/react-query`](https://tanstack.com/query) and [`zustand`](https://github.com/pmndrs/zustand) - 🔄 Auto refresh on wallet and network change - 👏 Fully typed and tree-shakeable @@ -35,21 +35,39 @@ yarn add graz pnpm add graz ``` +### Install peer dependencies + +To avoid version mismatch we decided to make these packages as peer dependencies: + +```shell +# using npm +npm install @cosmjs/cosmwasm-stargate @cosmjs/launchpad @cosmjs/proto-signing @cosmjs/stargate @cosmjs/tendermint-rpc long + +# using yarn +yarn add @cosmjs/cosmwasm-stargate @cosmjs/launchpad @cosmjs/proto-signing @cosmjs/stargate @cosmjs/tendermint-rpc long + +# using pnpm +pnpm add @cosmjs/cosmwasm-stargate @cosmjs/launchpad @cosmjs/proto-signing @cosmjs/stargate @cosmjs/tendermint-rpc long +``` + ## Quick start Wrap your React app with `` and use available `graz` hooks anywhere: ```jsx -import { GrazProvider, mainnetChains } from "graz"; +import { GrazProvider } from "graz"; + +const cosmoshub: ChainInfo = { + chainId: "cosmoshub-4", + chainName: "Cosmos Hub", + //... rest of cosmoshub ChainInfo +} function App() { return ( - + ); @@ -79,27 +97,9 @@ function Wallet() { ## Examples +- Next.js + Multi chain: https://graz.sh/examples/starter ([source code](https://github.com/graz-sh/graz/tree/dev/example/starter/)) - Next.js + Chakra UI: https://graz.sh/examples/next ([source code](./example/next/)) - Vite: https://graz.sh/examples/vite ([source code](./example/vite/)) -- Next.js Starter: https://graz.sh/examples/starter ([source code](https://github.com/graz-sh/graz/tree/dev/example/starter/)) - -## Third-party dependencies - -`graz` uses various dependencies such as [`@cosmjs/cosmwasm-stargate`](https://www.npmjs.com/package/@cosmjs/cosmwasm-stargate) and [`@keplr-wallet/types`](https://www.npmjs.com/package/@keplr-wallet/types). - -Rather than importing those packages directly, you can import from [`graz/dist/cosmjs`](./packages/graz/src/cosmjs.ts) and [`graz/dist/keplr`](./packages/graz/src/keplr.ts) which re-exports all respective dependencies: - -```diff -- import type { CosmWasmClient } from "@cosmjs/cosmwasm-stargate"; -+ import type { CosmWasmClient } from "graz/dist/cosmjs"; -``` - -But if you prefer importing from their respective pacakges, you can install dependencies that `graz` uses for better intellisense: - -```sh -# using pnpm -pnpm add @cosmjs/cosmwasm-stargate @cosmjs/proto-signing @cosmjs/stargate @keplr-wallet/types -``` ## API diff --git a/docs/docs/change-log.md b/docs/docs/change-log.md index e6b2ba36..0c1d394c 100644 --- a/docs/docs/change-log.md +++ b/docs/docs/change-log.md @@ -1,9 +1,18 @@ --- -sidebar_position: 15 +sidebar_position: 8 --- # Changelog +## Version 0.1.0 + +- Multi Chain experience +- Removed `GrazChain` type +- Reworked `GrazProvider` +- Roworked most of the hooks + +Read migration guide [here](./migration-guide/#010-breaking-changes) + ## Version 0.0.51 - Fix Wallet Connect multiple prompt when connect in mobile @@ -90,5 +99,5 @@ sidebar_position: 15 - ✅ [WalletConnect v2 support](./wallet-connect.md) - ✅ Added more `WalletType` for connecting WalletConnect wallets -- 🗑️ Deprecated constants, will be removed in next version `mainnetChains`, `mainnetChainsArray`, `testnetChains`, `testnetChainsArray`. Use [`graz generate`](./generate-chain-info.mdx)👍 +- 🗑️ Deprecated constants, will be removed in next version `mainnetChains`, `mainnetChainsArray`, `testnetChains`, `testnetChainsArray`. Use [`graz generate`](./generate-chain-info.md)👍 - 🛠️ Splitted internal store between user session and graz internal diff --git a/docs/docs/constants/WALLET_TYPES.md b/docs/docs/constants/WALLET_TYPES.md index bf4d25ec..9912aba6 100644 --- a/docs/docs/constants/WALLET_TYPES.md +++ b/docs/docs/constants/WALLET_TYPES.md @@ -5,14 +5,14 @@ ### Usage ```tsx -import { WALLET_TYPES, useConnect, mainnetChains } from "graz"; +import { WALLET_TYPES, useConnect } from "graz"; export const SupportedWallet = () => { const { connect } = useConnect(); return (
{WALLET_TYPES.map((name) => ( - ))} diff --git a/docs/docs/contributing.md b/docs/docs/contributing.md index 9b9de180..430218cb 100644 --- a/docs/docs/contributing.md +++ b/docs/docs/contributing.md @@ -16,13 +16,14 @@ This project and everyone participating in it is governed by the [`graz` Code of ### Why this library exist? -Currently there is no stable library for cosmos wallets. We were inspired by the patterns in [`wagmi`](https://wagmi.sh) in the Etherium ecosystem. +At the time there were no stable libraries for cosmos wallets. We were inspired by the patterns in [`wagmi`](https://wagmi.sh) in the Ethereum ecosystem. ## What should I know before I get started? It greatly helps if you already have a basic understanding of: - [Cosmos ecosystem](https://cosmos.network/) +- [Cosmjs](https://cosmos.github.io/cosmjs/) - [`react-query`](https://react-query.tanstack.com/) - [`zustand`](https://github.com/pmndrs/zustand) - [Keplr Wallet](https://docs.keplr.app) @@ -49,11 +50,9 @@ The following steps will get you up and running to contribute to `graz`: ```sh ├── packages/ # local packages -│   ├── eslint-config/ # project eslint configuration -│   ├── prettier-config/ # project prettier configuration │   └── graz/ # graz ├── docs/ # documentation website -└── example/ # example website (nextjs + chakra ui) +└── example/* # example website (nextjs + chakra ui) ``` ### graz @@ -66,14 +65,17 @@ The following steps will get you up and running to contribute to `graz`: │   └── provider/ # application state providers │   └── store/ # application state stores │   └── types/ # shared types -├── dist/ # output +├── dist/ # output graz package +├── chains/ # output chains ``` ## Development -- `pnpm install`: bootstrap the entire project +- `pnpm graz install`: install `graz` project +- `pnpm graz build`: build `graz` package +- `pnpm install`: install all projects - `pnpm dev`: compiles `graz` and start the development server of the example app -- `pnpm docs dev`: start the documentation website +- `pnpm project:docs dev`: start the documentation website - `pnpm example dev`: start the example app ## Pull Request diff --git a/docs/docs/examples/index.md b/docs/docs/examples/index.md index 727a3969..d3e7c406 100644 --- a/docs/docs/examples/index.md +++ b/docs/docs/examples/index.md @@ -1,19 +1,19 @@ --- -sidebar_position: 3 +sidebar_position: 5 --- # Examples -## Next.js - -- Website: https://graz.sh/examples/next -- GitHub: https://github.com/graz-sh/graz/tree/dev/example/next - -## Next.js Starter +## Next.js + Multi chain - Website: https://graz.sh/examples/starter - GitHub: https://github.com/graz-sh/graz/tree/dev/example/starter +## Next.js Simple + +- Website: https://graz.sh/examples/next +- GitHub: https://github.com/graz-sh/graz/tree/dev/example/next + ## Vite - Website: https://graz.sh/examples/vite diff --git a/docs/docs/generate-chain-info.mdx b/docs/docs/generate-chain-info.md similarity index 90% rename from docs/docs/generate-chain-info.mdx rename to docs/docs/generate-chain-info.md index 2d3d4731..3e32bc7e 100644 --- a/docs/docs/generate-chain-info.mdx +++ b/docs/docs/generate-chain-info.md @@ -1,5 +1,5 @@ --- -sidebar_position: 4 +sidebar_position: 5 --- # Generate ChainInfo @@ -48,5 +48,5 @@ in your package.json add it to in your install or postInstall scripts After you generate `ChainInfo` you can use it in you project ```ts -import { axelar, cosmoshub, sommelier, mainnetChains, testnetChains } from "graz/chains"; +import { axelar, cosmoshub, sommelier } from "graz/chains"; ``` diff --git a/docs/docs/getting-started.mdx b/docs/docs/getting-started.mdx index 45a1b9b0..d0e29217 100644 --- a/docs/docs/getting-started.mdx +++ b/docs/docs/getting-started.mdx @@ -27,6 +27,21 @@ yarn add graz pnpm add graz ``` +## Install peer dependencies + +To avoid version mismatch we decided to make these packages as peer dependencies: + +```shell +# using npm +npm install @cosmjs/cosmwasm-stargate @cosmjs/launchpad @cosmjs/proto-signing @cosmjs/stargate @cosmjs/tendermint-rpc long + +# using yarn +yarn add @cosmjs/cosmwasm-stargate @cosmjs/launchpad @cosmjs/proto-signing @cosmjs/stargate @cosmjs/tendermint-rpc long + +# using pnpm +pnpm add @cosmjs/cosmwasm-stargate @cosmjs/launchpad @cosmjs/proto-signing @cosmjs/stargate @cosmjs/tendermint-rpc long +``` + ## Quick start ### 1. Wrap app with `` @@ -45,20 +60,21 @@ function App() { ### 2. Configure `grazOptions` -:::info - -**Optional** You can configure your default chain, default wallet, default `SigningClient` - -::: +```tsx +import { ChainInfo } from "@keplr-wallet/types"; +import { GrazProvider } from "graz"; -```jsx -import { GrazProvider, mainnetChains } from "graz"; +const cosmoshub: ChainInfo = { + chainId: "cosmoshub-4", + chainName: "Cosmos Hub", + //... rest of cosmoshub ChainInfo +}; function App() { return ( @@ -72,7 +88,7 @@ function App() { Use hooks! Every component inside the GrazProvider is now set up to use the graz hooks. ```jsx -import { mainnetChains, useAccount, useConnect, useDisconnect } from "graz"; +import { useAccount, useConnect, useDisconnect } from "graz"; function Wallet() { const { connect, status } = useConnect(); diff --git a/docs/docs/guides/_category_.json b/docs/docs/guides/_category_.json new file mode 100644 index 00000000..7ae8da5f --- /dev/null +++ b/docs/docs/guides/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "Guides", + "position": 4, + "link": { + "type": "generated-index", + "description": "Collection of Constants that graz provide" + } +} diff --git a/docs/docs/guides/connect-specific-wallet.md b/docs/docs/guides/connect-specific-wallet.md new file mode 100644 index 00000000..4cfc5846 --- /dev/null +++ b/docs/docs/guides/connect-specific-wallet.md @@ -0,0 +1,107 @@ +# Connect wallet + +You can connect to a specific wallet by using the `useConnect` hook. You can connect to a specific wallet by passing the `walletType` parameter to the `connect` function. + +Read more about [wallet types](../types/walletType.md). + +### Set default wallet + +You can set a default wallet type by passing the `defaultWalletType` parameter into `grazProvider` in ``. + +```tsx +import { GrazProvider, WalletType } from "graz"; + +const App = () => { + return ( + + + + ); +}; +``` + +You don't need to pass the walletType parameter to the connect function, it will use the default wallet type. + +```tsx +const Connect = () => { + const { connect } = useConnect(); + return ; +}; +``` + +### Connect to a specific wallet + +```tsx +import { WalletType } from "graz"; +const Connect = () => { + const { connect } = useConnect(); + return ; +}; +``` + +### Check if wallet supported + +```tsx +import { WalletType, checkWallet } from "graz"; + +const isKeplrSupported = checkWallet(WalletType.KEPLR); + +return ( + <> + {isKeplrSupported && ( + + )} + +); +``` + +### List all wallet + +We have `WALLET_TYPES` it's an array of WalletType. + +```tsx +WALLET_TYPES: WalletType[] +``` + +```tsx +import { WALLET_TYPES, useConnect } from "graz"; + +export const SupportedWallet = () => { + const { connect } = useConnect(); + return ( +
+ {WALLET_TYPES.map((name) => ( + + ))} +
+ ); +}; +``` + +### List all wallets but show only supported wallet + +You can combine `WALLET_TYPES` and `checkWallet` to show only supported wallets. + +```tsx +import { WALLET_TYPES, checkWallet, useConnect } from "graz"; + +export const SupportedWallet = () => { + const { connect } = useConnect(); + return ( +
+ {WALLET_TYPES.filter((name) => checkWallet(name)).map((name) => ( + + ))} +
+ ); +}; +``` diff --git a/docs/docs/guides/multi-chain.md b/docs/docs/guides/multi-chain.md new file mode 100644 index 00000000..e8b109df --- /dev/null +++ b/docs/docs/guides/multi-chain.md @@ -0,0 +1,148 @@ +# Multi Chain + +You can connect to multiple chains with Graz. + +### Setup + +Configure your `chains` in the `grazOptions` object in the `GrazProvider` component. + +```tsx +import { GrazProvider, WalletType } from "graz"; + +const cosmoshub = { + chainId: "cosmoshub-4", + chainName: "Cosmos Hub", + // ... rest of cosmoshub ChainInfo +}; + +const sommelier = { + chainId: "sommelier-1", + chainName: "Sommelier", + // ... rest of sommelier ChainInfo +}; + +const App = () => { + return ( + + + + ); +}; +``` + +You can configure the `ChainsConfig` for every specific chain. + +```tsx +const App = () => { + return ( + + + + ); +}; +``` + +### Connect to a specific chain + +```tsx +import { useConnect } from "graz"; + +const Connect = () => { + const { connect } = useConnect(); + return ; +}; +``` + +### Connect to multiple chains + +```tsx +import { useConnect } from "graz"; + +const Connect = () => { + const { connect } = useConnect(); + return ; +}; +``` + +### Concepts + +Query Hooks that have multi chain data support: + +- [useAccount](/docs/hooks/useAccount) +- [useBalance](/docs/hooks/useBalance) +- [useBalances](/docs/hooks/useBalances) +- [useBalanceStaked](/docs/hooks/useBalanceStaked) +- [useCosmWasmClient](/docs/hooks/useCosmWasmClient) +- [useCosmWasmSigningClient](/docs/hooks/useCosmWasmSigningClient) +- [useCosmWasmTmSigningClient](/docs/hooks/useCosmWasmTmSigningClient) +- [useStargateClient](/docs/hooks/useStargateClient) +- [useStargateSigningClient](/docs/hooks/useStargateSigningClient) +- [useStargateTmSigningClient](/docs/hooks/useStargateTmSigningClient) +- [useTendermintClient](/docs/hooks/useTendermintClient) + +Our hooks have a special pattern to handle multiple chains. In every hooks above have this param + +```ts +{ + multiChain?: boolean; + chainId?: string | string[]; +} +``` + +We use `multiChain?:boolean` in the hook param to handle multiple chains. If you want to use the hook for multiple chains, you need to pass `multiChain:true` in the hook param. + +- if `multiChain` set to **true**, the hook return `data` type will be `Record` it won't care if `chainId` is a `string` or `string.length === 1`. +- if `multiChain` set to **false**, the hook return `data` type will be `TData`. + +`chainId` is an optional hook param, so if you don't pass `chainId` in the hook param the `chains` is used from the `GrazProvider` component. + +### Example + +```tsx +import { useBalanceStaked } from "graz"; +function App() { + const { data: balanceStaked, isLoading } = useBalanceStaked({ + bech32Address: "cosmos1g3jjhgkyf36pjhe7u5cw8j9u6cgl8x929ej430", + chainId: ["cosmoshub-4", "sommelier-1"], + multiChain: true, + }); + + return ( +
+ Balances: + {isLoading ? ( + "Fetching staked balance..." + ) : balanceStaked && Object.entries(balanceStaked).map([chainId, coin] => { + return( +
+

{chainId} balance staked : {coin.amount} {coin.denom}

+
+ ); + }) + } +
+ ); +} +``` diff --git a/docs/docs/hooks/_category_.json b/docs/docs/hooks/_category_.json index 919d96c7..6e12d6be 100644 --- a/docs/docs/hooks/_category_.json +++ b/docs/docs/hooks/_category_.json @@ -1,8 +1,8 @@ { "label": "Hooks", - "position": 5, + "position": 6, "link": { "type": "generated-index", - "description": "Collection of hooks that graz provide" + "description": "Collection of graz hooks" } } diff --git a/docs/docs/hooks/useAccount.md b/docs/docs/hooks/useAccount.md index d21ac101..e0951cc0 100644 --- a/docs/docs/hooks/useAccount.md +++ b/docs/docs/hooks/useAccount.md @@ -2,44 +2,72 @@ Hook to retrieve account data with optional arguments to invoke given function on connect/disconnect. +`useAccount` only retrieve connected/active chains if there's no `chainId` passed to the hook param. + #### Usage +##### Basic + ```tsx import { useAccount } from "graz"; -function App() { - const { data, status } = useAccount(); - return
{data ? data.bech32Address : status}
; -} +const { data: account, isConnecting, isConnected, ... } = useAccount(); +account.bech32Address ``` -#### Params +##### Multichain + +```tsx +import { useAccount } from "graz"; -Object params +const { data: accounts, isConnecting, isConnected, ... } = useAccount({ + chainId: ["cosmoshub-4", "sommelier-3"], + multiChain: true +}); +accounts['cosmoshub-4'].bech32Address +``` -- onConnect?: `( ConnectResult & { isReconnect: boolean; }) => void` -- onDisconnect?: `() => void` +##### With event arguments + +```tsx +useAccount({ + onConnect: ({ account, isReconnect }) => { ... }, + onDisconnect: () => { ... }, +}); +``` + +#### Hook Params + +```ts +{ + chainId?: string | string[]; + multiChain?: TMultiChain; // boolean + onConnect?: ( ConnectResult & { isReconnect: boolean; }) => void; + onDisconnect?: () => void; +} +``` ##### `ConnectResult` ```tsx { - account: Key; + accounts: Record; walletType: WalletType; - chain: GrazChain; + chains: ChainInfo[]; } ``` #### Return Value -```tsx +```ts { - data?: Key | null; // from @keplr-wallet/types + data?: TMultiChain extends true ? Record : Key; // from @keplr-wallet/types isConnected: boolean; isConnecting: boolean; isDisconnected: boolean; isReconnecting: boolean; reconnect: () => void; status: "connected" | "connecting" | "reconnecting" | "disconnected"; + walletType?: WalletType; } ``` diff --git a/docs/docs/hooks/useActiveChain.md b/docs/docs/hooks/useActiveChain.md deleted file mode 100644 index 47ee1571..00000000 --- a/docs/docs/hooks/useActiveChain.md +++ /dev/null @@ -1,30 +0,0 @@ -# useActiveChain - -hook for accessing the `GrazChain` info based on connected chain/account - -#### Usage - -```tsx -import { useActiveChain } from "graz"; - -function App() { - const activeChain = useActiveChain(); - - return ( -
- Connected to {activeChain.chainId} -
- ); -} -``` - -#### Return Value - -```tsx -{ - chainId: string; - currencies: AppCurrency[]; // from @keplr-wallet/types - rest: string; - rpc: string; -} | null -``` diff --git a/docs/docs/hooks/useActiveChainCurrency.md b/docs/docs/hooks/useActiveChainCurrency.md index 1eebe2b6..5cf54bb1 100644 --- a/docs/docs/hooks/useActiveChainCurrency.md +++ b/docs/docs/hooks/useActiveChainCurrency.md @@ -1,6 +1,6 @@ # useActiveChainCurrency -hook to retrieve active chain validators with given query client and optional bond status +hook to retrieve specific connected chains currency #### Usage @@ -8,13 +8,15 @@ hook to retrieve active chain validators with given query client and optional bo import { useActiveChainCurrency } from "graz"; function App() { - const { data: currency } = useActiveChainCurrency("juno"); + const { data: currency, ... } = useActiveChainCurrency({ denom: "juno" }); } ``` -#### Params +#### Hook Params -- denom: `string` = Currency denom to search +```ts +denom: string; //Currency denom to search +``` #### Return Value diff --git a/docs/docs/hooks/useActiveChainIds.md b/docs/docs/hooks/useActiveChainIds.md new file mode 100644 index 00000000..ca404bfa --- /dev/null +++ b/docs/docs/hooks/useActiveChainIds.md @@ -0,0 +1,25 @@ +# useActiveChainIds + +hook to retrieve connected account's active chainIds + +#### Usage + +```tsx +import { useActiveChainIds } from "graz"; + +function App() { + const activeChainIds = useActiveChainIds(); + + return ( +
+ Connected to {activeChainIds.map((id) => id).join("; ")} +
+ ); +} +``` + +#### Return Value + +```tsx +string[] | undefined; // @keplr-wallet/types +``` diff --git a/docs/docs/hooks/useActiveChainValidators.md b/docs/docs/hooks/useActiveChainValidators.md deleted file mode 100644 index 581d90c8..00000000 --- a/docs/docs/hooks/useActiveChainValidators.md +++ /dev/null @@ -1,52 +0,0 @@ -# useActiveChainValidators - -hook to retrieve active chain validators with given query client and optional bond status - -#### Usage - -```tsx -import { useQueryClient, useActiveChainValidators } from "graz"; -import { setupStakingExtension } from "@cosmjs/stargate"; - -function App() { - const queryClient = useQueryClient(setupStakingExtension); - const { data: response } = useActiveChainValidators(queryClient); -} -``` - -#### Params - -Object params - -- queryClient: `T & StakingExtension` = @cosmjs/stargate query client object with `StakingExtension` -- status?: `"BOND_STATUS_BONDED" | "BOND_STATUS_UNBONDED" | "BOND_STATUS_UNBONDING"` = Validator bond status string (defaults to `BOND_STATUS_BONDED`) - -#### Return Value - -```tsx -{ - data?: QueryValidatorsResponse; // cosmjs-types/cosmos/staking/v1beta1/query - dataUpdatedAt: number; - error: TError | null; - errorUpdatedAt: number; - failureCount: number; - errorUpdateCount: number; - isError: boolean; - isFetched: boolean; - isFetchedAfterMount: boolean; - isFetching: boolean; - isLoading: boolean; - isLoadingError: boolean; - isPaused: boolean; - isPlaceholderData: boolean; - isPreviousData: boolean; - isRefetchError: boolean; - isRefetching: boolean; - isStale: boolean; - isSuccess: boolean; - refetch:(options?: RefetchOptions & RefetchQueryFilters) => Promise>; - remove: () => void; - status: 'loading' | 'error' | 'success'; - fetchStatus: 'fetching' | 'paused' | 'idle'; -} -``` diff --git a/docs/docs/hooks/useActiveChains.md b/docs/docs/hooks/useActiveChains.md new file mode 100644 index 00000000..6d71c122 --- /dev/null +++ b/docs/docs/hooks/useActiveChains.md @@ -0,0 +1,25 @@ +# useActiveChains + +hook to retrieve connected account's active `ChainInfo`s + +#### Usage + +```tsx +import { useActiveChains } from "graz"; + +function App() { + const activeChains = useActiveChains(); + + return ( +
+ Connected to {activeChains.map((chain) => chain.chainName).join("; ")} +
+ ); +} +``` + +#### Return Value + +```tsx +ChainInfo[] | undefined; // @keplr-wallet/types +``` diff --git a/docs/docs/hooks/useActiveWalletType.md b/docs/docs/hooks/useActiveWalletType.md index f2dd40a9..0b8687c2 100644 --- a/docs/docs/hooks/useActiveWalletType.md +++ b/docs/docs/hooks/useActiveWalletType.md @@ -31,5 +31,6 @@ function App() { isVectis: boolean; isLeapMobile: boolean; isWalletConnect: boolean; + isMetamaskSnapLeap: boolean; } ``` diff --git a/docs/docs/hooks/useBalance.md b/docs/docs/hooks/useBalance.md index d24dd677..ede32106 100644 --- a/docs/docs/hooks/useBalance.md +++ b/docs/docs/hooks/useBalance.md @@ -7,36 +7,53 @@ Hook to retrieve specific asset balance from current account or given address ```tsx import { useBalance } from "graz"; function App() { - const { data: atomBalance, isLoading, refetch } = useBalance("atom"); - - // with custom bech32 address - const userBalance = useBalance("atom", "cosmos1kpzxx2lxg05xxn8mfygrerhmkj0ypn8edmu2pu"); + const { + data: balance, + isLoading, + refetch, + } = useBalance({ + denom: "uatom", + bech32Address: "cosmos1g3jjhgkyf36pjhe7u5cw8j9u6cgl8x929ej430", + }); return (
- Atom Balance: + Balance: {isLoading ? ( "Fetching balances..." ) : ( - {atomBalance.amount} {atomBalance.denom} + {balance.amount} {balance.denom} )} +
); } ``` -#### Params +#### Hook Params + +```ts +{ + denom: string // Asset denom to search + chainId: string + bech32Address?: string // Optional bech32 account address, defaults to connected account address -- denom: `string` = Asset denom to search -- bech32Address?: `string` = Optional bech32 account address, defaults to connected account address +} +``` #### Return Value ```tsx { - data: Coin[] | null; // from @cosmjs/proto-signing + data: Coin | null; // from @cosmjs/proto-signing dataUpdatedAt: number; error: TError | null; errorUpdatedAt: number; @@ -55,7 +72,7 @@ function App() { isRefetching: boolean; isStale: boolean; isSuccess: boolean; - refetch:(options?: RefetchOptions & RefetchQueryFilters) => Promise>; + refetch:(options?: RefetchOptions & RefetchQueryFilters) => Promise>; remove: () => void; status: 'loading' | 'error' | 'success'; fetchStatus: 'fetching' | 'paused' | 'idle'; diff --git a/docs/docs/hooks/useBalanceStaked.md b/docs/docs/hooks/useBalanceStaked.md index 211548af..1fbe50fd 100644 --- a/docs/docs/hooks/useBalanceStaked.md +++ b/docs/docs/hooks/useBalanceStaked.md @@ -4,39 +4,76 @@ Hook to retrieve list of staked balances from current account or given address #### Usage -`useBalanceStaked` accepts an optional receiving address. If the address is empty it will fetch the connected account based on the active chain. +##### Single chain ```tsx import { useBalanceStaked } from "graz"; - function App() { - const address = "cosmos1g3jjhgkyf36pjhe7u5cw8j9u6cgl8x929ej430"; - const { data: coin, isLoading } = useBalanceStaked(address); + const { data: balanceStaked, isLoading } = useBalanceStaked({ + bech32Address: "cosmos1g3jjhgkyf36pjhe7u5cw8j9u6cgl8x929ej430", + }); return (
- Staked Balance: + Balances: {isLoading ? ( - "Fetching staked balances..." + "Fetching staked balance..." ) : ( - - {coin?.amount} {coin?.denom} - +

+ {balanceStaked?.amount} {balanceStaked?.denom} +

)}
); } ``` -#### Params +##### Multi chain + +`useBalanceStaked` address handles multi chain addresses, so you need only to pass 1 chain address it will automatically convert address in other chain + +```tsx +import { useBalanceStaked } from "graz"; +function App() { + const { data: balanceStaked, isLoading } = useBalanceStaked({ + bech32Address: "cosmos1g3jjhgkyf36pjhe7u5cw8j9u6cgl8x929ej430", + chainId: ["cosmoshub-4", "sommelier-1"], + multiChain: true, + }); + + return ( +
+ Balances: + {isLoading ? ( + "Fetching staked balance..." + ) : balanceStaked && Object.entries(balanceStaked).map([chainId, coin] => { + return( +
+

{chainId} balance staked : {coin.amount} {coin.denom}

+
+ ); + }) + } +
+ ); +} +``` + +#### Hook Params -- bech32Address?: `string` = Optional bech32 account address, defaults to connected account address +```tsx +{ + chainId?: string | string[]; + multiChain?: TMultiChain; // boolean + bech32Address?: string // Optional bech32 account address, defaults to connected account address +} +``` #### Return Value ```tsx { - data: Coin | null; // from @cosmjs/proto-signing + data: TMultiChain extends true ? Record : Coin; // from @cosmjs/proto-signing dataUpdatedAt: number; error: TError | null; errorUpdatedAt: number; @@ -55,7 +92,7 @@ function App() { isRefetching: boolean; isStale: boolean; isSuccess: boolean; - refetch:(options?: RefetchOptions & RefetchQueryFilters) => Promise>; + refetch:(options?: RefetchOptions & RefetchQueryFilters) => Promise : Coin, unknown>>; remove: () => void; status: 'loading' | 'error' | 'success'; fetchStatus: 'fetching' | 'paused' | 'idle'; diff --git a/docs/docs/hooks/useBalances.md b/docs/docs/hooks/useBalances.md index 87039c34..61360504 100644 --- a/docs/docs/hooks/useBalances.md +++ b/docs/docs/hooks/useBalances.md @@ -4,13 +4,14 @@ Hook to retrieve all balances from current account or given address #### Usage -`useBalances` accepts an optional receiving address. If the address is empty it will fetch the connected account based on the active chain. +##### Single chain ```tsx import { useBalances } from "graz"; function App() { - const address = "cosmos1g3jjhgkyf36pjhe7u5cw8j9u6cgl8x929ej430"; - const { data, isLoading } = useBalances(address); + const { data: balances, isLoading } = useBalances({ + bech32Address: "cosmos1g3jjhgkyf36pjhe7u5cw8j9u6cgl8x929ej430", + }); return (
@@ -19,7 +20,7 @@ function App() { "Fetching balances..." ) : (
    - {data?.map((coin) => ( + {balances?.map((coin) => (
  • {coin.amount} {coin.denom}
  • @@ -31,15 +32,59 @@ function App() { } ``` -#### Params +##### Multi chain -- bech32Address?: `string` = Optional bech32 account address, defaults to connected account address +`useBalances` address handles multi chain addresses, so you need only to pass 1 chain address it will automatically convert address in other chain + +```tsx +import { useBalances } from "graz"; +function App() { + const { data: balances, isLoading } = useBalances({ + bech32Address: "cosmos1g3jjhgkyf36pjhe7u5cw8j9u6cgl8x929ej430", + chainId: ["cosmoshub-4", "sommelier-1"], + multiChain: true, + }); + + return ( +
    + Balances: + {isLoading ? ( + "Fetching balances..." + ) : balances && Object.entries(balances).map([chainId, coins] => { + return( +
    +

    {chainId} balances

    +
      + {coins?.map((coin) => ( +
    • + {coin.amount} {coin.denom} +
    • + ))} +
    +
    + ); + }) + } +
    + ); +} +``` + +#### Hook Params + +```tsx +{ + chainId?: string | string[]; + multiChain?: TMultiChain; // boolean + bech32Address?: string // Optional bech32 account address, defaults to connected account address +} +``` #### Return Value ```tsx { - data: Coin[] | null; // from @cosmjs/proto-signing + data: TMultiChain extends true ? Record : Coin[]; // from @cosmjs/proto-signing dataUpdatedAt: number; error: TError | null; errorUpdatedAt: number; @@ -58,7 +103,7 @@ function App() { isRefetching: boolean; isStale: boolean; isSuccess: boolean; - refetch:(options?: RefetchOptions & RefetchQueryFilters) => Promise>; + refetch:(options?: RefetchOptions & RefetchQueryFilters) => Promise : Coin[], unknown>>; remove: () => void; status: 'loading' | 'error' | 'success'; fetchStatus: 'fetching' | 'paused' | 'idle'; diff --git a/docs/docs/hooks/useCheckWallet.md b/docs/docs/hooks/useCheckWallet.md index fd1ba48a..34c64dd1 100644 --- a/docs/docs/hooks/useCheckWallet.md +++ b/docs/docs/hooks/useCheckWallet.md @@ -5,10 +5,10 @@ Hook to check whether given {@link WalletType} or default configured wallet is s #### Usage ```tsx -import { useCheckWallet } from "graz"; +import { useCheckWallet, WalletType } from "graz"; -const { data: isSupported } = useCheckWallet(); -const { data: isKeplrSupported } = useCheckWallet("keplr"); +const { data: isSupported } = useCheckWallet(WalletType.KEPLR); +const { data: isKeplrSupported } = useCheckWallet(WalletType.KEPLR); ``` #### Enum @@ -18,6 +18,13 @@ const { data: isKeplrSupported } = useCheckWallet("keplr"); { KEPLR = "keplr", LEAP = "leap", + VECTIS = "vectis", + COSMOSTATION = "cosmostation", + WALLETCONNECT = "walletconnect", + WC_KEPLR_MOBILE = "wc_keplr_mobile", + WC_LEAP_MOBILE = "wc_leap_mobile", + WC_COSMOSTATION_MOBILE = "wc_cosmostation_mobile", + METAMASK_SNAP_LEAP = "metamask_snap_leap", } ``` @@ -28,12 +35,20 @@ const { data: isKeplrSupported } = useCheckWallet("keplr"); { WalletType.KEPLR, WalletType.LEAP, + WalletTyoe.VECTIS, + WalletTyoe.WALLETCONNECT, + WalletTyoe.WC_KEPLR_MOBILE, + WalletTyoe.WC_LEAP_MOBILE, + WalletTyoe.WC_COSMOSTATION_MOBILE, + WalletTyoe.METAMASK_SNAP_LEAP, } ``` -#### Params +#### Hook Params -- type?: `WalletType` = you can check specific supported wallet +```ts +type?: WalletType // you can check specific supported wallet +``` ##### Usage @@ -43,7 +58,7 @@ const { data: isKeplrSupported } = useCheckWallet("keplr"); ```tsx { - data: boolean; + data?: boolean; dataUpdatedAt: number; error: TError | null; errorUpdatedAt: number; diff --git a/docs/docs/hooks/useConnect.md b/docs/docs/hooks/useConnect.md index b2a0b2d1..4217303a 100644 --- a/docs/docs/hooks/useConnect.md +++ b/docs/docs/hooks/useConnect.md @@ -4,8 +4,10 @@ Mutation hook to execute wallet connection with optional arguments to invoke giv #### Usage +#### Single Chain + ```tsx -import { useAccount, useConnect, mainnetChains } from "graz"; +import { useAccount, useConnect, WalletType } from "graz"; function App() { const { connect } = useConnect(); @@ -13,7 +15,29 @@ function App() { return (
    - {isConnected ? account.bech32Address : } + {isConnected ? account.bech32Address : } +
    + ); +} +``` + +#### Multi Chain + +```tsx +import { useAccount, useConnect, WalletType } from "graz"; + +function App() { + const { connect } = useConnect(); + const { isConnected, data: account } = useAccount({ + chainId: ["cosmoshub-4", "sommelier-1"], + multiChain: true + }); + + return ( +
    + {isConnected ?

    Connected

    : } +

    Cosmos hub address: {account?.["cosmoshub-4"].bech32Address}

    +

    Sommelier address: {account?.["sommelier-1"].bech32Address}

    ); } @@ -24,30 +48,21 @@ function App() { - `ConnectArgs` ```tsx { - chain?: { - chainId: string; - currencies: AppCurrency[]; - path?: string; - rest: string; - rpc: string; - rpcHeaders?: Dictionary; - gas?: { - price: string; - denom: string; - } - } - signerOpts?: SigningCosmWasmClientOptions; + chainId: string | string[]; walletType?: WalletType; + autoReconnect?: boolean; } ``` -#### Params - -Object params +#### Hook Params -- onError?: `(error: unknown, data: ConnectArgs) => void` -- onMutate?: `(data: ConnectArgs) => void` -- onSuccess?: `(data: ConnectResult) => void` +````ts +{ + onError?: (error: unknown, data: ConnectArgs) => void; + onMutate?: (data: ConnectArgs) => void; + onSuccess?: (data: ConnectResult) => void; +} +``` ##### `ConnectResult` @@ -57,7 +72,7 @@ Object params walletType: WalletType; chain: GrazChain; } -``` +```` #### Return Value diff --git a/docs/docs/hooks/useCosmWasmClient.md b/docs/docs/hooks/useCosmWasmClient.md index b146b04a..f7ac3877 100644 --- a/docs/docs/hooks/useCosmWasmClient.md +++ b/docs/docs/hooks/useCosmWasmClient.md @@ -1,9 +1,11 @@ -# useClients +# useCosmWasmClient -Hook to retrieve a useCosmWasmClient. +Hook to retrieve a CosmWasmClient. #### Usage +##### Single Chain + ```tsx import { useCosmWasmClient } from "graz"; @@ -16,11 +18,37 @@ function App() { } ``` +##### Multi Chain + +```tsx +import { useCosmWasmClient } from "graz"; + +function App() { + const { data: client, isFetching, refetch, ... } = useCosmWasmClient({ + chainId: ["cosmoshub-4", "sommelier-1"], + multiChain: true + }); + + async function getAccountFromClient() { + return await client["cosmoshub-4"].getAccount("address") + } +} +``` + +#### Hook Params + +```tsx +{ + chainId?: string | string[]; + multiChain?: TMultiChain; // boolean +} +``` + #### Return Value ```tsx { - data: CosmWasmClient + data?: TMultiChain extends true ? Record : CosmWasmClient; dataUpdatedAt: number; error: TError | null; errorUpdatedAt: number; @@ -39,7 +67,7 @@ function App() { isRefetching: boolean; isStale: boolean; isSuccess: boolean; - refetch:(options?: RefetchOptions & RefetchQueryFilters) => Promise>; + refetch:(options?: RefetchOptions & RefetchQueryFilters) => Promise : CosmWasmClient;, unknown>>; remove: () => void; status: 'loading' | 'error' | 'success'; fetchStatus: 'fetching' | 'paused' | 'idle'; diff --git a/docs/docs/hooks/useCosmWasmSigningClient.md b/docs/docs/hooks/useCosmWasmSigningClient.md index b7087d9c..e7cac225 100644 --- a/docs/docs/hooks/useCosmWasmSigningClient.md +++ b/docs/docs/hooks/useCosmWasmSigningClient.md @@ -2,7 +2,9 @@ Hook to retrieve a SigningCosmWasmClient. -#### Usage +### Usage + +##### Single Chain ```tsx import { useCosmWasmSigningClient } from "graz"; @@ -16,12 +18,29 @@ function App() { } ``` -#### Params +##### Multi Chain + +```tsx +import { useCosmWasmClient } from "graz"; + +function App() { + const { data: signingClient, isFetching, refetch, ... } = useCosmWasmSigningClient({ + chainId: ["cosmoshub-4", "sommelier-1"], + multiChain: true + }); + + async function getAccountFromClient() { + return await client["cosmoshub-4"].getAccount("address") + } +} +``` + +#### Hook Params ```tsx -args?: { - opts?: SigningCosmWasmClientOptions; - offlineSigner?: "offlineSigner" | "offlineSignerAuto" | "offlineSignerOnlyAmino"; +{ + chainId?: string | string[]; + multiChain?: TMultiChain; // boolean } ``` @@ -29,7 +48,7 @@ args?: { ```tsx { - data: SigningStargateClient + data?: TMultiChain extends true ? Record : SigningCosmWasmClient; dataUpdatedAt: number; error: TError | null; errorUpdatedAt: number; @@ -48,7 +67,7 @@ args?: { isRefetching: boolean; isStale: boolean; isSuccess: boolean; - refetch:(options?: RefetchOptions & RefetchQueryFilters) => Promise>; + refetch:(options?: RefetchOptions & RefetchQueryFilters) => Promise : SigningCosmWasmClient, unknown>>; remove: () => void; status: 'loading' | 'error' | 'success'; fetchStatus: 'fetching' | 'paused' | 'idle'; diff --git a/docs/docs/hooks/useCosmWasmTmSigningClient.md b/docs/docs/hooks/useCosmWasmTmSigningClient.md index f18ab6e5..63e11f7c 100644 --- a/docs/docs/hooks/useCosmWasmTmSigningClient.md +++ b/docs/docs/hooks/useCosmWasmTmSigningClient.md @@ -4,6 +4,8 @@ Hook to retrieve a SigningCosmWasmClient with tendermint client. #### Usage +##### Single Chain + ```tsx import { useCosmWasmTmSigningClient } from "graz"; @@ -16,13 +18,33 @@ function App() { } ``` -#### Params +##### Multi Chain + +```tsx +import { useCosmWasmTmSigningClient } from "graz"; + +function App() { + const { data: signingClient, isFetching, refetch, ... } = useCosmWasmTmSigningClient({ + type: "tm34", + chainId: ["cosmoshub-4", "sommelier-1"], + multiChain: true + }); + + async function getAccountFromClient() { + return await client["cosmoshub-4"].getAccount("address") + } +} +``` + +#### Hook Params ```tsx -args?: { +{ type: "tm34" | "tm37"; - opts?: SigningCosmWasmClientOptions; + opts?: TMultiChain extends true ? : SigningCosmWasmClientOptions; offlineSigner?: "offlineSigner" | "offlineSignerAuto" | "offlineSignerOnlyAmino"; + chainId?: string | string[]; + multiChain?: TMultiChain; // boolean } ``` @@ -30,7 +52,7 @@ args?: { ```tsx { - data: SigningStargateClient + data?: TMultiChain extends true ? Record : SigningCosmWasmClient dataUpdatedAt: number; error: TError | null; errorUpdatedAt: number; @@ -49,7 +71,7 @@ args?: { isRefetching: boolean; isStale: boolean; isSuccess: boolean; - refetch:(options?: RefetchOptions & RefetchQueryFilters) => Promise>; + refetch:(options?: RefetchOptions & RefetchQueryFilters) => Promise : SigningCosmWasmClient, unknown>>; remove: () => void; status: 'loading' | 'error' | 'success'; fetchStatus: 'fetching' | 'paused' | 'idle'; diff --git a/docs/docs/hooks/useDisconnect.md b/docs/docs/hooks/useDisconnect.md index 666a28f2..b477481e 100644 --- a/docs/docs/hooks/useDisconnect.md +++ b/docs/docs/hooks/useDisconnect.md @@ -8,26 +8,41 @@ Mutation hook to execute wallet disconnection with optional arguments to invoke import { useAccount, useDisconnect } from "graz"; function App() { - // pass `true` on disconnect to clear recent connected chain const { disconnect } = useDisconnect(); - const { isConnected, account, status } = useAccount(); return (
    - {isConnected ? `Connected to ${account?.bech32Address}` : status} - {isConnected && } + }
    ); } ``` -#### Params +##### Disconnect a specific chain -Object params +```tsx +import { useAccount, useDisconnect } from "graz"; + +function App() { + const { disconnect } = useDisconnect(); + + return ( +
    + +
    + ); +} +``` -- onError?: `(error: unknown, data: boolean) => void` -- onMutate?: `(data: boolean) => void` -- onSuccess?: `(data: boolean) => void` +#### Hook Params + +```ts +{ + onError?: (error: unknown, data: boolean) => void + onMutate?: (data: boolean) => void + onSuccess?: (data: boolean) => void +} +``` #### Return Value diff --git a/docs/docs/hooks/useOfflineSigners.md b/docs/docs/hooks/useOfflineSigners.md index 5d30effc..7d1466ae 100644 --- a/docs/docs/hooks/useOfflineSigners.md +++ b/docs/docs/hooks/useOfflineSigners.md @@ -2,19 +2,52 @@ Hook to retrieve offline signer objects (default, amino enabled, and auto) -Note: signer objects is initialized after connecting an account. - #### Usage +##### Single Chain + +```tsx +import { useOfflineSigners } from "graz"; + +function App() { + const { data } = useOfflineSigners(); + data.offlineSigner; + data.offlineSignerAmino; + data.offlineSignerAuto; +} +``` + +##### Multi Chain + ```tsx import { useOfflineSigners } from "graz"; function App() { - const { signer, signerAmino, signerAuto } = useOfflineSigners(); + const { data } = useOfflineSigners({ + chainId: ["cosmoshub-4", "sommelier-1"], + multiChain: true, + }); + const cosmoshubSigner = data?.["cosmoshub-4"].offlineSignerAuto; + const sommSigner = data?.["sommelier-1"].offlineSignerAuto; +} +``` + +#### Hook Params + +```tsx +{ + chainId?: string | string[]; + multiChain?: TMultiChain; // boolean +} +``` + +#### Types - async function getAccountFromSigner() { - return await signer.getAccount(); - } +```ts +interface OfflineSigners { + offlineSigner: OfflineAminoSigner & OfflineDirectSigner; + offlineSignerAmino: OfflineAminoSigner; + offlineSignerAuto: OfflineAminoSigner | OfflineDirectSigner; } ``` @@ -22,8 +55,28 @@ function App() { ```tsx { - signer: (OfflineSigner & OfflineDirectSigner) | null; - signerAmino: OfflineSigner | null; - signerAuto: OfflineSigner | OfflineDirectSigner | null; + data: TMultiChain extends true ? Record : OfflineSigners; // from @cosmjs/proto-signing + dataUpdatedAt: number; + error: TError | null; + errorUpdatedAt: number; + failureCount: number; + errorUpdateCount: number; + isError: boolean; + isFetched: boolean; + isFetchedAfterMount: boolean; + isFetching: boolean; + isLoading: boolean; + isLoadingError: boolean; + isPaused: boolean; + isPlaceholderData: boolean; + isPreviousData: boolean; + isRefetchError: boolean; + isRefetching: boolean; + isStale: boolean; + isSuccess: boolean; + refetch:(options?: RefetchOptions & RefetchQueryFilters) => Promise : OfflineSigners, unknown>>; + remove: () => void; + status: 'loading' | 'error' | 'success'; + fetchStatus: 'fetching' | 'paused' | 'idle'; } ``` diff --git a/docs/docs/hooks/useQueryRaw.md b/docs/docs/hooks/useQueryRaw.md index a09ea59a..3192f546 100644 --- a/docs/docs/hooks/useQueryRaw.md +++ b/docs/docs/hooks/useQueryRaw.md @@ -8,17 +8,18 @@ Note: it will initiate if `address` and `key` are there ```ts import { useQuerySmart } from "graz"; -interface TData { - // ... -} -const { data, isLoading } = useQueryRaw(address, key); +const { data, isLoading } = useQueryRaw({ address, key }); console.log(data); ``` -#### Params +#### Hook Params -- address?: `string` - The address of the contract to query -- key?: `string` - The key to lookup in the contract storage +```ts +{ + address?: string // The address of the contract to query + key?: string //The key to lookup in the contract storage +} +``` #### Return Value diff --git a/docs/docs/hooks/useQuerySmart.md b/docs/docs/hooks/useQuerySmart.md index d569a053..4743477e 100644 --- a/docs/docs/hooks/useQuerySmart.md +++ b/docs/docs/hooks/useQuerySmart.md @@ -12,20 +12,24 @@ interface TData { // ... } -const { data, isLoading } = useQuerySmart(address, queryMsg); +const { data, isLoading } = useQuerySmart({ address, queryMsg }); console.log(data); ``` -#### Params +#### Hook Params -- address?: `string` - The address of the contract to query -- queryMsg?: `string` - The key to lookup in the contract storage +```ts +{ + address?: string // The address of the contract to query + queryMsg?: string // The key to lookup in the contract storage +} +``` #### Return Value ```tsx { - data: unknown; + data: TData | unknown; dataUpdatedAt: number; error: TError | null; errorUpdatedAt: number; diff --git a/docs/docs/hooks/useRecentChain.md b/docs/docs/hooks/useRecentChain.md deleted file mode 100644 index 4a9355b1..00000000 --- a/docs/docs/hooks/useRecentChain.md +++ /dev/null @@ -1,35 +0,0 @@ -# useRecentChain - -hook to retrieve last connected chain info - -#### Usage - -```tsx -import { useRecentChain, connect, mainnetChains } from "graz"; -const { data: recentChain, clear } = useRecentChain(); - -try { - connect(mainnetChains.cosmos); -} catch { - connect(recentChain); -} -``` - -#### Return Value - -```tsx -{ - data: { - chainId: string; - currencies: AppCurrency[]; - rest: string; - rpc: string; - rpcHeaders?: Dictionary; - gas?: { - price: string; - denom: string; - }; - } | null, -clear: () => void // clear recent chain -} -``` diff --git a/docs/docs/hooks/useRecentChainIds.md b/docs/docs/hooks/useRecentChainIds.md new file mode 100644 index 00000000..576b2ce1 --- /dev/null +++ b/docs/docs/hooks/useRecentChainIds.md @@ -0,0 +1,25 @@ +# useRecentChainIds + +hook to retrieve last connected chainIds + +#### Usage + +```tsx +import { useRecentChainIds } from "graz"; + +function App() { + const recentChainIds = useRecentChainIds(); + + return ( +
    + Connected to {recentChainIds.map((id) => id).join("; ")} +
    + ); +} +``` + +#### Return Value + +```tsx +string[] | undefined; // @keplr-wallet/types +``` diff --git a/docs/docs/hooks/useRecentChains.md b/docs/docs/hooks/useRecentChains.md new file mode 100644 index 00000000..cf68cd11 --- /dev/null +++ b/docs/docs/hooks/useRecentChains.md @@ -0,0 +1,25 @@ +# useRecentChains + +hook to retrieve last connected `ChainInfo`s + +#### Usage + +```tsx +import { useRecentChains } from "graz"; + +function App() { + const recentChains = useRecentChains(); + + return ( +
    + Last Connected : {recentChains.map((chain) => chain.chainName).join("; ")} +
    + ); +} +``` + +#### Return Value + +```tsx +ChainInfo[] | undefined; // @keplr-wallet/types +``` diff --git a/docs/docs/hooks/useStargateClient.md b/docs/docs/hooks/useStargateClient.md index 7dad1fca..5b85f614 100644 --- a/docs/docs/hooks/useStargateClient.md +++ b/docs/docs/hooks/useStargateClient.md @@ -4,6 +4,8 @@ Hook to retrieve a StargateClient. #### Usage +##### Single Chain + ```tsx import { useStargateClient } from "graz"; @@ -16,11 +18,37 @@ function App() { } ``` +##### Multi Chain + +```tsx +import { useStargateClient } from "graz"; + +function App() { + const { data: client, isFetching, refetch, ... } = useStargateClient({ + chainId: ["cosmoshub-4", "sommelier-1"], + multiChain: true + }); + + async function getAccountFromClient() { + return await client["cosmoshub-4"].getAccount("address") + } +} +``` + +#### Hook Params + +```tsx +{ + chainId?: string | string[]; + multiChain?: TMultiChain; // boolean +} +``` + #### Return Value ```tsx { - data: StargateClient + data?: TMultiChain extends true ? Record : StargateClient; dataUpdatedAt: number; error: TError | null; errorUpdatedAt: number; @@ -39,7 +67,7 @@ function App() { isRefetching: boolean; isStale: boolean; isSuccess: boolean; - refetch:(options?: RefetchOptions & RefetchQueryFilters) => Promise>; + refetch:(options?: RefetchOptions & RefetchQueryFilters) => Promise : StargateClient;, unknown>>; remove: () => void; status: 'loading' | 'error' | 'success'; fetchStatus: 'fetching' | 'paused' | 'idle'; diff --git a/docs/docs/hooks/useStargateSigningClient.md b/docs/docs/hooks/useStargateSigningClient.md index cd018b30..164db1e0 100644 --- a/docs/docs/hooks/useStargateSigningClient.md +++ b/docs/docs/hooks/useStargateSigningClient.md @@ -2,7 +2,9 @@ Hook to retrieve a SigningStargateClient. -#### Usage +### Usage + +##### Single Chain ```tsx import { useStargateSigningClient } from "graz"; @@ -16,12 +18,29 @@ function App() { } ``` -#### Params +##### Multi Chain + +```tsx +import { useStargateClient } from "graz"; + +function App() { + const { data: signingClient, isFetching, refetch, ... } = useStargateSigningClient({ + chainId: ["cosmoshub-4", "sommelier-1"], + multiChain: true + }); + + async function getAccountFromClient() { + return await client["cosmoshub-4"].getAccount("address") + } +} +``` + +#### Hook Params ```tsx -args?: { - opts?: SigningCosmWasmClientOptions; - offlineSigner?: "offlineSigner" | "offlineSignerAuto" | "offlineSignerOnlyAmino"; +{ + chainId?: string | string[]; + multiChain?: TMultiChain; // boolean } ``` @@ -29,7 +48,7 @@ args?: { ```tsx { - data: SigningStargateClient + data?: TMultiChain extends true ? Record : SigningStargateClient; dataUpdatedAt: number; error: TError | null; errorUpdatedAt: number; @@ -48,7 +67,7 @@ args?: { isRefetching: boolean; isStale: boolean; isSuccess: boolean; - refetch:(options?: RefetchOptions & RefetchQueryFilters) => Promise>; + refetch:(options?: RefetchOptions & RefetchQueryFilters) => Promise : SigningStargateClient, unknown>>; remove: () => void; status: 'loading' | 'error' | 'success'; fetchStatus: 'fetching' | 'paused' | 'idle'; diff --git a/docs/docs/hooks/useStargateTmSigningClient.md b/docs/docs/hooks/useStargateTmSigningClient.md index 103de932..96ef63ea 100644 --- a/docs/docs/hooks/useStargateTmSigningClient.md +++ b/docs/docs/hooks/useStargateTmSigningClient.md @@ -4,6 +4,8 @@ Hook to retrieve a SigningStargateClient with tendermint client. #### Usage +##### Single Chain + ```tsx import { useStargateTmSigningClient } from "graz"; @@ -16,13 +18,33 @@ function App() { } ``` -#### Params +##### Multi Chain + +```tsx +import { useStargateTmSigningClient } from "graz"; + +function App() { + const { data: signingClient, isFetching, refetch, ... } = useStargateTmSigningClient({ + type: "tm34", + chainId: ["cosmoshub-4", "sommelier-1"], + multiChain: true + }); + + async function getAccountFromClient() { + return await client["cosmoshub-4"].getAccount("address") + } +} +``` + +#### Hook Params ```tsx -args?: { +{ type: "tm34" | "tm37"; - opts?: SigningCosmWasmClientOptions; + opts?: TMultiChain extends true ? Record : SigningStargateClientOptions; offlineSigner?: "offlineSigner" | "offlineSignerAuto" | "offlineSignerOnlyAmino"; + chainId?: string | string[]; + multiChain?: TMultiChain; // boolean } ``` @@ -30,7 +52,7 @@ args?: { ```tsx { - data: SigningStargateClient + data?: TMultiChain extends true ? Record : SigningStargateClient dataUpdatedAt: number; error: TError | null; errorUpdatedAt: number; @@ -49,7 +71,7 @@ args?: { isRefetching: boolean; isStale: boolean; isSuccess: boolean; - refetch:(options?: RefetchOptions & RefetchQueryFilters) => Promise>; + refetch:(options?: RefetchOptions & RefetchQueryFilters) => Promise : SigningStargateClient, unknown>>; remove: () => void; status: 'loading' | 'error' | 'success'; fetchStatus: 'fetching' | 'paused' | 'idle'; diff --git a/docs/docs/hooks/useSuggestChain.md b/docs/docs/hooks/useSuggestChain.md index e8af3922..46ba42d0 100644 --- a/docs/docs/hooks/useSuggestChain.md +++ b/docs/docs/hooks/useSuggestChain.md @@ -111,13 +111,22 @@ function App() { } ``` -#### Params +#### Hook Params -Object params +```ts + onError?: (error: unknown, data: ChainInfo) => void + onMutate?: (data: chainInfo) => void + onSuccess?: (data: chainInfo) => void +``` + +#### Types -- onError?: `(error: unknown, data: ChainInfo) => void` -- onMutate?: `(data: chainInfo) => void` -- onSuccess?: `(data: chainInfo) => void` +```ts +interface SuggestChainArgs { + chainInfo: ChainInfo; + walletType?: WalletType; +} +``` #### Return Value diff --git a/docs/docs/hooks/useSuggestChainAndConnect.md b/docs/docs/hooks/useSuggestChainAndConnect.md index c1166bb0..337d871e 100644 --- a/docs/docs/hooks/useSuggestChainAndConnect.md +++ b/docs/docs/hooks/useSuggestChainAndConnect.md @@ -6,7 +6,7 @@ mutation hook for [Suggesting a chain](useSuggestChain.md) and [connect](./useCo ```tsx import { Bech32Address } from "@keplr-wallet/cosmos"; -import { useSuggestChainAndConnect } from "graz"; +import { useSuggestChainAndConnect, WalletType } from "graz"; const OSMO = { coinDenom: "osmo", @@ -37,6 +37,7 @@ function App() { function handleSuggestAndConnect() { suggestAndConnect({ chainInfo: osmosisTestnet, + walletType: WalletType.KEPLR, }); } @@ -64,20 +65,28 @@ function App() { } ``` -#### Params +#### Hook Params -Object params +```ts +{ + onError?: (error: unknown, data: ChainInfo) => void + onMutate?: (data: chainInfo) => void + onSuccess?: (data: { + account: Key; + walletType: WalletType; + chain: ChainInfo; + }) => void} +``` -- onError?: `(error: unknown, data: ChainInfo) => void` -- onMutate?: `(data: chainInfo) => void` -- onSuccess?: - ```tsx - (data: { - account: Key; - walletType: WalletType; - chain: ChainInfo; - }) => void - ``` +#### Types + +```ts +interface SuggestChainAndConnectArgs { + chainInfo: ChainInfo; + walletType?: WalletType; + autoReconnect?: boolean; +} +``` #### Return Value diff --git a/docs/docs/hooks/useTendermintClient.md b/docs/docs/hooks/useTendermintClient.md index 26fc6214..d4b3aca2 100644 --- a/docs/docs/hooks/useTendermintClient.md +++ b/docs/docs/hooks/useTendermintClient.md @@ -4,11 +4,13 @@ Hook to retrieve a TendermintClient. #### Usage +##### Single Chain + ```tsx import { useTendermintClient } from "graz"; function App() { - const { data: client, isFetching, refetch, ... } = useTendermintClient("tm34"); + const { data: client, isFetching, refetch, ... } = useTendermintClient(); async function getAccountFromClient() { return await client.getAccount("address") @@ -16,11 +18,30 @@ function App() { } ``` -#### Params +##### Multi Chain ```tsx -{ +import { useTendermintClient } from "graz"; + +function App() { + const { data: client, isFetching, refetch, ... } = useTendermintClient({ + chainId: ["cosmoshub-4", "sommelier-1"], + multiChain: true + }); + + async function getAccountFromClient() { + return await client["cosmoshub-4"].getAccount("address") + } +} +``` + +#### Hook Params + +```tsx +{ type: "tm34" | "tm37"; + chainId?: string | string[]; + multiChain?: TMultiChain; // boolean } ``` @@ -28,7 +49,7 @@ function App() { ```tsx { - data: TendermintClient + data?: TMultiChain extends true ? Record : TendermintClient; dataUpdatedAt: number; error: TError | null; errorUpdatedAt: number; @@ -47,7 +68,7 @@ function App() { isRefetching: boolean; isStale: boolean; isSuccess: boolean; - refetch:(options?: RefetchOptions & RefetchQueryFilters) => Promise>; + refetch:(options?: RefetchOptions & RefetchQueryFilters) => Promise : TendermintClient;, unknown>>; remove: () => void; status: 'loading' | 'error' | 'success'; fetchStatus: 'fetching' | 'paused' | 'idle'; diff --git a/docs/docs/index.md b/docs/docs/index.md index 66432acb..9ad63da7 100644 --- a/docs/docs/index.md +++ b/docs/docs/index.md @@ -9,7 +9,7 @@ sidebar_position: 1 ## Features - 🪝 20+ hooks for interfacing with wallets, clients, signers, etc. (connecting, view balances, send tokens, etc.) -- 💳 Multiple wallet supports (Keplr, Leap, Cosmostation, WalletConnect) +- 💳 Multiple wallet supports (Keplr, Leap, Cosmostation, Vectis, Metamask Snap, WalletConnect) - ⚙️ Generate mainnet & testnet `ChainInfo` - 📚 Built-in caching, request deduplication, and all the good stuff from [`@tanstack/react-query`](https://tanstack.com/query) and [`zustand`](https://github.com/pmndrs/zustand) - 🔄 Auto refresh on wallet and network change @@ -35,16 +35,41 @@ yarn add graz pnpm add graz ``` +### Install peer dependencies + +To avoid version missmatch we dcided to make these packages as peer dependencies + +```shell +# using npm +npm install @cosmjs/cosmwasm-stargate @cosmjs/launchpad @cosmjs/proto-signing @cosmjs/stargate @cosmjs/tendermint-rpc long + +# using yarn +yarn add @cosmjs/cosmwasm-stargate @cosmjs/launchpad @cosmjs/proto-signing @cosmjs/stargate @cosmjs/tendermint-rpc long + +# using pnpm +pnpm add @cosmjs/cosmwasm-stargate @cosmjs/launchpad @cosmjs/proto-signing @cosmjs/stargate @cosmjs/tendermint-rpc long +``` + ## Quick start Wrap your React app with `` and use available `graz` hooks anywhere: -```jsx -import { GrazProvider, mainnetChains } from "graz"; +```tsx +import { GrazProvider } from "graz"; + +const cosmoshub: ChainInfo = { + chainId: "cosmoshub-4", + chainName: "Cosmos Hub", + //... rest of cosmoshub ChainInfo +}; function App() { return ( - + ); @@ -52,7 +77,7 @@ function App() { ``` ```jsx -import { mainnetChains, useAccount, useConnect, useDisconnect } from "graz"; +import { useAccount, useConnect, useDisconnect } from "graz"; function Wallet() { const { connect, status } = useConnect(); @@ -74,27 +99,9 @@ function Wallet() { ## Examples -- Next.js + Chakra UI: https://graz.sh/examples/next ([source code](https://github.com/graz-sh/graz/tree/dev/example/next)) +- Next.js + Multi chain: https://graz.sh/examples/starter ([source code](https://github.com/graz-sh/graz/tree/dev/example/starter/)) +- Next.js + Chakra UI: https://graz.sh/examples/next ([source code](https://github.com/graz-sh/graz/tree/dev/example/next/)) - Vite: https://graz.sh/examples/vite ([source code](https://github.com/graz-sh/graz/tree/dev/example/vite/)) -- Next.js Starter: https://graz.sh/examples/starter ([source code](https://github.com/graz-sh/graz/tree/dev/example/starter/)) - -## Third-party dependencies - -`graz` uses various dependencies such as [`@cosmjs/cosmwasm-stargate`](https://www.npmjs.com/package/@cosmjs/cosmwasm-stargate) and [`@keplr-wallet/types`](https://www.npmjs.com/package/@keplr-wallet/types). - -Rather than importing those packages directly, you can import from [`graz/dist/cosmjs`](https://github.com/graz-sh/graz/tree/dev/packages/graz/src/cosmjs.ts) and [`graz/dist/keplr`](https://github.com/graz-sh/graz/tree/dev/packages/graz/src/keplr.ts) which re-exports all respective dependencies: - -```diff -- import type { CosmWasmClient } from "@cosmjs/cosmwasm-stargate"; -+ import type { CosmWasmClient } from "graz/dist/cosmjs"; -``` - -But if you prefer importing from their respective pacakges, you can install dependencies that `graz` uses for better intellisense: - -```sh -# using yarn -yarn add @cosmjs/cosmwasm-stargate @cosmjs/proto-signing @cosmjs/stargate @keplr-wallet/types -``` ## Maintainers diff --git a/docs/docs/migration-guide.md b/docs/docs/migration-guide.md index 677e73fc..991e62b8 100644 --- a/docs/docs/migration-guide.md +++ b/docs/docs/migration-guide.md @@ -4,6 +4,149 @@ sidebar_position: 3 # Migration Guide +## 0.1.0 Breaking Changes + +### `` + +`grazOptions` is required to provide a `ChainInfo[]` to the `chains` param. [Read more](./provider/grazProvider.md) + +```diff +const cosmoshub = { + chainId: "cosmoshub-4", + chainName: "Cosmos Hub", + //... +} +- ++ + // children + +``` + +`defaultChain` removed from `grazOptions` + +### Removed `GrazChain` type + +We are using [`ChainInfo` from `@keplr-wallet/types`](https://github.com/chainapsis/keplr-wallet/blob/master/packages/types/src/chain-info.ts#L5-L46) instead of `GrazChain` + +Our initial intention having `GrazChain` is for adding and only using required value for interacting with signingClients. We adding rpcHeaders and gas in there for interacting with clients and signingClient for simplicity, but this can make a different problem when you already have a ChainInfo you will need to mutate those constants. [Read RFC](https://github.com/orgs/graz-sh/discussions/115). + +For adding rpcHeaders and gas, we can add it in `GrazProvider` on `grazOptions.chainsConfig` to provide those values. + +```ts +interface ChainConfig { + rpcHeaders?: Dictionary; + gas?: { price: string; denom: string }; +} + +type ChainsConfig = Record; +``` + +```diff +// previous GrazChain +const cosmoshub = { + chainId: "cosmoshub-4", + chainName: "Cosmos Hub", +- rpcHeaders: { +- "custom-header": "custom-value" +- }, +- gas: { +- price: "0.025", +- denom: "uatom" +- } +} + + + // children + +``` + +When you connect you don't need `GrazChain` anymore, you only need the `chainId` + +```diff + const { connect } = useConnect(); + connect({ +- chain: cosmoshub, ++ chainId: "cosmoshub-4", // chainId receive string | string[] + // ... + }) + +``` + +### `useConnect` + +```diff +const { connect } = useConnect(); + connect({ +- chain: cosmoshub, ++ chainId: "cosmoshub-4", // chainId receive string | string[] + // ... + }) +``` + +### `ConnectResult` + +return type of `connect` in `useConnect` and `onConnect` params + +```diff +interface ConnectResult { +- account: Key; ++ account: Record + walletType: WalletType; +- chain: GrazChain; ++ chains: ChainInfo[]; +} +``` + +### `useBalance` + +```diff +- const balance = useBalance(denom, bech32Address); ++ const balance = useBalance({ denom, bech32Address }); +``` + +### `useBalances` + +```diff +- const balances = useBalances(denom, bech32Address); ++ const balances = useBalances({ denom, bech32Address }); +``` + +### `useBalanceStaked` + +```diff +- const balanceStaked = useBalances(bech32Address); ++ const balanceStaked = useBalanceStaked({ bech32Address }); +``` + +### `useQuerySmart` + +```diff +- const querySmart = useQuerySmart(address, message); ++ const querySmart = useQuerySmart({ address, message }); +``` + +### `useQueryRaw` + +```diff +- const queryRaw = useQueryRaw(address, key); ++ const queryRaw = useQueryRaw({ address, key }); +``` + ## 0.0.50 Breaking Changes [Full changelog](/docs/change-log/#version-0045) diff --git a/docs/docs/provider/_category_.json b/docs/docs/provider/_category_.json index 6dbe686a..4ae3bfeb 100644 --- a/docs/docs/provider/_category_.json +++ b/docs/docs/provider/_category_.json @@ -1,4 +1,4 @@ { "label": "Provider", - "position": 5 + "position": 7 } diff --git a/docs/docs/provider/grazProvider.md b/docs/docs/provider/grazProvider.md index 62361bf3..d6a95b53 100644 --- a/docs/docs/provider/grazProvider.md +++ b/docs/docs/provider/grazProvider.md @@ -7,12 +7,43 @@ Provider component which wraps @tanstack/react-query's `QueryClientProvider` and ```tsx import { GrazProvider, WalletType } from "graz"; +const cosmoshub = { + chainId: "cosmoshub-4", + chainName: "Cosmos Hub", + // ... rest of cosmoshub ChainInfo +} + +const sommelier = { + chainId: "sommelier-1", + chainName: "Sommelier", + // ... rest of sommelier ChainInfo +} + // example next.js application in _app.tsx export default function CustomApp({ Component, pageProps }: AppProps) { return ( { + console.log("not found") + }, + multiChainFetchConcurrency: 6 // ... }} > @@ -24,11 +55,32 @@ export default function CustomApp({ Component, pageProps }: AppProps) { #### Params -`grazOptions`(Optional) +`grazOptions` + +```ts + { + chains?: ChainInfo[]; + chainsConfig?: Record + defaultWallet?: WalletType; // default to `WalletType.KEPLR` + onNotFound?: () => void; + autoReconnect?: boolean; // Defaults to true, will try to reconnect when initial start(session empty) + onReconnectFailed?: () => void; + walletConnect?: WalletConnectStore | null; + multiChainFetchConcurrency?: number // when using multi chain hooks it fetch 3 function simultaneously. defaults to 3. + } +``` + +#### Types + +[`WalletConnectStore`](../types/WalletConnectStore.md) -- defaultChain?: `GrazChain`; -- defaultWallet?: `WalletType`; -- onNotFound?: () => void; -- autoReconnect?: boolean; -> Defaults to `true`, will try to reconnect when initial start(session empty) -- onReconnectFailed?: () => void; -- walletConnect?: [`WalletConnectStore`](../types/WalletConnectStore.md) | null +```ts +interface ChainConfig { + path?: string; + rpcHeaders?: Dictionary; + gas?: { + price: string; + denom: string; + }; +} +``` diff --git a/docs/docs/types/_category_.json b/docs/docs/types/_category_.json index 1136fbdc..1a8692c7 100644 --- a/docs/docs/types/_category_.json +++ b/docs/docs/types/_category_.json @@ -1,4 +1,4 @@ { "label": "Types", - "position": 5 + "position": 8 } diff --git a/docs/docs/types/grazChain.md b/docs/docs/types/grazChain.md deleted file mode 100644 index 4593fa85..00000000 --- a/docs/docs/types/grazChain.md +++ /dev/null @@ -1,25 +0,0 @@ -# GrazChain - -`graz` uses a lighter-weight implementation of Keplr's `ChainInfo` config called `GrazChain`. - -`GrazChain` can't be passed to [`useSuggestChain`](../hooks/useSuggestChain.md) and [`useSuggestChainAndConnect`](../hooks/useSuggestChainAndConnect.md) hooks, because they require the full Keplr `ChainInfo` spec. - -
    Where do I need GrazChain -

    - -- [`useConnect`](../hooks/useConnect.md) -- [`useBalances`](../hooks/useBalances.md) - -

    -
    - -```tsx -interface GrazChain { - chainId: string; - currencies: any[]; - rest: string; - rpc: string; - rpcHeaders?: Dictionary; - gas?: { price: string; denom: string }; -} -``` diff --git a/docs/docs/types/walletType.md b/docs/docs/types/walletType.md index 32567889..58bc5445 100644 --- a/docs/docs/types/walletType.md +++ b/docs/docs/types/walletType.md @@ -16,7 +16,7 @@ #### Usage ```tsx -import { useAccount, useConnect, mainnetChains, WalletType } from "graz"; +import { useAccount, useConnect, WalletType } from "graz"; function App() { const { connect } = useConnect(); @@ -27,9 +27,7 @@ function App() { {isConnected ? ( account.bech32Address ) : ( - + )}
); diff --git a/docs/docs/utilities/_category_.json b/docs/docs/utilities/_category_.json index 3f707811..d0d5ca08 100644 --- a/docs/docs/utilities/_category_.json +++ b/docs/docs/utilities/_category_.json @@ -1,6 +1,6 @@ { "label": "Utilities", - "position": 6, + "position": 9, "link": { "type": "generated-index", "description": "Collection of utility functions that graz provide" diff --git a/docs/docs/utilities/checkWallet.md b/docs/docs/utilities/checkWallet.md new file mode 100644 index 00000000..00ec9524 --- /dev/null +++ b/docs/docs/utilities/checkWallet.md @@ -0,0 +1,15 @@ +# checkWallet + +Function to return a `boolean` whether a wallet is available or not + +#### Usage + +```tsx +import { checkWallet, WalletType } from "graz"; + +const isKeplrReady = checkWallet(WalletType.KEPLR); + +isKeplrReady && ( + +); +``` diff --git a/docs/docs/utilities/defineChains.md b/docs/docs/utilities/defineChains.md deleted file mode 100644 index 49ae1b83..00000000 --- a/docs/docs/utilities/defineChains.md +++ /dev/null @@ -1,64 +0,0 @@ -# defineChains - -`graz` uses a lighter-weight implementation of Keplr's `ChainInfo` config called `GrazChain`. The `defineChains` function allows you to set default chain info configurations for `graz`. The [`useSuggestChain`](../hooks/useSuggestChain.md) and [`useSuggestChainAndConnect`](../hooks/useSuggestChainAndConnect.md) hooks do not use these defaults, as they require the full Keplr `ChainInfo` spec. - -
GrazChain -

- -```tsx -interface GrazChain { - chainId: string; - currencies: any[]; - rest: string; - rpc: string; - rpcHeaders?: Dictionary; - gas?: { price: string; denom: string }; -} -``` - -

-
- -
Where do I need GrazChain -

- -- [`useConnect`](../hooks/useConnect.md) -- [`useBalances`](../hooks/useBalances.md) - -

-
- -#### Usage - -define your chain by populating a `GrazChain` record - -```tsx -import { defineChains, connect } from "graz"; - -export const myCustomChains = defineChains({ - cosmos: { - chainId: "cosmoshub-4", - currencies: [ - { - coinDenom: "atom", - coinMinimalDenom: "uatom", - coinDecimals: 6, - coinGeckoId: "cosmos", - coinImageUrl: "https://raw.githubusercontent.com/cosmos/chain-registry/master/cosmoshub/images/atom.png", - }, - ], - rpc: "https://rpc.cosmoshub.strange.love", - rest: "https://api.cosmoshub.strange.love", - }, -}); - -connect(myCustomChains.cosmos); -``` - -#### Return Value - -```tsx -{ - string: GrazChain; -} -``` diff --git a/docs/package.json b/docs/package.json index f636155c..abd60949 100644 --- a/docs/package.json +++ b/docs/package.json @@ -3,7 +3,7 @@ "version": "0.0.0", "scripts": { "build": "docusaurus build", - "build:all": "docusaurus build && pnpm -F graz build && pnpm -r run export:docs", + "build:all": "docusaurus build && pnpm -F graz build && pnpm -F graz cli -g && pnpm -r run export:docs", "clear": "docusaurus clear", "deploy": "docusaurus deploy", "docusaurus": "docusaurus", @@ -20,15 +20,15 @@ "@docusaurus/core": "^2.4.1", "@docusaurus/preset-classic": "^2.4.1", "@mdx-js/react": "^1.6.22", - "clsx": "^1.2.1", + "clsx": "^2.0.0", "prism-react-renderer": "^1.3.5", - "react": "^17", - "react-dom": "^17" + "react": "^17.0.2", + "react-dom": "^17.0.2" }, "devDependencies": { "@docusaurus/module-type-aliases": "^2.4.1", "@tsconfig/docusaurus": "^1.0.7", - "typescript": "^5.1.3" + "typescript": "^5.2.2" }, "browserslist": { "production": [ diff --git a/docs/src/components/HomepageFeatures/index.tsx b/docs/src/components/HomepageFeatures/index.tsx index f08a5ee5..61e919c6 100644 --- a/docs/src/components/HomepageFeatures/index.tsx +++ b/docs/src/components/HomepageFeatures/index.tsx @@ -16,8 +16,10 @@ const HomepageFeatures: FC = () => { 🪝 20+ hooks for interfacing with wallets, clients, signers, etc. (connecting, view balances, send tokens, etc.) -
  • 💳 Multiple wallet supports
  • -
  • ⚙️ Generate mainnet & testnet `ChainInfo`
  • +
  • 💳 Multiple wallet supports (Keplr, Leap, Cosmostation, Vectis, Metamask Snap, WalletConnect)
  • +
  • + ⚙️ Generate mainnet & testnet ChainInfo +
  • 📚 Built-in caching, request deduplication, and all the good stuff from @tanstack/react-query and zustand diff --git a/example/next/env.d.ts b/example/next/env.d.ts index 81438324..202c00b6 100644 --- a/example/next/env.d.ts +++ b/example/next/env.d.ts @@ -1,5 +1,3 @@ -/// - declare namespace NodeJS { interface ProcessEnv { readonly EXPORT_DOCS?: string; diff --git a/example/next/package.json b/example/next/package.json index 3c509a3e..8941fe16 100644 --- a/example/next/package.json +++ b/example/next/package.json @@ -9,20 +9,21 @@ "start": "next start" }, "dependencies": { - "@chakra-ui/react": "^2.7.0", + "@chakra-ui/react": "^2.8.1", "@emotion/react": "^11.11.1", "@emotion/styled": "^11.11.0", - "framer-motion": "^10.12.16", + "framer-motion": "^10.16.4", "graz": "*", - "next": "^13.4.6", + "next": "^13.4.19", "react": "^18.2.0", "react-dom": "^18.2.0", - "typescript": "^5.1.3" + "typescript": "^5.2.2" }, "devDependencies": { - "@graz-sh/style-guide": "^3.1.0", - "@types/node": "^20.3.1", - "@types/react": "^18.2.12" + "@graz-sh/style-guide": "^4.0.1", + "@types/node": "^18.17.15", + "@types/react": "^18.2.21", + "@types/react-dom": "^18.2.7" }, "prettier": "@graz-sh/style-guide/prettier", "private": true diff --git a/example/next/pages/_app.tsx b/example/next/pages/_app.tsx index 39eb1d84..50fda8e0 100644 --- a/example/next/pages/_app.tsx +++ b/example/next/pages/_app.tsx @@ -1,7 +1,8 @@ import { ChakraProvider, extendTheme } from "@chakra-ui/react"; -import { GrazProvider, mainnetChains } from "graz"; +import { GrazProvider } from "graz"; import type { NextPage } from "next"; import type { AppProps } from "next/app"; +import { chains } from "utils/graz"; const theme = extendTheme(); @@ -10,7 +11,7 @@ const CustomApp: NextPage = ({ Component, pageProps }) => { { console.log("reconnect failed"); }, @@ -21,7 +22,6 @@ const CustomApp: NextPage = ({ Component, pageProps }) => { }, }, }} - debug > diff --git a/example/next/pages/index.tsx b/example/next/pages/index.tsx index 44c1155f..db8046f2 100644 --- a/example/next/pages/index.tsx +++ b/example/next/pages/index.tsx @@ -5,18 +5,18 @@ import { BalanceList } from "ui/balance-list"; import { ChainSwitcher } from "ui/chain-switcher"; import { ConnectButton } from "ui/connect-button"; import { ConnectStatus } from "ui/connect-status"; -import { RecentChain } from "ui/recent-chain"; import { ToggleTheme } from "ui/toggle-theme"; const HomePage: NextPage = () => { - const { data: accountData, isConnecting, isReconnecting } = useAccount(); + const { data: accountData } = useAccount({ + chainId: "cosmoshub-4", + }); return (
    - {!accountData && (isConnecting || isReconnecting) ? : null} {accountData ? ( <> diff --git a/example/next/ui/chain-switcher.tsx b/example/next/ui/chain-switcher.tsx index d4507f7a..149624e6 100644 --- a/example/next/ui/chain-switcher.tsx +++ b/example/next/ui/chain-switcher.tsx @@ -1,48 +1,35 @@ -import { Button, ButtonGroup, FormControl, FormLabel, useToast } from "@chakra-ui/react"; -import { mainnetChainsArray, testnetChains, useAccount, useConnect, useSuggestChainAndConnect } from "graz"; +import { Button, ButtonGroup, Stack, Text } from "@chakra-ui/react"; +import { useAccount, useSuggestChainAndConnect } from "graz"; +import { osmosistestnet } from "graz/chains"; import type { FC } from "react"; export const ChainSwitcher: FC = () => { - const toast = useToast(); - - const { isConnecting, isReconnecting } = useAccount({ - onConnect: ({ account, isReconnect }) => { - if (!isReconnect) { - toast({ - status: "success", - title: "Switched chain!", - description: `Connected as ${account.name}`, - }); - } - }, + const { + isConnecting, + isReconnecting, + data: account, + } = useAccount({ + chainId: osmosistestnet.chainId, }); - const { connect } = useConnect(); - const { suggestAndConnect } = useSuggestChainAndConnect(); return ( - - Switch Chain - - {mainnetChainsArray.map((chain) => ( - - ))} - - Suggest and connect chain + + Suggest and connect chain + {account ? Address: {account.bech32Address} : null} - + ); }; diff --git a/example/next/ui/connect-button.tsx b/example/next/ui/connect-button.tsx index 6b43e786..48df3552 100644 --- a/example/next/ui/connect-button.tsx +++ b/example/next/ui/connect-button.tsx @@ -18,11 +18,11 @@ export const ConnectButton: FC = () => { const { isOpen, onClose, onOpen } = useDisclosure(); const { isConnected, isConnecting, isReconnecting, reconnect } = useAccount({ - onConnect: ({ account, walletType, chain }) => { + chainId: "cosmoshub-4", + onConnect: ({ walletType, chains }) => { toast({ status: "success", - title: `Wallet connected! using ${walletType} to ${chain.chainId}`, - description: `Connected as ${account.name}`, + title: `Wallet connected! using ${walletType} to ${chains.map((item) => item.chainId)}`, }); }, onDisconnect: () => { @@ -33,16 +33,14 @@ export const ConnectButton: FC = () => { }, }); - const { connect } = useConnect({ - onSuccess: () => console.log("wallet connected"), - }); + const { connect } = useConnect(); const { disconnect } = useDisconnect({ onSuccess: () => console.log("wallet disconnected"), }); const handleConnect = (wallet: WalletType) => { - connect({ walletType: wallet }); + connect({ walletType: wallet, chainId: "cosmoshub-4" }); onClose(); }; const wallets = getAvailableWallets(); @@ -55,11 +53,11 @@ export const ConnectButton: FC = () => { {isConnected ? 🔄} onClick={() => void reconnect()} /> : null} - + Select a wallet - + {wallets.keplr ? : null} {wallets.leap ? : null} {wallets.cosmostation ? ( diff --git a/example/next/ui/connect-status.tsx b/example/next/ui/connect-status.tsx index 3b0be502..f8219c57 100644 --- a/example/next/ui/connect-status.tsx +++ b/example/next/ui/connect-status.tsx @@ -1,10 +1,10 @@ import { Box, Spinner, Tag, TagLabel, TagLeftIcon } from "@chakra-ui/react"; -import { useAccount, useActiveChain } from "graz"; +import { useAccount, useActiveChainIds } from "graz"; import type { FC } from "react"; export const ConnectStatus: FC = () => { const { isConnected, isConnecting, isReconnecting } = useAccount(); - const activeChain = useActiveChain(); + const activeChains = useActiveChainIds(); return ( @@ -13,7 +13,9 @@ export const ConnectStatus: FC = () => { ) : ( <> - {isConnected && activeChain ? `Connected to ${activeChain.chainId}` : "Disconnected"} + + {isConnected && activeChains ? `Connected to ${activeChains.join("; ")}` : "Disconnected"} + )} diff --git a/example/next/ui/recent-chain.tsx b/example/next/ui/recent-chain.tsx index aeb6f5d7..ffb28811 100644 --- a/example/next/ui/recent-chain.tsx +++ b/example/next/ui/recent-chain.tsx @@ -1,15 +1,15 @@ import { Button, Text } from "@chakra-ui/react"; -import { useRecentChain } from "graz"; +import { useRecentChainIds } from "graz"; import type { FC } from "react"; export const RecentChain: FC = () => { - const { data: recentChain, clear } = useRecentChain(); + const { data: recentChains, clear } = useRecentChainIds(); - if (!recentChain) return null; + if (!recentChains) return null; return ( - Recent chain: {recentChain.chainId} ( + Recent chain: {recentChains.join("; ")} ( diff --git a/example/next/utils/graz.ts b/example/next/utils/graz.ts new file mode 100644 index 00000000..85444a1e --- /dev/null +++ b/example/next/utils/graz.ts @@ -0,0 +1,6 @@ +import { cosmoshub, osmosistestnet } from "graz/chains"; + +export const chains = [ + { ...cosmoshub, rpc: "https://rpc.cosmos.directory/cosmoshub", rest: "https://rest.cosmos.directory/cosmoshub" }, + osmosistestnet, +]; diff --git a/example/starter/env.d.ts b/example/starter/env.d.ts index 81438324..202c00b6 100644 --- a/example/starter/env.d.ts +++ b/example/starter/env.d.ts @@ -1,5 +1,3 @@ -/// - declare namespace NodeJS { interface ProcessEnv { readonly EXPORT_DOCS?: string; diff --git a/example/starter/package.json b/example/starter/package.json index bf8e9575..83fddd5c 100644 --- a/example/starter/package.json +++ b/example/starter/package.json @@ -10,24 +10,26 @@ "lint": "next lint" }, "dependencies": { - "@chakra-ui/react": "^2.7.0", + "@chakra-ui/icons": "^2.1.1", + "@chakra-ui/react": "^2.8.1", "@emotion/react": "^11.11.1", "@emotion/styled": "^11.11.0", - "bignumber.js": "^9.1.1", - "framer-motion": "^10.12.16", - "graz": "latest", - "next": "^13.4.6", + "@graz-sh/types": "^0.0.4", + "bignumber.js": "^9.1.2", + "framer-motion": "^10.16.4", + "graz": "*", + "next": "^13.4.19", "react": "^18.2.0", "react-dom": "^18.2.0" }, "devDependencies": { - "@graz-sh/style-guide": "^3.1.0", - "@types/node": "^20.3.1", - "@types/react": "^18.2.12", - "@types/react-dom": "18.2.5", - "eslint": "^8.46.0", - "prettier": "^3.0.0", - "typescript": "^5.1.3" + "@graz-sh/style-guide": "^4.0.1", + "@types/node": "^18.17.15", + "@types/react": "^18.2.21", + "@types/react-dom": "^18.2.7", + "eslint": "^8.49.0", + "prettier": "^3.0.3", + "typescript": "^5.2.2" }, "prettier": "@graz-sh/style-guide/prettier" } diff --git a/example/starter/public/assets/graz.png b/example/starter/public/assets/graz.png new file mode 100644 index 00000000..22f8f5cf Binary files /dev/null and b/example/starter/public/assets/graz.png differ diff --git a/example/starter/public/assets/wallet-icon-cosmostation.png b/example/starter/public/assets/wallet-icon-cosmostation.png new file mode 100644 index 00000000..684b0eee Binary files /dev/null and b/example/starter/public/assets/wallet-icon-cosmostation.png differ diff --git a/example/starter/public/assets/wallet-icon-keplr.png b/example/starter/public/assets/wallet-icon-keplr.png new file mode 100644 index 00000000..418c4eac Binary files /dev/null and b/example/starter/public/assets/wallet-icon-keplr.png differ diff --git a/example/starter/public/assets/wallet-icon-leap.png b/example/starter/public/assets/wallet-icon-leap.png new file mode 100644 index 00000000..09ec99c5 Binary files /dev/null and b/example/starter/public/assets/wallet-icon-leap.png differ diff --git a/example/starter/public/assets/wallet-icon-metamask.png b/example/starter/public/assets/wallet-icon-metamask.png new file mode 100644 index 00000000..c6d66f81 Binary files /dev/null and b/example/starter/public/assets/wallet-icon-metamask.png differ diff --git a/example/starter/public/assets/wallet-icon-vectis.svg b/example/starter/public/assets/wallet-icon-vectis.svg new file mode 100644 index 00000000..b9a665ef --- /dev/null +++ b/example/starter/public/assets/wallet-icon-vectis.svg @@ -0,0 +1,7 @@ + + + + + diff --git a/example/starter/public/assets/wallet-icon-walletconnect.png b/example/starter/public/assets/wallet-icon-walletconnect.png new file mode 100644 index 00000000..c9e2e059 Binary files /dev/null and b/example/starter/public/assets/wallet-icon-walletconnect.png differ diff --git a/example/starter/src/pages/_app.tsx b/example/starter/src/pages/_app.tsx index 85228295..fbd0fb7a 100644 --- a/example/starter/src/pages/_app.tsx +++ b/example/starter/src/pages/_app.tsx @@ -1,18 +1,29 @@ import { ChakraProvider, extendTheme } from "@chakra-ui/react"; -import { configureGraz, GrazProvider, mainnetChains } from "graz"; +import { GrazProvider } from "graz"; import type { AppProps } from "next/app"; import { Layout } from "src/ui/layout"; +import { mainnetChains } from "src/utils/graz"; -const theme = extendTheme(); - -configureGraz({ - defaultChain: mainnetChains.cosmoshub, +const theme = extendTheme({ + semanticTokens: { + colors: { + baseBackground: { + default: "blackAlpha.100", + _dark: "whiteAlpha.100", + }, + baseHoverBackground: { + default: "blackAlpha.200", + _dark: "whiteAlpha.200", + }, + }, + }, }); const MyApp = ({ Component, pageProps }: AppProps) => { return ( { - const { data: accountData, isConnecting, isReconnecting } = useAccount(); - return ( - - {!accountData && (isConnecting || isReconnecting) ? : null} - {accountData ? ( - <> - Welcome {accountData.name} - - Wallet address: {accountData.bech32Address} - - - - ) : null} + + {mainnetChains.map((chain) => ( + + ))} ); }; diff --git a/example/starter/src/pages/send-token.tsx b/example/starter/src/pages/send-token.tsx index d5aa4102..b24434bf 100644 --- a/example/starter/src/pages/send-token.tsx +++ b/example/starter/src/pages/send-token.tsx @@ -1,12 +1,12 @@ import { Box, Button, FormControl, FormLabel, Heading, Input, Select, Stack, useToast } from "@chakra-ui/react"; import { useStargateSigningClient } from "graz"; -import { useAccount, useActiveChain, useSendTokens } from "graz"; +import { useAccount, useActiveChains, useSendTokens } from "graz"; import type { FormEvent } from "react"; import { useState } from "react"; const SendToken = () => { const { data: accountData, isConnected } = useAccount(); - const activeChain = useActiveChain(); + const activeChains = useActiveChains(); const toast = useToast(); const { data: signingClient } = useStargateSigningClient(); @@ -101,7 +101,7 @@ const SendToken = () => { } value={formData.coin} > - {activeChain?.currencies.map((currency) => ( + {activeChains?.[0]?.currencies.map((currency) => ( diff --git a/example/starter/src/ui/card/chain.tsx b/example/starter/src/ui/card/chain.tsx new file mode 100644 index 00000000..bd931596 --- /dev/null +++ b/example/starter/src/ui/card/chain.tsx @@ -0,0 +1,128 @@ +import { CopyIcon } from "@chakra-ui/icons"; +import { Avatar, Button, HStack, IconButton, Spinner, Stack, Text, Tooltip, useToast } from "@chakra-ui/react"; +import type { ChainInfo } from "@graz-sh/types"; +import { useAccount, useBalance, useBalanceStaked, useDisconnect } from "graz"; + +import { AllBalancesModal } from "../modal/all-balances"; +import { ConnectWalletModal } from "../modal/connect-wallet"; +import { SendTokenModal } from "../modal/send-token-modal"; + +export const Card = ({ chain }: { chain: ChainInfo }) => { + const toast = useToast(); + const { data: account, isConnecting } = useAccount({ + chainId: chain.chainId, + }); + const { data: balance } = useBalance({ + chainId: chain.chainId, + bech32Address: account?.bech32Address, + denom: chain.stakeCurrency.coinMinimalDenom, + }); + const { data: stakedBalance } = useBalanceStaked({ + chainId: chain.chainId, + bech32Address: account?.bech32Address, + }); + const { disconnect } = useDisconnect({ + onSuccess: () => { + toast({ + description: `Successfully disconnected from ${chain.chainName}`, + duration: 3000, + isClosable: true, + status: "success", + }); + }, + }); + return ( + + + + + {chain.chainName} + {isConnecting ? : null} + {account ? ( + + ) : null} + + {account ? ( + + + + {account.bech32Address.slice(0, 6)}...{account.bech32Address.slice(-6)} + + } + onClick={() => { + void window.navigator.clipboard.writeText(account.bech32Address); + toast({ + description: "Copied address to clipboard", + duration: 3000, + isClosable: true, + }); + }} + size="xs" + /> + + + ) : ( + + )} + + {account ? ( + + + + + + + {balance + ? Number(Number(balance.amount) / Math.pow(10, chain.stakeCurrency.coinDecimals)).toFixed(6) + : "--"} + + + {chain.stakeCurrency.coinDenom} + + + + + Staked{" "} + {stakedBalance + ? Number(Number(stakedBalance.amount) / Math.pow(10, chain.stakeCurrency.coinDecimals)).toFixed(6) + : "--"} + + + {chain.stakeCurrency.coinDenom} + + + + + ) : null} + + ); +}; diff --git a/example/starter/src/ui/core/modal.tsx b/example/starter/src/ui/core/modal.tsx deleted file mode 100644 index ec0812a9..00000000 --- a/example/starter/src/ui/core/modal.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import { - Modal as ChakraModal, - ModalBody, - ModalCloseButton, - ModalContent, - ModalHeader, - ModalOverlay, -} from "@chakra-ui/react"; - -interface ModalProps { - isOpen: boolean; - onClose: () => void; - children: JSX.Element; - modalHeader: string; -} - -export const Modal = ({ isOpen, onClose, children, modalHeader }: ModalProps) => { - return ( - - - - - {modalHeader} - {children} - - - ); -}; diff --git a/example/starter/src/ui/navbar/toggle-theme.tsx b/example/starter/src/ui/core/toggle-theme.tsx similarity index 100% rename from example/starter/src/ui/navbar/toggle-theme.tsx rename to example/starter/src/ui/core/toggle-theme.tsx diff --git a/example/starter/src/ui/layout/index.tsx b/example/starter/src/ui/layout/index.tsx index 3a6f224f..6f9ff8e7 100644 --- a/example/starter/src/ui/layout/index.tsx +++ b/example/starter/src/ui/layout/index.tsx @@ -1,33 +1,90 @@ -import { Box, Center, Container, Divider, Heading, Stack, Text } from "@chakra-ui/react"; -import { useAccount } from "graz"; +import { Box, Button, Center, Heading, HStack, keyframes, Link, Stack, Text, useToast, VStack } from "@chakra-ui/react"; +import { useAccount, useDisconnect } from "graz"; import Head from "next/head"; +import NextLink from "next/link"; import type { ReactNode } from "react"; -import { Navbar } from "../navbar"; +import { ToggleTheme } from "../core/toggle-theme"; +import { ConnectAllChainsWallet } from "../modal/connect-wallet"; -export const Layout = ({ children }: { children: ReactNode }) => { - const { isConnecting, isReconnecting, isConnected } = useAccount(); +const glowAnimation = keyframes`100% { + box-shadow: 0 0 3px #dff8e3, 0 0 10px #dff8e3, 0 0 20px #dff8e3, 0 0 40px #b7fcc2, + 0 0 70px #b7fcc2, 0 0 80px #b7fcc2; + }`; +export const Layout = ({ children }: { children: ReactNode }) => { + const toast = useToast(); + const { isConnected } = useAccount({ + multiChain: true, + }); + const { disconnect } = useDisconnect({ + onSuccess: () => { + toast({ + description: `Successfully disconnected from all chains`, + duration: 3000, + isClosable: true, + status: "success", + }); + }, + }); return ( - - - -
    - - {isConnecting || isReconnecting ? Connecting... : null} - {!isConnected && !(isConnecting || isReconnecting) ? ( - - Welcome to Graz Example Starter - Connect your wallet to interact within the app. - + + + + Graz Playground + Everything you need to start working with the Cosmos ecosystem. + + + + {isConnected ? ( + ) : ( - children + )} - + + + + {children} + +
    + •} gap={4} wrap="wrap"> + + Documentation + + + Graz Github Repo + + + This Code + + + Twitter + + + Discord + +
    diff --git a/example/starter/src/ui/modal/all-balances.tsx b/example/starter/src/ui/modal/all-balances.tsx new file mode 100644 index 00000000..b34293d8 --- /dev/null +++ b/example/starter/src/ui/modal/all-balances.tsx @@ -0,0 +1,60 @@ +import { + Button, + Heading, + HStack, + Modal, + ModalBody, + ModalContent, + ModalOverlay, + Stack, + Text, + useDisclosure, +} from "@chakra-ui/react"; +import type { ChainInfo } from "@graz-sh/types"; +import { useAccount, useBalances } from "graz"; + +export const AllBalancesModal = ({ chain }: { chain: ChainInfo }) => { + const modal = useDisclosure(); + const { data: account } = useAccount({ + chainId: chain.chainId, + }); + const { data: balances } = useBalances({ + chainId: chain.chainId, + bech32Address: account?.bech32Address, + }); + return ( + <> + + + + + + + + {chain.chainName} coin balances + + + {balances?.map((balance) => { + return ( + + + {Number(balance.amount)} + + + {balance.denom.length > 5 + ? `${balance.denom.slice(0, 6)}...${balance.denom.slice(-6)}` + : balance.denom} + + + ); + })} + + + + + + + ); +}; diff --git a/example/starter/src/ui/modal/connect-wallet.tsx b/example/starter/src/ui/modal/connect-wallet.tsx new file mode 100644 index 00000000..77097042 --- /dev/null +++ b/example/starter/src/ui/modal/connect-wallet.tsx @@ -0,0 +1,163 @@ +import { + Button, + Heading, + HStack, + Image, + Modal, + ModalBody, + ModalContent, + ModalOverlay, + Stack, + Text, + useDisclosure, + useToast, +} from "@chakra-ui/react"; +import type { ChainInfo } from "@graz-sh/types"; +import { checkWallet, useAccount } from "graz"; +import { useConnect, type WalletType } from "graz"; +import { listedWallets, mainnetChains } from "src/utils/graz"; + +const WalletModal = ({ + modal, + onClick, +}: { + modal: ReturnType; + onClick: (walletType: WalletType) => void; +}) => { + return ( + + + + + + + Choose wallet + + + {Object.entries(listedWallets) + .filter(([key, wallet]) => checkWallet(key as WalletType)) + .map(([key, wallet]) => ( + { + modal.onClose(); + onClick(key as WalletType); + }} + p={4} + spacing={4} + > + {wallet.name} + {wallet.name} + + ))} + + + + + + ); +}; + +export const ConnectAllChainsWallet = () => { + const toast = useToast(); + const modal = useDisclosure(); + const { connect } = useConnect({ + onSuccess: (args) => { + toast({ + description: `Successfully connected to ${args.chains.map((chain) => chain.chainName).join("; ")}`, + duration: 3000, + isClosable: true, + status: "success", + }); + }, + onError: (error) => { + toast({ + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-expect-error + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + description: error?.message || "Error connecting to wallet", + duration: 3000, + isClosable: true, + status: "error", + }); + }, + }); + return ( + <> + + { + connect({ + chainId: mainnetChains.map((item) => item.chainId), + walletType: wallet, + }); + }} + /> + + ); +}; + +export const ConnectWalletModal = ({ chain }: { chain: ChainInfo }) => { + const toast = useToast(); + const modal = useDisclosure(); + const { connect } = useConnect({ + onSuccess: () => { + toast({ + description: `Successfully connected to ${chain.chainName}`, + duration: 3000, + isClosable: true, + status: "success", + }); + }, + onError: (error) => { + toast({ + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-expect-error + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + description: error?.message || "Error connecting to wallet", + duration: 3000, + isClosable: true, + status: "error", + }); + }, + }); + const { walletType } = useAccount(); + return ( + <> + + { + connect({ + chainId: chain.chainId, + walletType: wallet, + }); + }} + /> + + ); +}; diff --git a/example/starter/src/ui/modal/send-token-modal.tsx b/example/starter/src/ui/modal/send-token-modal.tsx new file mode 100644 index 00000000..0abc7b6b --- /dev/null +++ b/example/starter/src/ui/modal/send-token-modal.tsx @@ -0,0 +1,238 @@ +import { + Button, + Heading, + HStack, + Input, + InputGroup, + InputRightAddon, + Modal, + ModalBody, + ModalContent, + ModalOverlay, + Spinner, + Stack, + Text, + useDisclosure, + useToast, +} from "@chakra-ui/react"; +import type { ChainInfo } from "@graz-sh/types"; +import { useAccount, useBalance, useSendTokens, useStargateSigningClient } from "graz"; +import { useState } from "react"; + +export const SendTokenModal = ({ chain }: { chain: ChainInfo }) => { + const toast = useToast(); + const { data: account } = useAccount({ + chainId: chain.chainId, + }); + const { isOpen, onClose, onOpen } = useDisclosure(); + + const coin = chain.stakeCurrency; + const balance = useBalance({ + chainId: chain.chainId, + bech32Address: account?.bech32Address, + denom: coin.coinMinimalDenom, + }); + + const { data: signingClient, isLoading: isSCLoading } = useStargateSigningClient({ + chainId: chain.chainId, + }); + + const { isLoading, sendTokensAsync } = useSendTokens({ + onSuccess: () => { + toast({ + title: "Success", + description: "Transaction done", + status: "success", + }); + }, + onError: (error) => { + toast({ + title: "Error", + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-expect-error + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + description: error?.message || "Something went wrong", + status: "error", + }); + }, + }); + + const [amount, setAmount] = useState(""); + const [recipient, setRecipient] = useState(""); + const [result, setResult] = useState>>(); + + const handleOnClose = () => { + setRecipient(""); + setAmount(""); + setResult(undefined); + onClose(); + }; + + const handleStake = async () => { + try { + if (!signingClient) { + toast({ + title: "Error", + description: "Signing Client not found", + status: "error", + }); + return; + } + const res = await sendTokensAsync({ + amount: [ + { + amount: String(Number(amount) * Math.pow(10, coin.coinDecimals || 6)), + denom: coin.coinMinimalDenom || "", + }, + ], + fee: { + amount: [ + { + amount: "5000", + denom: coin.coinMinimalDenom || "", + }, + ], + gas: "200000", + }, + memo: "", + senderAddress: account?.bech32Address || "", + recipientAddress: recipient, + signingClient, + }); + setResult(res); + } catch (error) { + console.error(error); + handleOnClose(); + } + }; + return ( + <> + + + + + + + + Send {chain.stakeCurrency.coinDenom} + + {result ? ( + + + + TxHash: + + + {result.transactionHash} + + + + + TxHeight: + + + {result.height} + + + + + Gas Used: + + + {result.gasUsed} + + + + + + + + ) : ( + <> + + Recipient address + { + setRecipient(e.target.value); + }} + placeholder="cosmos1g3..." + type="text" + value={recipient} + /> + + Amount + + {balance.isLoading ? ( + + ) : ( + <> + Available: + + {Number(Number(balance.data?.amount || 0) / Math.pow(10, coin.coinDecimals || 6))}{" "} + {coin.coinDenom} + + + )} + + + + { + setAmount(e.target.value); + }} + placeholder="0" + type="number" + value={amount} + /> + ATOM + + + + + + )} + + + + + + ); +}; diff --git a/example/starter/src/ui/navbar/index.tsx b/example/starter/src/ui/navbar/index.tsx deleted file mode 100644 index 55c9e24c..00000000 --- a/example/starter/src/ui/navbar/index.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import type { ContainerProps } from "@chakra-ui/react"; -import { Container, HStack } from "@chakra-ui/react"; - -import { NavbarLeftSection } from "./left-section"; -import { NavbarRightSection } from "./right-section"; - -export const Navbar = (props: ContainerProps) => { - return ( - - - - - - - ); -}; diff --git a/example/starter/src/ui/navbar/left-section.tsx b/example/starter/src/ui/navbar/left-section.tsx deleted file mode 100644 index 046b0a0d..00000000 --- a/example/starter/src/ui/navbar/left-section.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import { HStack } from "@chakra-ui/react"; -import { useRouter } from "next/router"; - -import { Link } from "../core/link"; - -export const NavbarLeftSection = () => { - const router = useRouter(); - return ( - - - Home - - - Assets - - - Send Tokens - - - ); -}; diff --git a/example/starter/src/ui/navbar/right-section.tsx b/example/starter/src/ui/navbar/right-section.tsx deleted file mode 100644 index 5e1c4ee9..00000000 --- a/example/starter/src/ui/navbar/right-section.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import { HStack } from "@chakra-ui/react"; - -import { WalletConnectButton } from "../wallet/connect-button"; -import { ToggleTheme } from "./toggle-theme"; - -export const NavbarRightSection = () => { - return ( - - - - - ); -}; diff --git a/example/starter/src/ui/wallet/chain-switcher.tsx b/example/starter/src/ui/wallet/chain-switcher.tsx deleted file mode 100644 index f40dcbe3..00000000 --- a/example/starter/src/ui/wallet/chain-switcher.tsx +++ /dev/null @@ -1,64 +0,0 @@ -import { Button, ButtonGroup, FormControl, FormLabel, useToast } from "@chakra-ui/react"; -import { - mainnetChainsArray, - testnetChains, - useAccount, - useActiveChain, - useConnect, - useSuggestChainAndConnect, -} from "graz"; - -export const ChainSwitcher = () => { - const toast = useToast(); - - const activeChain = useActiveChain(); - const { isConnecting, isReconnecting } = useAccount({ - onConnect: ({ account, isReconnect }) => { - if (!isReconnect) { - toast({ - status: "success", - title: "Switched chain!", - description: `Connected as ${account.name}`, - }); - } - }, - }); - - const { connect } = useConnect({ - onSuccess: () => console.log("switched chain"), - }); - - const { suggestAndConnect } = useSuggestChainAndConnect({ - onSuccess: () => console.log("switched chain"), - }); - - return ( - - Switch Chain - - {mainnetChainsArray.map((chain) => ( - - ))} - - Suggest and connect chain - - - - - ); -}; diff --git a/example/starter/src/ui/wallet/connect-button.tsx b/example/starter/src/ui/wallet/connect-button.tsx deleted file mode 100644 index b3137dc1..00000000 --- a/example/starter/src/ui/wallet/connect-button.tsx +++ /dev/null @@ -1,82 +0,0 @@ -import { Button, Stack, Tooltip, useDisclosure, useToast } from "@chakra-ui/react"; -import { getAvailableWallets, mainnetChains, useAccount, useConnect, useDisconnect, WalletType } from "graz"; - -import { Modal } from "../core/modal"; - -export const WalletConnectButton = () => { - const toast = useToast(); - - const { isOpen, onOpen, onClose } = useDisclosure(); - const { isConnected, isConnecting } = useAccount({ - onConnect: ({ account, isReconnect }) => { - if (!isReconnect) { - toast({ - status: "success", - title: "Wallet connected!", - description: `Connected as ${account.name}`, - }); - } - }, - onDisconnect: () => { - toast({ - status: "info", - title: "Wallet disconnected!", - }); - }, - }); - - const { connect } = useConnect(); - - const { disconnect } = useDisconnect(); - - const handleConnect = (wallet: WalletType) => { - onClose(); - return connect({ chain: mainnetChains.cosmoshub, walletType: wallet }); - }; - - const wallets = getAvailableWallets(); - - return ( - <> - {!isConnected ? ( - - ) : ( - - - - )} - - {!isConnected && ( - - - {wallets.keplr ? : null} - {wallets.leap ? : null} - {wallets.cosmostation ? ( - - ) : null} - {wallets.vectis ? : null} - {wallets.walletconnect ? ( - - ) : null} - {wallets.wc_keplr_mobile ? ( - - ) : null} - {wallets.wc_leap_mobile ? ( - - ) : null} - {wallets.wc_cosmostation_mobile ? ( - - ) : null} - {wallets.metamask_snap_leap ? ( - - ) : null} - - - )} - - ); -}; diff --git a/example/starter/src/ui/wallet/recent-chain.tsx b/example/starter/src/ui/wallet/recent-chain.tsx deleted file mode 100644 index 7fae7420..00000000 --- a/example/starter/src/ui/wallet/recent-chain.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import { Button, Text } from "@chakra-ui/react"; -import { useRecentChain } from "graz"; - -export const RecentChain = () => { - const { data: recentChain, clear } = useRecentChain(); - - if (!recentChain) return null; - - return ( - - Recent chain: {recentChain.chainId} ( - - ) - - ); -}; diff --git a/example/starter/src/ui/wallet/toggle-theme.tsx b/example/starter/src/ui/wallet/toggle-theme.tsx deleted file mode 100644 index 40aefeae..00000000 --- a/example/starter/src/ui/wallet/toggle-theme.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import { Button, useColorMode } from "@chakra-ui/react"; - -export const ToggleTheme = () => { - const { colorMode, toggleColorMode } = useColorMode(); - return ( - - ); -}; diff --git a/example/starter/src/utils/graz.ts b/example/starter/src/utils/graz.ts new file mode 100644 index 00000000..bec4b5da --- /dev/null +++ b/example/starter/src/utils/graz.ts @@ -0,0 +1,52 @@ +import { WalletType } from "graz"; +import { axelar, cosmoshub, osmosis, sommelier, stargaze } from "graz/chains"; + +export const mainnetChains = [ + { ...cosmoshub, rpc: "https://rpc.cosmos.directory/cosmoshub", rest: "https://rest.cosmos.directory/cosmoshub" }, + { ...sommelier, rpc: "https://rpc.cosmos.directory/sommelier", rest: "https://rest.cosmos.directory/sommelier" }, + { ...stargaze, rpc: "https://rpc.cosmos.directory/stargaze", rest: "https://rest.cosmos.directory/stargaze" }, + { ...axelar, rpc: "https://rpc.cosmos.directory/axelar", rest: "https://rest.cosmos.directory/axelar" }, + { ...osmosis, rpc: "https://rpc.cosmos.directory/osmosis", rest: "https://rest.cosmos.directory/osmosis" }, +]; + +export const listedWallets = { + [WalletType.KEPLR]: { + name: "Keplr", + imgSrc: "/assets/wallet-icon-keplr.png", + }, + [WalletType.LEAP]: { + name: "Leap", + imgSrc: "/assets/wallet-icon-leap.png", + }, + [WalletType.COSMOSTATION]: { + name: "Cosmostation", + imgSrc: "/assets/wallet-icon-cosmostation.png", + }, + [WalletType.VECTIS]: { + name: "Vectis", + imgSrc: "/assets/wallet-icon-vectis.svg", + }, + [WalletType.METAMASK_SNAP_LEAP]: { + name: "Metamask Snap Leap", + imgSrc: "/assets/wallet-icon-metamask.png", + }, + [WalletType.WALLETCONNECT]: { + name: "WalletConnect", + imgSrc: "/assets/wallet-icon-walletconnect.png", + }, + [WalletType.WC_KEPLR_MOBILE]: { + name: "Keplr Mobile", + imgSrc: "/assets/wallet-icon-keplr.png", + mobile: true, + }, + [WalletType.WC_LEAP_MOBILE]: { + name: "Leap Mobile", + imgSrc: "/assets/wallet-icon-leap.png", + mobile: true, + }, + [WalletType.WC_COSMOSTATION_MOBILE]: { + name: "Cosmostation Mobile", + imgSrc: "/assets/wallet-icon-cosmostation.png", + mobile: true, + }, +}; diff --git a/example/vite/env.d.ts b/example/vite/env.d.ts index ebe04fa7..dafe8b66 100644 --- a/example/vite/env.d.ts +++ b/example/vite/env.d.ts @@ -1,5 +1,3 @@ -/// - declare module "vite-plugin-node-stdlib-browser" { const plugin: import("vite").Plugin; export default () => plugin; diff --git a/example/vite/package.json b/example/vite/package.json index 019e104e..47b24ef3 100644 --- a/example/vite/package.json +++ b/example/vite/package.json @@ -14,13 +14,14 @@ "react-dom": "^18.2.0" }, "devDependencies": { - "@graz-sh/style-guide": "^3.1.0", - "@types/react": "^18.2.12", - "@types/react-dom": "^18.2.5", - "@vitejs/plugin-react": "^4.0.0", + "@graz-sh/style-guide": "^4.0.1", + "@types/node": "^18.17.15", + "@types/react": "^18.2.21", + "@types/react-dom": "^18.2.7", + "@vitejs/plugin-react": "^4.0.4", "node-stdlib-browser": "^1.2.0", - "typescript": "^5.1.3", - "vite": "^4.3.9", + "typescript": "^5.2.2", + "vite": "^4.4.9", "vite-plugin-node-stdlib-browser": "^0.2.1" }, "prettier": "@graz-sh/style-guide/prettier", diff --git a/example/vite/src/App.tsx b/example/vite/src/App.tsx index 52eae3e1..6790675b 100644 --- a/example/vite/src/App.tsx +++ b/example/vite/src/App.tsx @@ -1,50 +1,93 @@ import "./App.css"; -import { configureGraz, mainnetChains, useAccount, useActiveChain, useConnect, useDisconnect } from "graz"; +import { useAccount, useActiveChainIds, useConnect, useDisconnect } from "graz"; import reactLogo from "./assets/react.svg"; -configureGraz({ - defaultChain: mainnetChains.juno, -}); - +// eslint-disable-next-line prefer-arrow-functions/prefer-arrow-functions, react/function-component-definition export default function App() { const { data: account, isConnected, isConnecting, isDisconnected, isReconnecting } = useAccount(); const { connect } = useConnect(); const { disconnect } = useDisconnect(); - const activeChain = useActiveChain(); + const activeChainIds = useActiveChainIds(); + // eslint-disable-next-line prefer-arrow-functions/prefer-arrow-functions function handleButton() { - (isConnected ? disconnect : connect)(); + isConnected + ? disconnect() + : connect({ + chainId: "cosmoshub-4", + }); } return (
    - Vite logo - React logo + Vite logo + React logo

    Vite + React + Graz

    - {isDisconnected &&

    Connect wallet using the button below.

    } - {activeChain && ( + {isDisconnected ?

    Connect wallet using the button below.

    : null} + {activeChainIds ? (

    - Current chain: {activeChain.chainId} + Current chain: {activeChainIds.join("; ")}

    - )} - {account && ( + ) : null} + {account ? (

    Wallet address: {account.bech32Address}

    - )} + ) : null}
    -
    ); } + +export const Graz = () => { + const { data: account, isConnected, isConnecting, isDisconnected, isReconnecting } = useAccount(); + const { connect } = useConnect(); + const { disconnect } = useDisconnect(); + + const activeChainIds = useActiveChainIds(); + + const handleButton = () => { + (isConnected ? disconnect : connect)(); + }; + + return ( +
    +
    + Vite logo + React logo +
    +

    Vite + React + Graz

    +
    + {isDisconnected ?

    Connect wallet using the button below.

    : null} + {activeChainIds ? ( +

    + Current chain: {activeChainIds.join("; ")} +

    + ) : null} + {account ? ( +

    + Wallet address: {account.bech32Address} +

    + ) : null} +
    + +
    +
    + ); +}; diff --git a/example/vite/src/main.tsx b/example/vite/src/main.tsx index 58c022da..0203087c 100644 --- a/example/vite/src/main.tsx +++ b/example/vite/src/main.tsx @@ -1,14 +1,20 @@ import "./index.css"; +import { GrazProvider } from "graz"; +import { cosmoshub } from "graz/chains"; import * as React from "react"; import * as ReactDOM from "react-dom/client"; -import { GrazProvider } from "graz"; + import App from "./App"; ReactDOM.createRoot(document.getElementById("root")!).render( - + - + , ); diff --git a/ncc.sh b/ncc.sh deleted file mode 100755 index f008fda1..00000000 --- a/ncc.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash -ncc build node_modules/p-map/index.js -o packages/graz/compiled/p-map/ -m -cp node_modules/p-map/index.d.ts packages/graz/compiled/p-map/ -mv packages/graz/compiled/p-map/index.js packages/graz/compiled/p-map/index.mjs -rm -rf packages/graz/compiled/p-map/package.json diff --git a/package.json b/package.json index a9cc7f94..db14ede9 100644 --- a/package.json +++ b/package.json @@ -9,28 +9,26 @@ "scripts": { "build": "turbo run build --filter=!@project/example-next --filter=!@project/starter --filter=!@project/example-vite", "clean": "turbo run clean", - "dev": "turbo run dev --filter=!@project/docs --filter=!create-graz-app --filter=!create-graz-app --filter=!\"graz-adapter-*\" --filter=!@project/example-vite", - "docs": "pnpm --dir docs", + "dev": "turbo run dev --filter=!@project/docs --filter=!create-graz-app --filter=!create-graz-app --filter=!\"graz-adapter-*\" ", + "project:docs": "pnpm --dir docs", "example:next": "pnpm --dir example/next", "example:vite": "pnpm --dir example/vite", + "example:starter": "pnpm --dir example/starter", "graz": "pnpm --dir packages/graz", "create-graz-app": "pnpm --dir packages/create-graz-app", "lint": "turbo run lint", - "prepare": "husky uninstall", "release": "turbo run build --filter=graz && pnpm publish --filter graz", "release-adapter": "turbo run build --filter=\"graz-adapter-*\" && pnpm publish --filter=\"graz-adapter-*\"", "test": "turbo run test" }, "devDependencies": { - "@graz-sh/style-guide": "^3.1.0", - "@vercel/ncc": "^0.36.1", - "eslint": "^8.46.0", - "husky": "^8.0.3", + "@graz-sh/style-guide": "^4.0.1", + "eslint": "^8.49.0", "p-map": "^6.0.0", - "prettier": "^3.0.0", - "tsup": "^7.0.0", - "turbo": "^1.10.3", - "typescript": "^5.1.3" + "prettier": "^3.0.3", + "tsup": "^7.2.0", + "turbo": "^1.10.13", + "typescript": "^5.2.2" }, "prettier": "@graz-sh/style-guide/prettier", "private": true, diff --git a/packages/create-graz-app/.eslintrc.js b/packages/create-graz-app/.eslintrc.js deleted file mode 100644 index ff894702..00000000 --- a/packages/create-graz-app/.eslintrc.js +++ /dev/null @@ -1,11 +0,0 @@ -// @ts-check - -const { extendEslint } = require("@graz-sh/style-guide"); - -module.exports = extendEslint(["browser-node", "typescript"], { - ignorePatterns: ["node_modules"], - rules: { - "no-console": ["off"], - }, - root: true, -}); diff --git a/packages/create-graz-app/.gitignore b/packages/create-graz-app/.gitignore deleted file mode 100644 index 178135c2..00000000 --- a/packages/create-graz-app/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/dist/ diff --git a/packages/create-graz-app/create-apps.ts b/packages/create-graz-app/create-apps.ts deleted file mode 100644 index e0c67260..00000000 --- a/packages/create-graz-app/create-apps.ts +++ /dev/null @@ -1,102 +0,0 @@ -import path from "node:path"; - -import retry from "async-retry"; -import chalk from "chalk"; - -import type { PackageManager } from "./helpers/get-pkg-manager"; -import { tryGitInit } from "./helpers/git"; -import { install } from "./helpers/install"; -import { isFolderEmpty } from "./helpers/is-folder-empty"; -import { getOnline } from "./helpers/is-online"; -import { isWriteable } from "./helpers/is-writeable"; -import { makeDir } from "./helpers/make-dir"; -import type { RepoInfo } from "./helpers/repo"; -import { downloadAndExtractRepo } from "./helpers/repo"; - -export class DownloadError extends Error {} - -export const createApp = async ({ - appPath, - packageManager, -}: { - appPath: string; - packageManager: PackageManager; -}): Promise => { - const repo: RepoInfo = { - username: "graz-sh", - branch: "dev", - name: "graz", - filePath: "example/starter", - }; - - const root = path.resolve(appPath); - - if (!(await isWriteable(path.dirname(root)))) { - console.error("The application path is not writable, please check folder permissions and try again."); - console.error("It is likely you do not have write permissions for this folder."); - process.exit(1); - } - - const appName = path.basename(root); - - await makeDir(root); - if (!isFolderEmpty(root, appName)) { - process.exit(1); - } - - const useYarn = packageManager === "yarn"; - const isOnline = !useYarn || (await getOnline()); - const originalDirectory = process.cwd(); - - console.log(`Creating a cosmos frontend in ${chalk.green(root)}.`); - console.log(); - - process.chdir(root); - - try { - console.log(`Downloading files from repo. This might take a moment.`); - console.log(); - - await retry(() => downloadAndExtractRepo(root, repo), { - retries: 3, - }); - } catch (reason) { - const isErrorLike = (err: unknown): err is { message: string } => - typeof err === "object" && err !== null && typeof (err as { message?: unknown }).message === "string"; - - throw new DownloadError(isErrorLike(reason) ? reason.message : `${reason}`); - } - console.log("Installing packages. This might take a couple of minutes."); - console.log(); - await install(root, null, { packageManager, isOnline }); - - if (tryGitInit(root)) { - console.log("Initialized a git repository."); - console.log(); - } - - let cdpath: string; - if (path.join(originalDirectory, appName) === appPath) { - cdpath = appName; - } else { - cdpath = appPath; - } - - console.log(`${chalk.green("Success!")} Created ${appName} at ${appPath}`); - - console.log("Inside that directory, you can run several commands:"); - console.log(); - console.log(chalk.cyan(` ${packageManager} ${useYarn ? "" : "run "}dev`)); - console.log(" Starts the development server."); - console.log(); - console.log(chalk.cyan(` ${packageManager} ${useYarn ? "" : "run "}build`)); - console.log(" Builds the app for production."); - console.log(); - console.log(chalk.cyan(` ${packageManager} start`)); - console.log(" Runs the built app in production mode."); - console.log(); - console.log("We suggest that you begin by typing:"); - console.log(); - console.log(chalk.cyan(" cd"), cdpath); - console.log(` ${chalk.cyan(`${packageManager} ${useYarn ? "" : "run "}dev`)}`); -}; diff --git a/packages/create-graz-app/helpers/get-pkg-manager.ts b/packages/create-graz-app/helpers/get-pkg-manager.ts deleted file mode 100644 index 67a9d2f7..00000000 --- a/packages/create-graz-app/helpers/get-pkg-manager.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { execSync } from "node:child_process"; - -export type PackageManager = "npm" | "pnpm" | "yarn"; - -export const getPkgManager = (): PackageManager => { - try { - const userAgent = process.env.npm_config_user_agent; - if (userAgent) { - if (userAgent.startsWith("yarn")) { - return "yarn"; - } else if (userAgent.startsWith("pnpm")) { - return "pnpm"; - } - } - try { - execSync("yarn --version", { stdio: "ignore" }); - return "yarn"; - } catch { - execSync("pnpm --version", { stdio: "ignore" }); - return "pnpm"; - } - } catch { - return "npm"; - } -}; diff --git a/packages/create-graz-app/helpers/git.ts b/packages/create-graz-app/helpers/git.ts deleted file mode 100644 index 7f7609c4..00000000 --- a/packages/create-graz-app/helpers/git.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { execSync } from "node:child_process"; -import path from "node:path"; - -import { rimraf } from "rimraf"; - -const isInGitRepository = (): boolean => { - try { - execSync("git rev-parse --is-inside-work-tree", { stdio: "ignore" }); - return true; - } catch (_) { - return false; - } -}; -const isInMercurialRepository = (): boolean => { - try { - execSync("hg --cwd . root", { stdio: "ignore" }); - return true; - } catch (_) { - return false; - } -}; - -export const tryGitInit = (root: string): boolean => { - let didInit = false; - try { - execSync("git --version", { stdio: "ignore" }); - if (isInGitRepository() || isInMercurialRepository()) { - return false; - } - - execSync("git init", { stdio: "ignore" }); - didInit = true; - - execSync("git checkout -b main", { stdio: "ignore" }); - - execSync("git add -A", { stdio: "ignore" }); - - // execSync('git commit -m "Initial commit from create-graz-app"', { - // stdio: "ignore", - // }); - return true; - } catch (e) { - if (didInit) { - try { - rimraf.sync(path.join(root, ".git")); - } catch (_) { - return false; - } - } - return false; - } -}; diff --git a/packages/create-graz-app/helpers/install.ts b/packages/create-graz-app/helpers/install.ts deleted file mode 100644 index 9bb11774..00000000 --- a/packages/create-graz-app/helpers/install.ts +++ /dev/null @@ -1,115 +0,0 @@ -import chalk from "chalk"; -import { spawn } from "cross-spawn"; - -import type { PackageManager } from "./get-pkg-manager"; - -interface InstallArgs { - /** - * Indicate whether to install packages using npm, pnpm or Yarn. - */ - packageManager: PackageManager; - /** - * Indicate whether there is an active Internet connection. - */ - isOnline: boolean; - /** - * Indicate whether the given dependencies are devDependencies. - */ - devDependencies?: boolean; -} - -/** - * Spawn a package manager installation with either Yarn or NPM. - * - * @returns A Promise that resolves once the installation is finished. - */ -export const install = ( - root: string, - dependencies: string[] | null, - { packageManager, isOnline, devDependencies }: InstallArgs, -): Promise => { - /** - * (p)npm-specific command-line flags. - */ - const npmFlags: string[] = []; - /** - * Yarn-specific command-line flags. - */ - const yarnFlags: string[] = []; - /** - * Return a Promise that resolves once the installation is finished. - */ - return new Promise((resolve, reject) => { - let args: string[]; - const command = packageManager; - const useYarn = packageManager === "yarn"; - - if (dependencies?.length) { - /** - * If there are dependencies, run a variation of `{packageManager} add`. - */ - if (useYarn) { - /** - * Call `yarn add --exact (--offline)? (-D)? ...`. - */ - args = ["add", "--exact"]; - if (!isOnline) args.push("--offline"); - args.push("--cwd", root); - if (devDependencies) args.push("--dev"); - args.push(...dependencies); - } else { - /** - * Call `(p)npm install [--save|--save-dev] ...`. - */ - args = ["install", "--save-exact"]; - args.push(devDependencies ? "--save-dev" : "--save"); - args.push(...dependencies); - } - } else { - /** - * If there are no dependencies, run a variation of `{packageManager} install`. - */ - args = ["install"]; - if (!isOnline) { - console.log(chalk.yellow("You appear to be offline.")); - if (useYarn) { - console.log(chalk.yellow("Falling back to the local Yarn cache.")); - console.log(); - args.push("--offline"); - } else { - console.log(); - } - } - } - /** - * Add any package manager-specific flags. - */ - if (useYarn) { - args.push(...yarnFlags); - } else { - args.push(...npmFlags); - } - /** - * Spawn the installation process. - */ - const child = spawn(command, args, { - stdio: "inherit", - env: { - ...process.env, - ADBLOCK: "1", - // we set NODE_ENV to development as pnpm skips dev - // dependencies when production - NODE_ENV: "development", - DISABLE_OPENCOLLECTIVE: "1", - }, - }); - child.on("close", (code) => { - if (code !== 0) { - // eslint-disable-next-line prefer-promise-reject-errors - reject({ command: `${command} ${args.join(" ")}` }); - return; - } - resolve(); - }); - }); -}; diff --git a/packages/create-graz-app/helpers/is-folder-empty.ts b/packages/create-graz-app/helpers/is-folder-empty.ts deleted file mode 100644 index 77a101e4..00000000 --- a/packages/create-graz-app/helpers/is-folder-empty.ts +++ /dev/null @@ -1,58 +0,0 @@ -import fs from "node:fs"; -import path from "node:path"; - -import chalk from "chalk"; - -export const isFolderEmpty = (root: string, name: string): boolean => { - const validFiles = [ - ".DS_Store", - ".git", - ".gitattributes", - ".gitignore", - ".gitlab-ci.yml", - ".hg", - ".hgcheck", - ".hgignore", - ".idea", - ".npmignore", - ".travis.yml", - "LICENSE", - "Thumbs.db", - "docs", - "mkdocs.yml", - "npm-debug.log", - "yarn-debug.log", - "yarn-error.log", - "yarnrc.yml", - ".yarn", - ]; - - const conflicts = fs - .readdirSync(root) - .filter((file) => !validFiles.includes(file)) - // Support IntelliJ IDEA-based editors - .filter((file) => !file.endsWith(".iml")); - - if (conflicts.length > 0) { - console.log(`The directory ${chalk.green(name)} contains files that could conflict:`); - console.log(); - for (const file of conflicts) { - try { - const stats = fs.lstatSync(path.join(root, file)); - if (stats.isDirectory()) { - console.log(` ${chalk.blue(file)}/`); - } else { - console.log(` ${file}`); - } - } catch { - console.log(` ${file}`); - } - } - console.log(); - console.log("Either try using a new directory name, or remove the files listed above."); - console.log(); - return false; - } - - return true; -}; diff --git a/packages/create-graz-app/helpers/is-online.ts b/packages/create-graz-app/helpers/is-online.ts deleted file mode 100644 index 04e8c812..00000000 --- a/packages/create-graz-app/helpers/is-online.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { execSync } from "node:child_process"; -import dns from "node:dns"; -import url from "node:url"; - -const getProxy = (): string | undefined => { - if (process.env.https_proxy) { - return process.env.https_proxy; - } - - try { - const httpsProxy = execSync("npm config get https-proxy").toString().trim(); - return httpsProxy !== "null" ? httpsProxy : undefined; - } catch (e) { - return undefined; - } -}; - -export const getOnline = (): Promise => - new Promise((resolve) => { - dns.lookup("registry.yarnpkg.com", (registryErr) => { - if (!registryErr) { - return resolve(true); - } - - const proxy = getProxy(); - if (!proxy) { - return resolve(false); - } - - const { hostname } = url.parse(proxy); - if (!hostname) { - return resolve(false); - } - - dns.lookup(hostname, (proxyErr) => { - resolve(proxyErr === null); - }); - }); - }); diff --git a/packages/create-graz-app/helpers/is-writeable.ts b/packages/create-graz-app/helpers/is-writeable.ts deleted file mode 100644 index aeb3b289..00000000 --- a/packages/create-graz-app/helpers/is-writeable.ts +++ /dev/null @@ -1,10 +0,0 @@ -import fs from "node:fs"; - -export const isWriteable = async (directory: string): Promise => { - try { - await fs.promises.access(directory, (fs.constants || fs).W_OK); - return true; - } catch (err) { - return false; - } -}; diff --git a/packages/create-graz-app/helpers/make-dir.ts b/packages/create-graz-app/helpers/make-dir.ts deleted file mode 100644 index 6fdc1439..00000000 --- a/packages/create-graz-app/helpers/make-dir.ts +++ /dev/null @@ -1,4 +0,0 @@ -import fs from "node:fs"; - -export const makeDir = (root: string, options = { recursive: true }): Promise => - fs.promises.mkdir(root, options); diff --git a/packages/create-graz-app/helpers/repo.ts b/packages/create-graz-app/helpers/repo.ts deleted file mode 100644 index 1c38b5a0..00000000 --- a/packages/create-graz-app/helpers/repo.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { createWriteStream, promises as fs } from "node:fs"; -import { tmpdir } from "node:os"; -import { join } from "node:path"; -import { Stream } from "node:stream"; -import { promisify } from "node:util"; - -import { got } from "got"; -import tar from "tar"; - -const pipeline = promisify(Stream.pipeline); - -export interface RepoInfo { - username: string; - name: string; - branch: string; - filePath?: string; -} - -const downloadTar = async (url: string) => { - const tempFile = join(tmpdir(), `next.js-cna-example.temp-${Date.now()}`); - await pipeline(got.stream(url), createWriteStream(tempFile)); - return tempFile; -}; - -export const downloadAndExtractRepo = async (root: string, { username, name, branch, filePath }: RepoInfo) => { - const tempFile = await downloadTar(`https://codeload.github.com/${username}/${name}/tar.gz/${branch}`); - - await tar.x({ - file: tempFile, - cwd: root, - strip: filePath ? filePath.split("/").length + 1 : 1, - filter: (p) => p.startsWith(`${name}-${branch.replace(/\//g, "-")}${filePath ? `/${filePath}` : ""}`), - }); - - await fs.unlink(tempFile); -}; diff --git a/packages/create-graz-app/helpers/validate-pkg.ts b/packages/create-graz-app/helpers/validate-pkg.ts deleted file mode 100644 index 38185c8d..00000000 --- a/packages/create-graz-app/helpers/validate-pkg.ts +++ /dev/null @@ -1,18 +0,0 @@ -import validateProjectName from "validate-npm-package-name"; - -export const validateNpmName = ( - name: string, -): { - valid: boolean; - problems?: string[]; -} => { - const nameValidation = validateProjectName(name); - if (nameValidation.validForNewPackages) { - return { valid: true }; - } - - return { - valid: false, - problems: [...(nameValidation.errors || []), ...(nameValidation.warnings || [])], - }; -}; diff --git a/packages/create-graz-app/index.ts b/packages/create-graz-app/index.ts deleted file mode 100644 index 85df7e7c..00000000 --- a/packages/create-graz-app/index.ts +++ /dev/null @@ -1,120 +0,0 @@ -import path from "node:path"; - -import chalk from "chalk"; -import { Command } from "commander"; -import { default as prompts } from "prompts"; - -import { createApp } from "./create-apps"; -import type { PackageManager } from "./helpers/get-pkg-manager"; -import { getPkgManager } from "./helpers/get-pkg-manager"; -import { validateNpmName } from "./helpers/validate-pkg"; -import packageJson from "./package.json"; - -let projectPath = ""; - -const program = new Command(packageJson.name) - .version(packageJson.version) - .arguments("") - .usage(`${chalk.green("")} [options]`) - .action((name: string) => { - projectPath = name; - }) - .option( - "--use-npm", - ` - - Explicitly tell the CLI to bootstrap the app using npm -`, - ) - .option( - "--use-pnpm", - ` - - Explicitly tell the CLI to bootstrap the app using pnpm -`, - ) - .allowUnknownOption(); - -const run = async () => { - if (typeof projectPath === "string") { - projectPath = projectPath.trim(); - } - - if (!projectPath) { - const res = await prompts({ - type: "text", - name: "path", - message: "What is your project named?", - initial: "my-app", - validate: (name: string) => { - const validation = validateNpmName(path.basename(path.resolve(name))); - if (validation.valid) { - return true; - } - return `Invalid project name: ${validation.problems![0]!}`; - }, - }); - - if (typeof res.path === "string") { - projectPath = res.path.trim(); - } - } - - if (!projectPath) { - console.log( - "\nPlease specify the project directory:\n" + - ` ${chalk.cyan(program.name())} ${chalk.green("")}\n` + - "For example:\n" + - ` ${chalk.cyan(program.name())} ${chalk.green("my-next-app")}\n\n` + - `Run ${chalk.cyan(`${program.name()} --help`)} to see all options.`, - ); - process.exit(1); - } - - const resolvedProjectPath = path.resolve(projectPath); - const projectName = path.basename(resolvedProjectPath); - - const { valid, problems } = validateNpmName(projectName); - - if (!valid) { - console.error( - `Could not create a project called ${chalk.red(`"${projectName}"`)} because of npm naming restrictions:`, - ); - - problems!.forEach((p) => console.error(` ${chalk.red.bold("*")} ${p}`)); - process.exit(1); - } - const options = program.opts(); - - let packageManager: PackageManager /* = options.useNpm ? "npm" : options.usePnpm ? "pnpm" : getPkgManager() */; - if (options.useNpm) { - packageManager = "npm"; - } else if (options.usePnpm) { - packageManager = "pnpm"; - } else { - packageManager = getPkgManager(); - } - - try { - await createApp({ - appPath: resolvedProjectPath, - packageManager, - }); - } catch (error) { - console.log((error as Error).message); - } -}; - -run().catch((reason: { command: string }) => { - console.log(); - console.log("Aborting installation."); - - if (reason.command) { - console.log(` ${chalk.cyan(reason.command)} has failed.`); - } else { - console.log(`${chalk.red("Unexpected error. Please report it as a bug:")}\n`, reason); - } - console.log(); - - process.exit(1); -}); diff --git a/packages/create-graz-app/package.json b/packages/create-graz-app/package.json deleted file mode 100644 index f3a383e4..00000000 --- a/packages/create-graz-app/package.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "name": "create-graz-app", - "description": "Bootstrap your cosmos app with one command", - "version": "0.0.1", - "author": "Nur Fikri ", - "repository": "https://github.com/graz-sh/graz.git", - "homepage": "https://github.com/graz-sh/graz", - "bugs": "https://github.com/graz-sh/graz/issues", - "bin": { - "create-graz-app": "./dist/index.js" - }, - "files": [ - "dist/*.js" - ], - "sideEffects": false, - "scripts": { - "build": "ncc build index.ts -m", - "dev": "ncc build index.ts -w", - "prepublishOnly": "pnpm build", - "start": "ncc run index.ts" - }, - "devDependencies": { - "@types/async-retry": "1.4.5", - "@types/cross-spawn": "^6.0.2", - "@types/node": "^20.3.1", - "@types/prompts": "^2.4.4", - "@types/rimraf": "^4.0.5", - "@types/tar": "^6.1.5", - "@types/validate-npm-package-name": "^4.0.0", - "async-retry": "1.3.3", - "chalk": "^5.2.0", - "commander": "^10.0.1", - "cross-spawn": "^7.0.3", - "got": "^12.6.0", - "prompts": "^2.4.2", - "rimraf": "^5.0.1", - "tar": "^6.1.15", - "typescript": "^5.1.3", - "validate-npm-package-name": "^5.0.0" - }, - "license": "MIT" -} diff --git a/packages/create-graz-app/tsconfig.json b/packages/create-graz-app/tsconfig.json deleted file mode 100644 index 9c7e8add..00000000 --- a/packages/create-graz-app/tsconfig.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "extends": "@graz-sh/style-guide/tsconfig.json", - "compilerOptions": { - "esModuleInterop": true, - "moduleResolution": "node", - "resolveJsonModule": true, - "skipLibCheck": false, - "strict": true, - "target": "es2019" - }, - "exclude": ["node_modules"], - "include": ["**/*.ts"] -} diff --git a/packages/graz-adapter-keplr/package.json b/packages/graz-adapter-keplr/package.json index 3f8edb6c..0319cdc7 100644 --- a/packages/graz-adapter-keplr/package.json +++ b/packages/graz-adapter-keplr/package.json @@ -21,9 +21,8 @@ "graz": ">=0.0.37" }, "devDependencies": { - "@types/node": "^20.3.1", "graz": "*", - "typescript": "^5.1.3" + "typescript": "^5.2.2" }, "keywords": [ "graz", diff --git a/packages/graz-adapter-keplr/tsup.config.ts b/packages/graz-adapter-keplr/tsup.config.ts index bd82c5fc..57f3e09a 100644 --- a/packages/graz-adapter-keplr/tsup.config.ts +++ b/packages/graz-adapter-keplr/tsup.config.ts @@ -1,12 +1,13 @@ import { defineConfig } from "tsup"; export default defineConfig(({ watch }) => ({ + cjsInterop: true, clean: !watch, dts: true, entry: ["src/*.ts"], format: ["cjs", "esm"], minify: !watch, - minifyIdentifiers: !watch, - minifySyntax: !watch, - minifyWhitespace: !watch, + shims: true, + splitting: true, + treeshake: true, })); diff --git a/packages/graz-adapter-leap/package.json b/packages/graz-adapter-leap/package.json index 9768b431..9f1ad4be 100644 --- a/packages/graz-adapter-leap/package.json +++ b/packages/graz-adapter-leap/package.json @@ -21,9 +21,8 @@ "graz": ">=0.0.37" }, "devDependencies": { - "@types/node": "^20.3.1", "graz": "*", - "typescript": "^5.1.3" + "typescript": "^5.2.2" }, "keywords": [ "graz", diff --git a/packages/graz-adapter-leap/tsup.config.ts b/packages/graz-adapter-leap/tsup.config.ts index bd82c5fc..57f3e09a 100644 --- a/packages/graz-adapter-leap/tsup.config.ts +++ b/packages/graz-adapter-leap/tsup.config.ts @@ -1,12 +1,13 @@ import { defineConfig } from "tsup"; export default defineConfig(({ watch }) => ({ + cjsInterop: true, clean: !watch, dts: true, entry: ["src/*.ts"], format: ["cjs", "esm"], minify: !watch, - minifyIdentifiers: !watch, - minifySyntax: !watch, - minifyWhitespace: !watch, + shims: true, + splitting: true, + treeshake: true, })); diff --git a/packages/graz-adapter-vectis/package.json b/packages/graz-adapter-vectis/package.json index bd164dc8..29303661 100644 --- a/packages/graz-adapter-vectis/package.json +++ b/packages/graz-adapter-vectis/package.json @@ -21,9 +21,8 @@ "graz": ">=0.0.37" }, "devDependencies": { - "@types/node": "^20.3.1", "graz": "*", - "typescript": "^5.1.3" + "typescript": "^5.2.2" }, "keywords": [ "graz", @@ -35,6 +34,6 @@ ], "license": "MIT", "dependencies": { - "@vectis/extension-client": "^0.7.0" + "@vectis/extension-client": "^0.7.2" } } diff --git a/packages/graz-adapter-vectis/tsup.config.ts b/packages/graz-adapter-vectis/tsup.config.ts index bd82c5fc..57f3e09a 100644 --- a/packages/graz-adapter-vectis/tsup.config.ts +++ b/packages/graz-adapter-vectis/tsup.config.ts @@ -1,12 +1,13 @@ import { defineConfig } from "tsup"; export default defineConfig(({ watch }) => ({ + cjsInterop: true, clean: !watch, dts: true, entry: ["src/*.ts"], format: ["cjs", "esm"], minify: !watch, - minifyIdentifiers: !watch, - minifySyntax: !watch, - minifyWhitespace: !watch, + shims: true, + splitting: true, + treeshake: true, })); diff --git a/packages/graz/compiled/p-map/index.d.ts b/packages/graz/compiled/p-map/index.d.ts deleted file mode 100644 index e11b2585..00000000 --- a/packages/graz/compiled/p-map/index.d.ts +++ /dev/null @@ -1,121 +0,0 @@ -export type Options = { - /** - Number of concurrently pending promises returned by `mapper`. - - Must be an integer from 1 and up or `Infinity`. - - @default Infinity - */ - readonly concurrency?: number; - - /** - When `true`, the first mapper rejection will be rejected back to the consumer. - - When `false`, instead of stopping when a promise rejects, it will wait for all the promises to settle and then reject with an [`AggregateError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AggregateError) containing all the errors from the rejected promises. - - Caveat: When `true`, any already-started async mappers will continue to run until they resolve or reject. In the case of infinite concurrency with sync iterables, *all* mappers are invoked on startup and will continue after the first rejection. [Issue #51](https://github.com/sindresorhus/p-map/issues/51) can be implemented for abort control. - - @default true - */ - readonly stopOnError?: boolean; - - /** - You can abort the promises using [`AbortController`](https://developer.mozilla.org/en-US/docs/Web/API/AbortController). - - @example - ``` - import pMap from 'p-map'; - import delay from 'delay'; - - const abortController = new AbortController(); - - setTimeout(() => { - abortController.abort(); - }, 500); - - const mapper = async value => value; - - await pMap([delay(1000), delay(1000)], mapper, {signal: abortController.signal}); - // Throws AbortError (DOMException) after 500 ms. - ``` - */ - readonly signal?: AbortSignal; -}; - -type MaybePromise = T | Promise; - -/** -Function which is called for every item in `input`. Expected to return a `Promise` or value. - -@param element - Iterated element. -@param index - Index of the element in the source array. -*/ -export type Mapper = ( - element: Element, - index: number -) => MaybePromise; - -/** -@param input - Synchronous or asynchronous iterable that is iterated over concurrently, calling the `mapper` function for each element. Each iterated item is `await`'d before the `mapper` is invoked so the iterable may return a `Promise` that resolves to an item. Asynchronous iterables (different from synchronous iterables that return `Promise` that resolves to an item) can be used when the next item may not be ready without waiting for an asynchronous process to complete and/or the end of the iterable may be reached after the asynchronous process completes. For example, reading from a remote queue when the queue has reached empty, or reading lines from a stream. -@param mapper - Function which is called for every item in `input`. Expected to return a `Promise` or value. -@returns A `Promise` that is fulfilled when all promises in `input` and ones returned from `mapper` are fulfilled, or rejects if any of the promises reject. The fulfilled value is an `Array` of the fulfilled values returned from `mapper` in `input` order. - -@example -``` -import pMap from 'p-map'; -import got from 'got'; - -const sites = [ - getWebsiteFromUsername('sindresorhus'), //=> Promise - 'https://avajs.dev', - 'https://github.com' -]; - -const mapper = async site => { - const {requestUrl} = await got.head(site); - return requestUrl; -}; - -const result = await pMap(sites, mapper, {concurrency: 2}); - -console.log(result); -//=> ['https://sindresorhus.com/', 'https://avajs.dev/', 'https://github.com/'] -``` -*/ -export default function pMap( - input: AsyncIterable> | Iterable>, - mapper: Mapper, - options?: Options -): Promise>>; - -/** -Return this value from a `mapper` function to skip including the value in the returned array. - -@example -``` -import pMap, {pMapSkip} from 'p-map'; -import got from 'got'; - -const sites = [ - getWebsiteFromUsername('sindresorhus'), //=> Promise - 'https://avajs.dev', - 'https://example.invalid', - 'https://github.com' -]; - -const mapper = async site => { - try { - const {requestUrl} = await got.head(site); - return requestUrl; - } catch { - return pMapSkip; - } -}; - -const result = await pMap(sites, mapper, {concurrency: 2}); - -console.log(result); -//=> ['https://sindresorhus.com/', 'https://avajs.dev/', 'https://github.com/'] -``` -*/ -export const pMapSkip: unique symbol; diff --git a/packages/graz/compiled/p-map/index.mjs b/packages/graz/compiled/p-map/index.mjs deleted file mode 100644 index 52811fef..00000000 --- a/packages/graz/compiled/p-map/index.mjs +++ /dev/null @@ -1 +0,0 @@ -var e={};(()=>{e.d=(r,t)=>{for(var n in t){if(e.o(t,n)&&!e.o(r,n)){Object.defineProperty(r,n,{enumerable:true,get:t[n]})}}}})();(()=>{e.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r)})();if(typeof e!=="undefined")e.ab=new URL(".",import.meta.url).pathname.slice(import.meta.url.match(/^file:\/\/\/\w:/)?1:0,-1)+"/";var r={};e.d(r,{Ud:()=>t,ZP:()=>pMap,_L:()=>AbortError});class AbortError extends Error{constructor(e){super();this.name="AbortError";this.message=e}}const getDOMException=e=>globalThis.DOMException===undefined?new AbortError(e):new DOMException(e);const getAbortedReason=e=>{const r=e.reason===undefined?getDOMException("This operation was aborted."):e.reason;return r instanceof Error?r:getDOMException(r)};async function pMap(e,r,{concurrency:n=Number.POSITIVE_INFINITY,stopOnError:o=true,signal:a}={}){return new Promise(((i,s)=>{if(e[Symbol.iterator]===undefined&&e[Symbol.asyncIterator]===undefined){throw new TypeError(`Expected \`input\` to be either an \`Iterable\` or \`AsyncIterable\`, got (${typeof e})`)}if(typeof r!=="function"){throw new TypeError("Mapper function is required")}if(!((Number.isSafeInteger(n)||n===Number.POSITIVE_INFINITY)&&n>=1)){throw new TypeError(`Expected \`concurrency\` to be an integer from 1 and up or \`Infinity\`, got \`${n}\` (${typeof n})`)}const c=[];const f=[];const u=new Map;let p=false;let l=false;let y=false;let b=0;let d=0;const w=e[Symbol.iterator]===undefined?e[Symbol.asyncIterator]():e[Symbol.iterator]();const reject=e=>{p=true;l=true;s(e)};if(a){if(a.aborted){reject(getAbortedReason(a))}a.addEventListener("abort",(()=>{reject(getAbortedReason(a))}))}const next=async()=>{if(l){return}const e=await w.next();const n=d;d++;if(e.done){y=true;if(b===0&&!l){if(!o&&f.length>0){reject(new AggregateError(f));return}l=true;if(u.size===0){i(c);return}const e=[];for(const[r,n]of c.entries()){if(u.get(r)===t){continue}e.push(n)}i(e)}return}b++;(async()=>{try{const o=await e.value;if(l){return}const a=await r(o,n);if(a===t){u.set(n,a)}c[n]=a;b--;await next()}catch(e){if(o){reject(e)}else{f.push(e);b--;try{await next()}catch(e){reject(e)}}}})()};(async()=>{for(let e=0;e { - abortController.abort(); - }, 500); - - const mapper = async value => value; - - await pMap([delay(1000), delay(1000)], mapper, {signal: abortController.signal}); - // Throws AbortError (DOMException) after 500 ms. - ``` - */ - readonly signal?: AbortSignal; -} - -type MaybePromise = T | Promise; - -/** -Function which is called for every item in `input`. Expected to return a `Promise` or value. - -@param element - Iterated element. -@param index - Index of the element in the source array. -*/ -export type Mapper = ( - element: Element, - index: number -) => MaybePromise; - -/** -@param input - Synchronous or asynchronous iterable that is iterated over concurrently, calling the `mapper` function for each element. Each iterated item is `await`'d before the `mapper` is invoked so the iterable may return a `Promise` that resolves to an item. Asynchronous iterables (different from synchronous iterables that return `Promise` that resolves to an item) can be used when the next item may not be ready without waiting for an asynchronous process to complete and/or the end of the iterable may be reached after the asynchronous process completes. For example, reading from a remote queue when the queue has reached empty, or reading lines from a stream. -@param mapper - Function which is called for every item in `input`. Expected to return a `Promise` or value. -@returns A `Promise` that is fulfilled when all promises in `input` and ones returned from `mapper` are fulfilled, or rejects if any of the promises reject. The fulfilled value is an `Array` of the fulfilled values returned from `mapper` in `input` order. - -@example -``` -import pMap from 'p-map'; -import got from 'got'; - -const sites = [ - getWebsiteFromUsername('sindresorhus'), //=> Promise - 'https://avajs.dev', - 'https://github.com' -]; - -const mapper = async site => { - const {requestUrl} = await got.head(site); - return requestUrl; -}; - -const result = await pMap(sites, mapper, {concurrency: 2}); - -console.log(result); -//=> ['https://sindresorhus.com/', 'https://avajs.dev/', 'https://github.com/'] -``` -*/ -export default function pMap( - input: AsyncIterable> | Iterable>, - mapper: Mapper, - options?: Options -): Promise>>; - -/** -Return this value from a `mapper` function to skip including the value in the returned array. - -@example -``` -import pMap, {pMapSkip} from 'p-map'; -import got from 'got'; - -const sites = [ - getWebsiteFromUsername('sindresorhus'), //=> Promise - 'https://avajs.dev', - 'https://example.invalid', - 'https://github.com' -]; - -const mapper = async site => { - try { - const {requestUrl} = await got.head(site); - return requestUrl; - } catch { - return pMapSkip; - } -}; - -const result = await pMap(sites, mapper, {concurrency: 2}); - -console.log(result); -//=> ['https://sindresorhus.com/', 'https://avajs.dev/', 'https://github.com/'] -``` -*/ -export const pMapSkip: unique symbol; diff --git a/packages/graz/package.json b/packages/graz/package.json index 89c62e20..1421cdc0 100644 --- a/packages/graz/package.json +++ b/packages/graz/package.json @@ -1,7 +1,7 @@ { "name": "graz", "description": "React hooks for Cosmos", - "version": "0.0.51", + "version": "0.1.0", "author": "Griko Nibras ", "repository": "https://github.com/graz-sh/graz.git", "homepage": "https://github.com/graz-sh/graz", @@ -9,54 +9,75 @@ "main": "./dist/index.js", "module": "./dist/index.mjs", "types": "./dist/index.d.ts", - "bin": { - "graz": "./cli.mjs" + "bin": "./dist/cli.js", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "import": { + "types": "./dist/index.d.mts", + "default": "./dist/index.mjs" + }, + "module": "./dist/index.mjs", + "default": "./dist/index.js" + }, + "./chains": { + "types": "./chains/index.ts", + "module": "./chains/index.mjs", + "default": "./chains/index.js" + } }, "files": [ "chains/*.stub", - "cli.js", - "compiled/**", - "dist/*.d.ts", - "dist/*.js", - "dist/*.mjs" + "dist/*", + "types/*", + "env.d.ts" ], "sideEffects": false, "scripts": { "build": "tsup", "clean": "rm -rf dist/*", - "cli": "node cli.mjs", + "cli": "node dist/cli.js", "dev": "tsup --watch", "lint": "eslint --fix \"src/**/*.{ts,tsx}\"", "prepublishOnly": "pnpm build" }, + "peerDependencies": { + "@cosmjs/cosmwasm-stargate": "*", + "@cosmjs/launchpad": "*", + "@cosmjs/proto-signing": "*", + "@cosmjs/stargate": "*", + "@cosmjs/tendermint-rpc": "*", + "long": "*", + "react": ">=17" + }, + "peerDependenciesMeta": { + "long": { + "optional": true + } + }, "dependencies": { - "@cosmjs/cosmwasm-stargate": "^0.31.0", - "@cosmjs/launchpad": "^0.27.1", - "@cosmjs/proto-signing": "^0.31.0", - "@cosmjs/stargate": "^0.31.0", - "@cosmjs/tendermint-rpc": "^0.31.0", + "@clack/prompts": "^0.7.0", "@keplr-wallet/cosmos": "^0.12.20", - "@metamask/providers": "^11.1.1", - "@tanstack/react-query": "^4.29.14", - "@tanstack/react-query-devtools": "^4.29.14", - "@vectis/extension-client": "^0.7.1", - "@walletconnect/sign-client": "^2.8.1", - "@walletconnect/utils": "^2.8.1", + "@keplr-wallet/types": "^0.12.23", + "@metamask/providers": "^12.0.0", + "@tanstack/react-query": "^4.35.0", + "@vectis/extension-client": "^0.7.2", + "@walletconnect/sign-client": "^2.10.0", + "@walletconnect/types": "^2.10.0", + "@walletconnect/utils": "^2.10.0", "@web3modal/standalone": "^2.4.3", - "arg": "^5.0.2", + "cac": "^6.7.14", "cosmos-directory-client": "0.0.6", - "zustand": "^4.3.8" + "wadesta": "^0.0.5", + "zustand": "^4.4.1" }, "devDependencies": { - "@keplr-wallet/types": "^0.12.20", - "@types/node": "^20.3.1", - "@types/react": "^18.2.12", - "@walletconnect/types": "^2.8.1", + "@types/node": "^18.17.15", + "@types/react": "^18.2.21", + "@types/react-dom": "^18.2.7", + "arg": "^5.0.2", "react": "^18.2.0", - "typescript": "^5.1.3" - }, - "peerDependencies": { - "react": ">=17" + "typescript": "^5.2.2" }, "keywords": [ "graz", diff --git a/packages/graz/src/actions/account.ts b/packages/graz/src/actions/account.ts index 6f7fa6e6..6cc705f3 100644 --- a/packages/graz/src/actions/account.ts +++ b/packages/graz/src/actions/account.ts @@ -1,28 +1,29 @@ +import { fromBech32, toBech32 } from "@cosmjs/encoding"; import type { OfflineDirectSigner } from "@cosmjs/proto-signing"; -import type { Key, OfflineAminoSigner } from "@keplr-wallet/types"; +import type { ChainInfo, Key, OfflineAminoSigner } from "@keplr-wallet/types"; -import type { GrazChain } from "../chains"; import { RECONNECT_SESSION_KEY } from "../constant"; import { grazSessionDefaultValues, useGrazInternalStore, useGrazSessionStore } from "../store"; import type { Maybe } from "../types/core"; import type { WalletType } from "../types/wallet"; +import type { ChainId } from "../utils/multi-chain"; import { checkWallet, getWallet, isWalletConnect } from "./wallet"; export type ConnectArgs = Maybe<{ - chain?: GrazChain; + chainId: ChainId; walletType?: WalletType; autoReconnect?: boolean; }>; export interface ConnectResult { - account: Key; + accounts: Record; walletType: WalletType; - chain: GrazChain; + chains: ChainInfo[]; } export const connect = async (args?: ConnectArgs): Promise => { try { - const { defaultChain, recentChain, walletType } = useGrazInternalStore.getState(); + const { recentChainIds: recentChains, chains, walletType } = useGrazInternalStore.getState(); const currentWalletType = args?.walletType || walletType; @@ -33,78 +34,132 @@ export const connect = async (args?: ConnectArgs): Promise => { const wallet = getWallet(currentWalletType); - const chain = args?.chain || recentChain || defaultChain; - if (!chain) { - throw new Error("No last known connected chain, connect action requires chain info"); + const chainIds = typeof args?.chainId === "string" ? [args.chainId] : args?.chainId || recentChains; + if (!chainIds) { + throw new Error("No last known connected chain, connect action requires chain ids"); } + const providerChainIds = chains?.map((x) => x.chainId); + + chainIds.forEach((chainId) => { + if (!providerChainIds?.includes(chainId)) { + throw new Error(`Chain ${chainId} is not provided in GrazProvider`); + } + }); useGrazSessionStore.setState((x) => { const isReconnecting = useGrazInternalStore.getState()._reconnect || Boolean(useGrazInternalStore.getState()._reconnectConnector) || - Boolean(chain); - const isSwitchingChain = x.activeChain && x.activeChain.chainId !== chain.chainId; + Boolean(chainIds); + + const isSwitchingChain = x.activeChainIds && chainIds.filter((y) => !x.activeChainIds?.includes(y)).length > 0; if (isSwitchingChain) return { status: "connecting" }; if (isReconnecting) return { status: "reconnecting" }; return { status: "connecting" }; }); - const { account: _account, activeChain } = useGrazSessionStore.getState(); + const { accounts: _account } = useGrazSessionStore.getState(); await wallet.init?.(); - if (!_account || activeChain?.chainId !== chain.chainId) { - await wallet.enable(chain.chainId); - if (!isWalletConnect(currentWalletType)) { - const account = await wallet.getKey(chain.chainId); - useGrazSessionStore.setState({ account }); - } + await wallet.enable(chainIds); + if (!isWalletConnect(currentWalletType)) { + const key = await wallet.getKey(chainIds[0]!); + const resultAcccounts: Record = {}; + chainIds.forEach((chainId) => { + resultAcccounts[chainId] = { + ...key, + bech32Address: toBech32( + chains!.find((x) => x.chainId === chainId)!.bech32Config.bech32PrefixAccAddr, + fromBech32(key.bech32Address).data, + ), + }; + }); + useGrazSessionStore.setState((prev) => ({ + accounts: { ...(prev.accounts || {}), ...resultAcccounts }, + })); } + useGrazInternalStore.setState((prev) => ({ + recentChainIds: [...(prev.recentChainIds || []), ...chainIds].filter((thing, i, arr) => { + return arr.indexOf(thing) === i; + }), + })); + useGrazSessionStore.setState((prev) => ({ + activeChainIds: [...(prev.activeChainIds || []), ...chainIds].filter((thing, i, arr) => { + return arr.indexOf(thing) === i; + }), + })); + useGrazInternalStore.setState({ - recentChain: chain, walletType: currentWalletType, _reconnect: Boolean(args?.autoReconnect), _reconnectConnector: currentWalletType, }); useGrazSessionStore.setState({ - activeChain: chain, status: "connected", }); typeof window !== "undefined" && window.sessionStorage.setItem(RECONNECT_SESSION_KEY, "Active"); - const { account } = useGrazSessionStore.getState(); - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - return { account: account!, walletType: currentWalletType, chain }; + + const connectedChains = chainIds.map((x) => chains!.find((y) => y.chainId === x)!); + const _resAcc = useGrazSessionStore.getState().accounts; + return { accounts: _resAcc!, walletType: currentWalletType, chains: connectedChains }; } catch (error) { console.error("connect ", error); - if (useGrazSessionStore.getState().account === null) { + if (useGrazSessionStore.getState().accounts === null) { useGrazSessionStore.setState({ status: "disconnected" }); } - if (useGrazSessionStore.getState().account && useGrazSessionStore.getState().activeChain) { + if (useGrazSessionStore.getState().accounts && useGrazSessionStore.getState().activeChainIds) { useGrazSessionStore.setState({ status: "connected" }); } throw error; } }; -export const disconnect = async (clearRecentChain = false): Promise => { +export const disconnect = (args?: { chainId?: ChainId }) => { typeof window !== "undefined" && window.sessionStorage.removeItem(RECONNECT_SESSION_KEY); - useGrazSessionStore.setState(grazSessionDefaultValues); - useGrazInternalStore.setState((x) => ({ - _reconnect: false, - _reconnectConnector: null, - recentChain: clearRecentChain ? null : x.recentChain, - })); + const chainId = typeof args?.chainId === "string" ? [args.chainId] : args?.chainId; + if (chainId) { + const _accounts = useGrazSessionStore.getState().accounts; + chainId.forEach((x) => { + delete _accounts?.[x]; + }); + const isEmpty = Object.values(_accounts ? _accounts : {}).length === 0; + if (isEmpty) { + useGrazSessionStore.setState(grazSessionDefaultValues); + useGrazInternalStore.setState({ + _reconnect: false, + _reconnectConnector: null, + recentChainIds: null, + }); + } else { + useGrazSessionStore.setState((x) => ({ + activeChainIds: x.activeChainIds?.filter((item) => !chainId.includes(item)), + accounts: _accounts, + })); + useGrazInternalStore.setState((x) => ({ + recentChainIds: x.recentChainIds?.filter((item) => !chainId.includes(item)), + })); + } + } else { + useGrazSessionStore.setState(grazSessionDefaultValues); + useGrazInternalStore.setState({ + _reconnect: false, + _reconnectConnector: null, + recentChainIds: null, + }); + } + return Promise.resolve(); }; export type ReconnectArgs = Maybe<{ onError?: (error: unknown) => void }>; export const reconnect = async (args?: ReconnectArgs) => { - const { recentChain, _reconnectConnector, _reconnect } = useGrazInternalStore.getState(); + const { recentChainIds: recentChains, _reconnectConnector, _reconnect } = useGrazInternalStore.getState(); try { const isWalletReady = checkWallet(_reconnectConnector || undefined); - if (recentChain && isWalletReady && _reconnectConnector) { + if (recentChains && isWalletReady && _reconnectConnector) { const key = await connect({ - chain: recentChain, + chainId: recentChains, walletType: _reconnectConnector, autoReconnect: _reconnect, }); diff --git a/packages/graz/src/actions/chains.ts b/packages/graz/src/actions/chains.ts index a8dcbcd2..2cffe589 100644 --- a/packages/graz/src/actions/chains.ts +++ b/packages/graz/src/actions/chains.ts @@ -1,24 +1,22 @@ -import type { AppCurrency, ChainInfo } from "@keplr-wallet/types"; +import type { ChainInfo } from "@keplr-wallet/types"; -import type { GrazChain } from "../chains"; -import { useGrazInternalStore, useGrazSessionStore } from "../store"; -import type { Dictionary } from "../types/core"; +import { useGrazInternalStore } from "../store"; import type { WalletType } from "../types/wallet"; import type { ConnectResult } from "./account"; import { connect } from "./account"; import { getWallet } from "./wallet"; export const clearRecentChain = (): void => { - useGrazInternalStore.setState({ recentChain: null }); + useGrazInternalStore.setState({ recentChainIds: null }); }; -export const getActiveChainCurrency = (denom: string): AppCurrency | undefined => { - const { activeChain } = useGrazSessionStore.getState(); - return activeChain?.currencies.find((x) => x.coinMinimalDenom === denom); +export const getRecentChainIds = (): string[] | null => { + return useGrazInternalStore.getState().recentChainIds; }; -export const getRecentChain = (): GrazChain | null => { - return useGrazInternalStore.getState().recentChain; +export const getRecentChains = (): ChainInfo[] | null => { + const { recentChainIds: recentChains, chains } = useGrazInternalStore.getState(); + return recentChains?.map((chainId) => chains!.find((x) => x.chainId === chainId)!) ?? null; }; export interface SuggestChainArgs { @@ -35,39 +33,16 @@ export const suggestChain = async ({ chainInfo, walletType }: SuggestChainArgs): export interface SuggestChainAndConnectArgs { chainInfo: ChainInfo; walletType?: WalletType; - gas?: { - price: string; - denom: string; - }; - rpcHeaders?: Dictionary; - path?: string; autoReconnect?: boolean; } -export const suggestChainAndConnect = async ({ - chainInfo, - rpcHeaders, - gas, - path, - ...rest -}: SuggestChainAndConnectArgs): Promise => { - const { walletType } = useGrazInternalStore.getState(); - const wallet = rest.walletType || walletType; - const chain = await suggestChain({ - chainInfo, - walletType: wallet, - }); +export const suggestChainAndConnect = async (args: SuggestChainAndConnectArgs): Promise => { + const defaultWalletType = useGrazInternalStore.getState().walletType; + await suggestChain({ chainInfo: args.chainInfo, walletType: args.walletType ?? defaultWalletType }); const result = await connect({ - chain: { - chainId: chainInfo.chainId, - currencies: chainInfo.currencies, - rest: chainInfo.rest, - rpc: chainInfo.rpc, - rpcHeaders, - gas, - path, - }, - ...rest, + chainId: args.chainInfo.chainId, + walletType: args.walletType, + autoReconnect: args.autoReconnect, }); - return { ...result, chain }; + return result; }; diff --git a/packages/graz/src/actions/configure.ts b/packages/graz/src/actions/configure.ts index 046c1dd8..6ff37188 100644 --- a/packages/graz/src/actions/configure.ts +++ b/packages/graz/src/actions/configure.ts @@ -1,11 +1,13 @@ -import type { GrazChain } from "../chains"; -import type { GrazInternalStore } from "../store"; +import type { ChainInfo } from "@keplr-wallet/types"; + +import type { ChainConfig, GrazInternalStore } from "../store"; import { useGrazInternalStore } from "../store"; import type { WalletType } from "../types/wallet"; export interface ConfigureGrazArgs { - defaultChain?: GrazChain; defaultWallet?: WalletType; + chains: ChainInfo[]; + chainsConfig?: Record; onNotFound?: () => void; onReconnectFailed?: () => void; walletConnect?: GrazInternalStore["walletConnect"]; @@ -13,13 +15,20 @@ export interface ConfigureGrazArgs { * default to true */ autoReconnect?: boolean; + /** + * Graz will use this number to determine how many concurrent requests to make when using `multiChain` args in hooks. + * Defaults to 3. + */ + multiChainFetchConcurrency?: number; } -export const configureGraz = (args: ConfigureGrazArgs = {}): ConfigureGrazArgs => { +export const configureGraz = (args: ConfigureGrazArgs): ConfigureGrazArgs => { useGrazInternalStore.setState((prev) => ({ - defaultChain: args.defaultChain || prev.defaultChain, walletConnect: args.walletConnect || prev.walletConnect, walletType: args.defaultWallet || prev.walletType, + chains: args.chains, + chainsConfig: args.chainsConfig || prev.chainsConfig, + multiChainFetchConcurrency: args.multiChainFetchConcurrency || prev.multiChainFetchConcurrency, _notFoundFn: args.onNotFound || prev._notFoundFn, _onReconnectFailed: args.onReconnectFailed || prev._onReconnectFailed, _reconnect: args.autoReconnect === undefined ? true : args.autoReconnect || prev._reconnect, diff --git a/packages/graz/src/actions/wallet/metamask-snap/index.ts b/packages/graz/src/actions/wallet/metamask-snap/index.ts index 5a759eeb..bed7423b 100644 --- a/packages/graz/src/actions/wallet/metamask-snap/index.ts +++ b/packages/graz/src/actions/wallet/metamask-snap/index.ts @@ -12,6 +12,7 @@ import Long from "long"; import { useGrazInternalStore } from "../../../store"; import type { SignAminoParams, SignDirectParams, Wallet } from "../../../types/wallet"; +import type { ChainId } from "../../../utils/multi-chain"; import type { GetSnapsResponse, Snap } from "./types"; export interface GetMetamaskSnap { @@ -70,7 +71,7 @@ export const getMetamaskSnap = (params?: GetMetamaskSnap): Wallet => { method: "web3_clientVersion", }); - const isMetamask = (clientVersion as string)?.includes("MetaMask"); + const isMetamask = (clientVersion as string).includes("MetaMask"); if (!isMetamask) throw new Error("Metamask is not installed"); const version = (clientVersion as string).split("MetaMask/v")[1]?.split(".")[0]; const isSupportMMSnap = Number(version) >= 11; @@ -81,7 +82,7 @@ export const getMetamaskSnap = (params?: GetMetamaskSnap): Wallet => { return true; }; - const enable = async (chainId: string | string[]) => { + const enable = async (chainId: ChainId) => { const installedSnap = await getSnap(); if (!installedSnap) await requestSnaps(); }; diff --git a/packages/graz/src/actions/wallet/metamask-snap/types.ts b/packages/graz/src/actions/wallet/metamask-snap/types.ts index 8f966035..0cb4c3ec 100644 --- a/packages/graz/src/actions/wallet/metamask-snap/types.ts +++ b/packages/graz/src/actions/wallet/metamask-snap/types.ts @@ -1,8 +1,8 @@ export type GetSnapsResponse = Record; -export type Snap = { +export interface Snap { permissionName: string; id: string; version: string; initialPermissions: Record; -}; +} diff --git a/packages/graz/src/actions/wallet/vectis.ts b/packages/graz/src/actions/wallet/vectis.ts index 50a23c41..4cb633bb 100644 --- a/packages/graz/src/actions/wallet/vectis.ts +++ b/packages/graz/src/actions/wallet/vectis.ts @@ -83,7 +83,7 @@ export const getVectis = (): Wallet => { }; return { - enable: (chainId: string) => vectis.enable(chainId), + enable: (chainId: string | string[]) => vectis.enable(chainId), getOfflineSigner: (chainId: string) => vectis.getOfflineSigner(chainId), getOfflineSignerAuto: (chainId: string) => vectis.getOfflineSignerAuto(chainId), getKey, diff --git a/packages/graz/src/actions/wallet/wallet-connect/index.ts b/packages/graz/src/actions/wallet/wallet-connect/index.ts index 030b25e3..aa82f1a6 100644 --- a/packages/graz/src/actions/wallet/wallet-connect/index.ts +++ b/packages/graz/src/actions/wallet/wallet-connect/index.ts @@ -1,5 +1,5 @@ import type { AminoSignResponse } from "@cosmjs/amino"; -import { fromBech32 } from "@cosmjs/encoding"; +import { fromBech32, toBech32 } from "@cosmjs/encoding"; import type { AccountData, Algo, DirectSignResponse } from "@cosmjs/proto-signing"; import type { Keplr, Key } from "@keplr-wallet/types"; import { SignClient } from "@walletconnect/sign-client"; @@ -52,7 +52,7 @@ export const getWalletConnect = (params?: GetWalletConnectParams): Wallet => { useGrazInternalStore.setState({ _reconnect: false, _reconnectConnector: null, - recentChain: null, + recentChainIds: null, }); }; @@ -69,40 +69,36 @@ export const getWalletConnect = (params?: GetWalletConnectParams): Wallet => { _disconnect(); }; - const getSession = (chainId: string) => { + const getSession = (chainId: string[]) => { try { const { wcSignClient } = useGrazSessionStore.getState(); if (!wcSignClient) throw new Error("walletConnect.signClient is not defined"); const lastSession = wcSignClient.session.getAll().at(-1); if (!lastSession) return; - const isSameChain = wcSignClient.session - .getAll() - .at(-1) - ?.namespaces.cosmos?.accounts.find((i) => i.startsWith(`cosmos:${chainId}`)); - const isNotExpired = lastSession.expiry * 1000 > Date.now() + 1000; - if (!isNotExpired) { + + const isValid = lastSession.expiry * 1000 > Date.now() + 1000; + if (!isValid) { void wcDisconnect(lastSession.topic); throw new Error("invalid session"); } - if (!isSameChain) { - try { - const chainSession = wcSignClient.find({ - requiredNamespaces: { - cosmos: { - methods: ["cosmos_getAccounts", "cosmos_signAmino", "cosmos_signDirect"], - chains: [`cosmos:${chainId}`], - events: ["chainChanged", "accountsChanged"], - }, + + try { + const chainSession = wcSignClient.find({ + requiredNamespaces: { + cosmos: { + methods: ["cosmos_getAccounts", "cosmos_signAmino", "cosmos_signDirect"], + chains: chainId.map((i) => `cosmos:${i}`), + events: ["chainChanged", "accountsChanged"], }, - }); - if (!chainSession.length) { - throw new Error("no session"); - } - return chainSession.at(-1); - } catch (error) { - if (!(error as Error).message.toLowerCase().includes("no matching key")) throw error; + }, + }); + if (!chainSession.length) { + throw new Error("no session"); } + return chainSession.at(-1); + } catch (error) { + if (!(error as Error).message.toLowerCase().includes("no matching key")) throw error; } return lastSession; @@ -111,7 +107,7 @@ export const getWalletConnect = (params?: GetWalletConnectParams): Wallet => { } }; - const checkSession = (chainId: string) => { + const checkSession = (chainId: string[]) => { try { const lastSession = getSession(chainId); return lastSession; @@ -161,13 +157,17 @@ export const getWalletConnect = (params?: GetWalletConnectParams): Wallet => { _disconnect(); }); wcSignClient.events.on("session_event", (args) => { + const _accounts = useGrazSessionStore.getState().accounts; if ( args.params.event.name === "accountsChanged" && - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access - args.params.event.data?.[0] !== useGrazSessionStore.getState().account?.bech32Address + _accounts && + !Object.values(_accounts) + .map((x) => x.bech32Address) + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument + .includes(args.params.event.data[0]) ) { const chainId = args.params.chainId.split(":")[1]; - chainId && void enable(chainId); + chainId && void enable([chainId]); } else { reconnect(); } @@ -181,13 +181,17 @@ export const getWalletConnect = (params?: GetWalletConnectParams): Wallet => { _disconnect(); }); wcSignClient.events.off("session_event", (args) => { + const _accounts = useGrazSessionStore.getState().accounts; if ( args.params.event.name === "accountsChanged" && - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access - args.params.event.data?.[0] !== useGrazSessionStore.getState().account?.bech32Address + _accounts && + !Object.values(_accounts) + .map((x) => x.bech32Address) + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument + .includes(args.params.event.data[0]) ) { const chainId = args.params.chainId.split(":")[1]; - chainId && void enable(chainId); + chainId && void enable([chainId]); } else { reconnect(); } @@ -195,10 +199,11 @@ export const getWalletConnect = (params?: GetWalletConnectParams): Wallet => { }; }; - const enable = async (chainId: string) => { + const enable = async (_chainId: string[]) => { + const chainId = typeof _chainId === "string" ? [_chainId] : _chainId; const { wcSignClient: signClient } = useGrazSessionStore.getState(); if (!signClient) throw new Error("enable walletConnect.signClient is not defined"); - const { walletConnect } = useGrazInternalStore.getState(); + const { walletConnect, chains } = useGrazInternalStore.getState(); if (!walletConnect?.options?.projectId) throw new Error("walletConnect.options.projectId is not defined"); const { Web3Modal } = await import("@web3modal/standalone"); @@ -224,16 +229,13 @@ export const getWalletConnect = (params?: GetWalletConnectParams): Wallet => { // "f896cbca30cd6dc414712d3d6fcc2f8f7d35d5bd30e3b1fc5d60cf6c8926f98f", // ], }); - - const { account, activeChain } = useGrazSessionStore.getState(); const lastSession = checkSession(chainId); - - if ((activeChain?.chainId !== chainId && !lastSession) || !account) { + if (!lastSession) { const { uri, approval } = await signClient.connect({ requiredNamespaces: { cosmos: { methods: ["cosmos_getAccounts", "cosmos_signAmino", "cosmos_signDirect"], - chains: [`cosmos:${chainId}`], + chains: chainId.map((i) => `cosmos:${i}`), events: ["chainChanged", "accountsChanged"], }, }, @@ -244,7 +246,6 @@ export const getWalletConnect = (params?: GetWalletConnectParams): Wallet => { } else { redirectToApp(uri); } - const approving = async (signal: AbortSignal) => { if (signal.aborted) return Promise.reject(new Error("User closed wallet connect")); return new Promise((resolve, reject) => { @@ -253,11 +254,23 @@ export const getWalletConnect = (params?: GetWalletConnectParams): Wallet => { const sessionProperties = d.sessionProperties; if (!sessionProperties) return reject(new Error("No session properties")); const _acc: (Key & { chainId?: string })[] = JSON.parse(String(sessionProperties.keys)); - const resAcc = _acc.find((i) => i.chainId === chainId); - if (!resAcc) return reject(new Error("No account")); - useGrazSessionStore.setState({ - account: resAcc, + if (_acc.length === 0) return reject(new Error("No accounts")); + const acc = _acc[0]; + if (!acc) return reject(new Error("No accounts")); + const resAcc: Record = {}; + chainId.forEach((x) => { + resAcc[x] = { + ...acc, + bech32Address: toBech32( + chains!.find((y) => y.chainId === x)!.bech32Config.bech32PrefixAccAddr, + fromBech32(_acc[0]!.bech32Address).data, + ), + }; }); + + useGrazSessionStore.setState((prev) => ({ + accounts: { ...(prev.accounts || {}), ...resAcc }, + })); return resolve(d); }) .catch(reject); @@ -288,16 +301,26 @@ export const getWalletConnect = (params?: GetWalletConnectParams): Wallet => { try { await promiseWithTimeout( (async () => { - const wcAccount = await getKey(chainId); + const wcAccount = await getKey(chainId[0]!); + const resultAcccounts: Record = {}; + chainId.forEach((x) => { + resultAcccounts[x] = { + ...wcAccount, + bech32Address: toBech32( + chains!.find((y) => y.chainId === x)!.bech32Config.bech32PrefixAccAddr, + fromBech32(wcAccount.bech32Address).data, + ), + }; + }); useGrazSessionStore.setState({ - account: wcAccount, + accounts: resultAcccounts, }); })(), 15000, new Error("Connection timeout"), ); } catch (error) { - void wcDisconnect(lastSession?.topic); + void wcDisconnect(lastSession.topic); if (!(error as Error).message.toLowerCase().includes("no matching key")) throw error; } }; @@ -305,7 +328,7 @@ export const getWalletConnect = (params?: GetWalletConnectParams): Wallet => { const getAccount = async (chainId: string): Promise => { const { wcSignClient } = useGrazSessionStore.getState(); if (!wcSignClient) throw new Error("walletConnect.signClient is not defined"); - const topic = getSession(chainId)?.topic; + const topic = getSession([chainId])?.topic; if (!topic) throw new Error("No wallet connect session"); redirectToApp(); const result: { address: string; algo: string; pubkey: string }[] = await wcSignClient.request({ @@ -339,11 +362,11 @@ export const getWalletConnect = (params?: GetWalletConnectParams): Wallet => { const wcSignDirect = async (...args: SignDirectParams) => { const [chainId, signer, signDoc] = args; - const { account, wcSignClient } = useGrazSessionStore.getState(); + const { accounts: account, wcSignClient } = useGrazSessionStore.getState(); if (!wcSignClient) throw new Error("walletConnect.signClient is not defined"); if (!account) throw new Error("account is not defined"); - const topic = getSession(chainId)?.topic; + const topic = getSession([chainId])?.topic; if (!topic) throw new Error("No wallet connect session"); if (!signDoc.bodyBytes) throw new Error("No bodyBytes"); @@ -386,11 +409,11 @@ export const getWalletConnect = (params?: GetWalletConnectParams): Wallet => { const wcSignAmino = async (...args: SignAminoParams) => { const [chainId, signer, signDoc, _signOptions] = args; const { wcSignClient } = useGrazSessionStore.getState(); - const { account } = useGrazSessionStore.getState(); + const { accounts: account } = useGrazSessionStore.getState(); if (!wcSignClient) throw new Error("walletConnect.signClient is not defined"); if (!account) throw new Error("account is not defined"); - const topic = getSession(chainId)?.topic; + const topic = getSession([chainId])?.topic; if (!topic) throw new Error("No wallet connect session"); redirectToApp(); diff --git a/packages/graz/src/chains/index.ts b/packages/graz/src/chains/index.ts index 744cf261..96087043 100644 --- a/packages/graz/src/chains/index.ts +++ b/packages/graz/src/chains/index.ts @@ -1,28 +1,6 @@ -import type { AppCurrency, ChainInfo } from "@keplr-wallet/types"; +import type { ChainInfo } from "@keplr-wallet/types"; import type { Dictionary } from "../types/core"; -import type { ChainInfoWithPath } from "../types/keplr"; -import { axelar } from "./mainnet/axelar"; -import { cosmoshub } from "./mainnet/cosmoshub"; -import { juno } from "./mainnet/juno"; -import { osmosis } from "./mainnet/osmosis"; -import { sommelier } from "./mainnet/sommelier"; -import { crescentTestnet } from "./testnet/crescent"; -import { junoTestnet } from "./testnet/juno"; -import { osmosisTestnet } from "./testnet/osmosis"; - -export interface GrazChain { - chainId: string; - currencies: AppCurrency[]; - path?: string; - rest: string; - rpc: string; - rpcHeaders?: Dictionary; - gas?: { - price: string; - denom: string; - }; -} /** * Helper function to define chain information records (key values). @@ -46,34 +24,10 @@ export interface GrazChain { * connect(myChains.cosmoshub); * ``` */ -export const defineChains = >(chains: T): T => { +export const defineChains = >(chains: T): T => { return chains; }; -/** - * Helper function to define chain information object. - * - * This function does not do anything special else than providing type safety - * when defining chain information. - * - * @example - * ```ts - * import { connect, defineChain } from "graz"; - * - * const cosmoshub = defineChain({ - * rpc: "https://rpc.cosmoshub.strange.love", - * rest: "https://api.cosmoshub.strange.love", - * chainId: "cosmoshub-4", - * ... - * }); - * - * connect(cosmoshub); - * ``` - */ -export const defineChain = (chain: T): T => { - return chain; -}; - /** * Helper function to define Keplr's `ChainInfo` object. * @@ -94,67 +48,6 @@ export const defineChain = (chain: T): T => { * }); * ``` */ -export const defineChainInfo = (chain: T): T => { +export const defineChainInfo = (chain: T): T => { return chain; }; - -/** - * Provided mainnet chains - * - * @example - * ```ts - * import { connect, mainnetChains } from "graz"; - * connect(mainnetChains.cosmos); - * ``` - * - * @see {@link testnetChains} - * - * @deprecated will be removed in the next version use `generate chain` https://graz.strange.love/docs/generate-chain-info - */ -export const mainnetChains = defineChains({ - axelar, - cosmoshub, - juno, - osmosis, - sommelier, -}); - -/** - * Arary version on {@link mainnetChains} - * - * Try graz cli to generate ChainInfo from https://cosmos.directory/ - * @see https://graz.strange.love/docs/generate-chain-info - * - * @see {@link mainnetChains} - * - * @deprecated will be removed in the next version use `generate chain` https://graz.strange.love/docs/generate-chain-info - */ -export const mainnetChainsArray = [axelar, cosmoshub, juno, osmosis, sommelier]; - -/** - * Provided testnet chains - * - * @example - * ```ts - * import { connect, testnetChains } from "graz"; - * connect(testnetChains.osmosis); - * ``` - * - * @see {@link mainnetChains} - * - * @deprecated will be removed in the next version use `generate chain` https://graz.strange.love/docs/generate-chain-info - */ -export const testnetChains = defineChains({ - crescent: crescentTestnet, - juno: junoTestnet, - osmosis: osmosisTestnet, -}); - -/** - * Arary version on {@link testnetChains} - * - * @see {@link testnetChains} - * - * @deprecated will be removed in the next version use `generate chain` https://graz.strange.love/docs/generate-chain-info - */ -export const testnetChainsArray = [crescentTestnet, junoTestnet, osmosisTestnet]; diff --git a/packages/graz/src/chains/mainnet/axelar.ts b/packages/graz/src/chains/mainnet/axelar.ts deleted file mode 100644 index efd423ef..00000000 --- a/packages/graz/src/chains/mainnet/axelar.ts +++ /dev/null @@ -1,72 +0,0 @@ -import { Bech32Address } from "@keplr-wallet/cosmos"; -import type { AppCurrency, ChainInfo } from "@keplr-wallet/types"; - -const AXL: AppCurrency = { - coinDenom: "axl", - coinMinimalDenom: "uaxl", - coinDecimals: 6, - coinGeckoId: "axelar-network", - coinImageUrl: "https://raw.githubusercontent.com/cosmos/chain-registry/master/axelar/images/axl.png", -}; - -const USDC: AppCurrency = { - coinDenom: "usdc", - coinMinimalDenom: "uusdc", - coinDecimals: 6, - coinGeckoId: "usd-coin", - coinImageUrl: "https://raw.githubusercontent.com/cosmos/chain-registry/master/axelar/images/usdc.png", -}; - -const FRAX: AppCurrency = { - coinDenom: "dai", - coinMinimalDenom: "dai-wei", - coinDecimals: 18, - coinGeckoId: "dai", - coinImageUrl: "https://raw.githubusercontent.com/cosmos/chain-registry/master/axelar/images/dai.png", -}; - -const USDT: AppCurrency = { - coinDenom: "usdt", - coinMinimalDenom: "uusdt", - coinDecimals: 6, - coinGeckoId: "tether", - coinImageUrl: "https://raw.githubusercontent.com/cosmos/chain-registry/master/axelar/images/usdt.png", -}; - -const WETH: AppCurrency = { - coinDenom: "weth-wei", - coinMinimalDenom: "weth", - coinDecimals: 18, - coinGeckoId: "weth", - coinImageUrl: "https://raw.githubusercontent.com/cosmos/chain-registry/master/axelar/images/weth.png", -}; - -const WBTC: AppCurrency = { - coinDenom: "wbtc-satoshi", - coinMinimalDenom: "wbtc", - coinDecimals: 8, - coinGeckoId: "wrapped-bitcoin", - coinImageUrl: "https://raw.githubusercontent.com/cosmos/chain-registry/master/axelar/images/wbtc.png", -}; - -/** - * @see https://github.com/cosmos/chain-registry/blob/master/axelar/assetlist.json - */ -const currencies: AppCurrency[] = [AXL, USDC, FRAX, USDT, WETH, WBTC]; - -/** - * @see https://github.com/cosmos/chain-registry/blob/master/axelar/chain.json - */ -export const axelar: ChainInfo = { - rpc: "https://rpc.axelar.strange.love", - rest: "https://api.axelar.strange.love", - chainId: "axelar-dojo-1", - chainName: "Axelar", - stakeCurrency: AXL, - bip44: { - coinType: 118, - }, - bech32Config: Bech32Address.defaultBech32Config("axelar"), - currencies, - feeCurrencies: currencies, -}; diff --git a/packages/graz/src/chains/mainnet/cosmoshub.ts b/packages/graz/src/chains/mainnet/cosmoshub.ts deleted file mode 100644 index d9bafb61..00000000 --- a/packages/graz/src/chains/mainnet/cosmoshub.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { Bech32Address } from "@keplr-wallet/cosmos"; -import type { AppCurrency, ChainInfo } from "@keplr-wallet/types"; - -const ATOM: AppCurrency = { - coinDenom: "atom", - coinMinimalDenom: "uatom", - coinDecimals: 6, - coinGeckoId: "cosmos", - coinImageUrl: "https://raw.githubusercontent.com/cosmos/chain-registry/master/cosmoshub/images/atom.png", -}; - -/** - * @see https://github.com/cosmos/chain-registry/blob/master/cosmoshub/assetlist.json - */ -const currencies: AppCurrency[] = [ATOM]; - -/** - * @see https://github.com/cosmos/chain-registry/blob/master/cosmoshub/chain.json - */ -export const cosmoshub: ChainInfo = { - rpc: "https://rpc.cosmoshub.strange.love", - rest: "https://api.cosmoshub.strange.love", - chainId: "cosmoshub-4", - chainName: "Cosmos Hub", - stakeCurrency: ATOM, - bip44: { - coinType: 118, - }, - bech32Config: Bech32Address.defaultBech32Config("cosmos"), - currencies, - feeCurrencies: currencies, -}; diff --git a/packages/graz/src/chains/mainnet/juno.ts b/packages/graz/src/chains/mainnet/juno.ts deleted file mode 100644 index 04c7536f..00000000 --- a/packages/graz/src/chains/mainnet/juno.ts +++ /dev/null @@ -1,107 +0,0 @@ -import { Bech32Address } from "@keplr-wallet/cosmos"; -import type { AppCurrency, ChainInfo } from "@keplr-wallet/types"; - -const JUNO: AppCurrency = { - coinDenom: "juno", - coinMinimalDenom: "ujuno", - coinDecimals: 6, - coinGeckoId: "juno-network", - coinImageUrl: "https://raw.githubusercontent.com/cosmos/chain-registry/master/juno/images/juno.png", -}; - -const NETA: AppCurrency = { - coinDenom: "neta", - coinMinimalDenom: "cw20:juno168ctmpyppk90d34p3jjy658zf5a5l3w8wk35wht6ccqj4mr0yv8s4j5awr", - coinDecimals: 6, - coinGeckoId: "neta", - coinImageUrl: "https://raw.githubusercontent.com/cosmos/chain-registry/master/juno/images/neta.png", -}; - -const MARBLE: AppCurrency = { - coinDenom: "marble", - coinMinimalDenom: "cw20:juno1g2g7ucurum66d42g8k5twk34yegdq8c82858gz0tq2fc75zy7khssgnhjl", - coinDecimals: 3, - coinGeckoId: "marble", - coinImageUrl: "https://raw.githubusercontent.com/cosmos/chain-registry/master/juno/images/marble.png", -}; - -const HOPE: AppCurrency = { - coinDenom: "hope", - coinMinimalDenom: "cw20:juno1re3x67ppxap48ygndmrc7har2cnc7tcxtm9nplcas4v0gc3wnmvs3s807z", - coinDecimals: 6, - coinGeckoId: "hope-galaxy", - coinImageUrl: "https://raw.githubusercontent.com/cosmos/chain-registry/master/juno/images/hope.png", -}; - -const RAC: AppCurrency = { - coinDenom: "rac", - coinMinimalDenom: "cw20:juno1r4pzw8f9z0sypct5l9j906d47z998ulwvhvqe5xdwgy8wf84583sxwh0pa", - coinDecimals: 6, - coinGeckoId: "racoon", - coinImageUrl: "https://raw.githubusercontent.com/cosmos/chain-registry/master/juno/images/rac.png", -}; - -const BLOCK: AppCurrency = { - coinDenom: "block", - coinMinimalDenom: "cw20:juno1y9rf7ql6ffwkv02hsgd4yruz23pn4w97p75e2slsnkm0mnamhzysvqnxaq", - coinDecimals: 6, - coinImageUrl: "https://raw.githubusercontent.com/cosmos/chain-registry/master/juno/images/block.png", -}; - -const DHK: AppCurrency = { - coinDenom: "dhk", - coinMinimalDenom: "cw20:juno1tdjwrqmnztn2j3sj2ln9xnyps5hs48q3ddwjrz7jpv6mskappjys5czd49", - coinDecimals: 0, - coinImageUrl: "https://raw.githubusercontent.com/cosmos/chain-registry/master/juno/images/dhk.png", -}; - -const RAW: AppCurrency = { - coinDenom: "raw", - coinMinimalDenom: "cw20:juno15u3dt79t6sxxa3x3kpkhzsy56edaa5a66wvt3kxmukqjz2sx0hes5sn38g", - coinDecimals: 6, - coinImageUrl: "https://raw.githubusercontent.com/cosmos/chain-registry/master/juno/images/raw.png", - coinGeckoId: "junoswap-raw-dao", -}; - -const ASVT: AppCurrency = { - coinDenom: "asvt", - coinMinimalDenom: "cw20:juno17wzaxtfdw5em7lc94yed4ylgjme63eh73lm3lutp2rhcxttyvpwsypjm4w", - coinDecimals: 6, - coinImageUrl: "https://raw.githubusercontent.com/cosmos/chain-registry/master/juno/images/asvt.png", -}; - -const HNS: AppCurrency = { - coinDenom: "hns", - coinMinimalDenom: "cw20:juno1ur4jx0sxchdevahep7fwq28yk4tqsrhshdtylz46yka3uf6kky5qllqp4k", - coinDecimals: 6, - coinImageUrl: "https://raw.githubusercontent.com/cosmos/chain-registry/master/juno/images/hns.svg", -}; - -const JOE: AppCurrency = { - coinDenom: "joe", - coinMinimalDenom: "cw20:juno1n7n7d5088qlzlj37e9mgmkhx6dfgtvt02hqxq66lcap4dxnzdhwqfmgng3", - coinDecimals: 6, - coinImageUrl: "https://raw.githubusercontent.com/cosmos/chain-registry/master/juno/images/joe.png", -}; - -/** - * @see https://github.com/cosmos/chain-registry/blob/master/juno/assetlist.json - */ -const currencies: AppCurrency[] = [JUNO, NETA, MARBLE, HOPE, RAC, BLOCK, DHK, RAW, ASVT, HNS, JOE]; - -/** - * @see https://github.com/cosmos/chain-registry/blob/master/juno/chain.json - */ -export const juno: ChainInfo = { - rpc: "https://rpc.juno.strange.love", - rest: "https://api.juno.strange.love", - chainId: "juno-1", - chainName: "Juno", - stakeCurrency: JUNO, - bip44: { - coinType: 118, - }, - bech32Config: Bech32Address.defaultBech32Config("juno"), - currencies, - feeCurrencies: currencies, -}; diff --git a/packages/graz/src/chains/mainnet/osmosis.ts b/packages/graz/src/chains/mainnet/osmosis.ts deleted file mode 100644 index 7c8b0ced..00000000 --- a/packages/graz/src/chains/mainnet/osmosis.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { Bech32Address } from "@keplr-wallet/cosmos"; -import type { AppCurrency, ChainInfo } from "@keplr-wallet/types"; - -const OSMO: AppCurrency = { - coinDenom: "osmo", - coinMinimalDenom: "uosmo", - coinDecimals: 6, - coinGeckoId: "osmosis", - coinImageUrl: "https://raw.githubusercontent.com/cosmos/chain-registry/master/cosmoshub/images/atom.png", -}; - -const ION: AppCurrency = { - coinDenom: "ion", - coinMinimalDenom: "uion", - coinDecimals: 6, - coinGeckoId: "ion", - coinImageUrl: "https://raw.githubusercontent.com/cosmos/chain-registry/master/osmosis/images/ion.png", -}; - -/** - * @see https://github.com/cosmos/chain-registry/blob/master/osmosis/assetlist.json - */ -const currencies: AppCurrency[] = [OSMO, ION]; - -/** - * @see https://github.com/cosmos/chain-registry/blob/master/osmosis/chain.json - */ -export const osmosis: ChainInfo = { - rpc: "https://rpc.osmosis.strange.love", - rest: "https://api.osmosis.strange.love", - chainId: "osmosis-1", - chainName: "Osmosis", - stakeCurrency: OSMO, - bip44: { - coinType: 118, - }, - bech32Config: Bech32Address.defaultBech32Config("osmo"), - currencies, - feeCurrencies: currencies, -}; diff --git a/packages/graz/src/chains/mainnet/sommelier.ts b/packages/graz/src/chains/mainnet/sommelier.ts deleted file mode 100644 index fce73f3b..00000000 --- a/packages/graz/src/chains/mainnet/sommelier.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { Bech32Address } from "@keplr-wallet/cosmos"; -import type { AppCurrency, ChainInfo } from "@keplr-wallet/types"; - -const SOMM: AppCurrency = { - coinDenom: "somm", - coinMinimalDenom: "usomm", - coinDecimals: 6, - coinGeckoId: "sommelier", - coinImageUrl: "https://raw.githubusercontent.com/cosmos/chain-registry/master/sommelier/images/somm.png", -}; - -/** - * @see https://github.com/cosmos/chain-registry/blob/master/sommelier/assetlist.json - */ -const currencies: AppCurrency[] = [SOMM]; - -/** - * @see https://github.com/cosmos/chain-registry/blob/master/sommelier/chain.json - */ -export const sommelier: ChainInfo = { - rpc: "https://rpc.sommelier.strange.love", - rest: "https://api.sommelier.strange.love", - chainId: "sommelier-3", - chainName: "Sommelier", - stakeCurrency: SOMM, - bip44: { - coinType: 118, - }, - bech32Config: Bech32Address.defaultBech32Config("somm"), - currencies, - feeCurrencies: currencies, -}; diff --git a/packages/graz/src/chains/testnet/crescent.ts b/packages/graz/src/chains/testnet/crescent.ts deleted file mode 100644 index 23791786..00000000 --- a/packages/graz/src/chains/testnet/crescent.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { Bech32Address } from "@keplr-wallet/cosmos"; -import type { AppCurrency, ChainInfo } from "@keplr-wallet/types"; - -const CRE: AppCurrency = { - coinDenom: "CRE", - coinMinimalDenom: "ucre", - coinDecimals: 6, - coinGeckoId: "crescent", - coinImageUrl: "https://raw.githubusercontent.com/crescent-network/asset/main/images/coin/CRE.png", -}; - -const currencies: AppCurrency[] = [CRE]; - -export const crescentTestnet: ChainInfo = { - rpc: "https://testnet-endpoint.crescent.network/rpc/crescent", - rest: "https://testnet-endpoint.crescent.network/api/crescent", - chainId: "mooncat-1-1", - chainName: "Crescent Testnet", - bip44: { - coinType: 118, - }, - bech32Config: Bech32Address.defaultBech32Config("CRE"), - currencies, - feeCurrencies: currencies, - stakeCurrency: CRE, - coinType: 118, -}; diff --git a/packages/graz/src/chains/testnet/juno.ts b/packages/graz/src/chains/testnet/juno.ts deleted file mode 100644 index 8a366d43..00000000 --- a/packages/graz/src/chains/testnet/juno.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { Bech32Address } from "@keplr-wallet/cosmos"; -import type { AppCurrency, ChainInfo } from "@keplr-wallet/types"; - -const JUNO: AppCurrency = { - coinDenom: "junox", - coinMinimalDenom: "ujunox", - coinDecimals: 6, - coinGeckoId: "juno-network", - coinImageUrl: "https://raw.githubusercontent.com/cosmos/chain-registry/master/juno/images/juno.png", -}; - -const currencies: AppCurrency[] = [JUNO]; - -export const junoTestnet: ChainInfo = { - rpc: "https://rpc.uni.junonetwork.io", - rest: "https://api.uni.junonetwork.io", - chainId: "uni-5", - chainName: "Juno Testnet", - stakeCurrency: JUNO, - bip44: { - coinType: 118, - }, - bech32Config: Bech32Address.defaultBech32Config("juno"), - currencies, - feeCurrencies: [JUNO], - coinType: 118, -}; diff --git a/packages/graz/src/chains/testnet/osmosis.ts b/packages/graz/src/chains/testnet/osmosis.ts deleted file mode 100644 index 8b0659fe..00000000 --- a/packages/graz/src/chains/testnet/osmosis.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { Bech32Address } from "@keplr-wallet/cosmos"; -import type { AppCurrency, ChainInfo } from "@keplr-wallet/types"; - -const OSMO: AppCurrency = { - coinDenom: "osmo", - coinMinimalDenom: "uosmo", - coinDecimals: 6, - coinGeckoId: "osmosis", - coinImageUrl: "https://dhj8dql1kzq2v.cloudfront.net/white/osmo.png", -}; - -const currencies: AppCurrency[] = [OSMO]; - -export const osmosisTestnet: ChainInfo = { - rpc: "https://testnet-rpc.osmosis.zone", - rest: "https://testnet-rest.osmosis.zone", - chainId: "osmo-test-4", - chainName: "Osmosis Testnet", - stakeCurrency: OSMO, - bip44: { - coinType: 118, - }, - bech32Config: Bech32Address.defaultBech32Config("osmo"), - currencies, - feeCurrencies: [OSMO], - coinType: 118, -}; diff --git a/packages/graz/cli.mjs b/packages/graz/src/cli.mjs similarity index 93% rename from packages/graz/cli.mjs rename to packages/graz/src/cli.mjs index 94787855..b9bcec0e 100755 --- a/packages/graz/cli.mjs +++ b/packages/graz/src/cli.mjs @@ -2,13 +2,11 @@ // @ts-check import * as fs from "node:fs/promises"; import * as path from "node:path"; -import { fileURLToPath } from "node:url"; import { Bech32Address } from "@keplr-wallet/cosmos"; import arg from "arg"; import { createClient, createTestnetClient } from "cosmos-directory-client"; - -import pmap from "./compiled/p-map/index.mjs"; +import pmap from "p-map"; const isNumber = (char) => /^\d+$/.test(char); @@ -119,10 +117,10 @@ const generate = async () => { }; /** @param {string[]} args */ -const chainsDir = (...args) => path.resolve(path.dirname(fileURLToPath(import.meta.url)), "chains", ...args); +const chainsDir = (...args) => path.resolve(__dirname, "../chains", ...args); /** - * @param {Record} record + * @param {Record} record * @param {Record} opts */ const makeChainMap = (record, { testnet = false } = {}) => @@ -131,7 +129,7 @@ const makeChainMap = (record, { testnet = false } = {}) => .join("\n"); /** - * @param {Record} record + * @param {Record} record * @param {Record} opts */ const makeDefs = (record, { mjs = false, testnet = false } = {}) => @@ -144,7 +142,7 @@ const makeDefs = (record, { mjs = false, testnet = false } = {}) => .join(""); /** - * @param {Record} record + * @param {Record} record * @param {Record} opts */ const makeExports = (record, { testnet = false } = {}) => @@ -163,7 +161,7 @@ const makeRecord = async (client, { filter = "" } = {}) => { const chains = await pmap(paths, async (c) => client.fetchChain(c.path).then((x) => x.chain), { concurrency: 4 }); - /** @type {Record} */ + /** @type {Record} */ const record = {}; chains.forEach((chain) => { @@ -198,7 +196,6 @@ const makeRecord = async (client, { filter = "" } = {}) => { coinDecimals: asset.denom_units[asset.denom_units.length - 1].exponent, coinGeckoId: asset.coingecko_id, })), - path: chain.path, rest: apis.rest[0].address || "", rpc: apis.rpc[0].address || "", bech32Config: Bech32Address.defaultBech32Config(chain.bech32_prefix), diff --git a/packages/graz/src/cosmjs.ts b/packages/graz/src/cosmjs.ts deleted file mode 100644 index ec198d80..00000000 --- a/packages/graz/src/cosmjs.ts +++ /dev/null @@ -1,4 +0,0 @@ -export * from "@cosmjs/cosmwasm-stargate"; -export * from "@cosmjs/encoding"; -export * from "@cosmjs/proto-signing"; -export * from "@cosmjs/stargate"; diff --git a/packages/graz/src/hooks/account.ts b/packages/graz/src/hooks/account.ts index f8d72e3a..49e2ccd8 100644 --- a/packages/graz/src/hooks/account.ts +++ b/packages/graz/src/hooks/account.ts @@ -1,13 +1,18 @@ +import { fromBech32, toBech32 } from "@cosmjs/encoding"; import type { Coin } from "@cosmjs/proto-signing"; -import type { UseQueryResult } from "@tanstack/react-query"; +import type { Key } from "@keplr-wallet/types"; import { useMutation, useQuery } from "@tanstack/react-query"; import { useEffect, useMemo } from "react"; -import type { ConnectArgs, ConnectResult } from "../actions/account"; +import type { ConnectArgs, ConnectResult, OfflineSigners, ReconnectArgs } from "../actions/account"; import { connect, disconnect, getOfflineSigners, reconnect } from "../actions/account"; import { checkWallet } from "../actions/wallet"; import { useGrazInternalStore, useGrazSessionStore } from "../store"; -import type { MutationEventArgs } from "../types/hooks"; +import type { MutationEventArgs, QueryConfig, UseMultiChainQueryResult } from "../types/hooks"; +import type { WalletType } from "../types/wallet"; +import { isEmpty } from "../utils/isEmpty"; +import type { ChainId, MultiChainHookArgs } from "../utils/multi-chain"; +import { createMultiChainAsyncFunction, createMultiChainFunction, useChainsFromArgs } from "../utils/multi-chain"; import { useStargateClient } from "./clients"; import { useCheckWallet } from "./wallet"; @@ -15,6 +20,17 @@ export interface UseAccountArgs { onConnect?: (args: ConnectResult & { isReconnect: boolean }) => void; onDisconnect?: () => void; } +export interface UseAccountResult { + data?: TMulti["multiChain"] extends true ? Record : Key | undefined; + isConnected: boolean; + isConnecting: boolean; + isDisconnected: boolean; + isReconnecting: boolean; + isLoading: boolean; + reconnect: (args?: ReconnectArgs) => Promise; + status: string; + walletType?: WalletType; +} /** * graz query hook to retrieve account data with optional arguments to invoke @@ -25,8 +41,11 @@ export interface UseAccountArgs { * import { useAccount } from "graz"; * * // basic example - * const { data, isConnecting, isConnected, ... } = useAccount(); - * + * const { data:account, isConnecting, isConnected, ... } = useAccount(); + * account.bech32Address + * // multichain example + * const { data: accounts, isConnecting, isConnected, ... } = useAccount({ chainId: ["cosmoshub-4", "sommelier-3"], multiChain: true }); + * accounts['cosmoshub-4'].bech32Address * // with event arguments * useAccount({ * onConnect: ({ account, isReconnect }) => { ... }, @@ -34,8 +53,16 @@ export interface UseAccountArgs { * }); * ``` */ -export const useAccount = ({ onConnect, onDisconnect }: UseAccountArgs = {}) => { - const _account = useGrazSessionStore((x) => x.account); +export const useAccount = ( + args?: UseAccountArgs & TMulti, +): UseAccountResult => { + const walletType = useGrazInternalStore((x) => x.walletType); + const activeChainIds = useGrazSessionStore((x) => x.activeChainIds); + const activeChains = useChainsFromArgs({ + chainId: args?.chainId ? args.chainId : activeChainIds || undefined, + multiChain: args?.multiChain, + }); + const _account = useGrazSessionStore((x) => x.accounts); const status = useGrazSessionStore((x) => x.status); useEffect(() => { @@ -43,31 +70,42 @@ export const useAccount = ({ onConnect, onDisconnect }: UseAccountArgs = {}) => (x) => x.status, (stat, prevStat) => { if (stat === "connected") { - const { account, activeChain } = useGrazSessionStore.getState(); - const { walletType } = useGrazInternalStore.getState(); - onConnect?.({ - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - account: account!, - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - chain: activeChain!, - walletType, + const { accounts, activeChainIds: _activeChainIds } = useGrazSessionStore.getState(); + const { chains } = useGrazInternalStore.getState(); + const { walletType: _walletType } = useGrazInternalStore.getState(); + if (!accounts || !_activeChainIds || !chains) { + return args?.onDisconnect?.(); + } + args?.onConnect?.({ + accounts, + chains: _activeChainIds.map((id) => chains.find((x) => x.chainId === id)!), + walletType: _walletType, isReconnect: prevStat === "reconnecting", }); } if (stat === "disconnected") { - onDisconnect?.(); + args?.onDisconnect?.(); } }, ); - }, [onConnect, onDisconnect]); + }, [args]); + + const account = useMemo(() => { + return _account + ? createMultiChainFunction(Boolean(args?.multiChain), activeChains, (chain) => { + return _account[chain.chainId]; + }) + : undefined; + }, [_account, activeChains, args?.multiChain]); return { - data: _account, - isConnected: Boolean(_account), + data: account as UseAccountResult["data"], + isConnected: status === "connected", isConnecting: status === "connecting", isDisconnected: status === "disconnected", isReconnecting: status === "reconnecting", isLoading: status === "connecting" || status === "reconnecting", + walletType: status === "connected" ? walletType : undefined, reconnect, status, }; @@ -85,42 +123,60 @@ export const useAccount = ({ onConnect, onDisconnect }: UseAccountArgs = {}) => * // basic example * const { data, isFetching, refetch, ... } = useBalances(); * - * // with custom bech32 address - * useBalances("cosmos1kpzxx2lxg05xxn8mfygrerhmkj0ypn8edmu2pu"); + * // multichain example + * const { data:balances, isFetching, refetch, ... } = useBalances({chainId: ["cosmoshub-4", "sommelier-3"] multiChain: true}); + * const cosmoshubBalances = balances["cosmoshub-4"] + * * ``` */ -export const useBalances = (bech32Address?: string): UseQueryResult => { +export const useBalances = ( + args?: { bech32Address?: string } & TMulti & QueryConfig, +): UseMultiChainQueryResult => { + const chains = useChainsFromArgs({ chainId: args?.chainId, multiChain: args?.multiChain }); const { data: account } = useAccount(); - const { data: client } = useStargateClient(); - const { activeChain } = useGrazSessionStore.getState(); - const address = bech32Address || account?.bech32Address; + + const address = args?.bech32Address || account?.bech32Address; + const { data: clients } = useStargateClient({ + chainId: chains.map((x) => x.chainId), + multiChain: true, + enabled: (args?.enabled === undefined ? true : args.enabled) && Boolean(address), + }); const queryKey = useMemo( - () => ["USE_ALL_BALANCES", client, activeChain, address] as const, - [activeChain, address, client], + () => ["USE_ALL_BALANCES", clients, chains, address, args?.chainId] as const, + [address, args?.chainId, chains, clients], ); - const query = useQuery( + return useQuery( queryKey, - async ({ queryKey: [, _client, _activeChain, _address] }) => { - if (!_activeChain || !_client) { - throw new Error("No connected account detected"); - } + async ({ queryKey: [, _clients, _chains, _address] }) => { if (!_address) { throw new Error("address is not defined"); } - const balances = await _client.getAllBalances(_address); - return balances as Coin[]; + const res = await createMultiChainAsyncFunction(Boolean(args?.multiChain), _chains, async (_chain) => { + const stargateClient = _clients?.[_chain.chainId]; + if (!stargateClient) { + throw new Error(`Client is not ready ${_chain.chainId}`); + } + const balances = await stargateClient.getAllBalances( + toBech32(_chain.bech32Config.bech32PrefixAccAddr, fromBech32(_address).data), + ); + return balances as Coin[]; + }); + return res; }, { - enabled: Boolean(address) && Boolean(activeChain) && Boolean(client), + enabled: + Boolean(address) && + Boolean(chains) && + chains.length > 0 && + !isEmpty(clients) && + (args?.enabled === undefined ? true : args.enabled), refetchOnMount: false, refetchOnReconnect: true, refetchOnWindowFocus: false, }, ); - - return query; }; /** @@ -134,35 +190,48 @@ export const useBalances = (bech32Address?: string): UseQueryResult => { * import { useBalance } from "graz"; * * // basic example - * const { data, isFetching, refetch, ... } = useBalance("atom"); + * const { data, isFetching, refetch, ... } = useBalance({denom: "atom"}); * * // with custom bech32 address * useBalance("atom", "cosmos1kpzxx2lxg05xxn8mfygrerhmkj0ypn8edmu2pu"); * ``` */ -export const useBalance = (denom: string, bech32Address?: string): UseQueryResult => { - const { data: account } = useAccount(); - const address = bech32Address || account?.bech32Address; - const { data: balances, refetch: _refetch } = useBalances(address); +export const useBalance = ( + args: { + denom: string; + bech32Address?: string; + } & { chainId: ChainId } & QueryConfig, +): UseMultiChainQueryResult => { + const chains = useChainsFromArgs({ chainId: args.chainId }); + const { data: account } = useAccount({ + chainId: args.chainId, + }); + const address = args.bech32Address || account?.bech32Address; + const { data: balances, refetch: _refetch } = useBalances({ + chainId: chains.map((x) => x.chainId), + bech32Address: address, + enabled: Boolean(address) && (args.enabled === undefined ? true : args.enabled), + }); + + const queryKey = ["USE_BALANCE", args.denom, balances, chains, address, args.chainId] as const; - const queryKey = ["USE_BALANCE", balances, denom, bech32Address] as const; const query = useQuery( queryKey, - ({ queryKey: [, _balances] }) => { - return _balances?.find((x) => x.denom === denom); + ({ queryKey: [, _denom, _balances] }) => { + return _balances?.find((x) => x.denom === _denom); }, { - enabled: Boolean(balances), + enabled: Boolean(balances) && Boolean(balances?.length) && (args.enabled === undefined ? true : args.enabled), }, ); return { ...query, - refetch: async () => { + refetch: async (options) => { await _refetch(); - return query.refetch(); + return query.refetch(options); }, - }; + } as UseMultiChainQueryResult; }; export type UseConnectChainArgs = MutationEventArgs; @@ -253,8 +322,8 @@ export const useDisconnect = ({ onError, onLoading, onSuccess }: MutationEventAr }); return { - disconnect: (forget?: boolean) => mutation.mutate(forget), - disconnectAsync: (forget?: boolean) => mutation.mutateAsync(forget), + disconnect: (args?: { chainId?: ChainId }) => mutation.mutate(args), + disconnectAsync: (args?: { chainId?: ChainId }) => mutation.mutateAsync(args), error: mutation.error, isLoading: mutation.isLoading, isSuccess: mutation.isSuccess, @@ -269,30 +338,42 @@ export const useDisconnect = ({ onError, onLoading, onSuccess }: MutationEventAr * * @example * ```ts + * + * // basic example * import { useOfflineSigners } from "graz"; * const { offlineSigner, offlineSignerAmino, offlineSignerAuto } = useOfflineSigners(); + * + * // multichain example + * const offlineSigners = useOfflineSigners({chainId: ["cosmoshub-4", "sommelier-3"] multiChain: true}); + * const cosmoshubOfflineSigners = offlineSigners["cosmoshub-4"] + * * ``` */ -export const useOfflineSigners = () => { - const chain = useGrazSessionStore((x) => x.activeChain); +export const useOfflineSigners = ( + args?: TMulti, +): UseMultiChainQueryResult => { + const chains = useChainsFromArgs({ chainId: args?.chainId, multiChain: args?.multiChain }); const wallet = useGrazInternalStore((x) => x.walletType); - const queryKey = useMemo(() => ["USE_OFFLINE_SIGNERS", chain, wallet] as const, [chain, wallet]); + const queryKey = useMemo(() => ["USE_OFFLINE_SIGNERS", chains, wallet] as const, [chains, wallet]); return useQuery({ queryKey, - queryFn: async ({ queryKey: [, _chain, _wallet] }) => { - if (!_chain) throw new Error("No chain found"); + queryFn: async ({ queryKey: [, _chains, _wallet] }) => { + if (_chains.length < 1) throw new Error("No chain found"); const isWalletAvailable = checkWallet(_wallet); if (!isWalletAvailable) { throw new Error(`${_wallet} is not available`); } - const offlineSigners = await getOfflineSigners({ - chainId: _chain.chainId, - walletType: _wallet, + const res = await createMultiChainAsyncFunction(Boolean(args?.multiChain), _chains, async (_chain) => { + const offlineSigners = await getOfflineSigners({ + chainId: _chain.chainId, + walletType: _wallet, + }); + return offlineSigners; }); - return offlineSigners; + return res; }, - enabled: Boolean(chain) && Boolean(wallet), + enabled: Boolean(chains) && chains.length > 0 && Boolean(wallet), refetchOnWindowFocus: false, }); }; @@ -309,40 +390,47 @@ export const useOfflineSigners = () => { * // basic example * const { data, isFetching, refetch, ... } = useBalanceStaked(); * + * // multichain example + * const { data:balanceStaked, isFetching, refetch, ... } = useBalanceStaked({chainId: ["cosmoshub-4", "sommelier-3"] multiChain: true}); + * const cosmoshubBalanceStaked = balances["cosmoshub-4"] + * * // with custom bech32 address - * useBalanceStaked("cosmos1kpzxx2lxg05xxn8mfygrerhmkj0ypn8edmu2pu"); + * useBalanceStaked({ bech32Address: "cosmos1kpzxx2lxg05xxn8mfygrerhmkj0ypn8edmu2pu"}); * ``` */ -export const useBalanceStaked = (bech32Address?: string): UseQueryResult => { +export const useBalanceStaked = ( + args?: { bech32Address?: string } & TMulti, +): UseMultiChainQueryResult => { + const chains = useChainsFromArgs({ chainId: args?.chainId, multiChain: args?.multiChain }); const { data: account } = useAccount(); - const { data: client } = useStargateClient(); - const { activeChain } = useGrazSessionStore.getState(); - const address = bech32Address || account?.bech32Address; + const { data: client } = useStargateClient({ + chainId: chains.map((x) => x.chainId), + multiChain: true, + }); + const address = args?.bech32Address || account?.bech32Address; - const queryKey = useMemo( - () => ["USE_BALANCE_STAKED", client, activeChain, address] as const, - [activeChain, address, client], - ); + const queryKey = useMemo(() => ["USE_BALANCE_STAKED", client, chains, address] as const, [chains, address, client]); - const query = useQuery( + return useQuery( queryKey, - async ({ queryKey: [, _client, _activeChain, _address] }) => { - if (!_activeChain || !_client) { - throw new Error("No connected account detected"); - } + async ({ queryKey: [, _client, _chains, _address] }) => { if (!_address) { throw new Error("address is not defined"); } - const balance = await _client.getBalanceStaked(_address); - return balance; + const res = await createMultiChainAsyncFunction(Boolean(args?.multiChain), _chains, async (_chain) => { + if (!_client) throw new Error("Client is not ready"); + const balance = await _client[_chain.chainId]?.getBalanceStaked( + toBech32(_chain.bech32Config.bech32PrefixAccAddr, fromBech32(_address).data), + ); + return balance; + }); + return res; }, { - enabled: Boolean(address) && Boolean(activeChain) && Boolean(client), + enabled: Boolean(address) && Boolean(chains) && chains.length > 0 && Boolean(client), refetchOnMount: false, refetchOnReconnect: true, refetchOnWindowFocus: false, }, ); - - return query; }; diff --git a/packages/graz/src/hooks/chains.ts b/packages/graz/src/hooks/chains.ts index d7fa3dbb..d62c4f5e 100644 --- a/packages/graz/src/hooks/chains.ts +++ b/packages/graz/src/hooks/chains.ts @@ -6,40 +6,64 @@ import { useMutation, useQuery } from "@tanstack/react-query"; import type { QueryValidatorsResponse } from "cosmjs-types/cosmos/staking/v1beta1/query"; import type { ConnectResult } from "../actions/account"; -import type { SuggestChainAndConnectArgs, SuggestChainArgs } from "../actions/chains"; -import { clearRecentChain, getActiveChainCurrency, suggestChain, suggestChainAndConnect } from "../actions/chains"; -import type { GrazChain } from "../chains"; +import type { SuggestChainAndConnectArgs } from "../actions/chains"; +import { clearRecentChain, suggestChain, suggestChainAndConnect } from "../actions/chains"; import { useGrazInternalStore, useGrazSessionStore } from "../store"; import type { MutationEventArgs } from "../types/hooks"; import { useCheckWallet } from "./wallet"; /** - * graz hook to retrieve connected account's active chain + * graz hook to retrieve connected account's active chainIds * * @example * ```ts - * import { useActiveChain } from "graz"; - * const { rpc, rest, chainId, currencies } = useActiveChain(); + * import { useActiveChainIds } from "graz"; + * const activeChainIds = useActiveChainIds(); * ``` */ -export const useActiveChain = (): GrazChain | null => { - return useGrazSessionStore((x) => x.activeChain); +export const useActiveChainIds = (): string[] | null => { + return useGrazSessionStore((x) => x.activeChainIds); }; /** - * graz hook to retrieve specific connected account's currency + * graz hook to retrieve connected account's active chains + * + * @example + * ```ts + * import { useActiveChains } from "graz"; + * const activeChains = useActiveChains(); + * const { rpc, rest, chainId, currencies } = activeChains[0]; + * ``` + */ +export const useActiveChains = (): ChainInfo[] | undefined => { + return useGrazSessionStore((x) => x.activeChainIds) + ?.map((chainId) => { + const chain = useGrazInternalStore.getState().chains?.find((x) => x.chainId === chainId); + if (!chain) return; + return chain; + }) + .filter(Boolean) as ChainInfo[] | undefined; +}; + +/** + * graz hook to retrieve specific connected chains currency * * @param denom - Currency denom to search * * @example * ```ts * import { useActiveChainCurrency } from "graz"; - * const { data: currency, ... } = useActiveChainCurrency("juno"); + * const { data: currency, ... } = useActiveChainCurrency({denom: "juno"}); * ``` */ -export const useActiveChainCurrency = (denom: string): UseQueryResult => { +export const useActiveChainCurrency = ({ denom }: { denom: string }): UseQueryResult => { + const chains = useActiveChains(); const queryKey = ["USE_ACTIVE_CHAIN_CURRENCY", denom] as const; - const query = useQuery(queryKey, ({ queryKey: [, _denom] }) => getActiveChainCurrency(_denom)); + const query = useQuery( + queryKey, + ({ queryKey: [, _denom] }) => + chains?.find((c) => c.currencies.find((x) => x.coinMinimalDenom === _denom))?.currencies.find((x) => x), + ); return query; }; @@ -58,11 +82,12 @@ export const useActiveChainCurrency = (denom: string): UseQueryResult( - queryClient: T | undefined, - status: BondStatusString = "BOND_STATUS_BONDED", -): UseQueryResult => { - const queryKey = ["USE_ACTIVE_CHAIN_VALIDATORS", queryClient, status] as const; +export const useQueryClientValidators = (args: { + queryClient: T | undefined; + status?: BondStatusString; +}): UseQueryResult => { + const status = args.status ?? "BOND_STATUS_BONDED"; + const queryKey = ["USE_ACTIVE_CHAIN_VALIDATORS", args.queryClient, status] as const; const query = useQuery( queryKey, async ({ queryKey: [, _queryClient, _status] }) => { @@ -71,34 +96,58 @@ export const useActiveChainValidators = { - const recentChain = useGrazInternalStore((x) => x.recentChain); +export const useRecentChainIds = () => { + const recentChain = useGrazInternalStore((x) => x.recentChainIds); return { data: recentChain, clear: clearRecentChain }; }; -export type UseSuggestChainArgs = MutationEventArgs; +/** + * graz hook to retrieve last connected chains + * + * @example + * ```ts + * import { useRecentChains, connect, mainnetChains } from "graz"; + * + * const recentChains = useRecentChains(); + * const { rpc, rest, chainId, currencies } = activeChains[0]; + * ``` + * + * @see {@link useActiveChains} + */ +export const useRecentChains = () => { + const data = useGrazInternalStore((x) => x.recentChainIds) + ?.map((chainId) => { + const chain = useGrazInternalStore.getState().chains?.find((x) => x.chainId === chainId); + if (!chain) return; + return chain; + }) + .filter(Boolean) as ChainInfo[] | undefined; + return { data, clear: clearRecentChain }; +}; + +export type UseSuggestChainArgs = MutationEventArgs; /** * graz mutation hook to suggest chain to a Wallet @@ -119,8 +168,8 @@ export type UseSuggestChainArgs = MutationEventArgs export const useSuggestChain = ({ onError, onLoading, onSuccess }: UseSuggestChainArgs = {}) => { const queryKey = ["USE_SUGGEST_CHAIN", onError, onLoading, onSuccess]; const mutation = useMutation(queryKey, suggestChain, { - onError: (err, chainInfo) => Promise.resolve(onError?.(err, chainInfo)), - onMutate: onLoading, + onError: (err, args) => Promise.resolve(onError?.(err, args.chainInfo)), + onMutate: (data) => onLoading?.(data.chainInfo), onSuccess: (chainInfo) => Promise.resolve(onSuccess?.(chainInfo)), }); diff --git a/packages/graz/src/hooks/clients.ts b/packages/graz/src/hooks/clients.ts index f93017e7..5f14f3b4 100644 --- a/packages/graz/src/hooks/clients.ts +++ b/packages/graz/src/hooks/clients.ts @@ -2,11 +2,13 @@ import { CosmWasmClient } from "@cosmjs/cosmwasm-stargate"; import type { HttpEndpoint } from "@cosmjs/stargate"; import { StargateClient } from "@cosmjs/stargate"; import { Tendermint34Client, Tendermint37Client } from "@cosmjs/tendermint-rpc"; -import type { UseQueryResult } from "@tanstack/react-query"; import { useQuery } from "@tanstack/react-query"; import { useMemo } from "react"; -import { useGrazSessionStore } from "../store"; +import { useGrazInternalStore } from "../store"; +import type { QueryConfig, UseMultiChainQueryResult } from "../types/hooks"; +import type { MultiChainHookArgs } from "../utils/multi-chain"; +import { createMultiChainAsyncFunction, useChainsFromArgs } from "../utils/multi-chain"; /** * graz query hook to retrieve a StargateClient. @@ -15,25 +17,35 @@ import { useGrazSessionStore } from "../store"; * ```ts * import { useStargateClient } from "graz"; * + * // single chain * const { data:client, isFetching, refetch, ... } = useStargateClient(); + * await client.getAccount("address") * - * client.getAccount("address") + * // multi chain + * const { data:clients, isFetching, refetch, ... } = useStargateClient({multiChain: true, chainId: ["cosmoshub-4", "sommelier-3"]}); + * await clients["cosmoshub-4"].getAccount("address") * * ``` */ -export const useStargateClient = () => { - const chain = useGrazSessionStore((x) => x.activeChain); - const queryKey = useMemo(() => ["USE_STARGATE_CLIENT", chain] as const, [chain]); +export const useStargateClient = ( + args?: TMulti & QueryConfig, +): UseMultiChainQueryResult => { + const chains = useChainsFromArgs({ chainId: args?.chainId, multiChain: args?.multiChain }); + const queryKey = useMemo(() => ["USE_STARGATE_CLIENT", chains] as const, [chains]); return useQuery({ queryKey, - queryFn: async ({ queryKey: [, _chain] }) => { - if (!_chain) throw new Error("No chain found"); - const endpoint: HttpEndpoint = { url: _chain.rpc, headers: { ...(_chain.rpcHeaders || {}) } }; - const client = await StargateClient.connect(endpoint); - return client; + queryFn: async ({ queryKey: [, _chains] }) => { + if (_chains.length < 1) throw new Error("No chains found"); + const res = await createMultiChainAsyncFunction(Boolean(args?.multiChain), _chains, async (_chain) => { + const chainConfig = useGrazInternalStore.getState().chainsConfig?.[_chain.chainId]; + const endpoint: HttpEndpoint = { url: _chain.rpc, headers: { ...(chainConfig?.rpcHeaders || {}) } }; + const client = await StargateClient.connect(endpoint); + return client; + }); + return res; }, - enabled: Boolean(chain), + enabled: Boolean(chains) && chains.length > 0 && (args?.enabled !== undefined ? Boolean(args.enabled) : true), refetchOnWindowFocus: false, }); }; @@ -45,25 +57,35 @@ export const useStargateClient = () => { * ```ts * import { useCosmWasmClient } from "graz"; * + * //single chain * const { data:client, isFetching, refetch, ... } = useCosmWasmClient(); + * await client.getAccount("address") * - * client.getAccount("address") + * // multi chain + * const { data:clients, isFetching, refetch, ... } = useCosmWasmClient({multiChain: true, chainId: ["cosmoshub-4", "sommelier-3"]}); + * await clients["cosmoshub-4"].getAccount("address") * * ``` */ -export const useCosmWasmClient = () => { - const chain = useGrazSessionStore((x) => x.activeChain); - const queryKey = useMemo(() => ["USE_COSMWASM_CLIENT", chain] as const, [chain]); +export const useCosmWasmClient = ( + args?: TMulti & QueryConfig, +): UseMultiChainQueryResult => { + const chains = useChainsFromArgs({ chainId: args?.chainId, multiChain: args?.multiChain }); + const queryKey = useMemo(() => ["USE_COSMWASM_CLIENT", chains] as const, [chains]); return useQuery({ queryKey, - queryFn: async ({ queryKey: [, _chain] }) => { - if (!_chain) throw new Error("No chain found"); - const endpoint: HttpEndpoint = { url: _chain.rpc, headers: { ...(_chain.rpcHeaders || {}) } }; - const client = await CosmWasmClient.connect(endpoint); - return client; + queryFn: async ({ queryKey: [, _chains] }) => { + if (_chains.length < 1) throw new Error("No chains found"); + const res = await createMultiChainAsyncFunction(Boolean(args?.multiChain), _chains, async (_chain) => { + const chainConfig = useGrazInternalStore.getState().chainsConfig?.[_chain.chainId]; + const endpoint: HttpEndpoint = { url: _chain.rpc, headers: { ...(chainConfig?.rpcHeaders || {}) } }; + const client = await CosmWasmClient.connect(endpoint); + return client; + }); + return res; }, - enabled: Boolean(chain), + enabled: Boolean(chains) && chains.length > 0 && (args?.enabled !== undefined ? Boolean(args.enabled) : true), refetchOnWindowFocus: false, }); }; @@ -73,30 +95,43 @@ export const useCosmWasmClient = () => { * * @example * ```ts - * import { useCosmWasmClient } from "graz"; - * - * const { data:client, isFetching, refetch, ... } = useTendermintClient("tm37"); + * import { useTendermintClient } from "graz"; * - * client.getAccount("address") + * //single chain + * const { data:client, isFetching, refetch, ... } = useTendermintClient({type: "tm37"}); + * await client.getAccount("address") * + * // multi chain + * const { data:clients, isFetching, refetch, ... } = useTendermintClient({type: "tm34", multiChain: true, chainId: ["cosmoshub-4", "sommelier-3"]}); + * await clients["cosmoshub-4"].getAccount("address") * ``` */ -export const useTendermintClient = ( - type: T, -): UseQueryResult => { - const chain = useGrazSessionStore((x) => x.activeChain); - const queryKey = useMemo(() => ["USE_TENDERMINT_CLIENT", type, chain] as const, [type, chain]); +export const useTendermintClient = ({ + type, + chainId, + multiChain, + enabled, +}: { + type: T; +} & TMulti & + QueryConfig): UseMultiChainQueryResult => { + const chains = useChainsFromArgs({ chainId, multiChain }); + const queryKey = useMemo(() => ["USE_TENDERMINT_CLIENT", type, chains] as const, [type, chains]); return useQuery({ queryKey, - queryFn: async ({ queryKey: [, _type, _chain] }) => { - if (!_chain) throw new Error("No chain found"); - const endpoint: HttpEndpoint = { url: _chain.rpc, headers: { ...(_chain.rpcHeaders || {}) } }; - const TendermintClient = _type === "tm37" ? Tendermint37Client : Tendermint34Client; - const client = await TendermintClient.connect(endpoint); - return client; + queryFn: async ({ queryKey: [, _type, _chains] }) => { + if (_chains.length < 1) throw new Error("No chains found"); + const res = await createMultiChainAsyncFunction(Boolean(multiChain), _chains, async (_chain) => { + const chainConfig = useGrazInternalStore.getState().chainsConfig?.[_chain.chainId]; + const endpoint: HttpEndpoint = { url: _chain.rpc, headers: { ...(chainConfig?.rpcHeaders || {}) } }; + const TendermintClient = _type === "tm37" ? Tendermint37Client : Tendermint34Client; + const client = await TendermintClient.connect(endpoint); + return client; + }); + return res; }, - enabled: Boolean(chain), + enabled: Boolean(chains) && chains.length > 0 && (enabled !== undefined ? Boolean(enabled) : true), refetchOnWindowFocus: false, }); }; diff --git a/packages/graz/src/hooks/methods.ts b/packages/graz/src/hooks/methods.ts index eb02d583..526e2179 100644 --- a/packages/graz/src/hooks/methods.ts +++ b/packages/graz/src/hooks/methods.ts @@ -270,19 +270,19 @@ export const useExecuteContract = >({ * @param queryMsg - The query message to send to the contract * @returns A query result with the result returned by the smart contract. */ -export const useQuerySmart = ( - address?: string, - queryMsg?: Record, -): UseQueryResult => { +export const useQuerySmart = (args?: { + address?: string; + queryMsg?: Record; +}): UseQueryResult => { const { data: client } = useCosmWasmClient(); const query: UseQueryResult = useQuery( - ["USE_QUERY_SMART", address, queryMsg, client], + ["USE_QUERY_SMART", args?.address, args?.queryMsg, client], ({ queryKey: [, _address] }) => { - if (!address || !queryMsg) throw new Error("address or queryMsg undefined"); - return getQuerySmart(address, queryMsg, client); + if (!args?.address || !args.queryMsg) throw new Error("address or queryMsg undefined"); + return getQuerySmart(args.address, args.queryMsg, client); }, { - enabled: Boolean(address) && Boolean(queryMsg) && Boolean(client), + enabled: Boolean(args?.address) && Boolean(args?.queryMsg) && Boolean(client), }, ); @@ -296,17 +296,20 @@ export const useQuerySmart = ( * @param key - The key to lookup in the contract storage * @returns A query result with raw byte array stored at the key queried. */ -export const useQueryRaw = (address?: string, key?: string): UseQueryResult => { +export const useQueryRaw = (args?: { + address?: string; + key?: string; +}): UseQueryResult => { const { data: client } = useCosmWasmClient(); - const queryKey = ["USE_QUERY_RAW", key, address, client] as const; + const queryKey = ["USE_QUERY_RAW", args?.key, args?.address, client] as const; const query: UseQueryResult = useQuery( queryKey, ({ queryKey: [, _address] }) => { - if (!address || !key) throw new Error("address or key undefined"); - return getQueryRaw(address, key, client); + if (!args?.address || !args.key) throw new Error("address or key undefined"); + return getQueryRaw(args.address, args.key, client); }, { - enabled: Boolean(address) && Boolean(key) && Boolean(client), + enabled: Boolean(args?.address) && Boolean(args?.key) && Boolean(client), }, ); diff --git a/packages/graz/src/hooks/signingClients.ts b/packages/graz/src/hooks/signingClients.ts index b5467878..4ea3f121 100644 --- a/packages/graz/src/hooks/signingClients.ts +++ b/packages/graz/src/hooks/signingClients.ts @@ -2,14 +2,40 @@ import type { SigningCosmWasmClientOptions } from "@cosmjs/cosmwasm-stargate"; import { SigningCosmWasmClient } from "@cosmjs/cosmwasm-stargate"; import type { SigningStargateClientOptions } from "@cosmjs/stargate"; import { GasPrice, SigningStargateClient } from "@cosmjs/stargate"; -import type { HttpEndpoint } from "@cosmjs/tendermint-rpc"; +import type { HttpEndpoint, TendermintClient } from "@cosmjs/tendermint-rpc"; +import type { UseQueryResult } from "@tanstack/react-query"; import { useQuery } from "@tanstack/react-query"; import { useMemo } from "react"; import { checkWallet, getWallet } from "../actions/wallet"; import { useGrazInternalStore, useGrazSessionStore } from "../store"; +import type { QueryConfig } from "../types/hooks"; +import { isEmpty } from "../utils/isEmpty"; +import { type ChainId, createMultiChainAsyncFunction, useChainsFromArgs } from "../utils/multi-chain"; import { useTendermintClient } from "./clients"; +interface SiginingClientSinglechainArgs { + multiChain?: false; + opts?: Record; +} + +interface SiginingClientMultichainArgs { + multiChain?: true; + opts?: Record; +} + +type Args = SiginingClientSinglechainArgs | SiginingClientMultichainArgs; + +interface BaseSigningClientArgs extends QueryConfig { + chainId?: ChainId; + offlineSigner?: "offlineSigner" | "offlineSignerAuto" | "offlineSignerOnlyAmino"; +} +export function useStargateSigningClient( + args?: BaseSigningClientArgs & SiginingClientSinglechainArgs, +): UseQueryResult; +export function useStargateSigningClient( + args?: BaseSigningClientArgs & SiginingClientMultichainArgs, +): UseQueryResult>; /** * graz query hook to retrieve a SigningStargateClient. * @@ -17,103 +43,164 @@ import { useTendermintClient } from "./clients"; * ```ts * import { useStargateSigningClient } from "graz"; * + * // single chain * const { data:signingClient, isFetching, refetch, ... } = useStargateSigningClient(); + * await signingClient.getAccount("address") * - * signingClient.getAccount("address") + * // multi chain + * const { data:signingClients, isFetching, refetch, ... } = useStargateSigningClient({multiChain: true, chainId: ["cosmoshub-4", "sommelier-3"]}); + * await signingClients["cosmoshub-4"].getAccount("address") * * ``` */ -export const useStargateSigningClient = (args?: { - opts?: SigningStargateClientOptions; - offlineSigner?: "offlineSigner" | "offlineSignerAuto" | "offlineSignerOnlyAmino"; -}) => { - const chain = useGrazSessionStore((x) => x.activeChain); +// eslint-disable-next-line prefer-arrow-functions/prefer-arrow-functions +export function useStargateSigningClient( + args?: BaseSigningClientArgs & Args, +): UseQueryResult> { + const chains = useChainsFromArgs({ chainId: args?.chainId, multiChain: args?.multiChain }); const wallet = useGrazInternalStore((x) => x.walletType); - const queryKey = useMemo(() => ["USE_STARGATE_SIGNING_CLIENT", chain, wallet, args] as const, [args, chain, wallet]); + const activeChainIds = useGrazSessionStore((x) => x.activeChainIds); + const queryKey = useMemo( + () => ["USE_STARGATE_SIGNING_CLIENT", chains, wallet, args, activeChainIds] as const, + [activeChainIds, args, chains, wallet], + ); return useQuery({ queryKey, - queryFn: async ({ queryKey: [, _chain, _wallet, _args] }) => { - if (!_chain) throw new Error("No chain found"); - const isWalletAvailable = checkWallet(_wallet); - if (!isWalletAvailable) { - throw new Error(`${_wallet} is not available`); - } - const offlineSigner = await (async () => { - switch (args?.offlineSigner) { - case "offlineSigner": - return getWallet(_wallet).getOfflineSigner(_chain.chainId); - case "offlineSignerAuto": - return getWallet(_wallet).getOfflineSignerAuto(_chain.chainId); - case "offlineSignerOnlyAmino": - return getWallet(_wallet).getOfflineSignerOnlyAmino(_chain.chainId); - default: - return getWallet(_wallet).getOfflineSignerAuto(_chain.chainId); + queryFn: async ({ queryKey: [, _chains, _wallet] }) => { + if (_chains.length < 1) throw new Error("No chains found"); + const res = await createMultiChainAsyncFunction(Boolean(args?.multiChain), _chains, async (_chain) => { + // Chain is not connected return undefined + if (!activeChainIds?.includes(_chain.chainId)) return undefined; + const isWalletAvailable = checkWallet(_wallet); + if (!isWalletAvailable) { + throw new Error(`${_wallet} is not available`); + } + const offlineSigner = await (async () => { + switch (args?.offlineSigner) { + case "offlineSigner": + return getWallet(_wallet).getOfflineSigner(_chain.chainId); + case "offlineSignerAuto": + return getWallet(_wallet).getOfflineSignerAuto(_chain.chainId); + case "offlineSignerOnlyAmino": + return getWallet(_wallet).getOfflineSignerOnlyAmino(_chain.chainId); + default: + return getWallet(_wallet).getOfflineSignerAuto(_chain.chainId); + } + })(); + const chainConfig = useGrazInternalStore.getState().chainsConfig?.[_chain.chainId]; + const endpoint: HttpEndpoint = { url: _chain.rpc, headers: { ...(chainConfig?.rpcHeaders || {}) } }; + if (args?.multiChain === true) { + args.opts; } - })(); - const endpoint: HttpEndpoint = { url: _chain.rpc, headers: { ...(_chain.rpcHeaders || {}) } }; - const signingClient = await SigningStargateClient.connectWithSigner(endpoint, offlineSigner, _args?.opts); - return signingClient; + const signingClient = await SigningStargateClient.connectWithSigner( + endpoint, + offlineSigner, + args?.multiChain ? args.opts?.[_chain.chainId] : args?.opts, + ); + return signingClient; + }); + return res; }, - enabled: Boolean(chain) && Boolean(wallet), + enabled: + Boolean(chains) && + chains.length > 0 && + Boolean(wallet) && + (args?.enabled !== undefined ? Boolean(args.enabled) : true), refetchOnWindowFocus: false, }); -}; +} +export function useCosmWasmSigningClient( + args?: BaseSigningClientArgs & SiginingClientSinglechainArgs, +): UseQueryResult; +export function useCosmWasmSigningClient( + args?: BaseSigningClientArgs & SiginingClientMultichainArgs, +): UseQueryResult>; /** * graz query hook to retrieve a SigningCosmWasmClient. * * @example * ```ts * import { useCosmWasmSigningClient } from "graz"; - * + * // single chain * const { data:signingClient, isFetching, refetch, ... } = useCosmWasmSigningClient(); + * await signingClient.getAccount("address") * - * signingClient.getAccount("address") - * + * // multi chain + * const { data:signingClients, isFetching, refetch, ... } = useCosmWasmSigningClient({multiChain: true, chainId: ["cosmoshub-4", "sommelier-3"]}); + * await signingClients["cosmoshub-4"].getAccount("address") * ``` */ -export const useCosmWasmSigningClient = (args?: { - opts?: SigningCosmWasmClientOptions; - offlineSigner?: "offlineSigner" | "offlineSignerAuto" | "offlineSignerOnlyAmino"; -}) => { - const chain = useGrazSessionStore((x) => x.activeChain); +// eslint-disable-next-line prefer-arrow-functions/prefer-arrow-functions +export function useCosmWasmSigningClient( + args?: BaseSigningClientArgs & Args, +): UseQueryResult> { + const chains = useChainsFromArgs({ chainId: args?.chainId, multiChain: args?.multiChain }); const wallet = useGrazInternalStore((x) => x.walletType); - const queryKey = useMemo(() => ["USE_COSMWASM_SIGNING_CLIENT", chain, wallet, args] as const, [args, chain, wallet]); + const activeChainIds = useGrazSessionStore((x) => x.activeChainIds); + const queryKey = useMemo( + () => ["USE_COSMWASM_SIGNING_CLIENT", chains, wallet, args, activeChainIds] as const, + [activeChainIds, args, chains, wallet], + ); return useQuery({ queryKey, - queryFn: async ({ queryKey: [, _chain, _wallet, _args] }) => { - if (!_chain) throw new Error("No chain found"); - const isWalletAvailable = checkWallet(_wallet); - if (!isWalletAvailable) { - throw new Error(`${_wallet} is not available`); - } - const offlineSigner = await (async () => { - switch (args?.offlineSigner) { - case "offlineSigner": - return getWallet(_wallet).getOfflineSigner(_chain.chainId); - case "offlineSignerAuto": - return getWallet(_wallet).getOfflineSignerAuto(_chain.chainId); - case "offlineSignerOnlyAmino": - return getWallet(_wallet).getOfflineSignerOnlyAmino(_chain.chainId); - default: - return getWallet(_wallet).getOfflineSignerAuto(_chain.chainId); + queryFn: async ({ queryKey: [, _chains, _wallet] }) => { + if (_chains.length < 1) throw new Error("No chains found"); + const res = await createMultiChainAsyncFunction(Boolean(args?.multiChain), _chains, async (_chain) => { + // Chain is not connected return undefined + if (!activeChainIds?.includes(_chain.chainId)) return undefined; + const isWalletAvailable = checkWallet(_wallet); + if (!isWalletAvailable) { + throw new Error(`${_wallet} is not available`); } - })(); - const endpoint: HttpEndpoint = { url: _chain.rpc, headers: { ...(_chain.rpcHeaders || {}) } }; - const gasPrice = _chain.gas ? GasPrice.fromString(`${_chain.gas.price}${_chain.gas.denom}`) : undefined; - const signingClient = await SigningCosmWasmClient.connectWithSigner(endpoint, offlineSigner, { - gasPrice, - ...(_args?.opts || {}), + const offlineSigner = await (async () => { + switch (args?.offlineSigner) { + case "offlineSigner": + return getWallet(_wallet).getOfflineSigner(_chain.chainId); + case "offlineSignerAuto": + return getWallet(_wallet).getOfflineSignerAuto(_chain.chainId); + case "offlineSignerOnlyAmino": + return getWallet(_wallet).getOfflineSignerOnlyAmino(_chain.chainId); + default: + return getWallet(_wallet).getOfflineSignerAuto(_chain.chainId); + } + })(); + const chainConfig = useGrazInternalStore.getState().chainsConfig?.[_chain.chainId]; + const endpoint: HttpEndpoint = { url: _chain.rpc, headers: { ...(chainConfig?.rpcHeaders || {}) } }; + const gasPrice = chainConfig?.gas + ? GasPrice.fromString(`${chainConfig.gas.price}${chainConfig.gas.denom}`) + : undefined; + const signingClient = await SigningCosmWasmClient.connectWithSigner(endpoint, offlineSigner, { + gasPrice, + ...(args?.multiChain ? args.opts?.[_chain.chainId] : args?.opts || {}), + }); + return signingClient; }); - return signingClient; + return res; }, - enabled: Boolean(chain) && Boolean(wallet), + enabled: + Boolean(chains) && + chains.length > 0 && + Boolean(wallet) && + (args?.enabled !== undefined ? Boolean(args.enabled) : true), refetchOnWindowFocus: false, }); -}; +} +export function useStargateTmSigningClient( + args: { + type: "tm34" | "tm37"; + } & BaseSigningClientArgs & + SiginingClientSinglechainArgs, +): UseQueryResult; +export function useStargateTmSigningClient( + args: { + type: "tm34" | "tm37"; + } & BaseSigningClientArgs & + SiginingClientMultichainArgs, +): UseQueryResult>; /** * graz query hook to retrieve a SigningStargateClient with tendermint client. * @@ -121,55 +208,95 @@ export const useCosmWasmSigningClient = (args?: { * ```ts * import { useStargateTmSigningClient } from "graz"; * + * // single chain * const { data:signingClient, isFetching, refetch, ... } = useStargateTmSigningClient("tm34"); + * await signingClient.getAccount("address") * - * signingClient.getAccount("address") + * // multi chain + * const { data:signingClients, isFetching, refetch, ... } = useStargateTmSigningClient({type: "tm34", multiChain: true, chainId: ["cosmoshub-4", "sommelier-3"]}); + * await signingClients["cosmoshub-4"].getAccount("address") * * ``` */ -export const useStargateTmSigningClient = (args: { - type: "tm34" | "tm37"; - opts?: SigningStargateClientOptions; - offlineSigner?: "offlineSigner" | "offlineSignerAuto" | "offlineSignerOnlyAmino"; -}) => { - const chain = useGrazSessionStore((x) => x.activeChain); +// eslint-disable-next-line prefer-arrow-functions/prefer-arrow-functions +export function useStargateTmSigningClient( + args: { + type: "tm34" | "tm37"; + } & BaseSigningClientArgs & + Args, +): UseQueryResult> { + const chains = useChainsFromArgs({ chainId: args.chainId, multiChain: args.multiChain }); const wallet = useGrazInternalStore((x) => x.walletType); + const activeChainIds = useGrazSessionStore((x) => x.activeChainIds); const queryKey = useMemo( - () => ["USE_STARGATE_TM_SIGNING_CLIENT", chain, wallet, args] as const, - [args, chain, wallet], + () => ["USE_STARGATE_TM_SIGNING_CLIENT", chains, wallet, args, activeChainIds] as const, + [activeChainIds, args, chains, wallet], ); - const { data: tmClient } = useTendermintClient(args.type); + const { data: tmClient } = useTendermintClient({ + type: args.type, + chainId: args.chainId, + multiChain: args.multiChain, + }); return useQuery({ queryKey, - queryFn: async ({ queryKey: [, _chain, _wallet, _args] }) => { - if (!_chain) throw new Error("No chain found"); - const isWalletAvailable = checkWallet(_wallet); - if (!isWalletAvailable) { - throw new Error(`${_wallet} is not available`); - } - if (!tmClient) throw new Error("No tendermint client found"); - const offlineSigner = await (async () => { - switch (args.offlineSigner) { - case "offlineSigner": - return getWallet(_wallet).getOfflineSigner(_chain.chainId); - case "offlineSignerAuto": - return getWallet(_wallet).getOfflineSignerAuto(_chain.chainId); - case "offlineSignerOnlyAmino": - return getWallet(_wallet).getOfflineSignerOnlyAmino(_chain.chainId); - default: - return getWallet(_wallet).getOfflineSignerAuto(_chain.chainId); + queryFn: async ({ queryKey: [, _chains, _wallet] }) => { + if (_chains.length < 1) throw new Error("No chains found"); + const res = await createMultiChainAsyncFunction(Boolean(args.multiChain), _chains, async (_chain) => { + // Chain is not connected return undefined + if (!activeChainIds?.includes(_chain.chainId)) return undefined; + const isWalletAvailable = checkWallet(_wallet); + if (!isWalletAvailable) { + throw new Error(`${_wallet} is not available`); } - })(); - const client = SigningStargateClient.createWithSigner(tmClient, offlineSigner, _args.opts); - return client; + if (!tmClient) throw new Error("No tendermint client found"); + const offlineSigner = await (async () => { + switch (args.offlineSigner) { + case "offlineSigner": + return getWallet(_wallet).getOfflineSigner(_chain.chainId); + case "offlineSignerAuto": + return getWallet(_wallet).getOfflineSignerAuto(_chain.chainId); + case "offlineSignerOnlyAmino": + return getWallet(_wallet).getOfflineSignerOnlyAmino(_chain.chainId); + default: + return getWallet(_wallet).getOfflineSignerAuto(_chain.chainId); + } + })(); + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-expect-error + const tendermintClient = (args.multiChain ? tmClient[_chain.chainId] : tmClient) as TendermintClient; + const client = await SigningStargateClient.createWithSigner( + tendermintClient, + offlineSigner, + args.multiChain ? args.opts?.[_chain.chainId] : args.opts, + ); + return client; + }); + return res; }, - enabled: Boolean(chain) && Boolean(wallet) && Boolean(tmClient), + enabled: + Boolean(chains) && + chains.length > 0 && + Boolean(wallet) && + Boolean(tmClient) && + (args.enabled !== undefined ? Boolean(args.enabled) : true), refetchOnWindowFocus: false, }); -}; +} +export function useCosmWasmTmSigningClient( + args: { + type: "tm34" | "tm37"; + } & BaseSigningClientArgs & + SiginingClientSinglechainArgs, +): UseQueryResult; +export function useCosmWasmTmSigningClient( + args: { + type: "tm34" | "tm37"; + } & BaseSigningClientArgs & + SiginingClientMultichainArgs, +): UseQueryResult>; /** * graz query hook to retrieve a SigningCosmWasmClient with tendermint client. * @@ -177,55 +304,88 @@ export const useStargateTmSigningClient = (args: { * ```ts * import { useCosmWasmTmSigningClient } from "graz"; * + * // single chain * const { data:signingClient, isFetching, refetch, ... } = useCosmWasmTmSigningClient("tm34"); + * await signingClient.getAccount("address") * - * signingClient.getAccount("address") + * // multi chain + * const { data:signingClients, isFetching, refetch, ... } = useCosmWasmTmSigningClient({type: "tm34", multiChain: true, chainId: ["cosmoshub-4", "sommelier-3"]}); + * await signingClients["cosmoshub-4"].getAccount("address") * * ``` */ -export const useCosmWasmTmSigningClient = (args: { - type: "tm34" | "tm37"; - opts?: SigningCosmWasmClientOptions; - offlineSigner?: "offlineSigner" | "offlineSignerAuto" | "offlineSignerOnlyAmino"; -}) => { - const chain = useGrazSessionStore((x) => x.activeChain); +// eslint-disable-next-line prefer-arrow-functions/prefer-arrow-functions +export function useCosmWasmTmSigningClient( + args: { + type: "tm34" | "tm37"; + } & BaseSigningClientArgs & + Args, +): UseQueryResult> { + const chains = useChainsFromArgs({ chainId: args.chainId, multiChain: args.multiChain }); const wallet = useGrazInternalStore((x) => x.walletType); + const activeChainIds = useGrazSessionStore((x) => x.activeChainIds); const queryKey = useMemo( - () => ["USE_COSMWASM_TM_SIGNING_CLIENT", chain, wallet, args] as const, - [args, chain, wallet], + () => ["USE_COSMWASM_TM_SIGNING_CLIENT", chains, wallet, args, activeChainIds] as const, + [activeChainIds, args, chains, wallet], ); - const { data: tmClient } = useTendermintClient(args.type); + const { data: tmClient } = useTendermintClient({ + type: args.type, + chainId: args.chainId, + multiChain: false, + enabled: !args.multiChain, + }); + + const { data: tmClients } = useTendermintClient({ + type: args.type, + chainId: args.chainId, + multiChain: true, + enabled: Boolean(args.multiChain), + }); return useQuery({ queryKey, - queryFn: async ({ queryKey: [, _chain, _wallet, _args] }) => { - if (!_chain) throw new Error("No chain found"); - const isWalletAvailable = checkWallet(_wallet); - if (!isWalletAvailable) { - throw new Error(`${_wallet} is not available`); - } - if (!tmClient) throw new Error("No tendermint client found"); - const offlineSigner = await (async () => { - switch (args.offlineSigner) { - case "offlineSigner": - return getWallet(_wallet).getOfflineSigner(_chain.chainId); - case "offlineSignerAuto": - return getWallet(_wallet).getOfflineSignerAuto(_chain.chainId); - case "offlineSignerOnlyAmino": - return getWallet(_wallet).getOfflineSignerOnlyAmino(_chain.chainId); - default: - return getWallet(_wallet).getOfflineSignerAuto(_chain.chainId); + queryFn: async ({ queryKey: [, _chains, _wallet] }) => { + if (_chains.length < 1) throw new Error("No chains found"); + const res = await createMultiChainAsyncFunction(Boolean(args.multiChain), _chains, async (_chain) => { + // Chain is not connected return undefined + if (!activeChainIds?.includes(_chain.chainId)) return undefined; + const isWalletAvailable = checkWallet(_wallet); + if (!isWalletAvailable) { + throw new Error(`${_wallet} is not available`); } - })(); - const gasPrice = _chain.gas ? GasPrice.fromString(`${_chain.gas.price}${_chain.gas.denom}`) : undefined; - const client = SigningCosmWasmClient.createWithSigner(tmClient, offlineSigner, { - gasPrice, - ...(_args?.opts || {}), + const offlineSigner = await (async () => { + switch (args.offlineSigner) { + case "offlineSigner": + return getWallet(_wallet).getOfflineSigner(_chain.chainId); + case "offlineSignerAuto": + return getWallet(_wallet).getOfflineSignerAuto(_chain.chainId); + case "offlineSignerOnlyAmino": + return getWallet(_wallet).getOfflineSignerOnlyAmino(_chain.chainId); + default: + return getWallet(_wallet).getOfflineSignerAuto(_chain.chainId); + } + })(); + const chainConfig = useGrazInternalStore.getState().chainsConfig?.[_chain.chainId]; + const gasPrice = chainConfig?.gas + ? GasPrice.fromString(`${chainConfig.gas.price}${chainConfig.gas.denom}`) + : undefined; + const tendermintClient = args.multiChain ? tmClients?.[_chain.chainId] : tmClient; + if (!tendermintClient) throw new Error("No tendermint client found"); + const client = await SigningCosmWasmClient.createWithSigner(tendermintClient, offlineSigner, { + gasPrice, + ...(args.multiChain ? args.opts?.[_chain.chainId] : args.opts || {}), + }); + return client; }); - return client; + return res; }, - enabled: Boolean(chain) && Boolean(wallet) && Boolean(tmClient), + enabled: + Boolean(chains) && + chains.length > 0 && + Boolean(wallet) && + (Boolean(tmClient) || Boolean(!isEmpty(tmClients))) && + (args.enabled !== undefined ? Boolean(args.enabled) : true), refetchOnWindowFocus: false, }); -}; +} diff --git a/packages/graz/src/hooks/wallet.ts b/packages/graz/src/hooks/wallet.ts index 10575e64..d8157e0b 100644 --- a/packages/graz/src/hooks/wallet.ts +++ b/packages/graz/src/hooks/wallet.ts @@ -27,6 +27,7 @@ export const useActiveWalletType = () => { isLeapMobile: x.walletType === WalletType.WC_LEAP_MOBILE, isVectis: x.walletType === WalletType.VECTIS, isWalletConnect: x.walletType === WalletType.WALLETCONNECT, + isMetamaskSnapLeap: x.walletType === WalletType.METAMASK_SNAP_LEAP, }), shallow, ); diff --git a/packages/graz/src/index.ts b/packages/graz/src/index.ts index 7f799e1f..32d5eced 100644 --- a/packages/graz/src/index.ts +++ b/packages/graz/src/index.ts @@ -23,5 +23,4 @@ export * from "./hooks/wallet"; export * from "./provider"; export * from "./provider/events"; export * from "./types/core"; -export * from "./types/keplr"; export * from "./types/wallet"; diff --git a/packages/graz/src/keplr.ts b/packages/graz/src/keplr.ts deleted file mode 100644 index 81085cd2..00000000 --- a/packages/graz/src/keplr.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "@keplr-wallet/cosmos"; -export * from "@keplr-wallet/types"; diff --git a/packages/graz/src/provider/events.tsx b/packages/graz/src/provider/events.tsx index ce86b7aa..bd7d17b6 100644 --- a/packages/graz/src/provider/events.tsx +++ b/packages/graz/src/provider/events.tsx @@ -21,14 +21,14 @@ export const useGrazEvents = () => { const isSessionActive = typeof window !== "undefined" && window.sessionStorage.getItem(RECONNECT_SESSION_KEY) === "Active"; const { _reconnect, _onReconnectFailed, _reconnectConnector } = useGrazInternalStore(); - const { activeChain, wcSignClient } = useGrazSessionStore(); + const { activeChainIds: activeChains, wcSignClient } = useGrazSessionStore(); const isReconnectConnectorReady = checkWallet(_reconnectConnector || undefined); useEffect(() => { // will reconnect on refresh if (_reconnectConnector) { if (!isReconnectConnectorReady) return; - if (isSessionActive && Boolean(activeChain)) { + if (isSessionActive && Boolean(activeChains)) { void reconnect({ onError: _onReconnectFailed, }); diff --git a/packages/graz/src/provider/index.tsx b/packages/graz/src/provider/index.tsx index 1203fc00..3ec0f99a 100644 --- a/packages/graz/src/provider/index.tsx +++ b/packages/graz/src/provider/index.tsx @@ -1,6 +1,5 @@ import type { QueryClientProviderProps } from "@tanstack/react-query"; import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; -import { ReactQueryDevtools } from "@tanstack/react-query-devtools"; import type { FC } from "react"; import type { ConfigureGrazArgs } from "../actions/configure"; @@ -13,8 +12,7 @@ const queryClient = new QueryClient({ }); export type GrazProviderProps = Partial & { - grazOptions?: ConfigureGrazArgs; - debug?: boolean; + grazOptions: ConfigureGrazArgs; }; /** @@ -35,17 +33,15 @@ export type GrazProviderProps = Partial & { * * @see https://tanstack.com/query */ -export const GrazProvider: FC = ({ children, grazOptions, debug, ...props }) => { - if (grazOptions) { - configureGraz(grazOptions); - } +export const GrazProvider: FC = ({ children, grazOptions, ...props }) => { + configureGraz(grazOptions); + return ( {children} - {debug ? : null} ); }; diff --git a/packages/graz/src/store/index.ts b/packages/graz/src/store/index.ts index 026ff016..e28d22a7 100644 --- a/packages/graz/src/store/index.ts +++ b/packages/graz/src/store/index.ts @@ -1,4 +1,4 @@ -import type { Key } from "@keplr-wallet/types"; +import type { ChainInfo, Key } from "@keplr-wallet/types"; import type { ISignClient, SignClientTypes } from "@walletconnect/types"; import type { Web3ModalConfig } from "@web3modal/standalone"; import { create } from "zustand"; @@ -6,16 +6,30 @@ import type { PersistOptions } from "zustand/middleware"; import { createJSONStorage } from "zustand/middleware"; import { persist, subscribeWithSelector } from "zustand/middleware"; -import type { GrazChain } from "../chains"; +import type { Dictionary } from "../types/core"; import { WalletType } from "../types/wallet"; +export interface ChainConfig { + path?: string; + rpcHeaders?: Dictionary; + gas?: { + price: string; + denom: string; + }; +} export interface WalletConnectStore { options: SignClientTypes.Options | null; web3Modal?: Pick | null; } export interface GrazInternalStore { - defaultChain: GrazChain | null; - recentChain: GrazChain | null; + recentChainIds: string[] | null; + chains: ChainInfo[] | null; + chainsConfig: Record | null; + /** + * Graz will use this number to determine how many concurrent requests to make when using `multiChain` args in hooks. + * Defaults to 3. + */ + multiChainFetchConcurrency: number; walletType: WalletType; walletConnect: WalletConnectStore | null; _notFoundFn: () => void; @@ -25,19 +39,24 @@ export interface GrazInternalStore { } export interface GrazSessionStore { - account: Key | null; - activeChain: GrazChain | null; + accounts: Record | null; + activeChainIds: string[] | null; status: "connected" | "connecting" | "reconnecting" | "disconnected"; wcSignClient?: ISignClient | null; } -export type GrazSessionPersistedStore = Pick; +export type GrazSessionPersistedStore = Pick; -export type GrazInternalPersistedStore = Pick; +export type GrazInternalPersistedStore = Pick< + GrazInternalStore, + "recentChainIds" | "_reconnect" | "_reconnectConnector" +>; export const grazInternalDefaultValues: GrazInternalStore = { - recentChain: null, - defaultChain: null, + recentChainIds: null, + chains: null, + chainsConfig: null, + multiChainFetchConcurrency: 3, walletType: WalletType.KEPLR, walletConnect: { options: null, @@ -50,18 +69,18 @@ export const grazInternalDefaultValues: GrazInternalStore = { }; export const grazSessionDefaultValues: GrazSessionStore = { - account: null, - activeChain: null, + accounts: null, + activeChainIds: null, status: "disconnected", wcSignClient: null, }; const sessionOptions: PersistOptions = { name: "graz-session", - version: 1, + version: 2, partialize: (x) => ({ - account: x.account, - activeChain: x.activeChain, + accounts: x.accounts, + activeChainIds: x.activeChainIds, }), storage: createJSONStorage(() => sessionStorage), }; @@ -69,11 +88,11 @@ const sessionOptions: PersistOptions = { name: "graz-internal", partialize: (x) => ({ - recentChain: x.recentChain, + recentChainIds: x.recentChainIds, _reconnect: x._reconnect, _reconnectConnector: x._reconnectConnector, }), - version: 1, + version: 2, }; export const useGrazSessionStore = create( diff --git a/packages/graz/src/tendermint.ts b/packages/graz/src/tendermint.ts deleted file mode 100644 index 1c90913b..00000000 --- a/packages/graz/src/tendermint.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "@cosmjs/tendermint-rpc"; diff --git a/packages/graz/src/types/hooks.ts b/packages/graz/src/types/hooks.ts index 64a5667b..df4c0705 100644 --- a/packages/graz/src/types/hooks.ts +++ b/packages/graz/src/types/hooks.ts @@ -1,5 +1,19 @@ +import type { UseQueryResult } from "@tanstack/react-query"; + +import type { MultiChainHookArgs } from "../utils/multi-chain"; + export interface MutationEventArgs { onError?: (error: unknown, data: TInitial) => unknown; onLoading?: (data: TInitial) => unknown; onSuccess?: (data: TSuccess) => unknown; } + +type ChainId = string; + +export type UseMultiChainQueryResult = UseQueryResult< + TMulti["multiChain"] extends true ? Record : TData +>; + +export interface QueryConfig { + enabled?: boolean; +} diff --git a/packages/graz/src/types/keplr.ts b/packages/graz/src/types/keplr.ts deleted file mode 100644 index eee39a69..00000000 --- a/packages/graz/src/types/keplr.ts +++ /dev/null @@ -1,5 +0,0 @@ -import type { ChainInfo } from "@keplr-wallet/types"; - -export interface ChainInfoWithPath extends ChainInfo { - path: string; -} diff --git a/packages/graz/src/utils/cli/clack.ts b/packages/graz/src/utils/cli/clack.ts new file mode 100644 index 00000000..12940c54 --- /dev/null +++ b/packages/graz/src/utils/cli/clack.ts @@ -0,0 +1,26 @@ +import * as p from "@clack/prompts"; + +// https://github.com/natemoo-re/clack/blob/90f8e3d762e96fde614fdf8da0529866649fafe2/packages/prompts/src/index.ts#L785-L799 +export interface Task { + title: string; + task: (message: (string: string) => void) => string | Promise | Promise; + enabled?: boolean; +} + +// https://github.com/natemoo-re/clack/blob/90f8e3d762e96fde614fdf8da0529866649fafe2/packages/prompts/src/index.ts#L804-L813 +export const tasks = async ($tasks: Task[]) => { + for await (const task of $tasks) { + if (task.enabled === false) continue; + const s = p.spinner(); + s.start(task.title); + const result = await task.task(s.message); + s.stop(result || task.title); + } +}; + +export const withSpinner = (fn: (s: ReturnType) => T) => { + const s = p.spinner(); + return fn(s); +}; + +export * from "@clack/prompts"; diff --git a/packages/graz/src/utils/cli/prompt-opt.ts b/packages/graz/src/utils/cli/prompt-opt.ts new file mode 100644 index 00000000..a4f7fe77 --- /dev/null +++ b/packages/graz/src/utils/cli/prompt-opt.ts @@ -0,0 +1,75 @@ +import * as fs from "node:fs"; + +import type { GenerateOptions, ParsedGenerateOptions } from "wadesta"; + +import * as p from "./clack"; + +export const DEFAULT_OUT_DIR = "./generated/chains"; +export const DEFAULT_REGISTRY_SRC = "github:cosmos/chain-registry"; +export const DEFAULT_REGISTRY_TMP_PREFIX = "wadesta-registry"; + +type ClackGenerateOptions = { + [K in keyof GenerateOptions]: (NonNullable extends string ? string : GenerateOptions[K]) | symbol; +}; + +export const promptParsedOptions = async ( + args: ParsedGenerateOptions, + overrides: GenerateOptions = {}, +): Promise => { + if (!args.isActuallyInteractive) return args; + if (overrides.interactive === false || args.interactive === false) return args; + return p.group( + { + registry: async () => { + if ("registry" in overrides) return overrides.registry; + if (args.registrySrc) return "local"; + if (args.registry) return args.registry; + return p.text({ + message: "Enter a chain registry source", + placeholder: DEFAULT_REGISTRY_SRC, + defaultValue: DEFAULT_REGISTRY_SRC, + }); + }, + registrySrc: async ({ results }) => { + if ("registrySrc" in overrides) return overrides.registrySrc; + if (args.registrySrc) return args.registrySrc; + if (results.registry !== "local") return; + return p.text({ + message: "Enter local registry path", + placeholder: "./path/to/registry", + validate: (val) => { + try { + fs.lstatSync(val); + } catch { + return "Enter a valid path"; + } + }, + }); + }, + outDir: async () => { + if ("outDir" in overrides) return overrides.outDir; + if (args.outDir) return args.outDir; + return p.text({ + message: "Enter generated client output directory", + placeholder: DEFAULT_OUT_DIR, + defaultValue: DEFAULT_OUT_DIR, + }); + }, + merged: async () => { + if ("merged" in overrides) return overrides.merged; + if (args.merged) return args.merged; + return p.confirm({ + message: "Merge variables? (true: `chainIds`, false: `mainnetChainIds`, `testnetChainIds`, and `chainIds`)", + active: "merge", + inactive: "do not merge", + }); + }, + }, + { + onCancel: () => { + p.cancel("Operation cancelled."); + process.exit(1); + }, + }, + ); +}; diff --git a/packages/graz/src/utils/isEmpty.ts b/packages/graz/src/utils/isEmpty.ts new file mode 100644 index 00000000..66f00d22 --- /dev/null +++ b/packages/graz/src/utils/isEmpty.ts @@ -0,0 +1,4 @@ +export const isEmpty = (v: Record | null | undefined) => { + if (!v) return true; + return Object.keys(v).length === 0; +}; diff --git a/packages/graz/src/utils/multi-chain.ts b/packages/graz/src/utils/multi-chain.ts new file mode 100644 index 00000000..b2d18572 --- /dev/null +++ b/packages/graz/src/utils/multi-chain.ts @@ -0,0 +1,50 @@ +import type { ChainInfo } from "@keplr-wallet/types"; +import pMap from "p-map"; + +import { useGrazInternalStore } from "../store"; + +export type ChainId = string | string[]; + +export interface MultiChainHookArgs { + chainId?: ChainId; + multiChain?: boolean; +} + +export const useChainsFromArgs = ({ chainId, multiChain }: { chainId?: ChainId; multiChain?: boolean }) => { + const chains = useGrazInternalStore((x) => x.chains); + if (!chains) throw new Error("No chains found in GrazProvider"); + const chainIds = typeof chainId === "string" ? [chainId] : chainId; + switch (true) { + case Boolean(multiChain) && Boolean(chainIds): + return chainIds!.map((id) => chains.find((c) => c.chainId === id)!).filter(Boolean); + case !multiChain && Boolean(chainIds): + return [chainIds!.map((id) => chains.find((c) => c.chainId === id)!).filter(Boolean)[0]!]; + case Boolean(multiChain) && !chainIds: + return chains; + default: + return [chains[0]!]; + } +}; + +export const createMultiChainAsyncFunction = async ( + multiChain: boolean, + chains: ChainInfo[], + fn: (chain: ChainInfo) => Promise, +) => { + const concurrency = useGrazInternalStore.getState().multiChainFetchConcurrency; + if (multiChain) { + const res = await pMap(chains, fn, { concurrency }); + return Object.fromEntries(res.map((x, i) => [chains[i]!.chainId, x])); + } + const res = await fn(chains[0]!); + return res; +}; + +export const createMultiChainFunction = (multiChain: boolean, chains: ChainInfo[], fn: (chain: ChainInfo) => T) => { + if (multiChain) { + const res = chains.map(fn); + return Object.fromEntries(res.map((x, i) => [chains[i]!.chainId, x])); + } + const res = fn(chains[0]!); + return res; +}; diff --git a/packages/graz/tsconfig.json b/packages/graz/tsconfig.json index 366d5c36..17f03a58 100644 --- a/packages/graz/tsconfig.json +++ b/packages/graz/tsconfig.json @@ -1,11 +1,10 @@ { - "extends": "@graz-sh/style-guide/tsconfig.json", + "extends": "@graz-sh/style-guide/tsconfig/next.json", "compilerOptions": { "jsx": "react-jsx", - "moduleResolution": "node", - "resolveJsonModule": true, - "module": "Node16" + "incremental": false, + "target": "es6" }, "exclude": ["node_modules"], - "include": ["env.d.ts", "**/*.ts", "**/*.tsx"] + "include": ["**/*.ts", "**/*.tsx"] } diff --git a/packages/graz/tsup.config.ts b/packages/graz/tsup.config.ts index 032aead8..d460b069 100644 --- a/packages/graz/tsup.config.ts +++ b/packages/graz/tsup.config.ts @@ -1,20 +1,31 @@ +import type { Options } from "tsup"; import { defineConfig } from "tsup"; -import packageJson from "./package.json"; - -export default defineConfig(({ watch }) => ({ +const defaultOptions: Options = { + cjsInterop: true, clean: true, - dts: true, - entry: ["src/*.ts"], - external: [ - ...Object.keys(packageJson.dependencies), - ...Object.keys(packageJson.peerDependencies), - /^@cosmjs\/.*/, - /^@keplr-wallet\/.*/, - ], format: ["cjs", "esm"], - minify: !watch, - minifyIdentifiers: !watch, - minifySyntax: !watch, - minifyWhitespace: !watch, -})); + shims: true, + splitting: true, + treeshake: true, +}; + +export default defineConfig(({ watch }) => [ + { + ...defaultOptions, + dts: { + banner: '/// ', + }, + entry: ["src/index.ts"], + external: [/^@cosmjs\/.*/], + format: ["cjs", "esm"], + minify: !watch, + }, + { + ...defaultOptions, + dts: false, + entry: ["src/cli.mjs"], + format: ["cjs"], + minify: !watch, + }, +]); diff --git a/packages/graz/env.d.ts b/packages/graz/types/global.d.ts similarity index 69% rename from packages/graz/env.d.ts rename to packages/graz/types/global.d.ts index 743129ad..52c2fc41 100644 --- a/packages/graz/env.d.ts +++ b/packages/graz/types/global.d.ts @@ -1,8 +1,7 @@ type KeplrWindow = import("@keplr-wallet/types").Window; type VectisWindow = import("@vectis/extension-client").VectisWindow; -type EthereumWindow = import("@metamask/providers").MetaMaskInpageProvider; -declare interface Window extends KeplrWindow { +interface Window extends KeplrWindow, VectisWindow { leap: KeplrWindow["keplr"]; cosmostation: { cosmos: { @@ -13,6 +12,5 @@ declare interface Window extends KeplrWindow { keplr: KeplrWindow["keplr"]; }; }; - vectis: VectisWindow["vectis"]; - ethereum?: EthereumWindow; + ethereum?: import("@metamask/providers").MetaMaskInpageProvider; } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cde3a3c1..567d7d95 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,90 +9,84 @@ importers: .: devDependencies: '@graz-sh/style-guide': - specifier: ^3.1.0 - version: 3.1.0(eslint@8.46.0)(prettier@3.0.0)(tailwindcss@3.3.3)(typescript@5.1.3) - '@vercel/ncc': - specifier: ^0.36.1 - version: 0.36.1 + specifier: ^4.0.1 + version: 4.0.1(eslint@8.49.0)(prettier@3.0.3)(tailwindcss@3.3.3)(typescript@5.2.2) eslint: - specifier: ^8.46.0 - version: 8.46.0 - husky: - specifier: ^8.0.3 - version: 8.0.3 + specifier: ^8.49.0 + version: 8.49.0 p-map: specifier: ^6.0.0 version: 6.0.0 prettier: - specifier: ^3.0.0 - version: 3.0.0 + specifier: ^3.0.3 + version: 3.0.3 tsup: - specifier: ^7.0.0 - version: 7.0.0(postcss@8.4.27)(typescript@5.1.3) + specifier: ^7.2.0 + version: 7.2.0(postcss@8.4.29)(typescript@5.2.2) turbo: - specifier: ^1.10.3 - version: 1.10.3 + specifier: ^1.10.13 + version: 1.10.13 typescript: - specifier: ^5.1.3 - version: 5.1.3 + specifier: ^5.2.2 + version: 5.2.2 docs: dependencies: '@cmfcmf/docusaurus-search-local': specifier: ^1.1.0 - version: 1.1.0(@docusaurus/core@2.4.1)(search-insights@2.6.0) + version: 1.1.0(@docusaurus/core@2.4.1)(search-insights@2.8.2) '@docusaurus/core': specifier: ^2.4.1 - version: 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4)(eslint@8.46.0)(react-dom@17.0.0)(react@17.0.0)(typescript@5.1.3) + version: 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4)(eslint@8.49.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) '@docusaurus/preset-classic': specifier: ^2.4.1 - version: 2.4.1(@algolia/client-search@4.17.2)(esbuild@0.18.4)(eslint@8.46.0)(react-dom@17.0.0)(react@17.0.0)(typescript@5.1.3) + version: 2.4.1(@algolia/client-search@4.19.1)(esbuild@0.18.4)(eslint@8.49.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) '@mdx-js/react': specifier: ^1.6.22 - version: 1.6.22(react@17.0.0) + version: 1.6.22(react@17.0.2) clsx: - specifier: ^1.2.1 - version: 1.2.1 + specifier: ^2.0.0 + version: 2.0.0 prism-react-renderer: specifier: ^1.3.5 - version: 1.3.5(react@17.0.0) + version: 1.3.5(react@17.0.2) react: - specifier: ^17 - version: 17.0.0 + specifier: ^17.0.2 + version: 17.0.2 react-dom: - specifier: ^17 - version: 17.0.0(react@17.0.0) + specifier: ^17.0.2 + version: 17.0.2(react@17.0.2) devDependencies: '@docusaurus/module-type-aliases': specifier: ^2.4.1 - version: 2.4.1(esbuild@0.18.4)(react-dom@17.0.0)(react@17.0.0) + version: 2.4.1(esbuild@0.18.4)(react-dom@17.0.2)(react@17.0.2) '@tsconfig/docusaurus': specifier: ^1.0.7 version: 1.0.7 typescript: - specifier: ^5.1.3 - version: 5.1.3 + specifier: ^5.2.2 + version: 5.2.2 example/next: dependencies: '@chakra-ui/react': - specifier: ^2.7.0 - version: 2.7.0(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.12)(framer-motion@10.12.16)(react-dom@18.2.0)(react@18.2.0) + specifier: ^2.8.1 + version: 2.8.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.21)(framer-motion@10.16.4)(react-dom@18.2.0)(react@18.2.0) '@emotion/react': specifier: ^11.11.1 - version: 11.11.1(@types/react@18.2.12)(react@18.2.0) + version: 11.11.1(@types/react@18.2.21)(react@18.2.0) '@emotion/styled': specifier: ^11.11.0 - version: 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.12)(react@18.2.0) + version: 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.21)(react@18.2.0) framer-motion: - specifier: ^10.12.16 - version: 10.12.16(react-dom@18.2.0)(react@18.2.0) + specifier: ^10.16.4 + version: 10.16.4(react-dom@18.2.0)(react@18.2.0) graz: specifier: '*' version: link:../../packages/graz next: - specifier: ^13.4.6 - version: 13.4.6(@babel/core@7.22.9)(react-dom@18.2.0)(react@18.2.0) + specifier: ^13.4.19 + version: 13.4.19(@babel/core@7.22.15)(react-dom@18.2.0)(react@18.2.0) react: specifier: ^18.2.0 version: 18.2.0 @@ -100,42 +94,51 @@ importers: specifier: ^18.2.0 version: 18.2.0(react@18.2.0) typescript: - specifier: ^5.1.3 - version: 5.1.3 + specifier: ^5.2.2 + version: 5.2.2 devDependencies: '@graz-sh/style-guide': - specifier: ^3.1.0 - version: 3.1.0(eslint@8.46.0)(prettier@3.0.0)(tailwindcss@3.3.3)(typescript@5.1.3) + specifier: ^4.0.1 + version: 4.0.1(eslint@8.49.0)(prettier@3.0.3)(tailwindcss@3.3.3)(typescript@5.2.2) '@types/node': - specifier: ^20.3.1 - version: 20.3.1 + specifier: ^18.17.15 + version: 18.17.15 '@types/react': - specifier: ^18.2.12 - version: 18.2.12 + specifier: ^18.2.21 + version: 18.2.21 + '@types/react-dom': + specifier: ^18.2.7 + version: 18.2.7 example/starter: dependencies: + '@chakra-ui/icons': + specifier: ^2.1.1 + version: 2.1.1(@chakra-ui/system@2.6.1)(react@18.2.0) '@chakra-ui/react': - specifier: ^2.7.0 - version: 2.7.0(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.12)(framer-motion@10.12.16)(react-dom@18.2.0)(react@18.2.0) + specifier: ^2.8.1 + version: 2.8.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.21)(framer-motion@10.16.4)(react-dom@18.2.0)(react@18.2.0) '@emotion/react': specifier: ^11.11.1 - version: 11.11.1(@types/react@18.2.12)(react@18.2.0) + version: 11.11.1(@types/react@18.2.21)(react@18.2.0) '@emotion/styled': specifier: ^11.11.0 - version: 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.12)(react@18.2.0) + version: 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.21)(react@18.2.0) + '@graz-sh/types': + specifier: ^0.0.4 + version: 0.0.4(long@4.0.0) bignumber.js: - specifier: ^9.1.1 - version: 9.1.1 + specifier: ^9.1.2 + version: 9.1.2 framer-motion: - specifier: ^10.12.16 - version: 10.12.16(react-dom@18.2.0)(react@18.2.0) + specifier: ^10.16.4 + version: 10.16.4(react-dom@18.2.0)(react@18.2.0) graz: - specifier: latest + specifier: '*' version: link:../../packages/graz next: - specifier: ^13.4.6 - version: 13.4.6(@babel/core@7.22.9)(react-dom@18.2.0)(react@18.2.0) + specifier: ^13.4.19 + version: 13.4.19(@babel/core@7.22.15)(react-dom@18.2.0)(react@18.2.0) react: specifier: ^18.2.0 version: 18.2.0 @@ -144,26 +147,26 @@ importers: version: 18.2.0(react@18.2.0) devDependencies: '@graz-sh/style-guide': - specifier: ^3.1.0 - version: 3.1.0(eslint@8.46.0)(prettier@3.0.0)(tailwindcss@3.3.3)(typescript@5.1.3) + specifier: ^4.0.1 + version: 4.0.1(eslint@8.49.0)(prettier@3.0.3)(tailwindcss@3.3.3)(typescript@5.2.2) '@types/node': - specifier: ^20.3.1 - version: 20.3.1 + specifier: ^18.17.15 + version: 18.17.15 '@types/react': - specifier: ^18.2.12 - version: 18.2.12 + specifier: ^18.2.21 + version: 18.2.21 '@types/react-dom': - specifier: 18.2.5 - version: 18.2.5 + specifier: ^18.2.7 + version: 18.2.7 eslint: - specifier: ^8.46.0 - version: 8.46.0 + specifier: ^8.49.0 + version: 8.49.0 prettier: - specifier: ^3.0.0 - version: 3.0.0 + specifier: ^3.0.3 + version: 3.0.3 typescript: - specifier: ^5.1.3 - version: 5.1.3 + specifier: ^5.2.2 + version: 5.2.2 example/vite: dependencies: @@ -178,193 +181,145 @@ importers: version: 18.2.0(react@18.2.0) devDependencies: '@graz-sh/style-guide': - specifier: ^3.1.0 - version: 3.1.0(eslint@8.46.0)(prettier@3.0.0)(tailwindcss@3.3.3)(typescript@5.1.3) + specifier: ^4.0.1 + version: 4.0.1(eslint@8.49.0)(prettier@3.0.3)(tailwindcss@3.3.3)(typescript@5.2.2) + '@types/node': + specifier: ^18.17.15 + version: 18.17.15 '@types/react': - specifier: ^18.2.12 - version: 18.2.12 + specifier: ^18.2.21 + version: 18.2.21 '@types/react-dom': - specifier: ^18.2.5 - version: 18.2.5 + specifier: ^18.2.7 + version: 18.2.7 '@vitejs/plugin-react': - specifier: ^4.0.0 - version: 4.0.0(vite@4.3.9) + specifier: ^4.0.4 + version: 4.0.4(vite@4.4.9) node-stdlib-browser: specifier: ^1.2.0 version: 1.2.0 typescript: - specifier: ^5.1.3 - version: 5.1.3 + specifier: ^5.2.2 + version: 5.2.2 vite: - specifier: ^4.3.9 - version: 4.3.9 + specifier: ^4.4.9 + version: 4.4.9(@types/node@18.17.15) vite-plugin-node-stdlib-browser: specifier: ^0.2.1 - version: 0.2.1(node-stdlib-browser@1.2.0)(vite@4.3.9) - - packages/create-graz-app: - devDependencies: - '@types/async-retry': - specifier: 1.4.5 - version: 1.4.5 - '@types/cross-spawn': - specifier: ^6.0.2 - version: 6.0.2 - '@types/node': - specifier: ^20.3.1 - version: 20.3.1 - '@types/prompts': - specifier: ^2.4.4 - version: 2.4.4 - '@types/rimraf': - specifier: ^4.0.5 - version: 4.0.5 - '@types/tar': - specifier: ^6.1.5 - version: 6.1.5 - '@types/validate-npm-package-name': - specifier: ^4.0.0 - version: 4.0.0 - async-retry: - specifier: 1.3.3 - version: 1.3.3 - chalk: - specifier: ^5.2.0 - version: 5.2.0 - commander: - specifier: ^10.0.1 - version: 10.0.1 - cross-spawn: - specifier: ^7.0.3 - version: 7.0.3 - got: - specifier: ^12.6.0 - version: 12.6.0 - prompts: - specifier: ^2.4.2 - version: 2.4.2 - rimraf: - specifier: ^5.0.1 - version: 5.0.1 - tar: - specifier: ^6.1.15 - version: 6.1.15 - typescript: - specifier: ^5.1.3 - version: 5.1.3 - validate-npm-package-name: - specifier: ^5.0.0 - version: 5.0.0 + version: 0.2.1(node-stdlib-browser@1.2.0)(vite@4.4.9) packages/graz: dependencies: + '@clack/prompts': + specifier: ^0.7.0 + version: 0.7.0 '@cosmjs/cosmwasm-stargate': - specifier: ^0.31.0 + specifier: '*' version: 0.31.0 '@cosmjs/launchpad': - specifier: ^0.27.1 + specifier: '*' version: 0.27.1 '@cosmjs/proto-signing': - specifier: ^0.31.0 + specifier: '*' version: 0.31.0 '@cosmjs/stargate': - specifier: ^0.31.0 + specifier: '*' version: 0.31.0 '@cosmjs/tendermint-rpc': - specifier: ^0.31.0 + specifier: '*' version: 0.31.0 '@keplr-wallet/cosmos': specifier: ^0.12.20 version: 0.12.20 + '@keplr-wallet/types': + specifier: ^0.12.23 + version: 0.12.23 '@metamask/providers': - specifier: ^11.1.1 - version: 11.1.1 + specifier: ^12.0.0 + version: 12.0.0 '@tanstack/react-query': - specifier: ^4.29.14 - version: 4.29.14(react-dom@18.2.0)(react@18.2.0) - '@tanstack/react-query-devtools': - specifier: ^4.29.14 - version: 4.29.14(@tanstack/react-query@4.29.14)(react-dom@18.2.0)(react@18.2.0) + specifier: ^4.35.0 + version: 4.35.0(react@18.2.0) '@vectis/extension-client': - specifier: ^0.7.1 - version: 0.7.1 + specifier: ^0.7.2 + version: 0.7.2 '@walletconnect/sign-client': - specifier: ^2.8.1 - version: 2.8.1 + specifier: ^2.10.0 + version: 2.10.0 + '@walletconnect/types': + specifier: ^2.10.0 + version: 2.10.0 '@walletconnect/utils': - specifier: ^2.8.1 - version: 2.8.1 + specifier: ^2.10.0 + version: 2.10.0 '@web3modal/standalone': specifier: ^2.4.3 version: 2.4.3(react@18.2.0) - arg: - specifier: ^5.0.2 - version: 5.0.2 + cac: + specifier: ^6.7.14 + version: 6.7.14 cosmos-directory-client: specifier: 0.0.6 version: 0.0.6 + long: + specifier: '*' + version: 4.0.0 + wadesta: + specifier: ^0.0.5 + version: 0.0.5(long@4.0.0) zustand: - specifier: ^4.3.8 - version: 4.3.8(react@18.2.0) + specifier: ^4.4.1 + version: 4.4.1(@types/react@18.2.21)(react@18.2.0) devDependencies: - '@keplr-wallet/types': - specifier: ^0.12.20 - version: 0.12.20 '@types/node': - specifier: ^20.3.1 - version: 20.3.1 + specifier: ^18.17.15 + version: 18.17.15 '@types/react': - specifier: ^18.2.12 - version: 18.2.12 - '@walletconnect/types': - specifier: ^2.8.1 - version: 2.8.1 + specifier: ^18.2.21 + version: 18.2.21 + '@types/react-dom': + specifier: ^18.2.7 + version: 18.2.7 + arg: + specifier: ^5.0.2 + version: 5.0.2 react: specifier: ^18.2.0 version: 18.2.0 typescript: - specifier: ^5.1.3 - version: 5.1.3 + specifier: ^5.2.2 + version: 5.2.2 packages/graz-adapter-keplr: devDependencies: - '@types/node': - specifier: ^20.3.1 - version: 20.3.1 graz: specifier: '*' version: link:../graz typescript: - specifier: ^5.1.3 - version: 5.1.3 + specifier: ^5.2.2 + version: 5.2.2 packages/graz-adapter-leap: devDependencies: - '@types/node': - specifier: ^20.3.1 - version: 20.3.1 graz: specifier: '*' version: link:../graz typescript: - specifier: ^5.1.3 - version: 5.1.3 + specifier: ^5.2.2 + version: 5.2.2 packages/graz-adapter-vectis: dependencies: '@vectis/extension-client': - specifier: ^0.7.0 - version: 0.7.0 + specifier: ^0.7.2 + version: 0.7.2 devDependencies: - '@types/node': - specifier: ^20.3.1 - version: 20.3.1 graz: specifier: '*' version: link:../graz typescript: - specifier: ^5.1.3 - version: 5.1.3 + specifier: ^5.2.2 + version: 5.2.2 packages: @@ -378,10 +333,10 @@ packages: '@algolia/autocomplete-shared': 1.8.2 dev: false - /@algolia/autocomplete-core@1.9.2(@algolia/client-search@4.17.1)(algoliasearch@4.17.0)(search-insights@2.6.0): + /@algolia/autocomplete-core@1.9.2(@algolia/client-search@4.17.1)(algoliasearch@4.17.0)(search-insights@2.8.2): resolution: {integrity: sha512-hkG80c9kx9ClVAEcUJbTd2ziVC713x9Bji9Ty4XJfKXlxlsx3iXsoNhAwfeR4ulzIUg7OE5gez0UU1zVDdG7kg==} dependencies: - '@algolia/autocomplete-plugin-algolia-insights': 1.9.2(@algolia/client-search@4.17.1)(algoliasearch@4.17.0)(search-insights@2.6.0) + '@algolia/autocomplete-plugin-algolia-insights': 1.9.2(@algolia/client-search@4.17.1)(algoliasearch@4.17.0)(search-insights@2.8.2) '@algolia/autocomplete-shared': 1.9.2(@algolia/client-search@4.17.1)(algoliasearch@4.17.0) transitivePeerDependencies: - '@algolia/client-search' @@ -389,13 +344,13 @@ packages: - search-insights dev: false - /@algolia/autocomplete-js@1.9.2(@algolia/client-search@4.17.1)(algoliasearch@4.17.0)(search-insights@2.6.0): + /@algolia/autocomplete-js@1.9.2(@algolia/client-search@4.17.1)(algoliasearch@4.17.0)(search-insights@2.8.2): resolution: {integrity: sha512-qaYzP0DNZsratnu18umlQVW++8uI8irpadk/e2cCOhM5Qvsyw9y338lkTd4AkxOPYf9EhTVgDNq0rQ+dNDtDgQ==} peerDependencies: '@algolia/client-search': '>= 4.5.1 < 6' algoliasearch: '>= 4.9.1 < 6' dependencies: - '@algolia/autocomplete-core': 1.9.2(@algolia/client-search@4.17.1)(algoliasearch@4.17.0)(search-insights@2.6.0) + '@algolia/autocomplete-core': 1.9.2(@algolia/client-search@4.17.1)(algoliasearch@4.17.0)(search-insights@2.8.2) '@algolia/autocomplete-preset-algolia': 1.9.2(@algolia/client-search@4.17.1)(algoliasearch@4.17.0) '@algolia/autocomplete-shared': 1.9.2(@algolia/client-search@4.17.1)(algoliasearch@4.17.0) '@algolia/client-search': 4.17.1 @@ -406,26 +361,26 @@ packages: - search-insights dev: false - /@algolia/autocomplete-plugin-algolia-insights@1.9.2(@algolia/client-search@4.17.1)(algoliasearch@4.17.0)(search-insights@2.6.0): + /@algolia/autocomplete-plugin-algolia-insights@1.9.2(@algolia/client-search@4.17.1)(algoliasearch@4.17.0)(search-insights@2.8.2): resolution: {integrity: sha512-2LVsf4W66hVHQ3Ua/8k15oPlxjELCztbAkQm/hP42Sw+GLkHAdY1vaVRYziaWq64+Oljfg6FKkZHCdgXH+CGIA==} peerDependencies: search-insights: '>= 1 < 3' dependencies: '@algolia/autocomplete-shared': 1.9.2(@algolia/client-search@4.17.1)(algoliasearch@4.17.0) - search-insights: 2.6.0 + search-insights: 2.8.2 transitivePeerDependencies: - '@algolia/client-search' - algoliasearch dev: false - /@algolia/autocomplete-preset-algolia@1.8.2(@algolia/client-search@4.17.2)(algoliasearch@4.17.0): + /@algolia/autocomplete-preset-algolia@1.8.2(@algolia/client-search@4.19.1)(algoliasearch@4.17.0): resolution: {integrity: sha512-J0oTx4me6ZM9kIKPuL3lyU3aB8DEvpVvR6xWmHVROx5rOYJGQcZsdG4ozxwcOyiiu3qxMkIbzntnV1S1VWD8yA==} peerDependencies: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' dependencies: '@algolia/autocomplete-shared': 1.8.2 - '@algolia/client-search': 4.17.2 + '@algolia/client-search': 4.19.1 algoliasearch: 4.17.0 dev: false @@ -472,8 +427,8 @@ packages: resolution: {integrity: sha512-fvi1WT8aSiGAKrcTw8Qg3RYgcwW8GZMHcqEm4AyDBEy72JZlFBSY80cTQ75MslINjCHXLDT+9EN8AGI9WVY7uA==} dev: false - /@algolia/cache-common@4.17.2: - resolution: {integrity: sha512-fojbhYIS8ovfYs6hwZpy1O4mBfVRxNgAaZRqsdVQd54hU4MxYDYFCxagYX28lOBz7btcDHld6BMoWXvjzkx6iQ==} + /@algolia/cache-common@4.19.1: + resolution: {integrity: sha512-XGghi3l0qA38HiqdoUY+wvGyBsGvKZ6U3vTiMBT4hArhP3fOGLXpIINgMiiGjTe4FVlTa5a/7Zf2bwlIHfRqqg==} dev: false /@algolia/cache-in-memory@4.17.0: @@ -513,11 +468,11 @@ packages: '@algolia/transporter': 4.17.1 dev: false - /@algolia/client-common@4.17.2: - resolution: {integrity: sha512-gKBUnjxi0ukJYIJxVREYGt1Dmj1B3RBYbfGWi0dIPp1BC1VvQm+BOuNwsIwmq/x3MPO+sGuK978eKiP3tZDvag==} + /@algolia/client-common@4.19.1: + resolution: {integrity: sha512-3kAIVqTcPrjfS389KQvKzliC559x+BDRxtWamVJt8IVp7LGnjq+aVAXg4Xogkur1MUrScTZ59/AaUd5EdpyXgA==} dependencies: - '@algolia/requester-common': 4.17.2 - '@algolia/transporter': 4.17.2 + '@algolia/requester-common': 4.19.1 + '@algolia/transporter': 4.19.1 dev: false /@algolia/client-personalization@4.17.0: @@ -544,12 +499,12 @@ packages: '@algolia/transporter': 4.17.1 dev: false - /@algolia/client-search@4.17.2: - resolution: {integrity: sha512-FUjIs+gRe0upJC++uVs4sdxMw15JxfkT86Gr/kqVwi9kcqaZhXntSbW/Fw959bIYXczjmeVQsilYvBWW4YvSZA==} + /@algolia/client-search@4.19.1: + resolution: {integrity: sha512-mBecfMFS4N+yK/p0ZbK53vrZbL6OtWMk8YmnOv1i0LXx4pelY8TFhqKoTit3NPVPwoSNN0vdSN9dTu1xr1XOVw==} dependencies: - '@algolia/client-common': 4.17.2 - '@algolia/requester-common': 4.17.2 - '@algolia/transporter': 4.17.2 + '@algolia/client-common': 4.19.1 + '@algolia/requester-common': 4.19.1 + '@algolia/transporter': 4.19.1 dev: false /@algolia/events@4.0.1: @@ -564,8 +519,8 @@ packages: resolution: {integrity: sha512-Us28Ot+fLEmX9M96sa65VZ8EyEEzhYPxfhV9aQyKDjfXbUdJlJxKt6wZpoEg9RAPSdO8IjK9nmuW2P8au3rRsg==} dev: false - /@algolia/logger-common@4.17.2: - resolution: {integrity: sha512-EfXuweUE+1HiSMsQidaDWA5Lv4NnStYIlh7PO5pLkI+sdhbMX0e5AO5nUAMIFM1VkEANes70RA8fzhP6OqCqQQ==} + /@algolia/logger-common@4.19.1: + resolution: {integrity: sha512-i6pLPZW/+/YXKis8gpmSiNk1lOmYCmRI6+x6d2Qk1OdfvX051nRVdalRbEcVTpSQX6FQAoyeaui0cUfLYW5Elw==} dev: false /@algolia/logger-console@4.17.0: @@ -588,8 +543,8 @@ packages: resolution: {integrity: sha512-HggXdjvVFQR0I5l7hM5WdHgQ1tqcRWeyXZz8apQ7zPWZhirmY2E9D6LVhDh/UnWQNEm7nBtM+eMFONJ3bZccIQ==} dev: false - /@algolia/requester-common@4.17.2: - resolution: {integrity: sha512-Rfim23ztAhYpE9qm+KCfCRo+YLJCjiiTG+IpDdzUjMpYPhUtirQT0A35YEd/gKn86YNyydxS9w8iRSjwKh+L0A==} + /@algolia/requester-common@4.19.1: + resolution: {integrity: sha512-BisRkcWVxrDzF1YPhAckmi2CFYK+jdMT60q10d7z3PX+w6fPPukxHRnZwooiTUrzFe50UBmLItGizWHP5bDzVQ==} dev: false /@algolia/requester-node-http@4.17.0: @@ -614,12 +569,12 @@ packages: '@algolia/requester-common': 4.17.1 dev: false - /@algolia/transporter@4.17.2: - resolution: {integrity: sha512-m8pXlz5OnNzjD1rcw+duCN4jG4yEzkJBsvKYMoN22Oq6rQwy1AY5muZ+IQUs4dL+A364CYkRMLRWhvXpCZ1x+g==} + /@algolia/transporter@4.19.1: + resolution: {integrity: sha512-nkpvPWbpuzxo1flEYqNIbGz7xhfhGOKGAZS7tzC+TELgEmi7z99qRyTfNSUlW7LZmB3ACdnqAo+9A9KFBENviQ==} dependencies: - '@algolia/cache-common': 4.17.2 - '@algolia/logger-common': 4.17.2 - '@algolia/requester-common': 4.17.2 + '@algolia/cache-common': 4.19.1 + '@algolia/logger-common': 4.19.1 + '@algolia/requester-common': 4.19.1 dev: false /@alloc/quick-lru@5.2.0: @@ -635,6 +590,13 @@ packages: '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.18 + /@babel/code-frame@7.22.13: + resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.22.13 + chalk: 2.4.2 + /@babel/code-frame@7.22.5: resolution: {integrity: sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==} engines: {node: '>=6.9.0'} @@ -649,6 +611,7 @@ packages: /@babel/compat-data@7.22.5: resolution: {integrity: sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA==} engines: {node: '>=6.9.0'} + dev: false /@babel/compat-data@7.22.9: resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==} @@ -701,60 +664,61 @@ packages: - supports-color dev: false - /@babel/core@7.22.5: - resolution: {integrity: sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg==} + /@babel/core@7.22.15: + resolution: {integrity: sha512-PtZqMmgRrvj8ruoEOIwVA3yoF91O+Hgw9o7DAUTNBA6Mo2jpu31clx9a7Nz/9JznqetTR6zwfC4L3LAjKQXUwA==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.22.5 - '@babel/generator': 7.22.5 - '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.22.5) - '@babel/helper-module-transforms': 7.22.5 - '@babel/helpers': 7.22.5 - '@babel/parser': 7.22.5 - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.5 - '@babel/types': 7.22.5 + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.22.15 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-module-transforms': 7.22.15(@babel/core@7.22.15) + '@babel/helpers': 7.22.15 + '@babel/parser': 7.22.16 + '@babel/template': 7.22.15 + '@babel/traverse': 7.22.15 + '@babel/types': 7.22.15 convert-source-map: 1.9.0 debug: 4.3.4 gensync: 1.0.0-beta.2 json5: 2.2.3 - semver: 6.3.0 + semver: 6.3.1 transitivePeerDependencies: - supports-color - /@babel/core@7.22.9: - resolution: {integrity: sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w==} + /@babel/core@7.22.5: + resolution: {integrity: sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.1 '@babel/code-frame': 7.22.5 - '@babel/generator': 7.22.9 - '@babel/helper-compilation-targets': 7.22.9(@babel/core@7.22.9) - '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.9) - '@babel/helpers': 7.22.6 - '@babel/parser': 7.22.7 + '@babel/generator': 7.22.5 + '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.22.5) + '@babel/helper-module-transforms': 7.22.5 + '@babel/helpers': 7.22.5 + '@babel/parser': 7.22.5 '@babel/template': 7.22.5 - '@babel/traverse': 7.22.8 + '@babel/traverse': 7.22.5 '@babel/types': 7.22.5 convert-source-map: 1.9.0 debug: 4.3.4 gensync: 1.0.0-beta.2 json5: 2.2.3 - semver: 6.3.1 + semver: 6.3.0 transitivePeerDependencies: - supports-color + dev: false - /@babel/eslint-parser@7.22.9(@babel/core@7.22.9)(eslint@8.46.0): - resolution: {integrity: sha512-xdMkt39/nviO/4vpVdrEYPwXCsYIXSSAr6mC7WQsNIlGnuxKyKE7GZjalcnbSWiC4OXGNNN3UQPeHfjSC6sTDA==} + /@babel/eslint-parser@7.22.15(@babel/core@7.22.15)(eslint@8.49.0): + resolution: {integrity: sha512-yc8OOBIQk1EcRrpizuARSQS0TWAcOMpEJ1aafhNznaeYkeL+OhqnDObGFylB8ka8VFF/sZc+S4RzHyO+3LjQxg==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} peerDependencies: - '@babel/core': '>=7.11.0' + '@babel/core': ^7.11.0 eslint: ^7.5.0 || ^8.0.0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.22.15 '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 - eslint: 8.46.0 + eslint: 8.49.0 eslint-visitor-keys: 2.1.0 semver: 6.3.1 dev: true @@ -769,23 +733,24 @@ packages: jsesc: 2.5.2 dev: false - /@babel/generator@7.22.5: - resolution: {integrity: sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==} + /@babel/generator@7.22.15: + resolution: {integrity: sha512-Zu9oWARBqeVOW0dZOjXc3JObrzuqothQ3y/n1kUtrjCoCPLkXUwMvOo/F/TCfoHMbWIFlWwpZtkZVb9ga4U2pA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.22.15 '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.18 + '@jridgewell/trace-mapping': 0.3.19 jsesc: 2.5.2 - /@babel/generator@7.22.9: - resolution: {integrity: sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==} + /@babel/generator@7.22.5: + resolution: {integrity: sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.5 '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.18 jsesc: 2.5.2 + dev: false /@babel/helper-annotate-as-pure@7.18.6: resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} @@ -801,6 +766,16 @@ packages: '@babel/types': 7.22.5 dev: false + /@babel/helper-compilation-targets@7.22.15: + resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/compat-data': 7.22.9 + '@babel/helper-validator-option': 7.22.15 + browserslist: 4.21.10 + lru-cache: 5.1.1 + semver: 6.3.1 + /@babel/helper-compilation-targets@7.22.5(@babel/core@7.21.8): resolution: {integrity: sha512-Ji+ywpHeuqxB8WDxraCiqR0xfhYjiDE/e6k7FuIaANnoOFxAHskHChz4vA1mJC9Lbm01s1PVAGhQY4FUKSkGZw==} engines: {node: '>=6.9.0'} @@ -827,19 +802,7 @@ packages: browserslist: 4.21.9 lru-cache: 5.1.1 semver: 6.3.0 - - /@babel/helper-compilation-targets@7.22.9(@babel/core@7.22.9): - resolution: {integrity: sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/compat-data': 7.22.9 - '@babel/core': 7.22.9 - '@babel/helper-validator-option': 7.22.5 - browserslist: 4.21.9 - lru-cache: 5.1.1 - semver: 6.3.1 + dev: false /@babel/helper-create-class-features-plugin@7.21.8(@babel/core@7.21.8): resolution: {integrity: sha512-+THiN8MqiH2AczyuZrnrKL6cAxFRRQDKW9h1YkBvbgKmAm6mwiacig1qT73DHIWMGo40GRnsEfN3LA+E6NtmSw==} @@ -988,11 +951,31 @@ packages: '@babel/types': 7.21.5 dev: false + /@babel/helper-module-imports@7.22.15: + resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.15 + /@babel/helper-module-imports@7.22.5: resolution: {integrity: sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.5 + dev: false + + /@babel/helper-module-transforms@7.22.15(@babel/core@7.22.15): + resolution: {integrity: sha512-l1UiX4UyHSFsYt17iQ3Se5pQQZZHa22zyIXURmvkmLCD4t/aU+dvNWHatKac/D9Vm9UES7nvIqHs4jZqKviUmQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.15 /@babel/helper-module-transforms@7.22.5: resolution: {integrity: sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==} @@ -1008,19 +991,7 @@ packages: '@babel/types': 7.22.5 transitivePeerDependencies: - supports-color - - /@babel/helper-module-transforms@7.22.9(@babel/core@7.22.9): - resolution: {integrity: sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.22.9 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-module-imports': 7.22.5 - '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.5 + dev: false /@babel/helper-optimise-call-expression@7.18.6: resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} @@ -1118,12 +1089,13 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.5 + dev: false /@babel/helper-split-export-declaration@7.22.6: resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.22.15 /@babel/helper-string-parser@7.21.5: resolution: {integrity: sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w==} @@ -1139,6 +1111,10 @@ packages: engines: {node: '>=6.9.0'} dev: false + /@babel/helper-validator-identifier@7.22.15: + resolution: {integrity: sha512-4E/F9IIEi8WR94324mbDUMo074YTheJmd7eZF5vITTeYchqAi6sYXRLHUVsmkdmY4QjfKTcB2jB7dVP3NaBElQ==} + engines: {node: '>=6.9.0'} + /@babel/helper-validator-identifier@7.22.5: resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==} engines: {node: '>=6.9.0'} @@ -1148,9 +1124,14 @@ packages: engines: {node: '>=6.9.0'} dev: false + /@babel/helper-validator-option@7.22.15: + resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==} + engines: {node: '>=6.9.0'} + /@babel/helper-validator-option@7.22.5: resolution: {integrity: sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==} engines: {node: '>=6.9.0'} + dev: false /@babel/helper-wrap-function@7.20.5: resolution: {integrity: sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==} @@ -1164,6 +1145,16 @@ packages: - supports-color dev: false + /@babel/helpers@7.22.15: + resolution: {integrity: sha512-7pAjK0aSdxOwR+CcYAqgWOGy5dcfvzsTIfFTb2odQqW47MDfv14UaJDY6eng8ylM2EaeKXdxaSWESbkmaQHTmw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.15 + '@babel/traverse': 7.22.15 + '@babel/types': 7.22.15 + transitivePeerDependencies: + - supports-color + /@babel/helpers@7.22.5: resolution: {integrity: sha512-pSXRmfE1vzcUIDFQcSGA5Mr+GxBV9oiRKDuDxXvWQQBCh8HoIjs/2DlDB7H8smac1IVrB9/xdXj2N3Wol9Cr+Q==} engines: {node: '>=6.9.0'} @@ -1173,16 +1164,15 @@ packages: '@babel/types': 7.22.5 transitivePeerDependencies: - supports-color + dev: false - /@babel/helpers@7.22.6: - resolution: {integrity: sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==} + /@babel/highlight@7.22.13: + resolution: {integrity: sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.8 - '@babel/types': 7.22.5 - transitivePeerDependencies: - - supports-color + '@babel/helper-validator-identifier': 7.22.15 + chalk: 2.4.2 + js-tokens: 4.0.0 /@babel/highlight@7.22.5: resolution: {integrity: sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==} @@ -1192,15 +1182,15 @@ packages: chalk: 2.4.2 js-tokens: 4.0.0 - /@babel/parser@7.22.5: - resolution: {integrity: sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==} + /@babel/parser@7.22.16: + resolution: {integrity: sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.22.15 - /@babel/parser@7.22.7: - resolution: {integrity: sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==} + /@babel/parser@7.22.5: + resolution: {integrity: sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==} engines: {node: '>=6.0.0'} hasBin: true dependencies: @@ -2579,23 +2569,23 @@ packages: '@babel/plugin-transform-react-jsx': 7.21.5(@babel/core@7.22.5) dev: false - /@babel/plugin-transform-react-jsx-self@7.22.5(@babel/core@7.22.5): + /@babel/plugin-transform-react-jsx-self@7.22.5(@babel/core@7.22.15): resolution: {integrity: sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-react-jsx-source@7.22.5(@babel/core@7.22.5): + /@babel/plugin-transform-react-jsx-source@7.22.5(@babel/core@7.22.15): resolution: {integrity: sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -3163,6 +3153,12 @@ packages: regenerator-runtime: 0.13.11 dev: false + /@babel/runtime@7.22.15: + resolution: {integrity: sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.0 + /@babel/runtime@7.22.3: resolution: {integrity: sha512-XsDuspWKLUsxwCp6r7EhsExHtYfbe5oAGQ19kqngTdCPUoPQzOPdUbD/pB9PJiwb2ptYKQDjSJT3R6dC+EPqfQ==} engines: {node: '>=6.9.0'} @@ -3174,6 +3170,15 @@ packages: engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.13.11 + dev: false + + /@babel/template@7.22.15: + resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.22.13 + '@babel/parser': 7.22.16 + '@babel/types': 7.22.15 /@babel/template@7.22.5: resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==} @@ -3201,39 +3206,40 @@ packages: - supports-color dev: false - /@babel/traverse@7.22.5: - resolution: {integrity: sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==} + /@babel/traverse@7.22.15: + resolution: {integrity: sha512-DdHPwvJY0sEeN4xJU5uRLmZjgMMDIvMPniLuYzUVXj/GGzysPl0/fwt44JBkyUIzGJPV8QgHMcQdQ34XFuKTYQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.22.5 - '@babel/generator': 7.22.5 + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.22.15 '@babel/helper-environment-visitor': 7.22.5 '@babel/helper-function-name': 7.22.5 '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.5 - '@babel/parser': 7.22.5 - '@babel/types': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.22.16 + '@babel/types': 7.22.15 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color - /@babel/traverse@7.22.8: - resolution: {integrity: sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw==} + /@babel/traverse@7.22.5: + resolution: {integrity: sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.22.5 - '@babel/generator': 7.22.9 + '@babel/generator': 7.22.5 '@babel/helper-environment-visitor': 7.22.5 '@babel/helper-function-name': 7.22.5 '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.22.7 + '@babel/helper-split-export-declaration': 7.22.5 + '@babel/parser': 7.22.5 '@babel/types': 7.22.5 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color + dev: false /@babel/types@7.21.5: resolution: {integrity: sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q==} @@ -3244,6 +3250,14 @@ packages: to-fast-properties: 2.0.0 dev: false + /@babel/types@7.22.15: + resolution: {integrity: sha512-X+NLXr0N8XXmN5ZsaQdm9U2SSC3UbIYq/doL++sueHOTisgZHoKaQtZxGuV2cUPQHMfjKEfg/g6oy7Hm6SKFtA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.22.5 + '@babel/helper-validator-identifier': 7.22.15 + to-fast-properties: 2.0.0 + /@babel/types@7.22.5: resolution: {integrity: sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==} engines: {node: '>=6.9.0'} @@ -3252,67 +3266,67 @@ packages: '@babel/helper-validator-identifier': 7.22.5 to-fast-properties: 2.0.0 - /@chakra-ui/accordion@2.2.0(@chakra-ui/system@2.5.8)(framer-motion@10.12.16)(react@18.2.0): - resolution: {integrity: sha512-2IK1iLzTZ22u8GKPPPn65mqJdZidn4AvkgAbv17ISdKA07VHJ8jSd4QF1T5iCXjKfZ0XaXozmhP4kDhjwF2IbQ==} + /@chakra-ui/accordion@2.3.1(@chakra-ui/system@2.6.1)(framer-motion@10.16.4)(react@18.2.0): + resolution: {integrity: sha512-FSXRm8iClFyU+gVaXisOSEw0/4Q+qZbFRiuhIAkVU6Boj0FxAMrlo9a8AV5TuF77rgaHytCdHk0Ng+cyUijrag==} peerDependencies: '@chakra-ui/system': '>=2.0.0' framer-motion: '>=4.0.0' react: '>=18' dependencies: - '@chakra-ui/descendant': 3.0.14(react@18.2.0) - '@chakra-ui/icon': 3.0.16(@chakra-ui/system@2.5.8)(react@18.2.0) - '@chakra-ui/react-context': 2.0.8(react@18.2.0) - '@chakra-ui/react-use-controllable-state': 2.0.8(react@18.2.0) - '@chakra-ui/react-use-merge-refs': 2.0.7(react@18.2.0) + '@chakra-ui/descendant': 3.1.0(react@18.2.0) + '@chakra-ui/icon': 3.2.0(@chakra-ui/system@2.6.1)(react@18.2.0) + '@chakra-ui/react-context': 2.1.0(react@18.2.0) + '@chakra-ui/react-use-controllable-state': 2.1.0(react@18.2.0) + '@chakra-ui/react-use-merge-refs': 2.1.0(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.5.8(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) - '@chakra-ui/transition': 2.0.16(framer-motion@10.12.16)(react@18.2.0) - framer-motion: 10.12.16(react-dom@18.2.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/transition': 2.1.0(framer-motion@10.16.4)(react@18.2.0) + framer-motion: 10.16.4(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 dev: false - /@chakra-ui/alert@2.1.0(@chakra-ui/system@2.5.8)(react@18.2.0): - resolution: {integrity: sha512-OcfHwoXI5VrmM+tHJTHT62Bx6TfyfCxSa0PWUOueJzSyhlUOKBND5we6UtrOB7D0jwX45qKKEDJOLG5yCG21jQ==} + /@chakra-ui/alert@2.2.1(@chakra-ui/system@2.6.1)(react@18.2.0): + resolution: {integrity: sha512-GduIqqWCkvID8hxRlKw29Jp3w93r/E9S30J2F8By3ODon9Bhk1o/KVolcPiSiQvRwKNBJCd/rBTpPpLkB+s7pw==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' dependencies: - '@chakra-ui/icon': 3.0.16(@chakra-ui/system@2.5.8)(react@18.2.0) - '@chakra-ui/react-context': 2.0.8(react@18.2.0) + '@chakra-ui/icon': 3.2.0(@chakra-ui/system@2.6.1)(react@18.2.0) + '@chakra-ui/react-context': 2.1.0(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/spinner': 2.0.13(@chakra-ui/system@2.5.8)(react@18.2.0) - '@chakra-ui/system': 2.5.8(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/spinner': 2.1.0(@chakra-ui/system@2.6.1)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false - /@chakra-ui/anatomy@2.1.2: - resolution: {integrity: sha512-pKfOS/mztc4sUXHNc8ypJ1gPWSolWT770jrgVRfolVbYlki8y5Y+As996zMF6k5lewTu6j9DQequ7Cc9a69IVQ==} + /@chakra-ui/anatomy@2.2.1: + resolution: {integrity: sha512-bbmyWTGwQo+aHYDMtLIj7k7hcWvwE7GFVDViLFArrrPhfUTDdQTNqhiDp1N7eh2HLyjNhc2MKXV8s2KTQqkmTg==} dev: false - /@chakra-ui/avatar@2.2.11(@chakra-ui/system@2.5.8)(react@18.2.0): - resolution: {integrity: sha512-CJFkoWvlCTDJTUBrKA/aVyG5Zz6TBEIVmmsJtqC6VcQuVDTxkWod8ruXnjb0LT2DUveL7xR5qZM9a5IXcsH3zg==} + /@chakra-ui/avatar@2.3.0(@chakra-ui/system@2.6.1)(react@18.2.0): + resolution: {integrity: sha512-8gKSyLfygnaotbJbDMHDiJoF38OHXUYVme4gGxZ1fLnQEdPVEaIWfH+NndIjOM0z8S+YEFnT9KyGMUtvPrBk3g==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' dependencies: - '@chakra-ui/image': 2.0.16(@chakra-ui/system@2.5.8)(react@18.2.0) + '@chakra-ui/image': 2.1.0(@chakra-ui/system@2.6.1)(react@18.2.0) '@chakra-ui/react-children-utils': 2.0.6(react@18.2.0) - '@chakra-ui/react-context': 2.0.8(react@18.2.0) + '@chakra-ui/react-context': 2.1.0(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.5.8(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false - /@chakra-ui/breadcrumb@2.1.5(@chakra-ui/system@2.5.8)(react@18.2.0): - resolution: {integrity: sha512-p3eQQrHQBkRB69xOmNyBJqEdfCrMt+e0eOH+Pm/DjFWfIVIbnIaFbmDCeWClqlLa21Ypc6h1hR9jEmvg8kmOog==} + /@chakra-ui/breadcrumb@2.2.0(@chakra-ui/system@2.6.1)(react@18.2.0): + resolution: {integrity: sha512-4cWCG24flYBxjruRi4RJREWTGF74L/KzI2CognAW/d/zWR0CjiScuJhf37Am3LFbCySP6WSoyBOtTIoTA4yLEA==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' dependencies: '@chakra-ui/react-children-utils': 2.0.6(react@18.2.0) - '@chakra-ui/react-context': 2.0.8(react@18.2.0) + '@chakra-ui/react-context': 2.1.0(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.5.8(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false @@ -3322,120 +3336,120 @@ packages: '@chakra-ui/shared-utils': 2.0.5 dev: false - /@chakra-ui/button@2.0.18(@chakra-ui/system@2.5.8)(react@18.2.0): - resolution: {integrity: sha512-E3c99+lOm6ou4nQVOTLkG+IdOPMjsQK+Qe7VyP8A/xeAMFONuibrWPRPpprr4ZkB4kEoLMfNuyH2+aEza3ScUA==} + /@chakra-ui/button@2.1.0(@chakra-ui/system@2.6.1)(react@18.2.0): + resolution: {integrity: sha512-95CplwlRKmmUXkdEp/21VkEWgnwcx2TOBG6NfYlsuLBDHSLlo5FKIiE2oSi4zXc4TLcopGcWPNcm/NDaSC5pvA==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' dependencies: - '@chakra-ui/react-context': 2.0.8(react@18.2.0) - '@chakra-ui/react-use-merge-refs': 2.0.7(react@18.2.0) + '@chakra-ui/react-context': 2.1.0(react@18.2.0) + '@chakra-ui/react-use-merge-refs': 2.1.0(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/spinner': 2.0.13(@chakra-ui/system@2.5.8)(react@18.2.0) - '@chakra-ui/system': 2.5.8(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/spinner': 2.1.0(@chakra-ui/system@2.6.1)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false - /@chakra-ui/card@2.1.6(@chakra-ui/system@2.5.8)(react@18.2.0): - resolution: {integrity: sha512-fFd/WAdRNVY/WOSQv4skpy0WeVhhI0f7dTY1Sm0jVl0KLmuP/GnpsWtKtqWjNcV00K963EXDyhlk6+9oxbP4gw==} + /@chakra-ui/card@2.2.0(@chakra-ui/system@2.6.1)(react@18.2.0): + resolution: {integrity: sha512-xUB/k5MURj4CtPAhdSoXZidUbm8j3hci9vnc+eZJVDqhDOShNlD6QeniQNRPRys4lWAQLCbFcrwL29C8naDi6g==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' dependencies: '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.5.8(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false - /@chakra-ui/checkbox@2.2.15(@chakra-ui/system@2.5.8)(react@18.2.0): - resolution: {integrity: sha512-Ju2yQjX8azgFa5f6VLPuwdGYobZ+rdbcYqjiks848JvPc75UsPhpS05cb4XlrKT7M16I8txDA5rPJdqqFicHCA==} + /@chakra-ui/checkbox@2.3.1(@chakra-ui/system@2.6.1)(react@18.2.0): + resolution: {integrity: sha512-e6qL9ntVI/Ui6g0+iljUV2chX86YMsXafldpTHBNYDEoNLjGo1lqLFzq3y6zs3iuB3DHI0X7eAG3REmMVs0A0w==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' dependencies: - '@chakra-ui/form-control': 2.0.18(@chakra-ui/system@2.5.8)(react@18.2.0) - '@chakra-ui/react-context': 2.0.8(react@18.2.0) + '@chakra-ui/form-control': 2.1.1(@chakra-ui/system@2.6.1)(react@18.2.0) + '@chakra-ui/react-context': 2.1.0(react@18.2.0) '@chakra-ui/react-types': 2.0.7(react@18.2.0) - '@chakra-ui/react-use-callback-ref': 2.0.7(react@18.2.0) - '@chakra-ui/react-use-controllable-state': 2.0.8(react@18.2.0) - '@chakra-ui/react-use-merge-refs': 2.0.7(react@18.2.0) - '@chakra-ui/react-use-safe-layout-effect': 2.0.5(react@18.2.0) - '@chakra-ui/react-use-update-effect': 2.0.7(react@18.2.0) + '@chakra-ui/react-use-callback-ref': 2.1.0(react@18.2.0) + '@chakra-ui/react-use-controllable-state': 2.1.0(react@18.2.0) + '@chakra-ui/react-use-merge-refs': 2.1.0(react@18.2.0) + '@chakra-ui/react-use-safe-layout-effect': 2.1.0(react@18.2.0) + '@chakra-ui/react-use-update-effect': 2.1.0(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.5.8(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) - '@chakra-ui/visually-hidden': 2.0.15(@chakra-ui/system@2.5.8)(react@18.2.0) - '@zag-js/focus-visible': 0.2.2 + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/visually-hidden': 2.2.0(@chakra-ui/system@2.6.1)(react@18.2.0) + '@zag-js/focus-visible': 0.16.0 react: 18.2.0 dev: false - /@chakra-ui/clickable@2.0.14(react@18.2.0): - resolution: {integrity: sha512-jfsM1qaD74ZykLHmvmsKRhDyokLUxEfL8Il1VoZMNX5RBI0xW/56vKpLTFF/v/+vLPLS+Te2cZdD4+2O+G6ulA==} + /@chakra-ui/clickable@2.1.0(react@18.2.0): + resolution: {integrity: sha512-flRA/ClPUGPYabu+/GLREZVZr9j2uyyazCAUHAdrTUEdDYCr31SVGhgh7dgKdtq23bOvAQJpIJjw/0Bs0WvbXw==} peerDependencies: react: '>=18' dependencies: - '@chakra-ui/react-use-merge-refs': 2.0.7(react@18.2.0) + '@chakra-ui/react-use-merge-refs': 2.1.0(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 react: 18.2.0 dev: false - /@chakra-ui/close-button@2.0.17(@chakra-ui/system@2.5.8)(react@18.2.0): - resolution: {integrity: sha512-05YPXk456t1Xa3KpqTrvm+7smx+95dmaPiwjiBN3p7LHUQVHJd8ZXSDB0V+WKi419k3cVQeJUdU/azDO2f40sw==} + /@chakra-ui/close-button@2.1.1(@chakra-ui/system@2.6.1)(react@18.2.0): + resolution: {integrity: sha512-gnpENKOanKexswSVpVz7ojZEALl2x5qjLYNqSQGbxz+aP9sOXPfUS56ebyBrre7T7exuWGiFeRwnM0oVeGPaiw==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' dependencies: - '@chakra-ui/icon': 3.0.16(@chakra-ui/system@2.5.8)(react@18.2.0) - '@chakra-ui/system': 2.5.8(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/icon': 3.2.0(@chakra-ui/system@2.6.1)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false - /@chakra-ui/color-mode@2.1.12(react@18.2.0): - resolution: {integrity: sha512-sYyfJGDoJSLYO+V2hxV9r033qhte5Nw/wAn5yRGGZnEEN1dKPEdWQ3XZvglWSDTNd0w9zkoH2w6vP4FBBYb/iw==} + /@chakra-ui/color-mode@2.2.0(react@18.2.0): + resolution: {integrity: sha512-niTEA8PALtMWRI9wJ4LL0CSBDo8NBfLNp4GD6/0hstcm3IlbBHTVKxN6HwSaoNYfphDQLxCjT4yG+0BJA5tFpg==} peerDependencies: react: '>=18' dependencies: - '@chakra-ui/react-use-safe-layout-effect': 2.0.5(react@18.2.0) + '@chakra-ui/react-use-safe-layout-effect': 2.1.0(react@18.2.0) react: 18.2.0 dev: false - /@chakra-ui/control-box@2.0.13(@chakra-ui/system@2.5.8)(react@18.2.0): - resolution: {integrity: sha512-FEyrU4crxati80KUF/+1Z1CU3eZK6Sa0Yv7Z/ydtz9/tvGblXW9NFanoomXAOvcIFLbaLQPPATm9Gmpr7VG05A==} + /@chakra-ui/control-box@2.1.0(@chakra-ui/system@2.6.1)(react@18.2.0): + resolution: {integrity: sha512-gVrRDyXFdMd8E7rulL0SKeoljkLQiPITFnsyMO8EFHNZ+AHt5wK4LIguYVEq88APqAGZGfHFWXr79RYrNiE3Mg==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' dependencies: - '@chakra-ui/system': 2.5.8(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false - /@chakra-ui/counter@2.0.14(react@18.2.0): - resolution: {integrity: sha512-KxcSRfUbb94dP77xTip2myoE7P2HQQN4V5fRJmNAGbzcyLciJ+aDylUU/UxgNcEjawUp6Q242NbWb1TSbKoqog==} + /@chakra-ui/counter@2.1.0(react@18.2.0): + resolution: {integrity: sha512-s6hZAEcWT5zzjNz2JIWUBzRubo9la/oof1W7EKZVVfPYHERnl5e16FmBC79Yfq8p09LQ+aqFKm/etYoJMMgghw==} peerDependencies: react: '>=18' dependencies: '@chakra-ui/number-utils': 2.0.7 - '@chakra-ui/react-use-callback-ref': 2.0.7(react@18.2.0) + '@chakra-ui/react-use-callback-ref': 2.1.0(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 react: 18.2.0 dev: false - /@chakra-ui/css-reset@2.1.2(@emotion/react@11.11.1)(react@18.2.0): - resolution: {integrity: sha512-4ySTLd+3iRpp4lX0yI9Yo2uQm2f+qwYGNOZF0cNcfN+4UJCd3IsaWxYRR/Anz+M51NVldZbYzC+TEYC/kpJc4A==} + /@chakra-ui/css-reset@2.3.0(@emotion/react@11.11.1)(react@18.2.0): + resolution: {integrity: sha512-cQwwBy5O0jzvl0K7PLTLgp8ijqLPKyuEMiDXwYzl95seD3AoeuoCLyzZcJtVqaUZ573PiBdAbY/IlZcwDOItWg==} peerDependencies: '@emotion/react': '>=10.0.35' react: '>=18' dependencies: - '@emotion/react': 11.11.1(@types/react@18.2.12)(react@18.2.0) + '@emotion/react': 11.11.1(@types/react@18.2.21)(react@18.2.0) react: 18.2.0 dev: false - /@chakra-ui/descendant@3.0.14(react@18.2.0): - resolution: {integrity: sha512-+Ahvp9H4HMpfScIv9w1vaecGz7qWAaK1YFHHolz/SIsGLaLGlbdp+5UNabQC7L6TUnzzJDQDxzwif78rTD7ang==} + /@chakra-ui/descendant@3.1.0(react@18.2.0): + resolution: {integrity: sha512-VxCIAir08g5w27klLyi7PVo8BxhW4tgU/lxQyujkmi4zx7hT9ZdrcQLAted/dAa+aSIZ14S1oV0Q9lGjsAdxUQ==} peerDependencies: react: '>=18' dependencies: - '@chakra-ui/react-context': 2.0.8(react@18.2.0) - '@chakra-ui/react-use-merge-refs': 2.0.7(react@18.2.0) + '@chakra-ui/react-context': 2.1.0(react@18.2.0) + '@chakra-ui/react-use-merge-refs': 2.1.0(react@18.2.0) react: 18.2.0 dev: false @@ -3443,22 +3457,22 @@ packages: resolution: {integrity: sha512-ZmF2qRa1QZ0CMLU8M1zCfmw29DmPNtfjR9iTo74U5FPr3i1aoAh7fbJ4qAlZ197Xw9eAW28tvzQuoVWeL5C7fQ==} dev: false - /@chakra-ui/editable@3.0.0(@chakra-ui/system@2.5.8)(react@18.2.0): - resolution: {integrity: sha512-q/7C/TM3iLaoQKlEiM8AY565i9NoaXtS6N6N4HWIEL5mZJPbMeHKxrCHUZlHxYuQJqFOGc09ZPD9fAFx1GkYwQ==} + /@chakra-ui/editable@3.1.0(@chakra-ui/system@2.6.1)(react@18.2.0): + resolution: {integrity: sha512-j2JLrUL9wgg4YA6jLlbU88370eCRyor7DZQD9lzpY95tSOXpTljeg3uF9eOmDnCs6fxp3zDWIfkgMm/ExhcGTg==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' dependencies: - '@chakra-ui/react-context': 2.0.8(react@18.2.0) + '@chakra-ui/react-context': 2.1.0(react@18.2.0) '@chakra-ui/react-types': 2.0.7(react@18.2.0) - '@chakra-ui/react-use-callback-ref': 2.0.7(react@18.2.0) - '@chakra-ui/react-use-controllable-state': 2.0.8(react@18.2.0) - '@chakra-ui/react-use-focus-on-pointer-down': 2.0.6(react@18.2.0) - '@chakra-ui/react-use-merge-refs': 2.0.7(react@18.2.0) - '@chakra-ui/react-use-safe-layout-effect': 2.0.5(react@18.2.0) - '@chakra-ui/react-use-update-effect': 2.0.7(react@18.2.0) + '@chakra-ui/react-use-callback-ref': 2.1.0(react@18.2.0) + '@chakra-ui/react-use-controllable-state': 2.1.0(react@18.2.0) + '@chakra-ui/react-use-focus-on-pointer-down': 2.1.0(react@18.2.0) + '@chakra-ui/react-use-merge-refs': 2.1.0(react@18.2.0) + '@chakra-ui/react-use-safe-layout-effect': 2.1.0(react@18.2.0) + '@chakra-ui/react-use-update-effect': 2.1.0(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.5.8(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false @@ -3466,96 +3480,107 @@ packages: resolution: {integrity: sha512-IGM/yGUHS+8TOQrZGpAKOJl/xGBrmRYJrmbHfUE7zrG3PpQyXvbLDP1M+RggkCFVgHlJi2wpYIf0QtQlU0XZfw==} dev: false - /@chakra-ui/focus-lock@2.0.17(@types/react@18.2.12)(react@18.2.0): - resolution: {integrity: sha512-V+m4Ml9E8QY66DUpHX/imInVvz5XJ5zx59Tl0aNancXgeVY1Rt/ZdxuZdPLCAmPC/MF3GUOgnEA+WU8i+VL6Gw==} + /@chakra-ui/focus-lock@2.1.0(@types/react@18.2.21)(react@18.2.0): + resolution: {integrity: sha512-EmGx4PhWGjm4dpjRqM4Aa+rCWBxP+Rq8Uc/nAVnD4YVqkEhBkrPTpui2lnjsuxqNaZ24fIAZ10cF1hlpemte/w==} peerDependencies: react: '>=18' dependencies: '@chakra-ui/dom-utils': 2.1.0 react: 18.2.0 - react-focus-lock: 2.9.4(@types/react@18.2.12)(react@18.2.0) + react-focus-lock: 2.9.5(@types/react@18.2.21)(react@18.2.0) transitivePeerDependencies: - '@types/react' dev: false - /@chakra-ui/form-control@2.0.18(@chakra-ui/system@2.5.8)(react@18.2.0): - resolution: {integrity: sha512-I0a0jG01IAtRPccOXSNugyRdUAe8Dy40ctqedZvznMweOXzbMCF1m+sHPLdWeWC/VI13VoAispdPY0/zHOdjsQ==} + /@chakra-ui/form-control@2.1.1(@chakra-ui/system@2.6.1)(react@18.2.0): + resolution: {integrity: sha512-LJPDzA1ITc3lhd/iDiINqGeca5bJD09PZAjePGEmmZyLPZZi8nPh/iii0RMxvKyJArsTBwXymCh+dEqK9aDzGQ==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' dependencies: - '@chakra-ui/icon': 3.0.16(@chakra-ui/system@2.5.8)(react@18.2.0) - '@chakra-ui/react-context': 2.0.8(react@18.2.0) + '@chakra-ui/icon': 3.2.0(@chakra-ui/system@2.6.1)(react@18.2.0) + '@chakra-ui/react-context': 2.1.0(react@18.2.0) '@chakra-ui/react-types': 2.0.7(react@18.2.0) - '@chakra-ui/react-use-merge-refs': 2.0.7(react@18.2.0) + '@chakra-ui/react-use-merge-refs': 2.1.0(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.5.8(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false - /@chakra-ui/hooks@2.2.0(react@18.2.0): - resolution: {integrity: sha512-GZE64mcr20w+3KbCUPqQJHHmiFnX5Rcp8jS3YntGA4D5X2qU85jka7QkjfBwv/iduZ5Ei0YpCMYGCpi91dhD1Q==} + /@chakra-ui/hooks@2.2.1(react@18.2.0): + resolution: {integrity: sha512-RQbTnzl6b1tBjbDPf9zGRo9rf/pQMholsOudTxjy4i9GfTfz6kgp5ValGjQm2z7ng6Z31N1cnjZ1AlSzQ//ZfQ==} peerDependencies: react: '>=18' dependencies: '@chakra-ui/react-utils': 2.0.12(react@18.2.0) '@chakra-ui/utils': 2.0.15 - compute-scroll-into-view: 1.0.20 + compute-scroll-into-view: 3.0.3 copy-to-clipboard: 3.3.3 react: 18.2.0 dev: false - /@chakra-ui/icon@3.0.16(@chakra-ui/system@2.5.8)(react@18.2.0): - resolution: {integrity: sha512-RpA1X5Ptz8Mt39HSyEIW1wxAz2AXyf9H0JJ5HVx/dBdMZaGMDJ0HyyPBVci0m4RCoJuyG1HHG/DXJaVfUTVAeg==} + /@chakra-ui/icon@3.2.0(@chakra-ui/system@2.6.1)(react@18.2.0): + resolution: {integrity: sha512-xxjGLvlX2Ys4H0iHrI16t74rG9EBcpFvJ3Y3B7KMQTrnW34Kf7Da/UC8J67Gtx85mTHW020ml85SVPKORWNNKQ==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' dependencies: '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.5.8(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) + react: 18.2.0 + dev: false + + /@chakra-ui/icons@2.1.1(@chakra-ui/system@2.6.1)(react@18.2.0): + resolution: {integrity: sha512-3p30hdo4LlRZTT5CwoAJq3G9fHI0wDc0pBaMHj4SUn0yomO+RcDRlzhdXqdr5cVnzax44sqXJVnf3oQG0eI+4g==} + peerDependencies: + '@chakra-ui/system': '>=2.0.0' + react: '>=18' + dependencies: + '@chakra-ui/icon': 3.2.0(@chakra-ui/system@2.6.1)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false - /@chakra-ui/image@2.0.16(@chakra-ui/system@2.5.8)(react@18.2.0): - resolution: {integrity: sha512-iFypk1slgP3OK7VIPOtkB0UuiqVxNalgA59yoRM43xLIeZAEZpKngUVno4A2kFS61yKN0eIY4hXD3Xjm+25EJA==} + /@chakra-ui/image@2.1.0(@chakra-ui/system@2.6.1)(react@18.2.0): + resolution: {integrity: sha512-bskumBYKLiLMySIWDGcz0+D9Th0jPvmX6xnRMs4o92tT3Od/bW26lahmV2a2Op2ItXeCmRMY+XxJH5Gy1i46VA==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' dependencies: - '@chakra-ui/react-use-safe-layout-effect': 2.0.5(react@18.2.0) + '@chakra-ui/react-use-safe-layout-effect': 2.1.0(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.5.8(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false - /@chakra-ui/input@2.0.22(@chakra-ui/system@2.5.8)(react@18.2.0): - resolution: {integrity: sha512-dCIC0/Q7mjZf17YqgoQsnXn0bus6vgriTRn8VmxOc+WcVl+KBSTBWujGrS5yu85WIFQ0aeqQvziDnDQybPqAbA==} + /@chakra-ui/input@2.1.1(@chakra-ui/system@2.6.1)(react@18.2.0): + resolution: {integrity: sha512-RQYzQ/qcak3eCuCfvSqc1kEFx0sCcnIeiSi7i0r70CeBnAUK/CP1/4Uz849FpKz81K4z2SikC9MkHPQd8ZpOwg==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' dependencies: - '@chakra-ui/form-control': 2.0.18(@chakra-ui/system@2.5.8)(react@18.2.0) + '@chakra-ui/form-control': 2.1.1(@chakra-ui/system@2.6.1)(react@18.2.0) '@chakra-ui/object-utils': 2.1.0 '@chakra-ui/react-children-utils': 2.0.6(react@18.2.0) - '@chakra-ui/react-context': 2.0.8(react@18.2.0) + '@chakra-ui/react-context': 2.1.0(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.5.8(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false - /@chakra-ui/layout@2.2.0(@chakra-ui/system@2.5.8)(react@18.2.0): - resolution: {integrity: sha512-WvfsWQjqzbCxv7pbpPGVKxj9eQr7MC2i37ag4Wn7ClIG7uPuwHYTUWOnjnu27O3H/zA4cRVZ4Hs3GpSPbojZFQ==} + /@chakra-ui/layout@2.3.1(@chakra-ui/system@2.6.1)(react@18.2.0): + resolution: {integrity: sha512-nXuZ6WRbq0WdgnRgLw+QuxWAHuhDtVX8ElWqcTK+cSMFg/52eVP47czYBE5F35YhnoW2XBwfNoNgZ7+e8Z01Rg==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' dependencies: '@chakra-ui/breakpoint-utils': 2.0.8 - '@chakra-ui/icon': 3.0.16(@chakra-ui/system@2.5.8)(react@18.2.0) + '@chakra-ui/icon': 3.2.0(@chakra-ui/system@2.6.1)(react@18.2.0) '@chakra-ui/object-utils': 2.1.0 '@chakra-ui/react-children-utils': 2.0.6(react@18.2.0) - '@chakra-ui/react-context': 2.0.8(react@18.2.0) + '@chakra-ui/react-context': 2.1.0(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.5.8(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false @@ -3563,99 +3588,99 @@ packages: resolution: {integrity: sha512-UULqw7FBvcckQk2n3iPO56TMJvDsNv0FKZI6PlUNJVaGsPbsYxK/8IQ60vZgaTVPtVcjY6BE+y6zg8u9HOqpyg==} dev: false - /@chakra-ui/live-region@2.0.13(react@18.2.0): - resolution: {integrity: sha512-Ja+Slk6ZkxSA5oJzU2VuGU7TpZpbMb/4P4OUhIf2D30ctmIeXkxTWw1Bs1nGJAVtAPcGS5sKA+zb89i8g+0cTQ==} + /@chakra-ui/live-region@2.1.0(react@18.2.0): + resolution: {integrity: sha512-ZOxFXwtaLIsXjqnszYYrVuswBhnIHHP+XIgK1vC6DePKtyK590Wg+0J0slDwThUAd4MSSIUa/nNX84x1GMphWw==} peerDependencies: react: '>=18' dependencies: react: 18.2.0 dev: false - /@chakra-ui/media-query@3.2.12(@chakra-ui/system@2.5.8)(react@18.2.0): - resolution: {integrity: sha512-8pSLDf3oxxhFrhd40rs7vSeIBfvOmIKHA7DJlGUC/y+9irD24ZwgmCtFnn+y3gI47hTJsopbSX+wb8nr7XPswA==} + /@chakra-ui/media-query@3.3.0(@chakra-ui/system@2.6.1)(react@18.2.0): + resolution: {integrity: sha512-IsTGgFLoICVoPRp9ykOgqmdMotJG0CnPsKvGQeSFOB/dZfIujdVb14TYxDU4+MURXry1MhJ7LzZhv+Ml7cr8/g==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' dependencies: '@chakra-ui/breakpoint-utils': 2.0.8 - '@chakra-ui/react-env': 3.0.0(react@18.2.0) + '@chakra-ui/react-env': 3.1.0(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.5.8(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false - /@chakra-ui/menu@2.1.15(@chakra-ui/system@2.5.8)(framer-motion@10.12.16)(react@18.2.0): - resolution: {integrity: sha512-+1fh7KBKZyhy8wi7Q6nQAzrvjM6xggyhGMnSna0rt6FJVA2jlfkjb5FozyIVPnkfJKjkKd8THVhrs9E7pHNV/w==} + /@chakra-ui/menu@2.2.1(@chakra-ui/system@2.6.1)(framer-motion@10.16.4)(react@18.2.0): + resolution: {integrity: sha512-lJS7XEObzJxsOwWQh7yfG4H8FzFPRP5hVPN/CL+JzytEINCSBvsCDHrYPQGp7jzpCi8vnTqQQGQe0f8dwnXd2g==} peerDependencies: '@chakra-ui/system': '>=2.0.0' framer-motion: '>=4.0.0' react: '>=18' dependencies: - '@chakra-ui/clickable': 2.0.14(react@18.2.0) - '@chakra-ui/descendant': 3.0.14(react@18.2.0) + '@chakra-ui/clickable': 2.1.0(react@18.2.0) + '@chakra-ui/descendant': 3.1.0(react@18.2.0) '@chakra-ui/lazy-utils': 2.0.5 - '@chakra-ui/popper': 3.0.14(react@18.2.0) + '@chakra-ui/popper': 3.1.0(react@18.2.0) '@chakra-ui/react-children-utils': 2.0.6(react@18.2.0) - '@chakra-ui/react-context': 2.0.8(react@18.2.0) - '@chakra-ui/react-use-animation-state': 2.0.9(react@18.2.0) - '@chakra-ui/react-use-controllable-state': 2.0.8(react@18.2.0) - '@chakra-ui/react-use-disclosure': 2.0.8(react@18.2.0) - '@chakra-ui/react-use-focus-effect': 2.0.11(react@18.2.0) - '@chakra-ui/react-use-merge-refs': 2.0.7(react@18.2.0) - '@chakra-ui/react-use-outside-click': 2.1.0(react@18.2.0) - '@chakra-ui/react-use-update-effect': 2.0.7(react@18.2.0) + '@chakra-ui/react-context': 2.1.0(react@18.2.0) + '@chakra-ui/react-use-animation-state': 2.1.0(react@18.2.0) + '@chakra-ui/react-use-controllable-state': 2.1.0(react@18.2.0) + '@chakra-ui/react-use-disclosure': 2.1.0(react@18.2.0) + '@chakra-ui/react-use-focus-effect': 2.1.0(react@18.2.0) + '@chakra-ui/react-use-merge-refs': 2.1.0(react@18.2.0) + '@chakra-ui/react-use-outside-click': 2.2.0(react@18.2.0) + '@chakra-ui/react-use-update-effect': 2.1.0(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.5.8(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) - '@chakra-ui/transition': 2.0.16(framer-motion@10.12.16)(react@18.2.0) - framer-motion: 10.12.16(react-dom@18.2.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/transition': 2.1.0(framer-motion@10.16.4)(react@18.2.0) + framer-motion: 10.16.4(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 dev: false - /@chakra-ui/modal@2.2.12(@chakra-ui/system@2.5.8)(@types/react@18.2.12)(framer-motion@10.12.16)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-F1nNmYGvyqlmxidbwaBM3y57NhZ/Qeyc8BE9tb1FL1v9nxQhkfrPvMQ9miK0O1syPN6aZ5MMj+uD3AsRFE+/tA==} + /@chakra-ui/modal@2.3.1(@chakra-ui/system@2.6.1)(@types/react@18.2.21)(framer-motion@10.16.4)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-TQv1ZaiJMZN+rR9DK0snx/OPwmtaGH1HbZtlYt4W4s6CzyK541fxLRTjIXfEzIGpvNW+b6VFuFjbcR78p4DEoQ==} peerDependencies: '@chakra-ui/system': '>=2.0.0' framer-motion: '>=4.0.0' react: '>=18' react-dom: '>=18' dependencies: - '@chakra-ui/close-button': 2.0.17(@chakra-ui/system@2.5.8)(react@18.2.0) - '@chakra-ui/focus-lock': 2.0.17(@types/react@18.2.12)(react@18.2.0) - '@chakra-ui/portal': 2.0.16(react-dom@18.2.0)(react@18.2.0) - '@chakra-ui/react-context': 2.0.8(react@18.2.0) + '@chakra-ui/close-button': 2.1.1(@chakra-ui/system@2.6.1)(react@18.2.0) + '@chakra-ui/focus-lock': 2.1.0(@types/react@18.2.21)(react@18.2.0) + '@chakra-ui/portal': 2.1.0(react-dom@18.2.0)(react@18.2.0) + '@chakra-ui/react-context': 2.1.0(react@18.2.0) '@chakra-ui/react-types': 2.0.7(react@18.2.0) - '@chakra-ui/react-use-merge-refs': 2.0.7(react@18.2.0) + '@chakra-ui/react-use-merge-refs': 2.1.0(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.5.8(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) - '@chakra-ui/transition': 2.0.16(framer-motion@10.12.16)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/transition': 2.1.0(framer-motion@10.16.4)(react@18.2.0) aria-hidden: 1.2.3 - framer-motion: 10.12.16(react-dom@18.2.0)(react@18.2.0) + framer-motion: 10.16.4(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.6(@types/react@18.2.12)(react@18.2.0) + react-remove-scroll: 2.5.6(@types/react@18.2.21)(react@18.2.0) transitivePeerDependencies: - '@types/react' dev: false - /@chakra-ui/number-input@2.0.19(@chakra-ui/system@2.5.8)(react@18.2.0): - resolution: {integrity: sha512-HDaITvtMEqOauOrCPsARDxKD9PSHmhWywpcyCSOX0lMe4xx2aaGhU0QQFhsJsykj8Er6pytMv6t0KZksdDv3YA==} + /@chakra-ui/number-input@2.1.1(@chakra-ui/system@2.6.1)(react@18.2.0): + resolution: {integrity: sha512-B4xwUPyr0NmjGN/dBhOmCD2xjX6OY1pr9GmGH3GQRozMsLAClD3TibwiZetwlyCp02qQqiFwEcZmUxaX88794Q==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' dependencies: - '@chakra-ui/counter': 2.0.14(react@18.2.0) - '@chakra-ui/form-control': 2.0.18(@chakra-ui/system@2.5.8)(react@18.2.0) - '@chakra-ui/icon': 3.0.16(@chakra-ui/system@2.5.8)(react@18.2.0) - '@chakra-ui/react-context': 2.0.8(react@18.2.0) + '@chakra-ui/counter': 2.1.0(react@18.2.0) + '@chakra-ui/form-control': 2.1.1(@chakra-ui/system@2.6.1)(react@18.2.0) + '@chakra-ui/icon': 3.2.0(@chakra-ui/system@2.6.1)(react@18.2.0) + '@chakra-ui/react-context': 2.1.0(react@18.2.0) '@chakra-ui/react-types': 2.0.7(react@18.2.0) - '@chakra-ui/react-use-callback-ref': 2.0.7(react@18.2.0) - '@chakra-ui/react-use-event-listener': 2.0.7(react@18.2.0) - '@chakra-ui/react-use-interval': 2.0.5(react@18.2.0) - '@chakra-ui/react-use-merge-refs': 2.0.7(react@18.2.0) - '@chakra-ui/react-use-safe-layout-effect': 2.0.5(react@18.2.0) - '@chakra-ui/react-use-update-effect': 2.0.7(react@18.2.0) + '@chakra-ui/react-use-callback-ref': 2.1.0(react@18.2.0) + '@chakra-ui/react-use-event-listener': 2.1.0(react@18.2.0) + '@chakra-ui/react-use-interval': 2.1.0(react@18.2.0) + '@chakra-ui/react-use-merge-refs': 2.1.0(react@18.2.0) + '@chakra-ui/react-use-safe-layout-effect': 2.1.0(react@18.2.0) + '@chakra-ui/react-use-update-effect': 2.1.0(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.5.8(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false @@ -3667,111 +3692,111 @@ packages: resolution: {integrity: sha512-tgIZOgLHaoti5PYGPTwK3t/cqtcycW0owaiOXoZOcpwwX/vlVb+H1jFsQyWiiwQVPt9RkoSLtxzXamx+aHH+bQ==} dev: false - /@chakra-ui/pin-input@2.0.20(@chakra-ui/system@2.5.8)(react@18.2.0): - resolution: {integrity: sha512-IHVmerrtHN8F+jRB3W1HnMir1S1TUCWhI7qDInxqPtoRffHt6mzZgLZ0izx8p1fD4HkW4c1d4/ZLEz9uH9bBRg==} + /@chakra-ui/pin-input@2.1.0(@chakra-ui/system@2.6.1)(react@18.2.0): + resolution: {integrity: sha512-x4vBqLStDxJFMt+jdAHHS8jbh294O53CPQJoL4g228P513rHylV/uPscYUHrVJXRxsHfRztQO9k45jjTYaPRMw==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' dependencies: - '@chakra-ui/descendant': 3.0.14(react@18.2.0) + '@chakra-ui/descendant': 3.1.0(react@18.2.0) '@chakra-ui/react-children-utils': 2.0.6(react@18.2.0) - '@chakra-ui/react-context': 2.0.8(react@18.2.0) - '@chakra-ui/react-use-controllable-state': 2.0.8(react@18.2.0) - '@chakra-ui/react-use-merge-refs': 2.0.7(react@18.2.0) + '@chakra-ui/react-context': 2.1.0(react@18.2.0) + '@chakra-ui/react-use-controllable-state': 2.1.0(react@18.2.0) + '@chakra-ui/react-use-merge-refs': 2.1.0(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.5.8(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false - /@chakra-ui/popover@2.1.12(@chakra-ui/system@2.5.8)(framer-motion@10.12.16)(react@18.2.0): - resolution: {integrity: sha512-Corh8trA1f3ydcMQqomgSvYNNhAlpxiBpMY2sglwYazOJcueHA8CI05cJVD0T/wwoTob7BShabhCGFZThn61Ng==} + /@chakra-ui/popover@2.2.1(@chakra-ui/system@2.6.1)(framer-motion@10.16.4)(react@18.2.0): + resolution: {integrity: sha512-K+2ai2dD0ljvJnlrzesCDT9mNzLifE3noGKZ3QwLqd/K34Ym1W/0aL1ERSynrcG78NKoXS54SdEzkhCZ4Gn/Zg==} peerDependencies: '@chakra-ui/system': '>=2.0.0' framer-motion: '>=4.0.0' react: '>=18' dependencies: - '@chakra-ui/close-button': 2.0.17(@chakra-ui/system@2.5.8)(react@18.2.0) + '@chakra-ui/close-button': 2.1.1(@chakra-ui/system@2.6.1)(react@18.2.0) '@chakra-ui/lazy-utils': 2.0.5 - '@chakra-ui/popper': 3.0.14(react@18.2.0) - '@chakra-ui/react-context': 2.0.8(react@18.2.0) + '@chakra-ui/popper': 3.1.0(react@18.2.0) + '@chakra-ui/react-context': 2.1.0(react@18.2.0) '@chakra-ui/react-types': 2.0.7(react@18.2.0) - '@chakra-ui/react-use-animation-state': 2.0.9(react@18.2.0) - '@chakra-ui/react-use-disclosure': 2.0.8(react@18.2.0) - '@chakra-ui/react-use-focus-effect': 2.0.11(react@18.2.0) - '@chakra-ui/react-use-focus-on-pointer-down': 2.0.6(react@18.2.0) - '@chakra-ui/react-use-merge-refs': 2.0.7(react@18.2.0) + '@chakra-ui/react-use-animation-state': 2.1.0(react@18.2.0) + '@chakra-ui/react-use-disclosure': 2.1.0(react@18.2.0) + '@chakra-ui/react-use-focus-effect': 2.1.0(react@18.2.0) + '@chakra-ui/react-use-focus-on-pointer-down': 2.1.0(react@18.2.0) + '@chakra-ui/react-use-merge-refs': 2.1.0(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.5.8(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) - framer-motion: 10.12.16(react-dom@18.2.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) + framer-motion: 10.16.4(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 dev: false - /@chakra-ui/popper@3.0.14(react@18.2.0): - resolution: {integrity: sha512-RDMmmSfjsmHJbVn2agDyoJpTbQK33fxx//njwJdeyM0zTG/3/4xjI/Cxru3acJ2Y+1jFGmPqhO81stFjnbtfIw==} + /@chakra-ui/popper@3.1.0(react@18.2.0): + resolution: {integrity: sha512-ciDdpdYbeFG7og6/6J8lkTFxsSvwTdMLFkpVylAF6VNC22jssiWfquj2eyD4rJnzkRFPvIWJq8hvbfhsm+AjSg==} peerDependencies: react: '>=18' dependencies: '@chakra-ui/react-types': 2.0.7(react@18.2.0) - '@chakra-ui/react-use-merge-refs': 2.0.7(react@18.2.0) + '@chakra-ui/react-use-merge-refs': 2.1.0(react@18.2.0) '@popperjs/core': 2.11.8 react: 18.2.0 dev: false - /@chakra-ui/portal@2.0.16(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-bVID0qbQ0l4xq38LdqAN4EKD4/uFkDnXzFwOlviC9sl0dNhzICDb1ltuH/Adl1d2HTMqyN60O3GO58eHy7plnQ==} + /@chakra-ui/portal@2.1.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-9q9KWf6SArEcIq1gGofNcFPSWEyl+MfJjEUg/un1SMlQjaROOh3zYr+6JAwvcORiX7tyHosnmWC3d3wI2aPSQg==} peerDependencies: react: '>=18' react-dom: '>=18' dependencies: - '@chakra-ui/react-context': 2.0.8(react@18.2.0) - '@chakra-ui/react-use-safe-layout-effect': 2.0.5(react@18.2.0) + '@chakra-ui/react-context': 2.1.0(react@18.2.0) + '@chakra-ui/react-use-safe-layout-effect': 2.1.0(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@chakra-ui/progress@2.1.6(@chakra-ui/system@2.5.8)(react@18.2.0): - resolution: {integrity: sha512-hHh5Ysv4z6bK+j2GJbi/FT9CVyto2PtNUNwBmr3oNMVsoOUMoRjczfXvvYqp0EHr9PCpxqrq7sRwgQXUzhbDSw==} + /@chakra-ui/progress@2.2.0(@chakra-ui/system@2.6.1)(react@18.2.0): + resolution: {integrity: sha512-qUXuKbuhN60EzDD9mHR7B67D7p/ZqNS2Aze4Pbl1qGGZfulPW0PY8Rof32qDtttDQBkzQIzFGE8d9QpAemToIQ==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' dependencies: - '@chakra-ui/react-context': 2.0.8(react@18.2.0) - '@chakra-ui/system': 2.5.8(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/react-context': 2.1.0(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false - /@chakra-ui/provider@2.3.0(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-vKgmjoLVS3NnHW8RSYwmhhda2ZTi3fQc1egkYSVwngGky4CsN15I+XDhxJitVd66H41cjah/UNJyoeq7ACseLA==} + /@chakra-ui/provider@2.4.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-u4g02V9tJ9vVYfkLz5jBn/bKlAyjLdg4Sh3f7uckmYVAZpOL/uUlrStyADrynu3tZhI+BE8XdmXC4zs/SYD7ow==} peerDependencies: '@emotion/react': ^11.0.0 '@emotion/styled': ^11.0.0 react: '>=18' react-dom: '>=18' dependencies: - '@chakra-ui/css-reset': 2.1.2(@emotion/react@11.11.1)(react@18.2.0) - '@chakra-ui/portal': 2.0.16(react-dom@18.2.0)(react@18.2.0) - '@chakra-ui/react-env': 3.0.0(react@18.2.0) - '@chakra-ui/system': 2.5.8(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/css-reset': 2.3.0(@emotion/react@11.11.1)(react@18.2.0) + '@chakra-ui/portal': 2.1.0(react-dom@18.2.0)(react@18.2.0) + '@chakra-ui/react-env': 3.1.0(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) '@chakra-ui/utils': 2.0.15 - '@emotion/react': 11.11.1(@types/react@18.2.12)(react@18.2.0) - '@emotion/styled': 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.12)(react@18.2.0) + '@emotion/react': 11.11.1(@types/react@18.2.21)(react@18.2.0) + '@emotion/styled': 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.21)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@chakra-ui/radio@2.0.22(@chakra-ui/system@2.5.8)(react@18.2.0): - resolution: {integrity: sha512-GsQ5WAnLwivWl6gPk8P1x+tCcpVakCt5R5T0HumF7DGPXKdJbjS+RaFySrbETmyTJsKY4QrfXn+g8CWVrMjPjw==} + /@chakra-ui/radio@2.1.1(@chakra-ui/system@2.6.1)(react@18.2.0): + resolution: {integrity: sha512-5JXDVvMWsF/Cprh6BKfcTLbLtRcgD6Wl2zwbNU30nmKIE8+WUfqD7JQETV08oWEzhi3Ea4e5EHvyll2sGx8H3w==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' dependencies: - '@chakra-ui/form-control': 2.0.18(@chakra-ui/system@2.5.8)(react@18.2.0) - '@chakra-ui/react-context': 2.0.8(react@18.2.0) + '@chakra-ui/form-control': 2.1.1(@chakra-ui/system@2.6.1)(react@18.2.0) + '@chakra-ui/react-context': 2.1.0(react@18.2.0) '@chakra-ui/react-types': 2.0.7(react@18.2.0) - '@chakra-ui/react-use-merge-refs': 2.0.7(react@18.2.0) + '@chakra-ui/react-use-merge-refs': 2.1.0(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.5.8(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) - '@zag-js/focus-visible': 0.2.2 + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) + '@zag-js/focus-visible': 0.16.0 react: 18.2.0 dev: false @@ -3783,20 +3808,20 @@ packages: react: 18.2.0 dev: false - /@chakra-ui/react-context@2.0.8(react@18.2.0): - resolution: {integrity: sha512-tRTKdn6lCTXM6WPjSokAAKCw2ioih7Eg8cNgaYRSwKBck8nkz9YqxgIIEj3dJD7MGtpl24S/SNI98iRWkRwR/A==} + /@chakra-ui/react-context@2.1.0(react@18.2.0): + resolution: {integrity: sha512-iahyStvzQ4AOwKwdPReLGfDesGG+vWJfEsn0X/NoGph/SkN+HXtv2sCfYFFR9k7bb+Kvc6YfpLlSuLvKMHi2+w==} peerDependencies: react: '>=18' dependencies: react: 18.2.0 dev: false - /@chakra-ui/react-env@3.0.0(react@18.2.0): - resolution: {integrity: sha512-tfMRO2v508HQWAqSADFrwZgR9oU10qC97oV6zGbjHh9ALP0/IcFR+Bi71KRTveDTm85fMeAzZYGj57P3Dsipkw==} + /@chakra-ui/react-env@3.1.0(react@18.2.0): + resolution: {integrity: sha512-Vr96GV2LNBth3+IKzr/rq1IcnkXv+MLmwjQH6C8BRtn3sNskgDFD5vLkVXcEhagzZMCh8FR3V/bzZPojBOyNhw==} peerDependencies: react: '>=18' dependencies: - '@chakra-ui/react-use-safe-layout-effect': 2.0.5(react@18.2.0) + '@chakra-ui/react-use-safe-layout-effect': 2.1.0(react@18.2.0) react: 18.2.0 dev: false @@ -3808,153 +3833,153 @@ packages: react: 18.2.0 dev: false - /@chakra-ui/react-use-animation-state@2.0.9(react@18.2.0): - resolution: {integrity: sha512-WFoD5OG03PBmzJCoRwM8rVfU442AvKBPPgA0yGGlKioH29OGuX7W78Ml+cYdXxonTiB03YSRZzUwaUnP4wAy1Q==} + /@chakra-ui/react-use-animation-state@2.1.0(react@18.2.0): + resolution: {integrity: sha512-CFZkQU3gmDBwhqy0vC1ryf90BVHxVN8cTLpSyCpdmExUEtSEInSCGMydj2fvn7QXsz/za8JNdO2xxgJwxpLMtg==} peerDependencies: react: '>=18' dependencies: '@chakra-ui/dom-utils': 2.1.0 - '@chakra-ui/react-use-event-listener': 2.0.7(react@18.2.0) + '@chakra-ui/react-use-event-listener': 2.1.0(react@18.2.0) react: 18.2.0 dev: false - /@chakra-ui/react-use-callback-ref@2.0.7(react@18.2.0): - resolution: {integrity: sha512-YjT76nTpfHAK5NxplAlZsQwNju5KmQExnqsWNPFeOR6vvbC34+iPSTr+r91i1Hdy7gBSbevsOsd5Wm6RN3GuMw==} + /@chakra-ui/react-use-callback-ref@2.1.0(react@18.2.0): + resolution: {integrity: sha512-efnJrBtGDa4YaxDzDE90EnKD3Vkh5a1t3w7PhnRQmsphLy3g2UieasoKTlT2Hn118TwDjIv5ZjHJW6HbzXA9wQ==} peerDependencies: react: '>=18' dependencies: react: 18.2.0 dev: false - /@chakra-ui/react-use-controllable-state@2.0.8(react@18.2.0): - resolution: {integrity: sha512-F7rdCbLEmRjwwODqWZ3y+mKgSSHPcLQxeUygwk1BkZPXbKkJJKymOIjIynil2cbH7ku3hcSIWRvuhpCcfQWJ7Q==} + /@chakra-ui/react-use-controllable-state@2.1.0(react@18.2.0): + resolution: {integrity: sha512-QR/8fKNokxZUs4PfxjXuwl0fj/d71WPrmLJvEpCTkHjnzu7LnYvzoe2wB867IdooQJL0G1zBxl0Dq+6W1P3jpg==} peerDependencies: react: '>=18' dependencies: - '@chakra-ui/react-use-callback-ref': 2.0.7(react@18.2.0) + '@chakra-ui/react-use-callback-ref': 2.1.0(react@18.2.0) react: 18.2.0 dev: false - /@chakra-ui/react-use-disclosure@2.0.8(react@18.2.0): - resolution: {integrity: sha512-2ir/mHe1YND40e+FyLHnDsnDsBQPwzKDLzfe9GZri7y31oU83JSbHdlAXAhp3bpjohslwavtRCp+S/zRxfO9aQ==} + /@chakra-ui/react-use-disclosure@2.1.0(react@18.2.0): + resolution: {integrity: sha512-Ax4pmxA9LBGMyEZJhhUZobg9C0t3qFE4jVF1tGBsrLDcdBeLR9fwOogIPY9Hf0/wqSlAryAimICbr5hkpa5GSw==} peerDependencies: react: '>=18' dependencies: - '@chakra-ui/react-use-callback-ref': 2.0.7(react@18.2.0) + '@chakra-ui/react-use-callback-ref': 2.1.0(react@18.2.0) react: 18.2.0 dev: false - /@chakra-ui/react-use-event-listener@2.0.7(react@18.2.0): - resolution: {integrity: sha512-4wvpx4yudIO3B31pOrXuTHDErawmwiXnvAN7gLEOVREi16+YGNcFnRJ5X5nRrmB7j2MDUtsEDpRBFfw5Z9xQ5g==} + /@chakra-ui/react-use-event-listener@2.1.0(react@18.2.0): + resolution: {integrity: sha512-U5greryDLS8ISP69DKDsYcsXRtAdnTQT+jjIlRYZ49K/XhUR/AqVZCK5BkR1spTDmO9H8SPhgeNKI70ODuDU/Q==} peerDependencies: react: '>=18' dependencies: - '@chakra-ui/react-use-callback-ref': 2.0.7(react@18.2.0) + '@chakra-ui/react-use-callback-ref': 2.1.0(react@18.2.0) react: 18.2.0 dev: false - /@chakra-ui/react-use-focus-effect@2.0.11(react@18.2.0): - resolution: {integrity: sha512-/zadgjaCWD50TfuYsO1vDS2zSBs2p/l8P2DPEIA8FuaowbBubKrk9shKQDWmbfDU7KArGxPxrvo+VXvskPPjHw==} + /@chakra-ui/react-use-focus-effect@2.1.0(react@18.2.0): + resolution: {integrity: sha512-xzVboNy7J64xveLcxTIJ3jv+lUJKDwRM7Szwn9tNzUIPD94O3qwjV7DDCUzN2490nSYDF4OBMt/wuDBtaR3kUQ==} peerDependencies: react: '>=18' dependencies: '@chakra-ui/dom-utils': 2.1.0 - '@chakra-ui/react-use-event-listener': 2.0.7(react@18.2.0) - '@chakra-ui/react-use-safe-layout-effect': 2.0.5(react@18.2.0) - '@chakra-ui/react-use-update-effect': 2.0.7(react@18.2.0) + '@chakra-ui/react-use-event-listener': 2.1.0(react@18.2.0) + '@chakra-ui/react-use-safe-layout-effect': 2.1.0(react@18.2.0) + '@chakra-ui/react-use-update-effect': 2.1.0(react@18.2.0) react: 18.2.0 dev: false - /@chakra-ui/react-use-focus-on-pointer-down@2.0.6(react@18.2.0): - resolution: {integrity: sha512-OigXiLRVySn3tyVqJ/rn57WGuukW8TQe8fJYiLwXbcNyAMuYYounvRxvCy2b53sQ7QIZamza0N0jhirbH5FNoQ==} + /@chakra-ui/react-use-focus-on-pointer-down@2.1.0(react@18.2.0): + resolution: {integrity: sha512-2jzrUZ+aiCG/cfanrolsnSMDykCAbv9EK/4iUyZno6BYb3vziucmvgKuoXbMPAzWNtwUwtuMhkby8rc61Ue+Lg==} peerDependencies: react: '>=18' dependencies: - '@chakra-ui/react-use-event-listener': 2.0.7(react@18.2.0) + '@chakra-ui/react-use-event-listener': 2.1.0(react@18.2.0) react: 18.2.0 dev: false - /@chakra-ui/react-use-interval@2.0.5(react@18.2.0): - resolution: {integrity: sha512-1nbdwMi2K87V6p5f5AseOKif2CkldLaJlq1TOqaPRwb7v3aU9rltBtYdf+fIyuHSToNJUV6wd9budCFdLCl3Fg==} + /@chakra-ui/react-use-interval@2.1.0(react@18.2.0): + resolution: {integrity: sha512-8iWj+I/+A0J08pgEXP1J1flcvhLBHkk0ln7ZvGIyXiEyM6XagOTJpwNhiu+Bmk59t3HoV/VyvyJTa+44sEApuw==} peerDependencies: react: '>=18' dependencies: - '@chakra-ui/react-use-callback-ref': 2.0.7(react@18.2.0) + '@chakra-ui/react-use-callback-ref': 2.1.0(react@18.2.0) react: 18.2.0 dev: false - /@chakra-ui/react-use-latest-ref@2.0.5(react@18.2.0): - resolution: {integrity: sha512-3mIuFzMyIo3Ok/D8uhV9voVg7KkrYVO/pwVvNPJOHsDQqCA6DpYE4WDsrIx+fVcwad3Ta7SupexR5PoI+kq6QQ==} + /@chakra-ui/react-use-latest-ref@2.1.0(react@18.2.0): + resolution: {integrity: sha512-m0kxuIYqoYB0va9Z2aW4xP/5b7BzlDeWwyXCH6QpT2PpW3/281L3hLCm1G0eOUcdVlayqrQqOeD6Mglq+5/xoQ==} peerDependencies: react: '>=18' dependencies: react: 18.2.0 dev: false - /@chakra-ui/react-use-merge-refs@2.0.7(react@18.2.0): - resolution: {integrity: sha512-zds4Uhsc+AMzdH8JDDkLVet9baUBgtOjPbhC5r3A0ZXjZvGhCztFAVE3aExYiVoMPoHLKbLcqvCWE6ioFKz1lw==} + /@chakra-ui/react-use-merge-refs@2.1.0(react@18.2.0): + resolution: {integrity: sha512-lERa6AWF1cjEtWSGjxWTaSMvneccnAVH4V4ozh8SYiN9fSPZLlSG3kNxfNzdFvMEhM7dnP60vynF7WjGdTgQbQ==} peerDependencies: react: '>=18' dependencies: react: 18.2.0 dev: false - /@chakra-ui/react-use-outside-click@2.1.0(react@18.2.0): - resolution: {integrity: sha512-JanCo4QtWvMl9ZZUpKJKV62RlMWDFdPCE0Q64a7eWTOQgWWcpyBW7TOYRunQTqrK30FqkYFJCOlAWOtn+6Rw7A==} + /@chakra-ui/react-use-outside-click@2.2.0(react@18.2.0): + resolution: {integrity: sha512-PNX+s/JEaMneijbgAM4iFL+f3m1ga9+6QK0E5Yh4s8KZJQ/bLwZzdhMz8J/+mL+XEXQ5J0N8ivZN28B82N1kNw==} peerDependencies: react: '>=18' dependencies: - '@chakra-ui/react-use-callback-ref': 2.0.7(react@18.2.0) + '@chakra-ui/react-use-callback-ref': 2.1.0(react@18.2.0) react: 18.2.0 dev: false - /@chakra-ui/react-use-pan-event@2.0.9(react@18.2.0): - resolution: {integrity: sha512-xu35QXkiyrgsHUOnctl+SwNcwf9Rl62uYE5y8soKOZdBm8E+FvZIt2hxUzK1EoekbJCMzEZ0Yv1ZQCssVkSLaQ==} + /@chakra-ui/react-use-pan-event@2.1.0(react@18.2.0): + resolution: {integrity: sha512-xmL2qOHiXqfcj0q7ZK5s9UjTh4Gz0/gL9jcWPA6GVf+A0Od5imEDa/Vz+533yQKWiNSm1QGrIj0eJAokc7O4fg==} peerDependencies: react: '>=18' dependencies: '@chakra-ui/event-utils': 2.0.8 - '@chakra-ui/react-use-latest-ref': 2.0.5(react@18.2.0) + '@chakra-ui/react-use-latest-ref': 2.1.0(react@18.2.0) framesync: 6.1.2 react: 18.2.0 dev: false - /@chakra-ui/react-use-previous@2.0.5(react@18.2.0): - resolution: {integrity: sha512-BIZgjycPE4Xr+MkhKe0h67uHXzQQkBX/u5rYPd65iMGdX1bCkbE0oorZNfOHLKdTmnEb4oVsNvfN6Rfr+Mnbxw==} + /@chakra-ui/react-use-previous@2.1.0(react@18.2.0): + resolution: {integrity: sha512-pjxGwue1hX8AFcmjZ2XfrQtIJgqbTF3Qs1Dy3d1krC77dEsiCUbQ9GzOBfDc8pfd60DrB5N2tg5JyHbypqh0Sg==} peerDependencies: react: '>=18' dependencies: react: 18.2.0 dev: false - /@chakra-ui/react-use-safe-layout-effect@2.0.5(react@18.2.0): - resolution: {integrity: sha512-MwAQBz3VxoeFLaesaSEN87reVNVbjcQBDex2WGexAg6hUB6n4gc1OWYH/iXp4tzp4kuggBNhEHkk9BMYXWfhJQ==} + /@chakra-ui/react-use-safe-layout-effect@2.1.0(react@18.2.0): + resolution: {integrity: sha512-Knbrrx/bcPwVS1TorFdzrK/zWA8yuU/eaXDkNj24IrKoRlQrSBFarcgAEzlCHtzuhufP3OULPkELTzz91b0tCw==} peerDependencies: react: '>=18' dependencies: react: 18.2.0 dev: false - /@chakra-ui/react-use-size@2.0.10(react@18.2.0): - resolution: {integrity: sha512-fdIkH14GDnKQrtQfxX8N3gxbXRPXEl67Y3zeD9z4bKKcQUAYIMqs0MsPZY+FMpGQw8QqafM44nXfL038aIrC5w==} + /@chakra-ui/react-use-size@2.1.0(react@18.2.0): + resolution: {integrity: sha512-tbLqrQhbnqOjzTaMlYytp7wY8BW1JpL78iG7Ru1DlV4EWGiAmXFGvtnEt9HftU0NJ0aJyjgymkxfVGI55/1Z4A==} peerDependencies: react: '>=18' dependencies: - '@zag-js/element-size': 0.3.2 + '@zag-js/element-size': 0.10.5 react: 18.2.0 dev: false - /@chakra-ui/react-use-timeout@2.0.5(react@18.2.0): - resolution: {integrity: sha512-QqmB+jVphh3h/CS60PieorpY7UqSPkrQCB7f7F+i9vwwIjtP8fxVHMmkb64K7VlzQiMPzv12nlID5dqkzlv0mw==} + /@chakra-ui/react-use-timeout@2.1.0(react@18.2.0): + resolution: {integrity: sha512-cFN0sobKMM9hXUhyCofx3/Mjlzah6ADaEl/AXl5Y+GawB5rgedgAcu2ErAgarEkwvsKdP6c68CKjQ9dmTQlJxQ==} peerDependencies: react: '>=18' dependencies: - '@chakra-ui/react-use-callback-ref': 2.0.7(react@18.2.0) + '@chakra-ui/react-use-callback-ref': 2.1.0(react@18.2.0) react: 18.2.0 dev: false - /@chakra-ui/react-use-update-effect@2.0.7(react@18.2.0): - resolution: {integrity: sha512-vBM2bmmM83ZdDtasWv3PXPznpTUd+FvqBC8J8rxoRmvdMEfrxTiQRBJhiGHLpS9BPLLPQlosN6KdFU97csB6zg==} + /@chakra-ui/react-use-update-effect@2.1.0(react@18.2.0): + resolution: {integrity: sha512-ND4Q23tETaR2Qd3zwCKYOOS1dfssojPLJMLvUtUbW5M9uW1ejYWgGUobeAiOVfSplownG8QYMmHTP86p/v0lbA==} peerDependencies: react: '>=18' dependencies: @@ -3970,8 +3995,8 @@ packages: react: 18.2.0 dev: false - /@chakra-ui/react@2.7.0(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.12)(framer-motion@10.12.16)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-+FcUFQMsPfhWuM9Iu7uqufwwhmHN2IX6FWsBixYGOalO86dpgETsILMZP9PuWfgj7GpWiy2Dum6HXekh0Tk2Mg==} + /@chakra-ui/react@2.8.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.21)(framer-motion@10.16.4)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-UL9Rtj4DovP3+oVbI06gsdfyJJb+wmS2RYnGNXjW9tsjCyXxjlBw9TAUj0jyOfWe0+zd/4juL8+J+QCwmdhptg==} peerDependencies: '@emotion/react': ^11.0.0 '@emotion/styled': ^11.0.0 @@ -3979,76 +4004,77 @@ packages: react: '>=18' react-dom: '>=18' dependencies: - '@chakra-ui/accordion': 2.2.0(@chakra-ui/system@2.5.8)(framer-motion@10.12.16)(react@18.2.0) - '@chakra-ui/alert': 2.1.0(@chakra-ui/system@2.5.8)(react@18.2.0) - '@chakra-ui/avatar': 2.2.11(@chakra-ui/system@2.5.8)(react@18.2.0) - '@chakra-ui/breadcrumb': 2.1.5(@chakra-ui/system@2.5.8)(react@18.2.0) - '@chakra-ui/button': 2.0.18(@chakra-ui/system@2.5.8)(react@18.2.0) - '@chakra-ui/card': 2.1.6(@chakra-ui/system@2.5.8)(react@18.2.0) - '@chakra-ui/checkbox': 2.2.15(@chakra-ui/system@2.5.8)(react@18.2.0) - '@chakra-ui/close-button': 2.0.17(@chakra-ui/system@2.5.8)(react@18.2.0) - '@chakra-ui/control-box': 2.0.13(@chakra-ui/system@2.5.8)(react@18.2.0) - '@chakra-ui/counter': 2.0.14(react@18.2.0) - '@chakra-ui/css-reset': 2.1.2(@emotion/react@11.11.1)(react@18.2.0) - '@chakra-ui/editable': 3.0.0(@chakra-ui/system@2.5.8)(react@18.2.0) - '@chakra-ui/focus-lock': 2.0.17(@types/react@18.2.12)(react@18.2.0) - '@chakra-ui/form-control': 2.0.18(@chakra-ui/system@2.5.8)(react@18.2.0) - '@chakra-ui/hooks': 2.2.0(react@18.2.0) - '@chakra-ui/icon': 3.0.16(@chakra-ui/system@2.5.8)(react@18.2.0) - '@chakra-ui/image': 2.0.16(@chakra-ui/system@2.5.8)(react@18.2.0) - '@chakra-ui/input': 2.0.22(@chakra-ui/system@2.5.8)(react@18.2.0) - '@chakra-ui/layout': 2.2.0(@chakra-ui/system@2.5.8)(react@18.2.0) - '@chakra-ui/live-region': 2.0.13(react@18.2.0) - '@chakra-ui/media-query': 3.2.12(@chakra-ui/system@2.5.8)(react@18.2.0) - '@chakra-ui/menu': 2.1.15(@chakra-ui/system@2.5.8)(framer-motion@10.12.16)(react@18.2.0) - '@chakra-ui/modal': 2.2.12(@chakra-ui/system@2.5.8)(@types/react@18.2.12)(framer-motion@10.12.16)(react-dom@18.2.0)(react@18.2.0) - '@chakra-ui/number-input': 2.0.19(@chakra-ui/system@2.5.8)(react@18.2.0) - '@chakra-ui/pin-input': 2.0.20(@chakra-ui/system@2.5.8)(react@18.2.0) - '@chakra-ui/popover': 2.1.12(@chakra-ui/system@2.5.8)(framer-motion@10.12.16)(react@18.2.0) - '@chakra-ui/popper': 3.0.14(react@18.2.0) - '@chakra-ui/portal': 2.0.16(react-dom@18.2.0)(react@18.2.0) - '@chakra-ui/progress': 2.1.6(@chakra-ui/system@2.5.8)(react@18.2.0) - '@chakra-ui/provider': 2.3.0(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react-dom@18.2.0)(react@18.2.0) - '@chakra-ui/radio': 2.0.22(@chakra-ui/system@2.5.8)(react@18.2.0) - '@chakra-ui/react-env': 3.0.0(react@18.2.0) - '@chakra-ui/select': 2.0.19(@chakra-ui/system@2.5.8)(react@18.2.0) - '@chakra-ui/skeleton': 2.0.24(@chakra-ui/system@2.5.8)(react@18.2.0) - '@chakra-ui/slider': 2.0.25(@chakra-ui/system@2.5.8)(react@18.2.0) - '@chakra-ui/spinner': 2.0.13(@chakra-ui/system@2.5.8)(react@18.2.0) - '@chakra-ui/stat': 2.0.18(@chakra-ui/system@2.5.8)(react@18.2.0) - '@chakra-ui/stepper': 2.2.0(@chakra-ui/system@2.5.8)(react@18.2.0) + '@chakra-ui/accordion': 2.3.1(@chakra-ui/system@2.6.1)(framer-motion@10.16.4)(react@18.2.0) + '@chakra-ui/alert': 2.2.1(@chakra-ui/system@2.6.1)(react@18.2.0) + '@chakra-ui/avatar': 2.3.0(@chakra-ui/system@2.6.1)(react@18.2.0) + '@chakra-ui/breadcrumb': 2.2.0(@chakra-ui/system@2.6.1)(react@18.2.0) + '@chakra-ui/button': 2.1.0(@chakra-ui/system@2.6.1)(react@18.2.0) + '@chakra-ui/card': 2.2.0(@chakra-ui/system@2.6.1)(react@18.2.0) + '@chakra-ui/checkbox': 2.3.1(@chakra-ui/system@2.6.1)(react@18.2.0) + '@chakra-ui/close-button': 2.1.1(@chakra-ui/system@2.6.1)(react@18.2.0) + '@chakra-ui/control-box': 2.1.0(@chakra-ui/system@2.6.1)(react@18.2.0) + '@chakra-ui/counter': 2.1.0(react@18.2.0) + '@chakra-ui/css-reset': 2.3.0(@emotion/react@11.11.1)(react@18.2.0) + '@chakra-ui/editable': 3.1.0(@chakra-ui/system@2.6.1)(react@18.2.0) + '@chakra-ui/focus-lock': 2.1.0(@types/react@18.2.21)(react@18.2.0) + '@chakra-ui/form-control': 2.1.1(@chakra-ui/system@2.6.1)(react@18.2.0) + '@chakra-ui/hooks': 2.2.1(react@18.2.0) + '@chakra-ui/icon': 3.2.0(@chakra-ui/system@2.6.1)(react@18.2.0) + '@chakra-ui/image': 2.1.0(@chakra-ui/system@2.6.1)(react@18.2.0) + '@chakra-ui/input': 2.1.1(@chakra-ui/system@2.6.1)(react@18.2.0) + '@chakra-ui/layout': 2.3.1(@chakra-ui/system@2.6.1)(react@18.2.0) + '@chakra-ui/live-region': 2.1.0(react@18.2.0) + '@chakra-ui/media-query': 3.3.0(@chakra-ui/system@2.6.1)(react@18.2.0) + '@chakra-ui/menu': 2.2.1(@chakra-ui/system@2.6.1)(framer-motion@10.16.4)(react@18.2.0) + '@chakra-ui/modal': 2.3.1(@chakra-ui/system@2.6.1)(@types/react@18.2.21)(framer-motion@10.16.4)(react-dom@18.2.0)(react@18.2.0) + '@chakra-ui/number-input': 2.1.1(@chakra-ui/system@2.6.1)(react@18.2.0) + '@chakra-ui/pin-input': 2.1.0(@chakra-ui/system@2.6.1)(react@18.2.0) + '@chakra-ui/popover': 2.2.1(@chakra-ui/system@2.6.1)(framer-motion@10.16.4)(react@18.2.0) + '@chakra-ui/popper': 3.1.0(react@18.2.0) + '@chakra-ui/portal': 2.1.0(react-dom@18.2.0)(react@18.2.0) + '@chakra-ui/progress': 2.2.0(@chakra-ui/system@2.6.1)(react@18.2.0) + '@chakra-ui/provider': 2.4.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react-dom@18.2.0)(react@18.2.0) + '@chakra-ui/radio': 2.1.1(@chakra-ui/system@2.6.1)(react@18.2.0) + '@chakra-ui/react-env': 3.1.0(react@18.2.0) + '@chakra-ui/select': 2.1.1(@chakra-ui/system@2.6.1)(react@18.2.0) + '@chakra-ui/skeleton': 2.1.0(@chakra-ui/system@2.6.1)(react@18.2.0) + '@chakra-ui/skip-nav': 2.1.0(@chakra-ui/system@2.6.1)(react@18.2.0) + '@chakra-ui/slider': 2.1.0(@chakra-ui/system@2.6.1)(react@18.2.0) + '@chakra-ui/spinner': 2.1.0(@chakra-ui/system@2.6.1)(react@18.2.0) + '@chakra-ui/stat': 2.1.1(@chakra-ui/system@2.6.1)(react@18.2.0) + '@chakra-ui/stepper': 2.3.1(@chakra-ui/system@2.6.1)(react@18.2.0) '@chakra-ui/styled-system': 2.9.1 - '@chakra-ui/switch': 2.0.27(@chakra-ui/system@2.5.8)(framer-motion@10.12.16)(react@18.2.0) - '@chakra-ui/system': 2.5.8(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) - '@chakra-ui/table': 2.0.17(@chakra-ui/system@2.5.8)(react@18.2.0) - '@chakra-ui/tabs': 2.1.9(@chakra-ui/system@2.5.8)(react@18.2.0) - '@chakra-ui/tag': 3.0.0(@chakra-ui/system@2.5.8)(react@18.2.0) - '@chakra-ui/textarea': 2.0.19(@chakra-ui/system@2.5.8)(react@18.2.0) - '@chakra-ui/theme': 3.1.2(@chakra-ui/styled-system@2.9.1) - '@chakra-ui/theme-utils': 2.0.18 - '@chakra-ui/toast': 6.1.4(@chakra-ui/system@2.5.8)(framer-motion@10.12.16)(react-dom@18.2.0)(react@18.2.0) - '@chakra-ui/tooltip': 2.2.9(@chakra-ui/system@2.5.8)(framer-motion@10.12.16)(react-dom@18.2.0)(react@18.2.0) - '@chakra-ui/transition': 2.0.16(framer-motion@10.12.16)(react@18.2.0) + '@chakra-ui/switch': 2.1.1(@chakra-ui/system@2.6.1)(framer-motion@10.16.4)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/table': 2.1.0(@chakra-ui/system@2.6.1)(react@18.2.0) + '@chakra-ui/tabs': 3.0.0(@chakra-ui/system@2.6.1)(react@18.2.0) + '@chakra-ui/tag': 3.1.1(@chakra-ui/system@2.6.1)(react@18.2.0) + '@chakra-ui/textarea': 2.1.1(@chakra-ui/system@2.6.1)(react@18.2.0) + '@chakra-ui/theme': 3.3.0(@chakra-ui/styled-system@2.9.1) + '@chakra-ui/theme-utils': 2.0.20 + '@chakra-ui/toast': 7.0.1(@chakra-ui/system@2.6.1)(framer-motion@10.16.4)(react-dom@18.2.0)(react@18.2.0) + '@chakra-ui/tooltip': 2.3.0(@chakra-ui/system@2.6.1)(framer-motion@10.16.4)(react-dom@18.2.0)(react@18.2.0) + '@chakra-ui/transition': 2.1.0(framer-motion@10.16.4)(react@18.2.0) '@chakra-ui/utils': 2.0.15 - '@chakra-ui/visually-hidden': 2.0.15(@chakra-ui/system@2.5.8)(react@18.2.0) - '@emotion/react': 11.11.1(@types/react@18.2.12)(react@18.2.0) - '@emotion/styled': 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.12)(react@18.2.0) - framer-motion: 10.12.16(react-dom@18.2.0)(react@18.2.0) + '@chakra-ui/visually-hidden': 2.2.0(@chakra-ui/system@2.6.1)(react@18.2.0) + '@emotion/react': 11.11.1(@types/react@18.2.21)(react@18.2.0) + '@emotion/styled': 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.21)(react@18.2.0) + framer-motion: 10.16.4(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) transitivePeerDependencies: - '@types/react' dev: false - /@chakra-ui/select@2.0.19(@chakra-ui/system@2.5.8)(react@18.2.0): - resolution: {integrity: sha512-eAlFh+JhwtJ17OrB6fO6gEAGOMH18ERNrXLqWbYLrs674Le7xuREgtuAYDoxUzvYXYYTTdOJtVbcHGriI3o6rA==} + /@chakra-ui/select@2.1.1(@chakra-ui/system@2.6.1)(react@18.2.0): + resolution: {integrity: sha512-CERDATncv5w05Zo5/LrFtf1yKp1deyMUyDGv6eZvQG/etyukH4TstsuIHt/0GfNXrCF3CJLZ8lINzpv5wayVjQ==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' dependencies: - '@chakra-ui/form-control': 2.0.18(@chakra-ui/system@2.5.8)(react@18.2.0) + '@chakra-ui/form-control': 2.1.1(@chakra-ui/system@2.6.1)(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.5.8(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false @@ -4056,73 +4082,83 @@ packages: resolution: {integrity: sha512-4/Wur0FqDov7Y0nCXl7HbHzCg4aq86h+SXdoUeuCMD3dSj7dpsVnStLYhng1vxvlbUnLpdF4oz5Myt3i/a7N3Q==} dev: false - /@chakra-ui/skeleton@2.0.24(@chakra-ui/system@2.5.8)(react@18.2.0): - resolution: {integrity: sha512-1jXtVKcl/jpbrJlc/TyMsFyI651GTXY5ma30kWyTXoby2E+cxbV6OR8GB/NMZdGxbQBax8/VdtYVjI0n+OBqWA==} + /@chakra-ui/skeleton@2.1.0(@chakra-ui/system@2.6.1)(react@18.2.0): + resolution: {integrity: sha512-JNRuMPpdZGd6zFVKjVQ0iusu3tXAdI29n4ZENYwAJEMf/fN0l12sVeirOxkJ7oEL0yOx2AgEYFSKdbcAgfUsAQ==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' dependencies: - '@chakra-ui/media-query': 3.2.12(@chakra-ui/system@2.5.8)(react@18.2.0) - '@chakra-ui/react-use-previous': 2.0.5(react@18.2.0) + '@chakra-ui/media-query': 3.3.0(@chakra-ui/system@2.6.1)(react@18.2.0) + '@chakra-ui/react-use-previous': 2.1.0(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.5.8(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false - /@chakra-ui/slider@2.0.25(@chakra-ui/system@2.5.8)(react@18.2.0): - resolution: {integrity: sha512-FnWSi0AIXP+9sHMCPboOKGqm902k8dJtsJ7tu3D0AcKkE62WtYLZ2sTqvwJxCfSl4KqVI1i571SrF9WadnnJ8w==} + /@chakra-ui/skip-nav@2.1.0(@chakra-ui/system@2.6.1)(react@18.2.0): + resolution: {integrity: sha512-Hk+FG+vadBSH0/7hwp9LJnLjkO0RPGnx7gBJWI4/SpoJf3e4tZlWYtwGj0toYY4aGKl93jVghuwGbDBEMoHDug==} + peerDependencies: + '@chakra-ui/system': '>=2.0.0' + react: '>=18' + dependencies: + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) + react: 18.2.0 + dev: false + + /@chakra-ui/slider@2.1.0(@chakra-ui/system@2.6.1)(react@18.2.0): + resolution: {integrity: sha512-lUOBcLMCnFZiA/s2NONXhELJh6sY5WtbRykPtclGfynqqOo47lwWJx+VP7xaeuhDOPcWSSecWc9Y1BfPOCz9cQ==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' dependencies: '@chakra-ui/number-utils': 2.0.7 - '@chakra-ui/react-context': 2.0.8(react@18.2.0) + '@chakra-ui/react-context': 2.1.0(react@18.2.0) '@chakra-ui/react-types': 2.0.7(react@18.2.0) - '@chakra-ui/react-use-callback-ref': 2.0.7(react@18.2.0) - '@chakra-ui/react-use-controllable-state': 2.0.8(react@18.2.0) - '@chakra-ui/react-use-latest-ref': 2.0.5(react@18.2.0) - '@chakra-ui/react-use-merge-refs': 2.0.7(react@18.2.0) - '@chakra-ui/react-use-pan-event': 2.0.9(react@18.2.0) - '@chakra-ui/react-use-size': 2.0.10(react@18.2.0) - '@chakra-ui/react-use-update-effect': 2.0.7(react@18.2.0) - '@chakra-ui/system': 2.5.8(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/react-use-callback-ref': 2.1.0(react@18.2.0) + '@chakra-ui/react-use-controllable-state': 2.1.0(react@18.2.0) + '@chakra-ui/react-use-latest-ref': 2.1.0(react@18.2.0) + '@chakra-ui/react-use-merge-refs': 2.1.0(react@18.2.0) + '@chakra-ui/react-use-pan-event': 2.1.0(react@18.2.0) + '@chakra-ui/react-use-size': 2.1.0(react@18.2.0) + '@chakra-ui/react-use-update-effect': 2.1.0(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false - /@chakra-ui/spinner@2.0.13(@chakra-ui/system@2.5.8)(react@18.2.0): - resolution: {integrity: sha512-T1/aSkVpUIuiYyrjfn1+LsQEG7Onbi1UE9ccS/evgf61Dzy4GgTXQUnDuWFSgpV58owqirqOu6jn/9eCwDlzlg==} + /@chakra-ui/spinner@2.1.0(@chakra-ui/system@2.6.1)(react@18.2.0): + resolution: {integrity: sha512-hczbnoXt+MMv/d3gE+hjQhmkzLiKuoTo42YhUG7Bs9OSv2lg1fZHW1fGNRFP3wTi6OIbD044U1P9HK+AOgFH3g==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' dependencies: '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.5.8(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false - /@chakra-ui/stat@2.0.18(@chakra-ui/system@2.5.8)(react@18.2.0): - resolution: {integrity: sha512-wKyfBqhVlIs9bkSerUc6F9KJMw0yTIEKArW7dejWwzToCLPr47u+CtYO6jlJHV6lRvkhi4K4Qc6pyvtJxZ3VpA==} + /@chakra-ui/stat@2.1.1(@chakra-ui/system@2.6.1)(react@18.2.0): + resolution: {integrity: sha512-LDn0d/LXQNbAn2KaR3F1zivsZCewY4Jsy1qShmfBMKwn6rI8yVlbvu6SiA3OpHS0FhxbsZxQI6HefEoIgtqY6Q==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' dependencies: - '@chakra-ui/icon': 3.0.16(@chakra-ui/system@2.5.8)(react@18.2.0) - '@chakra-ui/react-context': 2.0.8(react@18.2.0) + '@chakra-ui/icon': 3.2.0(@chakra-ui/system@2.6.1)(react@18.2.0) + '@chakra-ui/react-context': 2.1.0(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.5.8(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false - /@chakra-ui/stepper@2.2.0(@chakra-ui/system@2.5.8)(react@18.2.0): - resolution: {integrity: sha512-8ZLxV39oghSVtOUGK8dX8Z6sWVSQiKVmsK4c3OQDa8y2TvxP0VtFD0Z5U1xJlOjQMryZRWhGj9JBc3iQLukuGg==} + /@chakra-ui/stepper@2.3.1(@chakra-ui/system@2.6.1)(react@18.2.0): + resolution: {integrity: sha512-ky77lZbW60zYkSXhYz7kbItUpAQfEdycT0Q4bkHLxfqbuiGMf8OmgZOQkOB9uM4v0zPwy2HXhe0vq4Dd0xa55Q==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' dependencies: - '@chakra-ui/icon': 3.0.16(@chakra-ui/system@2.5.8)(react@18.2.0) - '@chakra-ui/react-context': 2.0.8(react@18.2.0) + '@chakra-ui/icon': 3.2.0(@chakra-ui/system@2.6.1)(react@18.2.0) + '@chakra-ui/react-context': 2.1.0(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.5.8(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false @@ -4134,150 +4170,150 @@ packages: lodash.mergewith: 4.6.2 dev: false - /@chakra-ui/switch@2.0.27(@chakra-ui/system@2.5.8)(framer-motion@10.12.16)(react@18.2.0): - resolution: {integrity: sha512-z76y2fxwMlvRBrC5W8xsZvo3gP+zAEbT3Nqy5P8uh/IPd5OvDsGeac90t5cgnQTyxMOpznUNNK+1eUZqtLxWnQ==} + /@chakra-ui/switch@2.1.1(@chakra-ui/system@2.6.1)(framer-motion@10.16.4)(react@18.2.0): + resolution: {integrity: sha512-cOHIhW5AlLZSFENxFEBYTBniqiduOowa1WdzslP1Fd0usBFaD5iAgOY1Fvr7xKhE8nmzzeMCkPB3XBvUSWnawQ==} peerDependencies: '@chakra-ui/system': '>=2.0.0' framer-motion: '>=4.0.0' react: '>=18' dependencies: - '@chakra-ui/checkbox': 2.2.15(@chakra-ui/system@2.5.8)(react@18.2.0) + '@chakra-ui/checkbox': 2.3.1(@chakra-ui/system@2.6.1)(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.5.8(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) - framer-motion: 10.12.16(react-dom@18.2.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) + framer-motion: 10.16.4(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 dev: false - /@chakra-ui/system@2.5.8(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0): - resolution: {integrity: sha512-Vy8UUaCxikOzOGE54IP8tKouvU38rEYU1HCSquU9+oe7Jd70HaiLa4vmUKvHyMUmxkOzDHIkgZLbVQCubSnN5w==} + /@chakra-ui/system@2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0): + resolution: {integrity: sha512-P5Q/XRWy3f1pXJ7IxDkV+Z6AT7GJeR2JlBnQl109xewVQcBLWWMIp702fFMFw8KZ2ALB/aYKtWm5EmQMddC/tg==} peerDependencies: '@emotion/react': ^11.0.0 '@emotion/styled': ^11.0.0 react: '>=18' dependencies: - '@chakra-ui/color-mode': 2.1.12(react@18.2.0) + '@chakra-ui/color-mode': 2.2.0(react@18.2.0) '@chakra-ui/object-utils': 2.1.0 '@chakra-ui/react-utils': 2.0.12(react@18.2.0) '@chakra-ui/styled-system': 2.9.1 - '@chakra-ui/theme-utils': 2.0.18 + '@chakra-ui/theme-utils': 2.0.20 '@chakra-ui/utils': 2.0.15 - '@emotion/react': 11.11.1(@types/react@18.2.12)(react@18.2.0) - '@emotion/styled': 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.12)(react@18.2.0) + '@emotion/react': 11.11.1(@types/react@18.2.21)(react@18.2.0) + '@emotion/styled': 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.21)(react@18.2.0) react: 18.2.0 - react-fast-compare: 3.2.1 + react-fast-compare: 3.2.2 dev: false - /@chakra-ui/table@2.0.17(@chakra-ui/system@2.5.8)(react@18.2.0): - resolution: {integrity: sha512-OScheTEp1LOYvTki2NFwnAYvac8siAhW9BI5RKm5f5ORL2gVJo4I72RUqE0aKe1oboxgm7CYt5afT5PS5cG61A==} + /@chakra-ui/table@2.1.0(@chakra-ui/system@2.6.1)(react@18.2.0): + resolution: {integrity: sha512-o5OrjoHCh5uCLdiUb0Oc0vq9rIAeHSIRScc2ExTC9Qg/uVZl2ygLrjToCaKfaaKl1oQexIeAcZDKvPG8tVkHyQ==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' dependencies: - '@chakra-ui/react-context': 2.0.8(react@18.2.0) + '@chakra-ui/react-context': 2.1.0(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.5.8(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false - /@chakra-ui/tabs@2.1.9(@chakra-ui/system@2.5.8)(react@18.2.0): - resolution: {integrity: sha512-Yf8e0kRvaGM6jfkJum0aInQ0U3ZlCafmrYYni2lqjcTtThqu+Yosmo3iYlnullXxCw5MVznfrkb9ySvgQowuYg==} + /@chakra-ui/tabs@3.0.0(@chakra-ui/system@2.6.1)(react@18.2.0): + resolution: {integrity: sha512-6Mlclp8L9lqXmsGWF5q5gmemZXOiOYuh0SGT/7PgJVNPz3LXREXlXg2an4MBUD8W5oTkduCX+3KTMCwRrVrDYw==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' dependencies: - '@chakra-ui/clickable': 2.0.14(react@18.2.0) - '@chakra-ui/descendant': 3.0.14(react@18.2.0) + '@chakra-ui/clickable': 2.1.0(react@18.2.0) + '@chakra-ui/descendant': 3.1.0(react@18.2.0) '@chakra-ui/lazy-utils': 2.0.5 '@chakra-ui/react-children-utils': 2.0.6(react@18.2.0) - '@chakra-ui/react-context': 2.0.8(react@18.2.0) - '@chakra-ui/react-use-controllable-state': 2.0.8(react@18.2.0) - '@chakra-ui/react-use-merge-refs': 2.0.7(react@18.2.0) - '@chakra-ui/react-use-safe-layout-effect': 2.0.5(react@18.2.0) + '@chakra-ui/react-context': 2.1.0(react@18.2.0) + '@chakra-ui/react-use-controllable-state': 2.1.0(react@18.2.0) + '@chakra-ui/react-use-merge-refs': 2.1.0(react@18.2.0) + '@chakra-ui/react-use-safe-layout-effect': 2.1.0(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.5.8(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false - /@chakra-ui/tag@3.0.0(@chakra-ui/system@2.5.8)(react@18.2.0): - resolution: {integrity: sha512-YWdMmw/1OWRwNkG9pX+wVtZio+B89odaPj6XeMn5nfNN8+jyhIEpouWv34+CO9G0m1lupJTxPSfgLAd7cqXZMA==} + /@chakra-ui/tag@3.1.1(@chakra-ui/system@2.6.1)(react@18.2.0): + resolution: {integrity: sha512-Bdel79Dv86Hnge2PKOU+t8H28nm/7Y3cKd4Kfk9k3lOpUh4+nkSGe58dhRzht59lEqa4N9waCgQiBdkydjvBXQ==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' dependencies: - '@chakra-ui/icon': 3.0.16(@chakra-ui/system@2.5.8)(react@18.2.0) - '@chakra-ui/react-context': 2.0.8(react@18.2.0) - '@chakra-ui/system': 2.5.8(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/icon': 3.2.0(@chakra-ui/system@2.6.1)(react@18.2.0) + '@chakra-ui/react-context': 2.1.0(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false - /@chakra-ui/textarea@2.0.19(@chakra-ui/system@2.5.8)(react@18.2.0): - resolution: {integrity: sha512-adJk+qVGsFeJDvfn56CcJKKse8k7oMGlODrmpnpTdF+xvlsiTM+1GfaJvgNSpHHuQFdz/A0z1uJtfGefk0G2ZA==} + /@chakra-ui/textarea@2.1.1(@chakra-ui/system@2.6.1)(react@18.2.0): + resolution: {integrity: sha512-28bpwgmXg3BzSpg8i1Ao9h7pHaE1j2mBBFJpWaqPgMhS0IHm0BQsqqyWU6PsxxJDvrC4HN6MTzrIL4C1RA1I0A==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' dependencies: - '@chakra-ui/form-control': 2.0.18(@chakra-ui/system@2.5.8)(react@18.2.0) + '@chakra-ui/form-control': 2.1.1(@chakra-ui/system@2.6.1)(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.5.8(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false - /@chakra-ui/theme-tools@2.0.18(@chakra-ui/styled-system@2.9.1): - resolution: {integrity: sha512-MbiRuXb2tb41FbnW41zhsYYAU0znlpfYZnu0mxCf8U2otCwPekJCfESUGYypjq4JnydQ7TDOk+Kz/Wi974l4mw==} + /@chakra-ui/theme-tools@2.1.1(@chakra-ui/styled-system@2.9.1): + resolution: {integrity: sha512-n14L5L3ej3Zy+Xm/kDKO1G6/DkmieT7Li1C7NzMRcUj5C9YybQpyo7IZZ0BBUh3u+OVnKVhNC3d4P2NYDGRXmA==} peerDependencies: '@chakra-ui/styled-system': '>=2.0.0' dependencies: - '@chakra-ui/anatomy': 2.1.2 + '@chakra-ui/anatomy': 2.2.1 '@chakra-ui/shared-utils': 2.0.5 '@chakra-ui/styled-system': 2.9.1 color2k: 2.0.2 dev: false - /@chakra-ui/theme-utils@2.0.18: - resolution: {integrity: sha512-aSbkUUiFpc1NHC7lQdA6uYlr6EcZFXz6b4aJ7VRDpqTiywvqYnvfGzhmsB0z94vgtS9qXc6HoIwBp25jYGV2MA==} + /@chakra-ui/theme-utils@2.0.20: + resolution: {integrity: sha512-IkAzSmwBlRIZ3dN2InDz0tf9SldbckVkgwylCobSFmYP8lnMjykL8Lex1BBo9U8UQjZxEDVZ+Qw6SeayKRntOQ==} dependencies: '@chakra-ui/shared-utils': 2.0.5 '@chakra-ui/styled-system': 2.9.1 - '@chakra-ui/theme': 3.1.2(@chakra-ui/styled-system@2.9.1) + '@chakra-ui/theme': 3.3.0(@chakra-ui/styled-system@2.9.1) lodash.mergewith: 4.6.2 dev: false - /@chakra-ui/theme@3.1.2(@chakra-ui/styled-system@2.9.1): - resolution: {integrity: sha512-ebUXMS3LZw2OZxEQNYaFw3/XuA3jpyprhS/frjHMvZKSOaCjMW+c9z25S0jp1NnpQff08VGI8EWbyVZECXU1QA==} + /@chakra-ui/theme@3.3.0(@chakra-ui/styled-system@2.9.1): + resolution: {integrity: sha512-VHY2ax5Wqgfm83U/zYBk0GS0TGD8m41s/rxQgnEq8tU+ug1YZjvOZmtOq/VjfKP/bQraFhCt05zchcxXmDpEYg==} peerDependencies: '@chakra-ui/styled-system': '>=2.8.0' dependencies: - '@chakra-ui/anatomy': 2.1.2 + '@chakra-ui/anatomy': 2.2.1 '@chakra-ui/shared-utils': 2.0.5 '@chakra-ui/styled-system': 2.9.1 - '@chakra-ui/theme-tools': 2.0.18(@chakra-ui/styled-system@2.9.1) + '@chakra-ui/theme-tools': 2.1.1(@chakra-ui/styled-system@2.9.1) dev: false - /@chakra-ui/toast@6.1.4(@chakra-ui/system@2.5.8)(framer-motion@10.12.16)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-wAcPHq/N/ar4jQxkUGhnsbp+lx2eKOpHxn1KaWdHXUkqCNUA1z09fvBsoMyzObSiiwbDuQPZG5RxsOhzfPZX4Q==} + /@chakra-ui/toast@7.0.1(@chakra-ui/system@2.6.1)(framer-motion@10.16.4)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-V5JUhw6RZxbGRTijvd5k4iEMLCfbzTLNWbZLZhRZk10YvFfAP5OYfRCm68zpE/t3orN/f+4ZLL3P+Wb4E7oSmw==} peerDependencies: - '@chakra-ui/system': 2.5.8 + '@chakra-ui/system': 2.6.1 framer-motion: '>=4.0.0' react: '>=18' react-dom: '>=18' dependencies: - '@chakra-ui/alert': 2.1.0(@chakra-ui/system@2.5.8)(react@18.2.0) - '@chakra-ui/close-button': 2.0.17(@chakra-ui/system@2.5.8)(react@18.2.0) - '@chakra-ui/portal': 2.0.16(react-dom@18.2.0)(react@18.2.0) - '@chakra-ui/react-context': 2.0.8(react@18.2.0) - '@chakra-ui/react-use-timeout': 2.0.5(react@18.2.0) - '@chakra-ui/react-use-update-effect': 2.0.7(react@18.2.0) + '@chakra-ui/alert': 2.2.1(@chakra-ui/system@2.6.1)(react@18.2.0) + '@chakra-ui/close-button': 2.1.1(@chakra-ui/system@2.6.1)(react@18.2.0) + '@chakra-ui/portal': 2.1.0(react-dom@18.2.0)(react@18.2.0) + '@chakra-ui/react-context': 2.1.0(react@18.2.0) + '@chakra-ui/react-use-timeout': 2.1.0(react@18.2.0) + '@chakra-ui/react-use-update-effect': 2.1.0(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 '@chakra-ui/styled-system': 2.9.1 - '@chakra-ui/system': 2.5.8(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) - '@chakra-ui/theme': 3.1.2(@chakra-ui/styled-system@2.9.1) - framer-motion: 10.12.16(react-dom@18.2.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/theme': 3.3.0(@chakra-ui/styled-system@2.9.1) + framer-motion: 10.16.4(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@chakra-ui/tooltip@2.2.9(@chakra-ui/system@2.5.8)(framer-motion@10.12.16)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-ZoksllanqXRUyMDaiogvUVJ+RdFXwZrfrwx3RV22fejYZIQ602hZ3QHtHLB5ZnKFLbvXKMZKM23HxFTSb0Ytqg==} + /@chakra-ui/tooltip@2.3.0(@chakra-ui/system@2.6.1)(framer-motion@10.16.4)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-2s23f93YIij1qEDwIK//KtEu4LLYOslhR1cUhDBk/WUzyFR3Ez0Ee+HlqlGEGfGe9x77E6/UXPnSAKKdF/cpsg==} peerDependencies: '@chakra-ui/system': '>=2.0.0' framer-motion: '>=4.0.0' @@ -4285,27 +4321,27 @@ packages: react-dom: '>=18' dependencies: '@chakra-ui/dom-utils': 2.1.0 - '@chakra-ui/popper': 3.0.14(react@18.2.0) - '@chakra-ui/portal': 2.0.16(react-dom@18.2.0)(react@18.2.0) + '@chakra-ui/popper': 3.1.0(react@18.2.0) + '@chakra-ui/portal': 2.1.0(react-dom@18.2.0)(react@18.2.0) '@chakra-ui/react-types': 2.0.7(react@18.2.0) - '@chakra-ui/react-use-disclosure': 2.0.8(react@18.2.0) - '@chakra-ui/react-use-event-listener': 2.0.7(react@18.2.0) - '@chakra-ui/react-use-merge-refs': 2.0.7(react@18.2.0) + '@chakra-ui/react-use-disclosure': 2.1.0(react@18.2.0) + '@chakra-ui/react-use-event-listener': 2.1.0(react@18.2.0) + '@chakra-ui/react-use-merge-refs': 2.1.0(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.5.8(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) - framer-motion: 10.12.16(react-dom@18.2.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) + framer-motion: 10.16.4(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@chakra-ui/transition@2.0.16(framer-motion@10.12.16)(react@18.2.0): - resolution: {integrity: sha512-E+RkwlPc3H7P1crEXmXwDXMB2lqY2LLia2P5siQ4IEnRWIgZXlIw+8Em+NtHNgusel2N+9yuB0wT9SeZZeZ3CQ==} + /@chakra-ui/transition@2.1.0(framer-motion@10.16.4)(react@18.2.0): + resolution: {integrity: sha512-orkT6T/Dt+/+kVwJNy7zwJ+U2xAZ3EU7M3XCs45RBvUnZDr/u9vdmaM/3D/rOpmQJWgQBwKPJleUXrYWUagEDQ==} peerDependencies: framer-motion: '>=4.0.0' react: '>=18' dependencies: '@chakra-ui/shared-utils': 2.0.5 - framer-motion: 10.12.16(react-dom@18.2.0)(react@18.2.0) + framer-motion: 10.16.4(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 dev: false @@ -4318,17 +4354,34 @@ packages: lodash.mergewith: 4.6.2 dev: false - /@chakra-ui/visually-hidden@2.0.15(@chakra-ui/system@2.5.8)(react@18.2.0): - resolution: {integrity: sha512-WWULIiucYRBIewHKFA7BssQ2ABLHLVd9lrUo3N3SZgR0u4ZRDDVEUNOy+r+9ruDze8+36dGbN9wsN1IdELtdOw==} + /@chakra-ui/visually-hidden@2.2.0(@chakra-ui/system@2.6.1)(react@18.2.0): + resolution: {integrity: sha512-KmKDg01SrQ7VbTD3+cPWf/UfpF5MSwm3v7MWi0n5t8HnnadT13MF0MJCDSXbBWnzLv1ZKJ6zlyAOeARWX+DpjQ==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' dependencies: - '@chakra-ui/system': 2.5.8(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false - /@cmfcmf/docusaurus-search-local@1.1.0(@docusaurus/core@2.4.1)(search-insights@2.6.0): + /@clack/core@0.3.3: + resolution: {integrity: sha512-5ZGyb75BUBjlll6eOa1m/IZBxwk91dooBWhPSL67sWcLS0zt9SnswRL0l26TVdBhb0wnWORRxUn//uH6n4z7+A==} + dependencies: + picocolors: 1.0.0 + sisteransi: 1.0.5 + dev: false + + /@clack/prompts@0.7.0: + resolution: {integrity: sha512-0MhX9/B4iL6Re04jPrttDm+BsP8y6mS7byuv0BvXgdXhbV5PdlsHt55dvNsuBCPZ7xq1oTAOOuotR9NFbQyMSA==} + dependencies: + '@clack/core': 0.3.3 + picocolors: 1.0.0 + sisteransi: 1.0.5 + dev: false + bundledDependencies: + - is-unicode-supported + + /@cmfcmf/docusaurus-search-local@1.1.0(@docusaurus/core@2.4.1)(search-insights@2.8.2): resolution: {integrity: sha512-0IVb/aA0IK8ZlktuxmgXmluXfcSpo6Vdd2nG21y1aOH9nVYnPP231Dn0H8Ng9Qf9ronQQCDWHnuWpYOr9rUrEQ==} peerDependencies: '@docusaurus/core': ^2.0.0 @@ -4337,10 +4390,10 @@ packages: nodejieba: optional: true dependencies: - '@algolia/autocomplete-js': 1.9.2(@algolia/client-search@4.17.1)(algoliasearch@4.17.0)(search-insights@2.6.0) + '@algolia/autocomplete-js': 1.9.2(@algolia/client-search@4.17.1)(algoliasearch@4.17.0)(search-insights@2.8.2) '@algolia/autocomplete-theme-classic': 1.9.2 '@algolia/client-search': 4.17.1 - '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4)(eslint@8.46.0)(react-dom@17.0.0)(react@17.0.0)(typescript@5.1.3) + '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4)(eslint@8.49.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) algoliasearch: 4.17.0 cheerio: 1.0.0-rc.12 clsx: 1.2.1 @@ -4565,7 +4618,7 @@ packages: resolution: {integrity: sha512-NaXVp3I8LdmJ54fn038KHgG7HmbIzZlKS2FkVf6mKcW5bYMJovkx4947joQyZk5yubxOZ+ddHSh79y39Aevufg==} dev: false - /@docsearch/react@3.3.5(@algolia/client-search@4.17.2)(react-dom@17.0.0)(react@17.0.0): + /@docsearch/react@3.3.5(@algolia/client-search@4.19.1)(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-Zuxf4z5PZ9eIQkVCNu76v1H+KAztKItNn3rLzZa7kpBS+++TgNARITnZeUS7C1DKoAhJZFr6T/H+Lvc6h/iiYg==} peerDependencies: '@types/react': '>= 16.8.0 < 19.0.0' @@ -4580,16 +4633,16 @@ packages: optional: true dependencies: '@algolia/autocomplete-core': 1.8.2 - '@algolia/autocomplete-preset-algolia': 1.8.2(@algolia/client-search@4.17.2)(algoliasearch@4.17.0) + '@algolia/autocomplete-preset-algolia': 1.8.2(@algolia/client-search@4.19.1)(algoliasearch@4.17.0) '@docsearch/css': 3.3.5 algoliasearch: 4.17.0 - react: 17.0.0 - react-dom: 17.0.0(react@17.0.0) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) transitivePeerDependencies: - '@algolia/client-search' dev: false - /@docusaurus/core@2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4)(eslint@8.46.0)(react-dom@17.0.0)(react@17.0.0)(typescript@5.1.3): + /@docusaurus/core@2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4)(eslint@8.49.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2): resolution: {integrity: sha512-SNsY7PshK3Ri7vtsLXVeAJGS50nJN3RgF836zkyUfAD01Fq+sAk5EwWgLw+nnm5KVNGDu7PRR2kRGDsWvqpo0g==} engines: {node: '>=16.14'} hasBin: true @@ -4609,8 +4662,8 @@ packages: '@babel/traverse': 7.21.5 '@docusaurus/cssnano-preset': 2.4.1 '@docusaurus/logger': 2.4.1 - '@docusaurus/mdx-loader': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4)(react-dom@17.0.0)(react@17.0.0) - '@docusaurus/react-loadable': 5.5.2(react@17.0.0) + '@docusaurus/mdx-loader': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4)(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/react-loadable': 5.5.2(react@17.0.2) '@docusaurus/utils': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4) '@docusaurus/utils-common': 2.4.1(@docusaurus/types@2.4.1) '@docusaurus/utils-validation': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4) @@ -4647,15 +4700,15 @@ packages: postcss: 8.4.23 postcss-loader: 7.3.0(postcss@8.4.23)(webpack@5.83.1) prompts: 2.4.2 - react: 17.0.0 - react-dev-utils: 12.0.1(eslint@8.46.0)(typescript@5.1.3)(webpack@5.83.1) - react-dom: 17.0.0(react@17.0.0) - react-helmet-async: 1.3.0(react-dom@17.0.0)(react@17.0.0) - react-loadable: /@docusaurus/react-loadable@5.5.2(react@17.0.0) + react: 17.0.2 + react-dev-utils: 12.0.1(eslint@8.49.0)(typescript@5.2.2)(webpack@5.83.1) + react-dom: 17.0.2(react@17.0.2) + react-helmet-async: 1.3.0(react-dom@17.0.2)(react@17.0.2) + react-loadable: /@docusaurus/react-loadable@5.5.2(react@17.0.2) react-loadable-ssr-addon-v5-slorber: 1.0.1(@docusaurus/react-loadable@5.5.2)(webpack@5.83.1) - react-router: 5.3.4(react@17.0.0) - react-router-config: 5.1.1(react-router@5.3.4)(react@17.0.0) - react-router-dom: 5.3.4(react@17.0.0) + react-router: 5.3.4(react@17.0.2) + react-router-config: 5.1.1(react-router@5.3.4)(react@17.0.2) + react-router-dom: 5.3.4(react@17.0.2) rtl-detect: 1.0.4 semver: 7.5.1 serve-handler: 6.1.5 @@ -4707,7 +4760,7 @@ packages: tslib: 2.5.3 dev: false - /@docusaurus/mdx-loader@2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4)(react-dom@17.0.0)(react@17.0.0): + /@docusaurus/mdx-loader@2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4)(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-4KhUhEavteIAmbBj7LVFnrVYDiU51H5YWW1zY6SmBSte/YLhDutztLTBE0PQl1Grux1jzUJeaSvAzHpTn6JJDQ==} engines: {node: '>=16.14'} peerDependencies: @@ -4724,8 +4777,8 @@ packages: fs-extra: 10.1.0 image-size: 1.0.2 mdast-util-to-string: 2.0.0 - react: 17.0.0 - react-dom: 17.0.0(react@17.0.0) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) remark-emoji: 2.2.0 stringify-object: 3.3.0 tslib: 2.5.3 @@ -4742,39 +4795,39 @@ packages: - webpack-cli dev: false - /@docusaurus/module-type-aliases@2.4.1(esbuild@0.18.4)(react-dom@17.0.0)(react@17.0.0): + /@docusaurus/module-type-aliases@2.4.1(esbuild@0.18.4)(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-gLBuIFM8Dp2XOCWffUDSjtxY7jQgKvYujt7Mx5s4FCTfoL5dN1EVbnrn+O2Wvh8b0a77D57qoIDY7ghgmatR1A==} peerDependencies: react: '*' react-dom: '*' dependencies: - '@docusaurus/react-loadable': 5.5.2(react@17.0.0) - '@docusaurus/types': 2.4.1(esbuild@0.18.4)(react-dom@17.0.0)(react@17.0.0) + '@docusaurus/react-loadable': 5.5.2(react@17.0.2) + '@docusaurus/types': 2.4.1(esbuild@0.18.4)(react-dom@17.0.2)(react@17.0.2) '@types/history': 4.7.11 - '@types/react': 18.2.12 + '@types/react': 18.2.21 '@types/react-router-config': 5.0.7 '@types/react-router-dom': 5.3.3 - react: 17.0.0 - react-dom: 17.0.0(react@17.0.0) - react-helmet-async: 1.3.0(react-dom@17.0.0)(react@17.0.0) - react-loadable: /@docusaurus/react-loadable@5.5.2(react@17.0.0) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + react-helmet-async: 1.3.0(react-dom@17.0.2)(react@17.0.2) + react-loadable: /@docusaurus/react-loadable@5.5.2(react@17.0.2) transitivePeerDependencies: - '@swc/core' - esbuild - uglify-js - webpack-cli - /@docusaurus/plugin-content-blog@2.4.1(esbuild@0.18.4)(eslint@8.46.0)(react-dom@17.0.0)(react@17.0.0)(typescript@5.1.3): + /@docusaurus/plugin-content-blog@2.4.1(esbuild@0.18.4)(eslint@8.49.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2): resolution: {integrity: sha512-E2i7Knz5YIbE1XELI6RlTnZnGgS52cUO4BlCiCUCvQHbR+s1xeIWz4C6BtaVnlug0Ccz7nFSksfwDpVlkujg5Q==} engines: {node: '>=16.14'} peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 dependencies: - '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4)(eslint@8.46.0)(react-dom@17.0.0)(react@17.0.0)(typescript@5.1.3) + '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4)(eslint@8.49.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) '@docusaurus/logger': 2.4.1 - '@docusaurus/mdx-loader': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4)(react-dom@17.0.0)(react@17.0.0) - '@docusaurus/types': 2.4.1(esbuild@0.18.4)(react-dom@17.0.0)(react@17.0.0) + '@docusaurus/mdx-loader': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4)(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/types': 2.4.1(esbuild@0.18.4)(react-dom@17.0.2)(react@17.0.2) '@docusaurus/utils': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4) '@docusaurus/utils-common': 2.4.1(@docusaurus/types@2.4.1) '@docusaurus/utils-validation': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4) @@ -4782,8 +4835,8 @@ packages: feed: 4.2.2 fs-extra: 10.1.0 lodash: 4.17.21 - react: 17.0.0 - react-dom: 17.0.0(react@17.0.0) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) reading-time: 1.5.0 tslib: 2.5.2 unist-util-visit: 2.0.3 @@ -4807,18 +4860,18 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-content-docs@2.4.1(esbuild@0.18.4)(eslint@8.46.0)(react-dom@17.0.0)(react@17.0.0)(typescript@5.1.3): + /@docusaurus/plugin-content-docs@2.4.1(esbuild@0.18.4)(eslint@8.49.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2): resolution: {integrity: sha512-Lo7lSIcpswa2Kv4HEeUcGYqaasMUQNpjTXpV0N8G6jXgZaQurqp7E8NGYeGbDXnb48czmHWbzDL4S3+BbK0VzA==} engines: {node: '>=16.14'} peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 dependencies: - '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4)(eslint@8.46.0)(react-dom@17.0.0)(react@17.0.0)(typescript@5.1.3) + '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4)(eslint@8.49.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) '@docusaurus/logger': 2.4.1 - '@docusaurus/mdx-loader': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4)(react-dom@17.0.0)(react@17.0.0) - '@docusaurus/module-type-aliases': 2.4.1(esbuild@0.18.4)(react-dom@17.0.0)(react@17.0.0) - '@docusaurus/types': 2.4.1(esbuild@0.18.4)(react-dom@17.0.0)(react@17.0.0) + '@docusaurus/mdx-loader': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4)(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/module-type-aliases': 2.4.1(esbuild@0.18.4)(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/types': 2.4.1(esbuild@0.18.4)(react-dom@17.0.2)(react@17.0.2) '@docusaurus/utils': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4) '@docusaurus/utils-validation': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4) '@types/react-router-config': 5.0.7 @@ -4827,8 +4880,8 @@ packages: import-fresh: 3.3.0 js-yaml: 4.1.0 lodash: 4.17.21 - react: 17.0.0 - react-dom: 17.0.0(react@17.0.0) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) tslib: 2.5.2 utility-types: 3.10.0 webpack: 5.83.1(esbuild@0.18.4) @@ -4850,21 +4903,21 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-content-pages@2.4.1(esbuild@0.18.4)(eslint@8.46.0)(react-dom@17.0.0)(react@17.0.0)(typescript@5.1.3): + /@docusaurus/plugin-content-pages@2.4.1(esbuild@0.18.4)(eslint@8.49.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2): resolution: {integrity: sha512-/UjuH/76KLaUlL+o1OvyORynv6FURzjurSjvn2lbWTFc4tpYY2qLYTlKpTCBVPhlLUQsfyFnshEJDLmPneq2oA==} engines: {node: '>=16.14'} peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 dependencies: - '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4)(eslint@8.46.0)(react-dom@17.0.0)(react@17.0.0)(typescript@5.1.3) - '@docusaurus/mdx-loader': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4)(react-dom@17.0.0)(react@17.0.0) - '@docusaurus/types': 2.4.1(esbuild@0.18.4)(react-dom@17.0.0)(react@17.0.0) + '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4)(eslint@8.49.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) + '@docusaurus/mdx-loader': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4)(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/types': 2.4.1(esbuild@0.18.4)(react-dom@17.0.2)(react@17.0.2) '@docusaurus/utils': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4) '@docusaurus/utils-validation': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4) fs-extra: 10.1.0 - react: 17.0.0 - react-dom: 17.0.0(react@17.0.0) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) tslib: 2.5.2 webpack: 5.83.1(esbuild@0.18.4) transitivePeerDependencies: @@ -4885,20 +4938,20 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-debug@2.4.1(esbuild@0.18.4)(eslint@8.46.0)(react-dom@17.0.0)(react@17.0.0)(typescript@5.1.3): + /@docusaurus/plugin-debug@2.4.1(esbuild@0.18.4)(eslint@8.49.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2): resolution: {integrity: sha512-7Yu9UPzRShlrH/G8btOpR0e6INFZr0EegWplMjOqelIwAcx3PKyR8mgPTxGTxcqiYj6hxSCRN0D8R7YrzImwNA==} engines: {node: '>=16.14'} peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 dependencies: - '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4)(eslint@8.46.0)(react-dom@17.0.0)(react@17.0.0)(typescript@5.1.3) - '@docusaurus/types': 2.4.1(esbuild@0.18.4)(react-dom@17.0.0)(react@17.0.0) + '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4)(eslint@8.49.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) + '@docusaurus/types': 2.4.1(esbuild@0.18.4)(react-dom@17.0.2)(react@17.0.2) '@docusaurus/utils': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4) fs-extra: 10.1.0 - react: 17.0.0 - react-dom: 17.0.0(react@17.0.0) - react-json-view: 1.21.3(react-dom@17.0.0)(react@17.0.0) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + react-json-view: 1.21.3(react-dom@17.0.2)(react@17.0.2) tslib: 2.5.2 transitivePeerDependencies: - '@parcel/css' @@ -4920,18 +4973,18 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-analytics@2.4.1(esbuild@0.18.4)(eslint@8.46.0)(react-dom@17.0.0)(react@17.0.0)(typescript@5.1.3): + /@docusaurus/plugin-google-analytics@2.4.1(esbuild@0.18.4)(eslint@8.49.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2): resolution: {integrity: sha512-dyZJdJiCoL+rcfnm0RPkLt/o732HvLiEwmtoNzOoz9MSZz117UH2J6U2vUDtzUzwtFLIf32KkeyzisbwUCgcaQ==} engines: {node: '>=16.14'} peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 dependencies: - '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4)(eslint@8.46.0)(react-dom@17.0.0)(react@17.0.0)(typescript@5.1.3) - '@docusaurus/types': 2.4.1(esbuild@0.18.4)(react-dom@17.0.0)(react@17.0.0) + '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4)(eslint@8.49.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) + '@docusaurus/types': 2.4.1(esbuild@0.18.4)(react-dom@17.0.2)(react@17.0.2) '@docusaurus/utils-validation': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4) - react: 17.0.0 - react-dom: 17.0.0(react@17.0.0) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) tslib: 2.5.2 transitivePeerDependencies: - '@parcel/css' @@ -4951,18 +5004,18 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-gtag@2.4.1(esbuild@0.18.4)(eslint@8.46.0)(react-dom@17.0.0)(react@17.0.0)(typescript@5.1.3): + /@docusaurus/plugin-google-gtag@2.4.1(esbuild@0.18.4)(eslint@8.49.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2): resolution: {integrity: sha512-mKIefK+2kGTQBYvloNEKtDmnRD7bxHLsBcxgnbt4oZwzi2nxCGjPX6+9SQO2KCN5HZbNrYmGo5GJfMgoRvy6uA==} engines: {node: '>=16.14'} peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 dependencies: - '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4)(eslint@8.46.0)(react-dom@17.0.0)(react@17.0.0)(typescript@5.1.3) - '@docusaurus/types': 2.4.1(esbuild@0.18.4)(react-dom@17.0.0)(react@17.0.0) + '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4)(eslint@8.49.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) + '@docusaurus/types': 2.4.1(esbuild@0.18.4)(react-dom@17.0.2)(react@17.0.2) '@docusaurus/utils-validation': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4) - react: 17.0.0 - react-dom: 17.0.0(react@17.0.0) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) tslib: 2.5.2 transitivePeerDependencies: - '@parcel/css' @@ -4982,18 +5035,18 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-tag-manager@2.4.1(esbuild@0.18.4)(eslint@8.46.0)(react-dom@17.0.0)(react@17.0.0)(typescript@5.1.3): + /@docusaurus/plugin-google-tag-manager@2.4.1(esbuild@0.18.4)(eslint@8.49.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2): resolution: {integrity: sha512-Zg4Ii9CMOLfpeV2nG74lVTWNtisFaH9QNtEw48R5QE1KIwDBdTVaiSA18G1EujZjrzJJzXN79VhINSbOJO/r3g==} engines: {node: '>=16.14'} peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 dependencies: - '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4)(eslint@8.46.0)(react-dom@17.0.0)(react@17.0.0)(typescript@5.1.3) - '@docusaurus/types': 2.4.1(esbuild@0.18.4)(react-dom@17.0.0)(react@17.0.0) + '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4)(eslint@8.49.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) + '@docusaurus/types': 2.4.1(esbuild@0.18.4)(react-dom@17.0.2)(react@17.0.2) '@docusaurus/utils-validation': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4) - react: 17.0.0 - react-dom: 17.0.0(react@17.0.0) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) tslib: 2.5.2 transitivePeerDependencies: - '@parcel/css' @@ -5013,22 +5066,22 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-sitemap@2.4.1(esbuild@0.18.4)(eslint@8.46.0)(react-dom@17.0.0)(react@17.0.0)(typescript@5.1.3): + /@docusaurus/plugin-sitemap@2.4.1(esbuild@0.18.4)(eslint@8.49.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2): resolution: {integrity: sha512-lZx+ijt/+atQ3FVE8FOHV/+X3kuok688OydDXrqKRJyXBJZKgGjA2Qa8RjQ4f27V2woaXhtnyrdPop/+OjVMRg==} engines: {node: '>=16.14'} peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 dependencies: - '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4)(eslint@8.46.0)(react-dom@17.0.0)(react@17.0.0)(typescript@5.1.3) + '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4)(eslint@8.49.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) '@docusaurus/logger': 2.4.1 - '@docusaurus/types': 2.4.1(esbuild@0.18.4)(react-dom@17.0.0)(react@17.0.0) + '@docusaurus/types': 2.4.1(esbuild@0.18.4)(react-dom@17.0.2)(react@17.0.2) '@docusaurus/utils': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4) '@docusaurus/utils-common': 2.4.1(@docusaurus/types@2.4.1) '@docusaurus/utils-validation': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4) fs-extra: 10.1.0 - react: 17.0.0 - react-dom: 17.0.0(react@17.0.0) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) sitemap: 7.1.1 tslib: 2.5.2 transitivePeerDependencies: @@ -5049,28 +5102,28 @@ packages: - webpack-cli dev: false - /@docusaurus/preset-classic@2.4.1(@algolia/client-search@4.17.2)(esbuild@0.18.4)(eslint@8.46.0)(react-dom@17.0.0)(react@17.0.0)(typescript@5.1.3): + /@docusaurus/preset-classic@2.4.1(@algolia/client-search@4.19.1)(esbuild@0.18.4)(eslint@8.49.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2): resolution: {integrity: sha512-P4//+I4zDqQJ+UDgoFrjIFaQ1MeS9UD1cvxVQaI6O7iBmiHQm0MGROP1TbE7HlxlDPXFJjZUK3x3cAoK63smGQ==} engines: {node: '>=16.14'} peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 dependencies: - '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4)(eslint@8.46.0)(react-dom@17.0.0)(react@17.0.0)(typescript@5.1.3) - '@docusaurus/plugin-content-blog': 2.4.1(esbuild@0.18.4)(eslint@8.46.0)(react-dom@17.0.0)(react@17.0.0)(typescript@5.1.3) - '@docusaurus/plugin-content-docs': 2.4.1(esbuild@0.18.4)(eslint@8.46.0)(react-dom@17.0.0)(react@17.0.0)(typescript@5.1.3) - '@docusaurus/plugin-content-pages': 2.4.1(esbuild@0.18.4)(eslint@8.46.0)(react-dom@17.0.0)(react@17.0.0)(typescript@5.1.3) - '@docusaurus/plugin-debug': 2.4.1(esbuild@0.18.4)(eslint@8.46.0)(react-dom@17.0.0)(react@17.0.0)(typescript@5.1.3) - '@docusaurus/plugin-google-analytics': 2.4.1(esbuild@0.18.4)(eslint@8.46.0)(react-dom@17.0.0)(react@17.0.0)(typescript@5.1.3) - '@docusaurus/plugin-google-gtag': 2.4.1(esbuild@0.18.4)(eslint@8.46.0)(react-dom@17.0.0)(react@17.0.0)(typescript@5.1.3) - '@docusaurus/plugin-google-tag-manager': 2.4.1(esbuild@0.18.4)(eslint@8.46.0)(react-dom@17.0.0)(react@17.0.0)(typescript@5.1.3) - '@docusaurus/plugin-sitemap': 2.4.1(esbuild@0.18.4)(eslint@8.46.0)(react-dom@17.0.0)(react@17.0.0)(typescript@5.1.3) - '@docusaurus/theme-classic': 2.4.1(esbuild@0.18.4)(eslint@8.46.0)(react-dom@17.0.0)(react@17.0.0)(typescript@5.1.3) - '@docusaurus/theme-common': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4)(eslint@8.46.0)(react-dom@17.0.0)(react@17.0.0)(typescript@5.1.3) - '@docusaurus/theme-search-algolia': 2.4.1(@algolia/client-search@4.17.2)(@docusaurus/types@2.4.1)(esbuild@0.18.4)(eslint@8.46.0)(react-dom@17.0.0)(react@17.0.0)(typescript@5.1.3) - '@docusaurus/types': 2.4.1(esbuild@0.18.4)(react-dom@17.0.0)(react@17.0.0) - react: 17.0.0 - react-dom: 17.0.0(react@17.0.0) + '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4)(eslint@8.49.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) + '@docusaurus/plugin-content-blog': 2.4.1(esbuild@0.18.4)(eslint@8.49.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) + '@docusaurus/plugin-content-docs': 2.4.1(esbuild@0.18.4)(eslint@8.49.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) + '@docusaurus/plugin-content-pages': 2.4.1(esbuild@0.18.4)(eslint@8.49.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) + '@docusaurus/plugin-debug': 2.4.1(esbuild@0.18.4)(eslint@8.49.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) + '@docusaurus/plugin-google-analytics': 2.4.1(esbuild@0.18.4)(eslint@8.49.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) + '@docusaurus/plugin-google-gtag': 2.4.1(esbuild@0.18.4)(eslint@8.49.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) + '@docusaurus/plugin-google-tag-manager': 2.4.1(esbuild@0.18.4)(eslint@8.49.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) + '@docusaurus/plugin-sitemap': 2.4.1(esbuild@0.18.4)(eslint@8.49.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) + '@docusaurus/theme-classic': 2.4.1(esbuild@0.18.4)(eslint@8.49.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) + '@docusaurus/theme-common': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4)(eslint@8.49.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) + '@docusaurus/theme-search-algolia': 2.4.1(@algolia/client-search@4.19.1)(@docusaurus/types@2.4.1)(esbuild@0.18.4)(eslint@8.49.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) + '@docusaurus/types': 2.4.1(esbuild@0.18.4)(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) transitivePeerDependencies: - '@algolia/client-search' - '@parcel/css' @@ -5092,46 +5145,46 @@ packages: - webpack-cli dev: false - /@docusaurus/react-loadable@5.5.2(react@17.0.0): + /@docusaurus/react-loadable@5.5.2(react@17.0.2): resolution: {integrity: sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ==} peerDependencies: react: '*' dependencies: - '@types/react': 18.2.12 + '@types/react': 18.2.21 prop-types: 15.8.1 - react: 17.0.0 + react: 17.0.2 - /@docusaurus/theme-classic@2.4.1(esbuild@0.18.4)(eslint@8.46.0)(react-dom@17.0.0)(react@17.0.0)(typescript@5.1.3): + /@docusaurus/theme-classic@2.4.1(esbuild@0.18.4)(eslint@8.49.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2): resolution: {integrity: sha512-Rz0wKUa+LTW1PLXmwnf8mn85EBzaGSt6qamqtmnh9Hflkc+EqiYMhtUJeLdV+wsgYq4aG0ANc+bpUDpsUhdnwg==} engines: {node: '>=16.14'} peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 dependencies: - '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4)(eslint@8.46.0)(react-dom@17.0.0)(react@17.0.0)(typescript@5.1.3) - '@docusaurus/mdx-loader': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4)(react-dom@17.0.0)(react@17.0.0) - '@docusaurus/module-type-aliases': 2.4.1(esbuild@0.18.4)(react-dom@17.0.0)(react@17.0.0) - '@docusaurus/plugin-content-blog': 2.4.1(esbuild@0.18.4)(eslint@8.46.0)(react-dom@17.0.0)(react@17.0.0)(typescript@5.1.3) - '@docusaurus/plugin-content-docs': 2.4.1(esbuild@0.18.4)(eslint@8.46.0)(react-dom@17.0.0)(react@17.0.0)(typescript@5.1.3) - '@docusaurus/plugin-content-pages': 2.4.1(esbuild@0.18.4)(eslint@8.46.0)(react-dom@17.0.0)(react@17.0.0)(typescript@5.1.3) - '@docusaurus/theme-common': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4)(eslint@8.46.0)(react-dom@17.0.0)(react@17.0.0)(typescript@5.1.3) + '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4)(eslint@8.49.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) + '@docusaurus/mdx-loader': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4)(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/module-type-aliases': 2.4.1(esbuild@0.18.4)(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/plugin-content-blog': 2.4.1(esbuild@0.18.4)(eslint@8.49.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) + '@docusaurus/plugin-content-docs': 2.4.1(esbuild@0.18.4)(eslint@8.49.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) + '@docusaurus/plugin-content-pages': 2.4.1(esbuild@0.18.4)(eslint@8.49.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) + '@docusaurus/theme-common': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4)(eslint@8.49.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) '@docusaurus/theme-translations': 2.4.1 - '@docusaurus/types': 2.4.1(esbuild@0.18.4)(react-dom@17.0.0)(react@17.0.0) + '@docusaurus/types': 2.4.1(esbuild@0.18.4)(react-dom@17.0.2)(react@17.0.2) '@docusaurus/utils': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4) '@docusaurus/utils-common': 2.4.1(@docusaurus/types@2.4.1) '@docusaurus/utils-validation': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4) - '@mdx-js/react': 1.6.22(react@17.0.0) + '@mdx-js/react': 1.6.22(react@17.0.2) clsx: 1.2.1 copy-text-to-clipboard: 3.1.0 infima: 0.2.0-alpha.43 lodash: 4.17.21 nprogress: 0.2.0 postcss: 8.4.23 - prism-react-renderer: 1.3.5(react@17.0.0) + prism-react-renderer: 1.3.5(react@17.0.2) prismjs: 1.29.0 - react: 17.0.0 - react-dom: 17.0.0(react@17.0.0) - react-router-dom: 5.3.4(react@17.0.0) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + react-router-dom: 5.3.4(react@17.0.2) rtlcss: 3.5.0 tslib: 2.5.2 utility-types: 3.10.0 @@ -5153,30 +5206,30 @@ packages: - webpack-cli dev: false - /@docusaurus/theme-common@2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4)(eslint@8.46.0)(react-dom@17.0.0)(react@17.0.0)(typescript@5.1.3): + /@docusaurus/theme-common@2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4)(eslint@8.49.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2): resolution: {integrity: sha512-G7Zau1W5rQTaFFB3x3soQoZpkgMbl/SYNG8PfMFIjKa3M3q8n0m/GRf5/H/e5BqOvt8c+ZWIXGCiz+kUCSHovA==} engines: {node: '>=16.14'} peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 dependencies: - '@docusaurus/mdx-loader': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4)(react-dom@17.0.0)(react@17.0.0) - '@docusaurus/module-type-aliases': 2.4.1(esbuild@0.18.4)(react-dom@17.0.0)(react@17.0.0) - '@docusaurus/plugin-content-blog': 2.4.1(esbuild@0.18.4)(eslint@8.46.0)(react-dom@17.0.0)(react@17.0.0)(typescript@5.1.3) - '@docusaurus/plugin-content-docs': 2.4.1(esbuild@0.18.4)(eslint@8.46.0)(react-dom@17.0.0)(react@17.0.0)(typescript@5.1.3) - '@docusaurus/plugin-content-pages': 2.4.1(esbuild@0.18.4)(eslint@8.46.0)(react-dom@17.0.0)(react@17.0.0)(typescript@5.1.3) + '@docusaurus/mdx-loader': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4)(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/module-type-aliases': 2.4.1(esbuild@0.18.4)(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/plugin-content-blog': 2.4.1(esbuild@0.18.4)(eslint@8.49.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) + '@docusaurus/plugin-content-docs': 2.4.1(esbuild@0.18.4)(eslint@8.49.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) + '@docusaurus/plugin-content-pages': 2.4.1(esbuild@0.18.4)(eslint@8.49.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) '@docusaurus/utils': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4) '@docusaurus/utils-common': 2.4.1(@docusaurus/types@2.4.1) '@types/history': 4.7.11 - '@types/react': 18.2.12 + '@types/react': 18.2.21 '@types/react-router-config': 5.0.7 clsx: 1.2.1 parse-numeric-range: 1.3.0 - prism-react-renderer: 1.3.5(react@17.0.0) - react: 17.0.0 - react-dom: 17.0.0(react@17.0.0) + prism-react-renderer: 1.3.5(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) tslib: 2.5.2 - use-sync-external-store: 1.2.0(react@17.0.0) + use-sync-external-store: 1.2.0(react@17.0.2) utility-types: 3.10.0 transitivePeerDependencies: - '@docusaurus/types' @@ -5197,18 +5250,18 @@ packages: - webpack-cli dev: false - /@docusaurus/theme-search-algolia@2.4.1(@algolia/client-search@4.17.2)(@docusaurus/types@2.4.1)(esbuild@0.18.4)(eslint@8.46.0)(react-dom@17.0.0)(react@17.0.0)(typescript@5.1.3): + /@docusaurus/theme-search-algolia@2.4.1(@algolia/client-search@4.19.1)(@docusaurus/types@2.4.1)(esbuild@0.18.4)(eslint@8.49.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2): resolution: {integrity: sha512-6BcqW2lnLhZCXuMAvPRezFs1DpmEKzXFKlYjruuas+Xy3AQeFzDJKTJFIm49N77WFCTyxff8d3E4Q9pi/+5McQ==} engines: {node: '>=16.14'} peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 dependencies: - '@docsearch/react': 3.3.5(@algolia/client-search@4.17.2)(react-dom@17.0.0)(react@17.0.0) - '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4)(eslint@8.46.0)(react-dom@17.0.0)(react@17.0.0)(typescript@5.1.3) + '@docsearch/react': 3.3.5(@algolia/client-search@4.19.1)(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4)(eslint@8.49.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) '@docusaurus/logger': 2.4.1 - '@docusaurus/plugin-content-docs': 2.4.1(esbuild@0.18.4)(eslint@8.46.0)(react-dom@17.0.0)(react@17.0.0)(typescript@5.1.3) - '@docusaurus/theme-common': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4)(eslint@8.46.0)(react-dom@17.0.0)(react@17.0.0)(typescript@5.1.3) + '@docusaurus/plugin-content-docs': 2.4.1(esbuild@0.18.4)(eslint@8.49.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) + '@docusaurus/theme-common': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4)(eslint@8.49.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) '@docusaurus/theme-translations': 2.4.1 '@docusaurus/utils': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4) '@docusaurus/utils-validation': 2.4.1(@docusaurus/types@2.4.1)(esbuild@0.18.4) @@ -5218,8 +5271,8 @@ packages: eta: 2.2.0 fs-extra: 10.1.0 lodash: 4.17.21 - react: 17.0.0 - react-dom: 17.0.0(react@17.0.0) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) tslib: 2.5.2 utility-types: 3.10.0 transitivePeerDependencies: @@ -5248,22 +5301,22 @@ packages: engines: {node: '>=16.14'} dependencies: fs-extra: 10.1.0 - tslib: 2.5.3 + tslib: 2.5.2 dev: false - /@docusaurus/types@2.4.1(esbuild@0.18.4)(react-dom@17.0.0)(react@17.0.0): + /@docusaurus/types@2.4.1(esbuild@0.18.4)(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-0R+cbhpMkhbRXX138UOc/2XZFF8hiZa6ooZAEEJFp5scytzCw4tC1gChMFXrpa3d2tYE6AX8IrOEpSonLmfQuQ==} peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 dependencies: '@types/history': 4.7.11 - '@types/react': 18.2.12 + '@types/react': 18.2.21 commander: 5.1.0 joi: 17.9.2 - react: 17.0.0 - react-dom: 17.0.0(react@17.0.0) - react-helmet-async: 1.3.0(react-dom@17.0.0)(react@17.0.0) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + react-helmet-async: 1.3.0(react-dom@17.0.2)(react@17.0.2) utility-types: 3.10.0 webpack: 5.83.1(esbuild@0.18.4) webpack-merge: 5.9.0 @@ -5282,7 +5335,7 @@ packages: '@docusaurus/types': optional: true dependencies: - '@docusaurus/types': 2.4.1(esbuild@0.18.4)(react-dom@17.0.0)(react@17.0.0) + '@docusaurus/types': 2.4.1(esbuild@0.18.4)(react-dom@17.0.2)(react@17.0.2) tslib: 2.5.3 dev: false @@ -5314,7 +5367,7 @@ packages: optional: true dependencies: '@docusaurus/logger': 2.4.1 - '@docusaurus/types': 2.4.1(esbuild@0.18.4)(react-dom@17.0.0)(react@17.0.0) + '@docusaurus/types': 2.4.1(esbuild@0.18.4)(react-dom@17.0.2)(react@17.0.2) '@svgr/webpack': 6.5.1 escape-string-regexp: 4.0.0 file-loader: 6.2.0(webpack@5.83.1) @@ -5392,7 +5445,7 @@ packages: resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==} dev: false - /@emotion/react@11.11.1(@types/react@18.2.12)(react@18.2.0): + /@emotion/react@11.11.1(@types/react@18.2.21)(react@18.2.0): resolution: {integrity: sha512-5mlW1DquU5HaxjLkfkGN1GA/fvVGdyHURRiX/0FHl2cfIfRxSOfmxEH5YS43edp0OldZrZ+dkBKbngxcNCdZvA==} peerDependencies: '@types/react': '*' @@ -5408,7 +5461,7 @@ packages: '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) '@emotion/utils': 1.2.1 '@emotion/weak-memoize': 0.3.1 - '@types/react': 18.2.12 + '@types/react': 18.2.21 hoist-non-react-statics: 3.3.2 react: 18.2.0 dev: false @@ -5427,7 +5480,7 @@ packages: resolution: {integrity: sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==} dev: false - /@emotion/styled@11.11.0(@emotion/react@11.11.1)(@types/react@18.2.12)(react@18.2.0): + /@emotion/styled@11.11.0(@emotion/react@11.11.1)(@types/react@18.2.21)(react@18.2.0): resolution: {integrity: sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==} peerDependencies: '@emotion/react': ^11.0.0-rc.0 @@ -5440,11 +5493,11 @@ packages: '@babel/runtime': 7.22.5 '@emotion/babel-plugin': 11.11.0 '@emotion/is-prop-valid': 1.2.1 - '@emotion/react': 11.11.1(@types/react@18.2.12)(react@18.2.0) + '@emotion/react': 11.11.1(@types/react@18.2.21)(react@18.2.0) '@emotion/serialize': 1.1.2 '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) '@emotion/utils': 1.2.1 - '@types/react': 18.2.12 + '@types/react': 18.2.21 react: 18.2.0 dev: false @@ -5468,8 +5521,8 @@ packages: resolution: {integrity: sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==} dev: false - /@esbuild/android-arm64@0.17.19: - resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} + /@esbuild/android-arm64@0.18.20: + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -5485,8 +5538,8 @@ packages: requiresBuild: true optional: true - /@esbuild/android-arm@0.17.19: - resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} + /@esbuild/android-arm@0.18.20: + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -5502,8 +5555,8 @@ packages: requiresBuild: true optional: true - /@esbuild/android-x64@0.17.19: - resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} + /@esbuild/android-x64@0.18.20: + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -5519,8 +5572,8 @@ packages: requiresBuild: true optional: true - /@esbuild/darwin-arm64@0.17.19: - resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} + /@esbuild/darwin-arm64@0.18.20: + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -5536,8 +5589,8 @@ packages: requiresBuild: true optional: true - /@esbuild/darwin-x64@0.17.19: - resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} + /@esbuild/darwin-x64@0.18.20: + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -5553,8 +5606,8 @@ packages: requiresBuild: true optional: true - /@esbuild/freebsd-arm64@0.17.19: - resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} + /@esbuild/freebsd-arm64@0.18.20: + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -5570,8 +5623,8 @@ packages: requiresBuild: true optional: true - /@esbuild/freebsd-x64@0.17.19: - resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} + /@esbuild/freebsd-x64@0.18.20: + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -5587,8 +5640,8 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-arm64@0.17.19: - resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} + /@esbuild/linux-arm64@0.18.20: + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -5604,8 +5657,8 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-arm@0.17.19: - resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} + /@esbuild/linux-arm@0.18.20: + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -5621,8 +5674,8 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-ia32@0.17.19: - resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} + /@esbuild/linux-ia32@0.18.20: + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -5638,8 +5691,8 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-loong64@0.17.19: - resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} + /@esbuild/linux-loong64@0.18.20: + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -5655,8 +5708,8 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-mips64el@0.17.19: - resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} + /@esbuild/linux-mips64el@0.18.20: + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -5672,8 +5725,8 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-ppc64@0.17.19: - resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} + /@esbuild/linux-ppc64@0.18.20: + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -5689,8 +5742,8 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-riscv64@0.17.19: - resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} + /@esbuild/linux-riscv64@0.18.20: + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -5706,8 +5759,8 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-s390x@0.17.19: - resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} + /@esbuild/linux-s390x@0.18.20: + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -5723,8 +5776,8 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-x64@0.17.19: - resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} + /@esbuild/linux-x64@0.18.20: + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -5740,8 +5793,8 @@ packages: requiresBuild: true optional: true - /@esbuild/netbsd-x64@0.17.19: - resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} + /@esbuild/netbsd-x64@0.18.20: + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -5757,8 +5810,8 @@ packages: requiresBuild: true optional: true - /@esbuild/openbsd-x64@0.17.19: - resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} + /@esbuild/openbsd-x64@0.18.20: + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -5774,8 +5827,8 @@ packages: requiresBuild: true optional: true - /@esbuild/sunos-x64@0.17.19: - resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} + /@esbuild/sunos-x64@0.18.20: + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -5791,8 +5844,8 @@ packages: requiresBuild: true optional: true - /@esbuild/win32-arm64@0.17.19: - resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} + /@esbuild/win32-arm64@0.18.20: + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -5808,8 +5861,8 @@ packages: requiresBuild: true optional: true - /@esbuild/win32-ia32@0.17.19: - resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} + /@esbuild/win32-ia32@0.18.20: + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -5825,8 +5878,8 @@ packages: requiresBuild: true optional: true - /@esbuild/win32-x64@0.17.19: - resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} + /@esbuild/win32-x64@0.18.20: + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -5842,32 +5895,27 @@ packages: requiresBuild: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.46.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.49.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.46.0 - eslint-visitor-keys: 3.4.2 + eslint: 8.49.0 + eslint-visitor-keys: 3.4.3 - /@eslint-community/regexpp@4.5.1: - resolution: {integrity: sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - dev: true - - /@eslint-community/regexpp@4.6.2: - resolution: {integrity: sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==} + /@eslint-community/regexpp@4.8.0: + resolution: {integrity: sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - /@eslint/eslintrc@2.1.1: - resolution: {integrity: sha512-9t7ZA7NGGK8ckelF0PQCfcxIUzs1Md5rrO6U/c+FIQNanea5UZC0wqKXH4vHBccmu4ZJgZ2idtPeW7+Q2npOEA==} + /@eslint/eslintrc@2.1.2: + resolution: {integrity: sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 debug: 4.3.4 espree: 9.6.1 - globals: 13.20.0 + globals: 13.21.0 ignore: 5.2.4 import-fresh: 3.3.0 js-yaml: 4.1.0 @@ -5876,10 +5924,42 @@ packages: transitivePeerDependencies: - supports-color - /@eslint/js@8.46.0: - resolution: {integrity: sha512-a8TLtmPi8xzPkCbp/OGFUo5yhRkHM2Ko9kOWP4znJr0WAhWyThaw3PnwX4vOTWOAMsV2uRt32PPDcEz63esSaA==} + /@eslint/js@8.49.0: + resolution: {integrity: sha512-1S8uAY/MTJqVx0SC4epBq+N2yhuwtNwLbJYNZyhL2pO1ZVKn5HFXav5T41Ryzy9K9V7ZId2JB2oy/W4aCd9/2w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@ethereumjs/common@3.2.0: + resolution: {integrity: sha512-pksvzI0VyLgmuEF2FA/JR/4/y6hcPq8OUail3/AvycBaW1d5VSauOZzqGvJ3RTmR4MU35lWE8KseKOsEhrFRBA==} + dependencies: + '@ethereumjs/util': 8.1.0 + crc-32: 1.2.2 + dev: false + + /@ethereumjs/rlp@4.0.1: + resolution: {integrity: sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==} + engines: {node: '>=14'} + hasBin: true + dev: false + + /@ethereumjs/tx@4.2.0: + resolution: {integrity: sha512-1nc6VO4jtFd172BbSnTnDQVr9IYBFl1y4xPzZdtkrkKIncBCkdbgfdRV+MiTkJYAtTxvV12GRZLqBFT1PNK6Yw==} + engines: {node: '>=14'} + dependencies: + '@ethereumjs/common': 3.2.0 + '@ethereumjs/rlp': 4.0.1 + '@ethereumjs/util': 8.1.0 + ethereum-cryptography: 2.1.2 + dev: false + + /@ethereumjs/util@8.1.0: + resolution: {integrity: sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==} + engines: {node: '>=14'} + dependencies: + '@ethereumjs/rlp': 4.0.1 + ethereum-cryptography: 2.1.2 + micro-ftch: 0.3.1 + dev: false + /@ethersproject/address@5.7.0: resolution: {integrity: sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==} dependencies: @@ -5922,42 +6002,41 @@ packages: '@ethersproject/logger': 5.7.0 dev: false - /@graz-sh/style-guide@3.1.0(eslint@8.46.0)(prettier@3.0.0)(tailwindcss@3.3.3)(typescript@5.1.3): - resolution: {integrity: sha512-oCPak7f7TlxBQEOK2XQ/eVaakkSLdePB1nmieYS84fS3VJKGE9J68w/Brtuwkh75yJJs6pE7oRYk2XufyQNYlA==} + /@graz-sh/style-guide@4.0.1(eslint@8.49.0)(prettier@3.0.3)(tailwindcss@3.3.3)(typescript@5.2.2): + resolution: {integrity: sha512-0vh1v2TbdmDyMT+9QWW2GIsAv81gnUhfBYqH9CzXkwvrbvlNQuo7lawoLQ83ph8TL2CP09q6ZzgQ2g6uzNjGrw==} peerDependencies: eslint: '>=8' prettier: '>=2 || >=3' typescript: '>=4 || >=5' dependencies: - '@babel/core': 7.22.9 - '@babel/eslint-parser': 7.22.9(@babel/core@7.22.9)(eslint@8.46.0) - '@rushstack/eslint-patch': 1.3.2 - '@typescript-eslint/eslint-plugin': 6.2.1(@typescript-eslint/parser@6.2.1)(eslint@8.46.0)(typescript@5.1.3) - '@typescript-eslint/parser': 6.2.1(eslint@8.46.0)(typescript@5.1.3) - eslint: 8.46.0 - eslint-config-prettier: 8.9.0(eslint@8.46.0) - eslint-import-resolver-alias: 1.1.2(eslint-plugin-import@2.28.0) - eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@6.2.1)(eslint-plugin-import@2.28.0)(eslint@8.46.0) - eslint-plugin-eslint-comments: 3.2.0(eslint@8.46.0) - eslint-plugin-import: 2.28.0(@typescript-eslint/parser@6.2.1)(eslint-import-resolver-typescript@3.5.5)(eslint@8.46.0) - eslint-plugin-jsx-a11y: 6.7.1(eslint@8.46.0) - eslint-plugin-prefer-arrow-functions: 3.1.4(eslint@8.46.0) - eslint-plugin-prettier: 4.2.1(eslint-config-prettier@8.9.0)(eslint@8.46.0)(prettier@3.0.0) - eslint-plugin-prettier5: /eslint-plugin-prettier@5.0.0(eslint-config-prettier@8.9.0)(eslint@8.46.0)(prettier@3.0.0) - eslint-plugin-react: 7.33.1(eslint@8.46.0) - eslint-plugin-react-hooks: 4.6.0(eslint@8.46.0) - eslint-plugin-simple-import-sort: 10.0.0(eslint@8.46.0) + '@babel/core': 7.22.15 + '@babel/eslint-parser': 7.22.15(@babel/core@7.22.15)(eslint@8.49.0) + '@rushstack/eslint-patch': 1.3.3 + '@typescript-eslint/eslint-plugin': 6.6.0(@typescript-eslint/parser@6.6.0)(eslint@8.49.0)(typescript@5.2.2) + '@typescript-eslint/parser': 6.6.0(eslint@8.49.0)(typescript@5.2.2) + eslint: 8.49.0 + eslint-config-prettier: 9.0.0(eslint@8.49.0) + eslint-import-resolver-alias: 1.1.2(eslint-plugin-import@2.28.1) + eslint-import-resolver-typescript: 3.6.0(@typescript-eslint/parser@6.6.0)(eslint-plugin-import@2.28.1)(eslint@8.49.0) + eslint-plugin-eslint-comments: 3.2.0(eslint@8.49.0) + eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.6.0)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0) + eslint-plugin-jsx-a11y: 6.7.1(eslint@8.49.0) + eslint-plugin-prefer-arrow-functions: 3.1.4(eslint@8.49.0) + eslint-plugin-prettier: 5.0.0(eslint-config-prettier@9.0.0)(eslint@8.49.0)(prettier@3.0.3) + eslint-plugin-react: 7.33.2(eslint@8.49.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.49.0) + eslint-plugin-simple-import-sort: 10.0.0(eslint@8.49.0) eslint-plugin-tsdoc: 0.2.17 - eslint-plugin-unicorn: 48.0.1(eslint@8.46.0) - eslint-plugin-unused-imports: 3.0.0(@typescript-eslint/eslint-plugin@6.2.1)(eslint@8.46.0) - prettier: 3.0.0 - typescript: 5.1.3 + eslint-plugin-unicorn: 48.0.1(eslint@8.49.0) + eslint-plugin-unused-imports: 3.0.0(@typescript-eslint/eslint-plugin@6.6.0)(eslint@8.49.0) + prettier: 3.0.3 + typescript: 5.2.2 optionalDependencies: - '@next/eslint-plugin-next': 13.4.12 - eslint-plugin-jest: 27.2.3(@typescript-eslint/eslint-plugin@6.2.1)(eslint@8.46.0)(typescript@5.1.3) - eslint-plugin-playwright: 0.15.3(eslint-plugin-jest@27.2.3)(eslint@8.46.0) + '@next/eslint-plugin-next': 13.4.19 + eslint-plugin-jest: 27.2.3(@typescript-eslint/eslint-plugin@6.6.0)(eslint@8.49.0)(typescript@5.2.2) + eslint-plugin-playwright: 0.15.3(eslint-plugin-jest@27.2.3)(eslint@8.49.0) eslint-plugin-tailwindcss: 3.13.0(tailwindcss@3.3.3) - eslint-plugin-testing-library: 5.11.0(eslint@8.46.0)(typescript@5.1.3) + eslint-plugin-testing-library: 6.0.1(eslint@8.49.0)(typescript@5.2.2) transitivePeerDependencies: - '@types/eslint' - eslint-import-resolver-node @@ -5967,6 +6046,14 @@ packages: - tailwindcss dev: true + /@graz-sh/types@0.0.4(long@4.0.0): + resolution: {integrity: sha512-9kj2MzQs5qIzr7eQUPeZv6/5N+To5hauPd7rQ/zmXpXPOhhZ4qDiU0Rceknm4q2ZsG3ed4uEYogd8JzyJI5dQA==} + peerDependencies: + long: '*' + dependencies: + long: 4.0.0 + dev: false + /@hapi/hoek@9.3.0: resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} @@ -5975,8 +6062,8 @@ packages: dependencies: '@hapi/hoek': 9.3.0 - /@humanwhocodes/config-array@0.11.10: - resolution: {integrity: sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==} + /@humanwhocodes/config-array@0.11.11: + resolution: {integrity: sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==} engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 1.2.1 @@ -5992,18 +6079,6 @@ packages: /@humanwhocodes/object-schema@1.2.1: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} - /@isaacs/cliui@8.0.2: - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - dependencies: - string-width: 5.1.2 - string-width-cjs: /string-width@4.2.3 - strip-ansi: 7.0.1 - strip-ansi-cjs: /strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: /wrap-ansi@7.0.0 - dev: true - /@jest/schemas@29.4.3: resolution: {integrity: sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -6018,7 +6093,7 @@ packages: '@jest/schemas': 29.4.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 20.3.1 + '@types/node': 18.17.15 '@types/yargs': 17.0.24 chalk: 4.1.2 dev: false @@ -6035,6 +6110,10 @@ packages: resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} engines: {node: '>=6.0.0'} + /@jridgewell/resolve-uri@3.1.1: + resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} + engines: {node: '>=6.0.0'} + /@jridgewell/set-array@1.1.2: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} @@ -6057,6 +6136,12 @@ packages: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.4.14 + /@jridgewell/trace-mapping@0.3.19: + resolution: {integrity: sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==} + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + /@keplr-wallet/common@0.12.20: resolution: {integrity: sha512-Rrm1Vy9FIOwadaYgxk5Bh6nNQ+6zKIdqPk3E9EN9MJsFqBlQd8iiOvC2TZGtIHRaTW2rtWIYYPoiVS2UcWzxsA==} dependencies: @@ -6064,7 +6149,7 @@ packages: '@keplr-wallet/types': 0.12.20 buffer: 6.0.3 delay: 4.4.1 - mobx: 6.9.0 + mobx: 6.10.2 dev: false /@keplr-wallet/cosmos@0.12.20: @@ -6111,6 +6196,13 @@ packages: resolution: {integrity: sha512-uCVu1WYv908eeK0Dlrltthf6cL9ThHdmmShhVXHx/ZzXUbRn1bfsEKwo83nggd5985XqdSiwXFmprskTHGO/pQ==} dependencies: long: 4.0.0 + dev: false + + /@keplr-wallet/types@0.12.23: + resolution: {integrity: sha512-PRnsoGswlWV5bwyqGw1o5dKCEY33s8Mgxd7HeqTX9L+Pj6TAapnBlyCxhXBp74W0QySIMe8it37VjhJqa9QWxA==} + dependencies: + long: 4.0.0 + dev: false /@keplr-wallet/unit@0.12.20: resolution: {integrity: sha512-IuVwxU9GZ84KtiA9FarDYnWhbzaE4wE4ZpGEErZEeK+2l9+18VCK8kh7vXGEg1Khs6lLNxYmBPYGMLgKGl/OtQ==} @@ -6128,8 +6220,8 @@ packages: resolution: {integrity: sha512-kXOeFbfCm4fFf2A3WwVEeQj55tMZa8c8/f9AKHMobQMkzNUfUj+antR3fRPaZJawsa1aZiP/Da3ndpZrwEe4rQ==} dev: false - /@lit/reactive-element@1.6.2: - resolution: {integrity: sha512-rDfl+QnCYjuIGf5xI2sVJWdYIi56CTCwWa+nidKYX6oIuBYwUbT/vX4qbUDlHiZKJ/3FRNQ/tWJui44p6/stSA==} + /@lit/reactive-element@1.6.3: + resolution: {integrity: sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ==} dependencies: '@lit-labs/ssr-dom-shim': 1.1.1 dev: false @@ -6160,18 +6252,29 @@ packages: - supports-color dev: false - /@mdx-js/react@1.6.22(react@17.0.0): + /@mdx-js/react@1.6.22(react@17.0.2): resolution: {integrity: sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg==} peerDependencies: react: ^16.13.1 || ^17.0.0 dependencies: - react: 17.0.0 + react: 17.0.2 dev: false /@mdx-js/util@1.6.22: resolution: {integrity: sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA==} dev: false + /@metamask/json-rpc-engine@7.1.1: + resolution: {integrity: sha512-wPB8Or74OqMwcxa87JPOEjXwtgpyHPEXiLKblKRAtCjTJNQFp1Co//1CgFm5xj4Z5JbBGfGFiQNnj09Et40sig==} + engines: {node: '>=16.0.0'} + dependencies: + '@metamask/rpc-errors': 6.0.0 + '@metamask/safe-event-emitter': 3.0.0 + '@metamask/utils': 8.1.0 + transitivePeerDependencies: + - supports-color + dev: false + /@metamask/object-multiplex@1.2.0: resolution: {integrity: sha512-hksV602d3NWE2Q30Mf2Np1WfVKaGqfJRy9vpHAmelbaD0OkDt06/0KQkRR6UVYdMbTbkuEu8xN5JDUU80inGwQ==} engines: {node: '>=12.0.0'} @@ -6181,25 +6284,34 @@ packages: readable-stream: 2.3.8 dev: false - /@metamask/providers@11.1.1: - resolution: {integrity: sha512-zvsa7wRO6E1vQOb6CvRlpcWwS1LQEIV7cPEcXGZEsy3wFwRjvLDTT4vDy2FzSSHyspJZsOls+WGkFXPl+0bL/g==} + /@metamask/providers@12.0.0: + resolution: {integrity: sha512-NkrSvOF8v8kDz9f2TY1AYK19hJdpYbYhbXWhjmmmXrSMYotn+o7ZV1b1Yd0fqD/HKVL0Vd2BWBUT9U0ggIDTEA==} engines: {node: '>=16.0.0'} dependencies: + '@metamask/json-rpc-engine': 7.1.1 '@metamask/object-multiplex': 1.2.0 + '@metamask/rpc-errors': 6.0.0 '@metamask/safe-event-emitter': 3.0.0 + '@metamask/utils': 8.1.0 detect-browser: 5.3.0 - eth-rpc-errors: 4.0.3 extension-port-stream: 2.1.1 fast-deep-equal: 3.1.3 is-stream: 2.0.1 - json-rpc-engine: 6.1.0 json-rpc-middleware-stream: 4.2.2 pump: 3.0.0 webextension-polyfill: 0.10.0 + transitivePeerDependencies: + - supports-color dev: false - /@metamask/safe-event-emitter@2.0.0: - resolution: {integrity: sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q==} + /@metamask/rpc-errors@6.0.0: + resolution: {integrity: sha512-sAZwcdmidJDPbZV3XSKcWZC7CSTdjqDNRsDDdb2SstCOLEJtNqHpx32FWgwWB0arqWxUcUxYxgR39edUbsWz7A==} + engines: {node: '>=16.0.0'} + dependencies: + '@metamask/utils': 8.1.0 + fast-safe-stringify: 2.1.1 + transitivePeerDependencies: + - supports-color dev: false /@metamask/safe-event-emitter@3.0.0: @@ -6207,13 +6319,27 @@ packages: engines: {node: '>=12.0.0'} dev: false - /@microsoft/tsdoc-config@0.16.2: - resolution: {integrity: sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==} + /@metamask/utils@8.1.0: + resolution: {integrity: sha512-sFNpzBKRicDgM2ZuU6vrPROlqNGm8/jDsjc5WrU1RzCkAMc4Xr3vUUf8p59uQ6B09etUWNb8d2GTCbISdmH/Ug==} + engines: {node: '>=16.0.0'} dependencies: - '@microsoft/tsdoc': 0.14.2 - ajv: 6.12.6 - jju: 1.4.0 - resolve: 1.19.0 + '@ethereumjs/tx': 4.2.0 + '@noble/hashes': 1.3.2 + '@types/debug': 4.1.8 + debug: 4.3.4 + semver: 7.5.4 + superstruct: 1.0.3 + transitivePeerDependencies: + - supports-color + dev: false + + /@microsoft/tsdoc-config@0.16.2: + resolution: {integrity: sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==} + dependencies: + '@microsoft/tsdoc': 0.14.2 + ajv: 6.12.6 + jju: 1.4.0 + resolve: 1.19.0 dev: true /@microsoft/tsdoc@0.14.2: @@ -6226,7 +6352,7 @@ packages: '@motionone/easing': 10.15.1 '@motionone/types': 10.15.1 '@motionone/utils': 10.15.1 - tslib: 2.5.3 + tslib: 2.6.2 dev: false /@motionone/dom@10.16.2: @@ -6237,14 +6363,14 @@ packages: '@motionone/types': 10.15.1 '@motionone/utils': 10.15.1 hey-listen: 1.0.8 - tslib: 2.5.3 + tslib: 2.6.2 dev: false /@motionone/easing@10.15.1: resolution: {integrity: sha512-6hIHBSV+ZVehf9dcKZLT7p5PEKHGhDwky2k8RKkmOvUoYP3S+dXsKupyZpqx5apjd9f+php4vXk4LuS+ADsrWw==} dependencies: '@motionone/utils': 10.15.1 - tslib: 2.5.3 + tslib: 2.6.2 dev: false /@motionone/generators@10.15.1: @@ -6252,14 +6378,14 @@ packages: dependencies: '@motionone/types': 10.15.1 '@motionone/utils': 10.15.1 - tslib: 2.5.3 + tslib: 2.6.2 dev: false /@motionone/svelte@10.16.2: resolution: {integrity: sha512-38xsroKrfK+aHYhuQlE6eFcGy0EwrB43Q7RGjF73j/kRUTcLNu/LAaKiLLsN5lyqVzCgTBVt4TMT/ShWbTbc5Q==} dependencies: '@motionone/dom': 10.16.2 - tslib: 2.5.3 + tslib: 2.6.2 dev: false /@motionone/types@10.15.1: @@ -6271,30 +6397,30 @@ packages: dependencies: '@motionone/types': 10.15.1 hey-listen: 1.0.8 - tslib: 2.5.3 + tslib: 2.6.2 dev: false /@motionone/vue@10.16.2: resolution: {integrity: sha512-7/dEK/nWQXOkJ70bqb2KyNfSWbNvWqKKq1C8juj+0Mg/AorgD8O5wE3naddK0G+aXuNMqRuc4jlsYHHWHtIzVw==} dependencies: '@motionone/dom': 10.16.2 - tslib: 2.5.3 + tslib: 2.6.2 dev: false - /@next/env@13.4.6: - resolution: {integrity: sha512-nqUxEtvDqFhmV1/awSg0K2XHNwkftNaiUqCYO9e6+MYmqNObpKVl7OgMkGaQ2SZnFx5YqF0t60ZJTlyJIDAijg==} + /@next/env@13.4.19: + resolution: {integrity: sha512-FsAT5x0jF2kkhNkKkukhsyYOrRqtSxrEhfliniIq0bwWbuXLgyt3Gv0Ml+b91XwjwArmuP7NxCiGd++GGKdNMQ==} dev: false - /@next/eslint-plugin-next@13.4.12: - resolution: {integrity: sha512-6rhK9CdxEgj/j1qvXIyLTWEaeFv7zOK8yJMulz3Owel0uek0U9MJCGzmKgYxM3aAUBo3gKeywCZKyQnJKto60A==} + /@next/eslint-plugin-next@13.4.19: + resolution: {integrity: sha512-N/O+zGb6wZQdwu6atMZHbR7T9Np5SUFUjZqCbj0sXm+MwQO35M8TazVB4otm87GkXYs2l6OPwARd3/PUWhZBVQ==} requiresBuild: true dependencies: glob: 7.1.7 dev: true optional: true - /@next/swc-darwin-arm64@13.4.6: - resolution: {integrity: sha512-ahi6VP98o4HV19rkOXPSUu+ovfHfUxbJQ7VVJ7gL2FnZRr7onEFC1oGQ6NQHpm8CxpIzSSBW79kumlFMOmZVjg==} + /@next/swc-darwin-arm64@13.4.19: + resolution: {integrity: sha512-vv1qrjXeGbuF2mOkhkdxMDtv9np7W4mcBtaDnHU+yJG+bBwa6rYsYSCI/9Xm5+TuF5SbZbrWO6G1NfTh1TMjvQ==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] @@ -6302,8 +6428,8 @@ packages: dev: false optional: true - /@next/swc-darwin-x64@13.4.6: - resolution: {integrity: sha512-13cXxKFsPJIJKzUqrU5XB1mc0xbUgYsRcdH6/rB8c4NMEbWGdtD4QoK9ShN31TZdePpD4k416Ur7p+deMIxnnA==} + /@next/swc-darwin-x64@13.4.19: + resolution: {integrity: sha512-jyzO6wwYhx6F+7gD8ddZfuqO4TtpJdw3wyOduR4fxTUCm3aLw7YmHGYNjS0xRSYGAkLpBkH1E0RcelyId6lNsw==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -6311,8 +6437,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-gnu@13.4.6: - resolution: {integrity: sha512-Ti+NMHEjTNktCVxNjeWbYgmZvA2AqMMI2AMlzkXsU7W4pXCMhrryAmAIoo+7YdJbsx01JQWYVxGe62G6DoCLaA==} + /@next/swc-linux-arm64-gnu@13.4.19: + resolution: {integrity: sha512-vdlnIlaAEh6H+G6HrKZB9c2zJKnpPVKnA6LBwjwT2BTjxI7e0Hx30+FoWCgi50e+YO49p6oPOtesP9mXDRiiUg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -6320,8 +6446,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-musl@13.4.6: - resolution: {integrity: sha512-OHoC6gO7XfjstgwR+z6UHKlvhqJfyMtNaJidjx3sEcfaDwS7R2lqR5AABi8PuilGgi0BO0O0sCXqLlpp3a0emQ==} + /@next/swc-linux-arm64-musl@13.4.19: + resolution: {integrity: sha512-aU0HkH2XPgxqrbNRBFb3si9Ahu/CpaR5RPmN2s9GiM9qJCiBBlZtRTiEca+DC+xRPyCThTtWYgxjWHgU7ZkyvA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -6329,8 +6455,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-gnu@13.4.6: - resolution: {integrity: sha512-zHZxPGkUlpfNJCboUrFqwlwEX5vI9LSN70b8XEb0DYzzlrZyCyOi7hwDp/+3Urm9AB7YCAJkgR5Sp1XBVjHdfQ==} + /@next/swc-linux-x64-gnu@13.4.19: + resolution: {integrity: sha512-htwOEagMa/CXNykFFeAHHvMJeqZfNQEoQvHfsA4wgg5QqGNqD5soeCer4oGlCol6NGUxknrQO6VEustcv+Md+g==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -6338,8 +6464,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-musl@13.4.6: - resolution: {integrity: sha512-K/Y8lYGTwTpv5ME8PSJxwxLolaDRdVy+lOd9yMRMiQE0BLUhtxtCWC9ypV42uh9WpLjoaD0joOsB9Q6mbrSGJg==} + /@next/swc-linux-x64-musl@13.4.19: + resolution: {integrity: sha512-4Gj4vvtbK1JH8ApWTT214b3GwUh9EKKQjY41hH/t+u55Knxi/0wesMzwQRhppK6Ddalhu0TEttbiJ+wRcoEj5Q==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -6347,8 +6473,8 @@ packages: dev: false optional: true - /@next/swc-win32-arm64-msvc@13.4.6: - resolution: {integrity: sha512-U6LtxEUrjBL2tpW+Kr1nHCSJWNeIed7U7l5o7FiKGGwGgIlFi4UHDiLI6TQ2lxi20fAU33CsruV3U0GuzMlXIw==} + /@next/swc-win32-arm64-msvc@13.4.19: + resolution: {integrity: sha512-bUfDevQK4NsIAHXs3/JNgnvEY+LRyneDN788W2NYiRIIzmILjba7LaQTfihuFawZDhRtkYCv3JDC3B4TwnmRJw==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] @@ -6356,8 +6482,8 @@ packages: dev: false optional: true - /@next/swc-win32-ia32-msvc@13.4.6: - resolution: {integrity: sha512-eEBeAqpCfhdPSlCZCayjCiyIllVqy4tcqvm1xmg3BgJG0G5ITiMM4Cw2WVeRSgWDJqQGRyyb+q8Y2ltzhXOWsQ==} + /@next/swc-win32-ia32-msvc@13.4.19: + resolution: {integrity: sha512-Y5kikILFAr81LYIFaw6j/NrOtmiM4Sf3GtOc0pn50ez2GCkr+oejYuKGcwAwq3jiTKuzF6OF4iT2INPoxRycEA==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] @@ -6365,8 +6491,8 @@ packages: dev: false optional: true - /@next/swc-win32-x64-msvc@13.4.6: - resolution: {integrity: sha512-OrZs94AuO3ZS5tnqlyPRNgfWvboXaDQCi5aXGve3o3C+Sj0ctMUV9+Do+0zMvvLRumR8E0PTWKvtz9n5vzIsWw==} + /@next/swc-win32-x64-msvc@13.4.19: + resolution: {integrity: sha512-YzA78jBDXMYiINdPdJJwGgPNT3YqBNNGhsthsDoWHL9p24tEJn9ViQf/ZqTbwSpX/RrkPupLfuuTH2sf73JBAw==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -6380,10 +6506,26 @@ packages: eslint-scope: 5.1.1 dev: true + /@noble/curves@1.1.0: + resolution: {integrity: sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==} + dependencies: + '@noble/hashes': 1.3.1 + dev: false + /@noble/hashes@1.3.0: resolution: {integrity: sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg==} dev: false + /@noble/hashes@1.3.1: + resolution: {integrity: sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==} + engines: {node: '>= 16'} + dev: false + + /@noble/hashes@1.3.2: + resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==} + engines: {node: '>= 16'} + dev: false + /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -6402,15 +6544,8 @@ packages: '@nodelib/fs.scandir': 2.1.5 fastq: 1.15.0 - /@pkgjs/parseargs@0.11.0: - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - requiresBuild: true - dev: true - optional: true - - /@pkgr/utils@2.4.1: - resolution: {integrity: sha512-JOqwkgFEyi+OROIyq7l4Jy28h/WwhDnG/cPkXG2Z1iFbubB6jsHW1NDvmyOzTBxHr3yg68YGirmh1JUgMqa+9w==} + /@pkgr/utils@2.4.2: + resolution: {integrity: sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} dependencies: cross-spawn: 7.0.3 @@ -6418,7 +6553,7 @@ packages: is-glob: 4.0.3 open: 9.1.0 picocolors: 1.0.0 - tslib: 2.5.3 + tslib: 2.6.2 dev: true /@polka/url@1.0.0-next.21: @@ -6500,10 +6635,29 @@ packages: picomatch: 2.3.1 dev: true - /@rushstack/eslint-patch@1.3.2: - resolution: {integrity: sha512-V+MvGwaHH03hYhY+k6Ef/xKd6RYlc4q8WBx+2ANmipHJcKuktNcI/NgEsJgdSUF6Lw32njT6OnrRsKYCdgHjYw==} + /@rushstack/eslint-patch@1.3.3: + resolution: {integrity: sha512-0xd7qez0AQ+MbHatZTlI1gu5vkG8r7MYRUJAHPAHJBmGLs16zpkrpAVLvjQKQOqaXPDUBwOiJzNc00znHSCVBw==} dev: true + /@scure/base@1.1.3: + resolution: {integrity: sha512-/+SgoRjLq7Xlf0CWuLHq2LUZeL/w65kfzAPG5NH9pcmBhs+nunQTn4gvdwgMTIXnt9b2C/1SeL2XiysZEyIC9Q==} + dev: false + + /@scure/bip32@1.3.1: + resolution: {integrity: sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A==} + dependencies: + '@noble/curves': 1.1.0 + '@noble/hashes': 1.3.2 + '@scure/base': 1.1.3 + dev: false + + /@scure/bip39@1.2.1: + resolution: {integrity: sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==} + dependencies: + '@noble/hashes': 1.3.2 + '@scure/base': 1.1.3 + dev: false + /@sideway/address@4.1.4: resolution: {integrity: sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==} dependencies: @@ -6524,11 +6678,6 @@ packages: engines: {node: '>=6'} dev: false - /@sindresorhus/is@5.4.1: - resolution: {integrity: sha512-axlrvsHlHlFmKKMEg4VyvMzFr93JWJj4eIfXY1STVuO2fsImCa7ncaiG5gC8HKOX590AW5RtRsC41/B+OfrSqw==} - engines: {node: '>=14.16'} - dev: true - /@slorber/static-site-generator-webpack-plugin@4.0.7: resolution: {integrity: sha512-Ug7x6z5lwrz0WqdnNFOMYrDQNTPAprvHLSh6+/fmml3qUiz6l5eq+2MzLKWtn/q5K5NpSiFsZTP/fck/3vjSxA==} engines: {node: '>=14'} @@ -6810,7 +6959,7 @@ packages: /@swc/helpers@0.5.1: resolution: {integrity: sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==} dependencies: - tslib: 2.5.2 + tslib: 2.6.2 dev: false /@szmarczak/http-timer@1.1.2: @@ -6820,41 +6969,12 @@ packages: defer-to-connect: 1.1.3 dev: false - /@szmarczak/http-timer@5.0.1: - resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} - engines: {node: '>=14.16'} - dependencies: - defer-to-connect: 2.0.1 - dev: true - - /@tanstack/match-sorter-utils@8.8.4: - resolution: {integrity: sha512-rKH8LjZiszWEvmi01NR72QWZ8m4xmXre0OOwlRGnjU01Eqz/QnN+cqpty2PJ0efHblq09+KilvyR7lsbzmXVEw==} - engines: {node: '>=12'} - dependencies: - remove-accents: 0.4.2 - dev: false - - /@tanstack/query-core@4.29.14: - resolution: {integrity: sha512-ElEAahtLWA7Y7c2Haw10KdEf2tx+XZl/Z8dmyWxZehxWK3TPL5qtXtb7kUEhvt/8u2cSP62fLxgh2qqzMMGnDQ==} - dev: false - - /@tanstack/react-query-devtools@4.29.14(@tanstack/react-query@4.29.14)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-2H4otgQiXJSU7z8HIPw6whm7xfaEA3ouoM2PrWTHs+DMFX0BbodhOfQeJxsjw5uq2oV1yln/DABLJjZoQmQbpQ==} - peerDependencies: - '@tanstack/react-query': 4.29.14 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - dependencies: - '@tanstack/match-sorter-utils': 8.8.4 - '@tanstack/react-query': 4.29.14(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - superjson: 1.12.3 - use-sync-external-store: 1.2.0(react@18.2.0) + /@tanstack/query-core@4.35.0: + resolution: {integrity: sha512-4GMcKQuLZQi6RFBiBZNsLhl+hQGYScRZ5ZoVq8QAzfqz9M7vcGin/2YdSESwl7WaV+Qzsb5CZOAbMBes4lNTnA==} dev: false - /@tanstack/react-query@4.29.14(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-wh4bd/QIy85YgTDBtj/7/9ZkpRX41QdZuUL8xKoSzuMCukXvAE1/oJ4p0F15lqQq9W3g2pgcbr2Aa+CNvqABhg==} + /@tanstack/react-query@4.35.0(react@18.2.0): + resolution: {integrity: sha512-LLYDNnM9ewYHgjm2rzhk4KG/puN2rdoqCUD+N9+V7SwlsYwJk5ypX58rpkoZAhFyZ+KmFUJ7Iv2lIEOoUqydIg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -6865,9 +6985,8 @@ packages: react-native: optional: true dependencies: - '@tanstack/query-core': 4.29.14 + '@tanstack/query-core': 4.35.0 react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) use-sync-external-store: 1.2.0(react@18.2.0) dev: false @@ -6880,43 +6999,37 @@ packages: resolution: {integrity: sha512-ffTXxGIP/IRMCjuzHd6M4/HdIrw1bMfC7Bv8hMkTadnePkpe0lG0oDSdbRpSDZb2rQMAgpbWiR10BvxvNYwYrg==} dev: true - /@types/async-retry@1.4.5: - resolution: {integrity: sha512-YrdjSD+yQv7h6d5Ip+PMxh3H6ZxKyQk0Ts+PvaNRInxneG9PFVZjFg77ILAN+N6qYf7g4giSJ1l+ZjQ1zeegvA==} - dependencies: - '@types/retry': 0.12.2 - dev: true - /@types/body-parser@1.19.2: resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} dependencies: '@types/connect': 3.4.35 - '@types/node': 20.3.1 + '@types/node': 18.17.15 dev: false /@types/bonjour@3.5.10: resolution: {integrity: sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==} dependencies: - '@types/node': 20.3.1 + '@types/node': 18.17.15 dev: false /@types/connect-history-api-fallback@1.5.0: resolution: {integrity: sha512-4x5FkPpLipqwthjPsF7ZRbOv3uoLUFkTA9G9v583qi4pACvq0uTELrB8OLUzPWUI4IJIyvM85vzkV1nyiI2Lig==} dependencies: '@types/express-serve-static-core': 4.17.35 - '@types/node': 20.3.1 + '@types/node': 18.17.15 dev: false /@types/connect@3.4.35: resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} dependencies: - '@types/node': 20.3.1 + '@types/node': 18.17.15 dev: false - /@types/cross-spawn@6.0.2: - resolution: {integrity: sha512-KuwNhp3eza+Rhu8IFI5HUXRP0LIhqH5cAjubUvGXXthh4YYBuP2ntwEX+Cz8GJoZUHlKo247wPWOfA9LYEq4cw==} + /@types/debug@4.1.8: + resolution: {integrity: sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==} dependencies: - '@types/node': 20.3.1 - dev: true + '@types/ms': 0.7.31 + dev: false /@types/eslint-scope@3.7.4: resolution: {integrity: sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==} @@ -6936,7 +7049,7 @@ packages: /@types/express-serve-static-core@4.17.35: resolution: {integrity: sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==} dependencies: - '@types/node': 20.3.1 + '@types/node': 18.17.15 '@types/qs': 6.9.7 '@types/range-parser': 1.2.4 '@types/send': 0.17.1 @@ -6964,14 +7077,10 @@ packages: resolution: {integrity: sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==} dev: false - /@types/http-cache-semantics@4.0.1: - resolution: {integrity: sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==} - dev: true - /@types/http-proxy@1.17.11: resolution: {integrity: sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA==} dependencies: - '@types/node': 20.3.1 + '@types/node': 18.17.15 dev: false /@types/istanbul-lib-coverage@2.0.4: @@ -7004,17 +7113,17 @@ packages: /@types/keyv@3.1.4: resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} dependencies: - '@types/node': 20.3.1 + '@types/node': 18.17.15 dev: false /@types/lodash.mergewith@4.6.7: resolution: {integrity: sha512-3m+lkO5CLRRYU0fhGRp7zbsGi6+BZj0uTVSwvcKU+nSlhjA9/QRNfuSGnD2mX6hQA7ZbmcCkzk5h4ZYGOtk14A==} dependencies: - '@types/lodash': 4.14.195 + '@types/lodash': 4.14.198 dev: false - /@types/lodash@4.14.195: - resolution: {integrity: sha512-Hwx9EUgdwf2GLarOjQp5ZH8ZmblzcbTBC2wtQWNKARBSxM9ezRIAUpeDTgoQRAFB0+8CNWXVA9+MaSOzOF3nPg==} + /@types/lodash@4.14.198: + resolution: {integrity: sha512-trNJ/vtMZYMLhfN45uLq4ShQSw0/S7xCTLLVM+WM1rmFpba/VS42jVUgaO3w/NOLiWR/09lnYk0yMaA/atdIsg==} dev: false /@types/long@4.0.2: @@ -7035,6 +7144,10 @@ packages: resolution: {integrity: sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==} dev: false + /@types/ms@0.7.31: + resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} + dev: false + /@types/node@10.12.18: resolution: {integrity: sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ==} dev: false @@ -7043,8 +7156,8 @@ packages: resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} dev: false - /@types/node@20.3.1: - resolution: {integrity: sha512-EhcH/wvidPy1WeML3TtYFGR83UzjxeWRen9V402T8aUGYsCHOmfoisV3ZSg03gAFIbLq8TnWOJ0f4cALtnSEUg==} + /@types/node@18.17.15: + resolution: {integrity: sha512-2yrWpBk32tvV/JAd3HNHWuZn/VDN1P+72hWirHnvsvTGSqbANi+kSeuQR9yAHnbvaBvHDsoTdXV0Fe+iRtHLKA==} /@types/normalize-package-data@2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} @@ -7058,13 +7171,6 @@ packages: resolution: {integrity: sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==} dev: false - /@types/prompts@2.4.4: - resolution: {integrity: sha512-p5N9uoTH76lLvSAaYSZtBCdEXzpOOufsRjnhjVSrZGXikVGHX9+cc9ERtHRV4hvBKHyZb1bg4K+56Bd2TqUn4A==} - dependencies: - '@types/node': 20.3.1 - kleur: 3.0.3 - dev: true - /@types/prop-types@15.7.5: resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} @@ -7076,34 +7182,34 @@ packages: resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} dev: false - /@types/react-dom@18.2.5: - resolution: {integrity: sha512-sRQsOS/sCLnpQhR4DSKGTtWFE3FZjpQa86KPVbhUqdYMRZ9FEFcfAytKhR/vUG2rH1oFbOOej6cuD7MFSobDRQ==} + /@types/react-dom@18.2.7: + resolution: {integrity: sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==} dependencies: - '@types/react': 18.2.12 + '@types/react': 18.2.21 dev: true /@types/react-router-config@5.0.7: resolution: {integrity: sha512-pFFVXUIydHlcJP6wJm7sDii5mD/bCmmAY0wQzq+M+uX7bqS95AQqHZWP1iNMKrWVQSuHIzj5qi9BvrtLX2/T4w==} dependencies: '@types/history': 4.7.11 - '@types/react': 18.2.12 + '@types/react': 18.2.21 '@types/react-router': 5.1.20 /@types/react-router-dom@5.3.3: resolution: {integrity: sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==} dependencies: '@types/history': 4.7.11 - '@types/react': 18.2.12 + '@types/react': 18.2.21 '@types/react-router': 5.1.20 /@types/react-router@5.1.20: resolution: {integrity: sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==} dependencies: '@types/history': 4.7.11 - '@types/react': 18.2.12 + '@types/react': 18.2.21 - /@types/react@18.2.12: - resolution: {integrity: sha512-ndmBMLCgn38v3SntMeoJaIrO6tGHYKMEBohCUmw8HoLLQdRMOIGXfeYaBTLe2lsFaSB3MOK1VXscYFnmLtTSmw==} + /@types/react@18.2.21: + resolution: {integrity: sha512-neFKG/sBAwGxHgXiIxnbm3/AAVQ/cMRS93hvBpg8xYRbeQSPVABp9U2bRnPf0iI4+Ucdv3plSxKK+3CW2ENJxA==} dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.3 @@ -7112,42 +7218,31 @@ packages: /@types/responselike@1.0.0: resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} dependencies: - '@types/node': 20.3.1 + '@types/node': 18.17.15 dev: false /@types/retry@0.12.0: resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} dev: false - /@types/retry@0.12.2: - resolution: {integrity: sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==} - dev: true - - /@types/rimraf@4.0.5: - resolution: {integrity: sha512-DTCZoIQotB2SUJnYgrEx43cQIUYOlNZz0AZPbKU4PSLYTUdML5Gox0++z4F9kQocxStrCmRNhi4x5x/UlwtKUA==} - deprecated: This is a stub types definition. rimraf provides its own type definitions, so you do not need this installed. - dependencies: - rimraf: 5.0.1 - dev: true - /@types/sax@1.2.4: resolution: {integrity: sha512-pSAff4IAxJjfAXUG6tFkO7dsSbTmf8CtUpfhhZ5VhkRpC4628tJhh3+V6H1E+/Gs9piSzYKT5yzHO5M4GG9jkw==} dependencies: - '@types/node': 20.3.1 + '@types/node': 18.17.15 dev: false /@types/scheduler@0.16.3: resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} - /@types/semver@7.5.0: - resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} + /@types/semver@7.5.1: + resolution: {integrity: sha512-cJRQXpObxfNKkFAZbJl2yjWtJCqELQIdShsogr1d2MilP8dKD9TE/nEKHkJgUNHdGKCQaf9HbIynuV2csLGVLg==} dev: true /@types/send@0.17.1: resolution: {integrity: sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==} dependencies: '@types/mime': 1.3.2 - '@types/node': 20.3.1 + '@types/node': 18.17.15 dev: false /@types/serve-index@1.9.1: @@ -7160,22 +7255,15 @@ packages: resolution: {integrity: sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==} dependencies: '@types/mime': 3.0.1 - '@types/node': 20.3.1 + '@types/node': 18.17.15 dev: false /@types/sockjs@0.3.33: resolution: {integrity: sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==} dependencies: - '@types/node': 20.3.1 + '@types/node': 18.17.15 dev: false - /@types/tar@6.1.5: - resolution: {integrity: sha512-qm2I/RlZij5RofuY7vohTpYNaYcrSQlN2MyjucQc7ZweDwaEWkdN/EeNh6e9zjK6uEm6PwjdMXkcj05BxZdX1Q==} - dependencies: - '@types/node': 20.3.1 - minipass: 4.2.8 - dev: true - /@types/trusted-types@2.0.3: resolution: {integrity: sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==} dev: false @@ -7184,14 +7272,10 @@ packages: resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} dev: false - /@types/validate-npm-package-name@4.0.0: - resolution: {integrity: sha512-RpO62vB2lkjEkyLbwTheA2+uwYmtVMWTr/kWRI++UAgVdZqNqdAuIQl/SxBCGeMKfdjWaXPbyhZbiCc4PAj+KA==} - dev: true - /@types/ws@8.5.4: resolution: {integrity: sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==} dependencies: - '@types/node': 20.3.1 + '@types/node': 18.17.15 dev: false /@types/yargs-parser@21.0.0: @@ -7204,8 +7288,8 @@ packages: '@types/yargs-parser': 21.0.0 dev: false - /@typescript-eslint/eslint-plugin@6.2.1(@typescript-eslint/parser@6.2.1)(eslint@8.46.0)(typescript@5.1.3): - resolution: {integrity: sha512-iZVM/ALid9kO0+I81pnp1xmYiFyqibAHzrqX4q5YvvVEyJqY+e6rfTXSCsc2jUxGNqJqTfFSSij/NFkZBiBzLw==} + /@typescript-eslint/eslint-plugin@6.6.0(@typescript-eslint/parser@6.6.0)(eslint@8.49.0)(typescript@5.2.2): + resolution: {integrity: sha512-CW9YDGTQnNYMIo5lMeuiIG08p4E0cXrXTbcZ2saT/ETE7dWUrNxlijsQeU04qAAKkILiLzdQz+cGFxCJjaZUmA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -7215,27 +7299,26 @@ packages: typescript: optional: true dependencies: - '@eslint-community/regexpp': 4.5.1 - '@typescript-eslint/parser': 6.2.1(eslint@8.46.0)(typescript@5.1.3) - '@typescript-eslint/scope-manager': 6.2.1 - '@typescript-eslint/type-utils': 6.2.1(eslint@8.46.0)(typescript@5.1.3) - '@typescript-eslint/utils': 6.2.1(eslint@8.46.0)(typescript@5.1.3) - '@typescript-eslint/visitor-keys': 6.2.1 + '@eslint-community/regexpp': 4.8.0 + '@typescript-eslint/parser': 6.6.0(eslint@8.49.0)(typescript@5.2.2) + '@typescript-eslint/scope-manager': 6.6.0 + '@typescript-eslint/type-utils': 6.6.0(eslint@8.49.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.6.0(eslint@8.49.0)(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.6.0 debug: 4.3.4 - eslint: 8.46.0 + eslint: 8.49.0 graphemer: 1.4.0 ignore: 5.2.4 natural-compare: 1.4.0 - natural-compare-lite: 1.4.0 semver: 7.5.4 - ts-api-utils: 1.0.1(typescript@5.1.3) - typescript: 5.1.3 + ts-api-utils: 1.0.2(typescript@5.2.2) + typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@6.2.1(eslint@8.46.0)(typescript@5.1.3): - resolution: {integrity: sha512-Ld+uL1kYFU8e6btqBFpsHkwQ35rw30IWpdQxgOqOh4NfxSDH6uCkah1ks8R/RgQqI5hHPXMaLy9fbFseIe+dIg==} + /@typescript-eslint/parser@6.6.0(eslint@8.49.0)(typescript@5.2.2): + resolution: {integrity: sha512-setq5aJgUwtzGrhW177/i+DMLqBaJbdwGj2CPIVFFLE0NCliy5ujIdLHd2D1ysmlmsjdL2GWW+hR85neEfc12w==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -7244,37 +7327,37 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.2.1 - '@typescript-eslint/types': 6.2.1 - '@typescript-eslint/typescript-estree': 6.2.1(typescript@5.1.3) - '@typescript-eslint/visitor-keys': 6.2.1 + '@typescript-eslint/scope-manager': 6.6.0 + '@typescript-eslint/types': 6.6.0 + '@typescript-eslint/typescript-estree': 6.6.0(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.6.0 debug: 4.3.4 - eslint: 8.46.0 - typescript: 5.1.3 + eslint: 8.49.0 + typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager@5.59.11: - resolution: {integrity: sha512-dHFOsxoLFtrIcSj5h0QoBT/89hxQONwmn3FOQ0GOQcLOOXm+MIrS8zEAhs4tWl5MraxCY3ZJpaXQQdFMc2Tu+Q==} + /@typescript-eslint/scope-manager@5.62.0: + resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} requiresBuild: true dependencies: - '@typescript-eslint/types': 5.59.11 - '@typescript-eslint/visitor-keys': 5.59.11 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 dev: true optional: true - /@typescript-eslint/scope-manager@6.2.1: - resolution: {integrity: sha512-UCqBF9WFqv64xNsIEPfBtenbfodPXsJ3nPAr55mGPkQIkiQvgoWNo+astj9ZUfJfVKiYgAZDMnM6dIpsxUMp3Q==} + /@typescript-eslint/scope-manager@6.6.0: + resolution: {integrity: sha512-pT08u5W/GT4KjPUmEtc2kSYvrH8x89cVzkA0Sy2aaOUIw6YxOIjA8ilwLr/1fLjOedX1QAuBpG9XggWqIIfERw==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.2.1 - '@typescript-eslint/visitor-keys': 6.2.1 + '@typescript-eslint/types': 6.6.0 + '@typescript-eslint/visitor-keys': 6.6.0 dev: true - /@typescript-eslint/type-utils@6.2.1(eslint@8.46.0)(typescript@5.1.3): - resolution: {integrity: sha512-fTfCgomBMIgu2Dh2Or3gMYgoNAnQm3RLtRp+jP7A8fY+LJ2+9PNpi5p6QB5C4RSP+U3cjI0vDlI3mspAkpPVbQ==} + /@typescript-eslint/type-utils@6.6.0(eslint@8.49.0)(typescript@5.2.2): + resolution: {integrity: sha512-8m16fwAcEnQc69IpeDyokNO+D5spo0w1jepWWY2Q6y5ZKNuj5EhVQXjtVAeDDqvW6Yg7dhclbsz6rTtOvcwpHg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -7283,30 +7366,30 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.2.1(typescript@5.1.3) - '@typescript-eslint/utils': 6.2.1(eslint@8.46.0)(typescript@5.1.3) + '@typescript-eslint/typescript-estree': 6.6.0(typescript@5.2.2) + '@typescript-eslint/utils': 6.6.0(eslint@8.49.0)(typescript@5.2.2) debug: 4.3.4 - eslint: 8.46.0 - ts-api-utils: 1.0.1(typescript@5.1.3) - typescript: 5.1.3 + eslint: 8.49.0 + ts-api-utils: 1.0.2(typescript@5.2.2) + typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types@5.59.11: - resolution: {integrity: sha512-epoN6R6tkvBYSc+cllrz+c2sOFWkbisJZWkOE+y3xHtvYaOE6Wk6B8e114McRJwFRjGvYdJwLXQH5c9osME/AA==} + /@typescript-eslint/types@5.62.0: + resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} requiresBuild: true dev: true optional: true - /@typescript-eslint/types@6.2.1: - resolution: {integrity: sha512-528bGcoelrpw+sETlyM91k51Arl2ajbNT9L4JwoXE2dvRe1yd8Q64E4OL7vHYw31mlnVsf+BeeLyAZUEQtqahQ==} + /@typescript-eslint/types@6.6.0: + resolution: {integrity: sha512-CB6QpJQ6BAHlJXdwUmiaXDBmTqIE2bzGTDLADgvqtHWuhfNP3rAOK7kAgRMAET5rDRr9Utt+qAzRBdu3AhR3sg==} engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@5.59.11(typescript@5.1.3): - resolution: {integrity: sha512-YupOpot5hJO0maupJXixi6l5ETdrITxeo5eBOeuV7RSKgYdU3G5cxO49/9WRnJq9EMrB7AuTSLH/bqOsXi7wPA==} + /@typescript-eslint/typescript-estree@5.62.0(typescript@5.2.2): + resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} requiresBuild: true peerDependencies: @@ -7315,21 +7398,21 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.59.11 - '@typescript-eslint/visitor-keys': 5.59.11 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.5.2 - tsutils: 3.21.0(typescript@5.1.3) - typescript: 5.1.3 + semver: 7.5.4 + tsutils: 3.21.0(typescript@5.2.2) + typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true optional: true - /@typescript-eslint/typescript-estree@6.2.1(typescript@5.1.3): - resolution: {integrity: sha512-G+UJeQx9AKBHRQBpmvr8T/3K5bJa485eu+4tQBxFq0KoT22+jJyzo1B50JDT9QdC1DEmWQfdKsa8ybiNWYsi0Q==} + /@typescript-eslint/typescript-estree@6.6.0(typescript@5.2.2): + resolution: {integrity: sha512-hMcTQ6Al8MP2E6JKBAaSxSVw5bDhdmbCEhGW/V8QXkb9oNsFkA4SBuOMYVPxD3jbtQ4R/vSODBsr76R6fP3tbA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -7337,121 +7420,112 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.2.1 - '@typescript-eslint/visitor-keys': 6.2.1 + '@typescript-eslint/types': 6.6.0 + '@typescript-eslint/visitor-keys': 6.6.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 - ts-api-utils: 1.0.1(typescript@5.1.3) - typescript: 5.1.3 + ts-api-utils: 1.0.2(typescript@5.2.2) + typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@5.59.11(eslint@8.46.0)(typescript@5.1.3): - resolution: {integrity: sha512-didu2rHSOMUdJThLk4aZ1Or8IcO3HzCw/ZvEjTTIfjIrcdd5cvSIwwDy2AOlE7htSNp7QIZ10fLMyRCveesMLg==} + /@typescript-eslint/utils@5.62.0(eslint@8.49.0)(typescript@5.2.2): + resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} requiresBuild: true peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.49.0) '@types/json-schema': 7.0.12 - '@types/semver': 7.5.0 - '@typescript-eslint/scope-manager': 5.59.11 - '@typescript-eslint/types': 5.59.11 - '@typescript-eslint/typescript-estree': 5.59.11(typescript@5.1.3) - eslint: 8.46.0 + '@types/semver': 7.5.1 + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.2.2) + eslint: 8.49.0 eslint-scope: 5.1.1 - semver: 7.5.2 + semver: 7.5.4 transitivePeerDependencies: - supports-color - typescript dev: true optional: true - /@typescript-eslint/utils@6.2.1(eslint@8.46.0)(typescript@5.1.3): - resolution: {integrity: sha512-eBIXQeupYmxVB6S7x+B9SdBeB6qIdXKjgQBge2J+Ouv8h9Cxm5dHf/gfAZA6dkMaag+03HdbVInuXMmqFB/lKQ==} + /@typescript-eslint/utils@6.6.0(eslint@8.49.0)(typescript@5.2.2): + resolution: {integrity: sha512-mPHFoNa2bPIWWglWYdR0QfY9GN0CfvvXX1Sv6DlSTive3jlMTUy+an67//Gysc+0Me9pjitrq0LJp0nGtLgftw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.49.0) '@types/json-schema': 7.0.12 - '@types/semver': 7.5.0 - '@typescript-eslint/scope-manager': 6.2.1 - '@typescript-eslint/types': 6.2.1 - '@typescript-eslint/typescript-estree': 6.2.1(typescript@5.1.3) - eslint: 8.46.0 + '@types/semver': 7.5.1 + '@typescript-eslint/scope-manager': 6.6.0 + '@typescript-eslint/types': 6.6.0 + '@typescript-eslint/typescript-estree': 6.6.0(typescript@5.2.2) + eslint: 8.49.0 semver: 7.5.4 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/visitor-keys@5.59.11: - resolution: {integrity: sha512-KGYniTGG3AMTuKF9QBD7EIrvufkB6O6uX3knP73xbKLMpH+QRPcgnCxjWXSHjMRuOxFLovljqQgQpR0c7GvjoA==} + /@typescript-eslint/visitor-keys@5.62.0: + resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} requiresBuild: true dependencies: - '@typescript-eslint/types': 5.59.11 - eslint-visitor-keys: 3.4.2 + '@typescript-eslint/types': 5.62.0 + eslint-visitor-keys: 3.4.3 dev: true optional: true - /@typescript-eslint/visitor-keys@6.2.1: - resolution: {integrity: sha512-iTN6w3k2JEZ7cyVdZJTVJx2Lv7t6zFA8DCrJEHD2mwfc16AEvvBWVhbFh34XyG2NORCd0viIgQY1+u7kPI0WpA==} + /@typescript-eslint/visitor-keys@6.6.0: + resolution: {integrity: sha512-L61uJT26cMOfFQ+lMZKoJNbAEckLe539VhTxiGHrWl5XSKQgA0RTBZJW2HFPy5T0ZvPVSD93QsrTKDkfNwJGyQ==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.2.1 - eslint-visitor-keys: 3.4.1 + '@typescript-eslint/types': 6.6.0 + eslint-visitor-keys: 3.4.3 dev: true - /@vectis/extension-client@0.7.0: - resolution: {integrity: sha512-7JErrElxiuKUw/GaW2YpjkxxVKjUmEsrANfW6VZPkKBPTFokpJxO03Uo8hxPVfQu1IiwR1rReQSeckfTGZW5RA==} - dev: false - - /@vectis/extension-client@0.7.1: - resolution: {integrity: sha512-vuXHcM3xKYg46d7ANhAoPzOFwrjKvUfFvmD/XGwm0H/1KfR29tzkOGhLjzL04HkXuKqwxMEpd+0Fvh1H7l2JWQ==} + /@vectis/extension-client@0.7.2: + resolution: {integrity: sha512-tIzihqLSljxLC4VVnn94VH1Q7QqlWYPy2HnoeVaqmjv06YI3CSX97kLN+TYGiUKdZoSmnxIJVBq8QRIBASthKQ==} dev: false - /@vercel/ncc@0.36.1: - resolution: {integrity: sha512-S4cL7Taa9yb5qbv+6wLgiKVZ03Qfkc4jGRuiUQMQ8HGBD5pcNRnHeYM33zBvJE4/zJGjJJ8GScB+WmTsn9mORw==} - hasBin: true - dev: true - - /@vitejs/plugin-react@4.0.0(vite@4.3.9): - resolution: {integrity: sha512-HX0XzMjL3hhOYm+0s95pb0Z7F8O81G7joUHgfDd/9J/ZZf5k4xX6QAMFkKsHFxaHlf6X7GD7+XuaZ66ULiJuhQ==} + /@vitejs/plugin-react@4.0.4(vite@4.4.9): + resolution: {integrity: sha512-7wU921ABnNYkETiMaZy7XqpueMnpu5VxvVps13MjmCo+utBdD79sZzrApHawHtVX66cCJQQTXFcjH0y9dSUK8g==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: vite: ^4.2.0 dependencies: - '@babel/core': 7.22.5 - '@babel/plugin-transform-react-jsx-self': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-react-jsx-source': 7.22.5(@babel/core@7.22.5) + '@babel/core': 7.22.15 + '@babel/plugin-transform-react-jsx-self': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-react-jsx-source': 7.22.5(@babel/core@7.22.15) react-refresh: 0.14.0 - vite: 4.3.9 + vite: 4.4.9(@types/node@18.17.15) transitivePeerDependencies: - supports-color dev: true - /@walletconnect/core@2.8.1: - resolution: {integrity: sha512-mN9Zkdl/NeThntK8cydDoQOW6jUEpOeFgYR1RCKPLH51VQwlbdSgvvQIeanSQXEY4U7AM3x8cs1sxqMomIfRQg==} + /@walletconnect/core@2.10.0: + resolution: {integrity: sha512-Z8pdorfIMueuiBXLdnf7yloiO9JIiobuxN3j0OTal+MYc4q5/2O7d+jdD1DAXbLi1taJx3x60UXT/FPVkjIqIQ==} dependencies: '@walletconnect/heartbeat': 1.2.1 '@walletconnect/jsonrpc-provider': 1.0.13 '@walletconnect/jsonrpc-types': 1.0.3 '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/jsonrpc-ws-connection': 1.0.11 + '@walletconnect/jsonrpc-ws-connection': 1.0.13 '@walletconnect/keyvaluestorage': 1.0.2 '@walletconnect/logger': 2.0.1 '@walletconnect/relay-api': 1.0.9 '@walletconnect/relay-auth': 1.0.4 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.8.1 - '@walletconnect/utils': 2.8.1 + '@walletconnect/types': 2.10.0 + '@walletconnect/utils': 2.10.0 events: 3.3.0 lodash.isequal: 4.5.0 uint8arrays: 3.1.1 @@ -7473,6 +7547,7 @@ packages: dependencies: keyvaluestorage-interface: 1.0.0 tslib: 1.14.1 + dev: false /@walletconnect/heartbeat@1.2.1: resolution: {integrity: sha512-yVzws616xsDLJxuG/28FqtZ5rzrTA4gUjdEMTbWB5Y8V1XHRmqq4efAxCw5ie7WjbXFSUyBHaWlMR+2/CpQC5Q==} @@ -7480,6 +7555,7 @@ packages: '@walletconnect/events': 1.0.1 '@walletconnect/time': 1.0.2 tslib: 1.14.1 + dev: false /@walletconnect/jsonrpc-provider@1.0.13: resolution: {integrity: sha512-K73EpThqHnSR26gOyNEL+acEex3P7VWZe6KE12ZwKzAt2H4e5gldZHbjsu2QR9cLeJ8AXuO7kEMOIcRv1QEc7g==} @@ -7494,6 +7570,7 @@ packages: dependencies: keyvaluestorage-interface: 1.0.0 tslib: 1.14.1 + dev: false /@walletconnect/jsonrpc-utils@1.0.8: resolution: {integrity: sha512-vdeb03bD8VzJUL6ZtzRYsFMq1eZQcM3EAzT0a3st59dyLfJ0wq+tKMpmGH7HlB7waD858UWgfIcudbPFsbzVdw==} @@ -7503,8 +7580,8 @@ packages: tslib: 1.14.1 dev: false - /@walletconnect/jsonrpc-ws-connection@1.0.11: - resolution: {integrity: sha512-TiFJ6saasKXD+PwGkm5ZGSw0837nc6EeFmurSPgIT/NofnOV4Tv7CVJqGQN0rQYoJUSYu21cwHNYaFkzNpUN+w==} + /@walletconnect/jsonrpc-ws-connection@1.0.13: + resolution: {integrity: sha512-mfOM7uFH4lGtQxG+XklYuFBj6dwVvseTt5/ahOkkmpcAEgz2umuzu7fTR+h5EmjQBdrmYyEBOWADbeaFNxdySg==} dependencies: '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/safe-json': 1.0.2 @@ -7529,12 +7606,14 @@ packages: dependencies: safe-json-utils: 1.1.1 tslib: 1.14.1 + dev: false /@walletconnect/logger@2.0.1: resolution: {integrity: sha512-SsTKdsgWm+oDTBeNE/zHxxr5eJfZmE9/5yp/Ku+zJtcTAjELb3DXueWkDXmE9h8uHIbJzIb5wj5lPdzyrjT6hQ==} dependencies: pino: 7.11.0 tslib: 1.14.1 + dev: false /@walletconnect/relay-api@1.0.9: resolution: {integrity: sha512-Q3+rylJOqRkO1D9Su0DPE3mmznbAalYapJ9qmzDgK28mYF9alcP3UwG/og5V7l7CFOqzCLi7B8BvcBUrpDj0Rg==} @@ -7560,17 +7639,17 @@ packages: tslib: 1.14.1 dev: false - /@walletconnect/sign-client@2.8.1: - resolution: {integrity: sha512-6DbpjP9BED2YZOZdpVgYo0HwPBV7k99imnsdMFrTn16EFAxhuYP0/qPwum9d072oNMGWJSA6d4rzc8FHNtHsCA==} + /@walletconnect/sign-client@2.10.0: + resolution: {integrity: sha512-hbDljDS53kR/It3oXD91UkcOsT6diNnW5+Zzksm0YEfwww5dop/YfNlcdnc8+jKUhWOL/YDPNQCjzsCSNlVzbw==} dependencies: - '@walletconnect/core': 2.8.1 + '@walletconnect/core': 2.10.0 '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.1 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/logger': 2.0.1 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.8.1 - '@walletconnect/utils': 2.8.1 + '@walletconnect/types': 2.10.0 + '@walletconnect/utils': 2.10.0 events: 3.3.0 transitivePeerDependencies: - '@react-native-async-storage/async-storage' @@ -7583,9 +7662,10 @@ packages: resolution: {integrity: sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g==} dependencies: tslib: 1.14.1 + dev: false - /@walletconnect/types@2.8.1: - resolution: {integrity: sha512-MLISp85b+27vVkm3Wkud+eYCwySXCdOrmn0yQCSN6DnRrrunrD05ksz4CXGP7h2oXUvvXPDt/6lXBf1B4AfqrA==} + /@walletconnect/types@2.10.0: + resolution: {integrity: sha512-kSTA/WZnbKdEbvbXSW16Ty6dOSzOZCHnGg6JH7q1MuraalD2HuNg00lVVu7QAZ/Rj1Gn9DAkrgP5Wd5a8Xq//Q==} dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.1 @@ -7596,9 +7676,10 @@ packages: transitivePeerDependencies: - '@react-native-async-storage/async-storage' - lokijs + dev: false - /@walletconnect/utils@2.8.1: - resolution: {integrity: sha512-d6p9OX3v70m6ijp+j4qvqiQZQU1vbEHN48G8HqXasyro3Z+N8vtcB5/gV4pTYsbWgLSDtPHj49mzbWQ0LdIdTw==} + /@walletconnect/utils@2.10.0: + resolution: {integrity: sha512-9GRyEz/7CJW+G04RvrjPET5k7hOEsB9b3fF9cWDk/iDCxSWpbkU/hv/urRB36C+gvQMAZgIZYX3dHfzJWkY/2g==} dependencies: '@stablelib/chacha20poly1305': 1.0.1 '@stablelib/hkdf': 1.0.1 @@ -7608,7 +7689,7 @@ packages: '@walletconnect/relay-api': 1.0.9 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.8.1 + '@walletconnect/types': 2.10.0 '@walletconnect/window-getters': 1.0.1 '@walletconnect/window-metadata': 1.0.1 detect-browser: 5.3.0 @@ -7759,12 +7840,18 @@ packages: /@xtuc/long@4.2.2: resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} - /@zag-js/element-size@0.3.2: - resolution: {integrity: sha512-bVvvigUGvAuj7PCkE5AbzvTJDTw5f3bg9nQdv+ErhVN8SfPPppLJEmmWdxqsRzrHXgx8ypJt/+Ty0kjtISVDsQ==} + /@zag-js/dom-query@0.16.0: + resolution: {integrity: sha512-Oqhd6+biWyKnhKwFFuZrrf6lxBz2tX2pRQe6grUnYwO6HJ8BcbqZomy2lpOdr+3itlaUqx+Ywj5E5ZZDr/LBfQ==} dev: false - /@zag-js/focus-visible@0.2.2: - resolution: {integrity: sha512-0j2gZq8HiZ51z4zNnSkF1iSkqlwRDvdH+son3wHdoz+7IUdMN/5Exd4TxMJ+gq2Of1DiXReYLL9qqh2PdQ4wgA==} + /@zag-js/element-size@0.10.5: + resolution: {integrity: sha512-uQre5IidULANvVkNOBQ1tfgwTQcGl4hliPSe69Fct1VfYb2Fd0jdAcGzqQgPhfrXFpR62MxLPB7erxJ/ngtL8w==} + dev: false + + /@zag-js/focus-visible@0.16.0: + resolution: {integrity: sha512-a7U/HSopvQbrDU4GLerpqiMcHKEkQkNPeDZJWz38cw/6Upunh41GjHetq5TB84hxyCaDzJ6q2nEdNoBQfC0FKA==} + dependencies: + '@zag-js/dom-query': 0.16.0 dev: false /accepts@1.3.8: @@ -7809,6 +7896,15 @@ packages: engines: {node: '>= 10.0.0'} dev: false + /agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + dependencies: + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: false + /aggregate-error@3.1.0: resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} engines: {node: '>=8'} @@ -7895,6 +7991,11 @@ packages: string-width: 4.2.3 dev: false + /ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + dev: false + /ansi-html-community@0.0.8: resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} engines: {'0': node >= 0.8.0} @@ -7908,6 +8009,7 @@ packages: /ansi-regex@6.0.1: resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} engines: {node: '>=12'} + dev: false /ansi-styles@3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} @@ -7924,6 +8026,7 @@ packages: /ansi-styles@6.2.1: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} + dev: false /any-promise@1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} @@ -7952,11 +8055,11 @@ packages: resolution: {integrity: sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==} engines: {node: '>=10'} dependencies: - tslib: 2.5.3 + tslib: 2.6.2 dev: false - /aria-query@5.2.1: - resolution: {integrity: sha512-7uFg4b+lETFgdaJyETnILsXgnnzVnkHcgRbwbPwevm5x/LmUlt3MjczMRe1zg824iBgXZNRPTBftNYyRSKLp2g==} + /aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} dependencies: dequal: 2.0.3 dev: true @@ -7976,13 +8079,13 @@ packages: resolution: {integrity: sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==} dev: false - /array-includes@3.1.6: - resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} + /array-includes@3.1.7: + resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 - es-abstract: 1.21.2 + es-abstract: 1.22.1 get-intrinsic: 1.2.1 is-string: 1.0.7 dev: true @@ -7991,47 +8094,60 @@ packages: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} - /array.prototype.findlastindex@1.2.2: - resolution: {integrity: sha512-tb5thFFlUcp7NdNF6/MpDk/1r/4awWG1FIz3YqDf+/zJSTezBb+/5WViH41obXULHVpDzoiCLpJ/ZO9YbJMsdw==} + /array.prototype.findlastindex@1.2.3: + resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 - es-abstract: 1.21.2 + es-abstract: 1.22.1 es-shim-unscopables: 1.0.0 get-intrinsic: 1.2.1 dev: true - /array.prototype.flat@1.3.1: - resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} + /array.prototype.flat@1.3.2: + resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 - es-abstract: 1.21.2 + es-abstract: 1.22.1 es-shim-unscopables: 1.0.0 dev: true - /array.prototype.flatmap@1.3.1: - resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==} + /array.prototype.flatmap@1.3.2: + resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 - es-abstract: 1.21.2 + es-abstract: 1.22.1 es-shim-unscopables: 1.0.0 dev: true - /array.prototype.tosorted@1.1.1: - resolution: {integrity: sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==} + /array.prototype.tosorted@1.1.2: + resolution: {integrity: sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 - es-abstract: 1.21.2 + es-abstract: 1.22.1 es-shim-unscopables: 1.0.0 get-intrinsic: 1.2.1 dev: true + /arraybuffer.prototype.slice@1.0.2: + resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.0 + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + get-intrinsic: 1.2.1 + is-array-buffer: 3.0.2 + is-shared-array-buffer: 1.0.2 + dev: true + /asap@2.0.6: resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} dev: false @@ -8058,10 +8174,10 @@ packages: resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==} dev: true - /async-retry@1.3.3: - resolution: {integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==} + /asynciterator.prototype@1.0.0: + resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==} dependencies: - retry: 0.13.1 + has-symbols: 1.0.3 dev: true /at-least-node@1.0.0: @@ -8072,6 +8188,7 @@ packages: /atomic-sleep@1.0.0: resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} engines: {node: '>=8.0.0'} + dev: false /autoprefixer@10.4.14(postcss@8.4.23): resolution: {integrity: sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==} @@ -8110,8 +8227,8 @@ packages: engines: {node: '>= 0.4'} dev: true - /axe-core@4.7.2: - resolution: {integrity: sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g==} + /axe-core@4.8.0: + resolution: {integrity: sha512-ZtlVZobOeDQhb/y2lMK6mznDw7TJHDNcKx5/bbBkFvArIQ5CVFhSI6hWWQnMx9I8cNmNmZ30wpDyOC2E2nvgbQ==} engines: {node: '>=4'} dev: true @@ -8291,8 +8408,8 @@ packages: resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} dev: false - /bignumber.js@9.1.1: - resolution: {integrity: sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==} + /bignumber.js@9.1.2: + resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} dev: false /binary-extensions@2.2.0: @@ -8404,12 +8521,6 @@ packages: balanced-match: 1.0.2 concat-map: 0.0.1 - /brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - dependencies: - balanced-match: 1.0.2 - dev: true - /braces@3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} @@ -8480,6 +8591,16 @@ packages: pako: 1.0.11 dev: true + /browserslist@4.21.10: + resolution: {integrity: sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001528 + electron-to-chromium: 1.4.510 + node-releases: 2.0.13 + update-browserslist-db: 1.0.11(browserslist@4.21.10) + /browserslist@4.21.5: resolution: {integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -8499,6 +8620,7 @@ packages: electron-to-chromium: 1.4.433 node-releases: 2.0.12 update-browserslist-db: 1.0.11(browserslist@4.21.9) + dev: false /bs58@4.0.1: resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} @@ -8544,12 +8666,6 @@ packages: resolution: {integrity: sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==} dev: true - /builtins@5.0.1: - resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} - dependencies: - semver: 7.5.1 - dev: true - /bundle-name@3.0.0: resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==} engines: {node: '>=12'} @@ -8587,25 +8703,6 @@ packages: /cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} - dev: true - - /cacheable-lookup@7.0.0: - resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==} - engines: {node: '>=14.16'} - dev: true - - /cacheable-request@10.2.10: - resolution: {integrity: sha512-v6WB+Epm/qO4Hdlio/sfUn69r5Shgh39SsE9DSd4bIezP0mblOlObI+I0kUEM7J0JFc+I7pSeMeYaOYtX1N/VQ==} - engines: {node: '>=14.16'} - dependencies: - '@types/http-cache-semantics': 4.0.1 - get-stream: 6.0.1 - http-cache-semantics: 4.1.1 - keyv: 4.5.2 - mimic-response: 4.0.0 - normalize-url: 8.0.0 - responselike: 3.0.0 - dev: true /cacheable-request@6.1.0: resolution: {integrity: sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==} @@ -8665,6 +8762,10 @@ packages: /caniuse-lite@1.0.30001503: resolution: {integrity: sha512-Sf9NiF+wZxPfzv8Z3iS0rXM1Do+iOy2Lxvib38glFX+08TCYYYGR5fRJXk4d77C4AYwhUjgYgMsMudbh2TqCKw==} + dev: false + + /caniuse-lite@1.0.30001528: + resolution: {integrity: sha512-0Db4yyjR9QMNlsxh+kKWzQtkyflkG/snYheSzkjmvdEtEXB1+jt7A2HmSEiO6XIJPIbo92lHNGNySvE5pZcs5Q==} /ccount@1.1.0: resolution: {integrity: sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==} @@ -8685,11 +8786,6 @@ packages: ansi-styles: 4.3.0 supports-color: 7.2.0 - /chalk@5.2.0: - resolution: {integrity: sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - dev: true - /character-entities-legacy@1.1.4: resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} dev: false @@ -8738,12 +8834,12 @@ packages: normalize-path: 3.0.0 readdirp: 3.6.0 optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 /chownr@2.0.0: resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} engines: {node: '>=10'} - dev: true + dev: false /chrome-trace-event@1.0.3: resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} @@ -8832,6 +8928,11 @@ packages: engines: {node: '>=6'} dev: false + /clsx@2.0.0: + resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} + engines: {node: '>=6'} + dev: false + /collapse-white-space@1.0.6: resolution: {integrity: sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==} dev: false @@ -8861,6 +8962,10 @@ packages: resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} dev: false + /colorette@1.2.1: + resolution: {integrity: sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==} + dev: false + /colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} dev: false @@ -8874,11 +8979,6 @@ packages: resolution: {integrity: sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==} dev: false - /commander@10.0.1: - resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} - engines: {node: '>=14'} - dev: true - /commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} @@ -8927,8 +9027,8 @@ packages: - supports-color dev: false - /compute-scroll-into-view@1.0.20: - resolution: {integrity: sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==} + /compute-scroll-into-view@3.0.3: + resolution: {integrity: sha512-nadqwNxghAGTamwIqQSG433W6OADZx2vCo3UXHNrzTRHK/htu+7+L0zhjEoaeaQVNAi3YgqWDv8+tzf0hRfR+A==} dev: false /concat-map@0.0.1: @@ -8992,13 +9092,6 @@ packages: engines: {node: '>= 0.6'} dev: false - /copy-anything@3.0.5: - resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==} - engines: {node: '>=12.13'} - dependencies: - is-what: 4.1.13 - dev: false - /copy-text-to-clipboard@3.1.0: resolution: {integrity: sha512-PFM6BnjLnOON/lB3ta/Jg7Ywsv+l9kQGD4TWDCSlRBGmqnnTM5MrDkhAFgw+8HZt0wW6Q2BBE4cmy9sq+s9Qng==} engines: {node: '>=12'} @@ -9095,6 +9188,12 @@ packages: resolution: {integrity: sha512-9qlQ3kTNTHvhYglTXSnllGqKhrtGB08Weatw56ZqV5OqcmjuZdlY9iMtD00odgQLTEpTSQQL3gFGuqTkGdIDPA==} dev: false + /crc-32@1.2.2: + resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} + engines: {node: '>=0.8'} + hasBin: true + dev: false + /create-ecdh@4.0.4: resolution: {integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==} dependencies: @@ -9478,13 +9577,6 @@ packages: mimic-response: 1.0.1 dev: false - /decompress-response@6.0.0: - resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} - engines: {node: '>=10'} - dependencies: - mimic-response: 3.1.0 - dev: true - /deep-extend@0.6.0: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} @@ -9512,7 +9604,7 @@ packages: dependencies: bundle-name: 3.0.0 default-browser-id: 3.0.0 - execa: 7.1.1 + execa: 7.2.0 titleize: 3.0.0 dev: true @@ -9527,11 +9619,6 @@ packages: resolution: {integrity: sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==} dev: false - /defer-to-connect@2.0.1: - resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} - engines: {node: '>=10'} - dev: true - /define-lazy-prop@2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} @@ -9776,9 +9863,11 @@ packages: inherits: 2.0.4 readable-stream: 3.6.2 stream-shift: 1.0.1 + dev: false /eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + dev: false /ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} @@ -9789,6 +9878,10 @@ packages: /electron-to-chromium@1.4.433: resolution: {integrity: sha512-MGO1k0w1RgrfdbLVwmXcDhHHuxCn2qRgR7dYsJvWFKDttvYPx6FNzCGG0c/fBBvzK2LDh3UV7Tt9awnHnvAAUQ==} + dev: false + + /electron-to-chromium@1.4.510: + resolution: {integrity: sha512-xPfLIPFcN/WLXBpQ/K4UgE98oUBO5Tia6BD4rkSR0wE7ep/PwBVlgvPJQrIBpmJGVAmUzwPKuDbVt9XV6+uC2g==} /elliptic@6.5.4: resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} @@ -9803,6 +9896,7 @@ packages: /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + dev: false /emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} @@ -9829,6 +9923,7 @@ packages: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} dependencies: once: 1.4.0 + dev: false /enhanced-resolve@5.14.0: resolution: {integrity: sha512-+DCows0XNwLDcUhbFJPdlQEVnT2zXlCv7hPxemTz86/O+B/hCQ+mb7ydkPKiflpVraqLPCAfu7lDy+hBXueojw==} @@ -9845,6 +9940,13 @@ packages: tapable: 2.2.1 dev: true + /enquirer@2.3.6: + resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} + engines: {node: '>=8.6'} + dependencies: + ansi-colors: 4.1.3 + dev: false + /entities@2.2.0: resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} dev: false @@ -9859,16 +9961,17 @@ packages: dependencies: is-arrayish: 0.2.1 - /es-abstract@1.21.2: - resolution: {integrity: sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==} + /es-abstract@1.22.1: + resolution: {integrity: sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==} engines: {node: '>= 0.4'} dependencies: array-buffer-byte-length: 1.0.0 + arraybuffer.prototype.slice: 1.0.2 available-typed-arrays: 1.0.5 call-bind: 1.0.2 es-set-tostringtag: 2.0.1 es-to-primitive: 1.2.1 - function.prototype.name: 1.1.5 + function.prototype.name: 1.1.6 get-intrinsic: 1.2.1 get-symbol-description: 1.0.0 globalthis: 1.0.3 @@ -9884,19 +9987,42 @@ packages: is-regex: 1.1.4 is-shared-array-buffer: 1.0.2 is-string: 1.0.7 - is-typed-array: 1.1.10 + is-typed-array: 1.1.12 is-weakref: 1.0.2 object-inspect: 1.12.3 object-keys: 1.1.1 object.assign: 4.1.4 regexp.prototype.flags: 1.5.0 + safe-array-concat: 1.0.1 safe-regex-test: 1.0.0 - string.prototype.trim: 1.2.7 - string.prototype.trimend: 1.0.6 - string.prototype.trimstart: 1.0.6 + string.prototype.trim: 1.2.8 + string.prototype.trimend: 1.0.7 + string.prototype.trimstart: 1.0.7 + typed-array-buffer: 1.0.0 + typed-array-byte-length: 1.0.0 + typed-array-byte-offset: 1.0.0 typed-array-length: 1.0.4 unbox-primitive: 1.0.2 - which-typed-array: 1.1.9 + which-typed-array: 1.1.11 + dev: true + + /es-iterator-helpers@1.0.14: + resolution: {integrity: sha512-JgtVnwiuoRuzLvqelrvN3Xu7H9bu2ap/kQ2CrM62iidP8SKuD99rWU3CJy++s7IVL2qb/AjXPGR/E7i9ngd/Cw==} + dependencies: + asynciterator.prototype: 1.0.0 + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + es-set-tostringtag: 2.0.1 + function-bind: 1.1.1 + get-intrinsic: 1.2.1 + globalthis: 1.0.3 + has-property-descriptors: 1.0.0 + has-proto: 1.0.1 + has-symbols: 1.0.3 + internal-slot: 1.0.5 + iterator.prototype: 1.1.1 + safe-array-concat: 1.0.1 dev: true /es-module-lexer@1.2.1: @@ -9930,34 +10056,34 @@ packages: resolution: {integrity: sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==} dev: true - /esbuild@0.17.19: - resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} + /esbuild@0.18.20: + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.17.19 - '@esbuild/android-arm64': 0.17.19 - '@esbuild/android-x64': 0.17.19 - '@esbuild/darwin-arm64': 0.17.19 - '@esbuild/darwin-x64': 0.17.19 - '@esbuild/freebsd-arm64': 0.17.19 - '@esbuild/freebsd-x64': 0.17.19 - '@esbuild/linux-arm': 0.17.19 - '@esbuild/linux-arm64': 0.17.19 - '@esbuild/linux-ia32': 0.17.19 - '@esbuild/linux-loong64': 0.17.19 - '@esbuild/linux-mips64el': 0.17.19 - '@esbuild/linux-ppc64': 0.17.19 - '@esbuild/linux-riscv64': 0.17.19 - '@esbuild/linux-s390x': 0.17.19 - '@esbuild/linux-x64': 0.17.19 - '@esbuild/netbsd-x64': 0.17.19 - '@esbuild/openbsd-x64': 0.17.19 - '@esbuild/sunos-x64': 0.17.19 - '@esbuild/win32-arm64': 0.17.19 - '@esbuild/win32-ia32': 0.17.19 - '@esbuild/win32-x64': 0.17.19 + '@esbuild/android-arm': 0.18.20 + '@esbuild/android-arm64': 0.18.20 + '@esbuild/android-x64': 0.18.20 + '@esbuild/darwin-arm64': 0.18.20 + '@esbuild/darwin-x64': 0.18.20 + '@esbuild/freebsd-arm64': 0.18.20 + '@esbuild/freebsd-x64': 0.18.20 + '@esbuild/linux-arm': 0.18.20 + '@esbuild/linux-arm64': 0.18.20 + '@esbuild/linux-ia32': 0.18.20 + '@esbuild/linux-loong64': 0.18.20 + '@esbuild/linux-mips64el': 0.18.20 + '@esbuild/linux-ppc64': 0.18.20 + '@esbuild/linux-riscv64': 0.18.20 + '@esbuild/linux-s390x': 0.18.20 + '@esbuild/linux-x64': 0.18.20 + '@esbuild/netbsd-x64': 0.18.20 + '@esbuild/openbsd-x64': 0.18.20 + '@esbuild/sunos-x64': 0.18.20 + '@esbuild/win32-arm64': 0.18.20 + '@esbuild/win32-ia32': 0.18.20 + '@esbuild/win32-x64': 0.18.20 dev: true /esbuild@0.18.4: @@ -10010,36 +10136,36 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - /eslint-config-prettier@8.9.0(eslint@8.46.0): - resolution: {integrity: sha512-+sbni7NfVXnOpnRadUA8S28AUlsZt9GjgFvABIRL9Hkn8KqNzOp+7Lw4QWtrwn20KzU3wqu1QoOj2m+7rKRqkA==} + /eslint-config-prettier@9.0.0(eslint@8.49.0): + resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.46.0 + eslint: 8.49.0 dev: true - /eslint-import-resolver-alias@1.1.2(eslint-plugin-import@2.28.0): + /eslint-import-resolver-alias@1.1.2(eslint-plugin-import@2.28.1): resolution: {integrity: sha512-WdviM1Eu834zsfjHtcGHtGfcu+F30Od3V7I9Fi57uhBEwPkjDcii7/yW8jAT+gOhn4P/vOxxNAXbFAKsrrc15w==} engines: {node: '>= 4'} peerDependencies: eslint-plugin-import: '>=1.4.0' dependencies: - eslint-plugin-import: 2.28.0(@typescript-eslint/parser@6.2.1)(eslint-import-resolver-typescript@3.5.5)(eslint@8.46.0) + eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.6.0)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0) dev: true - /eslint-import-resolver-node@0.3.7: - resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==} + /eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} dependencies: debug: 3.2.7 - is-core-module: 2.12.1 - resolve: 1.22.2 + is-core-module: 2.13.0 + resolve: 1.22.4 transitivePeerDependencies: - supports-color dev: true - /eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@6.2.1)(eslint-plugin-import@2.28.0)(eslint@8.46.0): - resolution: {integrity: sha512-TdJqPHs2lW5J9Zpe17DZNQuDnox4xo2o+0tE7Pggain9Rbc19ik8kFtXdxZ250FVx2kF4vlt2RSf4qlUpG7bhw==} + /eslint-import-resolver-typescript@3.6.0(@typescript-eslint/parser@6.6.0)(eslint-plugin-import@2.28.1)(eslint@8.49.0): + resolution: {integrity: sha512-QTHR9ddNnn35RTxlaEnx2gCxqFlF2SEN0SE2d17SqwyM7YOSI2GHWRYp5BiRkObTUNYPupC/3Fq2a0PpT+EKpg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -10047,14 +10173,13 @@ packages: dependencies: debug: 4.3.4 enhanced-resolve: 5.15.0 - eslint: 8.46.0 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.2.1)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.46.0) - eslint-plugin-import: 2.28.0(@typescript-eslint/parser@6.2.1)(eslint-import-resolver-typescript@3.5.5)(eslint@8.46.0) - get-tsconfig: 4.6.0 - globby: 13.1.4 - is-core-module: 2.12.1 + eslint: 8.49.0 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.6.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0) + eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.6.0)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0) + fast-glob: 3.3.1 + get-tsconfig: 4.7.0 + is-core-module: 2.13.0 is-glob: 4.0.3 - synckit: 0.8.5 transitivePeerDependencies: - '@typescript-eslint/parser' - eslint-import-resolver-node @@ -10062,7 +10187,7 @@ packages: - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.2.1)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.46.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.6.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -10083,28 +10208,28 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 6.2.1(eslint@8.46.0)(typescript@5.1.3) + '@typescript-eslint/parser': 6.6.0(eslint@8.49.0)(typescript@5.2.2) debug: 3.2.7 - eslint: 8.46.0 - eslint-import-resolver-node: 0.3.7 - eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@6.2.1)(eslint-plugin-import@2.28.0)(eslint@8.46.0) + eslint: 8.49.0 + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.6.0(@typescript-eslint/parser@6.6.0)(eslint-plugin-import@2.28.1)(eslint@8.49.0) transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-eslint-comments@3.2.0(eslint@8.46.0): + /eslint-plugin-eslint-comments@3.2.0(eslint@8.49.0): resolution: {integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==} engines: {node: '>=6.5.0'} peerDependencies: eslint: '>=4.19.1' dependencies: escape-string-regexp: 1.0.5 - eslint: 8.46.0 + eslint: 8.49.0 ignore: 5.2.4 dev: true - /eslint-plugin-import@2.28.0(@typescript-eslint/parser@6.2.1)(eslint-import-resolver-typescript@3.5.5)(eslint@8.46.0): - resolution: {integrity: sha512-B8s/n+ZluN7sxj9eUf7/pRFERX0r5bnFA2dCaLHy2ZeaQEAz0k+ZZkFWRFHJAqxfxQDx6KLv9LeIki7cFdwW+Q==} + /eslint-plugin-import@2.28.1(@typescript-eslint/parser@6.6.0)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0): + resolution: {integrity: sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -10113,24 +10238,23 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 6.2.1(eslint@8.46.0)(typescript@5.1.3) - array-includes: 3.1.6 - array.prototype.findlastindex: 1.2.2 - array.prototype.flat: 1.3.1 - array.prototype.flatmap: 1.3.1 + '@typescript-eslint/parser': 6.6.0(eslint@8.49.0)(typescript@5.2.2) + array-includes: 3.1.7 + array.prototype.findlastindex: 1.2.3 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.46.0 - eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.2.1)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.46.0) + eslint: 8.49.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.6.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0) has: 1.0.3 - is-core-module: 2.12.1 + is-core-module: 2.13.0 is-glob: 4.0.3 minimatch: 3.1.2 - object.fromentries: 2.0.6 - object.groupby: 1.0.0 - object.values: 1.1.6 - resolve: 1.22.3 + object.fromentries: 2.0.7 + object.groupby: 1.0.1 + object.values: 1.1.7 semver: 6.3.1 tsconfig-paths: 3.14.2 transitivePeerDependencies: @@ -10139,7 +10263,7 @@ packages: - supports-color dev: true - /eslint-plugin-jest@27.2.3(@typescript-eslint/eslint-plugin@6.2.1)(eslint@8.46.0)(typescript@5.1.3): + /eslint-plugin-jest@27.2.3(@typescript-eslint/eslint-plugin@6.6.0)(eslint@8.49.0)(typescript@5.2.2): resolution: {integrity: sha512-sRLlSCpICzWuje66Gl9zvdF6mwD5X86I4u55hJyFBsxYOsBCmT5+kSUjf+fkFWVMMgpzNEupjW8WzUqi83hJAQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} requiresBuild: true @@ -10153,41 +10277,41 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 6.2.1(@typescript-eslint/parser@6.2.1)(eslint@8.46.0)(typescript@5.1.3) - '@typescript-eslint/utils': 5.59.11(eslint@8.46.0)(typescript@5.1.3) - eslint: 8.46.0 + '@typescript-eslint/eslint-plugin': 6.6.0(@typescript-eslint/parser@6.6.0)(eslint@8.49.0)(typescript@5.2.2) + '@typescript-eslint/utils': 5.62.0(eslint@8.49.0)(typescript@5.2.2) + eslint: 8.49.0 transitivePeerDependencies: - supports-color - typescript dev: true optional: true - /eslint-plugin-jsx-a11y@6.7.1(eslint@8.46.0): + /eslint-plugin-jsx-a11y@6.7.1(eslint@8.49.0): resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} engines: {node: '>=4.0'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - '@babel/runtime': 7.22.5 - aria-query: 5.2.1 - array-includes: 3.1.6 - array.prototype.flatmap: 1.3.1 + '@babel/runtime': 7.22.15 + aria-query: 5.3.0 + array-includes: 3.1.7 + array.prototype.flatmap: 1.3.2 ast-types-flow: 0.0.7 - axe-core: 4.7.2 + axe-core: 4.8.0 axobject-query: 3.2.1 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 8.46.0 + eslint: 8.49.0 has: 1.0.3 - jsx-ast-utils: 3.3.3 + jsx-ast-utils: 3.3.5 language-tags: 1.0.5 minimatch: 3.1.2 - object.entries: 1.1.6 - object.fromentries: 2.0.6 - semver: 6.3.0 + object.entries: 1.1.7 + object.fromentries: 2.0.7 + semver: 6.3.1 dev: true - /eslint-plugin-playwright@0.15.3(eslint-plugin-jest@27.2.3)(eslint@8.46.0): + /eslint-plugin-playwright@0.15.3(eslint-plugin-jest@27.2.3)(eslint@8.49.0): resolution: {integrity: sha512-LQMW5y0DLK5Fnpya7JR1oAYL2/7Y9wDiYw6VZqlKqcRGSgjbVKNqxraphk7ra1U3Bb5EK444xMgUlQPbMg2M1g==} requiresBuild: true peerDependencies: @@ -10197,37 +10321,20 @@ packages: eslint-plugin-jest: optional: true dependencies: - eslint: 8.46.0 - eslint-plugin-jest: 27.2.3(@typescript-eslint/eslint-plugin@6.2.1)(eslint@8.46.0)(typescript@5.1.3) + eslint: 8.49.0 + eslint-plugin-jest: 27.2.3(@typescript-eslint/eslint-plugin@6.6.0)(eslint@8.49.0)(typescript@5.2.2) dev: true optional: true - /eslint-plugin-prefer-arrow-functions@3.1.4(eslint@8.46.0): + /eslint-plugin-prefer-arrow-functions@3.1.4(eslint@8.49.0): resolution: {integrity: sha512-LSO8VibqBKqzelr+L21mEIfachavCon+1SEumCJ6U8Ze2q0pntyojmomcVwd9RZBjrP+HV6k1Osz0B3Xwdq8WA==} peerDependencies: eslint: '>=5.0.0' dependencies: - eslint: 8.46.0 + eslint: 8.49.0 dev: true - /eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.9.0)(eslint@8.46.0)(prettier@3.0.0): - resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} - engines: {node: '>=12.0.0'} - peerDependencies: - eslint: '>=7.28.0' - eslint-config-prettier: '*' - prettier: '>=2.0.0' - peerDependenciesMeta: - eslint-config-prettier: - optional: true - dependencies: - eslint: 8.46.0 - eslint-config-prettier: 8.9.0(eslint@8.46.0) - prettier: 3.0.0 - prettier-linter-helpers: 1.0.0 - dev: true - - /eslint-plugin-prettier@5.0.0(eslint-config-prettier@8.9.0)(eslint@8.46.0)(prettier@3.0.0): + /eslint-plugin-prettier@5.0.0(eslint-config-prettier@9.0.0)(eslint@8.49.0)(prettier@3.0.3): resolution: {integrity: sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -10241,52 +10348,53 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 8.46.0 - eslint-config-prettier: 8.9.0(eslint@8.46.0) - prettier: 3.0.0 + eslint: 8.49.0 + eslint-config-prettier: 9.0.0(eslint@8.49.0) + prettier: 3.0.3 prettier-linter-helpers: 1.0.0 synckit: 0.8.5 dev: true - /eslint-plugin-react-hooks@4.6.0(eslint@8.46.0): + /eslint-plugin-react-hooks@4.6.0(eslint@8.49.0): resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: - eslint: 8.46.0 + eslint: 8.49.0 dev: true - /eslint-plugin-react@7.33.1(eslint@8.46.0): - resolution: {integrity: sha512-L093k0WAMvr6VhNwReB8VgOq5s2LesZmrpPdKz/kZElQDzqS7G7+DnKoqT+w4JwuiGeAhAvHO0fvy0Eyk4ejDA==} + /eslint-plugin-react@7.33.2(eslint@8.49.0): + resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} engines: {node: '>=4'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - array-includes: 3.1.6 - array.prototype.flatmap: 1.3.1 - array.prototype.tosorted: 1.1.1 + array-includes: 3.1.7 + array.prototype.flatmap: 1.3.2 + array.prototype.tosorted: 1.1.2 doctrine: 2.1.0 - eslint: 8.46.0 + es-iterator-helpers: 1.0.14 + eslint: 8.49.0 estraverse: 5.3.0 - jsx-ast-utils: 3.3.3 + jsx-ast-utils: 3.3.5 minimatch: 3.1.2 - object.entries: 1.1.6 - object.fromentries: 2.0.6 - object.hasown: 1.1.2 - object.values: 1.1.6 + object.entries: 1.1.7 + object.fromentries: 2.0.7 + object.hasown: 1.1.3 + object.values: 1.1.7 prop-types: 15.8.1 resolve: 2.0.0-next.4 semver: 6.3.1 - string.prototype.matchall: 4.0.8 + string.prototype.matchall: 4.0.9 dev: true - /eslint-plugin-simple-import-sort@10.0.0(eslint@8.46.0): + /eslint-plugin-simple-import-sort@10.0.0(eslint@8.49.0): resolution: {integrity: sha512-AeTvO9UCMSNzIHRkg8S6c3RPy5YEwKWSQPx3DYghLedo2ZQxowPFLGDN1AZ2evfg6r6mjBSZSLxLFsWSu3acsw==} peerDependencies: eslint: '>=5.0.0' dependencies: - eslint: 8.46.0 + eslint: 8.49.0 dev: true /eslint-plugin-tailwindcss@3.13.0(tailwindcss@3.3.3): @@ -10296,21 +10404,21 @@ packages: peerDependencies: tailwindcss: ^3.3.2 dependencies: - fast-glob: 3.2.12 - postcss: 8.4.24 + fast-glob: 3.3.1 + postcss: 8.4.29 tailwindcss: 3.3.3 dev: true optional: true - /eslint-plugin-testing-library@5.11.0(eslint@8.46.0)(typescript@5.1.3): - resolution: {integrity: sha512-ELY7Gefo+61OfXKlQeXNIDVVLPcvKTeiQOoMZG9TeuWa7Ln4dUNRv8JdRWBQI9Mbb427XGlVB1aa1QPZxBJM8Q==} + /eslint-plugin-testing-library@6.0.1(eslint@8.49.0)(typescript@5.2.2): + resolution: {integrity: sha512-CEYtjpcF3hAaQtYsTZqciR7s5z+T0LCMTwJeW+pz6kBnGtc866wAKmhaiK2Gsjc2jWNP7Gt6zhNr2DE1ZW4e+g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} requiresBuild: true peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.59.11(eslint@8.46.0)(typescript@5.1.3) - eslint: 8.46.0 + '@typescript-eslint/utils': 5.62.0(eslint@8.49.0)(typescript@5.2.2) + eslint: 8.49.0 transitivePeerDependencies: - supports-color - typescript @@ -10324,17 +10432,17 @@ packages: '@microsoft/tsdoc-config': 0.16.2 dev: true - /eslint-plugin-unicorn@48.0.1(eslint@8.46.0): + /eslint-plugin-unicorn@48.0.1(eslint@8.49.0): resolution: {integrity: sha512-FW+4r20myG/DqFcCSzoumaddKBicIPeFnTrifon2mWIzlfyvzwyqZjqVP7m4Cqr/ZYisS2aiLghkUWaPg6vtCw==} engines: {node: '>=16'} peerDependencies: eslint: '>=8.44.0' dependencies: - '@babel/helper-validator-identifier': 7.22.5 - '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0) + '@babel/helper-validator-identifier': 7.22.15 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.49.0) ci-info: 3.8.0 clean-regexp: 1.0.0 - eslint: 8.46.0 + eslint: 8.49.0 esquery: 1.5.0 indent-string: 4.0.0 is-builtin-module: 3.2.1 @@ -10348,7 +10456,7 @@ packages: strip-indent: 3.0.0 dev: true - /eslint-plugin-unused-imports@3.0.0(@typescript-eslint/eslint-plugin@6.2.1)(eslint@8.46.0): + /eslint-plugin-unused-imports@3.0.0(@typescript-eslint/eslint-plugin@6.6.0)(eslint@8.49.0): resolution: {integrity: sha512-sduiswLJfZHeeBJ+MQaG+xYzSWdRXoSw61DpU13mzWumCkR0ufD0HmO4kdNokjrkluMHpj/7PJeN35pgbhW3kw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -10358,8 +10466,8 @@ packages: '@typescript-eslint/eslint-plugin': optional: true dependencies: - '@typescript-eslint/eslint-plugin': 6.2.1(@typescript-eslint/parser@6.2.1)(eslint@8.46.0)(typescript@5.1.3) - eslint: 8.46.0 + '@typescript-eslint/eslint-plugin': 6.6.0(@typescript-eslint/parser@6.6.0)(eslint@8.49.0)(typescript@5.2.2) + eslint: 8.49.0 eslint-rule-composer: 0.3.0 dev: true @@ -10387,25 +10495,20 @@ packages: engines: {node: '>=10'} dev: true - /eslint-visitor-keys@3.4.1: - resolution: {integrity: sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==} + /eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - /eslint-visitor-keys@3.4.2: - resolution: {integrity: sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - /eslint@8.46.0: - resolution: {integrity: sha512-cIO74PvbW0qU8e0mIvk5IV3ToWdCq5FYG6gWPHHkx6gNdjlbAYvtfHmlCMXxjcoVaIdwy/IAt3+mDkZkfvb2Dg==} + /eslint@8.49.0: + resolution: {integrity: sha512-jw03ENfm6VJI0jA9U+8H5zfl5b+FvuU3YYvZRdZHOlU2ggJkxrlkJH4HcDrZpj6YwD8kuYqvQM8LyesoazrSOQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0) - '@eslint-community/regexpp': 4.6.2 - '@eslint/eslintrc': 2.1.1 - '@eslint/js': 8.46.0 - '@humanwhocodes/config-array': 0.11.10 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.49.0) + '@eslint-community/regexpp': 4.8.0 + '@eslint/eslintrc': 2.1.2 + '@eslint/js': 8.49.0 + '@humanwhocodes/config-array': 0.11.11 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 ajv: 6.12.6 @@ -10415,7 +10518,7 @@ packages: doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.2 + eslint-visitor-keys: 3.4.3 espree: 9.6.1 esquery: 1.5.0 esutils: 2.0.3 @@ -10423,7 +10526,7 @@ packages: file-entry-cache: 6.0.1 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.20.0 + globals: 13.21.0 graphemer: 1.4.0 ignore: 5.2.4 imurmurhash: 0.1.4 @@ -10447,7 +10550,7 @@ packages: dependencies: acorn: 8.10.0 acorn-jsx: 5.3.2(acorn@8.10.0) - eslint-visitor-keys: 3.4.2 + eslint-visitor-keys: 3.4.3 /esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} @@ -10494,17 +10597,20 @@ packages: engines: {node: '>= 0.6'} dev: false - /eth-rpc-errors@4.0.3: - resolution: {integrity: sha512-Z3ymjopaoft7JDoxZcEb3pwdGh7yiYMhOwm2doUt6ASXlMavpNlK6Cre0+IMl2VSGyEU9rkiperQhp5iRxn5Pg==} + /ethereum-cryptography@2.1.2: + resolution: {integrity: sha512-Z5Ba0T0ImZ8fqXrJbpHcbpAvIswRte2wGNR/KePnu8GbbvgJ47lMxT/ZZPG6i9Jaht4azPDop4HaM00J0J59ug==} dependencies: - fast-safe-stringify: 2.1.1 + '@noble/curves': 1.1.0 + '@noble/hashes': 1.3.1 + '@scure/bip32': 1.3.1 + '@scure/bip39': 1.2.1 dev: false /eval@0.1.8: resolution: {integrity: sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==} engines: {node: '>= 0.8'} dependencies: - '@types/node': 20.3.1 + '@types/node': 18.17.15 require-like: 0.1.2 dev: false @@ -10537,8 +10643,8 @@ packages: signal-exit: 3.0.7 strip-final-newline: 2.0.0 - /execa@7.1.1: - resolution: {integrity: sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==} + /execa@7.2.0: + resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} dependencies: cross-spawn: 7.0.3 @@ -10616,18 +10722,6 @@ packages: resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} dev: true - /fast-glob@3.2.12: - resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} - engines: {node: '>=8.6.0'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.5 - dev: true - optional: true - /fast-glob@3.3.1: resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} engines: {node: '>=8.6.0'} @@ -10644,9 +10738,10 @@ packages: /fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - /fast-redact@3.2.0: - resolution: {integrity: sha512-zaTadChr+NekyzallAMXATXLOR8MNx3zqpZ0MUF2aGf4EathnG0f32VLODNlY8IuGY3HoRO2L6/6fSzNsLaHIw==} + /fast-redact@3.3.0: + resolution: {integrity: sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==} engines: {node: '>=6'} + dev: false /fast-safe-stringify@2.1.1: resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} @@ -10707,7 +10802,7 @@ packages: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: - flat-cache: 3.0.4 + flat-cache: 3.1.0 /file-loader@6.2.0(webpack@5.83.1): resolution: {integrity: sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==} @@ -10789,24 +10884,25 @@ packages: locate-path: 6.0.0 path-exists: 4.0.0 - /flat-cache@3.0.4: - resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} - engines: {node: ^10.12.0 || >=12.0.0} + /flat-cache@3.1.0: + resolution: {integrity: sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==} + engines: {node: '>=12.0.0'} dependencies: flatted: 3.2.7 + keyv: 4.5.3 rimraf: 3.0.2 /flatted@3.2.7: resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} - /flux@4.0.4(react@17.0.0): + /flux@4.0.4(react@17.0.2): resolution: {integrity: sha512-NCj3XlayA2UsapRpM7va6wU1+9rE5FIL7qoMcmxWHRzbp0yujihMBm9BBHZ1MDIk5h5o2Bl6eGiCe8rYELAmYw==} peerDependencies: react: ^15.0.2 || ^16.0.0 || ^17.0.0 dependencies: fbemitter: 3.0.0 fbjs: 3.0.4 - react: 17.0.0 + react: 17.0.2 transitivePeerDependencies: - encoding dev: false @@ -10815,7 +10911,7 @@ packages: resolution: {integrity: sha512-KSuV3ur4gf2KqMNoZx3nXNVhqCkn42GuTYCX4tXPEwf0MjpFQmNMiN6m7dXaUXgIoivL6/65agoUMg4RLS0Vbg==} engines: {node: '>=10'} dependencies: - tslib: 2.5.3 + tslib: 2.6.2 dev: false /follow-redirects@1.15.2: @@ -10834,15 +10930,7 @@ packages: is-callable: 1.2.7 dev: true - /foreground-child@3.1.1: - resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} - engines: {node: '>=14'} - dependencies: - cross-spawn: 7.0.3 - signal-exit: 4.0.2 - dev: true - - /fork-ts-checker-webpack-plugin@6.5.3(eslint@8.46.0)(typescript@5.1.3)(webpack@5.83.1): + /fork-ts-checker-webpack-plugin@6.5.3(eslint@8.49.0)(typescript@5.2.2)(webpack@5.83.1): resolution: {integrity: sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==} engines: {node: '>=10', yarn: '>=1.0.0'} peerDependencies: @@ -10862,7 +10950,7 @@ packages: chokidar: 3.5.3 cosmiconfig: 6.0.0 deepmerge: 4.3.1 - eslint: 8.46.0 + eslint: 8.49.0 fs-extra: 9.1.0 glob: 7.2.3 memfs: 3.5.1 @@ -10870,15 +10958,10 @@ packages: schema-utils: 2.7.0 semver: 7.5.2 tapable: 1.1.3 - typescript: 5.1.3 + typescript: 5.2.2 webpack: 5.83.1(esbuild@0.18.4) dev: false - /form-data-encoder@2.1.4: - resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==} - engines: {node: '>= 14.17'} - dev: true - /forwarded@0.2.0: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} @@ -10888,8 +10971,8 @@ packages: resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} dev: false - /framer-motion@10.12.16(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-w/SfWEIWJkYSgRHYBmln7EhcNo31ao8Xexol8lGXf1pR/tlnBtf1HcxoUmEiEh6pacB4/geku5ami53AAQWHMQ==} + /framer-motion@10.16.4(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-p9V9nGomS3m6/CALXqv6nFGMuFOxbWsmaOrdmhyQimMIlLl3LC7h7l86wge/Js/8cRu5ktutS/zlzgR7eBOtFA==} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 @@ -10901,7 +10984,7 @@ packages: dependencies: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - tslib: 2.5.3 + tslib: 2.6.2 optionalDependencies: '@emotion/is-prop-valid': 0.8.8 dev: false @@ -10941,7 +11024,7 @@ packages: engines: {node: '>= 8'} dependencies: minipass: 3.3.6 - dev: true + dev: false /fs-monkey@1.0.3: resolution: {integrity: sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==} @@ -10950,8 +11033,8 @@ packages: /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - /fsevents@2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true @@ -10960,13 +11043,13 @@ packages: /function-bind@1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - /function.prototype.name@1.1.5: - resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} + /function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 - es-abstract: 1.21.2 + es-abstract: 1.22.1 functions-have-names: 1.2.3 dev: true @@ -10974,6 +11057,10 @@ packages: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} dev: true + /fuzzysearch@1.0.3: + resolution: {integrity: sha512-s+kNWQuI3mo9OALw0HJ6YGmMbLqEufCh2nX/zzV5CrICQ/y4AwPxM+6TIiF9ItFCHXFCyM/BfCCmN57NTIJuPg==} + dev: false + /gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} @@ -11033,8 +11120,8 @@ packages: get-intrinsic: 1.2.1 dev: true - /get-tsconfig@4.6.0: - resolution: {integrity: sha512-lgbo68hHTQnFddybKbbs/RDRJnJT5YyGy2kQzVwbq+g67X73i+5MVTval34QxGkOe9X5Ujf1UYpCaphLyltjEg==} + /get-tsconfig@4.7.0: + resolution: {integrity: sha512-pmjiZ7xtB8URYm74PlGJozDNyhvsVLUcpBa8DZBG3bWHwaHa9bPiRpiSfovw+fjhwONSCWKRyk+JQHEGZmMrzw==} dependencies: resolve-pkg-maps: 1.0.0 dev: true @@ -11058,18 +11145,6 @@ packages: /glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - /glob@10.2.6: - resolution: {integrity: sha512-U/rnDpXJGF414QQQZv5uVsabTVxMSwzS5CH0p3DRCIV6ownl4f7PzGnkGmvlum2wB+9RlJWJZ6ACU1INnBqiPA==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true - dependencies: - foreground-child: 3.1.1 - jackspeak: 2.2.1 - minimatch: 9.0.1 - minipass: 6.0.2 - path-scurry: 1.9.2 - dev: true - /glob@7.1.6: resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} dependencies: @@ -11131,8 +11206,8 @@ packages: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} - /globals@13.20.0: - resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} + /globals@13.21.0: + resolution: {integrity: sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==} engines: {node: '>=8'} dependencies: type-fest: 0.20.2 @@ -11143,6 +11218,10 @@ packages: dependencies: define-properties: 1.2.0 + /globalyzer@0.1.0: + resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} + dev: false + /globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} @@ -11163,6 +11242,11 @@ packages: ignore: 5.2.4 merge2: 1.4.1 slash: 4.0.0 + dev: false + + /globrex@0.1.2: + resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + dev: false /gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} @@ -11170,23 +11254,6 @@ packages: get-intrinsic: 1.2.1 dev: true - /got@12.6.0: - resolution: {integrity: sha512-WTcaQ963xV97MN3x0/CbAriXFZcXCfgxVp91I+Ze6pawQOa7SgzwSx2zIJJsX+kTajMnVs0xcFD1TxZKFqhdnQ==} - engines: {node: '>=14.16'} - dependencies: - '@sindresorhus/is': 5.4.1 - '@szmarczak/http-timer': 5.0.1 - cacheable-lookup: 7.0.0 - cacheable-request: 10.2.10 - decompress-response: 6.0.0 - form-data-encoder: 2.1.4 - get-stream: 6.0.1 - http2-wrapper: 2.2.0 - lowercase-keys: 3.0.0 - p-cancelable: 3.0.0 - responselike: 3.0.0 - dev: true - /got@9.6.0: resolution: {integrity: sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==} engines: {node: '>=8.6'} @@ -11463,6 +11530,7 @@ packages: /http-cache-semantics@4.1.1: resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + dev: false /http-deceiver@1.2.7: resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} @@ -11523,18 +11591,20 @@ packages: - debug dev: false - /http2-wrapper@2.2.0: - resolution: {integrity: sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ==} - engines: {node: '>=10.19.0'} - dependencies: - quick-lru: 5.1.1 - resolve-alpn: 1.2.1 - dev: true - /https-browserify@1.0.0: resolution: {integrity: sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==} dev: true + /https-proxy-agent@5.0.0: + resolution: {integrity: sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==} + engines: {node: '>= 6'} + dependencies: + agent-base: 6.0.2 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: false + /human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} @@ -11544,12 +11614,6 @@ packages: engines: {node: '>=14.18.0'} dev: true - /husky@8.0.3: - resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==} - engines: {node: '>=14'} - hasBin: true - dev: true - /iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} @@ -11689,12 +11753,19 @@ packages: dependencies: call-bind: 1.0.2 get-intrinsic: 1.2.1 - is-typed-array: 1.1.10 + is-typed-array: 1.1.12 dev: true /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + /is-async-function@2.0.0: + resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + /is-bigint@1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: @@ -11744,6 +11815,12 @@ packages: dependencies: has: 1.0.3 + /is-core-module@2.13.0: + resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==} + dependencies: + has: 1.0.3 + dev: true + /is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} @@ -11775,9 +11852,16 @@ packages: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} + /is-finalizationregistry@1.0.2: + resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} + dependencies: + call-bind: 1.0.2 + dev: true + /is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} + dev: false /is-generator-function@1.0.10: resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} @@ -11812,6 +11896,10 @@ packages: is-path-inside: 3.0.3 dev: false + /is-map@2.0.2: + resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} + dev: true + /is-nan@1.3.2: resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} engines: {node: '>= 0.4'} @@ -11894,6 +11982,10 @@ packages: engines: {node: '>=6'} dev: false + /is-set@2.0.2: + resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} + dev: true + /is-shared-array-buffer@1.0.2: resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} dependencies: @@ -11934,20 +12026,33 @@ packages: has-tostringtag: 1.0.0 dev: true + /is-typed-array@1.1.12: + resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} + engines: {node: '>= 0.4'} + dependencies: + which-typed-array: 1.1.11 + dev: true + /is-typedarray@1.0.0: resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} dev: false + /is-weakmap@2.0.1: + resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} + dev: true + /is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: call-bind: 1.0.2 dev: true - /is-what@4.1.13: - resolution: {integrity: sha512-Aoe8pT24sWzyoO0S2PTDyutGp9l7qYHyFtzYlC8hMLshyqV/minljBANT4f2hiS5OxnWvcKMiA5io+VaLMJ1oA==} - engines: {node: '>=12.13'} - dev: false + /is-weakset@2.0.2: + resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + dev: true /is-whitespace-character@1.0.4: resolution: {integrity: sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==} @@ -11975,6 +12080,10 @@ packages: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} dev: false + /isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + dev: true + /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} @@ -11995,13 +12104,13 @@ packages: ws: 7.5.9 dev: false - /jackspeak@2.2.1: - resolution: {integrity: sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw==} - engines: {node: '>=14'} + /iterator.prototype@1.1.1: + resolution: {integrity: sha512-9E+nePc8C9cnQldmNl6bgpTY6zI4OPRZd97fhJ/iVZ1GifIUDVV5F6x1nEDqpe8KaMEZGT4xgrwKQDxXnjOIZQ==} dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 + define-properties: 1.2.0 + get-intrinsic: 1.2.1 + has-symbols: 1.0.3 + reflect.getprototypeof: 1.0.4 dev: true /jest-util@29.5.0: @@ -12009,7 +12118,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 - '@types/node': 20.3.1 + '@types/node': 18.17.15 chalk: 4.1.2 ci-info: 3.8.0 graceful-fs: 4.2.11 @@ -12020,7 +12129,7 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 20.3.1 + '@types/node': 18.17.15 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -12028,7 +12137,7 @@ packages: resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 20.3.1 + '@types/node': 18.17.15 jest-util: 29.5.0 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -12039,8 +12148,8 @@ packages: hasBin: true dev: false - /jiti@1.19.1: - resolution: {integrity: sha512-oVhqoRDaBXf7sjkll95LHVS6Myyyb1zaunVwk4Z0+WPSW4gjS0pl01zYKHScTuyEhQsFxV5L4DR5r+YqSyqyyg==} + /jiti@1.20.0: + resolution: {integrity: sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA==} hasBin: true dev: true optional: true @@ -12105,19 +12214,10 @@ packages: /json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - dev: true /json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - /json-rpc-engine@6.1.0: - resolution: {integrity: sha512-NEdLrtrq1jUZyfjkr9OCz9EzCNhnRyWtt1PAnvnhwy6e8XETS0Dtc+ZNCO2gvuAoKsIn2+vCSowXTYE4CkgnAQ==} - engines: {node: '>=10.0.0'} - dependencies: - '@metamask/safe-event-emitter': 2.0.0 - eth-rpc-errors: 4.0.3 - dev: false - /json-rpc-middleware-stream@4.2.2: resolution: {integrity: sha512-tmTQCI/R8wKMTWB50xlzkyh90JR5VuKiDVlWlmG7DjeKfdDtbLL/4vYCRlG5HnSSKkhrkVPI0TrHQz1Dethl7A==} engines: {node: '>=14.0.0'} @@ -12156,12 +12256,14 @@ packages: graceful-fs: 4.2.11 dev: false - /jsx-ast-utils@3.3.3: - resolution: {integrity: sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==} + /jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} engines: {node: '>=4.0'} dependencies: - array-includes: 3.1.6 + array-includes: 3.1.7 + array.prototype.flat: 1.3.2 object.assign: 4.1.4 + object.values: 1.1.7 dev: true /keyv@3.1.0: @@ -12170,14 +12272,14 @@ packages: json-buffer: 3.0.0 dev: false - /keyv@4.5.2: - resolution: {integrity: sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==} + /keyv@4.5.3: + resolution: {integrity: sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==} dependencies: json-buffer: 3.0.1 - dev: true /keyvaluestorage-interface@1.0.0: resolution: {integrity: sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g==} + dev: false /kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} @@ -12186,6 +12288,7 @@ packages: /kleur@3.0.3: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} + dev: false /klona@2.0.6: resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} @@ -12255,16 +12358,16 @@ packages: /lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - /lit-element@3.3.2: - resolution: {integrity: sha512-xXAeVWKGr4/njq0rGC9dethMnYCq5hpKYrgQZYTzawt9YQhMiXfD+T1RgrdY3NamOxwq2aXlb0vOI6e29CKgVQ==} + /lit-element@3.3.3: + resolution: {integrity: sha512-XbeRxmTHubXENkV4h8RIPyr8lXc+Ff28rkcQzw3G6up2xg5E8Zu1IgOWIwBLEQsu3cOVFqdYwiVi0hv0SlpqUA==} dependencies: '@lit-labs/ssr-dom-shim': 1.1.1 - '@lit/reactive-element': 1.6.2 - lit-html: 2.7.4 + '@lit/reactive-element': 1.6.3 + lit-html: 2.8.0 dev: false - /lit-html@2.7.4: - resolution: {integrity: sha512-/Jw+FBpeEN+z8X6PJva5n7+0MzCVAH2yypN99qHYYkq8bI+j7I39GH+68Z/MZD6rGKDK9RpzBw7CocfmHfq6+g==} + /lit-html@2.8.0: + resolution: {integrity: sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q==} dependencies: '@types/trusted-types': 2.0.3 dev: false @@ -12272,9 +12375,9 @@ packages: /lit@2.7.5: resolution: {integrity: sha512-i/cH7Ye6nBDUASMnfwcictBnsTN91+aBjXoTHF2xARghXScKxpD4F4WYI+VLXg9lqbMinDfvoI7VnZXjyHgdfQ==} dependencies: - '@lit/reactive-element': 1.6.2 - lit-element: 3.3.2 - lit-html: 2.7.4 + '@lit/reactive-element': 1.6.3 + lit-element: 3.3.3 + lit-html: 2.8.0 dev: false /load-tsconfig@0.2.5: @@ -12360,6 +12463,7 @@ packages: /long@4.0.0: resolution: {integrity: sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==} + dev: false /loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} @@ -12383,11 +12487,6 @@ packages: engines: {node: '>=8'} dev: false - /lowercase-keys@3.0.0: - resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true - /lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} dependencies: @@ -12399,11 +12498,6 @@ packages: dependencies: yallist: 4.0.0 - /lru-cache@9.1.1: - resolution: {integrity: sha512-65/Jky17UwSb0BuB9V+MyDpsOtXKmYwzhyl+cOa9XUiI4uV2Ouy/2voFP3+al0BjZbJgMBD8FojMpAf+Z+qn4A==} - engines: {node: 14 || >=16.14} - dev: true - /lunr-languages@1.12.0: resolution: {integrity: sha512-C2z02jt74ymrDocBwxYB4Cr1LNZj9rHGLTH/00+JuoT6eJOSSuPBzeqQG8kjnlPUQe+/PAWv1/KHbDT+YYYRnA==} dev: false @@ -12502,6 +12596,10 @@ packages: engines: {node: '>= 0.6'} dev: false + /micro-ftch@0.3.1: + resolution: {integrity: sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==} + dev: false + /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} @@ -12559,16 +12657,6 @@ packages: engines: {node: '>=4'} dev: false - /mimic-response@3.1.0: - resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} - engines: {node: '>=10'} - dev: true - - /mimic-response@4.0.0: - resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true - /min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} @@ -12595,13 +12683,6 @@ packages: dependencies: brace-expansion: 1.1.11 - /minimatch@9.0.1: - resolution: {integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==} - engines: {node: '>=16 || 14 >=14.17'} - dependencies: - brace-expansion: 2.0.1 - dev: true - /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} @@ -12610,22 +12691,12 @@ packages: engines: {node: '>=8'} dependencies: yallist: 4.0.0 - dev: true - - /minipass@4.2.8: - resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==} - engines: {node: '>=8'} - dev: true + dev: false /minipass@5.0.0: resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} engines: {node: '>=8'} - dev: true - - /minipass@6.0.2: - resolution: {integrity: sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w==} - engines: {node: '>=16 || 14 >=14.17'} - dev: true + dev: false /minizlib@2.1.2: resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} @@ -12633,16 +12704,16 @@ packages: dependencies: minipass: 3.3.6 yallist: 4.0.0 - dev: true + dev: false /mkdirp@1.0.4: resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} engines: {node: '>=10'} hasBin: true - dev: true + dev: false - /mobx@6.9.0: - resolution: {integrity: sha512-HdKewQEREEJgsWnErClfbFoVebze6rGazxFLU/XUyrII8dORfVszN1V0BMRnQSzcgsNNtkX8DHj3nC6cdWE9YQ==} + /mobx@6.10.2: + resolution: {integrity: sha512-B1UGC3ieK3boCjnMEcZSwxqRDMdzX65H/8zOHbuTY8ZhvrIjTUoLRR2TP2bPqIgYRfb3+dUigu8yMZufNjn0LQ==} dev: false /motion@10.16.2: @@ -12656,6 +12727,11 @@ packages: '@motionone/vue': 10.16.2 dev: false + /mri@1.1.6: + resolution: {integrity: sha512-oi1b3MfbyGa7FJMP9GmLTttni5JoICpYBRlq+x5V16fZbLsnL9N3wFqqIm/nIG43FjUFkFh9Epzp/kzUGUnJxQ==} + engines: {node: '>=4'} + dev: false + /mrmime@1.0.1: resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} engines: {node: '>=10'} @@ -12691,8 +12767,8 @@ packages: thenify-all: 1.6.0 dev: true - /nan@2.17.0: - resolution: {integrity: sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==} + /nan@2.18.0: + resolution: {integrity: sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==} dev: false /nanoid@3.3.6: @@ -12700,10 +12776,6 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - /natural-compare-lite@1.4.0: - resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} - dev: true - /natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} @@ -12715,44 +12787,41 @@ packages: /neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - /next@13.4.6(@babel/core@7.22.9)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-sjVqjxU+U2aXZnYt4Ud6CTLNNwWjdSfMgemGpIQJcN3Z7Jni9xRWbR0ie5fQzCg87aLqQVhKA2ud2gPoqJ9lGw==} + /next@13.4.19(@babel/core@7.22.15)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-HuPSzzAbJ1T4BD8e0bs6B9C1kWQ6gv8ykZoRWs5AQoiIuqbGHHdQO7Ljuvg05Q0Z24E2ABozHe6FxDvI6HfyAw==} engines: {node: '>=16.8.0'} hasBin: true peerDependencies: '@opentelemetry/api': ^1.1.0 - fibers: '>= 3.1.0' react: ^18.2.0 react-dom: ^18.2.0 sass: ^1.3.0 peerDependenciesMeta: '@opentelemetry/api': optional: true - fibers: - optional: true sass: optional: true dependencies: - '@next/env': 13.4.6 + '@next/env': 13.4.19 '@swc/helpers': 0.5.1 busboy: 1.6.0 - caniuse-lite: 1.0.30001489 + caniuse-lite: 1.0.30001528 postcss: 8.4.14 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - styled-jsx: 5.1.1(@babel/core@7.22.9)(react@18.2.0) + styled-jsx: 5.1.1(@babel/core@7.22.15)(react@18.2.0) watchpack: 2.4.0 zod: 3.21.4 optionalDependencies: - '@next/swc-darwin-arm64': 13.4.6 - '@next/swc-darwin-x64': 13.4.6 - '@next/swc-linux-arm64-gnu': 13.4.6 - '@next/swc-linux-arm64-musl': 13.4.6 - '@next/swc-linux-x64-gnu': 13.4.6 - '@next/swc-linux-x64-musl': 13.4.6 - '@next/swc-win32-arm64-msvc': 13.4.6 - '@next/swc-win32-ia32-msvc': 13.4.6 - '@next/swc-win32-x64-msvc': 13.4.6 + '@next/swc-darwin-arm64': 13.4.19 + '@next/swc-darwin-x64': 13.4.19 + '@next/swc-linux-arm64-gnu': 13.4.19 + '@next/swc-linux-arm64-musl': 13.4.19 + '@next/swc-linux-x64-gnu': 13.4.19 + '@next/swc-linux-x64-musl': 13.4.19 + '@next/swc-win32-arm64-msvc': 13.4.19 + '@next/swc-win32-ia32-msvc': 13.4.19 + '@next/swc-win32-x64-msvc': 13.4.19 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros @@ -12795,6 +12864,9 @@ packages: /node-releases@2.0.12: resolution: {integrity: sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==} + /node-releases@2.0.13: + resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} + /node-stdlib-browser@1.2.0: resolution: {integrity: sha512-VSjFxUhRhkyed8AtLwSCkMrJRfQ3e2lGtG3sP6FEgaLKBBbxM/dLfjRe1+iLhjvyLFW3tBQ8+c0pcOtXGbAZJg==} engines: {node: '>=10'} @@ -12832,8 +12904,8 @@ packages: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: hosted-git-info: 2.8.9 - resolve: 1.22.2 - semver: 5.7.1 + resolve: 1.22.4 + semver: 5.7.2 validate-npm-package-license: 3.0.4 dev: true @@ -12856,11 +12928,6 @@ packages: engines: {node: '>=10'} dev: false - /normalize-url@8.0.0: - resolution: {integrity: sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==} - engines: {node: '>=14.16'} - dev: true - /npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} @@ -12918,47 +12985,47 @@ packages: has-symbols: 1.0.3 object-keys: 1.1.1 - /object.entries@1.1.6: - resolution: {integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==} + /object.entries@1.1.7: + resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 - es-abstract: 1.21.2 + es-abstract: 1.22.1 dev: true - /object.fromentries@2.0.6: - resolution: {integrity: sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==} + /object.fromentries@2.0.7: + resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 - es-abstract: 1.21.2 + es-abstract: 1.22.1 dev: true - /object.groupby@1.0.0: - resolution: {integrity: sha512-70MWG6NfRH9GnbZOikuhPPYzpUpof9iW2J9E4dW7FXTqPNb6rllE6u39SKwwiNh8lCwX3DDb5OgcKGiEBrTTyw==} + /object.groupby@1.0.1: + resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 - es-abstract: 1.21.2 + es-abstract: 1.22.1 get-intrinsic: 1.2.1 dev: true - /object.hasown@1.1.2: - resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==} + /object.hasown@1.1.3: + resolution: {integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==} dependencies: define-properties: 1.2.0 - es-abstract: 1.21.2 + es-abstract: 1.22.1 dev: true - /object.values@1.1.6: - resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} + /object.values@1.1.7: + resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 - es-abstract: 1.21.2 + es-abstract: 1.22.1 dev: true /obuf@1.1.2: @@ -12967,6 +13034,7 @@ packages: /on-exit-leak-free@0.2.0: resolution: {integrity: sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==} + dev: false /on-finished@2.4.1: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} @@ -13042,11 +13110,6 @@ packages: engines: {node: '>=6'} dev: false - /p-cancelable@3.0.0: - resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} - engines: {node: '>=12.20'} - dev: true - /p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} @@ -13229,14 +13292,6 @@ packages: /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - /path-scurry@1.9.2: - resolution: {integrity: sha512-qSDLy2aGFPm8i4rsbHd4MNyTcrzHFsLQykrtbuGRknZZCBBVXSv2tSCDN2Cg6Rt/GFRw8GoW9y9Ecw5rIPG1sg==} - engines: {node: '>=16 || 14 >=14.17'} - dependencies: - lru-cache: 9.1.1 - minipass: 6.0.2 - dev: true - /path-to-regexp@0.1.7: resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} dev: false @@ -13284,16 +13339,18 @@ packages: dependencies: duplexify: 4.1.2 split2: 4.2.0 + dev: false /pino-std-serializers@4.0.0: resolution: {integrity: sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==} + dev: false /pino@7.11.0: resolution: {integrity: sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg==} hasBin: true dependencies: atomic-sleep: 1.0.0 - fast-redact: 3.2.0 + fast-redact: 3.3.0 on-exit-leak-free: 0.2.0 pino-abstract-transport: 0.5.0 pino-std-serializers: 4.0.0 @@ -13303,6 +13360,7 @@ packages: safe-stable-stringify: 2.4.3 sonic-boom: 2.8.0 thread-stream: 0.15.2 + dev: false /pirates@4.0.5: resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} @@ -13496,31 +13554,31 @@ packages: postcss-selector-parser: 6.0.13 dev: false - /postcss-import@15.1.0(postcss@8.4.27): + /postcss-import@15.1.0(postcss@8.4.29): resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} engines: {node: '>=14.0.0'} peerDependencies: postcss: ^8.0.0 dependencies: - postcss: 8.4.27 + postcss: 8.4.29 postcss-value-parser: 4.2.0 read-cache: 1.0.0 - resolve: 1.22.3 + resolve: 1.22.4 dev: true optional: true - /postcss-js@4.0.1(postcss@8.4.27): + /postcss-js@4.0.1(postcss@8.4.29): resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} engines: {node: ^12 || ^14 || >= 16} peerDependencies: postcss: ^8.4.21 dependencies: camelcase-css: 2.0.1 - postcss: 8.4.27 + postcss: 8.4.29 dev: true optional: true - /postcss-load-config@4.0.1(postcss@8.4.27): + /postcss-load-config@4.0.1(postcss@8.4.29): resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} engines: {node: '>= 14'} peerDependencies: @@ -13533,7 +13591,7 @@ packages: optional: true dependencies: lilconfig: 2.1.0 - postcss: 8.4.27 + postcss: 8.4.29 yaml: 2.3.1 dev: true @@ -13740,13 +13798,13 @@ packages: postcss: 8.4.24 dev: false - /postcss-nested@6.0.1(postcss@8.4.27): + /postcss-nested@6.0.1(postcss@8.4.29): resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.2.14 dependencies: - postcss: 8.4.27 + postcss: 8.4.29 postcss-selector-parser: 6.0.13 dev: true optional: true @@ -14104,9 +14162,10 @@ packages: nanoid: 3.3.6 picocolors: 1.0.0 source-map-js: 1.0.2 + dev: false - /postcss@8.4.27: - resolution: {integrity: sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==} + /postcss@8.4.29: + resolution: {integrity: sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.6 @@ -14134,8 +14193,8 @@ packages: fast-diff: 1.3.0 dev: true - /prettier@3.0.0: - resolution: {integrity: sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g==} + /prettier@3.0.3: + resolution: {integrity: sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==} engines: {node: '>=14'} hasBin: true dev: true @@ -14152,12 +14211,12 @@ packages: engines: {node: '>=4'} dev: false - /prism-react-renderer@1.3.5(react@17.0.0): + /prism-react-renderer@1.3.5(react@17.0.2): resolution: {integrity: sha512-IJ+MSwBWKG+SM3b2SUfdrhC+gu01QkV2KmRQgREThBfSQRoufqRfxfHUxpG1WcaFjP+kojcFyO9Qqtpgt3qLCg==} peerDependencies: react: '>=0.14.9' dependencies: - react: 17.0.0 + react: 17.0.2 dev: false /prismjs@1.29.0: @@ -14171,6 +14230,7 @@ packages: /process-warning@1.0.0: resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==} + dev: false /process@0.11.10: resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} @@ -14189,6 +14249,7 @@ packages: dependencies: kleur: 3.0.3 sisteransi: 1.0.5 + dev: false /prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} @@ -14219,7 +14280,7 @@ packages: '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 '@types/long': 4.0.2 - '@types/node': 20.3.1 + '@types/node': 18.17.15 long: 4.0.0 dev: false @@ -14314,11 +14375,7 @@ packages: /quick-format-unescaped@4.0.4: resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} - - /quick-lru@5.1.1: - resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} - engines: {node: '>=10'} - dev: true + dev: false /randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} @@ -14376,11 +14433,11 @@ packages: peerDependencies: react: ^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 dependencies: - '@babel/runtime': 7.22.5 + '@babel/runtime': 7.22.15 react: 18.2.0 dev: false - /react-dev-utils@12.0.1(eslint@8.46.0)(typescript@5.1.3)(webpack@5.83.1): + /react-dev-utils@12.0.1(eslint@8.49.0)(typescript@5.2.2)(webpack@5.83.1): resolution: {integrity: sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==} engines: {node: '>=14'} peerDependencies: @@ -14399,7 +14456,7 @@ packages: escape-string-regexp: 4.0.0 filesize: 8.0.7 find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.46.0)(typescript@5.1.3)(webpack@5.83.1) + fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.49.0)(typescript@5.2.2)(webpack@5.83.1) global-modules: 2.0.0 globby: 11.1.0 gzip-size: 6.0.0 @@ -14414,7 +14471,7 @@ packages: shell-quote: 1.8.1 strip-ansi: 6.0.1 text-table: 0.2.0 - typescript: 5.1.3 + typescript: 5.2.2 webpack: 5.83.1(esbuild@0.18.4) transitivePeerDependencies: - eslint @@ -14422,14 +14479,14 @@ packages: - vue-template-compiler dev: false - /react-dom@17.0.0(react@17.0.0): - resolution: {integrity: sha512-OGnFbxCjI2TMAZYMVxi4hqheJiN8rCEVVrL7XIGzCB6beNc4Am8M47HtkvxODZw9QgjmAPKpLba9FTu4fC1byA==} + /react-dom@17.0.2(react@17.0.2): + resolution: {integrity: sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==} peerDependencies: - react: 17.0.0 + react: 17.0.2 dependencies: loose-envify: 1.4.0 object-assign: 4.1.1 - react: 17.0.0 + react: 17.0.2 scheduler: 0.20.2 /react-dom@18.2.0(react@18.2.0): @@ -14446,15 +14503,11 @@ packages: resolution: {integrity: sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==} dev: false - /react-fast-compare@3.2.1: - resolution: {integrity: sha512-xTYf9zFim2pEif/Fw16dBiXpe0hoy5PxcD8+OwBnTtNLfIm3g6WxhKNurY+6OmdH1u6Ta/W/Vl6vjbYP1MFnDg==} - dev: false - /react-fast-compare@3.2.2: resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==} - /react-focus-lock@2.9.4(@types/react@18.2.12)(react@18.2.0): - resolution: {integrity: sha512-7pEdXyMseqm3kVjhdVH18sovparAzLg5h6WvIx7/Ck3ekjhrrDMEegHSa3swwC8wgfdd7DIdUVRGeiHT9/7Sgg==} + /react-focus-lock@2.9.5(@types/react@18.2.21)(react@18.2.0): + resolution: {integrity: sha512-h6vrdgUbsH2HeD5I7I3Cx1PPrmwGuKYICS+kB9m+32X/9xHRrAbxgvaBpG7BFBN9h3tO+C3qX1QAVESmi4CiIA==} peerDependencies: '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -14462,17 +14515,17 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.22.5 - '@types/react': 18.2.12 + '@babel/runtime': 7.22.15 + '@types/react': 18.2.21 focus-lock: 0.11.6 prop-types: 15.8.1 react: 18.2.0 react-clientside-effect: 1.2.6(react@18.2.0) - use-callback-ref: 1.3.0(@types/react@18.2.12)(react@18.2.0) - use-sidecar: 1.1.2(@types/react@18.2.12)(react@18.2.0) + use-callback-ref: 1.3.0(@types/react@18.2.21)(react@18.2.0) + use-sidecar: 1.1.2(@types/react@18.2.21)(react@18.2.0) dev: false - /react-helmet-async@1.3.0(react-dom@17.0.0)(react@17.0.0): + /react-helmet-async@1.3.0(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg==} peerDependencies: react: ^16.6.0 || ^17.0.0 || ^18.0.0 @@ -14481,26 +14534,26 @@ packages: '@babel/runtime': 7.22.3 invariant: 2.2.4 prop-types: 15.8.1 - react: 17.0.0 - react-dom: 17.0.0(react@17.0.0) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) react-fast-compare: 3.2.2 shallowequal: 1.1.0 /react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - /react-json-view@1.21.3(react-dom@17.0.0)(react@17.0.0): + /react-json-view@1.21.3(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-13p8IREj9/x/Ye4WI/JpjhoIwuzEgUAtgJZNBJckfzJt1qyh24BdTm6UQNGnyTq9dapQdrqvquZTo3dz1X6Cjw==} peerDependencies: react: ^17.0.0 || ^16.3.0 || ^15.5.4 react-dom: ^17.0.0 || ^16.3.0 || ^15.5.4 dependencies: - flux: 4.0.4(react@17.0.0) - react: 17.0.0 + flux: 4.0.4(react@17.0.2) + react: 17.0.2 react-base16-styling: 0.6.0 - react-dom: 17.0.0(react@17.0.0) + react-dom: 17.0.2(react@17.0.2) react-lifecycles-compat: 3.0.4 - react-textarea-autosize: 8.4.1(react@17.0.0) + react-textarea-autosize: 8.4.1(react@17.0.2) transitivePeerDependencies: - '@types/react' - encoding @@ -14518,7 +14571,7 @@ packages: webpack: '>=4.41.1 || 5.x' dependencies: '@babel/runtime': 7.22.3 - react-loadable: /@docusaurus/react-loadable@5.5.2(react@17.0.0) + react-loadable: /@docusaurus/react-loadable@5.5.2(react@17.0.2) webpack: 5.83.1(esbuild@0.18.4) dev: false @@ -14527,7 +14580,7 @@ packages: engines: {node: '>=0.10.0'} dev: true - /react-remove-scroll-bar@2.3.4(@types/react@18.2.12)(react@18.2.0): + /react-remove-scroll-bar@2.3.4(@types/react@18.2.21)(react@18.2.0): resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==} engines: {node: '>=10'} peerDependencies: @@ -14537,13 +14590,13 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.12 + '@types/react': 18.2.21 react: 18.2.0 - react-style-singleton: 2.2.1(@types/react@18.2.12)(react@18.2.0) - tslib: 2.5.3 + react-style-singleton: 2.2.1(@types/react@18.2.21)(react@18.2.0) + tslib: 2.6.2 dev: false - /react-remove-scroll@2.5.6(@types/react@18.2.12)(react@18.2.0): + /react-remove-scroll@2.5.6(@types/react@18.2.21)(react@18.2.0): resolution: {integrity: sha512-bO856ad1uDYLefgArk559IzUNeQ6SWH4QnrevIUjH+GczV56giDfl3h0Idptf2oIKxQmd1p9BN25jleKodTALg==} engines: {node: '>=10'} peerDependencies: @@ -14553,27 +14606,27 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.12 + '@types/react': 18.2.21 react: 18.2.0 - react-remove-scroll-bar: 2.3.4(@types/react@18.2.12)(react@18.2.0) - react-style-singleton: 2.2.1(@types/react@18.2.12)(react@18.2.0) - tslib: 2.5.3 - use-callback-ref: 1.3.0(@types/react@18.2.12)(react@18.2.0) - use-sidecar: 1.1.2(@types/react@18.2.12)(react@18.2.0) + react-remove-scroll-bar: 2.3.4(@types/react@18.2.21)(react@18.2.0) + react-style-singleton: 2.2.1(@types/react@18.2.21)(react@18.2.0) + tslib: 2.6.2 + use-callback-ref: 1.3.0(@types/react@18.2.21)(react@18.2.0) + use-sidecar: 1.1.2(@types/react@18.2.21)(react@18.2.0) dev: false - /react-router-config@5.1.1(react-router@5.3.4)(react@17.0.0): + /react-router-config@5.1.1(react-router@5.3.4)(react@17.0.2): resolution: {integrity: sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==} peerDependencies: react: '>=15' react-router: '>=5' dependencies: '@babel/runtime': 7.22.3 - react: 17.0.0 - react-router: 5.3.4(react@17.0.0) + react: 17.0.2 + react-router: 5.3.4(react@17.0.2) dev: false - /react-router-dom@5.3.4(react@17.0.0): + /react-router-dom@5.3.4(react@17.0.2): resolution: {integrity: sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==} peerDependencies: react: '>=15' @@ -14582,13 +14635,13 @@ packages: history: 4.10.1 loose-envify: 1.4.0 prop-types: 15.8.1 - react: 17.0.0 - react-router: 5.3.4(react@17.0.0) + react: 17.0.2 + react-router: 5.3.4(react@17.0.2) tiny-invariant: 1.3.1 tiny-warning: 1.0.3 dev: false - /react-router@5.3.4(react@17.0.0): + /react-router@5.3.4(react@17.0.2): resolution: {integrity: sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==} peerDependencies: react: '>=15' @@ -14599,13 +14652,13 @@ packages: loose-envify: 1.4.0 path-to-regexp: 1.8.0 prop-types: 15.8.1 - react: 17.0.0 + react: 17.0.2 react-is: 16.13.1 tiny-invariant: 1.3.1 tiny-warning: 1.0.3 dev: false - /react-style-singleton@2.2.1(@types/react@18.2.12)(react@18.2.0): + /react-style-singleton@2.2.1(@types/react@18.2.21)(react@18.2.0): resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} engines: {node: '>=10'} peerDependencies: @@ -14615,29 +14668,29 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.12 + '@types/react': 18.2.21 get-nonce: 1.0.1 invariant: 2.2.4 react: 18.2.0 - tslib: 2.5.3 + tslib: 2.6.2 dev: false - /react-textarea-autosize@8.4.1(react@17.0.0): + /react-textarea-autosize@8.4.1(react@17.0.2): resolution: {integrity: sha512-aD2C+qK6QypknC+lCMzteOdIjoMbNlgSFmJjCV+DrfTPwp59i/it9mMNf2HDzvRjQgKAyBDPyLJhcrzElf2U4Q==} engines: {node: '>=10'} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: '@babel/runtime': 7.22.3 - react: 17.0.0 - use-composed-ref: 1.3.0(react@17.0.0) - use-latest: 1.2.1(react@17.0.0) + react: 17.0.2 + use-composed-ref: 1.3.0(react@17.0.2) + use-latest: 1.2.1(react@17.0.2) transitivePeerDependencies: - '@types/react' dev: false - /react@17.0.0: - resolution: {integrity: sha512-rG9bqS3LMuetoSUKHN8G3fMNuQOePKDThK6+2yXFWtoeTDLVNh/QCaxT+Jr+rNf4lwNXpx+atdn3Aa0oi8/6eQ==} + /react@17.0.2: + resolution: {integrity: sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==} engines: {node: '>=0.10.0'} dependencies: loose-envify: 1.4.0 @@ -14712,6 +14765,7 @@ packages: /real-require@0.1.0: resolution: {integrity: sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg==} engines: {node: '>= 12.13.0'} + dev: false /rechoir@0.6.2: resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} @@ -14727,6 +14781,18 @@ packages: minimatch: 3.1.2 dev: false + /reflect.getprototypeof@1.0.4: + resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + get-intrinsic: 1.2.1 + globalthis: 1.0.3 + which-builtin-type: 1.1.3 + dev: true + /regenerate-unicode-properties@10.1.0: resolution: {integrity: sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==} engines: {node: '>=4'} @@ -14741,6 +14807,9 @@ packages: /regenerator-runtime@0.13.11: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + /regenerator-runtime@0.14.0: + resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} + /regenerator-transform@0.15.1: resolution: {integrity: sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==} dependencies: @@ -14860,10 +14929,6 @@ packages: mdast-squeeze-paragraphs: 4.0.0 dev: false - /remove-accents@0.4.2: - resolution: {integrity: sha512-7pXIJqJOq5tFgG1A2Zxti3Ht8jJF337m4sowbuHsW30ZnkQFnDzy9qBNhgzX8ZLW4+UBcXiiR7SwR6pokHsxiA==} - dev: false - /renderkid@3.0.0: resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==} dependencies: @@ -14901,10 +14966,6 @@ packages: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} dev: false - /resolve-alpn@1.2.1: - resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} - dev: true - /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -14925,7 +14986,7 @@ packages: /resolve@1.19.0: resolution: {integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==} dependencies: - is-core-module: 2.12.1 + is-core-module: 2.13.0 path-parse: 1.0.7 dev: true @@ -14937,11 +14998,11 @@ packages: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - /resolve@1.22.3: - resolution: {integrity: sha512-P8ur/gp/AmbEzjr729bZnLjXK5Z+4P0zhIJgBgzqRih7hL7BOukHGtSTA3ACMY467GRFz3duQsi0bDZdR7DKdw==} + /resolve@1.22.4: + resolution: {integrity: sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==} hasBin: true dependencies: - is-core-module: 2.12.1 + is-core-module: 2.13.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 dev: true @@ -14950,7 +15011,7 @@ packages: resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} hasBin: true dependencies: - is-core-module: 2.12.1 + is-core-module: 2.13.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 dev: true @@ -14961,16 +15022,10 @@ packages: lowercase-keys: 1.0.1 dev: false - /responselike@3.0.0: - resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==} - engines: {node: '>=14.16'} - dependencies: - lowercase-keys: 3.0.0 - dev: true - /retry@0.13.1: resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} engines: {node: '>= 4'} + dev: false /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} @@ -14982,14 +15037,6 @@ packages: dependencies: glob: 7.2.3 - /rimraf@5.0.1: - resolution: {integrity: sha512-OfFZdwtd3lZ+XZzYP/6gTACubwFcHdLRqS9UX3UwpU2dnGQYkPFISRwvM3w9IiB2w7bW5qGo/uAwE4SmXXSKvg==} - engines: {node: '>=14'} - hasBin: true - dependencies: - glob: 10.2.6 - dev: true - /ripemd160@2.0.2: resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} dependencies: @@ -15001,7 +15048,15 @@ packages: engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 + dev: true + + /rollup@3.29.0: + resolution: {integrity: sha512-nszM8DINnx1vSS+TpbWKMkxem0CDWk3cSit/WWCBVs9/JZ1I/XLwOsiUglYuYReaeWWSsW9kge5zE5NZtf/a4w==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.3 dev: true /rtl-detect@1.0.4: @@ -15014,7 +15069,7 @@ packages: dependencies: find-up: 5.0.0 picocolors: 1.0.0 - postcss: 8.4.24 + postcss: 8.4.23 strip-json-comments: 3.1.1 dev: false @@ -15036,6 +15091,16 @@ packages: tslib: 2.5.3 dev: false + /safe-array-concat@1.0.1: + resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} + engines: {node: '>=0.4'} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + has-symbols: 1.0.3 + isarray: 2.0.5 + dev: true + /safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} dev: false @@ -15045,6 +15110,7 @@ packages: /safe-json-utils@1.1.1: resolution: {integrity: sha512-SAJWGKDs50tAbiDXLf89PDwt9XYkWyANFWVzn4dTXl5QyI8t2o/bW5/OJl3lvc2WVU4MEpTo9Yz5NVFNsp+OJQ==} + dev: false /safe-regex-test@1.0.0: resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} @@ -15057,6 +15123,7 @@ packages: /safe-stable-stringify@2.4.3: resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} engines: {node: '>=10'} + dev: false /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} @@ -15113,9 +15180,8 @@ packages: ajv-keywords: 5.1.0(ajv@8.12.0) dev: false - /search-insights@2.6.0: - resolution: {integrity: sha512-vU2/fJ+h/Mkm/DJOe+EaM5cafJv/1rRTZpGJTuFPf/Q5LjzgMDsqPdSaZsAe+GAWHHsfsu+rQSAn6c8IGtBEVw==} - engines: {node: '>=8.16.0'} + /search-insights@2.8.2: + resolution: {integrity: sha512-PxA9M5Q2bpBelVvJ3oDZR8nuY00Z6qwOxL53wNpgzV28M/D6u9WUbImDckjLSILBF8F1hn/mgyuUaOPtjow4Qw==} dev: false /section-matter@1.0.0: @@ -15147,10 +15213,17 @@ packages: /semver@5.7.1: resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} hasBin: true + dev: false + + /semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + dev: true /semver@6.3.0: resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} hasBin: true + dev: false /semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} @@ -15162,6 +15235,7 @@ packages: hasBin: true dependencies: lru-cache: 6.0.0 + dev: false /semver@7.5.2: resolution: {integrity: sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==} @@ -15170,6 +15244,7 @@ packages: requiresBuild: true dependencies: lru-cache: 6.0.0 + dev: false /semver@7.5.4: resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} @@ -15177,7 +15252,6 @@ packages: hasBin: true dependencies: lru-cache: 6.0.0 - dev: true /send@0.18.0: resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} @@ -15310,11 +15384,6 @@ packages: /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - /signal-exit@4.0.2: - resolution: {integrity: sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==} - engines: {node: '>=14'} - dev: true - /sirv@1.0.19: resolution: {integrity: sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==} engines: {node: '>= 10'} @@ -15326,6 +15395,7 @@ packages: /sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + dev: false /sitemap@7.1.1: resolution: {integrity: sha512-mK3aFtjz4VdJN0igpIJrinf3EO8U8mxOPsTBzSsy06UtjZQJ3YY3o3Xa7zSc5nMqcMrRwlChHZ18Kxg0caiPBg==} @@ -15345,6 +15415,7 @@ packages: /slash@4.0.0: resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} engines: {node: '>=12'} + dev: false /sockjs@0.3.24: resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} @@ -15358,6 +15429,7 @@ packages: resolution: {integrity: sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==} dependencies: atomic-sleep: 1.0.0 + dev: false /sort-css-media-queries@2.1.0: resolution: {integrity: sha512-IeWvo8NkNiY2vVYdPa27MCQiR0MN0M80johAYFVxWWXQ44KU84WNxjslwBHmc/7ZL2ccwkM7/e6S5aiKZXm7jA==} @@ -15450,6 +15522,7 @@ packages: /split2@4.2.0: resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} engines: {node: '>= 10.x'} + dev: false /sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} @@ -15496,6 +15569,7 @@ packages: /stream-shift@1.0.1: resolution: {integrity: sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==} + dev: false /streamsearch@1.1.0: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} @@ -15514,6 +15588,7 @@ packages: emoji-regex: 8.0.0 is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 + dev: false /string-width@5.1.2: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} @@ -15521,14 +15596,15 @@ packages: dependencies: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 - strip-ansi: 7.0.1 + strip-ansi: 7.1.0 + dev: false - /string.prototype.matchall@4.0.8: - resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} + /string.prototype.matchall@4.0.9: + resolution: {integrity: sha512-6i5hL3MqG/K2G43mWXWgP+qizFW/QH/7kCNN13JrJS5q48FN5IKksLDscexKP3dnmB6cdm9jlNgAsWNLpSykmA==} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 - es-abstract: 1.21.2 + es-abstract: 1.22.1 get-intrinsic: 1.2.1 has-symbols: 1.0.3 internal-slot: 1.0.5 @@ -15536,29 +15612,29 @@ packages: side-channel: 1.0.4 dev: true - /string.prototype.trim@1.2.7: - resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==} + /string.prototype.trim@1.2.8: + resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 - es-abstract: 1.21.2 + es-abstract: 1.22.1 dev: true - /string.prototype.trimend@1.0.6: - resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} + /string.prototype.trimend@1.0.7: + resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 - es-abstract: 1.21.2 + es-abstract: 1.22.1 dev: true - /string.prototype.trimstart@1.0.6: - resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} + /string.prototype.trimstart@1.0.7: + resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 - es-abstract: 1.21.2 + es-abstract: 1.22.1 dev: true /string_decoder@1.1.1: @@ -15587,11 +15663,12 @@ packages: dependencies: ansi-regex: 5.0.1 - /strip-ansi@7.0.1: - resolution: {integrity: sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==} + /strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} engines: {node: '>=12'} dependencies: ansi-regex: 6.0.1 + dev: false /strip-bom-string@1.0.0: resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} @@ -15634,7 +15711,7 @@ packages: inline-style-parser: 0.1.1 dev: false - /styled-jsx@5.1.1(@babel/core@7.22.9)(react@18.2.0): + /styled-jsx@5.1.1(@babel/core@7.22.15)(react@18.2.0): resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} engines: {node: '>= 12.0.0'} peerDependencies: @@ -15647,7 +15724,7 @@ packages: babel-plugin-macros: optional: true dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.22.15 client-only: 0.0.1 react: 18.2.0 dev: false @@ -15707,11 +15784,9 @@ packages: dev: true optional: true - /superjson@1.12.3: - resolution: {integrity: sha512-0j+U70KUtP8+roVPbwfqkyQI7lBt7ETnuA7KXbTDX3mCKiD/4fXs2ldKSMdt0MCfpTwiMxo20yFU3vu6ewETpQ==} - engines: {node: '>=10'} - dependencies: - copy-anything: 3.0.5 + /superstruct@1.0.3: + resolution: {integrity: sha512-8iTn3oSS8nRGn+C2pgXSKPI3jmpm6FExNazNpjvqS6ZUJQCej3PUXEKM8NjHBOs54ExM+LPW/FBRhymrdcCiSg==} + engines: {node: '>=14.0.0'} dev: false /supports-color@5.5.0: @@ -15763,8 +15838,8 @@ packages: resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==} engines: {node: ^14.18.0 || >=16.0.0} dependencies: - '@pkgr/utils': 2.4.1 - tslib: 2.5.3 + '@pkgr/utils': 2.4.2 + tslib: 2.6.2 dev: true /tailwindcss@3.3.3: @@ -15780,19 +15855,19 @@ packages: fast-glob: 3.3.1 glob-parent: 6.0.2 is-glob: 4.0.3 - jiti: 1.19.1 + jiti: 1.20.0 lilconfig: 2.1.0 micromatch: 4.0.5 normalize-path: 3.0.0 object-hash: 3.0.0 picocolors: 1.0.0 - postcss: 8.4.27 - postcss-import: 15.1.0(postcss@8.4.27) - postcss-js: 4.0.1(postcss@8.4.27) - postcss-load-config: 4.0.1(postcss@8.4.27) - postcss-nested: 6.0.1(postcss@8.4.27) + postcss: 8.4.29 + postcss-import: 15.1.0(postcss@8.4.29) + postcss-js: 4.0.1(postcss@8.4.29) + postcss-load-config: 4.0.1(postcss@8.4.29) + postcss-nested: 6.0.1(postcss@8.4.29) postcss-selector-parser: 6.0.13 - resolve: 1.22.3 + resolve: 1.22.4 sucrase: 3.34.0 transitivePeerDependencies: - ts-node @@ -15808,8 +15883,8 @@ packages: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} - /tar@6.1.15: - resolution: {integrity: sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A==} + /tar@6.2.0: + resolution: {integrity: sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==} engines: {node: '>=10'} dependencies: chownr: 2.0.0 @@ -15818,7 +15893,7 @@ packages: minizlib: 2.1.2 mkdirp: 1.0.4 yallist: 4.0.0 - dev: true + dev: false /terser-webpack-plugin@5.3.9(esbuild@0.18.4)(webpack@5.83.1): resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==} @@ -15874,11 +15949,30 @@ packages: resolution: {integrity: sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==} dependencies: real-require: 0.1.0 + dev: false /thunky@1.1.0: resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} dev: false + /tiged@2.12.5: + resolution: {integrity: sha512-divl34KaEXBUO8N2m5UcMdQZjqLZRzEq+ychP5bNYSGF0JQq1j6m4uF7WuQOCRomlBeu5vJfjkXtyYumijX+bA==} + engines: {node: '>=8.0.0'} + hasBin: true + dependencies: + colorette: 1.2.1 + enquirer: 2.3.6 + fs-extra: 10.1.0 + fuzzysearch: 1.0.3 + https-proxy-agent: 5.0.0 + mri: 1.1.6 + rimraf: 3.0.2 + tar: 6.2.0 + tiny-glob: 0.2.8 + transitivePeerDependencies: + - supports-color + dev: false + /timers-browserify@2.0.12: resolution: {integrity: sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==} engines: {node: '>=0.6.0'} @@ -15886,6 +15980,13 @@ packages: setimmediate: 1.0.5 dev: true + /tiny-glob@0.2.8: + resolution: {integrity: sha512-vkQP7qOslq63XRX9kMswlby99kyO5OvKptw7AMwBVMjXEI7Tb61eoI5DydyEMOseyGS5anDN1VPoVxEvH01q8w==} + dependencies: + globalyzer: 0.1.0 + globrex: 0.1.2 + dev: false + /tiny-invariant@1.3.1: resolution: {integrity: sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==} dev: false @@ -15899,7 +16000,7 @@ packages: bn.js: 4.12.0 create-hmac: 1.1.7 elliptic: 6.5.4 - nan: 2.17.0 + nan: 2.18.0 dev: false /tiny-warning@1.0.3: @@ -15968,13 +16069,13 @@ packages: resolution: {integrity: sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==} dev: false - /ts-api-utils@1.0.1(typescript@5.1.3): - resolution: {integrity: sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A==} + /ts-api-utils@1.0.2(typescript@5.2.2): + resolution: {integrity: sha512-Cbu4nIqnEdd+THNEsBdkolnOXhg0I8XteoHaEKgvsxpsbWda4IsUut2c187HxywQCvveojow0Dgw/amxtSKVkQ==} engines: {node: '>=16.13.0'} peerDependencies: typescript: '>=4.2.0' dependencies: - typescript: 5.1.3 + typescript: 5.2.2 dev: true /ts-interface-checker@0.1.13: @@ -16004,9 +16105,13 @@ packages: /tslib@2.5.3: resolution: {integrity: sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==} + dev: false - /tsup@7.0.0(postcss@8.4.27)(typescript@5.1.3): - resolution: {integrity: sha512-yYARDRkPq07mO3YUXTvF12ISwWQG57Odve8aFEgLdHyeGungxuKxb19yf9G0W8y59SZFkLnRj1gkoVk1gd5fbQ==} + /tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + + /tsup@7.2.0(postcss@8.4.29)(typescript@5.2.2): + resolution: {integrity: sha512-vDHlczXbgUvY3rWvqFEbSqmC1L7woozbzngMqTtL2PGBODTtWlRwGDDawhvWzr5c1QjKe4OAKqJGfE1xeXUvtQ==} engines: {node: '>=16.14'} hasBin: true peerDependencies: @@ -16029,20 +16134,20 @@ packages: execa: 5.1.1 globby: 11.1.0 joycon: 3.1.1 - postcss: 8.4.27 - postcss-load-config: 4.0.1(postcss@8.4.27) + postcss: 8.4.29 + postcss-load-config: 4.0.1(postcss@8.4.29) resolve-from: 5.0.0 rollup: 3.25.1 source-map: 0.8.0-beta.0 sucrase: 3.32.0 tree-kill: 1.2.2 - typescript: 5.1.3 + typescript: 5.2.2 transitivePeerDependencies: - supports-color - ts-node dev: true - /tsutils@3.21.0(typescript@5.1.3): + /tsutils@3.21.0(typescript@5.2.2): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} requiresBuild: true @@ -16050,7 +16155,7 @@ packages: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' dependencies: tslib: 1.14.1 - typescript: 5.1.3 + typescript: 5.2.2 dev: true optional: true @@ -16058,65 +16163,64 @@ packages: resolution: {integrity: sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==} dev: true - /turbo-darwin-64@1.10.3: - resolution: {integrity: sha512-IIB9IomJGyD3EdpSscm7Ip1xVWtYb7D0x7oH3vad3gjFcjHJzDz9xZ/iw/qItFEW+wGFcLSRPd+1BNnuLM8AsA==} + /turbo-darwin-64@1.10.13: + resolution: {integrity: sha512-vmngGfa2dlYvX7UFVncsNDMuT4X2KPyPJ2Jj+xvf5nvQnZR/3IeDEGleGVuMi/hRzdinoxwXqgk9flEmAYp0Xw==} cpu: [x64] os: [darwin] requiresBuild: true dev: true optional: true - /turbo-darwin-arm64@1.10.3: - resolution: {integrity: sha512-SBNmOZU9YEB0eyNIxeeQ+Wi0Ufd+nprEVp41rgUSRXEIpXjsDjyBnKnF+sQQj3+FLb4yyi/yZQckB+55qXWEsw==} + /turbo-darwin-arm64@1.10.13: + resolution: {integrity: sha512-eMoJC+k7gIS4i2qL6rKmrIQGP6Wr9nN4odzzgHFngLTMimok2cGLK3qbJs5O5F/XAtEeRAmuxeRnzQwTl/iuAw==} cpu: [arm64] os: [darwin] requiresBuild: true dev: true optional: true - /turbo-linux-64@1.10.3: - resolution: {integrity: sha512-kvAisGKE7xHJdyMxZLvg53zvHxjqPK1UVj4757PQqtx9dnjYHSc8epmivE6niPgDHon5YqImzArCjVZJYpIGHQ==} + /turbo-linux-64@1.10.13: + resolution: {integrity: sha512-0CyYmnKTs6kcx7+JRH3nPEqCnzWduM0hj8GP/aodhaIkLNSAGAa+RiYZz6C7IXN+xUVh5rrWTnU2f1SkIy7Gdg==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /turbo-linux-arm64@1.10.3: - resolution: {integrity: sha512-Qgaqln0IYRgyL0SowJOi+PNxejv1I2xhzXOI+D+z4YHbgSx87ox1IsALYBlK8VRVYY8VCXl+PN12r1ioV09j7A==} + /turbo-linux-arm64@1.10.13: + resolution: {integrity: sha512-0iBKviSGQQlh2OjZgBsGjkPXoxvRIxrrLLbLObwJo3sOjIH0loGmVIimGS5E323soMfi/o+sidjk2wU1kFfD7Q==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /turbo-windows-64@1.10.3: - resolution: {integrity: sha512-rbH9wManURNN8mBnN/ZdkpUuTvyVVEMiUwFUX4GVE5qmV15iHtZfDLUSGGCP2UFBazHcpNHG1OJzgc55GFFrUw==} + /turbo-windows-64@1.10.13: + resolution: {integrity: sha512-S5XySRfW2AmnTeY1IT+Jdr6Goq7mxWganVFfrmqU+qqq3Om/nr0GkcUX+KTIo9mPrN0D3p5QViBRzulwB5iuUQ==} cpu: [x64] os: [win32] requiresBuild: true dev: true optional: true - /turbo-windows-arm64@1.10.3: - resolution: {integrity: sha512-ThlkqxhcGZX39CaTjsHqJnqVe+WImjX13pmjnpChz6q5HHbeRxaJSFzgrHIOt0sUUVx90W/WrNRyoIt/aafniw==} + /turbo-windows-arm64@1.10.13: + resolution: {integrity: sha512-nKol6+CyiExJIuoIc3exUQPIBjP9nIq5SkMJgJuxsot2hkgGrafAg/izVDRDrRduQcXj2s8LdtxJHvvnbI8hEQ==} cpu: [arm64] os: [win32] requiresBuild: true dev: true optional: true - /turbo@1.10.3: - resolution: {integrity: sha512-U4gKCWcKgLcCjQd4Pl8KJdfEKumpyWbzRu75A6FCj6Ctea1PIm58W6Ltw1QXKqHrl2pF9e1raAskf/h6dlrPCA==} + /turbo@1.10.13: + resolution: {integrity: sha512-vOF5IPytgQPIsgGtT0n2uGZizR2N3kKuPIn4b5p5DdeLoI0BV7uNiydT7eSzdkPRpdXNnO8UwS658VaI4+YSzQ==} hasBin: true - requiresBuild: true optionalDependencies: - turbo-darwin-64: 1.10.3 - turbo-darwin-arm64: 1.10.3 - turbo-linux-64: 1.10.3 - turbo-linux-arm64: 1.10.3 - turbo-windows-64: 1.10.3 - turbo-windows-arm64: 1.10.3 + turbo-darwin-64: 1.10.13 + turbo-darwin-arm64: 1.10.13 + turbo-linux-64: 1.10.13 + turbo-linux-arm64: 1.10.13 + turbo-windows-64: 1.10.13 + turbo-windows-arm64: 1.10.13 dev: true /type-check@0.4.0: @@ -16152,12 +16256,42 @@ packages: mime-types: 2.1.35 dev: false + /typed-array-buffer@1.0.0: + resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + is-typed-array: 1.1.12 + dev: true + + /typed-array-byte-length@1.0.0: + resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + for-each: 0.3.3 + has-proto: 1.0.1 + is-typed-array: 1.1.12 + dev: true + + /typed-array-byte-offset@1.0.0: + resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + for-each: 0.3.3 + has-proto: 1.0.1 + is-typed-array: 1.1.12 + dev: true + /typed-array-length@1.0.4: resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} dependencies: call-bind: 1.0.2 for-each: 0.3.3 - is-typed-array: 1.1.10 + is-typed-array: 1.1.12 dev: true /typedarray-to-buffer@3.1.5: @@ -16170,8 +16304,8 @@ packages: resolution: {integrity: sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g==} dev: false - /typescript@5.1.3: - resolution: {integrity: sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==} + /typescript@5.2.2: + resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} engines: {node: '>=14.17'} hasBin: true @@ -16319,6 +16453,16 @@ packages: engines: {node: '>=8'} dev: true + /update-browserslist-db@1.0.11(browserslist@4.21.10): + resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.21.10 + escalade: 3.1.1 + picocolors: 1.0.0 + /update-browserslist-db@1.0.11(browserslist@4.21.5): resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} hasBin: true @@ -16338,6 +16482,7 @@ packages: browserslist: 4.21.9 escalade: 3.1.1 picocolors: 1.0.0 + dev: false /update-notifier@5.1.0: resolution: {integrity: sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==} @@ -16395,7 +16540,7 @@ packages: qs: 6.11.0 dev: true - /use-callback-ref@1.3.0(@types/react@18.2.12)(react@18.2.0): + /use-callback-ref@1.3.0(@types/react@18.2.21)(react@18.2.0): resolution: {integrity: sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==} engines: {node: '>=10'} peerDependencies: @@ -16405,20 +16550,20 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.12 + '@types/react': 18.2.21 react: 18.2.0 - tslib: 2.5.3 + tslib: 2.6.2 dev: false - /use-composed-ref@1.3.0(react@17.0.0): + /use-composed-ref@1.3.0(react@17.0.2): resolution: {integrity: sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - react: 17.0.0 + react: 17.0.2 dev: false - /use-isomorphic-layout-effect@1.1.2(react@17.0.0): + /use-isomorphic-layout-effect@1.1.2(react@17.0.2): resolution: {integrity: sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==} peerDependencies: '@types/react': '*' @@ -16427,10 +16572,10 @@ packages: '@types/react': optional: true dependencies: - react: 17.0.0 + react: 17.0.2 dev: false - /use-latest@1.2.1(react@17.0.0): + /use-latest@1.2.1(react@17.0.2): resolution: {integrity: sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==} peerDependencies: '@types/react': '*' @@ -16439,11 +16584,11 @@ packages: '@types/react': optional: true dependencies: - react: 17.0.0 - use-isomorphic-layout-effect: 1.1.2(react@17.0.0) + react: 17.0.2 + use-isomorphic-layout-effect: 1.1.2(react@17.0.2) dev: false - /use-sidecar@1.1.2(@types/react@18.2.12)(react@18.2.0): + /use-sidecar@1.1.2(@types/react@18.2.21)(react@18.2.0): resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} engines: {node: '>=10'} peerDependencies: @@ -16453,18 +16598,18 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.12 + '@types/react': 18.2.21 detect-node-es: 1.1.0 react: 18.2.0 - tslib: 2.5.3 + tslib: 2.6.2 dev: false - /use-sync-external-store@1.2.0(react@17.0.0): + /use-sync-external-store@1.2.0(react@17.0.2): resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - react: 17.0.0 + react: 17.0.2 dev: false /use-sync-external-store@1.2.0(react@18.2.0): @@ -16513,13 +16658,6 @@ packages: spdx-expression-parse: 3.0.1 dev: true - /validate-npm-package-name@5.0.0: - resolution: {integrity: sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - builtins: 5.0.1 - dev: true - /valtio@1.10.5(react@18.2.0): resolution: {integrity: sha512-jTp0k63VXf4r5hPoaC6a6LCG4POkVSh629WLi1+d5PlajLsbynTMd7qAgEiOSPxzoX5iNvbN7iZ/k/g29wrNiQ==} engines: {node: '>=12.20.0'} @@ -16563,7 +16701,7 @@ packages: vfile-message: 2.0.4 dev: false - /vite-plugin-node-stdlib-browser@0.2.1(node-stdlib-browser@1.2.0)(vite@4.3.9): + /vite-plugin-node-stdlib-browser@0.2.1(node-stdlib-browser@1.2.0)(vite@4.4.9): resolution: {integrity: sha512-6u2i613Dkqj5KaTNIrnZvE6y3/awWAp0S5TjucTvGxdhetftB1Mgvblc+nwYzlw6sntPlac8UOC7ttXNh+LZKA==} peerDependencies: node-stdlib-browser: ^1.2.0 @@ -16571,18 +16709,19 @@ packages: dependencies: '@rollup/plugin-inject': 5.0.3 node-stdlib-browser: 1.2.0 - vite: 4.3.9 + vite: 4.4.9(@types/node@18.17.15) transitivePeerDependencies: - rollup dev: true - /vite@4.3.9: - resolution: {integrity: sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==} + /vite@4.4.9(@types/node@18.17.15): + resolution: {integrity: sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: '@types/node': '>= 14' less: '*' + lightningcss: ^1.21.0 sass: '*' stylus: '*' sugarss: '*' @@ -16592,6 +16731,8 @@ packages: optional: true less: optional: true + lightningcss: + optional: true sass: optional: true stylus: @@ -16601,17 +16742,34 @@ packages: terser: optional: true dependencies: - esbuild: 0.17.19 - postcss: 8.4.24 - rollup: 3.25.1 + '@types/node': 18.17.15 + esbuild: 0.18.20 + postcss: 8.4.29 + rollup: 3.29.0 optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 dev: true /vm-browserify@1.1.2: resolution: {integrity: sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==} dev: true + /wadesta@0.0.5(long@4.0.0): + resolution: {integrity: sha512-nhwUb/dDUqwI8I4f8N5/5V78aZx5YRoC0+mnu14KKG+1B/HevCa0PcRhM1tLZz4R5ZQ2J900FPlSSIcjSa2GaA==} + hasBin: true + peerDependencies: + long: '*' + peerDependenciesMeta: + long: + optional: true + dependencies: + '@graz-sh/types': 0.0.4(long@4.0.0) + degit: /tiged@2.12.5 + long: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: false + /wait-on@6.0.1: resolution: {integrity: sha512-zht+KASY3usTY5u2LgaNqn/Cd8MukxLGjdcZxT2ns5QzDmTFc4XoWBgC+C/na+sMRZTuVygQoMYwdcVjHnYIVw==} engines: {node: '>=10.0.0'} @@ -16842,10 +17000,48 @@ packages: is-symbol: 1.0.4 dev: true + /which-builtin-type@1.1.3: + resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} + engines: {node: '>= 0.4'} + dependencies: + function.prototype.name: 1.1.6 + has-tostringtag: 1.0.0 + is-async-function: 2.0.0 + is-date-object: 1.0.5 + is-finalizationregistry: 1.0.2 + is-generator-function: 1.0.10 + is-regex: 1.1.4 + is-weakref: 1.0.2 + isarray: 2.0.5 + which-boxed-primitive: 1.0.2 + which-collection: 1.0.1 + which-typed-array: 1.1.11 + dev: true + + /which-collection@1.0.1: + resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} + dependencies: + is-map: 2.0.2 + is-set: 2.0.2 + is-weakmap: 2.0.1 + is-weakset: 2.0.2 + dev: true + /which-module@2.0.1: resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} dev: false + /which-typed-array@1.1.11: + resolution: {integrity: sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.0 + dev: true + /which-typed-array@1.1.9: resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==} engines: {node: '>= 0.4'} @@ -16911,6 +17107,7 @@ packages: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 + dev: false /wrap-ansi@8.1.0: resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} @@ -16918,7 +17115,8 @@ packages: dependencies: ansi-styles: 6.2.1 string-width: 5.1.2 - strip-ansi: 7.0.1 + strip-ansi: 7.1.0 + dev: false /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} @@ -17034,18 +17232,22 @@ packages: resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==} dev: false - /zustand@4.3.8(react@18.2.0): - resolution: {integrity: sha512-4h28KCkHg5ii/wcFFJ5Fp+k1J3gJoasaIbppdgZFO4BPJnsNxL0mQXBSFgOgAdCdBj35aDTPvdAJReTMntFPGg==} + /zustand@4.4.1(@types/react@18.2.21)(react@18.2.0): + resolution: {integrity: sha512-QCPfstAS4EBiTQzlaGP1gmorkh/UL1Leaj2tdj+zZCZ/9bm0WS7sI2wnfD5lpOszFqWJ1DcPnGoY8RDL61uokw==} engines: {node: '>=12.7.0'} peerDependencies: + '@types/react': '>=16.8' immer: '>=9.0' react: '>=16.8' peerDependenciesMeta: + '@types/react': + optional: true immer: optional: true react: optional: true dependencies: + '@types/react': 18.2.21 react: 18.2.0 use-sync-external-store: 1.2.0(react@18.2.0) dev: false