diff --git a/.gitignore b/.gitignore index a547bf3..823fe07 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,5 @@ dist-ssr *.njsproj *.sln *.sw? + + diff --git a/admin1_signedTx.json b/admin1_signedTx.json new file mode 100644 index 0000000..40faf88 --- /dev/null +++ b/admin1_signedTx.json @@ -0,0 +1 @@ +{"signatures":[{"public_key":{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"Al8/oZlzNJaFewLagIFGalV4wgXCfP5lKBoTnl1ncsBc"},"data":{"single":{"mode":"SIGN_MODE_LEGACY_AMINO_JSON","signature":"fnUyDI8qRoQZT2CoOMYvB/CzKHXMPBqti7/Wx3LgwY4mSmMHacSJ5pxFDjwHaJyEk8VP16o3K2gWums+SHJ5WQ=="}},"sequence":"0"}]} diff --git a/admin2_signedTx.json b/admin2_signedTx.json new file mode 100644 index 0000000..cba9ee0 --- /dev/null +++ b/admin2_signedTx.json @@ -0,0 +1 @@ +{"signatures":[{"public_key":{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"A6rntd4h/aCLDqfiIK85cnxF4kTihe/Muzg64JFQgj+q"},"data":{"single":{"mode":"SIGN_MODE_LEGACY_AMINO_JSON","signature":"3yl8YThZ7Q3O0+1h7lKXrTbV/EjNS59U64lpMVud5Uht86GpV5wWIUn5wPybTwXnfAKHz3Lt/8Fm1OXyjqxMBg=="}},"sequence":"0"}]} diff --git a/index.html b/index.html index 8671966..39ebef9 100644 --- a/index.html +++ b/index.html @@ -8,6 +8,11 @@
+ diff --git a/package.json b/package.json index 1e61827..dd29388 100644 --- a/package.json +++ b/package.json @@ -9,27 +9,36 @@ "preview": "vite preview" }, "dependencies": { - "@sei-js/core": "^3.1.0", + "@esbuild-plugins/node-globals-polyfill": "^0.2.3", + "@react-icons/all-files": "^4.1.0", + "@sei-js/core": "^3.2.1", "@sei-js/proto": "^3.1.0", - "@sei-js/react": "^3.1.0", + "@sei-js/react": "^3.2.0", "classnames": "^2.3.2", "crypto-browserify": "^3.12.0", + "papaparse": "^5.4.1", "react": "^18.2.0", - "react-code-blocks": "^0.1.4", + "react-code-blocks": "0.1.4", "react-dom": "^18.2.0", "react-dropdown": "^1.11.0", "react-icons": "^4.6.0", "react-json-view": "^1.21.3", + "react-modern-drawer": "^1.2.2", + "react-router-dom": "^6.22.1", "react-toastify": "^9.1.1", "recoil": "^0.7.6", "sass": "^1.63.6" }, "devDependencies": { + "@types/papaparse": "^5.3.14", "@types/react": "^18.0.22", "@types/react-dom": "^18.0.7", "@vitejs/plugin-react": "^2.2.0", + "autoprefixer": "^10.4.17", "dotenv": "^16.3.1", + "postcss": "^8.4.35", "prettier": "^3.0.3", + "tailwindcss": "^3.4.1", "typescript": "^4.6.4", "vite": "^4.4.11" } diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..2e7af2b --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/signedTx.json b/signedTx.json new file mode 100644 index 0000000..c8126ae --- /dev/null +++ b/signedTx.json @@ -0,0 +1 @@ +{"body":{"messages":[{"@type":"/cosmos.bank.v1beta1.MsgSend","from_address":"sei18ec4x56fc74rnxgv34mj8uua6dtsxy5dlvfemt","to_address":"sei1vpdckf2ws78glqu38pfdggvd0j65ynfn2z3yte","amount":[{"denom":"usei","amount":"10"}]}],"memo":"","timeout_height":"0","extension_options":[],"non_critical_extension_options":[]},"auth_info":{"signer_infos":[{"public_key":{"@type":"/cosmos.crypto.multisig.LegacyAminoPubKey","threshold":2,"public_keys":[{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"A6rntd4h/aCLDqfiIK85cnxF4kTihe/Muzg64JFQgj+q"},{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"Al8/oZlzNJaFewLagIFGalV4wgXCfP5lKBoTnl1ncsBc"}]},"mode_info":{"multi":{"bitarray":{"extra_bits_stored":2,"elems":"wA=="},"mode_infos":[{"single":{"mode":"SIGN_MODE_LEGACY_AMINO_JSON"}},{"single":{"mode":"SIGN_MODE_LEGACY_AMINO_JSON"}}]}},"sequence":"0"}],"fee":{"amount":[{"denom":"usei","amount":"100000"}],"gas_limit":"200000","payer":"","granter":""}},"signatures":["CkDfKXxhOFntDc7T7WHuUpetNtX8SM1Ln1TriWkxW53lSG3zoalXnBYhSfnA/JtPBed8AofPcu3/wWbU5fKOrEwGCkB+dTIMjypGhBlPYKg4xi8H8LModcw8Gq2Lv9bHcuDBjiZKYwdpxInmnEUOPAdonISTxU/XqjcraBa6az5IcnlZ"]} diff --git a/src/App.css b/src/App.css index 44e5770..be0883f 100644 --- a/src/App.css +++ b/src/App.css @@ -1,30 +1,31 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + html { - width: 100%; - height: 100%; - background-color: var(--background-color); + width: 100%; + height: 100%; + background-color: var(--background-color); } #root { - background-color: var(--white-6); + background-color: var(--white-6); } #root, body { - padding: 0; - margin: 0; - width: 100%; - height: 100%; - max-width: 100%; - max-height: 100%; + flex-direction: column; + padding: 0; + margin: 0; + width: 100%; + height: 100%; + max-width: 100%; + max-height: 100%; } div { - display: flex; - flex-direction: column; -} - -p { - display: flex; + flex-direction: column; + display: flex; } p, @@ -36,52 +37,71 @@ h5, h6, a, div { - color: var(--text-color); - font-family: sans-serif; + color: var(--text-color); + font-family: sans-serif; } input { - color: white; + color: white; } * { - box-sizing: border-box; - padding: 0; - margin: 0; + box-sizing: border-box; + padding: 0; + margin: 0; } :root { - --background-color: #101010; - --text-color: rgba(255, 255, 255, 0.88); - --input-placeholder: #a4a4a4; - --light-grey: #949494; - --dark-grey: #343434; - --red: #ff6666; - --green: #9de187; - --white-1: rgba(239, 239, 239, 0.01); - --white-3: rgba(239, 239, 239, 0.03); - --white-6: rgba(239, 239, 239, 0.06); - --white-12: rgba(239, 239, 239, 0.12); - --white-24: rgba(239, 239, 239, 0.24); - --white-48: rgba(239, 239, 239, 0.48); - --white-80: rgba(239, 239, 239, 0.8); - --white-90: rgba(239, 239, 239, 0.9); - --black-20: rgba(0, 0, 0, 0.2); - --black-60: rgba(0, 0, 0, 0.6); + --background-color: #101010; + --text-color: rgba(255, 255, 255, 0.88); + --input-placeholder: #a4a4a4; + --light-grey: #949494; + --dark-grey: #343434; + --red: #ff6666; + --green: #9de187; + --white-1: rgba(239, 239, 239, 0.01); + --white-3: rgba(239, 239, 239, 0.03); + --white-6: rgba(239, 239, 239, 0.06); + --white-12: rgba(239, 239, 239, 0.12); + --white-24: rgba(239, 239, 239, 0.24); + --white-48: rgba(239, 239, 239, 0.48); + --white-80: rgba(239, 239, 239, 0.8); + --white-90: rgba(239, 239, 239, 0.9); + --black-20: rgba(0, 0, 0, 0.2); + --black-60: rgba(0, 0, 0, 0.6); } .app { - align-items: center; - height: 100%; + flex-direction: column; + align-items: center; + height: 100%; } .appHeader { - flex-direction: row; - justify-content: space-between; - align-items: center; - height: 64px; - background-color: var(--white-12); - width: 100%; - padding: 1rem; + flex-direction: row; + justify-content: space-between; + align-items: center; + height: 64px; + background-color: var(--white-12); + width: 100%; + padding: 1rem; +} + +.Toastify__toast-container .Toastify__toast--success { + background-color: green !important; + color: white !important; } +.Toastify__toast-container .Toastify__toast--error { + background-color: red !important; + color: white !important; +} + +.Toastify__toast-container .Toastify__toast--info { + background-color: white !important; + color: black !important; + + & > div > div { + color: black !important; + } +} diff --git a/src/App.tsx b/src/App.tsx index d95d451..fcbfb73 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,15 +1,14 @@ import './App.css'; import { RecoilRoot } from 'recoil'; -import { ToastContainer } from 'react-toastify'; +import { toast, ToastContainer } from 'react-toastify'; import 'react-dropdown/style.css'; import 'react-toastify/dist/ReactToastify.css'; - import SeiExample from './SeiExample'; function App() { return ( - + ); diff --git a/src/SeiExample.module.sass b/src/SeiExample.module.sass index e513324..7f09049 100644 --- a/src/SeiExample.module.sass +++ b/src/SeiExample.module.sass @@ -8,13 +8,15 @@ width: 140px .appContent + flex-direction: column flex: 1 width: 100% align-items: center gap: 2rem - overflow-y: auto + overflow: auto max-height: 100% + .sidebar flex-direction: column align-items: flex-start diff --git a/src/SeiExample.tsx b/src/SeiExample.tsx index 2e2758b..88f1968 100644 --- a/src/SeiExample.tsx +++ b/src/SeiExample.tsx @@ -1,22 +1,15 @@ import React, { useState } from 'react'; -import { SeiWalletProvider, WalletConnectButton } from '@sei-js/react'; import { useRecoilValue } from 'recoil'; -import { AccountInfo, ChainInfo, DexModule, SendTokens, WasmModule } from './components'; +import { AccountInfo, ChainInfo, DexModule, MultiSig, SendTokens, WasmModule } from './components'; import { selectedChainConfigSelector } from './recoil'; import './common.css'; import styles from './SeiExample.module.sass'; import WalletVerification from './components/WalletVerification/WalletVerification'; -import { - ACCOUNT_ROUTE, - APP_ROUTES, - AppRoute, - CHAIN_INFO_ROUTE, - DEX_MODULE_ROUTE, - WALLET_VERIFICATION_ROUTE, - WASM_MODULE_ROUTE -} from './config'; +import { ACCOUNT_ROUTE, APP_ROUTES, AppRoute, CHAIN_INFO_ROUTE, DEX_MODULE_ROUTE, MULTI_SIG_ROUTE, WALLET_VERIFICATION_ROUTE, WASM_MODULE_ROUTE } from './config'; import cn from 'classnames'; +import { SeiWalletProvider, WalletConnectButton } from '@sei-js/react'; +import { Link, Route, Routes } from 'react-router-dom'; const SeiExample = () => { const selectedChainConfigUrls = useRecoilValue(selectedChainConfigSelector); @@ -26,40 +19,36 @@ const SeiExample = () => { const renderItem = (link: AppRoute) => { const isSelectedItem = link === selectedPage; return ( -

setSelectedPage(link)}>{link.title}

- ) - } + + {link.title} + + ); + }; const renderRoute = () => { - switch(selectedPage) { - case CHAIN_INFO_ROUTE: - return - case WALLET_VERIFICATION_ROUTE: - return - case ACCOUNT_ROUTE: - return - case WASM_MODULE_ROUTE: - return - case DEX_MODULE_ROUTE: - return - } - } + return ( + + } /> + } /> + } /> + } /> + } /> + } /> + + ); + }; return ( - +
-
+

@sei-js playground

-
- {APP_ROUTES.map(renderItem)} -
-
- {renderRoute()} -
+
{APP_ROUTES.map(renderItem)}
+
{renderRoute()}
diff --git a/src/common.css b/src/common.css index 7d4765f..0468c37 100644 --- a/src/common.css +++ b/src/common.css @@ -13,6 +13,7 @@ } .cardContent { + flex-direction: column; width: 100%; gap: 2rem; margin-top: 1rem; @@ -24,6 +25,10 @@ width: 360px; } +.Dropdown-menu { + flex-direction: column; +} + .Dropdown-control { border-radius: 6px; cursor: pointer; diff --git a/src/components/AccountInfo/AccountInfo.tsx b/src/components/AccountInfo/AccountInfo.tsx index 5f9f418..78e7363 100644 --- a/src/components/AccountInfo/AccountInfo.tsx +++ b/src/components/AccountInfo/AccountInfo.tsx @@ -27,18 +27,19 @@ const AccountInfo = () => { return balances as BalanceResponseType[]; } return []; - }; - setIsFetchingBalances(true) - fetchBalances().then((balances) => { - setIsFetchingBalances(false) - setWalletBalances(balances) - }).catch((e) => { - console.error('Error fetching balances', e.message); - toast.error('Error fetching balances'); - return []; - }); + setIsFetchingBalances(true); + fetchBalances() + .then((balances) => { + setIsFetchingBalances(false); + setWalletBalances(balances); + }) + .catch((e) => { + console.error('Error fetching balances', e.message); + toast.error('Error fetching balances'); + return []; + }); }, [queryClient, firstAccount]); const renderBalances = () => { @@ -46,7 +47,7 @@ const AccountInfo = () => { return

Wallet not connected

; } - if(isFetchingBalances) { + if (isFetchingBalances) { return null; } @@ -70,7 +71,6 @@ const AccountInfo = () => { }; const renderContent = () => { - return (
@@ -83,13 +83,10 @@ const AccountInfo = () => { ); }; - return (

Account

-
- {renderContent()} -
+
{renderContent()}
); }; diff --git a/src/components/AccountInfo/styles.css b/src/components/AccountInfo/styles.css index eabcc18..332e344 100644 --- a/src/components/AccountInfo/styles.css +++ b/src/components/AccountInfo/styles.css @@ -1,136 +1,137 @@ .walletConnection { - padding: 24px; - width: fit-content; + padding: 24px; + width: fit-content; } .addressWrapper { - flex-direction: row; - align-items: center; - margin-bottom: 24px; + flex-direction: row; + align-items: center; + margin-bottom: 24px; } .accountAddress { - font-weight: 600; - background-color: var(--white-48); - color: var(--background-color); - width: fit-content; - padding: 6px 12px; - height: 32px; - font-size: 13pt; - border-radius: 24px; - flex: unset; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; + font-weight: 600; + background-color: var(--white-48); + color: var(--background-color); + width: fit-content; + padding: 6px 12px; + height: 32px; + font-size: 13pt; + border-radius: 24px; + flex: unset; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; } .copy { - width: 32px; - height: 32px; - padding: 6px; - margin-left: 12px; - border: var(--white-80) solid 2px; - border-radius: 24px; - cursor: pointer; - transition: 250ms all ease-in-out; + width: 32px; + height: 32px; + padding: 6px; + margin-left: 12px; + border: var(--white-80) solid 2px; + border-radius: 24px; + cursor: pointer; + transition: 250ms all ease-in-out; } .copy:hover { - opacity: 0.6; + opacity: 0.6; } .tokens { - width: 100%; - border-radius: 1rem; - overflow: hidden; - background-color: var(--background-color); - border: var(--white-48) solid 1px; + flex-direction: column; + width: 100%; + border-radius: 1rem; + overflow: hidden; + background-color: var(--background-color); + border: var(--white-48) solid 1px; } .tokenRow { - flex-direction: row; - justify-content: space-between; - align-items: center; - background-color: var(--white-6); + flex-direction: row; + justify-content: space-between; + align-items: center; + background-color: var(--white-6); } .tokenDenom { - flex: 1; - color: white; - padding: 12px; - word-break: break-word; + flex: 1; + color: white; + padding: 12px; + word-break: break-word; } .tokenAmount { - flex: 0; - width: 132px; - min-width: 132px; - color: white; - padding: 12px; - word-break: break-word; + flex: 0; + width: 132px; + min-width: 132px; + color: white; + padding: 12px; + word-break: break-word; } .icon { - width: 40px; - height: 40px; - padding: 6px; - color: white; - cursor: pointer; - transition: 250ms all ease-in-out; + width: 40px; + height: 40px; + padding: 6px; + color: white; + cursor: pointer; + transition: 250ms all ease-in-out; } .icon:hover { - opacity: 0.5; + opacity: 0.5; } .modal { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - background-color: var(--white-48); - justify-content: center; - align-items: center; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: var(--white-48); + justify-content: center; + align-items: center; } .modalCard { - background-color: var(--background-color); - padding: 24px; - border-radius: 12px; - width: 600px; - max-width: 100%; + background-color: var(--background-color); + padding: 24px; + border-radius: 12px; + width: 600px; + max-width: 100%; } .sendButton { - margin-top: 24px; - text-align: center; - color: var(--background-color); - background-color: white; - border-radius: 6px; - padding: 12px; - font-size: 13pt; - font-weight: 600; - cursor: pointer; + margin-top: 24px; + text-align: center; + color: var(--background-color); + background-color: white; + border-radius: 6px; + padding: 12px; + font-size: 13pt; + font-weight: 600; + cursor: pointer; } .sendButton:hover { - opacity: 0.8; + opacity: 0.8; } .sendButton-disabled { - cursor: not-allowed; - user-select: none; - opacity: 0.3; + cursor: not-allowed; + user-select: none; + opacity: 0.3; } .sendButton:hover { - opacity: 0.3; + opacity: 0.3; } @media (max-width: 480px) { - .accountAddress { - flex: 1; - } + .accountAddress { + flex: 1; + } } diff --git a/src/components/BubbleSelect/BubbleSelect.module.sass b/src/components/BubbleSelect/BubbleSelect.module.sass new file mode 100644 index 0000000..a3bf548 --- /dev/null +++ b/src/components/BubbleSelect/BubbleSelect.module.sass @@ -0,0 +1,22 @@ +.bubbleContainer + display: flex + flex-direction: row + gap: 1rem + +.bubble + color: #eee + border: transparent solid 1px + border-radius: 2rem + padding: 0.5rem 1rem + cursor: pointer + font-weight: 800 + transition: background-color 0.1s + + &:hover + background-color: #ddd + color: black + +.selected + background-color: #eee + color: black + border-color: #eee diff --git a/src/components/BubbleSelect/BubbleSelect.tsx b/src/components/BubbleSelect/BubbleSelect.tsx new file mode 100644 index 0000000..6849b3b --- /dev/null +++ b/src/components/BubbleSelect/BubbleSelect.tsx @@ -0,0 +1,21 @@ +import React from 'react'; +import styles from './BubbleSelect.module.sass'; +import { BubbleSelectOption, BubbleSelectProps } from './types'; + +const BubbleSelect = ({ selectedOption, options, onSelect }: BubbleSelectProps) => { + const handleSelect = (option: BubbleSelectOption) => { + onSelect(option); + }; + + return ( +
+ {options.map((option, index) => ( +
handleSelect(option)}> + {option.label} +
+ ))} +
+ ); +}; + +export default BubbleSelect; diff --git a/src/components/BubbleSelect/index.ts b/src/components/BubbleSelect/index.ts new file mode 100644 index 0000000..81c1bc1 --- /dev/null +++ b/src/components/BubbleSelect/index.ts @@ -0,0 +1 @@ +export { default as BubbleSelect } from './BubbleSelect'; diff --git a/src/components/BubbleSelect/types.ts b/src/components/BubbleSelect/types.ts new file mode 100644 index 0000000..296e25e --- /dev/null +++ b/src/components/BubbleSelect/types.ts @@ -0,0 +1,10 @@ +export type BubbleSelectOption = { + label: string; + value: string; +}; + +export type BubbleSelectProps = { + options: BubbleSelectOption[]; + onSelect: (value: BubbleSelectOption) => void; + selectedOption: BubbleSelectOption; +}; diff --git a/src/components/ChainInfo/ChainInfo.module.sass b/src/components/ChainInfo/ChainInfo.module.sass index f117dbf..292433c 100644 --- a/src/components/ChainInfo/ChainInfo.module.sass +++ b/src/components/ChainInfo/ChainInfo.module.sass @@ -1,3 +1,6 @@ +.header + flex-direction: column + .page &Title font-size: 1.25rem diff --git a/src/components/ChainInfo/ChainInfo.tsx b/src/components/ChainInfo/ChainInfo.tsx index be1801f..cd5900f 100644 --- a/src/components/ChainInfo/ChainInfo.tsx +++ b/src/components/ChainInfo/ChainInfo.tsx @@ -28,7 +28,7 @@ const ChainInfo = () => { return (
-
+

Chain configuration

Set up the connection used throughout this app

@@ -41,7 +41,6 @@ const ChainInfo = () => { value={chainConfiguration} placeholder='Select an option' /> -
@@ -77,7 +76,7 @@ const ChainInfo = () => { onChange={(e) => setCustomRpcUrl(e.target.value)} />
- +
); }; diff --git a/src/components/ChainInfo/index.ts b/src/components/ChainInfo/index.ts index 825642c..3140cc5 100644 --- a/src/components/ChainInfo/index.ts +++ b/src/components/ChainInfo/index.ts @@ -1 +1 @@ -export { default as ChainInfo } from './ChainInfo' +export { default as ChainInfo } from './ChainInfo'; diff --git a/src/components/CodeExecute/CodeExecute.module.sass b/src/components/CodeExecute/CodeExecute.module.sass index 1c9efa9..f1ecd67 100644 --- a/src/components/CodeExecute/CodeExecute.module.sass +++ b/src/components/CodeExecute/CodeExecute.module.sass @@ -1,4 +1,5 @@ .body + flex-direction: column overflow: auto max-width: 100% diff --git a/src/components/CodeExecute/CodeExecute.tsx b/src/components/CodeExecute/CodeExecute.tsx index 1d8e0ce..da70c33 100644 --- a/src/components/CodeExecute/CodeExecute.tsx +++ b/src/components/CodeExecute/CodeExecute.tsx @@ -1,7 +1,9 @@ import { CodeExecuteProps } from './types'; import styles from './CodeExecute.module.sass'; import { androidstudio, anOldHope, CodeBlock, CopyBlock } from 'react-code-blocks'; -import { AiFillCaretDown, AiFillCaretUp, AiFillPlayCircle } from 'react-icons/all'; +import { AiFillPlayCircle } from '@react-icons/all-files/ai/AiFillPlayCircle'; +import { AiFillCaretDown } from '@react-icons/all-files/ai/AiFillCaretDown'; +import { AiFillCaretUp } from '@react-icons/all-files/ai/AiFillCaretUp'; import cn from 'classnames'; import React, { useState } from 'react'; import { CopyBlockProps } from 'react-code-blocks/src/components/CopyBlock'; @@ -14,12 +16,11 @@ const CodeExecute = ({ title, text, onClickExecute, response, error }: CodeExecu const language = 'typescript'; - const copyCodeProps: CopyBlockProps= { + const copyCodeProps: CopyBlockProps = { text: text.trim(), language, showLineNumbers: false, startingLineNumber: 0, - wrapLines: true, theme: anOldHope, codeBlock: false, copied: false, @@ -28,15 +29,14 @@ const CodeExecute = ({ title, text, onClickExecute, response, error }: CodeExecu }; const renderExecute = () => { - if(!onClickExecute) return null; + if (!onClickExecute) return null; const responseText = JSON.stringify(response, null, 2); - const copyBlockResponseProps: CopyBlockProps= { + const copyBlockResponseProps: CopyBlockProps = { text: responseText, language, showLineNumbers: false, startingLineNumber: 0, - wrapLines: true, theme: anOldHope, codeBlock: true, copied: false, @@ -45,48 +45,50 @@ const CodeExecute = ({ title, text, onClickExecute, response, error }: CodeExecu }; const renderExecuteResponse = () => { - if(!response && !error) return null; + if (!response && !error) return null; return (
setIsExpanded(!isExpanded)}> - {isExpanded ? : } - {success ? "Success" : "Error"} + {isExpanded ? : } + {success ? 'Success' : 'Error'}
- ) - } + ); + }; return (
{renderExecuteResponse()}
- { - isExpanded && ( - <> - {success && ( -
- -
- )} - {error &&
} - - ) - } + {isExpanded && ( + <> + {success && ( +
+ +
+ )} + {error && ( +
+ +
+ )} + + )}
- ) - } + ); + }; return (
- +

{title}

{renderExecute()}
- ) + ); }; export default CodeExecute; diff --git a/src/components/CodeExecute/types.ts b/src/components/CodeExecute/types.ts index ba1daff..022a5b6 100644 --- a/src/components/CodeExecute/types.ts +++ b/src/components/CodeExecute/types.ts @@ -1 +1,7 @@ -export type CodeExecuteProps = { title: string, text: string, onClickExecute?: () => void, response?: any, error?: any }; +export type CodeExecuteProps = { + title: string; + text: string; + onClickExecute?: () => void; + response?: any; + error?: any; +}; diff --git a/src/components/DexModule/DexModule.tsx b/src/components/DexModule/DexModule.tsx index 328e122..84841ba 100644 --- a/src/components/DexModule/DexModule.tsx +++ b/src/components/DexModule/DexModule.tsx @@ -21,7 +21,7 @@ const DexModule = () => { case 'getOrders': const getOrdersQuery = { contractAddr: contractAddress, - account: accounts[0].address, + account: accounts[0].address }; setResponse(await queryClient.seiprotocol.seichain.dex.getOrders(getOrdersQuery)); return; @@ -46,7 +46,7 @@ const DexModule = () => { return; } } catch (e: any) { - setResponse({ error: e.message }) + setResponse({ error: e.message }); } }, [queryClient, queryType]); @@ -54,33 +54,33 @@ const DexModule = () => { queryContract().then(); }, [queryClient, contractAddress, queryType]); - return
-

