diff --git a/.github/workflows/frontend.yml b/.github/workflows/frontend.yml index 6d70d4e0b..ed5af9d89 100644 --- a/.github/workflows/frontend.yml +++ b/.github/workflows/frontend.yml @@ -12,7 +12,7 @@ jobs: - name: Use Node.js uses: actions/setup-node@v3 with: - node-version: 16.x + node-version: 18.x - name: npm ci, build working-directory: ./frontend run: | @@ -26,7 +26,7 @@ jobs: - name: Setup node uses: actions/setup-node@v3 with: - node-version: 16.x + node-version: 18.x - name: yarn ci, build and test working-directory: ./frontend run: | diff --git a/frontend/.eslintrc.json b/frontend/.eslintrc.json index bffb357a7..a9752ccc6 100644 --- a/frontend/.eslintrc.json +++ b/frontend/.eslintrc.json @@ -1,3 +1,15 @@ { - "extends": "next/core-web-vitals" -} + "parser": "@typescript-eslint/parser", + "plugins": [ + "@typescript-eslint" + ], + "extends": [ + "next/core-web-vitals", + "plugin:@typescript-eslint/recommended", + "prettier" + ], + "rules": { + "@typescript-eslint/no-unused-vars": "error", + "@typescript-eslint/no-explicit-any": "error" + } +} \ No newline at end of file diff --git a/frontend/.prettierrc.json b/frontend/.prettierrc.json new file mode 100644 index 000000000..2db12bea2 --- /dev/null +++ b/frontend/.prettierrc.json @@ -0,0 +1,7 @@ +{ + "semi": false, + "trailingComma": "es5", + "singleQuote": true, + "tabWidth": 2, + "useTabs": false + } \ No newline at end of file diff --git a/frontend/package.json b/frontend/package.json index 02ca489b1..892858203 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -3,10 +3,10 @@ "version": "0.1.0", "private": true, "scripts": { - "dev": "next dev", + "dev": "yarn lint && next dev", "build": "next build", - "start": "next start", - "lint": "next lint" + "start": "yarn lint && next start", + "lint": "next lint --no-cache" }, "dependencies": { "@emotion/cache": "^11.11.0", @@ -23,7 +23,7 @@ "axios": "^1.5.1", "eslint": "8.50.0", "eslint-config-next": "13.5.2", - "next": "13.5.2", + "next": "14.0.1", "postcss": "8.4.30", "react": "18.2.0", "react-dom": "18.2.0", @@ -31,5 +31,10 @@ "react-redux": "^8.1.3", "tailwindcss": "3.3.3", "typescript": "5.2.2" + }, + "devDependencies": { + "@typescript-eslint/eslint-plugin": "^6.9.1", + "eslint-config-prettier": "^9.0.0", + "prettier": "^3.0.3" } } diff --git a/frontend/src/app/(routes)/feegrant/Feegrant.tsx b/frontend/src/app/(routes)/feegrant/Feegrant.tsx index aff78f9c9..9f650d7b2 100644 --- a/frontend/src/app/(routes)/feegrant/Feegrant.tsx +++ b/frontend/src/app/(routes)/feegrant/Feegrant.tsx @@ -22,15 +22,15 @@ export default function Feegrant() { setFeegrantTypeTab(value); }; - const methods = useForm({ - defaultValues: { - grantee: "", - spendLimit: 0, - expiration: expiration, - period: 1, - periodSpendLimit: 0, - }, - }); + // const methods = useForm({ + // defaultValues: { + // grantee: "", + // spendLimit: 0, + // expiration: expiration, + // period: 1, + // periodSpendLimit: 0, + // }, + // }); return ( <> diff --git a/frontend/src/app/(routes)/groups/page.tsx b/frontend/src/app/(routes)/groups/page.tsx index dcb2afd6a..f3ac5ac02 100644 --- a/frontend/src/app/(routes)/groups/page.tsx +++ b/frontend/src/app/(routes)/groups/page.tsx @@ -1,5 +1,4 @@ import React from "react"; -import GroupsCards from "../../../components/GroupsCards"; import Groups from "../../../components/tabs/Groups"; const page = () => { diff --git a/frontend/src/components/ConnectWalletButton.tsx b/frontend/src/components/ConnectWalletButton.tsx index f95e11d07..fb96e72d6 100644 --- a/frontend/src/components/ConnectWalletButton.tsx +++ b/frontend/src/components/ConnectWalletButton.tsx @@ -22,6 +22,7 @@ export const ConnectWalletButton = ({ (connectWalletDialogOpen) => !connectWalletDialogOpen ); }; + const selectWallet = (walletName: string) => { dispatch( connectWalletV1({ @@ -33,28 +34,28 @@ export const ConnectWalletButton = ({ handleClose(); }; + const tryConnectWallet = (walletName: string) => { + dispatch( + connectWalletV1({ + walletName, + mainnets: networks, + testnets: [], + }) + ); + } + useEffect(() => { const walletName = getWalletName(); console.log(walletName) + if (isConnected()) { - dispatch( - connectWalletV1({ - walletName, - mainnets: networks, - testnets: [], - }) - ); + tryConnectWallet(walletName) } + const accountChangeListener = () => { setTimeout( () => - dispatch( - connectWalletV1({ - walletName, - mainnets: networks, - testnets: [], - }) - ), + tryConnectWallet(walletName), 1000 ); window.location.reload(); @@ -71,7 +72,7 @@ export const ConnectWalletButton = ({ accountChangeListener ); }; - }, []); + }); return connected ? ( <>{children} diff --git a/frontend/src/constants/constants.ts b/frontend/src/constants/constants.ts new file mode 100644 index 000000000..dcb9d857a --- /dev/null +++ b/frontend/src/constants/constants.ts @@ -0,0 +1,5 @@ +/** + * The base URL for the Multisig API. + * @constant + */ +export const API_URL = process.env.REACT_APP_API_URI; \ No newline at end of file diff --git a/frontend/src/services/bankService.ts b/frontend/src/services/bankService.ts index 4df03bac1..37bdc216d 100644 --- a/frontend/src/services/bankService.ts +++ b/frontend/src/services/bankService.ts @@ -7,9 +7,9 @@ const fetchBalances = async ( address: string, pagination: any ):Promise => { - let uri = `${baseURL}${balancesURL}${address}`; - return await fetch(uri); -}; + const uri = `${baseURL}${balancesURL}${address}`; + return await fetch(uri); + }; const fetchBalance = async ( baseURL: string, diff --git a/frontend/src/services/governance.ts b/frontend/src/services/governance.ts index 7198057d7..16c7d076f 100644 --- a/frontend/src/services/governance.ts +++ b/frontend/src/services/governance.ts @@ -46,7 +46,7 @@ const fetchProposalTally = async ( baseURL: string, proposalId: number ): Promise => { - let uri = `${cleanURL(baseURL)}${proposalTallyURL(proposalId)}`; + const uri = `${cleanURL(baseURL)}${proposalTallyURL(proposalId)}`; return await fetch(uri); }; diff --git a/frontend/src/services/stakingService.ts b/frontend/src/services/stakingService.ts index de77284d7..551e1e3af 100644 --- a/frontend/src/services/stakingService.ts +++ b/frontend/src/services/stakingService.ts @@ -8,8 +8,8 @@ const poolURL = "/cosmos/staking/v1beta1/pool"; const fetchValidators = async ( baseURL: string, ): Promise => { - let uri = `${baseURL}${validatorsURL}`; - + const uri = `${baseURL}${validatorsURL}`; + return await fetch(uri); }; @@ -17,7 +17,7 @@ const fetchDelegations = async ( baseURL: string, address: string, ): Promise => { - let uri = `${baseURL}${delegationsURL}${address}`; + const uri = `${baseURL}${delegationsURL}${address}`; return await fetch(uri); }; @@ -26,7 +26,7 @@ const fetchUnbonding = async ( baseURL: string, address: string, ): Promise => { - let uri = `${baseURL}${unbondingDelegationsURL(address)}`; + const uri = `${baseURL}${unbondingDelegationsURL(address)}`; return await fetch(uri); }; diff --git a/frontend/src/store/features/multisig/multisigService.ts b/frontend/src/store/features/multisig/multisigService.ts index b4efc6ae5..d674ed288 100644 --- a/frontend/src/store/features/multisig/multisigService.ts +++ b/frontend/src/store/features/multisig/multisigService.ts @@ -1,14 +1,15 @@ "use client"; import Axios from "axios"; - -const BASE_URL = "http://localhost:1323"; +import { API_URL } from "../../../constants/constants"; const GET_ACCOUNTS = "/multisig/accounts"; const getAccounts = (address: string) => - Axios.get(`${BASE_URL}${GET_ACCOUNTS}/${address}`); + Axios.get(`${API_URL}${GET_ACCOUNTS}/${address}`); -export default { +const exportObj = { getAccounts: getAccounts, }; + +export default exportObj; diff --git a/frontend/src/store/features/wallet/walletSlice.ts b/frontend/src/store/features/wallet/walletSlice.ts index d6bf78de6..7e06edbcc 100644 --- a/frontend/src/store/features/wallet/walletSlice.ts +++ b/frontend/src/store/features/wallet/walletSlice.ts @@ -76,13 +76,18 @@ export const connectWalletV1 = createAsyncThunk( ) { await window.wallet.experimentalSuggestChain(mainnets[i].config); } + if (data.walletName === "leap" && mainnets[i].leapExperimental) { await window.wallet.experimentalSuggestChain(mainnets[i].config); } - let chainId: string = mainnets[i].config.chainId; + + const chainId: string = mainnets[i].config.chainId; const chainName: string = mainnets[i].config.chainName; + await getWalletAmino(chainId); - let walletInfo = await window.wallet.getKey(chainId); + + const walletInfo = await window.wallet.getKey(chainId); + walletInfo.pubKey = Buffer.from(walletInfo?.pubKey).toString( "base64" ); @@ -114,12 +119,16 @@ export const connectWalletV1 = createAsyncThunk( ) { await window.wallet.experimentalSuggestChain(mainnets[i].config); } + if (data.walletName === "leap" && testnets[i].leapExperimental) { await window.wallet.experimentalSuggestChain(mainnets[i].config); } + const chainId = testnets[i].config.chainId; const chainName = testnets[i].config.chainName; + await getWalletAmino(chainId); + const walletInfo = await window.wallet.getKey(chainId); walletInfo.pubKey = Buffer.from(walletInfo?.pubKey).toString( "base64" @@ -149,6 +158,7 @@ export const connectWalletV1 = createAsyncThunk( } else { setConnected(); setWalletName(data.walletName); + return fulfillWithValue({ chainInfos, nameToChainIDs, @@ -172,7 +182,6 @@ const walletSlice = createSlice({ }, resetWallet: (state) => { state.connected = false; - state.name = ""; state.pubKey = ""; state.nameToChainIDs = {}; diff --git a/frontend/src/utils/localStorage.ts b/frontend/src/utils/localStorage.ts index cd19c7dc1..020cae10f 100644 --- a/frontend/src/utils/localStorage.ts +++ b/frontend/src/utils/localStorage.ts @@ -22,6 +22,7 @@ export function isConnected(): boolean { if (connected && KEY_WALLET_NAME) { return true; } + return false; } export function logout() { diff --git a/frontend/yarn.lock b/frontend/yarn.lock index 528aff1e8..6f5cb8374 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -186,13 +186,18 @@ resolved "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz" integrity sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww== -"@eslint-community/eslint-utils@^4.2.0": +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": version "4.4.0" resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz" integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== dependencies: eslint-visitor-keys "^3.3.0" +"@eslint-community/regexpp@^4.5.1": + version "4.10.0" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" + integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== + "@eslint-community/regexpp@^4.6.1": version "4.8.1" resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.1.tgz" @@ -387,10 +392,10 @@ prop-types "^15.8.1" react-is "^18.2.0" -"@next/env@13.5.2": - version "13.5.2" - resolved "https://registry.npmjs.org/@next/env/-/env-13.5.2.tgz" - integrity sha512-dUseBIQVax+XtdJPzhwww4GetTjlkRSsXeQnisIJWBaHsnxYcN2RGzsPHi58D6qnkATjnhuAtQTJmR1hKYQQPg== +"@next/env@14.0.0": + version "14.0.0" + resolved "https://registry.yarnpkg.com/@next/env/-/env-14.0.0.tgz#d8956f5ccf86b4098ac281f1ca94efe86fabd3c0" + integrity sha512-cIKhxkfVELB6hFjYsbtEeTus2mwrTC+JissfZYM0n+8Fv+g8ucUfOlm3VEDtwtwydZ0Nuauv3bl0qF82nnCAqA== "@next/eslint-plugin-next@13.5.2": version "13.5.2" @@ -399,50 +404,50 @@ dependencies: glob "7.1.7" -"@next/swc-darwin-arm64@13.5.2": - version "13.5.2" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.5.2.tgz#f099a36fdd06b1949eb4e190aee95a52b97d3885" - integrity sha512-7eAyunAWq6yFwdSQliWMmGhObPpHTesiKxMw4DWVxhm5yLotBj8FCR4PXGkpRP2tf8QhaWuVba+/fyAYggqfQg== - -"@next/swc-darwin-x64@13.5.2": - version "13.5.2" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-13.5.2.tgz#b8950fbe150db6f82961619e31fc6e9232fce8f4" - integrity sha512-WxXYWE7zF1ch8rrNh5xbIWzhMVas6Vbw+9BCSyZvu7gZC5EEiyZNJsafsC89qlaSA7BnmsDXVWQmc+s1feSYbQ== - -"@next/swc-linux-arm64-gnu@13.5.2": - version "13.5.2" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.5.2.tgz#8134d31fa9ad6848561b6969d27a8c07ab090974" - integrity sha512-URSwhRYrbj/4MSBjLlefPTK3/tvg95TTm6mRaiZWBB6Za3hpHKi8vSdnCMw5D2aP6k0sQQIEG6Pzcfwm+C5vrg== - -"@next/swc-linux-arm64-musl@13.5.2": - version "13.5.2" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.5.2.tgz#56233fe5140ed437c638194f0a01a3f89821ca89" - integrity sha512-HefiwAdIygFyNmyVsQeiJp+j8vPKpIRYDlmTlF9/tLdcd3qEL/UEBswa1M7cvO8nHcr27ZTKXz5m7dkd56/Esg== - -"@next/swc-linux-x64-gnu@13.5.2": - version "13.5.2" - resolved "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.5.2.tgz" - integrity sha512-htGVVroW0tdHgMYwKWkxWvVoG2RlAdDXRO1RQxYDvOBQsaV0nZsgKkw0EJJJ3urTYnwKskn/MXm305cOgRxD2w== - -"@next/swc-linux-x64-musl@13.5.2": - version "13.5.2" - resolved "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.5.2.tgz" - integrity sha512-UBD333GxbHVGi7VDJPPDD1bKnx30gn2clifNJbla7vo5nmBV+x5adyARg05RiT9amIpda6yzAEEUu+s774ldkw== - -"@next/swc-win32-arm64-msvc@13.5.2": - version "13.5.2" - resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.5.2.tgz#c3734235e85458b76ec170dd0d6c13c2fdfac5ed" - integrity sha512-Em9ApaSFIQnWXRT3K6iFnr9uBXymixLc65Xw4eNt7glgH0eiXpg+QhjmgI2BFyc7k4ZIjglfukt9saNpEyolWA== - -"@next/swc-win32-ia32-msvc@13.5.2": - version "13.5.2" - resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.5.2.tgz#cf16184af9be8b8f7750833a441c116b7a76b273" - integrity sha512-TBACBvvNYU+87X0yklSuAseqdpua8m/P79P0SG1fWUvWDDA14jASIg7kr86AuY5qix47nZLEJ5WWS0L20jAUNw== - -"@next/swc-win32-x64-msvc@13.5.2": - version "13.5.2" - resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.5.2.tgz#cf8db00763d9219567655b90853b7d484f3fcad6" - integrity sha512-LfTHt+hTL8w7F9hnB3H4nRasCzLD/fP+h4/GUVBTxrkMJOnh/7OZ0XbYDKO/uuWwryJS9kZjhxcruBiYwc5UDw== +"@next/swc-darwin-arm64@14.0.0": + version "14.0.0" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.0.0.tgz#74599aec959b2c425f603447f852ac5eefbb3fd6" + integrity sha512-HQKi159jCz4SRsPesVCiNN6tPSAFUkOuSkpJsqYTIlbHLKr1mD6be/J0TvWV6fwJekj81bZV9V/Tgx3C2HO9lA== + +"@next/swc-darwin-x64@14.0.0": + version "14.0.0" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-14.0.0.tgz#6f628a1a13b4bc09c0450bb171703f60ca7a6c56" + integrity sha512-4YyQLMSaCgX/kgC1jjF3s3xSoBnwHuDhnF6WA1DWNEYRsbOOPWjcYhv8TKhRe2ApdOam+VfQSffC4ZD+X4u1Cg== + +"@next/swc-linux-arm64-gnu@14.0.0": + version "14.0.0" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.0.0.tgz#0088f3d13b253657333b6aced57e1e278452e766" + integrity sha512-io7fMkJ28Glj7SH8yvnlD6naIhRDnDxeE55CmpQkj3+uaA2Hko6WGY2pT5SzpQLTnGGnviK85cy8EJ2qsETj/g== + +"@next/swc-linux-arm64-musl@14.0.0": + version "14.0.0" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.0.0.tgz#44d7c9be63dfdea2d4feeba515a8c80ca56f2d87" + integrity sha512-nC2h0l1Jt8LEzyQeSs/BKpXAMe0mnHIMykYALWaeddTqCv5UEN8nGO3BG8JAqW/Y8iutqJsaMe2A9itS0d/r8w== + +"@next/swc-linux-x64-gnu@14.0.0": + version "14.0.0" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.0.0.tgz#064b7ca6da98ca7468ae5d97370e73a8bc2eee76" + integrity sha512-Wf+WjXibJQ7hHXOdNOmSMW5bxeJHVf46Pwb3eLSD2L76NrytQlif9NH7JpHuFlYKCQGfKfgSYYre5rIfmnSwQw== + +"@next/swc-linux-x64-musl@14.0.0": + version "14.0.0" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.0.0.tgz#c2a66bd7d5f54a3a5faa14ff9bce93a507d2135d" + integrity sha512-WTZb2G7B+CTsdigcJVkRxfcAIQj7Lf0ipPNRJ3vlSadU8f0CFGv/ST+sJwF5eSwIe6dxKoX0DG6OljDBaad+rg== + +"@next/swc-win32-arm64-msvc@14.0.0": + version "14.0.0" + resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.0.0.tgz#a657568bc1bf6f3bfabc07034342ef1942f14e31" + integrity sha512-7R8/x6oQODmNpnWVW00rlWX90sIlwluJwcvMT6GXNIBOvEf01t3fBg0AGURNKdTJg2xNuP7TyLchCL7Lh2DTiw== + +"@next/swc-win32-ia32-msvc@14.0.0": + version "14.0.0" + resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.0.0.tgz#fe27ae6c165d6d74bf80f7dc37d67401c2148518" + integrity sha512-RLK1nELvhCnxaWPF07jGU4x3tjbyx2319q43loZELqF0+iJtKutZ+Lk8SVmf/KiJkYBc7Cragadz7hb3uQvz4g== + +"@next/swc-win32-x64-msvc@14.0.0": + version "14.0.0" + resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.0.0.tgz#fef677c3f4b62443e0b02d3d59440f6b0b8eb1f4" + integrity sha512-g6hLf1SUko+hnnaywQQZzzb3BRecQsoKkF3o/C+F+dOA4w/noVAJngUVkfwF0+2/8FzNznM7ofM6TGZO9svn7w== "@nodelib/fs.scandir@2.1.5": version "2.1.5" @@ -500,6 +505,11 @@ "@types/react" "*" hoist-non-react-statics "^3.3.0" +"@types/json-schema@^7.0.12": + version "7.0.14" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.14.tgz#74a97a5573980802f32c8e47b663530ab3b6b7d1" + integrity sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw== + "@types/json5@^0.0.29": version "0.0.29" resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz" @@ -548,11 +558,33 @@ resolved "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz" integrity sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ== +"@types/semver@^7.5.0": + version "7.5.4" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.4.tgz#0a41252ad431c473158b22f9bfb9a63df7541cff" + integrity sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ== + "@types/use-sync-external-store@^0.0.3": version "0.0.3" resolved "https://registry.yarnpkg.com/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz#b6725d5f4af24ace33b36fafd295136e75509f43" integrity sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA== +"@typescript-eslint/eslint-plugin@^6.9.1": + version "6.9.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.9.1.tgz#d8ce497dc0ed42066e195c8ecc40d45c7b1254f4" + integrity sha512-w0tiiRc9I4S5XSXXrMHOWgHgxbrBn1Ro+PmiYhSg2ZVdxrAJtQgzU5o2m1BfP6UOn7Vxcc6152vFjQfmZR4xEg== + dependencies: + "@eslint-community/regexpp" "^4.5.1" + "@typescript-eslint/scope-manager" "6.9.1" + "@typescript-eslint/type-utils" "6.9.1" + "@typescript-eslint/utils" "6.9.1" + "@typescript-eslint/visitor-keys" "6.9.1" + debug "^4.3.4" + graphemer "^1.4.0" + ignore "^5.2.4" + natural-compare "^1.4.0" + semver "^7.5.4" + ts-api-utils "^1.0.1" + "@typescript-eslint/parser@^5.4.2 || ^6.0.0": version "6.7.2" resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.7.2.tgz" @@ -572,11 +604,34 @@ "@typescript-eslint/types" "6.7.2" "@typescript-eslint/visitor-keys" "6.7.2" +"@typescript-eslint/scope-manager@6.9.1": + version "6.9.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.9.1.tgz#e96afeb9a68ad1cd816dba233351f61e13956b75" + integrity sha512-38IxvKB6NAne3g/+MyXMs2Cda/Sz+CEpmm+KLGEM8hx/CvnSRuw51i8ukfwB/B/sESdeTGet1NH1Wj7I0YXswg== + dependencies: + "@typescript-eslint/types" "6.9.1" + "@typescript-eslint/visitor-keys" "6.9.1" + +"@typescript-eslint/type-utils@6.9.1": + version "6.9.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.9.1.tgz#efd5db20ed35a74d3c7d8fba51b830ecba09ce32" + integrity sha512-eh2oHaUKCK58qIeYp19F5V5TbpM52680sB4zNSz29VBQPTWIlE/hCj5P5B1AChxECe/fmZlspAWFuRniep1Skg== + dependencies: + "@typescript-eslint/typescript-estree" "6.9.1" + "@typescript-eslint/utils" "6.9.1" + debug "^4.3.4" + ts-api-utils "^1.0.1" + "@typescript-eslint/types@6.7.2": version "6.7.2" resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.7.2.tgz" integrity sha512-flJYwMYgnUNDAN9/GAI3l8+wTmvTYdv64fcH8aoJK76Y+1FCZ08RtI5zDerM/FYT5DMkAc+19E4aLmd5KqdFyg== +"@typescript-eslint/types@6.9.1": + version "6.9.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.9.1.tgz#a6cfc20db0fcedcb2f397ea728ef583e0ee72459" + integrity sha512-BUGslGOb14zUHOUmDB2FfT6SI1CcZEJYfF3qFwBeUrU6srJfzANonwRYHDpLBuzbq3HaoF2XL2hcr01c8f8OaQ== + "@typescript-eslint/typescript-estree@6.7.2": version "6.7.2" resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.2.tgz" @@ -590,6 +645,32 @@ semver "^7.5.4" ts-api-utils "^1.0.1" +"@typescript-eslint/typescript-estree@6.9.1": + version "6.9.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.9.1.tgz#8c77910a49a04f0607ba94d78772da07dab275ad" + integrity sha512-U+mUylTHfcqeO7mLWVQ5W/tMLXqVpRv61wm9ZtfE5egz7gtnmqVIw9ryh0mgIlkKk9rZLY3UHygsBSdB9/ftyw== + dependencies: + "@typescript-eslint/types" "6.9.1" + "@typescript-eslint/visitor-keys" "6.9.1" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/utils@6.9.1": + version "6.9.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.9.1.tgz#763da41281ef0d16974517b5f0d02d85897a1c1e" + integrity sha512-L1T0A5nFdQrMVunpZgzqPL6y2wVreSyHhKGZryS6jrEN7bD9NplVAyMryUhXsQ4TWLnZmxc2ekar/lSGIlprCA== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@types/json-schema" "^7.0.12" + "@types/semver" "^7.5.0" + "@typescript-eslint/scope-manager" "6.9.1" + "@typescript-eslint/types" "6.9.1" + "@typescript-eslint/typescript-estree" "6.9.1" + semver "^7.5.4" + "@typescript-eslint/visitor-keys@6.7.2": version "6.7.2" resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.2.tgz" @@ -598,6 +679,14 @@ "@typescript-eslint/types" "6.7.2" eslint-visitor-keys "^3.4.1" +"@typescript-eslint/visitor-keys@6.9.1": + version "6.9.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.9.1.tgz#6753a9225a0ba00459b15d6456b9c2780b66707d" + integrity sha512-MUaPUe/QRLEffARsmNfmpghuQkW436DvESW+h+M52w0coICHRfD6Np9/K6PdACwnrq1HmuLl+cSPZaJmeVPkSw== + dependencies: + "@typescript-eslint/types" "6.9.1" + eslint-visitor-keys "^3.4.1" + acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" @@ -1246,6 +1335,11 @@ eslint-config-next@13.5.2: eslint-plugin-react "^7.33.2" eslint-plugin-react-hooks "^4.5.0 || 5.0.0-canary-7118f5dd7-20230705" +eslint-config-prettier@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz#eb25485946dd0c66cd216a46232dc05451518d1f" + integrity sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw== + eslint-import-resolver-node@^0.3.6, eslint-import-resolver-node@^0.3.7: version "0.3.9" resolved "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz" @@ -1741,7 +1835,7 @@ html-tokenize@^2.0.0: readable-stream "~1.0.27-1" through2 "~0.4.1" -ignore@^5.2.0: +ignore@^5.2.0, ignore@^5.2.4: version "5.2.4" resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz" integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== @@ -2169,7 +2263,7 @@ mz@^2.7.0: object-assign "^4.0.1" thenify-all "^1.0.0" -nanoid@^3.3.4, nanoid@^3.3.6: +nanoid@^3.3.6: version "3.3.6" resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz" integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== @@ -2179,29 +2273,28 @@ natural-compare@^1.4.0: resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== -next@13.5.2: - version "13.5.2" - resolved "https://registry.npmjs.org/next/-/next-13.5.2.tgz" - integrity sha512-vog4UhUaMYAzeqfiAAmgB/QWLW7p01/sg+2vn6bqc/CxHFYizMzLv6gjxKzl31EVFkfl/F+GbxlKizlkTE9RdA== +next@14.0.0: + version "14.0.0" + resolved "https://registry.yarnpkg.com/next/-/next-14.0.0.tgz#8ec0d7a1d85a2361240479a51608d4b8c6b0c613" + integrity sha512-J0jHKBJpB9zd4+c153sair0sz44mbaCHxggs8ryVXSFBuBqJ8XdE9/ozoV85xGh2VnSjahwntBZZgsihL9QznA== dependencies: - "@next/env" "13.5.2" + "@next/env" "14.0.0" "@swc/helpers" "0.5.2" busboy "1.6.0" caniuse-lite "^1.0.30001406" - postcss "8.4.14" + postcss "8.4.31" styled-jsx "5.1.1" watchpack "2.4.0" - zod "3.21.4" optionalDependencies: - "@next/swc-darwin-arm64" "13.5.2" - "@next/swc-darwin-x64" "13.5.2" - "@next/swc-linux-arm64-gnu" "13.5.2" - "@next/swc-linux-arm64-musl" "13.5.2" - "@next/swc-linux-x64-gnu" "13.5.2" - "@next/swc-linux-x64-musl" "13.5.2" - "@next/swc-win32-arm64-msvc" "13.5.2" - "@next/swc-win32-ia32-msvc" "13.5.2" - "@next/swc-win32-x64-msvc" "13.5.2" + "@next/swc-darwin-arm64" "14.0.0" + "@next/swc-darwin-x64" "14.0.0" + "@next/swc-linux-arm64-gnu" "14.0.0" + "@next/swc-linux-arm64-musl" "14.0.0" + "@next/swc-linux-x64-gnu" "14.0.0" + "@next/swc-linux-x64-musl" "14.0.0" + "@next/swc-win32-arm64-msvc" "14.0.0" + "@next/swc-win32-ia32-msvc" "14.0.0" + "@next/swc-win32-x64-msvc" "14.0.0" node-releases@^2.0.13: version "2.0.13" @@ -2437,15 +2530,6 @@ postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0: resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@8.4.14: - version "8.4.14" - resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz" - integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig== - dependencies: - nanoid "^3.3.4" - picocolors "^1.0.0" - source-map-js "^1.0.2" - postcss@8.4.30, postcss@^8.4.23: version "8.4.30" resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.30.tgz" @@ -2455,11 +2539,25 @@ postcss@8.4.30, postcss@^8.4.23: picocolors "^1.0.0" source-map-js "^1.0.2" +postcss@8.4.31: + version "8.4.31" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" + integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== + dependencies: + nanoid "^3.3.6" + picocolors "^1.0.0" + source-map-js "^1.0.2" + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== +prettier@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.0.3.tgz#432a51f7ba422d1469096c0fdc28e235db8f9643" + integrity sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg== + process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" @@ -3165,8 +3263,3 @@ yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== - -zod@3.21.4: - version "3.21.4" - resolved "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz" - integrity sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==