diff --git a/.gitignore b/.gitignore index 00e69531f..b630e3dc3 100644 --- a/.gitignore +++ b/.gitignore @@ -109,3 +109,5 @@ dist .DS_Store _local +.rollup.cache +packages/cli diff --git a/README.md b/README.md index da2ac452f..5f230856b 100644 --- a/README.md +++ b/README.md @@ -7,8 +7,11 @@ Explore the features on [Mesh Playground](https://mesh.martify.io/). ## Guides and documentations - [Start a Web3 app on Next.js](https://mesh.martify.io/guides/nextjs) -- [CIP30 wallets intergration](https://mesh.martify.io/apis/browserwallet) -- [Transaction building, minting, burning, smart contracts and more](https://mesh.martify.io/apis/transaction) +- [Minting on Node.js](https://mesh.martify.io/guides/mintingonnodejs) +- [App Wallet - Wallet for building transactions on your applications](https://mesh.martify.io/apis/appwallet) +- [Browser Wallet - CIP30 wallets intergration](https://mesh.martify.io/apis/browserwallet) +- [Transaction - Building, minting, burning, smart contracts and more](https://mesh.martify.io/apis/transaction) +- [Resolvers - Helpful functions that you need while building dApps](https://mesh.martify.io/apis/resolvers) ## Why use Mesh - Always up to date - Vasil-ready, developed promptly as the network updates so your app always works diff --git a/examples/NextJS-ConnectWallet/.gitkeep b/examples/NextJS-ConnectWallet/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/examples/NodeJS-Minting/package.json b/examples/NodeJS-Minting/package.json index 2f04c14d5..ad7a8b95f 100644 --- a/examples/NodeJS-Minting/package.json +++ b/examples/NodeJS-Minting/package.json @@ -1,5 +1,5 @@ { - "name": "mesh-mint-nodejs", + "name": "nodejs-minting", "version": "1.0.0", "main": "index.js", "license": "MIT", diff --git a/examples/nextjs-connectwallet/.eslintrc.json b/examples/nextjs-connectwallet/.eslintrc.json new file mode 100644 index 000000000..bffb357a7 --- /dev/null +++ b/examples/nextjs-connectwallet/.eslintrc.json @@ -0,0 +1,3 @@ +{ + "extends": "next/core-web-vitals" +} diff --git a/examples/nextjs-connectwallet/.gitignore b/examples/nextjs-connectwallet/.gitignore new file mode 100644 index 000000000..c87c9b392 --- /dev/null +++ b/examples/nextjs-connectwallet/.gitignore @@ -0,0 +1,36 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# local env files +.env*.local + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/examples/nextjs-connectwallet/README.md b/examples/nextjs-connectwallet/README.md new file mode 100644 index 000000000..c87e0421d --- /dev/null +++ b/examples/nextjs-connectwallet/README.md @@ -0,0 +1,34 @@ +This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app). + +## Getting Started + +First, run the development server: + +```bash +npm run dev +# or +yarn dev +``` + +Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. + +You can start editing the page by modifying `pages/index.tsx`. The page auto-updates as you edit the file. + +[API routes](https://nextjs.org/docs/api-routes/introduction) can be accessed on [http://localhost:3000/api/hello](http://localhost:3000/api/hello). This endpoint can be edited in `pages/api/hello.ts`. + +The `pages/api` directory is mapped to `/api/*`. Files in this directory are treated as [API routes](https://nextjs.org/docs/api-routes/introduction) instead of React pages. + +## Learn More + +To learn more about Next.js, take a look at the following resources: + +- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. +- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. + +You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome! + +## Deploy on Vercel + +The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. + +Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details. diff --git a/examples/nextjs-connectwallet/components/connectWallet.tsx b/examples/nextjs-connectwallet/components/connectWallet.tsx new file mode 100644 index 000000000..9529ab2ad --- /dev/null +++ b/examples/nextjs-connectwallet/components/connectWallet.tsx @@ -0,0 +1,59 @@ +import { useEffect, useState } from 'react'; +import { BrowserWallet } from '@martifylabs/mesh'; +import type { Wallet } from '@martifylabs/mesh'; +import useWallet from '../contexts/wallet'; + +export default function ConnectWallet() { + const [availableWallets, setAvailableWallets] = useState< + Wallet[] | undefined + >(undefined); + const { walletNameConnected, connecting, connectWallet, walletConnected } = + useWallet(); + + useEffect(() => { + async function init() { + setAvailableWallets(BrowserWallet.getInstalledWallets()); + } + init(); + }, []); + + return ( + <> + {availableWallets + ? availableWallets.length == 0 + ? 'No wallets found' + : availableWallets.map((wallet, i) => ( + + )) + : ''} + + ); +} diff --git a/examples/nextjs-connectwallet/contexts/wallet.tsx b/examples/nextjs-connectwallet/contexts/wallet.tsx new file mode 100644 index 000000000..e61ec44a8 --- /dev/null +++ b/examples/nextjs-connectwallet/contexts/wallet.tsx @@ -0,0 +1,55 @@ +import React, { + createContext, + useState, + useContext, + useMemo, + ReactNode, +} from 'react'; +import { BrowserWallet } from '@martifylabs/mesh'; + +const WalletContext = createContext({ + wallet: {} as BrowserWallet, + connecting: false, + walletNameConnected: '', + walletConnected: false, + connectWallet: async (walletName: string) => {}, +}); + +export const WalletProvider = ({ children }: { children: ReactNode }) => { + const [wallet, setWallet] = useState({} as BrowserWallet); + const [walletConnected, setWalletConnected] = useState(false); + const [connecting, setConnecting] = useState(false); + const [walletNameConnected, setWalletNameConnected] = useState(''); + + const connectWallet = async (walletName: string) => { + setConnecting(true); + const _wallet = await BrowserWallet.enable(walletName); + if (_wallet) { + setWallet(_wallet); + setWalletNameConnected(walletName); + setWalletConnected(true); + } + setConnecting(false); + }; + + const memoedValue = useMemo( + () => ({ + wallet, + connecting, + walletNameConnected, + walletConnected, + connectWallet, + }), + [wallet, walletConnected, connecting, walletNameConnected] + ); + + return ( + + {children} + + ); +}; + +export default function useWallet() { + return useContext(WalletContext); +} diff --git a/examples/nextjs-connectwallet/next.config.js b/examples/nextjs-connectwallet/next.config.js new file mode 100644 index 000000000..87fac1399 --- /dev/null +++ b/examples/nextjs-connectwallet/next.config.js @@ -0,0 +1,11 @@ +/** @type {import('next').NextConfig} */ +const nextConfig = { + reactStrictMode: true, + webpack: function (config, options) { + config.experiments = { + asyncWebAssembly: true, + }; + return config; + }, +}; +module.exports = nextConfig; \ No newline at end of file diff --git a/examples/nextjs-connectwallet/package.json b/examples/nextjs-connectwallet/package.json new file mode 100644 index 000000000..5baa407d1 --- /dev/null +++ b/examples/nextjs-connectwallet/package.json @@ -0,0 +1,25 @@ +{ + "name": "nextjs-connectwallet", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "next lint" + }, + "dependencies": { + "@martifylabs/mesh": "^1.1.0", + "next": "12.3.1", + "react": "18.2.0", + "react-dom": "18.2.0" + }, + "devDependencies": { + "@types/node": "18.8.2", + "@types/react": "18.0.21", + "@types/react-dom": "18.0.6", + "eslint": "8.24.0", + "eslint-config-next": "12.3.1", + "typescript": "4.8.4" + } +} diff --git a/examples/nextjs-connectwallet/pages/_app.tsx b/examples/nextjs-connectwallet/pages/_app.tsx new file mode 100644 index 000000000..dc93851e4 --- /dev/null +++ b/examples/nextjs-connectwallet/pages/_app.tsx @@ -0,0 +1,13 @@ +import "../styles/globals.css"; +import type { AppProps } from "next/app"; +import { WalletProvider } from "../contexts/wallet"; + +function MyApp({ Component, pageProps }: AppProps) { + return ( + + + + ); +} + +export default MyApp; diff --git a/examples/nextjs-connectwallet/pages/api/hello.ts b/examples/nextjs-connectwallet/pages/api/hello.ts new file mode 100644 index 000000000..f8bcc7e5c --- /dev/null +++ b/examples/nextjs-connectwallet/pages/api/hello.ts @@ -0,0 +1,13 @@ +// Next.js API route support: https://nextjs.org/docs/api-routes/introduction +import type { NextApiRequest, NextApiResponse } from 'next' + +type Data = { + name: string +} + +export default function handler( + req: NextApiRequest, + res: NextApiResponse +) { + res.status(200).json({ name: 'John Doe' }) +} diff --git a/examples/nextjs-connectwallet/pages/index.tsx b/examples/nextjs-connectwallet/pages/index.tsx new file mode 100644 index 000000000..fa2fb7043 --- /dev/null +++ b/examples/nextjs-connectwallet/pages/index.tsx @@ -0,0 +1,52 @@ +import { useState } from "react"; +import type { NextPage } from "next"; +import useWallet from "../contexts/wallet"; +import ConnectWallet from "../components/connectWallet"; + +const Home: NextPage = () => { + const { wallet, walletConnected, connecting } = useWallet(); + const [assets, setAssets] = useState(null); + const [loading, setLoading] = useState(false); + + async function getAssets() { + if (wallet) { + setLoading(true); + const _assets = await wallet.getAssets(); + setAssets(_assets); + setLoading(false); + } + } + + return ( +
+

Connect Wallet

+ + {walletConnected && ( + <> +

Get Wallet Assets

+ {assets ? ( +
+              
+                {JSON.stringify(assets, null, 2)}
+              
+            
+ ) : ( + + )} + + )} +
+ ); +}; + +export default Home; diff --git a/examples/nextjs-connectwallet/public/favicon.ico b/examples/nextjs-connectwallet/public/favicon.ico new file mode 100644 index 000000000..718d6fea4 Binary files /dev/null and b/examples/nextjs-connectwallet/public/favicon.ico differ diff --git a/examples/nextjs-connectwallet/public/vercel.svg b/examples/nextjs-connectwallet/public/vercel.svg new file mode 100644 index 000000000..fbf0e25a6 --- /dev/null +++ b/examples/nextjs-connectwallet/public/vercel.svg @@ -0,0 +1,4 @@ + + + \ No newline at end of file diff --git a/examples/nextjs-connectwallet/styles/Home.module.css b/examples/nextjs-connectwallet/styles/Home.module.css new file mode 100644 index 000000000..bd50f42ff --- /dev/null +++ b/examples/nextjs-connectwallet/styles/Home.module.css @@ -0,0 +1,129 @@ +.container { + padding: 0 2rem; +} + +.main { + min-height: 100vh; + padding: 4rem 0; + flex: 1; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} + +.footer { + display: flex; + flex: 1; + padding: 2rem 0; + border-top: 1px solid #eaeaea; + justify-content: center; + align-items: center; +} + +.footer a { + display: flex; + justify-content: center; + align-items: center; + flex-grow: 1; +} + +.title a { + color: #0070f3; + text-decoration: none; +} + +.title a:hover, +.title a:focus, +.title a:active { + text-decoration: underline; +} + +.title { + margin: 0; + line-height: 1.15; + font-size: 4rem; +} + +.title, +.description { + text-align: center; +} + +.description { + margin: 4rem 0; + line-height: 1.5; + font-size: 1.5rem; +} + +.code { + background: #fafafa; + border-radius: 5px; + padding: 0.75rem; + font-size: 1.1rem; + font-family: Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, + Bitstream Vera Sans Mono, Courier New, monospace; +} + +.grid { + display: flex; + align-items: center; + justify-content: center; + flex-wrap: wrap; + max-width: 800px; +} + +.card { + margin: 1rem; + padding: 1.5rem; + text-align: left; + color: inherit; + text-decoration: none; + border: 1px solid #eaeaea; + border-radius: 10px; + transition: color 0.15s ease, border-color 0.15s ease; + max-width: 300px; +} + +.card:hover, +.card:focus, +.card:active { + color: #0070f3; + border-color: #0070f3; +} + +.card h2 { + margin: 0 0 1rem 0; + font-size: 1.5rem; +} + +.card p { + margin: 0; + font-size: 1.25rem; + line-height: 1.5; +} + +.logo { + height: 1em; + margin-left: 0.5rem; +} + +@media (max-width: 600px) { + .grid { + width: 100%; + flex-direction: column; + } +} + +@media (prefers-color-scheme: dark) { + .card, + .footer { + border-color: #222; + } + .code { + background: #111; + } + .logo img { + filter: invert(1); + } +} diff --git a/examples/nextjs-connectwallet/styles/globals.css b/examples/nextjs-connectwallet/styles/globals.css new file mode 100644 index 000000000..4f1842163 --- /dev/null +++ b/examples/nextjs-connectwallet/styles/globals.css @@ -0,0 +1,26 @@ +html, +body { + padding: 0; + margin: 0; + font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, + Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif; +} + +a { + color: inherit; + text-decoration: none; +} + +* { + box-sizing: border-box; +} + +@media (prefers-color-scheme: dark) { + html { + color-scheme: dark; + } + body { + color: white; + background: black; + } +} diff --git a/examples/nextjs-connectwallet/tsconfig.json b/examples/nextjs-connectwallet/tsconfig.json new file mode 100644 index 000000000..99710e857 --- /dev/null +++ b/examples/nextjs-connectwallet/tsconfig.json @@ -0,0 +1,20 @@ +{ + "compilerOptions": { + "target": "es5", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"], + "exclude": ["node_modules"] +} diff --git a/examples/nextjs-connectwallet/yarn.lock b/examples/nextjs-connectwallet/yarn.lock new file mode 100644 index 000000000..78421e35a --- /dev/null +++ b/examples/nextjs-connectwallet/yarn.lock @@ -0,0 +1,1996 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/runtime-corejs3@^7.10.2": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.19.1.tgz#f0cbbe7edda7c4109cd253bb1dee99aba4594ad9" + integrity sha512-j2vJGnkopRzH+ykJ8h68wrHnEUmtK//E723jjixiAl/PPf6FhqY/vYRcMVlNydRKQjQsTsYEjpx+DZMIvnGk/g== + dependencies: + core-js-pure "^3.25.1" + regenerator-runtime "^0.13.4" + +"@babel/runtime@^7.10.2", "@babel/runtime@^7.18.9": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.19.0.tgz#22b11c037b094d27a8a2504ea4dcff00f50e2259" + integrity sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA== + dependencies: + regenerator-runtime "^0.13.4" + +"@emurgo/cardano-message-signing-browser@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@emurgo/cardano-message-signing-browser/-/cardano-message-signing-browser-1.0.1.tgz#fb0a481575131d15bf15bb8781cb03bd3f7d56b0" + integrity sha512-yC4Ymq44WR0bXO1wzxCoyc2W/RD1KSAla0oYhin7IYoVkp2raGp8wt7QNF4pDdNnTcejn5fyPyYY9dL4666H1w== + +"@emurgo/cardano-message-signing-nodejs@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@emurgo/cardano-message-signing-nodejs/-/cardano-message-signing-nodejs-1.0.1.tgz#b2fa1f7541055a6c4b8e805492b1a9362bea5835" + integrity sha512-PoKh1tQnJX18f8iEr8Jk1KXxKCn9eqaSslMI1pyOJvYRJhQVDLCh0+9YReufjp0oFJIY1ShcrR+4/WnECVZUKQ== + +"@emurgo/cardano-serialization-lib-browser@11.0.5": + version "11.0.5" + resolved "https://registry.yarnpkg.com/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-11.0.5.tgz#1cb3119b9b934a38782343020d9e22b455e66bd6" + integrity sha512-iDXn6pjK3TSrFyUnLMf5lJzBgdf2aV2NTfM+Xc9t9j625W7/f/oQghUIBNpdJlHa0v11oPYFYRY5T1nFgb2mHA== + +"@emurgo/cardano-serialization-lib-nodejs@11.0.5": + version "11.0.5" + resolved "https://registry.yarnpkg.com/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-11.0.5.tgz#3563c9fdc9ec9e0e71f8a75f3d7d9a872bf96661" + integrity sha512-6SBlRunFMLj9sC3YmMuJzPW0lY6MYOwMKft+/lkUtZPgUWsyzi7+d24iS3E2ThPDY1seS43dzHwZAeZxBH5KkQ== + +"@emurgo/cip14-js@3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@emurgo/cip14-js/-/cip14-js-3.0.1.tgz#68bcf6db1e4891d347e19f1e643df9be5ebc92dc" + integrity sha512-u0XobeajNSlmeGBmY3ntA+NE/Vns7hKP0xrFzWyAO7YubETOifTjUddJN4gpvXE4S08DPUcNBVe3sx1m5GPIOg== + dependencies: + bech32 "2.0.0" + blake2b "2.1.3" + +"@eslint/eslintrc@^1.3.2": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.3.2.tgz#58b69582f3b7271d8fa67fe5251767a5b38ea356" + integrity sha512-AXYd23w1S/bv3fTs3Lz0vjiYemS08jWkI3hYyS9I1ry+0f+Yjs1wm+sU0BS8qDOPrBIkp4qHYC16I8uVtpLajQ== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.4.0" + globals "^13.15.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@humanwhocodes/config-array@^0.10.5": + version "0.10.7" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.10.7.tgz#6d53769fd0c222767e6452e8ebda825c22e9f0dc" + integrity sha512-MDl6D6sBsaV452/QSdX+4CXIjZhIcI0PELsxUjk4U828yd58vk3bTIvk/6w5FY+4hIy9sLW0sfrV7K7Kc++j/w== + dependencies: + "@humanwhocodes/object-schema" "^1.2.1" + debug "^4.1.1" + minimatch "^3.0.4" + +"@humanwhocodes/gitignore-to-minimatch@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz#316b0a63b91c10e53f242efb4ace5c3b34e8728d" + integrity sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA== + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== + +"@martifylabs/mesh@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@martifylabs/mesh/-/mesh-1.1.0.tgz#dd2c774e6de0e3913acbe3f69e9e62d1c7f06a84" + integrity sha512-8lyZhvHcIPHdslGoc1boE0Dubdg2VQos0n71EG/tH/5CdlVqNUq/Pi05sOtKBBSJDwwyesyRsGDI/jjme7TSlA== + dependencies: + "@emurgo/cardano-message-signing-browser" "1.0.1" + "@emurgo/cardano-message-signing-nodejs" "1.0.1" + "@emurgo/cardano-serialization-lib-browser" "11.0.5" + "@emurgo/cardano-serialization-lib-nodejs" "11.0.5" + "@emurgo/cip14-js" "3.0.1" + axios "0.27.2" + bip39 "3.0.4" + nanoid "3.3.4" + +"@next/env@12.3.1": + version "12.3.1" + resolved "https://registry.yarnpkg.com/@next/env/-/env-12.3.1.tgz#18266bd92de3b4aa4037b1927aa59e6f11879260" + integrity sha512-9P9THmRFVKGKt9DYqeC2aKIxm8rlvkK38V1P1sRE7qyoPBIs8l9oo79QoSdPtOWfzkbDAVUqvbQGgTMsb8BtJg== + +"@next/eslint-plugin-next@12.3.1": + version "12.3.1" + resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-12.3.1.tgz#b821f27b0f175954d8d18e5d323fce040ecc79a6" + integrity sha512-sw+lTf6r6P0j+g/n9y4qdWWI2syPqZx+uc0+B/fRENqfR3KpSid6MIKqc9gNwGhJASazEQ5b3w8h4cAET213jw== + dependencies: + glob "7.1.7" + +"@next/swc-android-arm-eabi@12.3.1": + version "12.3.1" + resolved "https://registry.yarnpkg.com/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.3.1.tgz#b15ce8ad376102a3b8c0f3c017dde050a22bb1a3" + integrity sha512-i+BvKA8tB//srVPPQxIQN5lvfROcfv4OB23/L1nXznP+N/TyKL8lql3l7oo2LNhnH66zWhfoemg3Q4VJZSruzQ== + +"@next/swc-android-arm64@12.3.1": + version "12.3.1" + resolved "https://registry.yarnpkg.com/@next/swc-android-arm64/-/swc-android-arm64-12.3.1.tgz#85d205f568a790a137cb3c3f720d961a2436ac9c" + integrity sha512-CmgU2ZNyBP0rkugOOqLnjl3+eRpXBzB/I2sjwcGZ7/Z6RcUJXK5Evz+N0ucOxqE4cZ3gkTeXtSzRrMK2mGYV8Q== + +"@next/swc-darwin-arm64@12.3.1": + version "12.3.1" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.3.1.tgz#b105457d6760a7916b27e46c97cb1a40547114ae" + integrity sha512-hT/EBGNcu0ITiuWDYU9ur57Oa4LybD5DOQp4f22T6zLfpoBMfBibPtR8XktXmOyFHrL/6FC2p9ojdLZhWhvBHg== + +"@next/swc-darwin-x64@12.3.1": + version "12.3.1" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-12.3.1.tgz#6947b39082271378896b095b6696a7791c6e32b1" + integrity sha512-9S6EVueCVCyGf2vuiLiGEHZCJcPAxglyckTZcEwLdJwozLqN0gtS0Eq0bQlGS3dH49Py/rQYpZ3KVWZ9BUf/WA== + +"@next/swc-freebsd-x64@12.3.1": + version "12.3.1" + resolved "https://registry.yarnpkg.com/@next/swc-freebsd-x64/-/swc-freebsd-x64-12.3.1.tgz#2b6c36a4d84aae8b0ea0e0da9bafc696ae27085a" + integrity sha512-qcuUQkaBZWqzM0F1N4AkAh88lLzzpfE6ImOcI1P6YeyJSsBmpBIV8o70zV+Wxpc26yV9vpzb+e5gCyxNjKJg5Q== + +"@next/swc-linux-arm-gnueabihf@12.3.1": + version "12.3.1" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.3.1.tgz#6e421c44285cfedac1f4631d5de330dd60b86298" + integrity sha512-diL9MSYrEI5nY2wc/h/DBewEDUzr/DqBjIgHJ3RUNtETAOB3spMNHvJk2XKUDjnQuluLmFMloet9tpEqU2TT9w== + +"@next/swc-linux-arm64-gnu@12.3.1": + version "12.3.1" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.3.1.tgz#8863f08a81f422f910af126159d2cbb9552ef717" + integrity sha512-o/xB2nztoaC7jnXU3Q36vGgOolJpsGG8ETNjxM1VAPxRwM7FyGCPHOMk1XavG88QZSQf+1r+POBW0tLxQOJ9DQ== + +"@next/swc-linux-arm64-musl@12.3.1": + version "12.3.1" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.3.1.tgz#0038f07cf0b259d70ae0c80890d826dfc775d9f3" + integrity sha512-2WEasRxJzgAmP43glFNhADpe8zB7kJofhEAVNbDJZANp+H4+wq+/cW1CdDi8DqjkShPEA6/ejJw+xnEyDID2jg== + +"@next/swc-linux-x64-gnu@12.3.1": + version "12.3.1" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.3.1.tgz#c66468f5e8181ffb096c537f0dbfb589baa6a9c1" + integrity sha512-JWEaMyvNrXuM3dyy9Pp5cFPuSSvG82+yABqsWugjWlvfmnlnx9HOQZY23bFq3cNghy5V/t0iPb6cffzRWylgsA== + +"@next/swc-linux-x64-musl@12.3.1": + version "12.3.1" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.3.1.tgz#c6269f3e96ac0395bc722ad97ce410ea5101d305" + integrity sha512-xoEWQQ71waWc4BZcOjmatuvPUXKTv6MbIFzpm4LFeCHsg2iwai0ILmNXf81rJR+L1Wb9ifEke2sQpZSPNz1Iyg== + +"@next/swc-win32-arm64-msvc@12.3.1": + version "12.3.1" + resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.3.1.tgz#83c639ee969cee36ce247c3abd1d9df97b5ecade" + integrity sha512-hswVFYQYIeGHE2JYaBVtvqmBQ1CppplQbZJS/JgrVI3x2CurNhEkmds/yqvDONfwfbttTtH4+q9Dzf/WVl3Opw== + +"@next/swc-win32-ia32-msvc@12.3.1": + version "12.3.1" + resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.3.1.tgz#52995748b92aa8ad053440301bc2c0d9fbcf27c2" + integrity sha512-Kny5JBehkTbKPmqulr5i+iKntO5YMP+bVM8Hf8UAmjSMVo3wehyLVc9IZkNmcbxi+vwETnQvJaT5ynYBkJ9dWA== + +"@next/swc-win32-x64-msvc@12.3.1": + version "12.3.1" + resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.3.1.tgz#27d71a95247a9eaee03d47adee7e3bd594514136" + integrity sha512-W1ijvzzg+kPEX6LAc+50EYYSEo0FVu7dmTE+t+DM4iOLqgGHoW9uYSz9wCVdkXOEEMP9xhXfGpcSxsfDucyPkA== + +"@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" + +"@rushstack/eslint-patch@^1.1.3": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz#8be36a1f66f3265389e90b5f9c9962146758f728" + integrity sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg== + +"@swc/helpers@0.4.11": + version "0.4.11" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.4.11.tgz#db23a376761b3d31c26502122f349a21b592c8de" + integrity sha512-rEUrBSGIoSFuYxwBYtlUFMlE2CwGhmW+w9355/5oduSw8e5h2+Tj4UrAGNNgP9915++wj5vkQo0UuOBqOAq4nw== + dependencies: + tslib "^2.4.0" + +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== + +"@types/node@11.11.6": + version "11.11.6" + resolved "https://registry.yarnpkg.com/@types/node/-/node-11.11.6.tgz#df929d1bb2eee5afdda598a41930fe50b43eaa6a" + integrity sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ== + +"@types/node@18.8.2": + version "18.8.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.8.2.tgz#17d42c6322d917764dd3d2d3a10d7884925de067" + integrity sha512-cRMwIgdDN43GO4xMWAfJAecYn8wV4JbsOGHNfNUIDiuYkUYAR5ec4Rj7IO2SAhFPEfpPtLtUTbbny/TCT7aDwA== + +"@types/prop-types@*": + version "15.7.5" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" + integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== + +"@types/react-dom@18.0.6": + version "18.0.6" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.0.6.tgz#36652900024842b74607a17786b6662dd1e103a1" + integrity sha512-/5OFZgfIPSwy+YuIBP/FgJnQnsxhZhjjrnxudMddeblOouIodEQ75X14Rr4wGSG/bknL+Omy9iWlLo1u/9GzAA== + dependencies: + "@types/react" "*" + +"@types/react@*", "@types/react@18.0.21": + version "18.0.21" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.21.tgz#b8209e9626bb00a34c76f55482697edd2b43cc67" + integrity sha512-7QUCOxvFgnD5Jk8ZKlUAhVcRj7GuJRjnjjiY/IUBWKgOlnvDvTMLD4RTF7NPyVmbRhNrbomZiOepg7M/2Kj1mA== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + +"@types/scheduler@*": + version "0.16.2" + resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" + integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== + +"@typescript-eslint/parser@^5.21.0": + version "5.39.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.39.0.tgz#93fa0bc980a3a501e081824f6097f7ca30aaa22b" + integrity sha512-PhxLjrZnHShe431sBAGHaNe6BDdxAASDySgsBCGxcBecVCi8NQWxQZMcizNA4g0pN51bBAn/FUfkWG3SDVcGlA== + dependencies: + "@typescript-eslint/scope-manager" "5.39.0" + "@typescript-eslint/types" "5.39.0" + "@typescript-eslint/typescript-estree" "5.39.0" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@5.39.0": + version "5.39.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.39.0.tgz#873e1465afa3d6c78d8ed2da68aed266a08008d0" + integrity sha512-/I13vAqmG3dyqMVSZPjsbuNQlYS082Y7OMkwhCfLXYsmlI0ca4nkL7wJ/4gjX70LD4P8Hnw1JywUVVAwepURBw== + dependencies: + "@typescript-eslint/types" "5.39.0" + "@typescript-eslint/visitor-keys" "5.39.0" + +"@typescript-eslint/types@5.39.0": + version "5.39.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.39.0.tgz#f4e9f207ebb4579fd854b25c0bf64433bb5ed78d" + integrity sha512-gQMZrnfEBFXK38hYqt8Lkwt8f4U6yq+2H5VDSgP/qiTzC8Nw8JO3OuSUOQ2qW37S/dlwdkHDntkZM6SQhKyPhw== + +"@typescript-eslint/typescript-estree@5.39.0": + version "5.39.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.39.0.tgz#c0316aa04a1a1f4f7f9498e3c13ef1d3dc4cf88b" + integrity sha512-qLFQP0f398sdnogJoLtd43pUgB18Q50QSA+BTE5h3sUxySzbWDpTSdgt4UyxNSozY/oDK2ta6HVAzvGgq8JYnA== + dependencies: + "@typescript-eslint/types" "5.39.0" + "@typescript-eslint/visitor-keys" "5.39.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/visitor-keys@5.39.0": + version "5.39.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.39.0.tgz#8f41f7d241b47257b081ddba5d3ce80deaae61e2" + integrity sha512-yyE3RPwOG+XJBLrhvsxAidUgybJVQ/hG8BhiJo0k8JSAYfk/CshVcxf0HwP4Jt7WZZ6vLmxdo1p6EyN3tzFTkg== + dependencies: + "@typescript-eslint/types" "5.39.0" + eslint-visitor-keys "^3.3.0" + +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn@^8.8.0: + version "8.8.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8" + integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== + +ajv@^6.10.0, ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +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-styles@^4.1.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" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +aria-query@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b" + integrity sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA== + dependencies: + "@babel/runtime" "^7.10.2" + "@babel/runtime-corejs3" "^7.10.2" + +array-includes@^3.1.4, array-includes@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.5.tgz#2c320010db8d31031fd2a5f6b3bbd4b1aad31bdb" + integrity sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.19.5" + get-intrinsic "^1.1.1" + is-string "^1.0.7" + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array.prototype.flat@^1.2.5: + version "1.3.0" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz#0b0c1567bf57b38b56b4c97b8aa72ab45e4adc7b" + integrity sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.2" + es-shim-unscopables "^1.0.0" + +array.prototype.flatmap@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz#a7e8ed4225f4788a70cd910abcf0791e76a5534f" + integrity sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.2" + es-shim-unscopables "^1.0.0" + +ast-types-flow@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" + integrity sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +axe-core@^4.4.3: + version "4.4.3" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.4.3.tgz#11c74d23d5013c0fa5d183796729bc3482bd2f6f" + integrity sha512-32+ub6kkdhhWick/UjvEwRchgoetXqTK14INLqbGm5U2TzBkBNF3nQtLYm8ovxSkQWArjEQvftCKryjZaATu3w== + +axios@0.27.2: + version "0.27.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.27.2.tgz#207658cc8621606e586c85db4b41a750e756d972" + integrity sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ== + dependencies: + follow-redirects "^1.14.9" + form-data "^4.0.0" + +axobject-query@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" + integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== + +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== + +bech32@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/bech32/-/bech32-2.0.0.tgz#078d3686535075c8c79709f054b1b226a133b355" + integrity sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg== + +bip39@3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/bip39/-/bip39-3.0.4.tgz#5b11fed966840b5e1b8539f0f54ab6392969b2a0" + integrity sha512-YZKQlb752TrUWqHWj7XAwCSjYEgGAk+/Aas3V7NyjQeZYsztO8JnQUaCWhcnL4T+jL8nvB8typ2jRPzTlgugNw== + dependencies: + "@types/node" "11.11.6" + create-hash "^1.1.0" + pbkdf2 "^3.0.9" + randombytes "^2.0.1" + +blake2b-wasm@^1.1.0: + version "1.1.7" + resolved "https://registry.yarnpkg.com/blake2b-wasm/-/blake2b-wasm-1.1.7.tgz#e4d075da10068e5d4c3ec1fb9accc4d186c55d81" + integrity sha512-oFIHvXhlz/DUgF0kq5B1CqxIDjIJwh9iDeUUGQUcvgiGz7Wdw03McEO7CfLBy7QKGdsydcMCgO9jFNBAFCtFcA== + dependencies: + nanoassert "^1.0.0" + +blake2b@2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/blake2b/-/blake2b-2.1.3.tgz#f5388be424768e7c6327025dad0c3c6d83351bca" + integrity sha512-pkDss4xFVbMb4270aCyGD3qLv92314Et+FsKzilCLxDz5DuZ2/1g3w4nmBbu6nKApPspnjG7JcwTjGZnduB1yg== + dependencies: + blake2b-wasm "^1.1.0" + nanoassert "^1.0.0" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +caniuse-lite@^1.0.30001406: + version "1.0.30001416" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001416.tgz#29692af8a6a11412f2d3cf9a59d588fcdd21ce4c" + integrity sha512-06wzzdAkCPZO+Qm4e/eNghZBDfVNDsCgw33T27OwBH9unE9S478OYw//Q2L7Npf/zBzs7rjZOszIFQkwQKAEqA== + +chalk@^4.0.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +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.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.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +core-js-pure@^3.25.1: + version "3.25.5" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.25.5.tgz#79716ba54240c6aa9ceba6eee08cf79471ba184d" + integrity sha512-oml3M22pHM+igfWHDfdLVq2ShWmjM2V4L+dQEBs0DWVIqEm9WHCwGAlZ6BmyBQGy5sFrJmcx+856D9lVKyGWYg== + +create-hash@^1.1.0, create-hash@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.4: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +cross-spawn@^7.0.2: + 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" + +csstype@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.1.tgz#841b532c45c758ee546a11d5bd7b7b473c8c30b9" + integrity sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw== + +damerau-levenshtein@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" + integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== + +debug@^2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^3.2.7: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +define-properties@^1.1.3, define-properties@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" + integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== + dependencies: + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +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== + +es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19.5: + version "1.20.3" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.3.tgz#90b143ff7aedc8b3d189bcfac7f1e3e3f81e9da1" + integrity sha512-AyrnaKVpMzljIdwjzrj+LxGmj8ik2LckwXacHqrJJ/jxz6dDDBcZ7I7nlHM0FvEW8MfbWJwOd+yT2XzYW49Frw== + dependencies: + call-bind "^1.0.2" + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + function.prototype.name "^1.1.5" + get-intrinsic "^1.1.3" + get-symbol-description "^1.0.0" + has "^1.0.3" + has-property-descriptors "^1.0.0" + has-symbols "^1.0.3" + internal-slot "^1.0.3" + is-callable "^1.2.6" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-weakref "^1.0.2" + object-inspect "^1.12.2" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.4.3" + safe-regex-test "^1.0.0" + string.prototype.trimend "^1.0.5" + string.prototype.trimstart "^1.0.5" + unbox-primitive "^1.0.2" + +es-shim-unscopables@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" + integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== + dependencies: + has "^1.0.3" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +eslint-config-next@12.3.1: + version "12.3.1" + resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-12.3.1.tgz#5d4eb0b7903cea81fd0d5106601d3afb0a453ff4" + integrity sha512-EN/xwKPU6jz1G0Qi6Bd/BqMnHLyRAL0VsaQaWA7F3KkjAgZHi4f1uL1JKGWNxdQpHTW/sdGONBd0bzxUka/DJg== + dependencies: + "@next/eslint-plugin-next" "12.3.1" + "@rushstack/eslint-patch" "^1.1.3" + "@typescript-eslint/parser" "^5.21.0" + eslint-import-resolver-node "^0.3.6" + eslint-import-resolver-typescript "^2.7.1" + eslint-plugin-import "^2.26.0" + eslint-plugin-jsx-a11y "^6.5.1" + eslint-plugin-react "^7.31.7" + eslint-plugin-react-hooks "^4.5.0" + +eslint-import-resolver-node@^0.3.6: + version "0.3.6" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz#4048b958395da89668252001dbd9eca6b83bacbd" + integrity sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw== + dependencies: + debug "^3.2.7" + resolve "^1.20.0" + +eslint-import-resolver-typescript@^2.7.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.7.1.tgz#a90a4a1c80da8d632df25994c4c5fdcdd02b8751" + integrity sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ== + dependencies: + debug "^4.3.4" + glob "^7.2.0" + is-glob "^4.0.3" + resolve "^1.22.0" + tsconfig-paths "^3.14.1" + +eslint-module-utils@^2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz#4f3e41116aaf13a20792261e61d3a2e7e0583974" + integrity sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA== + dependencies: + debug "^3.2.7" + +eslint-plugin-import@^2.26.0: + version "2.26.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz#f812dc47be4f2b72b478a021605a59fc6fe8b88b" + integrity sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA== + dependencies: + array-includes "^3.1.4" + array.prototype.flat "^1.2.5" + debug "^2.6.9" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.6" + eslint-module-utils "^2.7.3" + has "^1.0.3" + is-core-module "^2.8.1" + is-glob "^4.0.3" + minimatch "^3.1.2" + object.values "^1.1.5" + resolve "^1.22.0" + tsconfig-paths "^3.14.1" + +eslint-plugin-jsx-a11y@^6.5.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz#93736fc91b83fdc38cc8d115deedfc3091aef1ff" + integrity sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q== + dependencies: + "@babel/runtime" "^7.18.9" + aria-query "^4.2.2" + array-includes "^3.1.5" + ast-types-flow "^0.0.7" + axe-core "^4.4.3" + axobject-query "^2.2.0" + damerau-levenshtein "^1.0.8" + emoji-regex "^9.2.2" + has "^1.0.3" + jsx-ast-utils "^3.3.2" + language-tags "^1.0.5" + minimatch "^3.1.2" + semver "^6.3.0" + +eslint-plugin-react-hooks@^4.5.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" + integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== + +eslint-plugin-react@^7.31.7: + version "7.31.8" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.31.8.tgz#3a4f80c10be1bcbc8197be9e8b641b2a3ef219bf" + integrity sha512-5lBTZmgQmARLLSYiwI71tiGVTLUuqXantZM6vlSY39OaDSV0M7+32K5DnLkmFrwTe+Ksz0ffuLUC91RUviVZfw== + dependencies: + array-includes "^3.1.5" + array.prototype.flatmap "^1.3.0" + doctrine "^2.1.0" + estraverse "^5.3.0" + jsx-ast-utils "^2.4.1 || ^3.0.0" + minimatch "^3.1.2" + object.entries "^1.1.5" + object.fromentries "^2.0.5" + object.hasown "^1.1.1" + object.values "^1.1.5" + prop-types "^15.8.1" + resolve "^2.0.0-next.3" + semver "^6.3.0" + string.prototype.matchall "^4.0.7" + +eslint-scope@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" + integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" + integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== + dependencies: + eslint-visitor-keys "^2.0.0" + +eslint-visitor-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + +eslint-visitor-keys@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" + integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== + +eslint@8.24.0: + version "8.24.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.24.0.tgz#489516c927a5da11b3979dbfb2679394523383c8" + integrity sha512-dWFaPhGhTAiPcCgm3f6LI2MBWbogMnTJzFBbhXVRQDJPkr9pGZvVjlVfXd+vyDcWPA2Ic9L2AXPIQM0+vk/cSQ== + dependencies: + "@eslint/eslintrc" "^1.3.2" + "@humanwhocodes/config-array" "^0.10.5" + "@humanwhocodes/gitignore-to-minimatch" "^1.0.2" + "@humanwhocodes/module-importer" "^1.0.1" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.1.1" + eslint-utils "^3.0.0" + eslint-visitor-keys "^3.3.0" + espree "^9.4.0" + esquery "^1.4.0" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + glob-parent "^6.0.1" + globals "^13.15.0" + globby "^11.1.0" + grapheme-splitter "^1.0.4" + ignore "^5.2.0" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-sdsl "^4.1.4" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.1" + regexpp "^3.2.0" + strip-ansi "^6.0.1" + strip-json-comments "^3.1.0" + text-table "^0.2.0" + +espree@^9.4.0: + version "9.4.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.4.0.tgz#cd4bc3d6e9336c433265fc0aa016fc1aaf182f8a" + integrity sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw== + dependencies: + acorn "^8.8.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.3.0" + +esquery@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" + integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^3.2.9: + version "3.2.12" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" + integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== + 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" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fastq@^1.6.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" + integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== + dependencies: + reusify "^1.0.4" + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + dependencies: + flatted "^3.1.0" + rimraf "^3.0.2" + +flatted@^3.1.0: + version "3.2.7" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" + integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== + +follow-redirects@^1.14.9: + version "1.15.2" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" + integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== + +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +function.prototype.name@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" + integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.0" + functions-have-names "^1.2.2" + +functions-have-names@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + +get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.3.tgz#063c84329ad93e83893c7f4f243ef63ffa351385" + integrity sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.3" + +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + +glob-parent@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.1: + 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@7.1.7: + version "7.1.7" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" + integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.1.3, glob@^7.2.0: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^13.15.0: + version "13.17.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.17.0.tgz#902eb1e680a41da93945adbdcb5a9f361ba69bd4" + integrity sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw== + dependencies: + type-fest "^0.20.2" + +globby@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +grapheme-splitter@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" + integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== + +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-property-descriptors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + dependencies: + get-intrinsic "^1.1.1" + +has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/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.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +ignore@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" + integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== + +import-fresh@^3.0.0, import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +internal-slot@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" + integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== + dependencies: + get-intrinsic "^1.1.0" + has "^1.0.3" + side-channel "^1.0.4" + +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" + +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-callable@^1.1.4, is-callable@^1.2.6: + version "1.2.7" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + +is-core-module@^2.8.1, is-core-module@^2.9.0: + version "2.10.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.10.0.tgz#9012ede0a91c69587e647514e1d5277019e728ed" + integrity sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg== + dependencies: + has "^1.0.3" + +is-date-object@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-negative-zero@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== + +is-number-object@^1.0.4: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== + dependencies: + has-tostringtag "^1.0.0" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + dependencies: + call-bind "^1.0.2" + +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +js-sdsl@^4.1.4: + version "4.1.5" + resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.1.5.tgz#1ff1645e6b4d1b028cd3f862db88c9d887f26e2a" + integrity sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q== + +"js-tokens@^3.0.0 || ^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + +"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.2: + version "3.3.3" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz#76b3e6e6cece5c69d49a5792c3d01bd1a0cdc7ea" + integrity sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw== + dependencies: + array-includes "^3.1.5" + object.assign "^4.1.3" + +language-subtag-registry@~0.3.2: + version "0.3.22" + resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz#2e1500861b2e457eba7e7ae86877cbd08fa1fd1d" + integrity sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w== + +language-tags@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a" + integrity sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ== + dependencies: + language-subtag-registry "~0.3.2" + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +loose-envify@^1.1.0, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +merge2@^1.3.0, merge2@^1.4.1: + 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: + 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" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.2.0, minimist@^1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" + integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +nanoassert@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/nanoassert/-/nanoassert-1.1.0.tgz#4f3152e09540fde28c76f44b19bbcd1d5a42478d" + integrity sha512-C40jQ3NzfkP53NsO8kEOFd79p4b9kDXQMwgiY1z8ZwrDZgUyom0AHwGegF4Dm99L+YoYhuaB0ceerUcXmqr1rQ== + +nanoid@3.3.4, nanoid@^3.3.4: + version "3.3.4" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" + integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +next@12.3.1: + version "12.3.1" + resolved "https://registry.yarnpkg.com/next/-/next-12.3.1.tgz#127b825ad2207faf869b33393ec8c75fe61e50f1" + integrity sha512-l7bvmSeIwX5lp07WtIiP9u2ytZMv7jIeB8iacR28PuUEFG5j0HGAPnMqyG5kbZNBG2H7tRsrQ4HCjuMOPnANZw== + dependencies: + "@next/env" "12.3.1" + "@swc/helpers" "0.4.11" + caniuse-lite "^1.0.30001406" + postcss "8.4.14" + styled-jsx "5.0.7" + use-sync-external-store "1.2.0" + optionalDependencies: + "@next/swc-android-arm-eabi" "12.3.1" + "@next/swc-android-arm64" "12.3.1" + "@next/swc-darwin-arm64" "12.3.1" + "@next/swc-darwin-x64" "12.3.1" + "@next/swc-freebsd-x64" "12.3.1" + "@next/swc-linux-arm-gnueabihf" "12.3.1" + "@next/swc-linux-arm64-gnu" "12.3.1" + "@next/swc-linux-arm64-musl" "12.3.1" + "@next/swc-linux-x64-gnu" "12.3.1" + "@next/swc-linux-x64-musl" "12.3.1" + "@next/swc-win32-arm64-msvc" "12.3.1" + "@next/swc-win32-ia32-msvc" "12.3.1" + "@next/swc-win32-x64-msvc" "12.3.1" + +object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-inspect@^1.12.2, object-inspect@^1.9.0: + version "1.12.2" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" + integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== + +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.assign@^4.1.3, object.assign@^4.1.4: + version "4.1.4" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" + integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + has-symbols "^1.0.3" + object-keys "^1.1.1" + +object.entries@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.5.tgz#e1acdd17c4de2cd96d5a08487cfb9db84d881861" + integrity sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + +object.fromentries@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.5.tgz#7b37b205109c21e741e605727fe8b0ad5fa08251" + integrity sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + +object.hasown@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.1.tgz#ad1eecc60d03f49460600430d97f23882cf592a3" + integrity sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A== + dependencies: + define-properties "^1.1.4" + es-abstract "^1.19.5" + +object.values@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" + integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +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-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pbkdf2@^3.0.9: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" + integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +postcss@8.4.14: + version "8.4.14" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf" + integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig== + dependencies: + nanoid "^3.3.4" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +prop-types@^15.8.1: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + +punycode@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +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.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +react-dom@18.2.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" + integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== + dependencies: + loose-envify "^1.1.0" + scheduler "^0.23.0" + +react-is@^16.13.1: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react@18.2.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" + integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== + dependencies: + loose-envify "^1.1.0" + +readable-stream@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +regenerator-runtime@^0.13.4: + version "0.13.9" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" + integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== + +regexp.prototype.flags@^1.4.1, regexp.prototype.flags@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" + integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + functions-have-names "^1.2.2" + +regexpp@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" + integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve@^1.20.0, resolve@^1.22.0: + version "1.22.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" + integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== + dependencies: + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +resolve@^2.0.0-next.3: + version "2.0.0-next.4" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.4.tgz#3d37a113d6429f496ec4752d2a2e58efb1fd4660" + integrity sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ== + dependencies: + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +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== + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +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.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-regex-test@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" + integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + is-regex "^1.1.4" + +scheduler@^0.23.0: + version "0.23.0" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe" + integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== + dependencies: + loose-envify "^1.1.0" + +semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@^7.3.7: + version "7.3.8" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" + integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== + dependencies: + lru-cache "^6.0.0" + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +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== + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + +string.prototype.matchall@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz#8e6ecb0d8a1fb1fda470d81acecb2dba057a481d" + integrity sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + get-intrinsic "^1.1.1" + has-symbols "^1.0.3" + internal-slot "^1.0.3" + regexp.prototype.flags "^1.4.1" + side-channel "^1.0.4" + +string.prototype.trimend@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz#914a65baaab25fbdd4ee291ca7dde57e869cb8d0" + integrity sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.19.5" + +string.prototype.trimstart@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz#5466d93ba58cfa2134839f81d7f42437e8c01fef" + integrity sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.19.5" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +strip-ansi@^6.0.1: + 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-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== + +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +styled-jsx@5.0.7: + version "5.0.7" + resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.0.7.tgz#be44afc53771b983769ac654d355ca8d019dff48" + integrity sha512-b3sUzamS086YLRuvnaDigdAewz1/EFYlHpYBP5mZovKEdQQOIIYq8lApylub3HHZ6xFjV051kkGU7cudJmrXEA== + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.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== + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +tsconfig-paths@^3.14.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a" + integrity sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.1" + minimist "^1.2.6" + strip-bom "^3.0.0" + +tslib@^1.8.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" + integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== + +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +typescript@4.8.4: + version "4.8.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.4.tgz#c464abca159669597be5f96b8943500b238e60e6" + integrity sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ== + +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== + dependencies: + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +use-sync-external-store@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a" + integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA== + +util-deprecate@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + +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" + +word-wrap@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== diff --git a/package.json b/package.json index 2a245bb61..8c6cd39ed 100644 --- a/package.json +++ b/package.json @@ -8,16 +8,19 @@ "bootstrap": "yarn install && yarn lerna bootstrap", "start:demo": "lerna exec --scope @workspace/playground -- yarn dev", "start:module": "lerna exec --scope @martifylabs/mesh -- yarn dev", - "build": "lerna link && yarn build:module && yarn build:demo", + "start:react": "lerna exec --scope @martifylabs/mesh-react -- yarn dev", + "build": "lerna link && yarn build:module && yarn build:react && yarn build:demo", "build:demo": "lerna exec --scope @workspace/playground -- yarn build", - "build:module": "lerna exec --scope @martifylabs/mesh -- yarn build" + "build:module": "lerna exec --scope @martifylabs/mesh -- yarn build", + "build:react": "lerna exec --scope @martifylabs/mesh-react -- yarn build" }, "devDependencies": { "@types/jest": "28.1.6", "@types/node": "18.6.1", + "@types/react": "18.0.10", + "@types/react-dom": "18.0.5", "eslint": "8.16.0", "lerna": "5.3.0", - "prettier": "2.7.1", "typescript": "4.8.2" }, "workspaces": [ diff --git a/packages/demo/components/pages/apis/common/blockchainProvider.tsx b/packages/demo/components/common/blockchainProvider.tsx similarity index 58% rename from packages/demo/components/pages/apis/common/blockchainProvider.tsx rename to packages/demo/components/common/blockchainProvider.tsx index 830408f60..4c25030ae 100644 --- a/packages/demo/components/pages/apis/common/blockchainProvider.tsx +++ b/packages/demo/components/common/blockchainProvider.tsx @@ -1,22 +1,15 @@ -import ButtonGroup from '../../../ui/buttongroup'; -import Codeblock from '../../../ui/codeblock'; -import useLocalStorage from '../../../../hooks/useLocalStorage'; +import ButtonGroup from '../ui/buttongroup'; +import Codeblock from '../ui/codeblock'; +import { useState } from 'react'; export default function BlockchainProviderCodeSnippet() { - const [blockchainProvider, setBlockchainProvider] = useLocalStorage( - 'blockchainProvider', - 'blockfrost' - ); + const [blockchainProvider, setBlockchainProvider] = useState('blockfrost'); let codeBF = `import { BlockfrostProvider } from '@martifylabs/mesh';\n\n`; - codeBF += `const blockchainProvider = new BlockfrostProvider(\n`; - codeBF += ` '',\n`; - codeBF += `);`; + codeBF += `const blockchainProvider = new BlockfrostProvider('');`; let codeKoios = `import { KoiosProvider } from '@martifylabs/mesh';\n\n`; - codeKoios += `const blockchainProvider = new KoiosProvider(\n`; - codeKoios += ` ''\n`; - codeKoios += `);`; + codeKoios += `const blockchainProvider = new KoiosProvider('');`; let code = codeBF; if (blockchainProvider == 'koios') { diff --git a/packages/demo/components/pages/apis/common/connectCipWallet.tsx b/packages/demo/components/common/connectCipWallet.tsx similarity index 90% rename from packages/demo/components/pages/apis/common/connectCipWallet.tsx rename to packages/demo/components/common/connectCipWallet.tsx index 406161548..ed43fa921 100644 --- a/packages/demo/components/pages/apis/common/connectCipWallet.tsx +++ b/packages/demo/components/common/connectCipWallet.tsx @@ -1,5 +1,5 @@ -import Button from '../../../ui/button'; -import useWallet from '../../../../contexts/wallet'; +import Button from '../ui/button'; +import useWallet from '../../contexts/wallet'; export default function ConnectCipWallet() { const { connecting, walletNameConnected, connectWallet, availableWallets } = useWallet(); diff --git a/packages/demo/components/pages/apis/common/fetchSelectAssets.tsx b/packages/demo/components/common/fetchSelectAssets.tsx similarity index 97% rename from packages/demo/components/pages/apis/common/fetchSelectAssets.tsx rename to packages/demo/components/common/fetchSelectAssets.tsx index bfe0efd98..44715ea1d 100644 --- a/packages/demo/components/pages/apis/common/fetchSelectAssets.tsx +++ b/packages/demo/components/common/fetchSelectAssets.tsx @@ -1,7 +1,7 @@ import type { AssetExtended } from '@martifylabs/mesh'; import { useEffect, useState } from 'react'; -import useWallet from '../../../../contexts/wallet'; -import Button from '../../../ui/button'; +import useWallet from '../../contexts/wallet'; +import Button from '../ui/button'; export default function FetchSelectAssets({ index, diff --git a/packages/demo/components/pages/apis/common/layout.tsx b/packages/demo/components/common/layout.tsx similarity index 62% rename from packages/demo/components/pages/apis/common/layout.tsx rename to packages/demo/components/common/layout.tsx index aafc8d09a..0d4c28feb 100644 --- a/packages/demo/components/pages/apis/common/layout.tsx +++ b/packages/demo/components/common/layout.tsx @@ -1,10 +1,10 @@ -import ApisSidebar from './sidebar'; +import CommonSidebar from './sidebar'; -export default function ApisLayout({ children, sidebarItems }) { +export default function CommonLayout({ children, sidebarItems }) { return ( <>
- +
{children}
diff --git a/packages/demo/components/pages/apis/common/runDemoButton.tsx b/packages/demo/components/common/runDemoButton.tsx similarity index 91% rename from packages/demo/components/pages/apis/common/runDemoButton.tsx rename to packages/demo/components/common/runDemoButton.tsx index 29d51af5f..dad2964ae 100644 --- a/packages/demo/components/pages/apis/common/runDemoButton.tsx +++ b/packages/demo/components/common/runDemoButton.tsx @@ -1,5 +1,5 @@ import { PlayIcon } from '@heroicons/react/24/solid'; -import Button from '../../../ui/button'; +import Button from '../ui/button'; export default function RunDemoButton({ runDemoFn, diff --git a/packages/demo/components/pages/apis/common/runDemoResult.tsx b/packages/demo/components/common/runDemoResult.tsx similarity index 70% rename from packages/demo/components/pages/apis/common/runDemoResult.tsx rename to packages/demo/components/common/runDemoResult.tsx index 8c5dc07d9..d5d3871e2 100644 --- a/packages/demo/components/pages/apis/common/runDemoResult.tsx +++ b/packages/demo/components/common/runDemoResult.tsx @@ -1,9 +1,9 @@ -import Codeblock from '../../../ui/codeblock'; +import Codeblock from '../ui/codeblock'; export default function RunDemoResult({ response, label = 'Result' }) { return ( <> - {response !== null && ( + {response !== null && response !== undefined && ( <>

{label}: diff --git a/packages/demo/components/pages/apis/common/sectionTwoCol.tsx b/packages/demo/components/common/sectionTwoCol.tsx similarity index 51% rename from packages/demo/components/pages/apis/common/sectionTwoCol.tsx rename to packages/demo/components/common/sectionTwoCol.tsx index 77175d7e3..ad16f7ea2 100644 --- a/packages/demo/components/pages/apis/common/sectionTwoCol.tsx +++ b/packages/demo/components/common/sectionTwoCol.tsx @@ -1,9 +1,23 @@ import { Element } from 'react-scroll'; -export default function SectionTwoCol({ sidebarTo, header, leftFn, rightFn }) { +export default function SectionTwoCol({ + sidebarTo, + header, + leftFn, + rightFn, + isH3 = false, + badge = <>, +}) { return ( -

{header}

+ {isH3 ? ( +

+ {header} + {badge && {badge}} +

+ ) : ( +

{header}

+ )}
{leftFn}
{rightFn}
diff --git a/packages/demo/components/common/sidebar.tsx b/packages/demo/components/common/sidebar.tsx new file mode 100644 index 000000000..5a3452a82 --- /dev/null +++ b/packages/demo/components/common/sidebar.tsx @@ -0,0 +1,36 @@ +import { Link } from 'react-scroll'; + +export default function CommonSidebar({ sidebarItems }) { + return ( +
+
+ +
+
+ ); +} diff --git a/packages/demo/components/pages/about/cips/hero.tsx b/packages/demo/components/pages/about/cips/hero.tsx deleted file mode 100644 index 5c517b769..000000000 --- a/packages/demo/components/pages/about/cips/hero.tsx +++ /dev/null @@ -1,15 +0,0 @@ -export default function Hero() { - return ( -
-
-

- Cardano Improvement Proposals Implemented -

-

- Mesh ensures your dApp adheres to the standards provided by the - Cardano Community -

-
-
- ); -} diff --git a/packages/demo/components/pages/about/cips/index.tsx b/packages/demo/components/pages/about/cips/index.tsx index 944d78074..cfccd3ea5 100644 --- a/packages/demo/components/pages/about/cips/index.tsx +++ b/packages/demo/components/pages/about/cips/index.tsx @@ -1,10 +1,8 @@ -// import Hero from './hero'; import List from './list'; export default function Cips() { return ( <> - {/* */} ); diff --git a/packages/demo/components/pages/about/cips/list.tsx b/packages/demo/components/pages/about/cips/list.tsx index 72326befc..11f277240 100644 --- a/packages/demo/components/pages/about/cips/list.tsx +++ b/packages/demo/components/pages/about/cips/list.tsx @@ -1,4 +1,5 @@ -import Codeblock from "../../../ui/codeblock"; +import Link from 'next/link'; +import Codeblock from '../../../ui/codeblock'; export default function List() { return ( @@ -6,31 +7,144 @@ export default function List() {

- Cardano Improvement Proposals Implemented + Cardano Improvement Proposals{' '} + + Implemented +

Mesh ensures your dApp adheres to the standards provided by the - Cardano Community + Cardano Community.

-
- - - - - import AssetMetadata - } /> +
+ +

+ Adopted Coin Selection Strategies from Cardano + Serialization Lib into{' '} + Transaction. +

+ + } + /> + +

+ Use your wallat to sign message with{' '} + wallet.signData, see{' '} + App Wallet and{' '} + Browser Wallet. +

+ + } + /> + +

+ Get asset fingerprint with resolveFingerprint, + see Resolvers. +

+ + } + /> + +

+ Import AssetMetadata to adhere to the NFT + metadata standards, see{' '} + Transaction. +

+ + } + /> + +

+ Browser Wallet is + compatible with CIP-30 wallets. +

+ + } + /> + +

+ Transaction allow users + to reference datums when redeem from a V2 plutus script. +

+ + } + /> + +

+ Transaction allow users + to attach inline datums to transaction output. +

+ + } + /> + +

+ Transaction allow users + to reference a plutus script instead of suppling the whole + script as part of the transaction.. +

+ + } + /> + +

+ App Wallet follows{' '} + CIP-1852 for deriving Stake and Payment Keys. +

+ + } + />
); } -function Card({title, content}) { +function Card({ title, content }) { return (

{title}

-

{content}

+
+ {content} +
); } + +{ + /* */ +} diff --git a/packages/demo/components/pages/about/faq.tsx b/packages/demo/components/pages/about/faq.tsx index 05516c0fa..246aa5ce9 100644 --- a/packages/demo/components/pages/about/faq.tsx +++ b/packages/demo/components/pages/about/faq.tsx @@ -120,6 +120,7 @@ export default function AboutFaq() { href="https://cardano.stackexchange.com/" target="_blank" rel="noreferrer" + className="link" > cardano.stackexchange.com {' '} @@ -131,6 +132,7 @@ export default function AboutFaq() { href="https://github.com/MartifyLabs/mesh/issues" target="_blank" rel="noreferrer" + className="link" > an issue @@ -142,6 +144,7 @@ export default function AboutFaq() { href="https://discord.gg/Z6AH9dahdH" target="_blank" rel="noreferrer" + className="link" > Martify's @@ -150,6 +153,7 @@ export default function AboutFaq() { href="https://discord.gg/Va7DXqSSn8" target="_blank" rel="noreferrer" + className="link" > Gimbalabs' {' '} @@ -158,6 +162,7 @@ export default function AboutFaq() { href="https://discord.gg/inputoutput" target="_blank" rel="noreferrer" + className="link" > IOG Technical Community's {' '} diff --git a/packages/demo/components/pages/about/hero.tsx b/packages/demo/components/pages/about/hero.tsx index 87fa0f8a7..d4e6820f1 100644 --- a/packages/demo/components/pages/about/hero.tsx +++ b/packages/demo/components/pages/about/hero.tsx @@ -27,6 +27,32 @@ export default function AboutHero() {
+ {/*
+

Starter templates

+

+ Start your project by installing with CLI +

+ + + Learn more + + + +
*/} +
+

+ React components and hooks +

+

+ Everything you need to build web3 apps +

+ + + Learn more + + + +

App Wallet released

@@ -34,7 +60,7 @@ export default function AboutHero() {

- Read more + Start implementing @@ -44,13 +70,15 @@ export default function AboutHero() {

We released Mesh 1.0 on 22 Sept

- {/* - Read more + NPM page - */} +
{/*

Minting is ready

diff --git a/packages/demo/components/pages/about/support/addBadge.tsx b/packages/demo/components/pages/about/support/addBadge.tsx new file mode 100644 index 000000000..81e803d61 --- /dev/null +++ b/packages/demo/components/pages/about/support/addBadge.tsx @@ -0,0 +1,37 @@ +// import { MeshBadge } from '@martifylabs/mesh-react'; +import Codeblock from '../../../ui/codeblock'; + +export default function AddBadge() { + let code2 = `import { MeshBadge } from '@martifylabs/mesh-react';\n\n`; + code2 += `export default function Page() {\n`; + code2 += ` return (\n`; + code2 += ` <>\n`; + code2 += ` \n`; + code2 += ` \n`; + code2 += ` );\n`; + code2 += `}\n`; + + return ( +
+
+ support +
+

+ Add Mesh Badge in your Application +

+

+ Add our beautiful Mesh Badge to give your users confidence knowing + that your application is running on top of a solid SDK. +

+ + + +
+
+
+ ); +} diff --git a/packages/demo/components/pages/about/support/followTwitter.tsx b/packages/demo/components/pages/about/support/followTwitter.tsx new file mode 100644 index 000000000..4f2a85c76 --- /dev/null +++ b/packages/demo/components/pages/about/support/followTwitter.tsx @@ -0,0 +1,30 @@ +export default function FollowTwitter() { + return ( +
+
+
+

+ Follow us on Twitter +

+

+ Follow us on Twitter so you get get updated with the latest + development! +

+ + Follow us on Twitter + +
+ support +
+
+ ); +} diff --git a/packages/demo/components/pages/about/support/index.tsx b/packages/demo/components/pages/about/support/index.tsx new file mode 100644 index 000000000..597cbe9cf --- /dev/null +++ b/packages/demo/components/pages/about/support/index.tsx @@ -0,0 +1,32 @@ +import AddBadge from './addBadge'; +import FollowTwitter from './followTwitter'; +import JoinDiscord from './joinDiscord'; +import SendAdaToSupport from './sendAdaToSupport'; +import StarRepo from './starRepo'; + +export default function SupportUs() { + return ( + <> +
+
+
+

+ You can support Mesh! +

+

+ Thank you for your interest in Mesh and would love to support us! +
+ Here are some ways you can support us. +

+
+
+
+ + + + + + + + ); +} diff --git a/packages/demo/components/pages/about/support/joinDiscord.tsx b/packages/demo/components/pages/about/support/joinDiscord.tsx new file mode 100644 index 000000000..8464680f0 --- /dev/null +++ b/packages/demo/components/pages/about/support/joinDiscord.tsx @@ -0,0 +1,29 @@ +export default function JoinDiscord() { + return ( +
+
+
+

+ Join our Discord Server +

+

+ Come and talk to us in our Discord server. +

+ + Join Martify's Discord server + +
+ support +
+
+ ); +} diff --git a/packages/demo/components/pages/about/support/sendAdaToSupport.tsx b/packages/demo/components/pages/about/support/sendAdaToSupport.tsx new file mode 100644 index 000000000..4c7d413bb --- /dev/null +++ b/packages/demo/components/pages/about/support/sendAdaToSupport.tsx @@ -0,0 +1,86 @@ +import { CardanoWallet, useWallet } from '@martifylabs/mesh-react'; +import { useState } from 'react'; +import Input from '../../../ui/input'; +import { Transaction } from '@martifylabs/mesh'; + +export default function SendAdaToSupport() { + return ( +
+
+ support +
+

+ Support Financially +

+

+ Your support for this open-source SDK will go a long way. So tank you! +

+ +
+
+
+ ); +} + +function SendPayment() { + const { connected, wallet } = useWallet(); + const [amount, setAmount] = useState(25); + const [done, setDone] = useState(false); + + async function makeTx() { + const tx = new Transaction({ initiator: wallet }).sendLovelace( + process.env.NEXT_PUBLIC_DONATE_ADA_ADDRESS!, + (amount * 1000000).toString() + ); + const unsignedTx = await tx.build(); + const signedTx = await wallet.signTx(unsignedTx); + const txHash = await wallet.submitTx(signedTx); + setDone(true); + } + + return ( +
+
+ {!done && connected ? ( +
+
+ setAmount(e.target.value)} + placeholder="Amount in ADA" + label="Amount in ADA" + type="number" + /> +
+ + +
+ ) : ( + !connected && ( + <> + + + ) + )} + {done && ( + <> + support + + )} +
+
+ ); +} diff --git a/packages/demo/components/pages/about/support/starRepo.tsx b/packages/demo/components/pages/about/support/starRepo.tsx new file mode 100644 index 000000000..19eebe375 --- /dev/null +++ b/packages/demo/components/pages/about/support/starRepo.tsx @@ -0,0 +1,29 @@ +export default function StarRepo() { + return ( +
+
+
+

+ Star Mesh GitHub Repo +

+

+ Visit our GitHub and star it! +

+ + Star GitHub repo + +
+ support +
+
+ ); +} diff --git a/packages/demo/components/pages/apis/appwallet/generateWallet.tsx b/packages/demo/components/pages/apis/appwallet/generateWallet.tsx index 7b35ea03a..ee9b5bc13 100644 --- a/packages/demo/components/pages/apis/appwallet/generateWallet.tsx +++ b/packages/demo/components/pages/apis/appwallet/generateWallet.tsx @@ -1,9 +1,9 @@ import { useState } from 'react'; import Codeblock from '../../../ui/codeblock'; import Card from '../../../ui/card'; -import SectionTwoCol from '../common/sectionTwoCol'; -import RunDemoButton from '../common/runDemoButton'; -import RunDemoResult from '../common/runDemoResult'; +import SectionTwoCol from '../../../common/sectionTwoCol'; +import RunDemoButton from '../../../common/runDemoButton'; +import RunDemoResult from '../../../common/runDemoResult'; import { AppWallet } from '@martifylabs/mesh'; export default function GenerateWallet() { diff --git a/packages/demo/components/pages/apis/appwallet/hero.tsx b/packages/demo/components/pages/apis/appwallet/hero.tsx index 70498f8b7..3c053b6be 100644 --- a/packages/demo/components/pages/apis/appwallet/hero.tsx +++ b/packages/demo/components/pages/apis/appwallet/hero.tsx @@ -1,5 +1,4 @@ import { WalletIcon } from '@heroicons/react/24/solid'; -import Codeblock from '../../../ui/codeblock'; export default function Hero() { let codeSnippet = ''; diff --git a/packages/demo/components/pages/apis/appwallet/index.tsx b/packages/demo/components/pages/apis/appwallet/index.tsx index aefc2c3a4..78a845434 100644 --- a/packages/demo/components/pages/apis/appwallet/index.tsx +++ b/packages/demo/components/pages/apis/appwallet/index.tsx @@ -1,4 +1,4 @@ -import ApisLayout from '../common/layout'; +import CommonLayout from '../../../common/layout'; import GenerateWallet from './generateWallet'; import Hero from './hero'; import LoadWallet from './loadWallet'; @@ -14,10 +14,10 @@ export default function AppWallet() { ]; return ( - +
- + ); } diff --git a/packages/demo/components/pages/apis/appwallet/loadWallet.tsx b/packages/demo/components/pages/apis/appwallet/loadWallet.tsx index f01420c7c..fe6ec58d9 100644 --- a/packages/demo/components/pages/apis/appwallet/loadWallet.tsx +++ b/packages/demo/components/pages/apis/appwallet/loadWallet.tsx @@ -1,9 +1,9 @@ import { useState } from 'react'; import Codeblock from '../../../ui/codeblock'; import Card from '../../../ui/card'; -import SectionTwoCol from '../common/sectionTwoCol'; -import RunDemoButton from '../common/runDemoButton'; -import RunDemoResult from '../common/runDemoResult'; +import SectionTwoCol from '../../../common/sectionTwoCol'; +import RunDemoButton from '../../../common/runDemoButton'; +import RunDemoResult from '../../../common/runDemoResult'; import { AppWallet, BlockfrostProvider } from '@martifylabs/mesh'; import { demoMnemonic, @@ -14,7 +14,7 @@ import useAppWallet from '../../../../contexts/appWallet'; import Input from '../../../ui/input'; import Textarea from '../../../ui/textarea'; import ButtonGroup from '../../../ui/buttongroup'; -import BlockchainProviderCodeSnippet from '../common/blockchainProvider'; +import BlockchainProviderCodeSnippet from '../../../common/blockchainProvider'; export default function LoadWallet() { const [demoMethod, setDemoMethod] = useState(0); @@ -153,7 +153,7 @@ function Right( setStakeSkey ) { const [loading, setLoading] = useState(false); - const { setWallet, setWalletNetwork, setWalletConnected } = useAppWallet(); + const { setWallet, setWalletNetwork } = useAppWallet(); const [responseAddress, setResponseAddress] = useState(null); const [responseError, setResponseError] = useState(null); @@ -161,8 +161,7 @@ function Right( setLoading(true); setResponseError(null); setResponseAddress(null); - setWalletConnected(false); - // setWallet(null); // TODO help + setWallet({} as AppWallet); const blockchainProvider = new BlockfrostProvider( process.env.NEXT_PUBLIC_BLOCKFROST_API_KEY_PREPROD! @@ -189,7 +188,6 @@ function Right( }); setWallet(_wallet); setWalletNetwork(network); - setWalletConnected(true); const address = _wallet.getPaymentAddress(); setResponseAddress(address); } @@ -210,7 +208,6 @@ function Right( }); setWallet(_wallet); setWalletNetwork(network); - setWalletConnected(true); const address = _wallet.getPaymentAddress(); setResponseAddress(address); } catch (error) { @@ -219,9 +216,7 @@ function Right( } if (demoMethod == 2) { try { - const stake = stakeSkey?.length > 0 - ? stakeSkey - : undefined; + const stake = stakeSkey?.length > 0 ? stakeSkey : undefined; const _wallet = new AppWallet({ networkId: network, fetcher: blockchainProvider, @@ -234,7 +229,6 @@ function Right( }); setWallet(_wallet); setWalletNetwork(network); - setWalletConnected(true); const address = _wallet.getPaymentAddress(); setResponseAddress(address); } catch (error) { diff --git a/packages/demo/components/pages/apis/appwallet/signData.tsx b/packages/demo/components/pages/apis/appwallet/signData.tsx index 1b5456fb8..aca4652be 100644 --- a/packages/demo/components/pages/apis/appwallet/signData.tsx +++ b/packages/demo/components/pages/apis/appwallet/signData.tsx @@ -1,9 +1,9 @@ import { useState } from 'react'; import Codeblock from '../../../ui/codeblock'; import Card from '../../../ui/card'; -import SectionTwoCol from '../common/sectionTwoCol'; -import RunDemoButton from '../common/runDemoButton'; -import RunDemoResult from '../common/runDemoResult'; +import SectionTwoCol from '../../../common/sectionTwoCol'; +import RunDemoButton from '../../../common/runDemoButton'; +import RunDemoResult from '../../../common/runDemoResult'; import useAppWallet from '../../../../contexts/appWallet'; import Input from '../../../ui/input'; diff --git a/packages/demo/components/pages/apis/appwallet/signTx.tsx b/packages/demo/components/pages/apis/appwallet/signTx.tsx index 3caa086e9..a97450a5d 100644 --- a/packages/demo/components/pages/apis/appwallet/signTx.tsx +++ b/packages/demo/components/pages/apis/appwallet/signTx.tsx @@ -1,9 +1,9 @@ import { useEffect, useState } from 'react'; import Codeblock from '../../../ui/codeblock'; import Card from '../../../ui/card'; -import SectionTwoCol from '../common/sectionTwoCol'; -import RunDemoButton from '../common/runDemoButton'; -import RunDemoResult from '../common/runDemoResult'; +import SectionTwoCol from '../../../common/sectionTwoCol'; +import RunDemoButton from '../../../common/runDemoButton'; +import RunDemoResult from '../../../common/runDemoResult'; import { Transaction, ForgeScript } from '@martifylabs/mesh'; import type { Mint, AssetMetadata } from '@martifylabs/mesh'; import useAppWallet from '../../../../contexts/appWallet'; diff --git a/packages/demo/components/pages/apis/browserwallet/connectWallet.tsx b/packages/demo/components/pages/apis/browserwallet/connectWallet.tsx index 7e1fa80a7..c3ffda8bb 100644 --- a/packages/demo/components/pages/apis/browserwallet/connectWallet.tsx +++ b/packages/demo/components/pages/apis/browserwallet/connectWallet.tsx @@ -1,8 +1,8 @@ import Codeblock from '../../../ui/codeblock'; import Card from '../../../ui/card'; -import SectionTwoCol from '../common/sectionTwoCol'; +import SectionTwoCol from '../../../common/sectionTwoCol'; import useWallet from '../../../../contexts/wallet'; -import ConnectCipWallet from '../common/connectCipWallet'; +import ConnectCipWallet from '../../../common/connectCipWallet'; export default function ConnectWallet() { return ( @@ -16,7 +16,6 @@ export default function ConnectWallet() { } function Left() { - const { walletNameConnected } = useWallet(); return ( <>

@@ -31,25 +30,21 @@ function Left() { available wallets, then provide the wallet name for which wallet the user would like to connect with.

- ); } function Right() { - const { hasAvailableWallets } = useWallet(); + const { hasAvailableWallets, walletNameConnected } = useWallet(); return ( - <> - {hasAvailableWallets && ( - - - - )} - + + + {hasAvailableWallets && } + ); } diff --git a/packages/demo/components/pages/apis/browserwallet/getAssets.tsx b/packages/demo/components/pages/apis/browserwallet/getAssets.tsx index 951bc9e3c..1bc0e8881 100644 --- a/packages/demo/components/pages/apis/browserwallet/getAssets.tsx +++ b/packages/demo/components/pages/apis/browserwallet/getAssets.tsx @@ -1,11 +1,11 @@ import { useState } from 'react'; import Codeblock from '../../../ui/codeblock'; import Card from '../../../ui/card'; -import RunDemoButton from '../common/runDemoButton'; -import RunDemoResult from '../common/runDemoResult'; -import SectionTwoCol from '../common/sectionTwoCol'; +import RunDemoButton from '../../../common/runDemoButton'; +import RunDemoResult from '../../../common/runDemoResult'; +import SectionTwoCol from '../../../common/sectionTwoCol'; import useWallet from '../../../../contexts/wallet'; -import ConnectCipWallet from '../common/connectCipWallet'; +import ConnectCipWallet from '../../../common/connectCipWallet'; export default function GetAssets() { return ( @@ -22,10 +22,6 @@ function Left() { return ( <>

Returns a list of assets in wallet excluding lovelace.

- ); } @@ -45,6 +41,10 @@ function Right() { <> {hasAvailableWallets && ( + {walletConnected ? ( <> - ); } @@ -48,6 +44,10 @@ function Right() { <> {hasAvailableWallets && ( + {walletConnected ? ( <> - ); } @@ -50,6 +46,10 @@ function Right() { <> {hasAvailableWallets && ( + {walletConnected ? ( <> icon is provided to display wallet's icon on the user interface.

- ); } @@ -42,6 +41,7 @@ function Right() { } return ( +

Return the lovelace balance in wallet. 1 ADA = 1000000 lovelace.

- ); } @@ -45,6 +41,10 @@ function Right() { <> {hasAvailableWallets && ( + {walletConnected ? ( <> - ); } @@ -50,6 +46,10 @@ function Right() { <> {hasAvailableWallets && ( + {walletConnected ? ( <> wallet.getPolicyIds().

- ); } @@ -57,6 +53,10 @@ function Right({ policyId, setPolicyId }) { placeholder="Policy ID" label="Policy ID" /> + {hasAvailableWallets && ( <> {walletConnected ? ( diff --git a/packages/demo/components/pages/apis/browserwallet/getPolicyIds.tsx b/packages/demo/components/pages/apis/browserwallet/getPolicyIds.tsx index 82d496a83..5bdf01628 100644 --- a/packages/demo/components/pages/apis/browserwallet/getPolicyIds.tsx +++ b/packages/demo/components/pages/apis/browserwallet/getPolicyIds.tsx @@ -1,11 +1,11 @@ import { useState } from 'react'; import Codeblock from '../../../ui/codeblock'; import Card from '../../../ui/card'; -import RunDemoButton from '../common/runDemoButton'; -import RunDemoResult from '../common/runDemoResult'; -import SectionTwoCol from '../common/sectionTwoCol'; +import RunDemoButton from '../../../common/runDemoButton'; +import RunDemoResult from '../../../common/runDemoResult'; +import SectionTwoCol from '../../../common/sectionTwoCol'; import useWallet from '../../../../contexts/wallet'; -import ConnectCipWallet from '../common/connectCipWallet'; +import ConnectCipWallet from '../../../common/connectCipWallet'; export default function GetPolicyIds() { return ( @@ -22,10 +22,6 @@ function Left() { return ( <>

Return a list of assets' policy ID.

- ); } @@ -45,6 +41,10 @@ function Right() { <> {hasAvailableWallets && ( + {walletConnected ? ( <>

Returns a list of reward addresses owned by the wallet.

- ); } @@ -45,6 +41,10 @@ function Right() { <> {hasAvailableWallets && ( + {walletConnected ? ( <>

Returns a list of unused addresses controlled by the wallet.

- ); } @@ -45,6 +41,10 @@ function Right() { <> {hasAvailableWallets && ( + {walletConnected ? ( <>

Returns a list of used addresses controlled by the wallet.

- ); } @@ -45,6 +41,10 @@ function Right() { <> {hasAvailableWallets && ( + {walletConnected ? ( <> amount.

- ); } @@ -49,6 +45,10 @@ function Right() { <> {hasAvailableWallets && ( + {walletConnected ? ( <> +
- + ); } diff --git a/packages/demo/components/pages/apis/browserwallet/signData.tsx b/packages/demo/components/pages/apis/browserwallet/signData.tsx index 58aac4ac7..8787c65c1 100644 --- a/packages/demo/components/pages/apis/browserwallet/signData.tsx +++ b/packages/demo/components/pages/apis/browserwallet/signData.tsx @@ -1,12 +1,12 @@ import { useState } from 'react'; import useWallet from '../../../../contexts/wallet'; import Codeblock from '../../../ui/codeblock'; -import SectionTwoCol from '../common/sectionTwoCol'; +import SectionTwoCol from '../../../common/sectionTwoCol'; import Card from '../../../ui/card'; import Input from '../../../ui/input'; -import RunDemoButton from '../common/runDemoButton'; -import RunDemoResult from '../common/runDemoResult'; -import ConnectCipWallet from '../common/connectCipWallet'; +import RunDemoButton from '../../../common/runDemoButton'; +import RunDemoResult from '../../../common/runDemoResult'; +import ConnectCipWallet from '../../../common/connectCipWallet'; export default function SignData() { const [payload, setPayload] = useState('mesh'); @@ -15,16 +15,13 @@ export default function SignData() { ); } -function Left(payload) { - let code = `const addresses = await wallet.getUsedAddresses();\n`; - code += `const signature = await wallet.signData(addresses[0], '${payload}');`; - +function Left() { return ( <>

@@ -46,7 +43,6 @@ function Left(payload) { to you as the developer which address you want to use in your application.

- ); } @@ -66,6 +62,10 @@ function Right(payload, setPayload) { setResponse(results); setLoading(false); } + + let code = `const addresses = await wallet.getUsedAddresses();\n`; + code += `const signature = await wallet.signData(addresses[0], '${payload}');`; + return ( + {hasAvailableWallets && ( <> {walletConnected ? ( diff --git a/packages/demo/components/pages/apis/browserwallet/signTx.tsx b/packages/demo/components/pages/apis/browserwallet/signTx.tsx index 09ef1dc04..7aadf2e35 100644 --- a/packages/demo/components/pages/apis/browserwallet/signTx.tsx +++ b/packages/demo/components/pages/apis/browserwallet/signTx.tsx @@ -1,6 +1,7 @@ import Link from 'next/link'; import Codeblock from '../../../ui/codeblock'; -import SectionTwoCol from '../common/sectionTwoCol'; +import SectionTwoCol from '../../../common/sectionTwoCol'; +import Card from '../../../ui/card'; export default function SignTx() { return ( @@ -17,21 +18,27 @@ function Left() { return ( <>

- Requests user to sign the provided transaction. The wallet should ask - the user for permission, and if given, try to sign the supplied body and - return a signed transaction. partialSign should be{' '} - true if the transaction provided requires multiple - signatures. Check out Transaction{' '} - to learn more on how to use this API. + Requests user to sign the provided transaction (tx). The + wallet should ask the user for permission, and if given, try to sign the + supplied body and return a signed transaction. partialSign{' '} + should be true if the transaction provided requires + multiple signatures.

- ); } function Right() { - return <>; + return ( + + +

+ Check out Transaction to learn + more on how to use this API. +

+
+ ); } diff --git a/packages/demo/components/pages/apis/browserwallet/submitTx.tsx b/packages/demo/components/pages/apis/browserwallet/submitTx.tsx index d0c1250d8..f3c5cd428 100644 --- a/packages/demo/components/pages/apis/browserwallet/submitTx.tsx +++ b/packages/demo/components/pages/apis/browserwallet/submitTx.tsx @@ -1,6 +1,7 @@ import Link from 'next/link'; import Codeblock from '../../../ui/codeblock'; -import SectionTwoCol from '../common/sectionTwoCol'; +import SectionTwoCol from '../../../common/sectionTwoCol'; +import Card from '../../../ui/card'; export default function SubmitTransaction() { return ( @@ -21,18 +22,23 @@ function Left() { allow dApps to request that a transaction be sent through it. If the wallet accepts the transaction and tries to send it, it shall return the transaction ID for the dApp to track. The wallet can return error - messages or failure if there was an error in sending it. Check out{' '} - Transaction to learn more on how - to use this API. + messages or failure if there was an error in sending it.

- ); } function Right() { - return <>; + return ( + + +

+ Check out Transaction to learn + more on how to use this API. +

+
+ ); } diff --git a/packages/demo/components/pages/apis/common/sidebar.tsx b/packages/demo/components/pages/apis/common/sidebar.tsx deleted file mode 100644 index 1b79b674b..000000000 --- a/packages/demo/components/pages/apis/common/sidebar.tsx +++ /dev/null @@ -1,60 +0,0 @@ -import { Link, Element } from 'react-scroll'; - -export default function ApisSidebar({ sidebarItems }) { - return ( -
-
- - {/* */} -
-
- ); -} diff --git a/packages/demo/components/pages/apis/providers/badges.tsx b/packages/demo/components/pages/apis/providers/badges.tsx new file mode 100644 index 000000000..e5a2fd254 --- /dev/null +++ b/packages/demo/components/pages/apis/providers/badges.tsx @@ -0,0 +1,15 @@ +export function BadgeFetcher() { + return ( + + Fetcher + + ); +} + +export function BadgeSubmitter() { + return ( + + Submitter + + ); +} diff --git a/packages/demo/components/pages/apis/providers/blockfrost.tsx b/packages/demo/components/pages/apis/providers/blockfrost.tsx new file mode 100644 index 000000000..b6b1b3614 --- /dev/null +++ b/packages/demo/components/pages/apis/providers/blockfrost.tsx @@ -0,0 +1,57 @@ +import { useState, useEffect } from 'react'; +import Codeblock from '../../../ui/codeblock'; +import { Element } from 'react-scroll'; +import Fetcher from './fetcher'; +import { BlockfrostProvider } from '@martifylabs/mesh'; +import { BadgeFetcher, BadgeSubmitter } from './badges'; +import Submitter from './submitter'; + +export default function Blockfrost() { + const [blockfrostProvider, setBlockfrostProvider] = + useState(null); + + useEffect(() => { + async function load() { + const _blockfrostProvider = new BlockfrostProvider( + process.env.NEXT_PUBLIC_BLOCKFROST_API_KEY_PREPROD! + ); + setBlockfrostProvider(_blockfrostProvider); + } + load(); + }, []); + + let code1 = `const blockfrostProvider = new BlockfrostProvider('');\n`; + + return ( + <> + +

+ Blockfrost + + + + +

+ +
+
+

+ + Blockfrost + {' '} + provides restful APIs which allows your app to access information + stored on the blockchain. +

+ +
+
+
+
+ + + + ); +} diff --git a/packages/demo/components/pages/apis/providers/fetcher.tsx b/packages/demo/components/pages/apis/providers/fetcher.tsx new file mode 100644 index 000000000..c07123341 --- /dev/null +++ b/packages/demo/components/pages/apis/providers/fetcher.tsx @@ -0,0 +1,270 @@ +import { useState } from 'react'; +import Codeblock from '../../../ui/codeblock'; +import Card from '../../../ui/card'; +import SectionTwoCol from '../../../common/sectionTwoCol'; +import RunDemoButton from '../../../common/runDemoButton'; +import RunDemoResult from '../../../common/runDemoResult'; +import Input from '../../../ui/input'; +import { demoAddresses } from '../../../../configs/demo'; +import { BadgeFetcher } from './badges'; + +export default function Fetcher({ fetcher, fetcherName }) { + const [fetchAddressUtxosAddress, setfetchAddressUtxosAddress] = + useState(demoAddresses.testnet); + const [fetchAddressUtxosAsset, setfetchAddressUtxosAsset] = useState( + 'd9312da562da182b02322fd8acb536f37eb9d29fba7c49dc172555274d657368546f6b656e' + ); + const [fetchAssetMetadataAsset, setfetchAssetMetadataAsset] = + useState( + 'd9312da562da182b02322fd8acb536f37eb9d29fba7c49dc172555274d657368546f6b656e' + ); + const [fetchProtocolParameters, setfetchProtocolParameters] = + useState(''); + + return ( + <> + } + /> + } + /> + } + /> + + ); +} + +function fetchAddressUtxosLeft({ + fetcherName, + fetchAddressUtxosAddress, + fetchAddressUtxosAsset, +}) { + let code1 = `await ${fetcherName}.fetchAddressUTxOs(\n`; + code1 += ` '${fetchAddressUtxosAddress}',\n`; + if (fetchAddressUtxosAsset.length > 0) { + code1 += ` '${fetchAddressUtxosAsset}',\n`; + } + code1 += `)`; + return ( + <> +

+ Fetch UTXOs in the provided address. Optionally, you can + filter UTXOs containing a particular asset by providing{' '} + asset, where it is the concatenation of policy ID and + asset. +

+ + + ); +} +function fetchAddressUtxosRight({ + fetcher, + fetchAddressUtxosAddress, + setfetchAddressUtxosAddress, + fetchAddressUtxosAsset, + setfetchAddressUtxosAsset, +}) { + const [loading, setLoading] = useState(false); + const [response, setResponse] = useState(null); + const [responseError, setResponseError] = useState(null); + async function runDemo() { + setLoading(true); + setResponse(null); + setResponseError(null); + try { + const res = await fetcher.fetchAddressUTxOs( + fetchAddressUtxosAddress, + fetchAddressUtxosAsset + ); + setResponse(res); + } catch (error) { + setResponseError(`${error}`); + } + setLoading(false); + } + return ( + <> + + setfetchAddressUtxosAddress(e.target.value)} + placeholder="Address" + label="Address" + /> + setfetchAddressUtxosAsset(e.target.value)} + placeholder="Asset" + label="Asset" + /> + + + + + + ); +} + +function fetchAssetMetadataLeft({ fetcherName, fetchAssetMetadataAsset }) { + let code1 = `await ${fetcherName}.fetchAssetMetadata(\n`; + code1 += ` '${fetchAssetMetadataAsset}',\n`; + code1 += `)`; + return ( + <> +

+ Fetch the asset metadata by providing asset, where it is + the concatenation of policy ID and asset. +

+ + + ); +} +function fetchAssetMetadataRight({ + fetcher, + fetchAssetMetadataAsset, + setfetchAssetMetadataAsset, +}) { + const [loading, setLoading] = useState(false); + const [response, setResponse] = useState(null); + const [responseError, setResponseError] = useState(null); + async function runDemo() { + setLoading(true); + setResponse(null); + setResponseError(null); + try { + const res = await fetcher.fetchAssetMetadata(fetchAssetMetadataAsset); + setResponse(res); + } catch (error) { + setResponseError(`${error}`); + } + setLoading(false); + } + return ( + <> + + setfetchAssetMetadataAsset(e.target.value)} + placeholder="Asset" + label="Asset" + /> + + + + + + ); +} + +function fetchProtocolParametersLeft({ fetcherName, fetchProtocolParameters }) { + let code1 = `await ${fetcherName}.fetchProtocolParameters(`; + if (fetchProtocolParameters.length > 0) { + code1 += `${fetchProtocolParameters}`; + } + code1 += `)`; + return ( + <> +

+ Fetch the latest protocol parameters. Optionally, you can provide an + epoch number to fetch the protocol parameters of that epoch. +

+ + + ); +} +function fetchProtocolParametersRight({ + fetcher, + fetchProtocolParameters, + setfetchProtocolParameters, +}) { + const [loading, setLoading] = useState(false); + const [response, setResponse] = useState(null); + const [responseError, setResponseError] = useState(null); + async function runDemo() { + setLoading(true); + setResponse(null); + setResponseError(null); + try { + if (fetchProtocolParameters.length > 0) { + const res = await fetcher.fetchProtocolParameters( + parseInt(fetchProtocolParameters) + ); + setResponse(res); + } else { + const res = await fetcher.fetchProtocolParameters(); + setResponse(res); + } + } catch (error) { + setResponseError(`${error}`); + } + setLoading(false); + } + return ( + <> + + setfetchProtocolParameters(e.target.value)} + placeholder="Epoch" + label="Epoch" + /> + + + + + + ); +} diff --git a/packages/demo/components/pages/apis/providers/hero.tsx b/packages/demo/components/pages/apis/providers/hero.tsx new file mode 100644 index 000000000..a607ad384 --- /dev/null +++ b/packages/demo/components/pages/apis/providers/hero.tsx @@ -0,0 +1,22 @@ +import { CpuChipIcon } from '@heroicons/react/24/solid'; + +export default function Hero() { + return ( + <> +
+

+
+
+ +
+ Providers +
+

+

+ Utilize these community driven service providers to speed up + development +

+
+ + ); +} diff --git a/packages/demo/components/pages/apis/providers/index.tsx b/packages/demo/components/pages/apis/providers/index.tsx new file mode 100644 index 000000000..78554c115 --- /dev/null +++ b/packages/demo/components/pages/apis/providers/index.tsx @@ -0,0 +1,28 @@ +import CommonLayout from '../../../common/layout'; +import Blockfrost from './blockfrost'; +import Hero from './hero'; +import Koios from './koios'; + +export default function Resolvers() { + const sidebarItems = [ + { label: 'Blockfrost', to: 'Blockfrost' }, + { label: 'Koios', to: 'koios' }, + // { label: 'Infura', to: 'infura' }, + ]; + + return ( + + +
+ + ); +} + +function Main() { + return ( + <> + + + + ); +} diff --git a/packages/demo/components/pages/apis/providers/koios.tsx b/packages/demo/components/pages/apis/providers/koios.tsx new file mode 100644 index 000000000..975e2c04b --- /dev/null +++ b/packages/demo/components/pages/apis/providers/koios.tsx @@ -0,0 +1,58 @@ +import { useState, useEffect } from 'react'; +import Codeblock from '../../../ui/codeblock'; +import { Element } from 'react-scroll'; +import Fetcher from './fetcher'; +import { KoiosProvider } from '@martifylabs/mesh'; +import { BadgeFetcher, BadgeSubmitter } from './badges'; +import Submitter from './submitter'; + +export default function Koios() { + const [koiosProvider, setKoiosProvider] = useState( + null + ); + + useEffect(() => { + async function load() { + const _koiosProvider = new KoiosProvider('testnet'); + setKoiosProvider(_koiosProvider); + } + load(); + }, []); + + let code1 = `const koiosProvider = new KoiosProvider('');\n`; + + return ( + <> + +

+ Koios + + + + +

+ +
+
+

+ + Koios + {' '} + provides a query layer which allows your app to access information + stored on the blockchain. +

+ +
+
+
+
+ + + + + ); +} diff --git a/packages/demo/components/pages/apis/providers/submitter.tsx b/packages/demo/components/pages/apis/providers/submitter.tsx new file mode 100644 index 000000000..c9da167f8 --- /dev/null +++ b/packages/demo/components/pages/apis/providers/submitter.tsx @@ -0,0 +1,30 @@ +import Codeblock from '../../../ui/codeblock'; +import SectionTwoCol from '../../../common/sectionTwoCol'; +import { BadgeSubmitter } from './badges'; + +export default function Submitter({ submitter, submitterName }) { + return ( + <> + } + isH3={true} + badge={} + /> + + ); +} + +function submitTxLeft({ submitterName }) { + let code1 = `await ${submitterName}.submitTx(signedTx)`; + return ( + <> +

Submit a serialized transaction to the network.

+ + + ); +} diff --git a/packages/demo/components/pages/apis/resolvers/hero.tsx b/packages/demo/components/pages/apis/resolvers/hero.tsx index e15ef17ef..e6120e0cd 100644 --- a/packages/demo/components/pages/apis/resolvers/hero.tsx +++ b/packages/demo/components/pages/apis/resolvers/hero.tsx @@ -13,7 +13,7 @@ export default function Hero() {

- Helpful functions that you need while building dApps + Helpful functions for converting Cardano objects

{/*
diff --git a/packages/demo/components/pages/apis/resolvers/index.tsx b/packages/demo/components/pages/apis/resolvers/index.tsx index 5ecd25628..bdab19d64 100644 --- a/packages/demo/components/pages/apis/resolvers/index.tsx +++ b/packages/demo/components/pages/apis/resolvers/index.tsx @@ -1,52 +1,39 @@ -import ApisLayout from '../common/layout'; +import CommonLayout from '../../../common/layout'; import ResolveDataHash from './resolveDataHash'; import Hero from './hero'; import ResolveFingerprint from './resolveFingerprint'; import ResolvePrivateKey from './resolvePrivateKey'; -import ResolveScriptAddress from './resolveScriptAddress'; -import ResolveScriptHash from './resolveScriptHash'; +import ResolvePlutusScriptAddress from './resolvePlutusScriptAddress'; +import ResolvePlutusScriptHash from './resolvePlutusScriptHash'; import ResolvePaymentKeyHash from './resolvePaymentKeyHash'; import ResolveStakeAddress from './resolveStakeAddress'; import ResolveStakeKeyHash from './resolveStakeKeyHash'; import ResolveTxHash from './resolveTxHash'; +import ResolveEpochNo from './resolveEpochNo'; +import ResolveSlotNo from './resolveSlotNo'; +import ResolveNativeScriptHash from './resolveNativeScriptHash'; export default function Resolvers() { const sidebarItems = [ { label: 'Data Hash', to: 'resolveDataHash' }, { label: 'Fingerprint', to: 'resolveFingerprint' }, + { label: 'Native Script Hash', to: 'resolveNativeScriptHash' }, { label: 'Payment Key Hash', to: 'resolvePaymentKeyHash' }, + { label: 'Plutus Script Address', to: 'resolvePlutusScriptAddress' }, + { label: 'Plutus Script Hash', to: 'resolvePlutusScriptHash' }, { label: 'Private Key', to: 'resolvePrivateKey' }, - { label: 'Script Address', to: 'resolveScriptAddress' }, - { label: 'Script Hash', to: 'resolveScriptHash' }, { label: 'Stake Address', to: 'resolveStakeAddress' }, { label: 'Stake Key Hash', to: 'resolveStakeKeyHash' }, { label: 'Tx Hash', to: 'resolveTxHash' }, + { label: 'Slot Number', to: 'resolveSlotNo' }, + { label: 'Epoch Number', to: 'resolveEpochNo' }, ]; - // resolveDataHash - // - you give it a Data object it will calculate the hash - // resolveFingerprint - // - you give it an Asset object it will calculate the asset fingerprint CIP-5 - // resolvePaymentKeyHash - // - you give it a bech32 address long aka base address/payment address or short one aka enterprise address it will return the pub key hash of the payment key - // resolvePrivateKey - // - you give the 24 words aka mnemonic it will return a bech32 private key - // resolveScriptAddress - // - you give it a plutus script cbor hex it will give you the address for it - // resolveScriptHash - // - you give it the plutus script address it will give you the script hash - // resolveStakeAddress - // - you give it a base address inbech32 format it will return a stake address - // resolveStakeKeyHash - // - you give it a bech32 address long aka base address/payment address or short one aka rewards address starts with stake it will return the pub key hash of the stake key - // resolveTxHash - // - you give it a cbor transaction it will give you the hash of the transaction - return ( - +
- + ); } @@ -55,13 +42,16 @@ function Main() { <> + + + - - + + ); } diff --git a/packages/demo/components/pages/apis/resolvers/resolveDataHash.tsx b/packages/demo/components/pages/apis/resolvers/resolveDataHash.tsx index 456ca7ffa..a42d0a0fe 100644 --- a/packages/demo/components/pages/apis/resolvers/resolveDataHash.tsx +++ b/packages/demo/components/pages/apis/resolvers/resolveDataHash.tsx @@ -1,9 +1,9 @@ import { useState } from 'react'; import Codeblock from '../../../ui/codeblock'; import Card from '../../../ui/card'; -import SectionTwoCol from '../common/sectionTwoCol'; -import RunDemoButton from '../common/runDemoButton'; -import RunDemoResult from '../common/runDemoResult'; +import SectionTwoCol from '../../../common/sectionTwoCol'; +import RunDemoButton from '../../../common/runDemoButton'; +import RunDemoResult from '../../../common/runDemoResult'; import { resolveDataHash } from '@martifylabs/mesh'; import type { Data } from '@martifylabs/mesh'; import Input from '../../../ui/input'; diff --git a/packages/demo/components/pages/apis/resolvers/resolveEpochNo.tsx b/packages/demo/components/pages/apis/resolvers/resolveEpochNo.tsx new file mode 100644 index 000000000..feb9e64b3 --- /dev/null +++ b/packages/demo/components/pages/apis/resolvers/resolveEpochNo.tsx @@ -0,0 +1,98 @@ +import { useState } from 'react'; +import Codeblock from '../../../ui/codeblock'; +import Card from '../../../ui/card'; +import SectionTwoCol from '../../../common/sectionTwoCol'; +import RunDemoButton from '../../../common/runDemoButton'; +import RunDemoResult from '../../../common/runDemoResult'; +import { resolveEpochNo } from '@martifylabs/mesh'; +import Select from '../../../ui/select'; + +export default function ResolveEpochNo() { + const [userinput, setUserinput] = useState('mainnet'); + + return ( + + ); +} + +function Left(userinput) { + let code1 = `import { resolveEpochNo } from '@martifylabs/mesh';\n`; + + let code2 = `${code1}const epoch = resolveEpochNo('${userinput}');`; + + let code3 = `${code1}`; + code3 += `let oneYearFromNow = new Date();\n`; + code3 += `oneYearFromNow.setFullYear(oneYearFromNow.getFullYear() + 1);\n`; + code3 += `const epoch = resolveEpochNo('${userinput}', oneYearFromNow.getTime());`; + + return ( + <> +

+ With resolveEpochNo, you can get the current epoch with: +

+ +

+ You can also provide date in milliseconds to get epoch in + the past or the future. For example, get the epoch 1 year from now: +

+ + + ); +} + +function Right(userinput, setUserinput) { + const [loading, setLoading] = useState(false); + const [response, setResponse] = useState(null); + const [responseError, setResponseError] = useState(null); + + const networks = { + mainnet: 'Mainnet', + preprod: 'Preprod', + preview: 'Preview', + testnet: 'Testnet', + }; + + async function runDemo() { + setLoading(true); + setResponse(null); + setResponseError(null); + + // let oneYearFromNow = new Date(); + // oneYearFromNow.setFullYear(oneYearFromNow.getFullYear() + 1); + // const epoch = resolveEpochNo('mainnet', oneYearFromNow.getTime()); + + try { + const epoch = resolveEpochNo(userinput); + setResponse(epoch); + } catch (error) { + setResponseError(`${error}`); + } + setLoading(false); + } + + return ( + <> + + setUserinput(e.target.value)} + placeholder="Address" + label="Address" + /> + + + + + + ); +} diff --git a/packages/demo/components/pages/apis/resolvers/resolvePaymentKeyHash.tsx b/packages/demo/components/pages/apis/resolvers/resolvePaymentKeyHash.tsx index f4c39ad58..67447a08a 100644 --- a/packages/demo/components/pages/apis/resolvers/resolvePaymentKeyHash.tsx +++ b/packages/demo/components/pages/apis/resolvers/resolvePaymentKeyHash.tsx @@ -1,9 +1,9 @@ import { useState } from 'react'; import Codeblock from '../../../ui/codeblock'; import Card from '../../../ui/card'; -import SectionTwoCol from '../common/sectionTwoCol'; -import RunDemoButton from '../common/runDemoButton'; -import RunDemoResult from '../common/runDemoResult'; +import SectionTwoCol from '../../../common/sectionTwoCol'; +import RunDemoButton from '../../../common/runDemoButton'; +import RunDemoResult from '../../../common/runDemoResult'; import { resolvePaymentKeyHash } from '@martifylabs/mesh'; import Input from '../../../ui/input'; import { demoAddresses } from '../../../../configs/demo'; diff --git a/packages/demo/components/pages/apis/resolvers/resolveScriptAddress.tsx b/packages/demo/components/pages/apis/resolvers/resolvePlutusScriptAddress.tsx similarity index 64% rename from packages/demo/components/pages/apis/resolvers/resolveScriptAddress.tsx rename to packages/demo/components/pages/apis/resolvers/resolvePlutusScriptAddress.tsx index 5412ff3f7..23ac9df7e 100644 --- a/packages/demo/components/pages/apis/resolvers/resolveScriptAddress.tsx +++ b/packages/demo/components/pages/apis/resolvers/resolvePlutusScriptAddress.tsx @@ -1,13 +1,14 @@ import { useState } from 'react'; import Codeblock from '../../../ui/codeblock'; import Card from '../../../ui/card'; -import SectionTwoCol from '../common/sectionTwoCol'; -import RunDemoButton from '../common/runDemoButton'; -import RunDemoResult from '../common/runDemoResult'; -import { resolveScriptAddress } from '@martifylabs/mesh'; +import SectionTwoCol from '../../../common/sectionTwoCol'; +import RunDemoButton from '../../../common/runDemoButton'; +import RunDemoResult from '../../../common/runDemoResult'; +import { resolvePlutusScriptAddress } from '@martifylabs/mesh'; import Input from '../../../ui/input'; +import type { PlutusScript } from '@martifylabs/mesh'; -export default function ResolveScriptAddress() { +export default function ResolvePlutusScriptAddress() { const [userinput, setUserinput] = useState(0); const [userinput2, setUserinput2] = useState( '4e4d01000033222220051200120011' @@ -15,7 +16,7 @@ export default function ResolveScriptAddress() { return (

- Provide the Plutus script in CBOR, and resolveScriptAddress{' '} - will return a bech32 address of the script. + Provide the Plutus script in CBOR, and{' '} + resolvePlutusScriptAddress will return a bech32 address of + the script.

For example, we can get the address of the always succeed{' '} @@ -51,7 +61,11 @@ function Right(userinput, setUserinput, userinput2, setUserinput2) { setResponse(null); setResponseError(null); try { - const hash = resolveScriptAddress(userinput, userinput2); + const script: PlutusScript = { + code: userinput2, + version: 'V1', + }; + const hash = resolvePlutusScriptAddress(script, userinput); setResponse(hash); } catch (error) { setResponseError(`${error}`); diff --git a/packages/demo/components/pages/apis/resolvers/resolveScriptHash.tsx b/packages/demo/components/pages/apis/resolvers/resolvePlutusScriptHash.tsx similarity index 75% rename from packages/demo/components/pages/apis/resolvers/resolveScriptHash.tsx rename to packages/demo/components/pages/apis/resolvers/resolvePlutusScriptHash.tsx index 8a0abcd21..1ffc77c2d 100644 --- a/packages/demo/components/pages/apis/resolvers/resolveScriptHash.tsx +++ b/packages/demo/components/pages/apis/resolvers/resolvePlutusScriptHash.tsx @@ -1,21 +1,21 @@ import { useState } from 'react'; import Codeblock from '../../../ui/codeblock'; import Card from '../../../ui/card'; -import SectionTwoCol from '../common/sectionTwoCol'; -import RunDemoButton from '../common/runDemoButton'; -import RunDemoResult from '../common/runDemoResult'; -import { resolveScriptHash } from '@martifylabs/mesh'; +import SectionTwoCol from '../../../common/sectionTwoCol'; +import RunDemoButton from '../../../common/runDemoButton'; +import RunDemoResult from '../../../common/runDemoResult'; +import { resolvePlutusScriptHash } from '@martifylabs/mesh'; import Input from '../../../ui/input'; -export default function ResolveScriptHash() { +export default function ResolvePlutusScriptHash() { const [userinput, setUserinput] = useState( 'addr_test1wpnlxv2xv9a9ucvnvzqakwepzl9ltx7jzgm53av2e9ncv4sysemm8' ); return ( @@ -23,7 +23,7 @@ export default function ResolveScriptHash() { } function Left(userinput) { - let code = `import { resolveScriptHash } from '@martifylabs/mesh';\nconst hash = resolveScriptHash('${userinput}');`; + let code = `import { resolvePlutusScriptHash } from '@martifylabs/mesh';\nconst hash = resolvePlutusScriptHash('${userinput}');`; return ( <> @@ -47,7 +47,7 @@ function Right(userinput, setUserinput) { setResponse(null); setResponseError(null); try { - const hash = resolveScriptHash(userinput); + const hash = resolvePlutusScriptHash(userinput); setResponse(hash); } catch (error) { setResponseError(`${error}`); diff --git a/packages/demo/components/pages/apis/resolvers/resolvePrivateKey.tsx b/packages/demo/components/pages/apis/resolvers/resolvePrivateKey.tsx index 671748b0e..43879c738 100644 --- a/packages/demo/components/pages/apis/resolvers/resolvePrivateKey.tsx +++ b/packages/demo/components/pages/apis/resolvers/resolvePrivateKey.tsx @@ -1,9 +1,9 @@ import { useState } from 'react'; import Codeblock from '../../../ui/codeblock'; import Card from '../../../ui/card'; -import SectionTwoCol from '../common/sectionTwoCol'; -import RunDemoButton from '../common/runDemoButton'; -import RunDemoResult from '../common/runDemoResult'; +import SectionTwoCol from '../../../common/sectionTwoCol'; +import RunDemoButton from '../../../common/runDemoButton'; +import RunDemoResult from '../../../common/runDemoResult'; import { resolvePrivateKey } from '@martifylabs/mesh'; import { demoMnemonic } from '../../../../configs/demo'; import Textarea from '../../../ui/textarea'; diff --git a/packages/demo/components/pages/apis/resolvers/resolveSlotNo.tsx b/packages/demo/components/pages/apis/resolvers/resolveSlotNo.tsx new file mode 100644 index 000000000..2e44a2897 --- /dev/null +++ b/packages/demo/components/pages/apis/resolvers/resolveSlotNo.tsx @@ -0,0 +1,100 @@ +import { useState } from 'react'; +import Codeblock from '../../../ui/codeblock'; +import Card from '../../../ui/card'; +import SectionTwoCol from '../../../common/sectionTwoCol'; +import RunDemoButton from '../../../common/runDemoButton'; +import RunDemoResult from '../../../common/runDemoResult'; +import { resolveSlotNo } from '@martifylabs/mesh'; +import Select from '../../../ui/select'; + +export default function ResolveSlotNo() { + const [userinput, setUserinput] = useState('mainnet'); + + return ( + + ); +} + +function Left(userinput) { + let code1 = `import { resolveSlotNo } from '@martifylabs/mesh';\n`; + + let code2 = `${code1}const slot = resolveSlotNo('${userinput}');`; + + let code3 = `${code1}`; + code3 += `let oneYearFromNow = new Date();\n`; + code3 += `oneYearFromNow.setFullYear(oneYearFromNow.getFullYear() + 1);\n`; + code3 += `const slot = resolveSlotNo('${userinput}', oneYearFromNow.getTime());`; + + return ( + <> +

+ With resolveSlotNo, you can get the current slot number + with: +

+ +

+ You can also provide date in milliseconds to get slots in + the past or the future. For example, get the slot number 1 year from + now: +

+ + + ); +} + +function Right(userinput, setUserinput) { + const [loading, setLoading] = useState(false); + const [response, setResponse] = useState(null); + const [responseError, setResponseError] = useState(null); + + const networks = { + mainnet: 'Mainnet', + preprod: 'Preprod', + preview: 'Preview', + testnet: 'Testnet', + }; + + async function runDemo() { + setLoading(true); + setResponse(null); + setResponseError(null); + + // let oneYearFromNow = new Date(); + // oneYearFromNow.setFullYear(oneYearFromNow.getFullYear() + 1); + // const slot = resolveSlotNo('mainnet', oneYearFromNow.getTime()); + + try { + const slot = resolveSlotNo(userinput); + setResponse(slot); + } catch (error) { + setResponseError(`${error}`); + } + setLoading(false); + } + + return ( + <> + + setDarkMode(true)} + /> + +
+
+ setDarkMode(false)} + /> + +
+
+ + + + ); +} diff --git a/packages/demo/components/pages/react/walletHooks/hero.tsx b/packages/demo/components/pages/react/walletHooks/hero.tsx new file mode 100644 index 000000000..b4ae68dba --- /dev/null +++ b/packages/demo/components/pages/react/walletHooks/hero.tsx @@ -0,0 +1,35 @@ +import { BoltIcon } from '@heroicons/react/24/solid'; + +export default function Hero() { + return ( + <> +
+

+
+
+ +
+ Wallet Hooks +
+

+

+ React hooks for interacting with connected wallet. +

+
+
+
+

+ In a React application, Hooks allows you to extract and reuse + stateful logic and variables without changing your component + hierarchy. This makes it easy to reuse the same Hook among many + components. +

+

+ This page describes the list of built-in Hooks in Mesh to help you + build React applications faster. +

+
+
+ + ); +} diff --git a/packages/demo/components/pages/react/walletHooks/index.tsx b/packages/demo/components/pages/react/walletHooks/index.tsx new file mode 100644 index 000000000..f8ec49202 --- /dev/null +++ b/packages/demo/components/pages/react/walletHooks/index.tsx @@ -0,0 +1,38 @@ +import CommonLayout from '../../../common/layout'; +import Hero from './hero'; +import UseAddress from './useAddress'; +import UseAssets from './useAssets'; +import UseLovelace from './useLovelace'; +import UseNetwork from './useNetwork'; +import UseWallet from './useWallet'; +import UseWalletList from './useWalletList'; + +export default function ReactWalletHooks() { + const sidebarItems = [ + { label: 'useWalletList', to: 'useWalletList' }, + { label: 'useAddress', to: 'useAddress' }, + { label: 'useAssets', to: 'useAssets' }, + { label: 'useLovelace', to: 'useLovelace' }, + { label: 'useNetwork', to: 'useNetwork' }, + { label: 'useWallet', to: 'useWallet' }, + ]; + return ( + + +
+ + ); +} + +function Main() { + return ( + <> + + + + + + + + ); +} diff --git a/packages/demo/components/pages/react/walletHooks/useAddress.tsx b/packages/demo/components/pages/react/walletHooks/useAddress.tsx new file mode 100644 index 000000000..a5ed3a84e --- /dev/null +++ b/packages/demo/components/pages/react/walletHooks/useAddress.tsx @@ -0,0 +1,61 @@ +import Codeblock from '../../../ui/codeblock'; +import Card from '../../../ui/card'; +import RunDemoResult from '../../../common/runDemoResult'; +import SectionTwoCol from '../../../common/sectionTwoCol'; +import { useAddress } from '@martifylabs/mesh-react'; +import { CardanoWallet } from '@martifylabs/mesh-react'; + +export default function UseAddress() { + return ( + + ); +} + +function Left() { + const address = useAddress(); + let code1 = `const address = useAddress(accountId = 0);`; + + return ( + <> +

Return address of connected wallet.

+

+ accountId is an optional parameter, that allows you to + choose which address to return. +

+ + {address && } + + ); +} + +function Right() { + const address = useAddress(); + let code2 = `import { useAddress } from '@martifylabs/mesh-react';\n\n`; + code2 += `export default function Page() {\n`; + code2 += ` const address = useAddress();\n\n`; + code2 += ` return (\n`; + code2 += `

Your wallet address is: {address}

\n`; + code2 += ` );\n`; + code2 += `}\n`; + + return ( + + + + {address !== undefined && ( + <> +
+

+ Your wallet address is: {address} +

+
+ + )} +
+ ); +} diff --git a/packages/demo/components/pages/react/walletHooks/useAssets.tsx b/packages/demo/components/pages/react/walletHooks/useAssets.tsx new file mode 100644 index 000000000..a30fed580 --- /dev/null +++ b/packages/demo/components/pages/react/walletHooks/useAssets.tsx @@ -0,0 +1,69 @@ +import Codeblock from '../../../ui/codeblock'; +import Card from '../../../ui/card'; +import RunDemoResult from '../../../common/runDemoResult'; +import SectionTwoCol from '../../../common/sectionTwoCol'; +import { useAssets } from '@martifylabs/mesh-react'; +import { CardanoWallet } from '@martifylabs/mesh-react'; + +export default function UseAssets() { + return ( + <> + + + ); +} + +function Left() { + const assets = useAssets(); + let code1 = `const assets = useAssets();`; + + return ( + <> +

Return a list of assets in connected wallet from all UTXOs.

+ + + + ); +} + +function Right() { + const assets = useAssets(); + let code2 = `import { useAssets } from '@martifylabs/mesh-react';\n\n`; + code2 += `export default function Page() {\n`; + code2 += ` const assets = useAssets();\n\n`; + code2 += ` return (\n`; + code2 += `
    \n`; + code2 += ` {assets &&\n`; + code2 += ` assets.slice(0, 10).map((asset, i) => {\n`; + code2 += ` return (\n`; + code2 += `
  1. \n`; + code2 += ` {asset.assetName} (x{asset.quantity})\n`; + code2 += `
  2. \n`; + code2 += ` );\n`; + code2 += ` })}\n`; + code2 += `
\n`; + code2 += ` );\n`; + code2 += `}\n`; + + return ( + + + +
    + {assets !== undefined && + assets.slice(0, 10).map((asset, i) => { + return ( +
  1. + {asset.unit} (x{asset.quantity}) +
  2. + ); + })} +
+
+ ); +} diff --git a/packages/demo/components/pages/react/walletHooks/useLovelace.tsx b/packages/demo/components/pages/react/walletHooks/useLovelace.tsx new file mode 100644 index 000000000..47f9400ce --- /dev/null +++ b/packages/demo/components/pages/react/walletHooks/useLovelace.tsx @@ -0,0 +1,59 @@ +import Codeblock from '../../../ui/codeblock'; +import Card from '../../../ui/card'; +import RunDemoResult from '../../../common/runDemoResult'; +import SectionTwoCol from '../../../common/sectionTwoCol'; +import { useLovelace } from '@martifylabs/mesh-react'; +import { CardanoWallet } from '@martifylabs/mesh-react'; + +export default function UseLovelace() { + return ( + + ); +} + +function Left() { + const lovelace = useLovelace(); + let code1 = `const lovelace = useLovelace(accountId = 0);`; + + return ( + <> +

Return amount of lovelace in wallet.

+ + {lovelace && } + + ); +} + +function Right() { + const lovelace = useLovelace(); + let code2 = `import { useLovelace } from '@martifylabs/mesh-react';\n\n`; + code2 += `export default function Page() {\n`; + code2 += ` const lovelace = useLovelace();\n\n`; + code2 += ` return (\n`; + code2 += `
\n`; + code2 += `

You have ₳ {parseInt(lovelace) / 1000000}.

\n`; + code2 += `
\n`; + code2 += ` );\n`; + code2 += `}\n`; + + return ( + + + + {lovelace !== undefined && ( + <> +
+

+ You have ₳ {parseInt(lovelace) / 1000000}. +

+
+ + )} +
+ ); +} diff --git a/packages/demo/components/pages/react/walletHooks/useNetwork.tsx b/packages/demo/components/pages/react/walletHooks/useNetwork.tsx new file mode 100644 index 000000000..a89e750ad --- /dev/null +++ b/packages/demo/components/pages/react/walletHooks/useNetwork.tsx @@ -0,0 +1,59 @@ +import Codeblock from '../../../ui/codeblock'; +import Card from '../../../ui/card'; +import RunDemoResult from '../../../common/runDemoResult'; +import SectionTwoCol from '../../../common/sectionTwoCol'; +import { useNetwork } from '@martifylabs/mesh-react'; +import { CardanoWallet } from '@martifylabs/mesh-react'; + +export default function UseNetwork() { + return ( + + ); +} + +function Left() { + const network = useNetwork(); + let code1 = `const network = useNetwork();`; + + return ( + <> +

Return the network of connected wallet.

+ + {network !== undefined && } + + ); +} + +function Right() { + const network = useNetwork(); + let code2 = `import { useNetwork } from '@martifylabs/mesh-react';\n\n`; + code2 += `export default function Page() {\n`; + code2 += ` const network = useNetwork();\n\n`; + code2 += ` return (\n`; + code2 += `
\n`; + code2 += `

Connected network: {network}.

\n`; + code2 += `
\n`; + code2 += ` );\n`; + code2 += `}\n`; + + return ( + + + + {network !== undefined && ( + <> +
+

+ Connected network: {network}. +

+
+ + )} +
+ ); +} diff --git a/packages/demo/components/pages/react/walletHooks/useWallet.tsx b/packages/demo/components/pages/react/walletHooks/useWallet.tsx new file mode 100644 index 000000000..8c1e5e23e --- /dev/null +++ b/packages/demo/components/pages/react/walletHooks/useWallet.tsx @@ -0,0 +1,95 @@ +import Codeblock from '../../../ui/codeblock'; +import Card from '../../../ui/card'; +import RunDemoResult from '../../../common/runDemoResult'; +import SectionTwoCol from '../../../common/sectionTwoCol'; +import { useWallet } from '@martifylabs/mesh-react'; +import { CardanoWallet } from '@martifylabs/mesh-react'; + +export default function UseWallet() { + return ( + + ); +} + +function Left() { + let code1 = `const { connected, name, connecting, connect, disconnect, error } = useWallet();`; + + return ( + <> +

+ Provide information on the current wallet's state, and functions for + connecting and disconnecting user wallet. +

+ +

+ connected, a boolean, true if user's wallet is + connected. +

+

+ name, a string, the name of the connect wallet. +

+

+ connecting, a boolean, true if the wallet is + connecting and initializing. +

+

+ connect(walletName: string), a function, provide the wallet + name to connect wallet. Retrive a list of available wallets with{' '} + useWalletList(). +

+

+ disconnect(), a function, to disconnect the connected + wallet. +

+ + ); +} + +function Right() { + const { connected, name, connecting, connect, disconnect, error } = + useWallet(); + let code2 = `import { useWallet } from '@martifylabs/mesh-react';\n\n`; + code2 += `export default function Page() {\n`; + code2 += ` const { connected, name, connecting, connect, disconnect, error } = useWallet();\n\n`; + code2 += ` return (\n`; + code2 += `
\n`; + code2 += `

\n`; + code2 += ` Connected?: {connected ? 'Is connected' : 'Not connected'}\n`; + code2 += `

\n`; + code2 += `

\n`; + code2 += ` Connecting wallet?: {connecting ? 'Connecting...' : 'No'}\n`; + code2 += `

\n`; + code2 += `

\n`; + code2 += ` Name of connected wallet: \n`; + code2 += ` {name}\n`; + code2 += `

\n`; + code2 += ` \n`; + code2 += `
\n`; + code2 += ` );\n`; + code2 += `}\n`; + + return ( + + + +
+

+ Connected?: {connected ? 'Is connected' : 'Not connected'} +

+

+ Connecting wallet?: {connecting ? 'Connecting...' : 'No'} +

+

+ Name of connected wallet: + {name} +

+ +
+
+ ); +} diff --git a/packages/demo/components/pages/react/walletHooks/useWalletList.tsx b/packages/demo/components/pages/react/walletHooks/useWalletList.tsx new file mode 100644 index 000000000..a9aaf9efd --- /dev/null +++ b/packages/demo/components/pages/react/walletHooks/useWalletList.tsx @@ -0,0 +1,61 @@ +import Codeblock from '../../../ui/codeblock'; +import Card from '../../../ui/card'; +import RunDemoResult from '../../../common/runDemoResult'; +import SectionTwoCol from '../../../common/sectionTwoCol'; +import { useWalletList } from '@martifylabs/mesh-react'; + +export default function UseWalletList() { + return ( + + ); +} + +function Left() { + const wallets = useWalletList(); + let code1 = `const wallets = useWalletList();`; + return ( + <> +

Returns a list of wallets installed on user's device.

+ + + + ); +} + +function Right() { + const wallets = useWalletList(); + let code2 = `import { useWalletList } from '@martifylabs/mesh-react';\n\n`; + code2 += `export default function Page() {\n`; + code2 += ` const wallets = useWalletList();\n\n`; + code2 += ` return (\n`; + code2 += ` <>\n`; + code2 += ` {wallets.map((wallet, i) => {\n`; + code2 += ` return (\n`; + code2 += `

\n`; + code2 += ` \n`; + code2 += ` {wallet.name}\n`; + code2 += `

\n`; + code2 += ` );\n`; + code2 += ` })}\n`; + code2 += ` \n`; + code2 += ` );\n`; + code2 += `}\n`; + return ( + + + {wallets.map((wallet, i) => { + return ( +

+ + {wallet.name} +

+ ); + })} +
+ ); +} diff --git a/packages/demo/components/pages/react/walletHooks/useWalletTx.tsx b/packages/demo/components/pages/react/walletHooks/useWalletTx.tsx new file mode 100644 index 000000000..0243b733d --- /dev/null +++ b/packages/demo/components/pages/react/walletHooks/useWalletTx.tsx @@ -0,0 +1,59 @@ +import Codeblock from '../../../ui/codeblock'; +import Card from '../../../ui/card'; +import RunDemoResult from '../../../common/runDemoResult'; +import SectionTwoCol from '../../../common/sectionTwoCol'; +import { useWalletTx } from '@martifylabs/mesh-react'; +import { CardanoWallet } from '@martifylabs/mesh-react'; + +export default function UseWalletTx() { + return ( + + ); +} + +function Left() { + // const lovelace = useWalletTx({}); + let code1 = `const lovelace = useWalletTx(accountId = 0);`; + + return ( + <> +

Return amount of lovelace in wallet.

+ + {/* {lovelace && } */} + + ); +} + +function Right() { + // const lovelace = useWalletTx({}); + let code2 = `import { useWalletTx } from '@martifylabs/mesh-react';\n\n`; + code2 += `export default function Page() {\n`; + code2 += ` const lovelace = useWalletTx();\n\n`; + code2 += ` return (\n`; + code2 += `
\n`; + code2 += `

You have ₳ {parseInt(lovelace) / 1000000}.

\n`; + code2 += `
\n`; + code2 += ` );\n`; + code2 += `}\n`; + + return ( + + + + {/* {lovelace !== undefined && ( + <> +
+

+ +

+
+ + )} */} +
+ ); +} diff --git a/packages/demo/components/pages/starterTemplates/hero.tsx b/packages/demo/components/pages/starterTemplates/hero.tsx new file mode 100644 index 000000000..12271dc5c --- /dev/null +++ b/packages/demo/components/pages/starterTemplates/hero.tsx @@ -0,0 +1,30 @@ +import { CubeTransparentIcon } from '@heroicons/react/24/solid'; + +export default function Hero() { + return ( + <> +
+

+
+
+ +
+ Starter Templates +
+

+

+ Easiest way to kick start your project with one of our templates. +

+
+
+
+

The fastest way to get started on a web3 application.

+

+ Explore the and use one of our templates, get started by installing + using the CLI. +

+
+
+ + ); +} diff --git a/packages/demo/components/pages/starterTemplates/index.tsx b/packages/demo/components/pages/starterTemplates/index.tsx new file mode 100644 index 000000000..28111395c --- /dev/null +++ b/packages/demo/components/pages/starterTemplates/index.tsx @@ -0,0 +1,24 @@ +import CommonLayout from '../../common/layout'; +import Hero from './hero'; +import StarterNextjs from './nextjs'; + +export default function ReactStarterTemplates() { + const sidebarItems = [ + { label: 'Next.js', to: 'nextjs' }, + { label: 'Multisig minting', to: 'multisigMinting' }, + ]; + return ( + + +
+ + ); +} +// todo, need to remove starters from react, because we can have nodejs starters too +function Main() { + return ( + <> + + + ); +} diff --git a/packages/demo/components/pages/starterTemplates/nextjs.tsx b/packages/demo/components/pages/starterTemplates/nextjs.tsx new file mode 100644 index 000000000..f4b233c91 --- /dev/null +++ b/packages/demo/components/pages/starterTemplates/nextjs.tsx @@ -0,0 +1,33 @@ +import Codeblock from '../../ui/codeblock'; +import SectionTwoCol from '../../common/sectionTwoCol'; + +export default function StarterNextjs() { + return ( + <> + + + ); +} + +function Left() { + let code1 = `npx thirdweb create -template nextjs`; + + return ( + <> +

+ Start a new project on Next.js. This starter template consist of{' '} + MeshProvider and ConnectWallet UI component. +

+ + + ); +} + +function Right() { + return <>; +} diff --git a/packages/demo/components/site/footer.tsx b/packages/demo/components/site/footer.tsx index a85a2c67a..226e2ba8c 100644 --- a/packages/demo/components/site/footer.tsx +++ b/packages/demo/components/site/footer.tsx @@ -20,8 +20,8 @@ export default function Footer() { return (