Dex module

-
-
-

contract address:

- setContractAddress(e.target.value)} + return ( +
+

Dex module

+
+
+

contract address:

+ setContractAddress(e.target.value)} + /> +
+ setQueryType(dropdown.value as any)} + value={queryType} + placeholder='Select a query' /> -
- setQueryType(dropdown.value as any)} - value={queryType} - placeholder='Select a query' - /> -
-
- {response && } +
+
{response && }
-
; + ); }; export default DexModule; diff --git a/src/components/DexModule/styles.css b/src/components/DexModule/styles.css index b54b2dc..3b70b0f 100644 --- a/src/components/DexModule/styles.css +++ b/src/components/DexModule/styles.css @@ -6,8 +6,9 @@ } .marketSummary--item { + flex-direction: column; border-radius: 0.5rem; width: 100%; max-height: 480px; - overflow: auto ; + overflow: auto; } diff --git a/src/components/MultiSig/MultiSig.module.sass b/src/components/MultiSig/MultiSig.module.sass new file mode 100644 index 0000000..ce6eb9f --- /dev/null +++ b/src/components/MultiSig/MultiSig.module.sass @@ -0,0 +1,235 @@ +.content + flex-direction: column + width: 100% + padding: 2rem + gap: 2rem + min-width: 720px + overflow: auto + +.button + display: flex + flex-direction: row + align-items: center + gap: 10px + background-color: #444 + color: #fff + font-weight: 600 + border: 1px solid #666 + padding: 10px 20px + border-radius: 5px + font-size: 16px + cursor: pointer + transition: background-color 0.3s, box-shadow 0.3s + text-align: center + user-select: none + + &:hover + background-color: #555 + + &:focus + outline: none + box-shadow: 0 0 8px rgba(255, 255, 255, 0.6) + + &:active + background-color: #333 + + &:disabled + background-color: #333 + color: #aaa + border-color: #444 + cursor: not-allowed + box-shadow: none + +.buttonReady + background-color: #f1f1f1 + color: #121212 + +.input + background-color: #333 + color: #fff + border: 1px solid #555 + padding: 10px 15px + border-radius: 5px + font-size: 16px + transition: border-color 0.3s, box-shadow 0.3s + + &::placeholder + color: #aaa + + &:focus + outline: none + border-color: #fff + box-shadow: 0 0 8px rgba(255, 255, 255, 0.6) + + &:active + color: #fff + + &.error + border-color: red + + &::placeholder + color: red + +.card + gap: 2rem + background-color: #2a2a2a + color: #fff + border-radius: 8px + padding: 20px + border: solid 1px #f1f1f111 + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2) + margin-bottom: 20px + transition: box-shadow 0.3s + max-width: 1000px + +.cardHeader + font-size: 1.5rem + font-weight: bold + +.cardTip + flex-direction: row + align-items: center + background-color: #f1f1f122 + border-radius: 0.25rem + padding: 1rem + gap: 1rem + font-size: 1rem + font-weight: 600 + white-space: pre-line + margin: 1rem + +.tipBulb + width: 3rem + height: 3rem + +.tipText + font-size: 1.25rem + +.row + display: flex + flex-direction: row + align-items: center + gap: 1rem + width: 100% + +.signaturesList + gap: 1rem + +.signatureItem + display: flex + flex-direction: row + align-items: center + font-size: 14px + border: #f1f1f188 solid 2px + padding: 1rem + gap: 1rem + border-radius: 1rem + + p + font-size: 1.25rem + + .copyButton + display: inline-flex + align-items: center + background-color: #f1f1f1 + color: black + padding: 0.5rem 1rem + border-radius: 0.5rem + border: none + cursor: pointer + margin-left: auto + font-size: 1rem + gap: 0.5rem + + &:hover + background-color: #f1f1f188 + +.addSignature + display: flex + flex-direction: row + padding: 1rem + border: #f1f1f188 solid 2px + border-radius: 1rem + gap: 1rem + + input + flex: 1 + +.recipient + flex-direction: column + gap: 1rem + overflow-y: auto + +.recipientList + flex-direction: column + gap: 0 + overflow-y: auto + +.recipientItem + flex-direction: row + align-items: center + justify-content: space-between + width: 100% + height: 40px + min-height: 40px + border-bottom: #f1f1f111 solid 1px + +.emptySet + padding: 4rem + align-items: center + justify-content: center + +.trash + width: 2rem + height: 2rem + + &:hover + cursor: pointer + color: red + opacity: 0.6 + +.inputWithError + gap: 0.5rem + +.inputErrorText + font-size: 12px + color: red + +.slidePaneContent + gap: 2rem + background-color: #2a2a2a + color: #fff + padding: 20px + margin-bottom: 20px + transition: box-shadow 0.3s + max-width: 640px + overflow-y: hidden + +.multiSigAccountInfoCard + gap: 1.25rem + background-color: #2a2a2a + color: #fff + border-radius: 8px + padding: 20px + border: solid 1px #f1f1f111 + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2) + margin-bottom: 20px + transition: box-shadow 0.3s + max-width: 900px + +.textWithCopyButton + float: left + flex-direction: row + gap: 1rem + margin: 1rem + +.backAndNextSection + flex-direction: row + justify-content: space-between + border-radius: 2px + padding: 20px + border: solid 0.2px #f1f1f111 + text-align: center + +.tipContent + gap: 1rem diff --git a/src/components/MultiSig/MultiSig.tsx b/src/components/MultiSig/MultiSig.tsx new file mode 100644 index 0000000..a611cac --- /dev/null +++ b/src/components/MultiSig/MultiSig.tsx @@ -0,0 +1,108 @@ +import React, { useEffect, useState } from 'react'; +import { MultiSigProps } from './types'; +import styles from './MultiSig.module.sass'; +import { DeliverTxResponse } from '@cosmjs/stargate'; +import { useWallet } from '@sei-js/react'; +import 'react-modern-drawer/dist/index.css'; +import MultiSigLookup from './components/MultiSigLookup/MultiSigLookup'; +import RecipientsPage from './components/RecipientsPage/RecipientsPage'; +import SignaturePage from './components/SignaturePage/SignaturePage'; +import FundAccount from './components/RecipientsPage/FundAccount'; +import { useNavigate } from 'react-router-dom'; +import { + multiSigAccountAtom, + multiSigEncodedSignaturesAtom, + multiSigInputTypeAtom, + multiSigLookupTypeAtom, + multiSigManualAccountsAtom, + multiSigRecipientsAtom, + multiSigTxMemoAtom, + selectedChainConfigAtom +} from '../../recoil'; +import { useRecoilState } from 'recoil'; +import { InputType, LookupType } from './components/MultiSigLookup/config'; + +const MultiSig = ({}: MultiSigProps) => { + const { chainId } = useWallet(); + const navigate = useNavigate(); + + const [multiSigAccount, setMultiSigAccount] = useRecoilState(multiSigAccountAtom); + const [multiSigManualAccounts, setMultiSigManualAccounts] = useRecoilState(multiSigManualAccountsAtom); + const [encodedSignatures, setEncodedSignatures] = useRecoilState(multiSigEncodedSignaturesAtom); + const [multiSendRecipients, setMultiSendRecipients] = useRecoilState(multiSigRecipientsAtom); + const [txMemo, setTxMemo] = useRecoilState(multiSigTxMemoAtom); + const [lookupType, setLookupType] = useRecoilState(multiSigLookupTypeAtom); + const [inputType, setInputType] = useRecoilState(multiSigInputTypeAtom); + const [chainConfiguration, setChainConfiguration] = useRecoilState(selectedChainConfigAtom); + + const [previousSignatures, setPreviousSignatures] = useState([]); + const [broadcastResponse, setBroadcastResponse] = useState(); + + useEffect(() => { + const queryParams = new URLSearchParams(window.location.search); + const data = queryParams.get('data'); + if (data) { + try { + const decodedData = JSON.parse(atob(data)); + console.log('decodedData', decodedData); + setMultiSigAccount(decodedData.multiSigAccount); + setMultiSigManualAccounts(decodedData.multiSigManualAccounts || []); + setEncodedSignatures(decodedData.encodedSignatures || []); + setMultiSendRecipients(decodedData.multiSendRecipients); + setTxMemo(decodedData.txMemo); + + switch (decodedData.chainId) { + case 'atlantic-2': + setChainConfiguration('atlantic-2'); + break; + } + } catch (error) { + console.error('Error parsing transaction data from URL:', error); + } + } + }, [setMultiSigAccount, setMultiSigManualAccounts, setEncodedSignatures, setMultiSendRecipients, setTxMemo]); + + const onClickReset = () => { + setMultiSigAccount(undefined); + setMultiSigManualAccounts([]); + setEncodedSignatures([]); + setMultiSendRecipients([]); + setTxMemo(''); + setBroadcastResponse(undefined); + setPreviousSignatures([]); + setLookupType(LookupType.Select); + setInputType(InputType.Address); + }; + + const renderContent = () => { + if (!multiSigAccount) return ; + if (multiSigAccount.accountNumber === -1) return ; + if (multiSendRecipients.length === 0) return ; + if (!broadcastResponse) return ; + + return ( +
+

Broadcast success!

+ view this transaction on SeiScan +
+ ); + }; + + return ( +
+
+ + +
+ {renderContent()} +
+ ); +}; + +export default MultiSig; diff --git a/src/components/MultiSig/components/MultiSigLookup/MultiSigLookup.tsx b/src/components/MultiSig/components/MultiSigLookup/MultiSigLookup.tsx new file mode 100644 index 0000000..741c31a --- /dev/null +++ b/src/components/MultiSig/components/MultiSigLookup/MultiSigLookup.tsx @@ -0,0 +1,277 @@ +import React, { useState } from 'react'; +import { toast } from 'react-toastify'; +import { Account, StargateClient } from '@cosmjs/stargate'; +import { isValidSeiAddress } from '@sei-js/core'; +import { HiLightBulb } from '@react-icons/all-files/hi/HiLightBulb'; +import { useWallet } from '@sei-js/react'; +import { createMultisigThresholdPubkey, isMultisigThresholdPubkey, pubkeyToAddress, Secp256k1Pubkey } from '@cosmjs/amino'; + +import TableWithDelete from '../Utils/TableWithDelete'; +import { InputType, LookupType } from './config'; +import { MultiSigLookupProps } from './types'; +import styles from '../../MultiSig.module.sass'; +import multiSigLookupStyles from './MultiiSigLookup.module.sass'; +import { useRecoilState } from 'recoil'; +import { + multiSigAccountAddressAtom, + multiSigAccountAtom, + multiSigInputTypeAtom, + multiSigLookupTypeAtom, + multiSigManualAccountsAtom, + multiSigThresholdAtom +} from '../../../../recoil'; + +const MultiSigLookup = ({}: MultiSigLookupProps) => { + const [multiSigAccountAddress, setMultiSigAccountAddress] = useRecoilState(multiSigAccountAddressAtom); + const [multiSigAccount, setMultiSigAccount] = useRecoilState(multiSigAccountAtom); + const [multiSigThreshold, setMultiSigThreshold] = useRecoilState(multiSigThresholdAtom); + const [multiSigManualAccounts, setMultiSigManualAccounts] = useRecoilState(multiSigManualAccountsAtom); + const [lookupType, setLookupType] = useRecoilState(multiSigLookupTypeAtom); + const [inputType, setInputType] = useRecoilState(multiSigInputTypeAtom); + + const [isQueryingMultiSigAccount, setIsQueryingMultiSigAccount] = useState(false); + const [newMultiSigAccountInput, setNewMultiSigAccountInput] = useState(''); + + const { chainId, rpcUrl } = useWallet(); + + const queryMultiSigAccount = async () => { + if (isQueryingMultiSigAccount) return; + + setIsQueryingMultiSigAccount(true); + + const broadcaster = await StargateClient.connect(rpcUrl); + const account = await broadcaster.getAccount(multiSigAccountAddress); + if (!account || !account.pubkey || !isMultisigThresholdPubkey(account.pubkey)) { + toast.info( + `The account address you entered is not a multi-sig account that exists on ${chainId}. Please create a new multi-sig account by entering all the signer addresses and threshold desired.` + ); + setIsQueryingMultiSigAccount(false); + setLookupType(LookupType.Create); + return; + } + + setMultiSigAccount(account); + setIsQueryingMultiSigAccount(false); + }; + + const createMultiSigAccount = async () => { + const pubKeys = multiSigManualAccounts.map((manualAccount) => { + return { + type: 'tendermint/PubKeySecp256k1', + value: manualAccount.pubkey as unknown as string + }; + }); + const multisigPubkey = createMultisigThresholdPubkey(pubKeys, multiSigThreshold); + const multisigAddress = pubkeyToAddress(multisigPubkey, 'sei'); + const account = { + address: multisigAddress, + pubkey: multisigPubkey, + // Account number must be overridden by making querying account on Node once funded. + accountNumber: -1, + sequence: 0 + }; + + setMultiSigAccount(account); + }; + + const renderMultiSigLookup = () => { + return ( +
+

Step 1: Lookup multi-sig account by address

+
+ +

Multi-sig must have signed and broadcast at least one transaction before this tool can be used.

+
+ setMultiSigAccountAddress(e.target.value)} + /> +
+ + +
+
+ ); + }; + + const renderMultiSigCreate = () => { + const getPubkeyFromNode = async (address: string) => { + const client = await StargateClient.connect(rpcUrl); + + try { + const accountOnChain = await client.getAccount(address); + + if (!accountOnChain || !accountOnChain.pubkey) { + toast.error('Account has no pubkey on chain, this address will need to send a transaction to appear on chain.'); + return; + } + + return accountOnChain.pubkey.value; + } catch (e) { + toast.error('Failed to get account.' + e.toString()); + return; + } + }; + + const handleChangeInput = () => { + if (inputType == InputType.Address) { + setInputType(InputType.Pubkey); + } else { + setInputType(InputType.Address); + } + setNewMultiSigAccountInput(''); + }; + + const getInputPlaceholder = () => { + if (inputType == InputType.Address) { + return 'Add wallet address of signer'; + } else { + return 'Add Public Key (Secp256k1) of signer'; + } + }; + + const getInputTypeChangeButtonText = () => { + if (inputType == InputType.Address) { + return 'Advanced: Use PubKey instead of address.'; + } else { + return 'Basic: Use Address instead of PubKey'; + } + }; + + const handleAddAccount = async () => { + // Input is address type + let newAccount = { address: '', pubkey: '' }; + if (inputType == InputType.Address) { + const pubKey = await getPubkeyFromNode(newMultiSigAccountInput); + if (!pubKey) { + return; + } + newAccount = { address: newMultiSigAccountInput, pubkey: pubKey }; + } else { + newAccount.pubkey = newMultiSigAccountInput; + const pubKey: Secp256k1Pubkey = { + value: newMultiSigAccountInput, + type: 'tendermint/PubKeySecp256k1' + }; + newAccount.address = pubkeyToAddress(pubKey, 'sei'); + } + setMultiSigManualAccounts([...multiSigManualAccounts, newAccount as unknown as Account]); + + setNewMultiSigAccountInput(''); + }; + + const handleMultiSigAccountInput = (newInput: string) => { + setNewMultiSigAccountInput(newInput); + if (inputType == InputType.Address) { + if (!isValidSeiAddress(newInput)) { + toast.error('Please input a valid Sei address'); + } + } + if (inputType == InputType.Pubkey) { + if (newInput.length != 44) { + toast.error('Please input a valid Secp256k1 pubkey'); + } + } + }; + + const renderThresholdSection = () => { + if (multiSigManualAccounts.length < 2) { + return ( +
+

At least 2 accounts are required to create a multi-sig account

+
+ ); + } + + return ( +
+

Signatures required to send a transaction

+
+ setMultiSigThreshold(e.target.valueAsNumber || undefined)} + /> +

of

+

{multiSigManualAccounts.length}

+
+

+ This means that each transaction this multisig makes will only require {multiSigThreshold || ''} of the {multiSigManualAccounts.length} members to sign + it for it to be accepted by the validators. +

+
+ ); + }; + + return ( +
+

Step 1: Create multi-sig account

+ {renderThresholdSection()} + +
+

Add a signer

+
+ handleMultiSigAccountInput(e.target.value)} + /> + +

+ {getInputTypeChangeButtonText()} +

+
+
+
+ + +
+
+ ); + }; + + const renderMultiSigSelectAccountComponent = () => { + return ( +
+

Step 1: Select multi-sig account

+
+ +
+
+ +
+
+ ); + }; + + switch (lookupType) { + case LookupType.Lookup: + return renderMultiSigLookup(); + case LookupType.Create: + return renderMultiSigCreate(); + case LookupType.Select: + default: + return renderMultiSigSelectAccountComponent(); + } +}; + +export default MultiSigLookup; diff --git a/src/components/MultiSig/components/MultiSigLookup/MultiiSigLookup.module.sass b/src/components/MultiSig/components/MultiSigLookup/MultiiSigLookup.module.sass new file mode 100644 index 0000000..cc8521b --- /dev/null +++ b/src/components/MultiSig/components/MultiSigLookup/MultiiSigLookup.module.sass @@ -0,0 +1,59 @@ +.changeButton + background-color: #444 + color: red + font-weight: 600 + border: none + padding: 5px 10px + border-radius: 5px + font-size: 12px + cursor: pointer + transition: background-color 0.3s, box-shadow 0.3s + text-align: center + user-select: none + + &:hover + background-color: #555 + + &:focus + outline: none + box-shadow: 0 0 8px rgba(255, 255, 255, 0.6) + +.cardHeader + font-size: 1rem + font-weight: bold + +.thresholdModule + flex-direction: row + float: left + align: center + gap: 1rem + +.thresholdInput + max-width: 100px + background-color: #333 + color: #fff + border: 1px solid #555 + padding: 10px 15px + border-radius: 5px + font-size: 20px + transition: border-color 0.3s, box-shadow 0.3s + + &::placeholder + color: #aaa + + &:focus + outline: none + border-color: #fff + box-shadow: 0 0 8px rgba(255, 255, 255, 0.6) + + &:active + color: #fff + + &.error + border-color: red + + &::placeholder + color: red + +.thresholdText + font-size: 28px diff --git a/src/components/MultiSig/components/MultiSigLookup/config.ts b/src/components/MultiSig/components/MultiSigLookup/config.ts new file mode 100644 index 0000000..ebafddb --- /dev/null +++ b/src/components/MultiSig/components/MultiSigLookup/config.ts @@ -0,0 +1,11 @@ +// The state that determines whether the user is inputting pubkey. +export enum InputType { + Address, + Pubkey +} + +export enum LookupType { + Select, + Lookup, + Create +} diff --git a/src/components/MultiSig/components/MultiSigLookup/types.ts b/src/components/MultiSig/components/MultiSigLookup/types.ts new file mode 100644 index 0000000..757a0e8 --- /dev/null +++ b/src/components/MultiSig/components/MultiSigLookup/types.ts @@ -0,0 +1,3 @@ +export type MultiSigLookupProps = {}; + +export type InputAccount = { pubkey: string; address: string }; diff --git a/src/components/MultiSig/components/RecipientsPage/CSVUpload.tsx b/src/components/MultiSig/components/RecipientsPage/CSVUpload.tsx new file mode 100644 index 0000000..f9cf23c --- /dev/null +++ b/src/components/MultiSig/components/RecipientsPage/CSVUpload.tsx @@ -0,0 +1,56 @@ +import React from 'react'; +import { CSVUploadProps } from './types'; +import Papa from 'papaparse'; +import { toast } from 'react-toastify'; +import addRecipientStyles from './RecipientsPage.module.sass'; +import { FaUpload } from '@react-icons/all-files/fa/FaUpload'; + +const CSVUpload = ({ onParseData }: CSVUploadProps) => { + const handleFileUpload = (e) => { + const file = e.target.files[0]; + + Papa.parse(file, { + header: true, + skipEmptyLines: true, + complete: (result) => { + const isValidFormat = result.meta.fields.includes('Recipient') && result.meta.fields.includes('Amount') && result.meta.fields.includes('Denom'); + const hasMemo = result.meta.fields.includes('Memo'); + + if (!isValidFormat) { + toast.error('Invalid CSV format'); + // Handle invalid format + return; + } + + const formattedData = result.data.map((row) => { + let returnData = { + recipient: row['Recipient'], + denom: row['Denom'], + amount: parseFloat(row['Amount']), + memo: hasMemo ? row['Memo'] : '' + }; + + if (row['Denom'].toLowerCase() === 'sei') { + returnData.amount = returnData.amount * 1000000; + returnData.denom = 'usei'; + } + + return returnData; + }); + + onParseData(formattedData); + } + }); + }; + + return ( +
+ + +
+ ); +}; + +export default CSVUpload; diff --git a/src/components/MultiSig/components/RecipientsPage/FundAccount.tsx b/src/components/MultiSig/components/RecipientsPage/FundAccount.tsx new file mode 100644 index 0000000..0c64cec --- /dev/null +++ b/src/components/MultiSig/components/RecipientsPage/FundAccount.tsx @@ -0,0 +1,250 @@ +import React, { useMemo, useRef, useState } from 'react'; +import { FundAccountProps } from './types'; +import styles from '../../MultiSig.module.sass'; +import recipientPageStyles from './RecipientsPage.module.sass'; +import { toast } from 'react-toastify'; +import { FaCopy } from '@react-icons/all-files/fa/FaCopy'; +import { HiLightBulb } from '@react-icons/all-files/hi/HiLightBulb'; +import { useSigningClient, useWallet, WalletConnectButton } from '@sei-js/react'; +import { calculateFee, StargateClient } from '@cosmjs/stargate'; +import Drawer from 'react-modern-drawer'; +import { Coin } from '@sei-js/proto/dist/types/codegen/cosmos/base/v1beta1/coin'; +import { pubkeyToAddress } from '@cosmjs/amino'; +import { SeiToUsei } from '../Utils/utils'; +import { useRecoilState } from 'recoil'; +import { multiSigAccountAtom } from '../../../../recoil'; +import cn from 'classnames'; +import { SinglePubkey } from '@cosmjs/amino/build/pubkeys'; +import { FaInfoCircle } from '@react-icons/all-files/fa/FaInfoCircle'; + +const FundAccount = ({}: FundAccountProps) => { + const { connectedWallet, accounts, rpcUrl, chainId } = useWallet(); + const { signingClient } = useSigningClient(); + + const infoModal = useRef(null); + + const [multiSigAccount, setMultiSigAccount] = useRecoilState(multiSigAccountAtom); + + const [isQuerying, setIsQuerying] = useState(false); + const [isSending, setIsSending] = useState(false); + const [sendAmount, setSendAmount] = useState(''); + const [sendDenom, setSendDenom] = useState('usei'); + const [isPaneOpen, setIsPaneOpen] = useState(false); + const [holdings, setHoldings] = useState([]); + const walletAccount = useMemo(() => accounts?.[0], [accounts]); + + const renderFundAccount = () => { + const getHoldings = async () => { + const client = await StargateClient.connect(rpcUrl); + const tempHoldings = await client.getAllBalances(multiSigAccount.address); + setHoldings(tempHoldings); + }; + + const copyString = async (s: string) => { + await navigator.clipboard.writeText(s); + toast.info('Copied to clipboard'); + }; + + const sendFunds = async () => { + if (!connectedWallet) { + toast.info('Please connect your wallet first.'); + return; + } + if (!walletAccount || !signingClient || isSending) { + return; + } + const fee = calculateFee(120000, '0.1usei'); + let finalAmount = sendAmount; + let finalDenom = sendDenom; + if (sendDenom.toLowerCase() == 'sei') { + finalDenom = 'usei'; + finalAmount = SeiToUsei(Number(sendAmount)).toString(); + } + const transferAmount = { amount: finalAmount, denom: finalDenom }; + + try { + setIsSending(true); + const sendResponse = await signingClient.sendTokens(walletAccount.address, multiSigAccount.address, [transferAmount], fee); + if (sendResponse.code === 0) { + toast.success('Successfully sent tokens!', { toastId: 'send-success' }); + } else { + toast.error(`Error sending Tokens ${sendResponse.rawLog}`); + setIsSending(false); + return false; + } + setIsSending(false); + return true; + } catch (e: any) { + toast.error(e.message); + setIsSending(false); + return false; + } + }; + + const isValidAmount = (): boolean => { + return !isNaN(Number(sendAmount)) && Number(sendAmount) > 0; + }; + + const handleConfirmAccount = async () => { + if (isQuerying) return; + setIsQuerying(true); + const broadcaster = await StargateClient.connect(rpcUrl); + + const fullAccount = await broadcaster.getAccount(multiSigAccount.address); + if (!fullAccount) { + toast.info(`The account address you entered has not been activated on chain ${chainId}. Please send funds to this account first`); + setIsQuerying(false); + return; + } + setMultiSigAccount({ + address: fullAccount.address, + pubkey: multiSigAccount.pubkey, + accountNumber: fullAccount.accountNumber, + sequence: fullAccount.sequence + }); + }; + + const renderFundAccountForm = () => { + const handleSubmitFundAccountForm = async () => { + let success = await sendFunds(); + if (success) { + setIsPaneOpen(false); + setSendDenom('usei'); + setSendAmount(''); + } + }; + + const renderFundAccountForm = () => { + return ( +
+
Recipient: {multiSigAccount.address}
+
+ + setSendAmount(e.target.value)} + /> +
+ {!isValidAmount() &&
Please enter an amount greater than 0
} +
+ + setSendDenom(e.target.value)} /> +
+ +
+ ); + }; + + return ( + <> + setIsPaneOpen((prevState) => !prevState)} + direction='left' + size='500px'> +

Funds Multisig Account

+ {renderFundAccountForm()} +
+ + ); + }; + + const renderMultiSigInfo = () => { + return ( + +
+ {multiSigAccount.pubkey.value.pubkeys.map((pubkey: SinglePubkey, index: number) => { + const address = pubkeyToAddress(pubkey, 'sei'); + return ( +
+

+ Signer {index} Address: {address} +

+ +

Pubkey: {pubkey.value}

+ +
+ ); + })} +
+
+ ); + }; + + return ( +
+
Step 2: Fund Multisig Account
+
+ +
+

If this is a newly created multisig, you need to activate it by transferring funds to it before it can be used in this tool.

+

+ If you leave this page before sending a transaction, you will need to re-create the account using the UI in step 1 by inputting the signer pubkeys and + threshold value below. +

+
+
+
+
+

MultiSig Address: {multiSigAccount.address}

+ + +
+ {renderMultiSigInfo()} +

+ Threshold: {multiSigAccount.pubkey.value.threshold} of {multiSigAccount.pubkey.value.pubkeys.length} signatures required +

+
+
Funds:
+ {holdings.length + ? holdings.map((coin) => { + return

{coin.amount + ' ' + coin.denom}

; + }) + : 'Refresh to show updated funds'} + +
+
+ {connectedWallet ? ( + + ) : ( + <> +

Connect your wallet to fund this account

+ + + )} + {renderFundAccountForm()} +
+ + +
+
+ ); + }; + + return renderFundAccount(); +}; + +export default FundAccount; diff --git a/src/components/MultiSig/components/RecipientsPage/RecipientsPage.module.sass b/src/components/MultiSig/components/RecipientsPage/RecipientsPage.module.sass new file mode 100644 index 0000000..65de696 --- /dev/null +++ b/src/components/MultiSig/components/RecipientsPage/RecipientsPage.module.sass @@ -0,0 +1,51 @@ +.content + flex-direction: column + +.csvUploadInputContainer + position: relative + background-color: #333 + border: 1px solid #555 + border-radius: 5px + padding: 10px + color: #fff + cursor: pointer + display: inline-block + transition: background-color 0.1s, transform 0.1s + + &:hover + background-color: #3c3c3c + +.csvUploadInputLabel + display: block + text-align: center + padding: 10px 20px + + svg + margin-right: 1rem + +.csvUploadInput + position: absolute + width: 100% + height: 100% + top: 0 + left: 0 + opacity: 0 + cursor: pointer + +.smallButton + background-color: #444 + color: white + padding: 0.5rem 0.5rem + border-radius: 0.5rem + border: none + font-size: 1rem + gap: 0.5rem + cursor: pointer + max-width: 200px + + &:hover + background-color: #f1f1f188 + +.fundText + font-size: 1.5rem + font-weight: bold \ No newline at end of file diff --git a/src/components/MultiSig/components/RecipientsPage/RecipientsPage.tsx b/src/components/MultiSig/components/RecipientsPage/RecipientsPage.tsx new file mode 100644 index 0000000..4928392 --- /dev/null +++ b/src/components/MultiSig/components/RecipientsPage/RecipientsPage.tsx @@ -0,0 +1,145 @@ +import React, { useState } from 'react'; +import { AddRecipientPageProps, RecipientAmount } from './types'; +import styles from '../../MultiSig.module.sass'; +import { isValidSeiAddress } from '@sei-js/core'; +import TableWithDelete from '../Utils/TableWithDelete'; +import { BiSpreadsheet } from '@react-icons/all-files/bi/BiSpreadsheet'; +import CSVUpload from './CSVUpload'; +import Drawer from 'react-modern-drawer'; +import cn from 'classnames'; +import { useRecoilState } from 'recoil'; +import { multiSigAccountAtom, multiSigRecipientsAtom, multiSigTxMemoAtom } from '../../../../recoil'; + +const RecipientsPage = ({}: AddRecipientPageProps) => { + const [multiSendRecipients, setMultiSendRecipients] = useRecoilState(multiSigRecipientsAtom); + const [txMemo, setTxMemo] = useRecoilState(multiSigTxMemoAtom); + const [multiSigAccount, setMultiSigAccount] = useRecoilState(multiSigAccountAtom); + + const [isPaneOpen, setIsPaneOpen] = useState(false); + const [recipientAddress, setRecipientAddress] = useState(''); + const [recipientAmount, setRecipientAmount] = useState(0); + const [recipientDenom, setRecipientDenom] = useState('usei'); + const [tempRecipients, setTempRecipients] = useState([]); + + const renderRecipientsPage = () => { + const renderRecipientList = () => { + if (!tempRecipients || tempRecipients.length === 0) return null; + + return ; + }; + + const renderRecipientContent = () => { + if (tempRecipients.length !== 0) return null; + + return ( + <> +
+ +
+

Upload a CSV file with two columns "Recipient" and "Amount" for all the addresses you would like to send funds to

+

OR

+

Use the 'Add recipient' button below to add recipients manually.

+
+
+ setTempRecipients(csvRecipientAmounts)} /> + + ); + }; + + const renderAddRecipientForm = () => { + const handleSubmitRecipient = () => { + let finalAmount = recipientAmount; + let finalDenom = recipientDenom; + if (recipientDenom.toLowerCase() === 'sei') { + finalDenom = 'usei'; + finalAmount = recipientAmount * 1000000; + } + setTempRecipients([...tempRecipients, { recipient: recipientAddress, amount: finalAmount, denom: finalDenom }]); + setIsPaneOpen(false); + setRecipientAddress(''); + setRecipientAmount(0); + setRecipientDenom('usei'); + }; + + return ( + <> + setIsPaneOpen((prevState) => !prevState)} + direction='right' + size='500px'> +

Add Recipient

+
+
+ + setRecipientAddress(e.target.value)} + /> + {!isValidSeiAddress(recipientAddress) &&
Please enter a valid sei address
} +
+
+ + setRecipientAmount(e.target.valueAsNumber)} + /> + {(isNaN(recipientAmount) || recipientAmount <= 0) &&
Please enter an amount greater than 0
} +
+
+ + setRecipientDenom(e.target.value)} /> +
+ +
+
+ + ); + }; + + return ( +
+
+

Step 3: {tempRecipients.length === 0 ? 'Select' : 'Confirm'} Recipients

+ {renderRecipientContent()} + {renderRecipientList()} + {renderAddRecipientForm()} + +

{'Add transaction memo (optional)'}

+ setTxMemo(e.target.value)} /> +
+ + +
+
+
+ ); + }; + + return renderRecipientsPage(); +}; + +export default RecipientsPage; diff --git a/src/components/MultiSig/components/RecipientsPage/index.ts b/src/components/MultiSig/components/RecipientsPage/index.ts new file mode 100644 index 0000000..2d1a155 --- /dev/null +++ b/src/components/MultiSig/components/RecipientsPage/index.ts @@ -0,0 +1 @@ +export { default as CSVUpload } from './CSVUpload'; diff --git a/src/components/MultiSig/components/RecipientsPage/types.ts b/src/components/MultiSig/components/RecipientsPage/types.ts new file mode 100644 index 0000000..c56752a --- /dev/null +++ b/src/components/MultiSig/components/RecipientsPage/types.ts @@ -0,0 +1,15 @@ +import { Account } from '@cosmjs/stargate'; + +export type RecipientAmount = { + recipient: string; + amount: number; + denom: string; +}; + +export type CSVUploadProps = { + onParseData: (data: RecipientAmount[]) => void; +}; + +export type AddRecipientPageProps = {}; + +export type FundAccountProps = {}; diff --git a/src/components/MultiSig/components/SignaturePage/SignaturePage.tsx b/src/components/MultiSig/components/SignaturePage/SignaturePage.tsx new file mode 100644 index 0000000..fd7f8e5 --- /dev/null +++ b/src/components/MultiSig/components/SignaturePage/SignaturePage.tsx @@ -0,0 +1,239 @@ +import React, { useEffect, useMemo, useState } from 'react'; +import { SignaturePageProps } from './types'; +import styles from '../../MultiSig.module.sass'; +import { toast } from 'react-toastify'; +import { getSigningClient, isValidSeiAddress } from '@sei-js/core'; +import { HiTrash } from '@react-icons/all-files/hi/HiTrash'; +import { FaSignature } from '@react-icons/all-files/fa/FaSignature'; +import { cosmos } from '@sei-js/proto'; +import { isMultisigThresholdPubkey, MultisigThresholdPubkey } from '@cosmjs/amino'; +import { fromBase64, toBase64 } from '@cosmjs/encoding'; +import { calculateFee, makeMultisignedTxBytes, StargateClient } from '@cosmjs/stargate'; +import { useWallet } from '@sei-js/react'; +import cn from 'classnames'; +import { useRecoilState } from 'recoil'; +import { multiSigAccountAtom, multiSigEncodedSignaturesAtom, multiSigManualAccountsAtom, multiSigRecipientsAtom, multiSigTxMemoAtom } from '../../../../recoil'; +import { FaCopy } from '@react-icons/all-files/fa/FaCopy'; + +export const truncateAddress = (address: string) => { + if (!isValidSeiAddress(address)) { + return address; + } + return `${address.slice(0, 6)}....${address.slice(address.length - 6)}`; +}; + +const SignaturePage = ({ setBroadcastResponse }: SignaturePageProps) => { + const { connectedWallet, accounts, chainId, rpcUrl } = useWallet(); + const [isBroadcasting, setIsBroadcasting] = useState(false); + + const [encodedSignatures, setEncodedSignatures] = useRecoilState(multiSigEncodedSignaturesAtom); + const [multiSendRecipients, setMultiSendRecipients] = useRecoilState(multiSigRecipientsAtom); + + const [multiSigAccount, setMultiSigAccount] = useRecoilState(multiSigAccountAtom); + const [txMemo, setTxMemo] = useRecoilState(multiSigTxMemoAtom); + const [multiSigManualAccounts, setMultiSigManualAccounts] = useRecoilState(multiSigManualAccountsAtom); + + useEffect(() => { + if (!connectedWallet) { + return + } + + console.log ("Connected", connectedWallet) + const { windowKey } = connectedWallet?.walletInfo + window[windowKey].defaultOptions = { + sign: { + preferNoSetFee: true, + preferNoSetMemo: true + } + }; + console.log(window) + }, [connectedWallet]) + + const hasRequiredNumberOfSignatures = useMemo(() => { + if (!multiSigAccount) return false; + return parseInt(multiSigAccount.pubkey.value.threshold) === encodedSignatures.length; + }, [multiSigAccount, encodedSignatures]); + + const hasConnectedWalletSigned = useMemo(() => { + if (!connectedWallet) return false; + return !!encodedSignatures.find((signature) => { + const decodedSignature = JSON.parse(atob(signature)); + return decodedSignature.address === accounts[0].address; + }); + }, [connectedWallet, encodedSignatures]); + + const TX_FEE = calculateFee(400000, '0.1usei'); + + const signTransaction = async () => { + if (!connectedWallet) { + toast.info('Please connect your wallet first.'); + return; + } + + console.log(multiSigAccount); + const { multiSend } = cosmos.bank.v1beta1.MessageComposer.withTypeUrl; + + const totalAmountsByDenom = multiSendRecipients.reduce((acc, recipient) => { + if (acc[recipient.denom]) { + acc[recipient.denom] += recipient.amount; + } else { + acc[recipient.denom] = recipient.amount; + } + return acc; + }, {}); + + const inputs = Object.entries(totalAmountsByDenom).map(([denom, amount]) => ({ + address: multiSigAccount.address, + coins: [{ denom, amount: amount.toString() }] + })); + + const outputs = multiSendRecipients.map((recipient) => ({ + address: recipient.recipient, + coins: [{ denom: recipient.denom, amount: recipient.amount.toString() }] + })); + + const multiSendMsg = multiSend({ + inputs: inputs, + outputs: outputs + }); + + const offlineAminoSigner = await connectedWallet.getOfflineSignerAmino(chainId); + const signingClient = await getSigningClient(rpcUrl, offlineAminoSigner); + const multiSigSequence = await signingClient.getSequence(multiSigAccount.address); + + const response = await signingClient.sign(accounts[0].address, [multiSendMsg], TX_FEE, txMemo, { + accountNumber: multiSigSequence.accountNumber || multiSigAccount.accountNumber, + sequence: multiSigSequence.sequence || multiSigAccount.sequence, + chainId + }); + + const signatureObject = { + address: accounts[0].address, + body: toBase64(response.bodyBytes), + signature: toBase64(response.signatures[0]) + }; + + // Base64 encode the signature object + const encodedSignatureObject = btoa(JSON.stringify(signatureObject)); + + // Set the encoded signature in state (for displaying in UI) + setEncodedSignatures([...encodedSignatures, encodedSignatureObject]); + }; + + const sendMultiSig = async () => { + try { + if (isBroadcasting) return; + setIsBroadcasting(true); + const broadcaster = await StargateClient.connect(rpcUrl); + + const multiSigPubkey = multiSigAccount.pubkey as unknown as MultisigThresholdPubkey; + + if (!isMultisigThresholdPubkey(multiSigPubkey)) { + toast.error('not a multi-sig threshold pubkey'); + setIsBroadcasting(false); + return; + } + + const firstSignatureDecoded = JSON.parse(atob(encodedSignatures[0])); + + const signaturesArray: [string, Uint8Array][] = encodedSignatures.map((signature) => { + const decodedSignature = JSON.parse(atob(signature)); + return [decodedSignature.address, fromBase64(decodedSignature.signature)]; + }); + + const signatures = new Map(signaturesArray); + + const multiSignedTxBytes = makeMultisignedTxBytes(multiSigPubkey, multiSigAccount.sequence, TX_FEE, fromBase64(firstSignatureDecoded.body), signatures); + + const result = await broadcaster.broadcastTx(multiSignedTxBytes); + + if (result.code !== 0) { + toast.error('Error broadcasting transaction'); + setIsBroadcasting(false); + return; + } + setIsBroadcasting(false); + setBroadcastResponse(result); + } catch (e) { + console.error(e); + toast.error(`Error broadcasting transaction: ${e.message}`); + setIsBroadcasting(false); + setBroadcastResponse(undefined); + } + }; + + const copyLink = async () => { + const rawObject = { + chainId, + multiSigAccount, + multiSigManualAccounts, + encodedSignatures, + multiSendRecipients, + txMemo + }; + + const encodedObject = btoa(JSON.stringify(rawObject)); + + await navigator.clipboard.writeText(`${window.location.origin}/multi-sig?data=${encodedObject}`); + + toast.info('Copied link to clipboard!'); + }; + + const renderSignaturePage = () => { + return ( +
+

Step 4: Sign TX

+

+ This multi-sig requires {multiSigAccount.pubkey.value.threshold} signatures. Please either paste the encoded signatures from other accounts if you wish to + broadcast this transaction or sign the transaction yourself and send the encoded signature to whoever will be broadcasting the transaction. +

+
+ {encodedSignatures.length}/{multiSigAccount.pubkey.value.threshold} required signatures added +
+ +
+ {encodedSignatures.map((signature, index) => { + const decodedSignature = JSON.parse(atob(signature)); + return ( +
+

SIGNER {index + 1}:

+
{decodedSignature && truncateAddress(decodedSignature.address)}
+ { + setEncodedSignatures(encodedSignatures.filter((_, i) => i !== index)); + }} + /> +
+ ); + })} + {!hasConnectedWalletSigned && ( + + )} + {!hasRequiredNumberOfSignatures && hasConnectedWalletSigned && ( + + )} +
+
+ + +
+
+ ); + }; + + return renderSignaturePage(); +}; + +export default SignaturePage; diff --git a/src/components/MultiSig/components/SignaturePage/types.ts b/src/components/MultiSig/components/SignaturePage/types.ts new file mode 100644 index 0000000..815efd0 --- /dev/null +++ b/src/components/MultiSig/components/SignaturePage/types.ts @@ -0,0 +1,6 @@ +import { Account, DeliverTxResponse } from '@cosmjs/stargate'; +import { RecipientAmount } from '../RecipientsPage/types'; + +export type SignaturePageProps = { + setBroadcastResponse: (broadcastResponse: DeliverTxResponse) => void; +}; diff --git a/src/components/MultiSig/components/Utils/TableWithDelete.module.sass b/src/components/MultiSig/components/Utils/TableWithDelete.module.sass new file mode 100644 index 0000000..a1aa9e0 --- /dev/null +++ b/src/components/MultiSig/components/Utils/TableWithDelete.module.sass @@ -0,0 +1,35 @@ +table + border-collapse: collapse + +table thead tr th + border-bottom: #f1f1f111 solid 1px + +table th, table td + text-align: left + border-left: 1px solid rgba(0, 0, 0, 0.2) + border-right: 1px solid rgba(0, 0, 0, 0.2) + gap: 2rem + overflow-y: auto + +table th, table td + padding: 4px 8px + +.deleteButton + background-color: #444 + color: red + font-weight: 600 + border: none + padding: 5px 10px + border-radius: 5px + font-size: 16px + cursor: pointer + transition: background-color 0.3s, box-shadow 0.3s + text-align: center + user-select: none + + &:hover + background-color: #555 + + &:focus + outline: none + box-shadow: 0 0 8px rgba(255, 255, 255, 0.6) diff --git a/src/components/MultiSig/components/Utils/TableWithDelete.tsx b/src/components/MultiSig/components/Utils/TableWithDelete.tsx new file mode 100644 index 0000000..754d24b --- /dev/null +++ b/src/components/MultiSig/components/Utils/TableWithDelete.tsx @@ -0,0 +1,50 @@ +import React from 'react'; +import { TableWithDeleteProps } from './types'; +import styles from '../../MultiSig.module.sass'; +import tableStyles from './TableWithDelete.module.sass'; + +const TableWithDelete = ({ items, setItems }: TableWithDeleteProps) => { + function renderRecipientTable() { + const deleteRow = (id: number) => { + setItems(items.splice(id, 1)); + }; + + const renderTableContent = () => { + if (items.length === 0) return

No accounts added yet...

; + + return ( + + + + {Object.entries(items[0]).map((pair, index) => { + return ; + })} + + + + {items.map((item, index) => { + return ( + + {Object.values(item).map((value, _) => { + return ; + })} + + + ); + })} + +
{pair[0].toUpperCase()}
{value.toString()} + +
+ ); + }; + + return
{renderTableContent()}
; + } + + return renderRecipientTable(); +}; + +export default TableWithDelete; diff --git a/src/components/MultiSig/components/Utils/types.ts b/src/components/MultiSig/components/Utils/types.ts new file mode 100644 index 0000000..fb648a7 --- /dev/null +++ b/src/components/MultiSig/components/Utils/types.ts @@ -0,0 +1,4 @@ +export type TableWithDeleteProps = { + items: any[]; + setItems: (items: any[]) => void; +}; diff --git a/src/components/MultiSig/components/Utils/utils.ts b/src/components/MultiSig/components/Utils/utils.ts new file mode 100644 index 0000000..5824697 --- /dev/null +++ b/src/components/MultiSig/components/Utils/utils.ts @@ -0,0 +1,7 @@ +export function SeiToUsei(seiAmount: number) { + return seiAmount * 1000000; +} + +export function UseiToSei(useiAmount: number) { + return useiAmount / 1000000; +} diff --git a/src/components/MultiSig/index.ts b/src/components/MultiSig/index.ts new file mode 100644 index 0000000..82160da --- /dev/null +++ b/src/components/MultiSig/index.ts @@ -0,0 +1 @@ +export { default as MultiSig } from './MultiSig'; diff --git a/src/components/MultiSig/types.ts b/src/components/MultiSig/types.ts new file mode 100644 index 0000000..798f9b6 --- /dev/null +++ b/src/components/MultiSig/types.ts @@ -0,0 +1 @@ +export type MultiSigProps = {}; diff --git a/src/components/WalletVerification/WalletReleaseTest/WalletReleaseTest.module.sass b/src/components/WalletVerification/WalletReleaseTest/WalletReleaseTest.module.sass new file mode 100644 index 0000000..f9f3184 --- /dev/null +++ b/src/components/WalletVerification/WalletReleaseTest/WalletReleaseTest.module.sass @@ -0,0 +1,24 @@ +.content + flex-direction: column + gap: 1rem + padding: 1rem + justify-content: space-between + background-color: #f1f1f111 + border: #f1f1f122 solid 3px + border-radius: 1rem + width: 100% + cursor: pointer + +.fullTestAction + flex-direction: row + align-items: center + flex-wrap: wrap + gap: 1rem + + & > svg + width: 2rem !important + height: 2rem !important + +.success + font-weight: 500 + font-size: 1.5rem diff --git a/src/components/WalletVerification/WalletReleaseTest/WalletReleaseTest.tsx b/src/components/WalletVerification/WalletReleaseTest/WalletReleaseTest.tsx new file mode 100644 index 0000000..4c7d01d --- /dev/null +++ b/src/components/WalletVerification/WalletReleaseTest/WalletReleaseTest.tsx @@ -0,0 +1,68 @@ +import React, { useState } from 'react'; +import { WalletReleaseTestProps } from './types'; +import styles from './WalletReleaseTest.module.sass'; +import { useWallet } from '@sei-js/react'; +import { signObject } from '../verify'; +import { useWalletTests } from '../hooks'; +import { IoPlayCircle } from 'react-icons/io5'; + +const WalletReleaseTest = ({}: WalletReleaseTestProps) => { + const { connectedWallet } = useWallet(); + + const { + signArbitraryError, + getOfflineSignerError, + getAccountsError, + getOfflineSignerAutoError, + testGetOfflineSigner, + testGetAccounts, + testSignArbitrary, + testGetOfflineSignerAuto + } = useWalletTests(); + + const [testingAll, setTestingAll] = useState(false); + const [verificationSignature, setVerificationSignature] = useState(); + + if (!connectedWallet) return null; + + const version = window?.[connectedWallet?.walletInfo?.windowKey]?.version; + + const onClickTest = async () => { + if (!connectedWallet || testingAll) return; + setTestingAll(true); + + await testGetOfflineSigner(); + await testGetOfflineSignerAuto(); + await testGetAccounts(); + await testSignArbitrary(); + + if (getOfflineSignerError || getOfflineSignerAutoError || getAccountsError || signArbitraryError) { + setVerificationSignature(undefined); + setTestingAll(false); + return; + } + + const obj = { version, name: connectedWallet.walletInfo.name }; + + setVerificationSignature(await signObject(obj)); + setTestingAll(false); + }; + + return ( +
+
+ + {verificationSignature ? ( +

+ Verified {connectedWallet.walletInfo.name} version {version} +

+ ) : ( +

Verify all

+ )} +
+

{verificationSignature}

+
+ ); +}; + +export default WalletReleaseTest; diff --git a/src/components/WalletVerification/WalletReleaseTest/index.ts b/src/components/WalletVerification/WalletReleaseTest/index.ts new file mode 100644 index 0000000..7fc58e4 --- /dev/null +++ b/src/components/WalletVerification/WalletReleaseTest/index.ts @@ -0,0 +1 @@ +export { default as WalletReleaseTest } from './WalletReleaseTest'; diff --git a/src/components/WalletVerification/WalletReleaseTest/types.ts b/src/components/WalletVerification/WalletReleaseTest/types.ts new file mode 100644 index 0000000..60d77b4 --- /dev/null +++ b/src/components/WalletVerification/WalletReleaseTest/types.ts @@ -0,0 +1 @@ +export type WalletReleaseTestProps = {}; diff --git a/src/components/WalletVerification/WalletVerification.tsx b/src/components/WalletVerification/WalletVerification.tsx index f049032..a237fcf 100644 --- a/src/components/WalletVerification/WalletVerification.tsx +++ b/src/components/WalletVerification/WalletVerification.tsx @@ -4,7 +4,7 @@ import styles from './WalletVerificaton.module.sass'; import { useWallet, WalletConnectButton } from '@sei-js/react'; import CodeExecute from '../CodeExecute/CodeExecute'; import { SIGN_ARBITRARY_TEXT, useWalletTests } from './hooks'; - +import { WalletReleaseTest } from './WalletReleaseTest'; const WalletVerification = ({}: WalletInfoProps) => { const { connectedWallet, chainId, accounts } = useWallet(); @@ -23,36 +23,51 @@ const WalletVerification = ({}: WalletInfoProps) => { testGetOfflineSignerAuto } = useWalletTests(); - const renderSignArbitrary = () => { return ( - + ); }; const renderGetAccounts = () => { return ( - + ); }; const renderGetOfflineSigner = () => { return ( - + ); }; const renderGetOfflineSignerAuto = () => { return ( - + ); }; @@ -71,11 +86,12 @@ const WalletVerification = ({}: WalletInfoProps) => { return (
-
+

Wallet connection

Verify your wallet connection is configured properly

+ {renderContent()}
diff --git a/src/components/WalletVerification/WalletVerificaton.module.sass b/src/components/WalletVerification/WalletVerificaton.module.sass index a11c4d8..bce6c22 100644 --- a/src/components/WalletVerification/WalletVerificaton.module.sass +++ b/src/components/WalletVerification/WalletVerificaton.module.sass @@ -1,7 +1,11 @@ .content width: 100% +.header + flex-direction: column + .tests + flex-direction: column gap: 2rem .page diff --git a/src/components/WalletVerification/hooks/index.ts b/src/components/WalletVerification/hooks/index.ts index 7214cd5..0d4a91f 100644 --- a/src/components/WalletVerification/hooks/index.ts +++ b/src/components/WalletVerification/hooks/index.ts @@ -1 +1 @@ -export * from './useWalletTests' +export * from './useWalletTests'; diff --git a/src/components/WalletVerification/hooks/useWalletTests.ts b/src/components/WalletVerification/hooks/useWalletTests.ts index 78e9d76..f5bff97 100644 --- a/src/components/WalletVerification/hooks/useWalletTests.ts +++ b/src/components/WalletVerification/hooks/useWalletTests.ts @@ -1,4 +1,4 @@ -import { useState } from 'react'; +import { useEffect, useState } from 'react'; import { StdSignature } from '@cosmjs/amino'; import { AccountData, OfflineSigner } from '@cosmjs/proto-signing'; import { toast } from 'react-toastify'; @@ -21,8 +21,20 @@ export const useWalletTests = () => { const [getOfflineSignerAutoResponse, setGetOfflineSignerAutoResponse] = useState(); const [getOfflineSignerAutoError, setGetOfflineSignerAutoError] = useState(); - const testGetAccounts = async () => { + useEffect(() => { + if (!connectedWallet) { + setSignArbitraryResponse(undefined); + setSignArbitraryError(undefined); + setGetOfflineSignerResponse(undefined); + setGetOfflineSignerError(undefined); + setGetAccountsResponse(undefined); + setGetAccountsError(undefined); + setGetOfflineSignerAutoResponse(undefined); + setGetOfflineSignerAutoError(undefined); + } + }, [connectedWallet]); + const testGetAccounts = async () => { try { setGetAccountsResponse(undefined); setGetAccountsError(undefined); @@ -77,5 +89,18 @@ export const useWalletTests = () => { } }; - return { signArbitraryResponse, signArbitraryError, getOfflineSignerResponse, getOfflineSignerError, getAccountsResponse, getAccountsError, getOfflineSignerAutoResponse, getOfflineSignerAutoError, testGetOfflineSigner, testGetAccounts, testSignArbitrary, testGetOfflineSignerAuto }; -} + return { + signArbitraryResponse, + signArbitraryError, + getOfflineSignerResponse, + getOfflineSignerError, + getAccountsResponse, + getAccountsError, + getOfflineSignerAutoResponse, + getOfflineSignerAutoError, + testGetOfflineSigner, + testGetAccounts, + testSignArbitrary, + testGetOfflineSignerAuto + }; +}; diff --git a/src/components/WalletVerification/verify.ts b/src/components/WalletVerification/verify.ts index 95fbc45..8348e52 100644 --- a/src/components/WalletVerification/verify.ts +++ b/src/components/WalletVerification/verify.ts @@ -1,6 +1,7 @@ const AES_KEY: string = import.meta.env.VITE_WALLET_VERIFICATION_KEY || ''; const ALGORITHM = 'AES-GCM'; -const STATIC_SALT: Buffer = Buffer.from('wallet-verification', 'utf8'); +// const STATIC_SALT: Buffer = Buffer.from('wallet-verification', 'utf8'); +const STATIC_SALT: Uint8Array = new TextEncoder().encode('wallet-verification'); const ITERATIONS = 10000; // Number of iterations for PBKDF2, adjust as needed interface KeyAndIv { @@ -9,24 +10,18 @@ interface KeyAndIv { } async function getKeyAndIv(password: string): Promise { - const keyMaterial = await crypto.subtle.importKey( - "raw", - new TextEncoder().encode(password), - "PBKDF2", - false, - ["deriveKey"] - ); + const keyMaterial = await crypto.subtle.importKey('raw', new TextEncoder().encode(password), 'PBKDF2', false, ['deriveKey']); const key = await crypto.subtle.deriveKey( { - "name": "PBKDF2", + name: 'PBKDF2', salt: STATIC_SALT, iterations: ITERATIONS, - hash: "SHA-256" + hash: 'SHA-256' }, keyMaterial, { name: ALGORITHM, length: 256 }, true, - ["encrypt", "decrypt"] + ['encrypt', 'decrypt'] ); const iv = crypto.getRandomValues(new Uint8Array(12)); return { key, iv }; @@ -53,11 +48,10 @@ export async function signObject(data: Record): Promise { } export async function verifyObject(data: Record, encryptedData: string): Promise { - const encryptedArray = Uint8Array.from(atob(encryptedData), c => c.charCodeAt(0)); + const encryptedArray = Uint8Array.from(atob(encryptedData), (c) => c.charCodeAt(0)); const iv = encryptedArray.slice(0, 12); const dataPart = encryptedArray.slice(12); - console.log('AES_KEY', AES_KEY) const { key } = await getKeyAndIv(AES_KEY); try { @@ -72,7 +66,7 @@ export async function verifyObject(data: Record, encryptedData: str return new TextDecoder().decode(decrypted) === JSON.stringify(data); } catch (error) { - console.error("Decryption failed:", error); + console.error('Decryption failed:', error); return false; } } diff --git a/src/components/WasmModule/WasmModule.tsx b/src/components/WasmModule/WasmModule.tsx index 007271f..9b0ca0d 100644 --- a/src/components/WasmModule/WasmModule.tsx +++ b/src/components/WasmModule/WasmModule.tsx @@ -4,7 +4,7 @@ import { useSigningCosmWasmClient, useWallet } from '@sei-js/react'; import { calculateFee } from '@cosmjs/stargate'; import ReactJson from 'react-json-view'; -type OptionType = "query" | "execute"; +type OptionType = 'query' | 'execute'; const WasmModule = () => { const { accounts } = useWallet(); @@ -16,7 +16,7 @@ const WasmModule = () => { const [gasPrice, setGasPrice] = useState('4usei'); const [gasLimit, setGasLimit] = useState('100000'); const [contractMessage, setContractMessage] = useState(''); - const [selectedOption, setSelectedOption] = useState("query"); + const [selectedOption, setSelectedOption] = useState('query'); const handleChange = (e: React.ChangeEvent) => setSelectedOption(e.target.value as OptionType); @@ -25,127 +25,99 @@ const WasmModule = () => { const sendContractCall = async () => { if (!signingCosmWasmClient) return; try { - if(selectedOption === "query") { + if (selectedOption === 'query') { const result = await signingCosmWasmClient.queryContractSmart(contractAddress, JSON.parse(contractMessage)); setResponse(result); } else { const fee = calculateFee(Number(gasLimit), gasPrice); - const result = await signingCosmWasmClient.execute(accounts[0].address, contractAddress, JSON.parse(contractMessage), fee, memo, JSON.parse(funds)); + const result = await signingCosmWasmClient.execute(accounts[0].address, contractAddress, JSON.parse(contractMessage), fee, memo, JSON.parse(funds)); setResponse(result); } } catch (e: any) { setResponse({ error: e.message }); } - } + }; const getMessagePlaceholder = () => { - if(selectedOption === "query") { - return '{"get_admins": {}}' + if (selectedOption === 'query') { + return '{"get_admins": {}}'; } else { - return '{"mint": {}}' + return '{"mint": {}}'; } - } + }; - return
-

Wasm module

+ return ( +
+

Wasm module

-
-
- - -
-
-

contract address:

- setContractAddress(e.target.value)} - /> -
-
-

contract message:

- setContractMessage(e.target.value)} - /> -
- {selectedOption === "execute" && ( -
-

gas price:

- setGasPrice(e.target.value)} - /> -
- )} - {selectedOption === "execute" && ( -
-

gas limit:

- setGasLimit(e.target.value)} - /> +
+
+ +
- )} - {selectedOption === "execute" && (
-

memo:

+

contract address:

setMemo(e.target.value)} + value={contractAddress} + onChange={(e) => setContractAddress(e.target.value)} />
- )} - {selectedOption === "execute" && (
-

funds:

+

contract message:

setFunds(e.target.value)} + value={contractMessage} + onChange={(e) => setContractMessage(e.target.value)} />
- )} - -
- {response && } + {selectedOption === 'execute' && ( +
+

gas price:

+ setGasPrice(e.target.value)} /> +
+ )} + {selectedOption === 'execute' && ( +
+

gas limit:

+ setGasLimit(e.target.value)} /> +
+ )} + {selectedOption === 'execute' && ( +
+

memo:

+ setMemo(e.target.value)} /> +
+ )} + {selectedOption === 'execute' && ( +
+

funds:

+ setFunds(e.target.value)} + /> +
+ )} + +
{response && }
-
+ ); }; export default WasmModule; diff --git a/src/components/index.ts b/src/components/index.ts index 82b84bc..13877f1 100644 --- a/src/components/index.ts +++ b/src/components/index.ts @@ -2,4 +2,5 @@ export { AccountInfo } from './AccountInfo'; export { ChainInfo } from './ChainInfo'; export { DexModule } from './DexModule'; export { SendTokens } from './SendTokens'; +export { MultiSig } from './MultiSig'; export { WasmModule } from './WasmModule'; diff --git a/src/config.ts b/src/config.ts index d15c162..dd12cd1 100644 --- a/src/config.ts +++ b/src/config.ts @@ -1,34 +1,40 @@ -export type AppRoute = { title: string, route: string }; +export type AppRoute = { title: string; route: string }; export const CHAIN_INFO_ROUTE = { title: 'Chain information', - route: '/chain-information', -} + route: '/' +}; export const WALLET_VERIFICATION_ROUTE = { title: 'Wallet verification', - route: '/wallet-verification', -} + route: '/wallet-verification' +}; export const ACCOUNT_ROUTE = { title: 'Account', - route: '/account-info', -} + route: '/account-info' +}; export const WASM_MODULE_ROUTE = { title: 'Wasm module', - route: '/wasm-module', -} + route: '/wasm-module' +}; export const DEX_MODULE_ROUTE = { title: 'Dex module', - route: '/dex-module', -} + route: '/dex-module' +}; + +export const MULTI_SIG_ROUTE = { + title: 'Multi-Sig Send', + route: '/multi-sig' +}; export const APP_ROUTES: AppRoute[] = [ CHAIN_INFO_ROUTE, - WALLET_VERIFICATION_ROUTE, - ACCOUNT_ROUTE, - WASM_MODULE_ROUTE, - DEX_MODULE_ROUTE, + MULTI_SIG_ROUTE, + WALLET_VERIFICATION_ROUTE + // ACCOUNT_ROUTE, + // WASM_MODULE_ROUTE, + // DEX_MODULE_ROUTE, ]; diff --git a/src/config/chains.ts b/src/config/chains.ts index e0dd888..3644f27 100644 --- a/src/config/chains.ts +++ b/src/config/chains.ts @@ -3,5 +3,4 @@ export const ATLANTIC_2 = 'atlantic-2'; export const ARCTIC_1 = 'arctic-1'; export const CUSTOM = 'custom'; - -export const DEFAULT_CHAINS = [PACIFIC_1, ATLANTIC_2, ARCTIC_1, CUSTOM] +export const DEFAULT_CHAINS = [PACIFIC_1, ATLANTIC_2, ARCTIC_1, CUSTOM]; diff --git a/src/main.tsx b/src/main.tsx index ceeea5f..795d993 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -1,9 +1,12 @@ import React from 'react'; import ReactDOM from 'react-dom/client'; import App from './App'; +import { BrowserRouter } from 'react-router-dom'; ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render( - + + + ); diff --git a/src/recoil/atoms/chainInfo.ts b/src/recoil/atoms/chainInfo.ts index 5515dac..c5f0fae 100644 --- a/src/recoil/atoms/chainInfo.ts +++ b/src/recoil/atoms/chainInfo.ts @@ -1,10 +1,10 @@ import { atom } from 'recoil'; import { ChainConfig } from '../../types'; -import { ATLANTIC_2 } from '../../config/chains'; +import { PACIFIC_1 } from '../../config/chains'; export const selectedChainConfigAtom = atom({ key: 'selectedChainConfig', - default: ATLANTIC_2 + default: PACIFIC_1 }); export const customChainIdAtom = atom({ diff --git a/src/recoil/atoms/index.ts b/src/recoil/atoms/index.ts index 0b0486f..7fd04f2 100644 --- a/src/recoil/atoms/index.ts +++ b/src/recoil/atoms/index.ts @@ -1,2 +1,3 @@ export * from './chainInfo'; +export * from './multiSig'; export * from './sendTokens'; diff --git a/src/recoil/atoms/multiSig.ts b/src/recoil/atoms/multiSig.ts new file mode 100644 index 0000000..fb28578 --- /dev/null +++ b/src/recoil/atoms/multiSig.ts @@ -0,0 +1,49 @@ +import { atom } from 'recoil'; +import { Account } from '@cosmjs/stargate'; +import { RecipientAmount } from '../../components/MultiSig/components/RecipientsPage/types'; +import { InputType, LookupType } from '../../components/MultiSig/components/MultiSigLookup/config'; + +export const multiSigLookupTypeAtom = atom({ + key: 'multiSigLookupTypeAtom', + default: LookupType.Select +}); + +export const multiSigInputTypeAtom = atom({ + key: 'multiSigInputTypeAtom', + default: InputType.Address +}); + +export const multiSigAccountAddressAtom = atom({ + key: 'multiSigAccountAddressAtom', + default: '' +}); + +export const multiSigAccountAtom = atom({ + key: 'multiSigAccountAtom', + default: undefined +}); + +export const multiSigManualAccountsAtom = atom({ + key: 'multiSigManualAccountsAtom', + default: [] +}); + +export const multiSigThresholdAtom = atom({ + key: 'multiSigThresholdAtom', + default: 2 +}); + +export const multiSigRecipientsAtom = atom({ + key: 'multiSigRecipientsAtom', + default: [] +}); + +export const multiSigTxMemoAtom = atom({ + key: 'multiSigTxMemoAtom', + default: '' +}); + +export const multiSigEncodedSignaturesAtom = atom({ + key: 'multiSigEncodedSignaturesAtom', + default: [] +}); diff --git a/src/recoil/selectors/chainConfig.ts b/src/recoil/selectors/chainConfig.ts index 6da44b5..a22fc70 100644 --- a/src/recoil/selectors/chainConfig.ts +++ b/src/recoil/selectors/chainConfig.ts @@ -1,19 +1,26 @@ -import { ChainConfiguration } from '@sei-js/react'; import { selector } from 'recoil'; import { customChainIdAtom, customRestUrlAtom, customRpcUrlAtom, selectedChainConfigAtom } from '../atoms'; -import { CUSTOM } from '../../config/chains'; +import { CUSTOM, PACIFIC_1 } from '../../config/chains'; +import { ChainConfiguration } from '@sei-js/react'; export const selectedChainConfigSelector = selector({ key: 'selectedChainConfigSelector', get: ({ get }) => { const selectedChainConfig = get(selectedChainConfigAtom); - if(selectedChainConfig !== CUSTOM) { + if (selectedChainConfig === PACIFIC_1) { return { chainId: selectedChainConfig, restUrl: `https://rest.wallet.${selectedChainConfig}.sei.io`, rpcUrl: `https://rpc.wallet.${selectedChainConfig}.sei.io` }; } + if (selectedChainConfig !== CUSTOM) { + return { + chainId: selectedChainConfig, + restUrl: `https://rest.${selectedChainConfig}.seinetwork.io`, + rpcUrl: `https://rpc.${selectedChainConfig}.seinetwork.io` + }; + } // Get custom values const customChainId = get(customChainIdAtom); diff --git a/tailwind.config.js b/tailwind.config.js new file mode 100644 index 0000000..27a5d82 --- /dev/null +++ b/tailwind.config.js @@ -0,0 +1,8 @@ +/** @type {import('tailwindcss').Config} */ +export default { + content: ['./index.html', './src/**/*.{js,ts,jsx,tsx}'], + theme: { + extend: {} + }, + plugins: [] +}; diff --git a/unsigned-tx.json b/unsigned-tx.json new file mode 100644 index 0000000..29b5222 --- /dev/null +++ b/unsigned-tx.json @@ -0,0 +1 @@ +{"body":{"messages":[{"@type":"/cosmos.bank.v1beta1.MsgSend","from_address":"MULTI_SIG_ACCOUNT","to_address":"DESIRED_DESTINATION_ADDRESS","amount":[{"denom":"usei","amount":"10"}]}],"memo":"","timeout_height":"0","extension_options":[],"non_critical_extension_options":[]},"auth_info":{"signer_infos":[],"fee":{"amount":[{"denom":"usei","amount":"100000"}],"gas_limit":"200000","payer":"","granter":""}},"signatures":[]} diff --git a/yarn.lock b/yarn.lock index f244803..7f8c0b7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,263 +2,254 @@ # yarn lockfile v1 -"@ampproject/remapping@^2.1.0": - version "2.2.0" - resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" - integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== +"@alloc/quick-lru@^5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30" + integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== + +"@ampproject/remapping@^2.2.0": + version "2.2.1" + resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" + integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== dependencies: - "@jridgewell/gen-mapping" "^0.1.0" + "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" -"@babel/code-frame@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" - integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== +"@babel/code-frame@^7.22.13", "@babel/code-frame@^7.23.5": + version "7.23.5" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz#9009b69a8c602293476ad598ff53e4562e15c244" + integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA== dependencies: - "@babel/highlight" "^7.18.6" + "@babel/highlight" "^7.23.4" + chalk "^2.4.2" -"@babel/compat-data@^7.20.0": - version "7.20.1" - resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.1.tgz#f2e6ef7790d8c8dbf03d379502dcc246dcce0b30" - integrity sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ== +"@babel/compat-data@^7.23.5": + version "7.23.5" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz#ffb878728bb6bdcb6f4510aa51b1be9afb8cfd98" + integrity sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw== "@babel/core@^7.19.6": - version "7.20.2" - resolved "https://registry.npmjs.org/@babel/core/-/core-7.20.2.tgz#8dc9b1620a673f92d3624bd926dc49a52cf25b92" - integrity sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g== - dependencies: - "@ampproject/remapping" "^2.1.0" - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.20.2" - "@babel/helper-compilation-targets" "^7.20.0" - "@babel/helper-module-transforms" "^7.20.2" - "@babel/helpers" "^7.20.1" - "@babel/parser" "^7.20.2" - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.20.1" - "@babel/types" "^7.20.2" - convert-source-map "^1.7.0" + version "7.23.7" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.23.7.tgz#4d8016e06a14b5f92530a13ed0561730b5c6483f" + integrity sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.23.5" + "@babel/generator" "^7.23.6" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helpers" "^7.23.7" + "@babel/parser" "^7.23.6" + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.7" + "@babel/types" "^7.23.6" + convert-source-map "^2.0.0" debug "^4.1.0" gensync "^1.0.0-beta.2" - json5 "^2.2.1" - semver "^6.3.0" + json5 "^2.2.3" + semver "^6.3.1" -"@babel/generator@^7.20.1", "@babel/generator@^7.20.2": - version "7.20.2" - resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.20.2.tgz#c2e89e22613a039285c1e7b749e2cd0b30b9a481" - integrity sha512-SD75PMIK6i9H8G/tfGvB4KKl4Nw6Ssos9nGgYwxbgyTP0iX/Z55DveoH86rmUB/YHTQQ+ZC0F7xxaY8l2OF44Q== +"@babel/generator@^7.23.6": + version "7.23.6" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz#9e1fca4811c77a10580d17d26b57b036133f3c2e" + integrity sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw== dependencies: - "@babel/types" "^7.20.2" + "@babel/types" "^7.23.6" "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" -"@babel/helper-annotate-as-pure@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" - integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-compilation-targets@^7.20.0": - version "7.20.0" - resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz#6bf5374d424e1b3922822f1d9bdaa43b1a139d0a" - integrity sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ== - dependencies: - "@babel/compat-data" "^7.20.0" - "@babel/helper-validator-option" "^7.18.6" - browserslist "^4.21.3" - semver "^6.3.0" - -"@babel/helper-environment-visitor@^7.18.9": - version "7.18.9" - resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" - integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== - -"@babel/helper-function-name@^7.19.0": - version "7.19.0" - resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz#941574ed5390682e872e52d3f38ce9d1bef4648c" - integrity sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w== - dependencies: - "@babel/template" "^7.18.10" - "@babel/types" "^7.19.0" - -"@babel/helper-hoist-variables@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" - integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-module-imports@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" - integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-module-transforms@^7.20.2": - version "7.20.2" - resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz#ac53da669501edd37e658602a21ba14c08748712" - integrity sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA== - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-simple-access" "^7.20.2" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/helper-validator-identifier" "^7.19.1" - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.20.1" - "@babel/types" "^7.20.2" - -"@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.19.0": - version "7.20.2" - resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629" - integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ== - -"@babel/helper-simple-access@^7.20.2": - version "7.20.2" - resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz#0ab452687fe0c2cfb1e2b9e0015de07fc2d62dd9" - integrity sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA== - dependencies: - "@babel/types" "^7.20.2" - -"@babel/helper-split-export-declaration@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" - integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-string-parser@^7.19.4": - version "7.19.4" - resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63" - integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw== - -"@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": - version "7.19.1" - resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" - integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== - -"@babel/helper-validator-option@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" - integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== - -"@babel/helpers@^7.20.1": - version "7.20.1" - resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.1.tgz#2ab7a0fcb0a03b5bf76629196ed63c2d7311f4c9" - integrity sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg== - dependencies: - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.20.1" - "@babel/types" "^7.20.0" - -"@babel/highlight@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" - integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== - dependencies: - "@babel/helper-validator-identifier" "^7.18.6" - chalk "^2.0.0" +"@babel/helper-annotate-as-pure@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" + integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-compilation-targets@^7.23.6": + version "7.23.6" + resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991" + integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== + dependencies: + "@babel/compat-data" "^7.23.5" + "@babel/helper-validator-option" "^7.23.5" + browserslist "^4.22.2" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-environment-visitor@^7.22.20": + version "7.22.20" + resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" + integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== + +"@babel/helper-function-name@^7.23.0": + version "7.23.0" + resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" + integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== + dependencies: + "@babel/template" "^7.22.15" + "@babel/types" "^7.23.0" + +"@babel/helper-hoist-variables@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" + integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-module-imports@^7.22.15": + version "7.22.15" + resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" + integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== + dependencies: + "@babel/types" "^7.22.15" + +"@babel/helper-module-transforms@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1" + integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@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.20" + +"@babel/helper-plugin-utils@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" + integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== + +"@babel/helper-simple-access@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" + integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-split-export-declaration@^7.22.6": + version "7.22.6" + resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" + integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-string-parser@^7.23.4": + version "7.23.4" + resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz#9478c707febcbbe1ddb38a3d91a2e054ae622d83" + integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ== + +"@babel/helper-validator-identifier@^7.22.20": + version "7.22.20" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== + +"@babel/helper-validator-option@^7.23.5": + version "7.23.5" + resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" + integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== + +"@babel/helpers@^7.23.7": + version "7.23.8" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.8.tgz#fc6b2d65b16847fd50adddbd4232c76378959e34" + integrity sha512-KDqYz4PiOWvDFrdHLPhKtCThtIcKVy6avWD2oG4GEvyQ+XDZwHD4YQd+H2vNMnq2rkdxsDkU82T+Vk8U/WXHRQ== + dependencies: + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.7" + "@babel/types" "^7.23.6" + +"@babel/highlight@^7.23.4": + version "7.23.4" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz#edaadf4d8232e1a961432db785091207ead0621b" + integrity sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A== + dependencies: + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" js-tokens "^4.0.0" -"@babel/parser@^7.18.10", "@babel/parser@^7.20.1", "@babel/parser@^7.20.2": - version "7.20.2" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.20.2.tgz#9aeb9b92f64412b5f81064d46f6a1ac0881337f4" - integrity sha512-afk318kh2uKbo7BEj2QtEi8HVCGrwHUffrYDy7dgVcSa2j9lY3LDjPzcyGdpX7xgm35aWqvciZJ4WKmdF/SxYg== +"@babel/parser@^7.22.15", "@babel/parser@^7.23.6": + version "7.23.6" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz#ba1c9e512bda72a47e285ae42aff9d2a635a9e3b" + integrity sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ== -"@babel/plugin-syntax-jsx@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz#a8feef63b010150abd97f1649ec296e849943ca0" - integrity sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q== +"@babel/plugin-syntax-jsx@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz#8f2e4f8a9b5f9aa16067e142c1ac9cd9f810f473" + integrity sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-react-jsx-development@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz#dbe5c972811e49c7405b630e4d0d2e1380c0ddc5" - integrity sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA== + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz#e716b6edbef972a92165cd69d92f1255f7e73e87" + integrity sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A== dependencies: - "@babel/plugin-transform-react-jsx" "^7.18.6" + "@babel/plugin-transform-react-jsx" "^7.22.5" "@babel/plugin-transform-react-jsx-self@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz#3849401bab7ae8ffa1e3e5687c94a753fc75bda7" - integrity sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig== + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.23.3.tgz#ed3e7dadde046cce761a8e3cf003a13d1a7972d9" + integrity sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-react-jsx-source@^7.19.6": - version "7.19.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz#88578ae8331e5887e8ce28e4c9dc83fb29da0b86" - integrity sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ== + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.23.3.tgz#03527006bdc8775247a78643c51d4e715fe39a3e" + integrity sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g== dependencies: - "@babel/helper-plugin-utils" "^7.19.0" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-react-jsx@^7.18.6", "@babel/plugin-transform-react-jsx@^7.19.0": - version "7.19.0" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz#b3cbb7c3a00b92ec8ae1027910e331ba5c500eb9" - integrity sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg== +"@babel/plugin-transform-react-jsx@^7.19.0", "@babel/plugin-transform-react-jsx@^7.22.5": + version "7.23.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz#393f99185110cea87184ea47bcb4a7b0c2e39312" + integrity sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA== dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/plugin-syntax-jsx" "^7.18.6" - "@babel/types" "^7.19.0" + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-jsx" "^7.23.3" + "@babel/types" "^7.23.4" -"@babel/runtime@^7.10.4", "@babel/runtime@^7.3.1": - version "7.23.2" - resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz#062b0ac103261d68a966c4c7baf2ae3e62ec3885" - integrity sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg== +"@babel/runtime@^7.10.4", "@babel/runtime@^7.18.9", "@babel/runtime@^7.19.0", "@babel/runtime@^7.20.13", "@babel/runtime@^7.3.1": + version "7.23.8" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.8.tgz#8ee6fe1ac47add7122902f257b8ddf55c898f650" + integrity sha512-Y7KbAP984rn1VGMbGqKmBLio9V7y5Je9GvU4rQPCPinCyNfUcToxIXl06d59URp/F3LwinvODxab5N/G6qggkw== dependencies: regenerator-runtime "^0.14.0" -"@babel/runtime@^7.18.9", "@babel/runtime@^7.19.0": - version "7.20.1" - resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.1.tgz#1148bb33ab252b165a06698fde7576092a78b4a9" - integrity sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg== - dependencies: - regenerator-runtime "^0.13.10" - -"@babel/runtime@^7.20.13": - version "7.22.6" - resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.6.tgz#57d64b9ae3cff1d67eb067ae117dac087f5bd438" - integrity sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ== - dependencies: - regenerator-runtime "^0.13.11" - -"@babel/template@^7.18.10": - version "7.18.10" - resolved "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71" - integrity sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA== - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/parser" "^7.18.10" - "@babel/types" "^7.18.10" - -"@babel/traverse@^7.20.1": - version "7.20.1" - resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.1.tgz#9b15ccbf882f6d107eeeecf263fbcdd208777ec8" - integrity sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA== - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.20.1" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.19.0" - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.20.1" - "@babel/types" "^7.20.0" - debug "^4.1.0" +"@babel/template@^7.22.15": + version "7.22.15" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38" + integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== + dependencies: + "@babel/code-frame" "^7.22.13" + "@babel/parser" "^7.22.15" + "@babel/types" "^7.22.15" + +"@babel/traverse@^7.23.7": + version "7.23.7" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.7.tgz#9a7bf285c928cb99b5ead19c3b1ce5b310c9c305" + integrity sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg== + dependencies: + "@babel/code-frame" "^7.23.5" + "@babel/generator" "^7.23.6" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/parser" "^7.23.6" + "@babel/types" "^7.23.6" + debug "^4.3.1" globals "^11.1.0" -"@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.19.0", "@babel/types@^7.20.0", "@babel/types@^7.20.2": - version "7.20.2" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.20.2.tgz#67ac09266606190f496322dbaff360fdaa5e7842" - integrity sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog== +"@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.4", "@babel/types@^7.23.6": + version "7.23.6" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz#be33fdb151e1f5a56877d704492c240fc71c7ccd" + integrity sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg== dependencies: - "@babel/helper-string-parser" "^7.19.4" - "@babel/helper-validator-identifier" "^7.19.1" + "@babel/helper-string-parser" "^7.23.4" + "@babel/helper-validator-identifier" "^7.22.20" to-fast-properties "^2.0.0" "@confio/ics23@^0.6.8": @@ -281,7 +272,7 @@ "@cosmjs/amino@^0.29.5": version "0.29.5" - resolved "https://registry.yarnpkg.com/@cosmjs/amino/-/amino-0.29.5.tgz#053b4739a90b15b9e2b781ccd484faf64bd49aec" + resolved "https://registry.npmjs.org/@cosmjs/amino/-/amino-0.29.5.tgz#053b4739a90b15b9e2b781ccd484faf64bd49aec" integrity sha512-Qo8jpC0BiziTSUqpkNatBcwtKNhCovUnFul9SlT/74JUCdLYaeG5hxr3q1cssQt++l4LvlcpF+OUXL48XjNjLw== dependencies: "@cosmjs/crypto" "^0.29.5" @@ -321,7 +312,7 @@ "@cosmjs/crypto@^0.29.5": version "0.29.5" - resolved "https://registry.yarnpkg.com/@cosmjs/crypto/-/crypto-0.29.5.tgz#ab99fc382b93d8a8db075780cf07487a0f9519fd" + resolved "https://registry.npmjs.org/@cosmjs/crypto/-/crypto-0.29.5.tgz#ab99fc382b93d8a8db075780cf07487a0f9519fd" integrity sha512-2bKkaLGictaNL0UipQCL6C1afaisv6k8Wr/GCLx9FqiyFkh9ZgRHDyetD64ZsjnWV/N/D44s/esI+k6oPREaiQ== dependencies: "@cosmjs/encoding" "^0.29.5" @@ -343,7 +334,7 @@ "@cosmjs/encoding@^0.29.5": version "0.29.5" - resolved "https://registry.yarnpkg.com/@cosmjs/encoding/-/encoding-0.29.5.tgz#009a4b1c596cdfd326f30ccfa79f5e56daa264f2" + resolved "https://registry.npmjs.org/@cosmjs/encoding/-/encoding-0.29.5.tgz#009a4b1c596cdfd326f30ccfa79f5e56daa264f2" integrity sha512-G4rGl/Jg4dMCw5u6PEZHZcoHnUBlukZODHbm/wcL4Uu91fkn5jVo5cXXZcvs4VCkArVGrEj/52eUgTZCmOBGWQ== dependencies: base64-js "^1.3.0" @@ -360,7 +351,7 @@ "@cosmjs/json-rpc@^0.29.5": version "0.29.5" - resolved "https://registry.yarnpkg.com/@cosmjs/json-rpc/-/json-rpc-0.29.5.tgz#5e483a9bd98a6270f935adf0dfd8a1e7eb777fe4" + resolved "https://registry.npmjs.org/@cosmjs/json-rpc/-/json-rpc-0.29.5.tgz#5e483a9bd98a6270f935adf0dfd8a1e7eb777fe4" integrity sha512-C78+X06l+r9xwdM1yFWIpGl03LhB9NdM1xvZpQHwgCOl0Ir/WV8pw48y3Ez2awAoUBRfTeejPe4KvrE6NoIi/w== dependencies: "@cosmjs/stream" "^0.29.5" @@ -375,7 +366,7 @@ "@cosmjs/math@^0.29.5": version "0.29.5" - resolved "https://registry.yarnpkg.com/@cosmjs/math/-/math-0.29.5.tgz#722c96e080d6c2b62215ce9f4c70da7625b241b6" + resolved "https://registry.npmjs.org/@cosmjs/math/-/math-0.29.5.tgz#722c96e080d6c2b62215ce9f4c70da7625b241b6" integrity sha512-2GjKcv+A9f86MAWYLUkjhw1/WpRl2R1BTb3m9qPG7lzMA7ioYff9jY5SPCfafKdxM4TIQGxXQlYGewQL16O68Q== dependencies: bn.js "^5.2.0" @@ -395,7 +386,7 @@ "@cosmjs/proto-signing@^0.29.5": version "0.29.5" - resolved "https://registry.yarnpkg.com/@cosmjs/proto-signing/-/proto-signing-0.29.5.tgz#af3b62a46c2c2f1d2327d678b13b7262db1fe87c" + resolved "https://registry.npmjs.org/@cosmjs/proto-signing/-/proto-signing-0.29.5.tgz#af3b62a46c2c2f1d2327d678b13b7262db1fe87c" integrity sha512-QRrS7CiKaoETdgIqvi/7JC2qCwCR7lnWaUsTzh/XfRy3McLkEd+cXbKAW3cygykv7IN0VAEIhZd2lyIfT8KwNA== dependencies: "@cosmjs/amino" "^0.29.5" @@ -418,7 +409,7 @@ "@cosmjs/socket@^0.29.5": version "0.29.5" - resolved "https://registry.yarnpkg.com/@cosmjs/socket/-/socket-0.29.5.tgz#a48df6b4c45dc6a6ef8e47232725dd4aa556ac2d" + resolved "https://registry.npmjs.org/@cosmjs/socket/-/socket-0.29.5.tgz#a48df6b4c45dc6a6ef8e47232725dd4aa556ac2d" integrity sha512-5VYDupIWbIXq3ftPV1LkS5Ya/T7Ol/AzWVhNxZ79hPe/mBfv1bGau/LqIYOm2zxGlgm9hBHOTmWGqNYDwr9LNQ== dependencies: "@cosmjs/stream" "^0.29.5" @@ -446,7 +437,7 @@ "@cosmjs/stargate@^0.29.5": version "0.29.5" - resolved "https://registry.yarnpkg.com/@cosmjs/stargate/-/stargate-0.29.5.tgz#d597af1c85a3c2af7b5bdbec34d5d40692cc09e4" + resolved "https://registry.npmjs.org/@cosmjs/stargate/-/stargate-0.29.5.tgz#d597af1c85a3c2af7b5bdbec34d5d40692cc09e4" integrity sha512-hjEv8UUlJruLrYGJcUZXM/CziaINOKwfVm2BoSdUnNTMxGvY/jC1ABHKeZUYt9oXHxEJ1n9+pDqzbKc8pT0nBw== dependencies: "@confio/ics23" "^0.6.8" @@ -471,7 +462,7 @@ "@cosmjs/stream@^0.29.5": version "0.29.5" - resolved "https://registry.yarnpkg.com/@cosmjs/stream/-/stream-0.29.5.tgz#350981cac496d04939b92ee793b9b19f44bc1d4e" + resolved "https://registry.npmjs.org/@cosmjs/stream/-/stream-0.29.5.tgz#350981cac496d04939b92ee793b9b19f44bc1d4e" integrity sha512-TToTDWyH1p05GBtF0Y8jFw2C+4783ueDCmDyxOMM6EU82IqpmIbfwcdMOCAm0JhnyMh+ocdebbFvnX/sGKzRAA== dependencies: xstream "^11.14.0" @@ -494,7 +485,7 @@ "@cosmjs/tendermint-rpc@^0.29.5": version "0.29.5" - resolved "https://registry.yarnpkg.com/@cosmjs/tendermint-rpc/-/tendermint-rpc-0.29.5.tgz#f205c10464212bdf843f91bb2e4a093b618cb5c2" + resolved "https://registry.npmjs.org/@cosmjs/tendermint-rpc/-/tendermint-rpc-0.29.5.tgz#f205c10464212bdf843f91bb2e4a093b618cb5c2" integrity sha512-ar80twieuAxsy0x2za/aO3kBr2DFPAXDmk2ikDbmkda+qqfXgl35l9CVAAjKRqd9d+cRvbQyb5M4wy6XQpEV6w== dependencies: "@cosmjs/crypto" "^0.29.5" @@ -515,10 +506,10 @@ "@cosmjs/utils@^0.29.5": version "0.29.5" - resolved "https://registry.yarnpkg.com/@cosmjs/utils/-/utils-0.29.5.tgz#3fed1b3528ae8c5f1eb5d29b68755bebfd3294ee" + resolved "https://registry.npmjs.org/@cosmjs/utils/-/utils-0.29.5.tgz#3fed1b3528ae8c5f1eb5d29b68755bebfd3294ee" integrity sha512-m7h+RXDUxOzEOGt4P+3OVPX7PuakZT3GBmaM/Y2u+abN3xZkziykD/NvedYFvvCCdQo714XcGl33bwifS9FZPQ== -"@emotion/is-prop-valid@^1.2.1": +"@emotion/is-prop-valid@1.2.1": version "1.2.1" resolved "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz#23116cf1ed18bfeac910ec6436561ecb1a3885cc" integrity sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw== @@ -530,10 +521,15 @@ resolved "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz#c1ddb040429c6d21d38cc945fe75c818cfb68e17" integrity sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA== -"@emotion/unitless@^0.8.0": - version "0.8.1" - resolved "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz#182b5a4704ef8ad91bde93f7a860a88fd92c79a3" - integrity sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ== +"@emotion/unitless@0.8.0": + version "0.8.0" + resolved "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.0.tgz#a4a36e9cbdc6903737cd20d38033241e1b8833db" + integrity sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw== + +"@esbuild-plugins/node-globals-polyfill@^0.2.3": + version "0.2.3" + resolved "https://registry.npmjs.org/@esbuild-plugins/node-globals-polyfill/-/node-globals-polyfill-0.2.3.tgz#0e4497a2b53c9e9485e149bc92ddb228438d6bcf" + integrity sha512-r3MIryXDeXDOZh7ih1l/yE9ZLORCd5e8vWg02azWRGj5SPTuoh69A2AIyn0Z31V/kHBfZ4HgWJ+OK3GTTwLmnw== "@esbuild/android-arm64@0.18.20": version "0.18.20" @@ -665,58 +661,88 @@ resolved "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892" integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== -"@jridgewell/gen-mapping@^0.1.0": - version "0.1.1" - resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" - integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== dependencies: - "@jridgewell/set-array" "^1.0.0" - "@jridgewell/sourcemap-codec" "^1.4.10" + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" -"@jridgewell/gen-mapping@^0.3.2": - version "0.3.2" - resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" - integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== +"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": + version "0.3.3" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" + integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== dependencies: "@jridgewell/set-array" "^1.0.1" "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/resolve-uri@3.1.0": - version "3.1.0" - resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" - integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.1" + resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" + integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== -"@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1": +"@jridgewell/set-array@^1.0.1": version "1.1.2" resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== -"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10": - version "1.4.14" - resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" - integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": + version "1.4.15" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== -"@jridgewell/trace-mapping@^0.3.9": - version "0.3.17" - resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" - integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== +"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.20" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f" + integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== dependencies: - "@jridgewell/resolve-uri" "3.1.0" - "@jridgewell/sourcemap-codec" "1.4.14" + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" "@keplr-wallet/types@^0.11.41": - version "0.11.44" - resolved "https://registry.yarnpkg.com/@keplr-wallet/types/-/types-0.11.44.tgz#37589ed9c6b20211de8480ecb99edc7b1eaa1e0f" - integrity sha512-QR7oh3r2yFP7vBHVh3MnTt+E+sFV4tATD8b6rnO7ym6B3Novm69TQgo4EM9uqh0LUSnWHPQFN9unyTKtnNvApw== + version "0.11.64" + resolved "https://registry.npmjs.org/@keplr-wallet/types/-/types-0.11.64.tgz#5a308c8c019b4e18f894e0f35f0904b60134d605" + integrity sha512-GgzeLDHHfZFyne3O7UIfFHj/uYqVbxAZI31RbBwt460OBbvwQzjrlZwvJW3vieWRAgxKSITjzEDBl2WneFTQdQ== dependencies: axios "^0.27.2" long "^4.0.0" "@noble/hashes@^1", "@noble/hashes@^1.0.0": - version "1.1.3" - resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.1.3.tgz#360afc77610e0a61f3417e497dcf36862e4f8111" - integrity sha512-CE0FCR57H2acVI5UOzIGSSIYxZ6v/HOhDR0Ro9VLyhnzLwx0o8W1mmgaqlEUx4049qJDlIBRztv5k+MM8vbO3A== + version "1.3.3" + resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz#39908da56a4adc270147bb07968bf3b16cfe1699" + integrity sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA== + +"@noble/secp256k1@1.7.1": + version "1.7.1" + resolved "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz#b251c70f824ce3ca7f8dc3df08d58f005cc0507c" + integrity sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw== + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" "@osmonauts/helpers@^0.6.0": version "0.6.0" @@ -740,6 +766,11 @@ "@babel/runtime" "^7.19.0" axios "0.27.2" +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + "@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": version "1.1.2" resolved "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" @@ -798,10 +829,42 @@ resolved "https://registry.npmjs.org/@react-icons/all-files/-/all-files-4.1.0.tgz#477284873a0821928224b6fc84c62d2534d6650b" integrity sha512-hxBI2UOuVaI3O/BhQfhtb4kcGn9ft12RWAFVMUeNjqqhLsHvFtzIkFaptBJpFDANTKoDfdVoHTKZDlwKCACbMQ== -"@sei-js/core@3.1.0", "@sei-js/core@^3.1.0": - version "3.1.0" - resolved "https://registry.npmjs.org/@sei-js/core/-/core-3.1.0.tgz#a0342fa487fc650502b18a06182afa3ce511c02e" - integrity sha512-M3O49ZvjwpHM92sYjUdqIpHW+RogH7abojteS0eR4S1ZXYspeJfMMei/+4Oe8kZnOdXd5MadDEqr8C2SAMquHQ== +"@remix-run/router@1.15.1": + version "1.15.1" + resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.15.1.tgz#221fd31a65186b9bc027b74573485fb3226dff7f" + integrity sha512-zcU0gM3z+3iqj8UX45AmWY810l3oUmXM7uH4dt5xtzvMhRtYVhKGOmgOd1877dOPPepfCjUv57w+syamWIYe7w== + +"@sei-js/core@^3.1.1": + version "3.1.3" + resolved "https://registry.npmjs.org/@sei-js/core/-/core-3.1.3.tgz#206938fed16878a6f2287fdd3b6bc3889cd3e844" + integrity sha512-Cf4XtX1m0DZpUQsdAXmKAguyo8DctyCCJ6DxEfWKpVemDvKpQqrbpqctnEmeMnYwQ1dIx7IVFSE3QVWEqG9bcA== + dependencies: + "@cosmjs/amino" "^0.29.5" + "@cosmjs/cosmwasm-stargate" "^0.29.5" + "@cosmjs/crypto" "^0.29.5" + "@cosmjs/encoding" "^0.29.5" + "@cosmjs/json-rpc" "^0.29.5" + "@cosmjs/math" "^0.29.5" + "@cosmjs/proto-signing" "^0.29.5" + "@cosmjs/stargate" "^0.29.5" + "@cosmjs/tendermint-rpc" "^0.29.5" + "@cosmjs/utils" "^0.29.5" + "@ethersproject/keccak256" "^5.7.0" + "@keplr-wallet/types" "^0.11.41" + "@noble/secp256k1" "1.7.1" + "@sei-js/proto" "^3.1.0" + bech32 "^2.0.0" + buffer "^6.0.3" + elliptic "^6.5.4" + process "^0.11.10" + readonly-date "^1.0.0" + sha.js "^2.4.11" + xstream "^11.14.0" + +"@sei-js/core@^3.2.1": + version "3.2.1" + resolved "https://registry.yarnpkg.com/@sei-js/core/-/core-3.2.1.tgz#7b84e5f253f5199af757c42ad36f744b200e7b12" + integrity sha512-8pZBYvFhpeUNDH/4WonJNV4yADW7Bqq4RySw8JIsVBC3IBkW53ysKpqf6O0TKOswW6T8E3p39txtajViHYMixw== dependencies: "@cosmjs/amino" "^0.29.5" "@cosmjs/cosmwasm-stargate" "^0.29.5" @@ -815,10 +878,12 @@ "@cosmjs/utils" "^0.29.5" "@ethersproject/keccak256" "^5.7.0" "@keplr-wallet/types" "^0.11.41" + "@noble/secp256k1" "1.7.1" "@sei-js/proto" "^3.1.0" + bech32 "^2.0.0" buffer "^6.0.3" - crypto-js "^4.1.1" elliptic "^6.5.4" + moment "^2.30.1" process "^0.11.10" readonly-date "^1.0.0" sha.js "^2.4.11" @@ -839,20 +904,21 @@ "@osmonauts/lcd" "^0.8.0" protobufjs "^6.11.2" -"@sei-js/react@^3.1.0": - version "3.1.0" - resolved "https://registry.npmjs.org/@sei-js/react/-/react-3.1.0.tgz#67c535a985eaa459d0d9b15d41ab4eb6e0e7f0e9" - integrity sha512-BbOk6SA242lG6k1Zhu9vPexh90HwORRiZD0xStbQtEgrr0XbcSA3OgbuLa6Rt6aeYhZZExtlg+bpa6GWz+JY8w== +"@sei-js/react@^3.2.0": + version "3.2.0" + resolved "https://registry.npmjs.org/@sei-js/react/-/react-3.2.0.tgz#e9712e82a734cbfeb27eb445b1c24809381d3773" + integrity sha512-62E1dQu/zyDq/shoO2Pjtw5Xv3/G3gK6o2FI4lk/lxc69cs/ivR4ao8tAOItPLENGX9KCU5hlSMwXLXUgzg6ig== dependencies: "@react-icons/all-files" "^4.1.0" - "@sei-js/core" "3.1.0" + "@sei-js/core" "^3.1.1" buffer "^6.0.3" process "^0.11.10" + styled-components "^6.1.1" "@types/hast@^2.0.0": - version "2.3.6" - resolved "https://registry.npmjs.org/@types/hast/-/hast-2.3.6.tgz#bb8b05602112a26d22868acb70c4b20984ec7086" - integrity sha512-47rJE80oqPmFdVDCD7IheXBrVdwuBgsYwoczFvKmwfo2Mzsnt+V9OONsYauFmICb6lQPpCuXYJWejBNs4pDJRg== + version "2.3.9" + resolved "https://registry.npmjs.org/@types/hast/-/hast-2.3.9.tgz#a9a1b5bbce46e8a1312e977364bacabc8e93d2cf" + integrity sha512-pTHyNlaMD/oKJmS+ZZUyFUcsZeBZpC0lmGquw98CqRVNgAdJZJeD7GoeLiT6Xbx5rU9VCjSt0RwEvDgzh4obFw== dependencies: "@types/unist" "^2" @@ -861,53 +927,62 @@ resolved "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz#b74129719fc8d11c01868010082d483b7545591a" integrity sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA== -"@types/node@>=13.7.0": - version "18.11.9" - resolved "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz#02d013de7058cea16d36168ef2fc653464cfbad4" - integrity sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg== +"@types/node@*", "@types/node@>=13.7.0": + version "20.10.8" + resolved "https://registry.npmjs.org/@types/node/-/node-20.10.8.tgz#f1e223cbde9e25696661d167a5b93a9b2a5d57c7" + integrity sha512-f8nQs3cLxbAFc00vEU59yf9UyGUftkPaLGfvbVOIDdx2i1b8epBqj2aNGyP19fiyXWvlmZ7qC1XLjAzw/OKIeA== + dependencies: + undici-types "~5.26.4" + +"@types/papaparse@^5.3.14": + version "5.3.14" + resolved "https://registry.npmjs.org/@types/papaparse/-/papaparse-5.3.14.tgz#345cc2a675a90106ff1dc33b95500dfb30748031" + integrity sha512-LxJ4iEFcpqc6METwp9f6BV6VVc43m6MfH0VqFosHvrUgfXiFe6ww7R3itkOQ+TCK6Y+Iv/+RnnvtRZnkc5Kc9g== + dependencies: + "@types/node" "*" "@types/prop-types@*": - version "15.7.5" - resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" - integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== + version "15.7.11" + resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz#2596fb352ee96a1379c657734d4b913a613ad563" + integrity sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng== "@types/react-dom@^18.0.7": - version "18.0.8" - resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.8.tgz#d2606d855186cd42cc1b11e63a71c39525441685" - integrity sha512-C3GYO0HLaOkk9dDAz3Dl4sbe4AKUGTCfFIZsz3n/82dPNN8Du533HzKatDxeUYWu24wJgMP1xICqkWk1YOLOIw== + version "18.2.18" + resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.18.tgz#16946e6cd43971256d874bc3d0a72074bb8571dd" + integrity sha512-TJxDm6OfAX2KJWJdMEVTwWke5Sc/E/RlnPGvGfS0W7+6ocy2xhDVQVh/KvC2Uf7kACs+gDytdusDSdWfWkaNzw== dependencies: "@types/react" "*" "@types/react-syntax-highlighter@^15.5.7": - version "15.5.8" - resolved "https://registry.npmjs.org/@types/react-syntax-highlighter/-/react-syntax-highlighter-15.5.8.tgz#4cfd56cb812c7f84093337ac95cc8a111b02d64b" - integrity sha512-GT1PLGzhF3ilGaQiCHFDShxDBb014s01MQi0nWfXJ23efjWfUrZ2i0g4tH1JGdfnIGBtQDge/k3ON3fLoAuU/w== + version "15.5.11" + resolved "https://registry.npmjs.org/@types/react-syntax-highlighter/-/react-syntax-highlighter-15.5.11.tgz#e050745b22eff81fc13cb0c763dd0d063413bbf1" + integrity sha512-ZqIJl+Pg8kD+47kxUjvrlElrraSUrYa4h0dauY/U/FTUuprSCqvUj+9PNQNQzVc6AJgIWUUxn87/gqsMHNbRjw== dependencies: "@types/react" "*" "@types/react@*", "@types/react@^18.0.22": - version "18.0.25" - resolved "https://registry.npmjs.org/@types/react/-/react-18.0.25.tgz#8b1dcd7e56fe7315535a4af25435e0bb55c8ae44" - integrity sha512-xD6c0KDT4m7n9uD4ZHi02lzskaiqcBxf4zi+tXZY98a04wvc0hi/TcCPC2FOESZi51Nd7tlUeOJY8RofL799/g== + version "18.2.47" + resolved "https://registry.npmjs.org/@types/react/-/react-18.2.47.tgz#85074b27ab563df01fbc3f68dc64bf7050b0af40" + integrity sha512-xquNkkOirwyCgoClNk85BjP+aqnIS+ckAJ8i37gAbDs14jfW/J23f2GItAf33oiUPQnqNMALiFeoM9Y5mbjpVQ== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" csstype "^3.0.2" "@types/scheduler@*": - version "0.16.2" - resolved "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" - integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== + version "0.16.8" + resolved "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz#ce5ace04cfeabe7ef87c0091e50752e36707deff" + integrity sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A== -"@types/stylis@^4.0.2": - version "4.2.1" - resolved "https://registry.npmjs.org/@types/stylis/-/stylis-4.2.1.tgz#867fcb0f81719d9ecef533fdda03e32083b959f6" - integrity sha512-OSaMrXUKxVigGlKRrET39V2xdhzlztQ9Aqumn1WbCBKHOi9ry7jKSd7rkyj0GzmWaU960Rd+LpOFpLfx5bMQAg== +"@types/stylis@4.2.0": + version "4.2.0" + resolved "https://registry.npmjs.org/@types/stylis/-/stylis-4.2.0.tgz#199a3f473f0c3a6f6e4e1b17cdbc967f274bdc6b" + integrity sha512-n4sx2bqL0mW1tvDf/loQ+aMX7GQD3lc3fkCMC55VFNDu/vBOabO+LTIeXKM14xK0ppk5TUGcWRjiSpIlUpghKw== "@types/unist@^2": - version "2.0.8" - resolved "https://registry.npmjs.org/@types/unist/-/unist-2.0.8.tgz#bb197b9639aa1a04cf464a617fe800cccd92ad5c" - integrity sha512-d0XxK3YTObnWVp6rZuev3c49+j4Lo8g4L1ZRm9z5L0xpoZycUPshHgczK5gsUMaZOstjVYYi09p5gYvUtfChYw== + version "2.0.10" + resolved "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz#04ffa7f406ab628f7f7e97ca23e290cd8ab15efc" + integrity sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA== "@vitejs/plugin-react@^2.2.0": version "2.2.0" @@ -922,6 +997,16 @@ magic-string "^0.26.7" react-refresh "^0.14.0" +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-regex@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -929,6 +1014,23 @@ ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" +ansi-styles@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + +any-promise@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== + anymatch@~3.1.2: version "3.1.3" resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" @@ -937,6 +1039,11 @@ anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" +arg@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" + integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== + asap@~2.0.3: version "2.0.6" resolved "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" @@ -957,6 +1064,18 @@ asynckit@^0.4.0: resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== +autoprefixer@^10.4.17: + version "10.4.17" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.17.tgz#35cd5695cbbe82f536a50fa025d561b01fdec8be" + integrity sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg== + dependencies: + browserslist "^4.22.2" + caniuse-lite "^1.0.30001578" + fraction.js "^4.3.7" + normalize-range "^0.1.2" + picocolors "^1.0.0" + postcss-value-parser "^4.2.0" + axios@0.27.2, axios@^0.27.2: version "0.27.2" resolved "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz#207658cc8621606e586c85db4b41a750e756d972" @@ -972,6 +1091,11 @@ axios@^0.21.2: dependencies: follow-redirects "^1.14.0" +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + base16@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/base16/-/base16-1.0.0.tgz#e297f60d7ec1014a7a971a39ebc8a98c0b681e70" @@ -987,6 +1111,11 @@ bech32@^1.1.4: resolved "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== +bech32@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/bech32/-/bech32-2.0.0.tgz#078d3686535075c8c79709f054b1b226a133b355" + integrity sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg== + binary-extensions@^2.0.0: version "2.2.0" resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" @@ -997,12 +1126,19 @@ bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== -bn.js@^5.0.0, bn.js@^5.1.1, bn.js@^5.2.0: +bn.js@^5.0.0, bn.js@^5.2.0, bn.js@^5.2.1: version "5.2.1" resolved "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== -braces@~3.0.2: +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.2, braces@~3.0.2: version "3.0.2" resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== @@ -1045,7 +1181,7 @@ browserify-des@^1.0.0: inherits "^2.0.1" safe-buffer "^5.1.2" -browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: +browserify-rsa@^4.0.0, browserify-rsa@^4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== @@ -1054,29 +1190,29 @@ browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: randombytes "^2.0.1" browserify-sign@^4.0.0: - version "4.2.1" - resolved "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" - integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== + version "4.2.2" + resolved "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.2.tgz#e78d4b69816d6e3dd1c747e64e9947f9ad79bc7e" + integrity sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg== dependencies: - bn.js "^5.1.1" - browserify-rsa "^4.0.1" + bn.js "^5.2.1" + browserify-rsa "^4.1.0" create-hash "^1.2.0" create-hmac "^1.1.7" - elliptic "^6.5.3" + elliptic "^6.5.4" inherits "^2.0.4" - parse-asn1 "^5.1.5" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" + parse-asn1 "^5.1.6" + readable-stream "^3.6.2" + safe-buffer "^5.2.1" -browserslist@^4.21.3: - version "4.21.4" - resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987" - integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw== +browserslist@^4.22.2: + version "4.22.2" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz#704c4943072bd81ea18997f3bd2180e89c77874b" + integrity sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A== dependencies: - caniuse-lite "^1.0.30001400" - electron-to-chromium "^1.4.251" - node-releases "^2.0.6" - update-browserslist-db "^1.0.9" + caniuse-lite "^1.0.30001565" + electron-to-chromium "^1.4.601" + node-releases "^2.0.14" + update-browserslist-db "^1.0.13" buffer-xor@^1.0.3: version "1.0.3" @@ -1091,17 +1227,27 @@ buffer@^6.0.3: base64-js "^1.3.1" ieee754 "^1.2.1" +camelcase-css@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" + integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== + camelize@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz#89b7e16884056331a35d6b5ad064332c91daa6c3" integrity sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ== -caniuse-lite@^1.0.30001400: - version "1.0.30001430" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001430.tgz#638a8ae00b5a8a97e66ff43733b2701f81b101fa" - integrity sha512-IB1BXTZKPDVPM7cnV4iaKaHxckvdr/3xtctB3f7Hmenx3qYBhGtTZ//7EllK66aKXW98Lx0+7Yr0kxBtIt3tzg== +caniuse-lite@^1.0.30001565: + version "1.0.30001576" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001576.tgz#893be772cf8ee6056d6c1e2d07df365b9ec0a5c4" + integrity sha512-ff5BdakGe2P3SQsMsiqmt1Lc8221NR1VzHj5jXN5vBny9A6fpze94HiVV/n7XRosOlsShJcvMv5mdnpjOGCEgg== -chalk@^2.0.0: +caniuse-lite@^1.0.30001578: + version "1.0.30001589" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001589.tgz#7ad6dba4c9bf6561aec8291976402339dc157dfb" + integrity sha512-vNQWS6kI+q6sBlHbh71IIeC+sRwK2N3EDySc/updIGhIee2x5z00J4c1242/5/d6EpEMdOnk/m+6tuk4/tcsqg== + +chalk@^2.4.2: version "2.4.2" resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -1140,6 +1286,21 @@ character-reference-invalid@^1.0.0: optionalDependencies: fsevents "~2.3.2" +chokidar@^3.5.3: + version "3.6.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" + integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" resolved "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" @@ -1149,9 +1310,9 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: safe-buffer "^5.0.1" classnames@^2.2.3, classnames@^2.3.2: - version "2.3.2" - resolved "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz#351d813bf0137fcc6a76a16b88208d2560a0d924" - integrity sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw== + version "2.5.1" + resolved "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz#ba774c614be0f016da105c858e7159eae8e7687b" + integrity sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow== clsx@^1.1.1: version "1.2.1" @@ -1165,11 +1326,23 @@ color-convert@^1.9.0: dependencies: color-name "1.1.3" +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + color-name@1.1.3: version "1.1.3" resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + combined-stream@^1.0.8: version "1.0.8" resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" @@ -1182,10 +1355,15 @@ comma-separated-tokens@^1.0.0: resolved "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea" integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw== -convert-source-map@^1.7.0: - version "1.9.0" - resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" - integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== +commander@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== + +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== cosmjs-types@0.5.1: version "0.5.1" @@ -1249,6 +1427,15 @@ cross-fetch@^3.1.5: dependencies: node-fetch "^2.6.12" +cross-spawn@^7.0.0: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + crypto-browserify@^3.12.0: version "3.12.0" resolved "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" @@ -1266,17 +1453,12 @@ crypto-browserify@^3.12.0: randombytes "^2.0.0" randomfill "^1.0.3" -crypto-js@^4.1.1: - version "4.1.1" - resolved "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz#9e485bcf03521041bd85844786b83fb7619736cf" - integrity sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw== - css-color-keywords@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05" integrity sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg== -css-to-react-native@^3.2.0: +css-to-react-native@3.2.0: version "3.2.0" resolved "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz#cdd8099f71024e149e4f6fe17a7d46ecd55f1e32" integrity sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ== @@ -1285,28 +1467,43 @@ css-to-react-native@^3.2.0: css-color-keywords "^1.0.0" postcss-value-parser "^4.0.2" -csstype@^3.0.2: - version "3.1.1" - resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz#841b532c45c758ee546a11d5bd7b7b473c8c30b9" - integrity sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw== +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -csstype@^3.1.2: +csstype@3.1.2: version "3.1.2" resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== -debug@^4.1.0: +csstype@^3.0.2: + version "3.1.3" + resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" + integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== + +debug@^4.1.0, debug@^4.3.1: version "4.3.4" resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" +define-data-property@^1.0.1: + version "1.1.1" + resolved "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" + integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== + dependencies: + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + define-properties@^1.1.3: - version "1.1.4" - resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" - integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== + version "1.2.1" + resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== dependencies: + define-data-property "^1.0.1" has-property-descriptors "^1.0.0" object-keys "^1.1.1" @@ -1323,6 +1520,11 @@ des.js@^1.0.0: inherits "^2.0.1" minimalistic-assert "^1.0.0" +didyoumean@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" + integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== + diffie-hellman@^5.0.0: version "5.0.3" resolved "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" @@ -1332,15 +1534,25 @@ diffie-hellman@^5.0.0: miller-rabin "^4.0.0" randombytes "^2.0.0" +dlv@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" + integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== + dotenv@^16.3.1: version "16.3.1" resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz#369034de7d7e5b120972693352a3bf112172cc3e" integrity sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ== -electron-to-chromium@^1.4.251: - version "1.4.284" - resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz#61046d1e4cab3a25238f6bf7413795270f125592" - integrity sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA== +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + +electron-to-chromium@^1.4.601: + version "1.4.626" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.626.tgz#c20e1706354a31721b65e81496800534dd04b222" + integrity sha512-f7/be56VjRRQk+Ric6PmIrEtPcIqsn3tElyAu9Sh6egha2VLJ82qwkcOdcnT06W+Pb6RUulV1ckzrGbKzVcTHg== elliptic@^6.5.3, elliptic@^6.5.4: version "6.5.4" @@ -1355,6 +1567,16 @@ elliptic@^6.5.3, elliptic@^6.5.4: minimalistic-assert "^1.0.1" minimalistic-crypto-utils "^1.0.1" +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + esbuild@^0.18.10: version "0.18.20" resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz#4709f5a34801b43b799ab7d6d82f7284a9b7a7a6" @@ -1401,6 +1623,24 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: md5.js "^1.3.4" safe-buffer "^5.1.1" +fast-glob@^3.3.0: + version "3.3.2" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" + integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fastq@^1.6.0: + version "1.17.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" + integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== + dependencies: + reusify "^1.0.4" + fault@^1.0.0: version "1.0.4" resolved "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz#eafcfc0a6d214fc94601e170df29954a4f842f13" @@ -1449,9 +1689,17 @@ flux@^4.0.1: fbjs "^3.0.1" follow-redirects@^1.14.0, follow-redirects@^1.14.9: - version "1.15.2" - resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" - integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== + version "1.15.4" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz#cdc7d308bf6493126b17ea2191ea0ccf3e535adf" + integrity sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw== + +foreground-child@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" + integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^4.0.1" form-data@^4.0.0: version "4.0.0" @@ -1467,37 +1715,61 @@ format@^0.2.0: resolved "https://registry.npmjs.org/format/-/format-0.2.2.tgz#d6170107e9efdc4ed30c9dc39016df942b5cb58b" integrity sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww== +fraction.js@^4.3.7: + version "4.3.7" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7" + integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== + fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + version "2.3.3" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== -get-intrinsic@^1.1.1: - version "1.1.3" - resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz#063c84329ad93e83893c7f4f243ef63ffa351385" - integrity sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A== +get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2: + version "1.2.2" + resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b" + integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA== dependencies: - function-bind "^1.1.1" - has "^1.0.3" + function-bind "^1.1.2" + has-proto "^1.0.1" has-symbols "^1.0.3" + hasown "^2.0.0" -glob-parent@~5.1.2: +glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: is-glob "^4.0.1" +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob@^10.3.10: + version "10.3.10" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.10.tgz#0351ebb809fd187fe421ab96af83d3a70715df4b" + integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== + dependencies: + foreground-child "^3.1.0" + jackspeak "^2.3.5" + minimatch "^9.0.1" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + path-scurry "^1.10.1" + globals@^11.1.0: version "11.12.0" resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" @@ -1510,6 +1782,13 @@ globalthis@^1.0.1: dependencies: define-properties "^1.1.3" +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + hamt_plus@1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/hamt_plus/-/hamt_plus-1.0.2.tgz#e21c252968c7e33b20f6a1b094cd85787a265601" @@ -1521,24 +1800,22 @@ has-flag@^3.0.0: integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== has-property-descriptors@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" - integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + version "1.0.1" + resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz#52ba30b6c5ec87fd89fa574bc1c39125c6f65340" + integrity sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg== dependencies: - get-intrinsic "^1.1.1" + get-intrinsic "^1.2.2" + +has-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" + integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== has-symbols@^1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== -has@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - hash-base@^3.0.0: version "3.1.0" resolved "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" @@ -1556,6 +1833,13 @@ hash.js@^1.0.0, hash.js@^1.0.3: inherits "^2.0.3" minimalistic-assert "^1.0.1" +hasown@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" + integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== + dependencies: + function-bind "^1.1.2" + hast-util-parse-selector@^2.0.0: version "2.2.5" resolved "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz#d57c23f4da16ae3c63b3b6ca4616683313499c3a" @@ -1592,9 +1876,9 @@ ieee754@^1.2.1: integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== immutable@^4.0.0: - version "4.3.1" - resolved "https://registry.npmjs.org/immutable/-/immutable-4.3.1.tgz#17988b356097ab0719e2f741d56f3ec6c317f9dc" - integrity sha512-lj9cnmB/kVS0QHsJnYKD1uo3o39nrbKxszjnqS9Fr6NB7bZzW45U6WSGBPKXDL/CvDKqDNPA4r3DoDQ8GTxo2A== + version "4.3.4" + resolved "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz#2e07b33837b4bb7662f288c244d1ced1ef65a78f" + integrity sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA== inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4: version "2.0.4" @@ -1621,6 +1905,13 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" +is-core-module@^2.13.0: + version "2.13.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== + dependencies: + hasown "^2.0.0" + is-decimal@^1.0.0: version "1.0.4" resolved "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" @@ -1631,7 +1922,12 @@ is-extglob@^2.1.1: resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== -is-glob@^4.0.1, is-glob@~4.0.1: +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: version "4.0.3" resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== @@ -1648,11 +1944,30 @@ is-number@^7.0.0: resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + isomorphic-ws@^4.0.1: version "4.0.1" resolved "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc" integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w== +jackspeak@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8" + integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + +jiti@^1.19.1: + version "1.21.0" + resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d" + integrity sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q== + js-sha3@0.8.0: version "0.8.0" resolved "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" @@ -1668,22 +1983,37 @@ jsesc@^2.5.1: resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== -json5@^2.2.1: - version "2.2.1" - resolved "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" - integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== +json5@^2.2.3: + version "2.2.3" + resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== libsodium-wrappers@^0.7.6: - version "0.7.10" - resolved "https://registry.npmjs.org/libsodium-wrappers/-/libsodium-wrappers-0.7.10.tgz#13ced44cacb0fc44d6ac9ce67d725956089ce733" - integrity sha512-pO3F1Q9NPLB/MWIhehim42b/Fwb30JNScCNh8TcQ/kIc+qGLQch8ag8wb0keK3EP5kbGakk1H8Wwo7v+36rNQg== + version "0.7.13" + resolved "https://registry.npmjs.org/libsodium-wrappers/-/libsodium-wrappers-0.7.13.tgz#83299e06ee1466057ba0e64e532777d2929b90d3" + integrity sha512-kasvDsEi/r1fMzKouIDv7B8I6vNmknXwGiYodErGuESoFTohGSKZplFtVxZqHaoQ217AynyIFgnOVRitpHs0Qw== dependencies: - libsodium "^0.7.0" + libsodium "^0.7.13" + +libsodium@^0.7.13: + version "0.7.13" + resolved "https://registry.npmjs.org/libsodium/-/libsodium-0.7.13.tgz#230712ec0b7447c57b39489c48a4af01985fb393" + integrity sha512-mK8ju0fnrKXXfleL53vtp9xiPq5hKM0zbDQtcxQIsSmxNgSxqCj6R7Hl9PkrNe2j29T4yoDaF7DJLK9/i5iWUw== + +lilconfig@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" + integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== -libsodium@^0.7.0: - version "0.7.10" - resolved "https://registry.npmjs.org/libsodium/-/libsodium-0.7.10.tgz#c2429a7e4c0836f879d701fec2c8a208af024159" - integrity sha512-eY+z7hDrDKxkAK+QKZVNv92A5KYkxfvIshtBJkmg5TSiCnYqZP3i9OO9whE79Pwgm4jGaoHgkM4ao/b9Cyu4zQ== +lilconfig@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.1.1.tgz#9d8a246fa753106cfc205fd2d77042faca56e5e3" + integrity sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ== + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== lodash.curry@^4.0.1: version "4.1.1" @@ -1701,9 +2031,9 @@ long@^4.0.0: integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== long@^5.2.0: - version "5.2.1" - resolved "https://registry.npmjs.org/long/-/long-5.2.1.tgz#e27595d0083d103d2fa2c20c7699f8e0c92b897f" - integrity sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A== + version "5.2.3" + resolved "https://registry.npmjs.org/long/-/long-5.2.3.tgz#a3ba97f3877cf1d778eccbcb048525ebb77499e1" + integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q== loose-envify@^1.0.0, loose-envify@^1.1.0: version "1.4.0" @@ -1720,6 +2050,18 @@ lowlight@^1.17.0: fault "^1.0.0" highlight.js "~10.7.0" +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +"lru-cache@^9.1.1 || ^10.0.0": + version "10.2.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.0.tgz#0bd445ca57363465900f4d1f9bd8db343a4d95c3" + integrity sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q== + magic-string@^0.26.7: version "0.26.7" resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz#caf7daf61b34e9982f8228c4527474dac8981d6f" @@ -1736,6 +2078,19 @@ md5.js@^1.3.4: inherits "^2.0.1" safe-buffer "^5.1.2" +merge2@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromatch@^4.0.4, micromatch@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + miller-rabin@^4.0.0: version "4.0.1" resolved "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" @@ -1766,38 +2121,74 @@ minimalistic-crypto-utils@^1.0.1: resolved "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== +minimatch@^9.0.1: + version "9.0.3" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" + integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== + dependencies: + brace-expansion "^2.0.1" + +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0": + version "7.0.4" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c" + integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== + +moment@^2.30.1: + version "2.30.1" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.30.1.tgz#f8c91c07b7a786e30c59926df530b4eac96974ae" + integrity sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how== + ms@2.1.2: version "2.1.2" resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -nanoid@^3.3.6: - version "3.3.6" - resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" - integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== +mz@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" + integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== + dependencies: + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" + +nanoid@^3.3.6, nanoid@^3.3.7: + version "3.3.7" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" + integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== node-fetch@^2.6.12: - version "2.6.12" - resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz#02eb8e22074018e3d5a83016649d04df0e348fba" - integrity sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g== + version "2.7.0" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== dependencies: whatwg-url "^5.0.0" -node-releases@^2.0.6: - version "2.0.6" - resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" - integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg== +node-releases@^2.0.14: + version "2.0.14" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" + integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -object-assign@^4.1.0: +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== + +object-assign@^4.0.1, object-assign@^4.1.0: version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== +object-hash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" + integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== + object-keys@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" @@ -1805,10 +2196,15 @@ object-keys@^1.1.1: pako@^2.0.2: version "2.1.0" - resolved "https://registry.yarnpkg.com/pako/-/pako-2.1.0.tgz#266cc37f98c7d883545d11335c00fbd4062c9a86" + resolved "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz#266cc37f98c7d883545d11335c00fbd4062c9a86" integrity sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug== -parse-asn1@^5.0.0, parse-asn1@^5.1.5: +papaparse@^5.4.1: + version "5.4.1" + resolved "https://registry.npmjs.org/papaparse/-/papaparse-5.4.1.tgz#f45c0f871853578bd3a30f92d96fdcfb6ebea127" + integrity sha512-HipMsgJkZu8br23pW15uvo6sib6wne/4woLZPlFf3rpDyMe9ywEXUsuD7+6K9PRkJlVT51j/sCOYDKGGS3ZJrw== + +parse-asn1@^5.0.0, parse-asn1@^5.1.6: version "5.1.6" resolved "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== @@ -1831,6 +2227,24 @@ parse-entities@^2.0.0: is-decimal "^1.0.0" is-hexadecimal "^1.0.0" +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-scurry@^1.10.1: + version "1.10.1" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.1.tgz#9ba6bf5aa8500fe9fd67df4f0d9483b2b0bfc698" + integrity sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ== + dependencies: + lru-cache "^9.1.1 || ^10.0.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + pbkdf2@^3.0.3: version "3.1.2" resolved "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" @@ -1847,17 +2261,66 @@ picocolors@^1.0.0: resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== -picomatch@^2.0.4, picomatch@^2.2.1: +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== -postcss-value-parser@^4.0.2: +pify@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== + +pirates@^4.0.1: + version "4.0.6" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" + integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== + +postcss-import@^15.1.0: + version "15.1.0" + resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-15.1.0.tgz#41c64ed8cc0e23735a9698b3249ffdbf704adc70" + integrity sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew== + dependencies: + postcss-value-parser "^4.0.0" + read-cache "^1.0.0" + resolve "^1.1.7" + +postcss-js@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.1.tgz#61598186f3703bab052f1c4f7d805f3991bee9d2" + integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw== + dependencies: + camelcase-css "^2.0.1" + +postcss-load-config@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-4.0.2.tgz#7159dcf626118d33e299f485d6afe4aff7c4a3e3" + integrity sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ== + dependencies: + lilconfig "^3.0.0" + yaml "^2.3.4" + +postcss-nested@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.0.1.tgz#f83dc9846ca16d2f4fa864f16e9d9f7d0961662c" + integrity sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ== + dependencies: + postcss-selector-parser "^6.0.11" + +postcss-selector-parser@^6.0.11: + version "6.0.15" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz#11cc2b21eebc0b99ea374ffb9887174855a01535" + integrity sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2, postcss-value-parser@^4.2.0: version "4.2.0" resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@^8.4.27, postcss@^8.4.31: +postcss@8.4.31: version "8.4.31" resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== @@ -1866,10 +2329,28 @@ postcss@^8.4.27, postcss@^8.4.31: picocolors "^1.0.0" source-map-js "^1.0.2" +postcss@^8.4.23, postcss@^8.4.35: + version "8.4.35" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.35.tgz#60997775689ce09011edf083a549cea44aabe2f7" + integrity sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA== + dependencies: + nanoid "^3.3.7" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +postcss@^8.4.27: + version "8.4.33" + resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.33.tgz#1378e859c9f69bf6f638b990a0212f43e2aaa742" + integrity sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg== + dependencies: + nanoid "^3.3.7" + picocolors "^1.0.0" + source-map-js "^1.0.2" + prettier@^3.0.3: - version "3.0.3" - resolved "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz#432a51f7ba422d1469096c0fdc28e235db8f9643" - integrity sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg== + version "3.1.1" + resolved "https://registry.npmjs.org/prettier/-/prettier-3.1.1.tgz#6ba9f23165d690b6cbdaa88cb0807278f7019848" + integrity sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw== prismjs@^1.27.0: version "1.29.0" @@ -1901,9 +2382,9 @@ property-information@^5.0.0: xtend "^4.0.0" protobufjs@^6.11.2, protobufjs@^6.11.3, protobufjs@^6.8.8, protobufjs@~6.11.2, protobufjs@~6.11.3: - version "6.11.3" - resolved "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.3.tgz#637a527205a35caa4f3e2a9a4a13ddffe0e7af74" - integrity sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg== + version "6.11.4" + resolved "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.4.tgz#29a412c38bf70d89e537b6d02d904a6f448173aa" + integrity sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw== dependencies: "@protobufjs/aspromise" "^1.1.2" "@protobufjs/base64" "^1.1.2" @@ -1936,6 +2417,11 @@ pure-color@^1.2.0: resolved "https://registry.npmjs.org/pure-color/-/pure-color-1.3.0.tgz#1fe064fb0ac851f0de61320a8bf796836422f33e" integrity sha512-QFADYnsVoBMw1srW7OVKEYjG+MbIa49s54w1MA1EDY6r2r/sTcKKYqRX1f4GYvnXP7eN/Pe9HFcX+hwzmrXRHA== +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: version "2.1.0" resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" @@ -1961,7 +2447,7 @@ react-base16-styling@^0.6.0: lodash.flow "^3.3.0" pure-color "^1.2.0" -react-code-blocks@^0.1.4: +react-code-blocks@0.1.4: version "0.1.4" resolved "https://registry.npmjs.org/react-code-blocks/-/react-code-blocks-0.1.4.tgz#9c0415c231f0ffe34648294043425e8e9c8fb568" integrity sha512-WC1f6XtqFtkb/NMbRl0rwMOBoUDuWrCdwYfMSsIoOIiy1/45BRAhJoVsIOFYr30VJLGfi0bf/qLgTTMD79I0+Q== @@ -1988,9 +2474,9 @@ react-dropdown@^1.11.0: classnames "^2.2.3" react-icons@^4.6.0: - version "4.6.0" - resolved "https://registry.npmjs.org/react-icons/-/react-icons-4.6.0.tgz#f83eda179af5d02c047449a20b702c858653d397" - integrity sha512-rR/L9m9340yO8yv1QT1QurxWQvWpbNHqVX0fzMln2HEb9TEIrQRGsqiNFQfiv9/JEUbyHmHPlNTB2LWm2Ttz0g== + version "4.12.0" + resolved "https://registry.npmjs.org/react-icons/-/react-icons-4.12.0.tgz#54806159a966961bfd5cdb26e492f4dafd6a8d78" + integrity sha512-IBaDuHiShdZqmfc/TwHu6+d6k2ltNCf3AszxNmjJc1KUfXdEeRJOKyNvLmAHaarhzGmTSVygNdyu8/opXv2gaw== react-json-view@^1.21.3: version "1.21.3" @@ -2007,11 +2493,31 @@ react-lifecycles-compat@^3.0.4: resolved "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== +react-modern-drawer@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/react-modern-drawer/-/react-modern-drawer-1.2.2.tgz#cee2d3355a1ac7ac0842d3fba33a28cd8f7f2464" + integrity sha512-SXUNjofHzeoEas0kdMWWafuF2+vwdtbQD1cpkHxo7oyFj3v+2l2CMeJjc/GodYsnxVhSiYj75xosMJXXed9ykQ== + react-refresh@^0.14.0: version "0.14.0" resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz#4e02825378a5f227079554d4284889354e5f553e" integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ== +react-router-dom@^6.22.1: + version "6.22.1" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.22.1.tgz#cfa109d4b6b0a4d00bac179bc0ad2a6469455282" + integrity sha512-iwMyyyrbL7zkKY7MRjOVRy+TMnS/OPusaFVxM2P11x9dzSzGmLsebkCvYirGq0DWB9K9hOspHYYtDz33gE5Duw== + dependencies: + "@remix-run/router" "1.15.1" + react-router "6.22.1" + +react-router@6.22.1: + version "6.22.1" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.22.1.tgz#a5ff849bfe709438f7e139421bb28138209662c7" + integrity sha512-0pdoRGwLtemnJqn1K0XHUbnKiX0S4X8CgvVVmHGOWmofESj31msHo/1YiqcJWK7Wxfq2a4uvvtS01KAQyWK/CQ== + dependencies: + "@remix-run/router" "1.15.1" + react-syntax-highlighter@^15.5.0: version "15.5.0" resolved "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-15.5.0.tgz#4b3eccc2325fa2ec8eff1e2d6c18fa4a9e07ab20" @@ -2024,18 +2530,18 @@ react-syntax-highlighter@^15.5.0: refractor "^3.6.0" react-textarea-autosize@^8.3.2: - version "8.5.2" - resolved "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.5.2.tgz#6421df2b5b50b9ca8c5e96fd31be688ea7fa2f9d" - integrity sha512-uOkyjkEl0ByEK21eCJMHDGBAAd/BoFQBawYK5XItjAmCTeSbjxghd8qnt7nzsLYzidjnoObu6M26xts0YGKsGg== + version "8.5.3" + resolved "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.5.3.tgz#d1e9fe760178413891484847d3378706052dd409" + integrity sha512-XT1024o2pqCuZSuBt9FwHlaDeNtVrtCXu0Rnz88t1jUGheCLa3PhjE1GH8Ctm2axEtvdCl5SUHYschyQ0L5QHQ== dependencies: "@babel/runtime" "^7.20.13" use-composed-ref "^1.3.0" use-latest "^1.2.1" react-toastify@^9.1.1: - version "9.1.1" - resolved "https://registry.npmjs.org/react-toastify/-/react-toastify-9.1.1.tgz#9280caea4a13dc1739c350d90660a630807bf10b" - integrity sha512-pkFCla1z3ve045qvjEmn2xOJOy4ZciwRXm1oMPULVkELi5aJdHCN/FHnuqXq8IwGDLB7PPk2/J6uP9D8ejuiRw== + version "9.1.3" + resolved "https://registry.npmjs.org/react-toastify/-/react-toastify-9.1.3.tgz#1e798d260d606f50e0fab5ee31daaae1d628c5ff" + integrity sha512-fPfb8ghtn/XMxw3LkxQBk3IyagNpF/LIKjOBflbexr2AWxAH1MJgvnESwEwBn9liLFXgTKWgBSdZpw9m4OTHTg== dependencies: clsx "^1.1.1" @@ -2046,7 +2552,14 @@ react@^18.2.0: dependencies: loose-envify "^1.1.0" -readable-stream@^3.6.0: +read-cache@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" + integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== + dependencies: + pify "^2.3.0" + +readable-stream@^3.6.0, readable-stream@^3.6.2: version "3.6.2" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== @@ -2068,9 +2581,9 @@ readonly-date@^1.0.0: integrity sha512-tMKIV7hlk0h4mO3JTmmVuIlJVXjKk3Sep9Bf5OH0O+758ruuVkUy2J9SttDLm91IEX/WHlXPSpxMGjPj4beMIQ== recoil@^0.7.6: - version "0.7.6" - resolved "https://registry.npmjs.org/recoil/-/recoil-0.7.6.tgz#75297ecd70bbfeeb72e861aa6141a86bb6dfcd5e" - integrity sha512-hsBEw7jFdpBCY/tu2GweiyaqHKxVj6EqF2/SfrglbKvJHhpN57SANWvPW+gE90i3Awi+A5gssOd3u+vWlT+g7g== + version "0.7.7" + resolved "https://registry.npmjs.org/recoil/-/recoil-0.7.7.tgz#c5f2c843224384c9c09e4a62c060fb4c1454dc8e" + integrity sha512-8Og5KPQW9LwC577Vc7Ug2P0vQshkv1y3zG3tSSkWMqkWSwHmE+by06L8JtnGocjW6gcCvfwB3YtrJG6/tWivNQ== dependencies: hamt_plus "1.0.2" @@ -2083,20 +2596,24 @@ refractor@^3.6.0: parse-entities "^2.0.0" prismjs "~1.27.0" -regenerator-runtime@^0.13.10: - version "0.13.10" - resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz#ed07b19616bcbec5da6274ebc75ae95634bfc2ee" - integrity sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw== +regenerator-runtime@^0.14.0: + version "0.14.1" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" + integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== -regenerator-runtime@^0.13.11: - version "0.13.11" - resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" - integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== +resolve@^1.1.7, resolve@^1.22.2: + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" -regenerator-runtime@^0.14.0: - version "0.14.0" - resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45" - integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA== +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" @@ -2113,7 +2630,14 @@ rollup@^3.27.1: optionalDependencies: fsevents "~2.3.2" -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -2124,9 +2648,9 @@ safer-buffer@^2.1.0: integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== sass@^1.63.6: - version "1.63.6" - resolved "https://registry.npmjs.org/sass/-/sass-1.63.6.tgz#481610e612902e0c31c46b46cf2dad66943283ea" - integrity sha512-MJuxGMHzaOW7ipp+1KdELtqKbfAWbH7OLIdoSMnVe3EXPMTmxTmlaZDCTsgIpPCs3w99lLo9/zDKkOrJuT5byw== + version "1.69.7" + resolved "https://registry.npmjs.org/sass/-/sass-1.69.7.tgz#6e7e1c8f51e8162faec3e9619babc7da780af3b7" + integrity sha512-rzj2soDeZ8wtE2egyLXgOOHQvaC2iosZrkF6v3EUG+tBwEvhqUCzm0VP3k9gHF9LXbSrRhT5SksoI56Iw8NPnQ== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" @@ -2139,10 +2663,10 @@ scheduler@^0.23.0: dependencies: loose-envify "^1.1.0" -semver@^6.3.0: - version "6.3.0" - resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +semver@^6.3.1: + version "6.3.1" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== setimmediate@^1.0.5: version "1.0.5" @@ -2157,11 +2681,28 @@ sha.js@^2.4.0, sha.js@^2.4.11, sha.js@^2.4.8: inherits "^2.0.1" safe-buffer "^5.0.1" -shallowequal@^1.1.0: +shallowequal@1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +signal-exit@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + "source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" @@ -2177,6 +2718,25 @@ space-separated-tokens@^1.0.0: resolved "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899" integrity sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA== +"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0: + name string-width-cjs + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" @@ -2184,25 +2744,53 @@ string_decoder@^1.1.1: dependencies: safe-buffer "~5.2.0" -styled-components@^6.0.5: - version "6.1.0" - resolved "https://registry.npmjs.org/styled-components/-/styled-components-6.1.0.tgz#228e3ab9c1ee1daa4b0a06aae30df0ed14fda274" - integrity sha512-VWNfYYBuXzuLS/QYEeoPgMErP26WL+dX9//rEh80B2mmlS1yRxRxuL5eax4m6ybYEUoHWlTy2XOU32767mlMkg== - dependencies: - "@emotion/is-prop-valid" "^1.2.1" - "@emotion/unitless" "^0.8.0" - "@types/stylis" "^4.0.2" - css-to-react-native "^3.2.0" - csstype "^3.1.2" - postcss "^8.4.31" - shallowequal "^1.1.0" - stylis "^4.3.0" - tslib "^2.5.0" - -stylis@^4.3.0: - version "4.3.0" - resolved "https://registry.npmjs.org/stylis/-/stylis-4.3.0.tgz#abe305a669fc3d8777e10eefcfc73ad861c5588c" - integrity sha512-E87pIogpwUsUwXw7dNyU4QDjdgVMy52m+XEOPEKUn161cCzWjjhPSQhByfd1CcNvrOLnXQ6OnnZDwnJrz/Z4YQ== +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: + name strip-ansi-cjs + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^7.0.1: + version "7.1.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + dependencies: + ansi-regex "^6.0.1" + +styled-components@^6.0.5, styled-components@^6.1.1: + version "6.1.8" + resolved "https://registry.npmjs.org/styled-components/-/styled-components-6.1.8.tgz#c109d36aeea52d8f049e12de2f3be39a6fc86201" + integrity sha512-PQ6Dn+QxlWyEGCKDS71NGsXoVLKfE1c3vApkvDYS5KAK+V8fNWGhbSUEo9Gg2iaID2tjLXegEW3bZDUGpofRWw== + dependencies: + "@emotion/is-prop-valid" "1.2.1" + "@emotion/unitless" "0.8.0" + "@types/stylis" "4.2.0" + css-to-react-native "3.2.0" + csstype "3.1.2" + postcss "8.4.31" + shallowequal "1.1.0" + stylis "4.3.1" + tslib "2.5.0" + +stylis@4.3.1: + version "4.3.1" + resolved "https://registry.npmjs.org/stylis/-/stylis-4.3.1.tgz#ed8a9ebf9f76fe1e12d462f5cc3c4c980b23a7eb" + integrity sha512-EQepAV+wMsIaGVGX1RECzgrcqRRU/0sYOHkeLsZ3fzHaHXZy4DaOOX0vOlGQdlsjkh3mFHAIlVimpwAs4dslyQ== + +sucrase@^3.32.0: + version "3.35.0" + resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.35.0.tgz#57f17a3d7e19b36d8995f06679d121be914ae263" + integrity sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA== + dependencies: + "@jridgewell/gen-mapping" "^0.3.2" + commander "^4.0.0" + glob "^10.3.10" + lines-and-columns "^1.1.6" + mz "^2.7.0" + pirates "^4.0.1" + ts-interface-checker "^0.1.9" supports-color@^5.3.0: version "5.5.0" @@ -2211,11 +2799,58 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + symbol-observable@^2.0.3: version "2.0.3" resolved "https://registry.npmjs.org/symbol-observable/-/symbol-observable-2.0.3.tgz#5b521d3d07a43c351055fa43b8355b62d33fd16a" integrity sha512-sQV7phh2WCYAn81oAkakC5qjq2Ml0g8ozqz03wOGnx9dDlG1de6yrF+0RAzSJD8fPUow3PTSMf2SAbOGxb93BA== +tailwindcss@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.4.1.tgz#f512ca5d1dd4c9503c7d3d28a968f1ad8f5c839d" + integrity sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA== + dependencies: + "@alloc/quick-lru" "^5.2.0" + arg "^5.0.2" + chokidar "^3.5.3" + didyoumean "^1.2.2" + dlv "^1.1.3" + fast-glob "^3.3.0" + glob-parent "^6.0.2" + is-glob "^4.0.3" + jiti "^1.19.1" + 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.23" + postcss-import "^15.1.0" + postcss-js "^4.0.1" + postcss-load-config "^4.0.1" + postcss-nested "^6.0.1" + postcss-selector-parser "^6.0.11" + resolve "^1.22.2" + sucrase "^3.32.0" + +thenify-all@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" + integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== + dependencies: + thenify ">= 3.1.0 < 4" + +"thenify@>= 3.1.0 < 4": + version "3.3.1" + resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" + integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== + dependencies: + any-promise "^1.0.0" + to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" @@ -2233,25 +2868,40 @@ tr46@~0.0.3: resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== -tslib@^2.5.0, tslib@^2.6.0: +ts-interface-checker@^0.1.9: + version "0.1.13" + resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" + integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== + +tslib@2.5.0: + version "2.5.0" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" + integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== + +tslib@^2.6.0: version "2.6.2" resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== typescript@^4.6.4: - version "4.8.4" - resolved "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz#c464abca159669597be5f96b8943500b238e60e6" - integrity sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ== + version "4.9.5" + resolved "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== ua-parser-js@^1.0.35: - version "1.0.35" - resolved "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.35.tgz#c4ef44343bc3db0a3cbefdf21822f1b1fc1ab011" - integrity sha512-fKnGuqmTBnIE+/KXSzCn4db8RTigUzw1AN0DmdU6hJovUTbYJKyqj+8Mt1c4VfRDnOVJnENmfYkIPZ946UrSAA== + version "1.0.37" + resolved "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.37.tgz#b5dc7b163a5c1f0c510b08446aed4da92c46373f" + integrity sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ== + +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== -update-browserslist-db@^1.0.9: - version "1.0.10" - resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3" - integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ== +update-browserslist-db@^1.0.13: + version "1.0.13" + resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" + integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== dependencies: escalade "^3.1.1" picocolors "^1.0.0" @@ -2273,15 +2923,15 @@ use-latest@^1.2.1: dependencies: use-isomorphic-layout-effect "^1.1.1" -util-deprecate@^1.0.1: +util-deprecate@^1.0.1, util-deprecate@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== vite@^4.4.11: - version "4.4.11" - resolved "https://registry.npmjs.org/vite/-/vite-4.4.11.tgz#babdb055b08c69cfc4c468072a2e6c9ca62102b0" - integrity sha512-ksNZJlkcU9b0lBwAGZGGaZHCMqHsc8OpgtoYhsQ4/I2v5cnpmmmqe5pM4nv/4Hn6G/2GhTdj0DhZh2e+Er1q5A== + version "4.5.1" + resolved "https://registry.npmjs.org/vite/-/vite-4.5.1.tgz#3370986e1ed5dbabbf35a6c2e1fb1e18555b968a" + integrity sha512-AXXFaAJ8yebyqzoNB9fu2pHoo/nWX+xZlaRwoeYUxEqBO+Zj4msE5G+BhGBll9lYEKv9Hfks52PAF2X7qDYXQA== dependencies: esbuild "^0.18.10" postcss "^8.4.27" @@ -2302,6 +2952,31 @@ whatwg-url@^5.0.0: tr46 "~0.0.3" webidl-conversions "^3.0.0" +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + ws@^7: version "7.5.9" resolved "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" @@ -2319,3 +2994,13 @@ xtend@^4.0.0: version "4.0.2" resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yaml@^2.3.4: + version "2.3.4" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.4.tgz#53fc1d514be80aabf386dc6001eb29bf3b7523b2" + integrity sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==