diff --git a/.eslintignore b/.eslintignore index d3881d1d..9fca3ec5 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,4 +1,5 @@ node_modules +interface lib cache typechain-types diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index e5b16e1a..c46904a1 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -48,7 +48,9 @@ jobs: run: pnpm install --prefer-offline --frozen-lockfile - name: Prettier and lint - run: pnpm lint:check + run: | + pnpm lint:check + pnpm lint:check:interface codespell: runs-on: ${{ matrix.os }} @@ -91,5 +93,6 @@ jobs: - name: Validate URLs run: | - awesome_bot ./*.md src/*.sol test/**/*.sol test/public/**/*.sol --allow-dupe --request-delay 0.4 \ + awesome_bot ./*.md src/*.sol test/**/*.sol test/public/**/*.sol interface/*.md interface/public/*.css interface/src/**/*.css interface/src/**/*.tsx interface/src/**/*.ts interface/src/components/**/*.tsx \ + --allow-dupe --request-delay 0.4 \ --white-list "https://github.com/pcaversaccio/createx/issues/new?assignees=pcaversaccio&labels=new+deployment+%E2%9E%95&projects=&template=deployment_request.yml&title=%5BNew-Deployment-Request%5D%3A+",https://twitter.com/PaulRBerg/status/1682346315806539776,https://www.createx.rocks,https://foundry.paradigm.xyz,https://github.com/pcaversaccio/createx.git diff --git a/.prettierignore b/.prettierignore index d3881d1d..9fca3ec5 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,4 +1,5 @@ node_modules +interface lib cache typechain-types diff --git a/.solhintignore b/.solhintignore index d3881d1d..9fca3ec5 100644 --- a/.solhintignore +++ b/.solhintignore @@ -1,4 +1,5 @@ node_modules +interface lib cache typechain-types diff --git a/CNAME b/CNAME index 74594e48..8d684c20 100644 --- a/CNAME +++ b/CNAME @@ -1 +1 @@ -createx.rocks \ No newline at end of file +createx.rocks diff --git a/interface/.eslintignore b/interface/.eslintignore new file mode 100644 index 00000000..06657422 --- /dev/null +++ b/interface/.eslintignore @@ -0,0 +1,3 @@ +node_modules +.next +next-env.d.ts diff --git a/interface/.eslintrc.json b/interface/.eslintrc.json new file mode 100644 index 00000000..dffe8401 --- /dev/null +++ b/interface/.eslintrc.json @@ -0,0 +1,3 @@ +{ + "extends": ["next"] +} diff --git a/interface/.gitignore b/interface/.gitignore new file mode 100644 index 00000000..590e5b57 --- /dev/null +++ b/interface/.gitignore @@ -0,0 +1,51 @@ +# Ignore all Visual Studio Code settings +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +!.vscode/*.code-snippets + +# Local history for Visual Studio Code +.history + +# Built Visual Studio Code extensions +*.vsix + +# Dependency directory +node_modules + +# dotenv environment variable files +.env +.env.development.local +.env.test.local +.env.production.local +.env.local + +# Log files +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# Yarn integrity file +.yarn-integrity + +# Optional npm cache directory +.npm + +# Modern Yarn files +.pnp.* +.yarn/* +!.yarn/cache +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/sdks +!.yarn/versions + +# Next.js +.next +next-env.d.ts diff --git a/interface/.prettierignore b/interface/.prettierignore new file mode 100644 index 00000000..06657422 --- /dev/null +++ b/interface/.prettierignore @@ -0,0 +1,3 @@ +node_modules +.next +next-env.d.ts diff --git a/interface/.prettierrc.yml b/interface/.prettierrc.yml new file mode 100644 index 00000000..986620f3 --- /dev/null +++ b/interface/.prettierrc.yml @@ -0,0 +1,6 @@ +plugins: + - "prettier-plugin-tailwindcss" + - "@trivago/prettier-plugin-sort-imports" +importOrder: + ["^react(.*)", "next/(.*)", "", "@/(.*)", "^[./]"] +importOrderSortSpecifiers: true diff --git a/interface/LICENSE b/interface/LICENSE new file mode 100644 index 00000000..2cc7ab2d --- /dev/null +++ b/interface/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Matt Solomon + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/interface/README.md b/interface/README.md new file mode 100644 index 00000000..9e48da5e --- /dev/null +++ b/interface/README.md @@ -0,0 +1,7 @@ +# [`CreateX`](../src/CreateX.sol) User Interface + +[Next.js](https://nextjs.org)-based user interface for [createx.rocks](https://www.createx.rocks). + +## 🙏🏼 Acknowledgement + +Our code is based on a fork of [Matt Solomon](https://github.com/mds1)'s [`Multicall3`](https://github.com/mds1/multicall) [frontend](https://github.com/mds1/multicall3-frontend), licensed under the [MIT License](https://github.com/mds1/multicall3-frontend/blob/main/LICENSE). diff --git a/interface/package.json b/interface/package.json new file mode 100644 index 00000000..9b319102 --- /dev/null +++ b/interface/package.json @@ -0,0 +1,56 @@ +{ + "name": "createx-interface", + "version": "1.0.0", + "private": true, + "description": "Next.js-based user interface for createx.rocks.", + "keywords": [ + "frontend", + "interface", + "nextjs", + "react", + "typescript" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/pcaversaccio/createx.git" + }, + "homepage": "https://github.com/pcaversaccio/createx/tree/main/interface#readme", + "bugs": { + "url": "https://github.com/pcaversaccio/createx/issues" + }, + "author": "pcaversaccio (https://pcaversaccio.com), Matt Solomon (https://mattsolomon.dev)", + "license": "MIT", + "scripts": { + "dev": "npx next dev", + "build": "npx next build", + "start": "pnpm build && npx next start", + "prettier:check": "npx prettier -c **/*.{js,ts,tsx,css,md,json,yml,yaml}", + "prettier:fix": "npx prettier -w **/*.{js,ts,tsx,css,md,json,yml,yaml}", + "lint:check": "pnpm prettier:check && npx next lint", + "lint:fix": "pnpm prettier:fix && npx next lint --fix" + }, + "dependencies": { + "@headlessui/react": "^1.7.17", + "@heroicons/react": "^2.0.18", + "next": "14.0.4", + "next-themes": "^0.2.1", + "prismjs": "^1.29.0", + "react": "18.2.0", + "react-dom": "18.2.0", + "sharp": "^0.33.0" + }, + "devDependencies": { + "@trivago/prettier-plugin-sort-imports": "^4.3.0", + "@types/node": "20.10.4", + "@types/react": "18.2.45", + "@types/react-dom": "18.2.18", + "autoprefixer": "10.4.16", + "eslint": "8.56.0", + "eslint-config-next": "14.0.4", + "postcss": "8.4.32", + "prettier": "^3.1.1", + "prettier-plugin-tailwindcss": "^0.5.9", + "tailwindcss": "3.3.6", + "typescript": "5.3.3" + } +} diff --git a/interface/postcss.config.js b/interface/postcss.config.js new file mode 100644 index 00000000..12a703d9 --- /dev/null +++ b/interface/postcss.config.js @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +}; diff --git a/interface/prismjs.d.ts b/interface/prismjs.d.ts new file mode 100644 index 00000000..043681c5 --- /dev/null +++ b/interface/prismjs.d.ts @@ -0,0 +1,5 @@ +declare module "prismjs"; +declare module "prismjs/themes/*" { + const content: string; + export default content; +} diff --git a/interface/public/ethersjs.png b/interface/public/ethersjs.png new file mode 100644 index 00000000..db131923 Binary files /dev/null and b/interface/public/ethersjs.png differ diff --git a/interface/public/favicon.ico b/interface/public/favicon.ico new file mode 100644 index 00000000..1313a22d Binary files /dev/null and b/interface/public/favicon.ico differ diff --git a/interface/public/json.svg b/interface/public/json.svg new file mode 100644 index 00000000..e83b8dfb --- /dev/null +++ b/interface/public/json.svg @@ -0,0 +1,47 @@ + + JSON logo + + + + + + + + + + + + + diff --git a/interface/public/prism-dark.css b/interface/public/prism-dark.css new file mode 100644 index 00000000..42bf2190 --- /dev/null +++ b/interface/public/prism-dark.css @@ -0,0 +1,126 @@ +/** + * This file was copied from node_modules/prismjs/themes/prism-tomorrow.css and is required for clean + * applying and removing of the prism.js themes when switching between light and dark mode. + */ + +/** + * prism.js tomorrow night eighties for JavaScript, CoffeeScript, CSS and HTML + * Based on https://github.com/chriskempson/tomorrow-theme + * @author Rose Pritchard + */ + +code[class*="language-"], +pre[class*="language-"] { + color: #ccc; + background: none; + font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; + font-size: 1em; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + line-height: 1.5; + + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} + +/* Code blocks */ +pre[class*="language-"] { + padding: 1em; + margin: 0.5em 0; + overflow: auto; +} + +:not(pre) > code[class*="language-"], +pre[class*="language-"] { + background: #2d2d2d; +} + +/* Inline code */ +:not(pre) > code[class*="language-"] { + padding: 0.1em; + border-radius: 0.3em; + white-space: normal; +} + +.token.comment, +.token.block-comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: #999; +} + +.token.punctuation { + color: #ccc; +} + +.token.tag, +.token.attr-name, +.token.namespace, +.token.deleted { + color: #e2777a; +} + +.token.function-name { + color: #6196cc; +} + +.token.boolean, +.token.number, +.token.function { + color: #f08d49; +} + +.token.property, +.token.class-name, +.token.constant, +.token.symbol { + color: #f8c555; +} + +.token.selector, +.token.important, +.token.atrule, +.token.keyword, +.token.builtin { + color: #cc99cd; +} + +.token.string, +.token.char, +.token.attr-value, +.token.regex, +.token.variable { + color: #7ec699; +} + +.token.operator, +.token.entity, +.token.url { + color: #67cdcc; +} + +.token.important, +.token.bold { + font-weight: bold; +} +.token.italic { + font-style: italic; +} + +.token.entity { + cursor: help; +} + +.token.inserted { + color: green; +} diff --git a/interface/public/prism-light.css b/interface/public/prism-light.css new file mode 100644 index 00000000..ba44ca06 --- /dev/null +++ b/interface/public/prism-light.css @@ -0,0 +1,149 @@ +/** + * This file was copied from node_modules/prismjs/themes/prism.css and is required for clean + * applying and removing of the prism.js themes when switching between light and dark mode. + */ + +/** + * prism.js default theme for JavaScript, CSS and HTML + * Based on dabblet (https://dabblet.com/) + * @author Lea Verou + */ + +code[class*="language-"], +pre[class*="language-"] { + color: black; + background: none; + text-shadow: 0 1px white; + font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; + font-size: 1em; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + line-height: 1.5; + + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} + +pre[class*="language-"]::-moz-selection, +pre[class*="language-"] ::-moz-selection, +code[class*="language-"]::-moz-selection, +code[class*="language-"] ::-moz-selection { + text-shadow: none; + background: #b3d4fc; +} + +pre[class*="language-"]::selection, +pre[class*="language-"] ::selection, +code[class*="language-"]::selection, +code[class*="language-"] ::selection { + text-shadow: none; + background: #b3d4fc; +} + +@media print { + code[class*="language-"], + pre[class*="language-"] { + text-shadow: none; + } +} + +/* Code blocks */ +pre[class*="language-"] { + padding: 1em; + margin: 0.5em 0; + overflow: auto; +} + +:not(pre) > code[class*="language-"], +pre[class*="language-"] { + background: #f5f2f0; +} + +/* Inline code */ +:not(pre) > code[class*="language-"] { + padding: 0.1em; + border-radius: 0.3em; + white-space: normal; +} + +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: slategray; +} + +.token.punctuation { + color: #999; +} + +.token.namespace { + opacity: 0.7; +} + +.token.property, +.token.tag, +.token.boolean, +.token.number, +.token.constant, +.token.symbol, +.token.deleted { + color: #905; +} + +.token.selector, +.token.attr-name, +.token.string, +.token.char, +.token.builtin, +.token.inserted { + color: #690; +} + +.token.operator, +.token.entity, +.token.url, +.language-css .token.string, +.style .token.string { + color: #9a6e3a; + /* This background color was intended by the author of this theme. */ + background: hsla(0, 0%, 100%, 0.5); +} + +.token.atrule, +.token.attr-value, +.token.keyword { + color: #07a; +} + +.token.function, +.token.class-name { + color: #dd4a68; +} + +.token.regex, +.token.important, +.token.variable { + color: #e90; +} + +.token.important, +.token.bold { + font-weight: bold; +} +.token.italic { + font-style: italic; +} + +.token.entity { + cursor: help; +} diff --git a/interface/public/solidity.png b/interface/public/solidity.png new file mode 100644 index 00000000..b6cce3c3 Binary files /dev/null and b/interface/public/solidity.png differ diff --git a/interface/public/viem.png b/interface/public/viem.png new file mode 100644 index 00000000..dae92c2c Binary files /dev/null and b/interface/public/viem.png differ diff --git a/interface/src/components/layout/ExternalLink.tsx b/interface/src/components/layout/ExternalLink.tsx new file mode 100644 index 00000000..bae52a3c --- /dev/null +++ b/interface/src/components/layout/ExternalLink.tsx @@ -0,0 +1,20 @@ +type Props = { + href: string; + className?: string; +} & ( + | { text: string; children?: never } + | { text?: never; children: JSX.Element } +); + +export const ExternalLink = ({ href, className, text, children }: Props) => { + return ( + + {text || children} + + ); +}; diff --git a/interface/src/components/layout/Footer.tsx b/interface/src/components/layout/Footer.tsx new file mode 100644 index 00000000..335aadd4 --- /dev/null +++ b/interface/src/components/layout/Footer.tsx @@ -0,0 +1,82 @@ +import { ExternalLink } from "@/components/layout/ExternalLink"; +import { ThemeSwitcher } from "@/components/layout/ThemeSwitcher"; +import { COMPANY_NAME, COMPANY_URL, GITHUB_URL, X_URL } from "@/lib/constants"; + +const navigation = [ + { + name: "X", + href: X_URL, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + icon: (props: any) => ( + + + + + + ), + }, + { + name: "GitHub", + href: GITHUB_URL, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + icon: (props: any) => ( + + + + ), + }, +]; + +export const Footer = () => { + const currentYear = new Date().getFullYear(); + return ( + + ); +}; diff --git a/interface/src/components/layout/Head.tsx b/interface/src/components/layout/Head.tsx new file mode 100644 index 00000000..a976b991 --- /dev/null +++ b/interface/src/components/layout/Head.tsx @@ -0,0 +1,32 @@ +import NextHead from "next/head"; +import { SITE_DESCRIPTION, SITE_NAME } from "@/lib/constants"; + +interface Props { + title?: string; + description?: string; +} + +export const Head = (props: Props) => { + return ( + + {props.title ? `${props.title} | ${SITE_NAME}` : SITE_NAME} + + + + + + + + + + ); +}; diff --git a/interface/src/components/layout/Header.tsx b/interface/src/components/layout/Header.tsx new file mode 100644 index 00000000..cab2814b --- /dev/null +++ b/interface/src/components/layout/Header.tsx @@ -0,0 +1,93 @@ +import { useState } from "react"; +import Link from "next/link"; +import { useRouter } from "next/router"; +import { ClipboardDocumentIcon } from "@heroicons/react/24/solid"; +import { Notification } from "@/components/ui/Notification"; +import { COMPANY_NAME, CREATEX_ADDRESS, SITE_NAME } from "@/lib/constants"; +import { copyToClipboard } from "@/lib/utils"; + +export const Header = () => { + // -------- Navigation -------- + const currentPath = useRouter().pathname; + + const NavLink = (props: { + path: string; + label: string; + className?: string; + }) => { + const activeClass = props.path === currentPath ? "font-bold" : ""; + return ( + + {props.label} + + ); + }; + + // -------- Copy Address to Clipboard -------- + const [showNotification, setShowNotification] = useState(false); + + const onCopy = (text: string) => { + copyToClipboard(text); + setShowNotification(true); + setTimeout(() => setShowNotification(false), 3000); + }; + + // -------- Render -------- + return ( +
+ + +
+
+
+ + {COMPANY_NAME} + + {SITE_NAME} + + {/* logo */} + +
+
+ + + +
+
+
+
+
+

+ Deployment Address +

+
+
+              {CREATEX_ADDRESS}
+            
+ onCopy(CREATEX_ADDRESS)} + /> +
+
+
+
+ ); +}; diff --git a/interface/src/components/layout/Layout.tsx b/interface/src/components/layout/Layout.tsx new file mode 100644 index 00000000..ddec6197 --- /dev/null +++ b/interface/src/components/layout/Layout.tsx @@ -0,0 +1,18 @@ +import { Footer } from "@/components/layout/Footer"; +import { Header } from "@/components/layout/Header"; + +interface Props { + children: JSX.Element; +} + +export const Layout = ({ children }: Props) => { + return ( +
+
+
+ {children} +
+
+
+ ); +}; diff --git a/interface/src/components/layout/ThemeSwitcher.tsx b/interface/src/components/layout/ThemeSwitcher.tsx new file mode 100644 index 00000000..e2fb31da --- /dev/null +++ b/interface/src/components/layout/ThemeSwitcher.tsx @@ -0,0 +1,18 @@ +import { useCallback } from "react"; +import { MoonIcon, SunIcon } from "@heroicons/react/20/solid"; +import { useTheme } from "next-themes"; + +export const ThemeSwitcher = ({ className = "" }) => { + const { resolvedTheme, setTheme } = useTheme(); + + const toggleTheme = useCallback(() => { + setTheme(resolvedTheme === "light" ? "dark" : "light"); + }, [resolvedTheme, setTheme]); + + return ( + + ); +}; diff --git a/interface/src/components/ui/LoadingSpinner.tsx b/interface/src/components/ui/LoadingSpinner.tsx new file mode 100644 index 00000000..6f25e016 --- /dev/null +++ b/interface/src/components/ui/LoadingSpinner.tsx @@ -0,0 +1,27 @@ +export const LoadingSpinner = () => { + return ( +
+ + + + +
+ ); +}; diff --git a/interface/src/components/ui/Notification.tsx b/interface/src/components/ui/Notification.tsx new file mode 100644 index 00000000..e28f048d --- /dev/null +++ b/interface/src/components/ui/Notification.tsx @@ -0,0 +1,109 @@ +import { Fragment } from "react"; +import { Transition } from "@headlessui/react"; +import { + CheckCircleIcon, + ExclamationCircleIcon, + InformationCircleIcon, + XCircleIcon, +} from "@heroicons/react/24/outline"; +import { XMarkIcon } from "@heroicons/react/24/solid"; + +function getKindInfo(kind: "success" | "warning" | "error" | "info") { + if (kind === "success") + return { + icon: CheckCircleIcon, + iconColor: "text-green-500 dark:text-green-400", + }; + if (kind === "warning") + return { + icon: ExclamationCircleIcon, + iconColor: "text-yellow-500 dark:text-yellow-400", + }; + if (kind === "error") + return { icon: XCircleIcon, iconColor: "text-red-600 dark:text-red-500" }; + return { + icon: InformationCircleIcon, + iconColor: "text-blue-500 dark:text-blue-400", + }; +} + +interface Props { + show: boolean; + setShow: (show: boolean) => void; + kind: "success" | "warning" | "error" | "info"; + title: string; + description?: string; +} + +export const Notification = ({ + show, + setShow, + kind = "info", + title, + description, +}: Props) => { + const { icon: Icon, iconColor } = getKindInfo(kind); + + const bgColor = "bg-gray-50 dark:bg-gray-800"; + const titleTextColor = "text-primary"; + const descriptionTextColor = "text-secondary"; + + return ( + <> + {/* Global notification live region, render this permanently at the end of the document */} +
+
+ {/* Notification panel, dynamically insert this into the live region when it needs to be displayed */} + +
+
+
+
+
+
+

+ {title} +

+

+ {description} +

+
+
+ +
+
+
+
+
+
+
+ + ); +}; diff --git a/interface/src/lib/constants.ts b/interface/src/lib/constants.ts new file mode 100644 index 00000000..86bac11d --- /dev/null +++ b/interface/src/lib/constants.ts @@ -0,0 +1,1161 @@ +export const SITE_NAME = "CreateX"; +export const SITE_DESCRIPTION = "A Trustless, Universal Contract Deployer"; +export const COMPANY_NAME = "pcaversaccio"; +export const COMPANY_URL = "https://pcaversaccio.com"; +export const GITHUB_URL = "https://github.com/pcaversaccio/createx"; +export const X_URL = "https://twitter.com/pcaversaccio"; + +export const CREATEX_ADDRESS = "0xba5Ed099633D3B313e4D5F7bdc1305d3c28ba5Ed"; +export const CREATEX_ABI = [ + { + inputs: [ + { + internalType: "address", + name: "emitter", + type: "address", + }, + ], + name: "FailedContractCreation", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "emitter", + type: "address", + }, + { + internalType: "bytes", + name: "revertData", + type: "bytes", + }, + ], + name: "FailedContractInitialisation", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "emitter", + type: "address", + }, + { + internalType: "bytes", + name: "revertData", + type: "bytes", + }, + ], + name: "FailedEtherTransfer", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "emitter", + type: "address", + }, + ], + name: "InvalidNonceValue", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "emitter", + type: "address", + }, + ], + name: "InvalidSalt", + type: "error", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "newContract", + type: "address", + }, + { + indexed: true, + internalType: "bytes32", + name: "salt", + type: "bytes32", + }, + ], + name: "ContractCreation", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "newContract", + type: "address", + }, + ], + name: "ContractCreation", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "newContract", + type: "address", + }, + { + indexed: true, + internalType: "bytes32", + name: "salt", + type: "bytes32", + }, + ], + name: "Create3ProxyContractCreation", + type: "event", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "salt", + type: "bytes32", + }, + { + internalType: "bytes32", + name: "initCodeHash", + type: "bytes32", + }, + ], + name: "computeCreate2Address", + outputs: [ + { + internalType: "address", + name: "computedAddress", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "salt", + type: "bytes32", + }, + { + internalType: "bytes32", + name: "initCodeHash", + type: "bytes32", + }, + { + internalType: "address", + name: "deployer", + type: "address", + }, + ], + name: "computeCreate2Address", + outputs: [ + { + internalType: "address", + name: "computedAddress", + type: "address", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "salt", + type: "bytes32", + }, + { + internalType: "address", + name: "deployer", + type: "address", + }, + ], + name: "computeCreate3Address", + outputs: [ + { + internalType: "address", + name: "computedAddress", + type: "address", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "salt", + type: "bytes32", + }, + ], + name: "computeCreate3Address", + outputs: [ + { + internalType: "address", + name: "computedAddress", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "nonce", + type: "uint256", + }, + ], + name: "computeCreateAddress", + outputs: [ + { + internalType: "address", + name: "computedAddress", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "deployer", + type: "address", + }, + { + internalType: "uint256", + name: "nonce", + type: "uint256", + }, + ], + name: "computeCreateAddress", + outputs: [ + { + internalType: "address", + name: "computedAddress", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes", + name: "initCode", + type: "bytes", + }, + ], + name: "deployCreate", + outputs: [ + { + internalType: "address", + name: "newContract", + type: "address", + }, + ], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "salt", + type: "bytes32", + }, + { + internalType: "bytes", + name: "initCode", + type: "bytes", + }, + ], + name: "deployCreate2", + outputs: [ + { + internalType: "address", + name: "newContract", + type: "address", + }, + ], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes", + name: "initCode", + type: "bytes", + }, + ], + name: "deployCreate2", + outputs: [ + { + internalType: "address", + name: "newContract", + type: "address", + }, + ], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "salt", + type: "bytes32", + }, + { + internalType: "bytes", + name: "initCode", + type: "bytes", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + { + components: [ + { + internalType: "uint256", + name: "constructorAmount", + type: "uint256", + }, + { + internalType: "uint256", + name: "initCallAmount", + type: "uint256", + }, + ], + internalType: "struct CreateX.Values", + name: "values", + type: "tuple", + }, + { + internalType: "address", + name: "refundAddress", + type: "address", + }, + ], + name: "deployCreate2AndInit", + outputs: [ + { + internalType: "address", + name: "newContract", + type: "address", + }, + ], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes", + name: "initCode", + type: "bytes", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + { + components: [ + { + internalType: "uint256", + name: "constructorAmount", + type: "uint256", + }, + { + internalType: "uint256", + name: "initCallAmount", + type: "uint256", + }, + ], + internalType: "struct CreateX.Values", + name: "values", + type: "tuple", + }, + ], + name: "deployCreate2AndInit", + outputs: [ + { + internalType: "address", + name: "newContract", + type: "address", + }, + ], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes", + name: "initCode", + type: "bytes", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + { + components: [ + { + internalType: "uint256", + name: "constructorAmount", + type: "uint256", + }, + { + internalType: "uint256", + name: "initCallAmount", + type: "uint256", + }, + ], + internalType: "struct CreateX.Values", + name: "values", + type: "tuple", + }, + { + internalType: "address", + name: "refundAddress", + type: "address", + }, + ], + name: "deployCreate2AndInit", + outputs: [ + { + internalType: "address", + name: "newContract", + type: "address", + }, + ], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "salt", + type: "bytes32", + }, + { + internalType: "bytes", + name: "initCode", + type: "bytes", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + { + components: [ + { + internalType: "uint256", + name: "constructorAmount", + type: "uint256", + }, + { + internalType: "uint256", + name: "initCallAmount", + type: "uint256", + }, + ], + internalType: "struct CreateX.Values", + name: "values", + type: "tuple", + }, + ], + name: "deployCreate2AndInit", + outputs: [ + { + internalType: "address", + name: "newContract", + type: "address", + }, + ], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "salt", + type: "bytes32", + }, + { + internalType: "address", + name: "implementation", + type: "address", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "deployCreate2Clone", + outputs: [ + { + internalType: "address", + name: "proxy", + type: "address", + }, + ], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "implementation", + type: "address", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "deployCreate2Clone", + outputs: [ + { + internalType: "address", + name: "proxy", + type: "address", + }, + ], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes", + name: "initCode", + type: "bytes", + }, + ], + name: "deployCreate3", + outputs: [ + { + internalType: "address", + name: "newContract", + type: "address", + }, + ], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "salt", + type: "bytes32", + }, + { + internalType: "bytes", + name: "initCode", + type: "bytes", + }, + ], + name: "deployCreate3", + outputs: [ + { + internalType: "address", + name: "newContract", + type: "address", + }, + ], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "salt", + type: "bytes32", + }, + { + internalType: "bytes", + name: "initCode", + type: "bytes", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + { + components: [ + { + internalType: "uint256", + name: "constructorAmount", + type: "uint256", + }, + { + internalType: "uint256", + name: "initCallAmount", + type: "uint256", + }, + ], + internalType: "struct CreateX.Values", + name: "values", + type: "tuple", + }, + ], + name: "deployCreate3AndInit", + outputs: [ + { + internalType: "address", + name: "newContract", + type: "address", + }, + ], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes", + name: "initCode", + type: "bytes", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + { + components: [ + { + internalType: "uint256", + name: "constructorAmount", + type: "uint256", + }, + { + internalType: "uint256", + name: "initCallAmount", + type: "uint256", + }, + ], + internalType: "struct CreateX.Values", + name: "values", + type: "tuple", + }, + ], + name: "deployCreate3AndInit", + outputs: [ + { + internalType: "address", + name: "newContract", + type: "address", + }, + ], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "salt", + type: "bytes32", + }, + { + internalType: "bytes", + name: "initCode", + type: "bytes", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + { + components: [ + { + internalType: "uint256", + name: "constructorAmount", + type: "uint256", + }, + { + internalType: "uint256", + name: "initCallAmount", + type: "uint256", + }, + ], + internalType: "struct CreateX.Values", + name: "values", + type: "tuple", + }, + { + internalType: "address", + name: "refundAddress", + type: "address", + }, + ], + name: "deployCreate3AndInit", + outputs: [ + { + internalType: "address", + name: "newContract", + type: "address", + }, + ], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes", + name: "initCode", + type: "bytes", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + { + components: [ + { + internalType: "uint256", + name: "constructorAmount", + type: "uint256", + }, + { + internalType: "uint256", + name: "initCallAmount", + type: "uint256", + }, + ], + internalType: "struct CreateX.Values", + name: "values", + type: "tuple", + }, + { + internalType: "address", + name: "refundAddress", + type: "address", + }, + ], + name: "deployCreate3AndInit", + outputs: [ + { + internalType: "address", + name: "newContract", + type: "address", + }, + ], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes", + name: "initCode", + type: "bytes", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + { + components: [ + { + internalType: "uint256", + name: "constructorAmount", + type: "uint256", + }, + { + internalType: "uint256", + name: "initCallAmount", + type: "uint256", + }, + ], + internalType: "struct CreateX.Values", + name: "values", + type: "tuple", + }, + ], + name: "deployCreateAndInit", + outputs: [ + { + internalType: "address", + name: "newContract", + type: "address", + }, + ], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes", + name: "initCode", + type: "bytes", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + { + components: [ + { + internalType: "uint256", + name: "constructorAmount", + type: "uint256", + }, + { + internalType: "uint256", + name: "initCallAmount", + type: "uint256", + }, + ], + internalType: "struct CreateX.Values", + name: "values", + type: "tuple", + }, + { + internalType: "address", + name: "refundAddress", + type: "address", + }, + ], + name: "deployCreateAndInit", + outputs: [ + { + internalType: "address", + name: "newContract", + type: "address", + }, + ], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "implementation", + type: "address", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "deployCreateClone", + outputs: [ + { + internalType: "address", + name: "proxy", + type: "address", + }, + ], + stateMutability: "payable", + type: "function", + }, +] as const; + +export const CREATEX_ABI_VIEM = `[ + "error FailedContractCreation(address emitter)", + "error FailedContractInitialisation(address emitter, bytes revertData)", + "error FailedEtherTransfer(address emitter, bytes revertData)", + "error InvalidNonceValue(address emitter)", + "error InvalidSalt(address emitter)", + "event ContractCreation(address indexed newContract, bytes32 indexed salt)", + "event ContractCreation(address indexed newContract)", + "event Create3ProxyContractCreation(address indexed newContract, bytes32 indexed salt)", + "function computeCreate2Address(bytes32 salt, bytes32 initCodeHash) view returns (address computedAddress)", + "function computeCreate2Address(bytes32 salt, bytes32 initCodeHash, address deployer) pure returns (address computedAddress)", + "function computeCreate3Address(bytes32 salt, address deployer) pure returns (address computedAddress)", + "function computeCreate3Address(bytes32 salt) view returns (address computedAddress)", + "function computeCreateAddress(uint256 nonce) view returns (address computedAddress)", + "function computeCreateAddress(address deployer, uint256 nonce) view returns (address computedAddress)", + "function deployCreate(bytes initCode) payable returns (address newContract)", + "function deployCreate2(bytes32 salt, bytes initCode) payable returns (address newContract)", + "function deployCreate2(bytes initCode) payable returns (address newContract)", + "function deployCreate2AndInit(bytes32 salt, bytes initCode, bytes data, (uint256 constructorAmount, uint256 initCallAmount) values, address refundAddress) payable returns (address newContract)", + "function deployCreate2AndInit(bytes initCode, bytes data, (uint256 constructorAmount, uint256 initCallAmount) values) payable returns (address newContract)", + "function deployCreate2AndInit(bytes initCode, bytes data, (uint256 constructorAmount, uint256 initCallAmount) values, address refundAddress) payable returns (address newContract)", + "function deployCreate2AndInit(bytes32 salt, bytes initCode, bytes data, (uint256 constructorAmount, uint256 initCallAmount) values) payable returns (address newContract)", + "function deployCreate2Clone(bytes32 salt, address implementation, bytes data) payable returns (address proxy)", + "function deployCreate2Clone(address implementation, bytes data) payable returns (address proxy)", + "function deployCreate3(bytes initCode) payable returns (address newContract)", + "function deployCreate3(bytes32 salt, bytes initCode) payable returns (address newContract)", + "function deployCreate3AndInit(bytes32 salt, bytes initCode, bytes data, (uint256 constructorAmount, uint256 initCallAmount) values) payable returns (address newContract)", + "function deployCreate3AndInit(bytes initCode, bytes data, (uint256 constructorAmount, uint256 initCallAmount) values) payable returns (address newContract)", + "function deployCreate3AndInit(bytes32 salt, bytes initCode, bytes data, (uint256 constructorAmount, uint256 initCallAmount) values, address refundAddress) payable returns (address newContract)", + "function deployCreate3AndInit(bytes initCode, bytes data, (uint256 constructorAmount, uint256 initCallAmount) values, address refundAddress) payable returns (address newContract)", + "function deployCreateAndInit(bytes initCode, bytes data, (uint256 constructorAmount, uint256 initCallAmount) values) payable returns (address newContract)", + "function deployCreateAndInit(bytes initCode, bytes data, (uint256 constructorAmount, uint256 initCallAmount) values, address refundAddress) payable returns (address newContract)", + "function deployCreateClone(address implementation, bytes data) payable returns (address proxy)", +] as const;`; + +export const CREATEX_ABI_ETHERS = `[ + "error FailedContractCreation(address)", + "error FailedContractInitialisation(address,bytes)", + "error FailedEtherTransfer(address,bytes)", + "error InvalidNonceValue(address)", + "error InvalidSalt(address)", + "event ContractCreation(address indexed,bytes32 indexed)", + "event ContractCreation(address indexed)", + "event Create3ProxyContractCreation(address indexed,bytes32 indexed)", + "function computeCreate2Address(bytes32,bytes32) view returns (address)", + "function computeCreate2Address(bytes32,bytes32,address) pure returns (address)", + "function computeCreate3Address(bytes32,address) pure returns (address)", + "function computeCreate3Address(bytes32) view returns (address)", + "function computeCreateAddress(uint256) view returns (address)", + "function computeCreateAddress(address,uint256) view returns (address)", + "function deployCreate(bytes) payable returns (address)", + "function deployCreate2(bytes32,bytes) payable returns (address)", + "function deployCreate2(bytes) payable returns (address)", + "function deployCreate2AndInit(bytes32,bytes,bytes,tuple(uint256,uint256),address) payable returns (address)", + "function deployCreate2AndInit(bytes,bytes,tuple(uint256,uint256)) payable returns (address)", + "function deployCreate2AndInit(bytes,bytes,tuple(uint256,uint256),address) payable returns (address)", + "function deployCreate2AndInit(bytes32,bytes,bytes,tuple(uint256,uint256)) payable returns (address)", + "function deployCreate2Clone(bytes32,address,bytes) payable returns (address)", + "function deployCreate2Clone(address,bytes) payable returns (address)", + "function deployCreate3(bytes) payable returns (address)", + "function deployCreate3(bytes32,bytes) payable returns (address)", + "function deployCreate3AndInit(bytes32,bytes,bytes,tuple(uint256,uint256)) payable returns (address)", + "function deployCreate3AndInit(bytes,bytes,tuple(uint256,uint256)) payable returns (address)", + "function deployCreate3AndInit(bytes32,bytes,bytes,tuple(uint256,uint256),address) payable returns (address)", + "function deployCreate3AndInit(bytes,bytes,tuple(uint256,uint256),address) payable returns (address)", + "function deployCreateAndInit(bytes,bytes,tuple(uint256,uint256)) payable returns (address)", + "function deployCreateAndInit(bytes,bytes,tuple(uint256,uint256),address) payable returns (address)", + "function deployCreateClone(address,bytes) payable returns (address)" +]`; + +export const CREATEX_SOLIDITY_INTERFACE = `// SPDX-License-Identifier: AGPL-3.0-only +pragma solidity ^0.8.4; + +/** + * @title CreateX Factory Interface Definition + * @author pcaversaccio (https://web.archive.org/web/20230921103111/https://pcaversaccio.com/) + * @custom:coauthor Matt Solomon (https://web.archive.org/web/20230921103335/https://mattsolomon.dev/) + */ +interface ICreateX { + /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/ + /* TYPES */ + /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/ + + struct Values { + uint256 constructorAmount; + uint256 initCallAmount; + } + + /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/ + /* EVENTS */ + /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/ + + event ContractCreation(address indexed newContract, bytes32 indexed salt); + event ContractCreation(address indexed newContract); + event Create3ProxyContractCreation( + address indexed newContract, + bytes32 indexed salt + ); + + /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/ + /* CUSTOM ERRORS */ + /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/ + + error FailedContractCreation(address emitter); + error FailedContractInitialisation(address emitter, bytes revertData); + error InvalidSalt(address emitter); + error InvalidNonceValue(address emitter); + error FailedEtherTransfer(address emitter, bytes revertData); + + /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/ + /* CREATE */ + /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/ + + function deployCreate( + bytes memory initCode + ) external payable returns (address newContract); + + function deployCreateAndInit( + bytes memory initCode, + bytes memory data, + Values memory values, + address refundAddress + ) external payable returns (address newContract); + + function deployCreateAndInit( + bytes memory initCode, + bytes memory data, + Values memory values + ) external payable returns (address newContract); + + function deployCreateClone( + address implementation, + bytes memory data + ) external payable returns (address proxy); + + function computeCreateAddress( + address deployer, + uint256 nonce + ) external view returns (address computedAddress); + + function computeCreateAddress( + uint256 nonce + ) external view returns (address computedAddress); + + /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/ + /* CREATE2 */ + /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/ + + function deployCreate2( + bytes32 salt, + bytes memory initCode + ) external payable returns (address newContract); + + function deployCreate2( + bytes memory initCode + ) external payable returns (address newContract); + + function deployCreate2AndInit( + bytes32 salt, + bytes memory initCode, + bytes memory data, + Values memory values, + address refundAddress + ) external payable returns (address newContract); + + function deployCreate2AndInit( + bytes32 salt, + bytes memory initCode, + bytes memory data, + Values memory values + ) external payable returns (address newContract); + + function deployCreate2AndInit( + bytes memory initCode, + bytes memory data, + Values memory values, + address refundAddress + ) external payable returns (address newContract); + + function deployCreate2AndInit( + bytes memory initCode, + bytes memory data, + Values memory values + ) external payable returns (address newContract); + + function deployCreate2Clone( + bytes32 salt, + address implementation, + bytes memory data + ) external payable returns (address proxy); + + function deployCreate2Clone( + address implementation, + bytes memory data + ) external payable returns (address proxy); + + function computeCreate2Address( + bytes32 salt, + bytes32 initCodeHash, + address deployer + ) external pure returns (address computedAddress); + + function computeCreate2Address( + bytes32 salt, + bytes32 initCodeHash + ) external view returns (address computedAddress); + + /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/ + /* CREATE3 */ + /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/ + + function deployCreate3( + bytes32 salt, + bytes memory initCode + ) external payable returns (address newContract); + + function deployCreate3( + bytes memory initCode + ) external payable returns (address newContract); + + function deployCreate3AndInit( + bytes32 salt, + bytes memory initCode, + bytes memory data, + Values memory values, + address refundAddress + ) external payable returns (address newContract); + + function deployCreate3AndInit( + bytes32 salt, + bytes memory initCode, + bytes memory data, + Values memory values + ) external payable returns (address newContract); + + function deployCreate3AndInit( + bytes memory initCode, + bytes memory data, + Values memory values, + address refundAddress + ) external payable returns (address newContract); + + function deployCreate3AndInit( + bytes memory initCode, + bytes memory data, + Values memory values + ) external payable returns (address newContract); + + function computeCreate3Address( + bytes32 salt, + address deployer + ) external pure returns (address computedAddress); + + function computeCreate3Address( + bytes32 salt + ) external view returns (address computedAddress); +} +`; diff --git a/interface/src/lib/utils.ts b/interface/src/lib/utils.ts new file mode 100644 index 00000000..9493d24f --- /dev/null +++ b/interface/src/lib/utils.ts @@ -0,0 +1,9 @@ +export const classNames = (...classes: string[]) => + classes.filter(Boolean).join(" "); + +export const copyToClipboard = (text: string) => { + navigator.clipboard.writeText(text).then( + () => console.log("Copying to clipboard was successful!"), + (err) => console.error("Could not copy text to clipboard: ", err), + ); +}; diff --git a/interface/src/pages/_app.tsx b/interface/src/pages/_app.tsx new file mode 100644 index 00000000..113c3c06 --- /dev/null +++ b/interface/src/pages/_app.tsx @@ -0,0 +1,23 @@ +import * as React from "react"; +import type { AppProps } from "next/app"; +import { ThemeProvider } from "next-themes"; +import { Layout } from "@/components/layout/Layout"; +import "@/styles/globals.css"; + +function App({ Component, pageProps }: AppProps) { + const [mounted, setMounted] = React.useState(false); + React.useEffect(() => setMounted(true), []); + return ( + + {mounted && ( + + <> + + + + )} + + ); +} + +export default App; diff --git a/interface/src/pages/abi.tsx b/interface/src/pages/abi.tsx new file mode 100644 index 00000000..a907b568 --- /dev/null +++ b/interface/src/pages/abi.tsx @@ -0,0 +1,243 @@ +import { useEffect, useState } from "react"; +import Image from "next/image"; +import { Tab } from "@headlessui/react"; +import { + ArrowDownTrayIcon, + ClipboardDocumentIcon, +} from "@heroicons/react/24/solid"; +import { useTheme } from "next-themes"; +import Prism from "prismjs"; +import "prismjs/components/prism-json"; +import "prismjs/components/prism-solidity"; +import "prismjs/components/prism-typescript"; +import { Head } from "@/components/layout/Head"; +import { Notification } from "@/components/ui/Notification"; +import { + CREATEX_ABI, + CREATEX_ABI_ETHERS, + CREATEX_ABI_VIEM, + CREATEX_SOLIDITY_INTERFACE, +} from "@/lib/constants"; +import { classNames } from "@/lib/utils"; +import { copyToClipboard } from "@/lib/utils"; + +const tabs = [ + { + name: "Solidity", + href: "#solidity", + imgUri: "/solidity.png", + imgSize: "sm", + language: "solidity", + abi: CREATEX_SOLIDITY_INTERFACE, + filename: "ICreateX.sol", + mimeType: "text/plain", + }, + { + name: "ethers.js", + href: "#ethers-js", + imgUri: "/ethersjs.png", + language: "json", + abi: CREATEX_ABI_ETHERS, + filename: "ICreateX.json", + mimeType: "text/plain", + }, + { + name: "viem", + href: "#viem", + imgUri: "/viem.png", + language: "typescript", + abi: CREATEX_ABI_VIEM, + filename: "ICreateX.ts", + mimeType: "text/plain", + }, + { + name: "JSON", + href: "#json", + imgUri: "/json.svg", + imgSize: "sm", + language: "json", + abi: JSON.stringify(CREATEX_ABI, null, 2), + filename: "ICreateX.json", + mimeType: "application/json", + }, +]; + +const hashToIndex = () => { + const anchor = window.location.hash || "#solidity"; + const index = tabs.findIndex((tab) => tab.href === anchor); + return index === -1 ? 0 : index; +}; + +const indexToHash = (index: number) => { + return tabs[index].href || "#solidity"; +}; + +const Abi = () => { + // -------- Syntax Highlighting -------- + const { resolvedTheme: theme } = useTheme(); + const [selectedTab, setSelectedTab] = useState(hashToIndex()); + const [showNotification, setShowNotification] = useState(false); + const [isLoading, setIsLoading] = useState(true); + + const onTabChange = (index: number) => { + // We set `isLoading` to true to fade out the content while the tab is changing, to avoid + // briefly showing un-highlighted code. This is set to false again in the `useEffect` hook. + setIsLoading(true); + setSelectedTab(index); + window.location.hash = indexToHash(index); + }; + + // This is required to re-highlight the code when the tab changes, and we use `setTimeout` with + // a delay of 0 to ensure that the code is highlighted after the tab has changed. Otherwise the + // `highlightAll` function runs before the code has been updated, so the code is not highlighted. + useEffect(() => { + setTimeout(() => { + Prism.highlightAll(); + setIsLoading(false); + }, 0); + }, [selectedTab]); + + // We conditionally import the Prism theme based on the current theme, to adjust the syntax + // highlighting to the theme. The logic in the `importTheme` function combined with the presence + // of the `prism-light.css` and `prism-dark.css` files in the `public` folder is what allows us + // to ensure all styles from the light theme are removed when the user toggles to the dark theme, + // and vice versa. + useEffect(() => { + const importTheme = async () => { + // Define the new stylesheet href based on the theme and get it's element. + const newStylesheetHref = + theme === "dark" ? "/prism-dark.css" : "/prism-light.css"; + const existingStylesheet = document.getElementById("dynamic-stylesheet"); + + // If there's an existing stylesheet, remove it. + existingStylesheet?.parentNode?.removeChild(existingStylesheet); + + // Create a new element for the new stylesheet, and append the stylesheet to the head. + const newStylesheet = document.createElement("link"); + newStylesheet.rel = "stylesheet"; + newStylesheet.type = "text/css"; + newStylesheet.href = newStylesheetHref; + newStylesheet.id = "dynamic-stylesheet"; + document.head.appendChild(newStylesheet); + }; + importTheme(); + }, [theme]); + + // -------- Download and Copy ABI -------- + const onDownload = (content: string, filename: string, mimeType: string) => { + const blob = new Blob([content], { type: mimeType }); + const url = URL.createObjectURL(blob); + const link = document.createElement("a"); + + link.href = url; + link.download = filename; + link.style.display = "none"; + + document.body.appendChild(link); + link.click(); + + setTimeout(() => { + document.body.removeChild(link); + URL.revokeObjectURL(url); + }, 100); + }; + + const onCopy = (text: string) => { + copyToClipboard(text); + setShowNotification(true); + setTimeout(() => setShowNotification(false), 3000); + }; + + // -------- Render -------- + return ( + <> + + + + + + + {tabs.map((tab) => { + return ( + + {({ selected }) => ( +
+ JSON logo + {tab.name} +
+ )} +
+ ); + })} +
+ + {tabs.map((tab) => { + return ( + + + +
+                  {tab.abi}
+                
+
+ ); + })} +
+
+ + ); +}; + +export default Abi; diff --git a/interface/src/pages/deployments.tsx b/interface/src/pages/deployments.tsx new file mode 100644 index 00000000..6efaecf2 --- /dev/null +++ b/interface/src/pages/deployments.tsx @@ -0,0 +1,268 @@ +import { useEffect, useRef, useState } from "react"; +import { + ArrowTopRightOnSquareIcon, + ChevronDownIcon, +} from "@heroicons/react/20/solid"; +import { ExternalLink } from "@/components/layout/ExternalLink"; +import { Head } from "@/components/layout/Head"; +import { LoadingSpinner } from "@/components/ui/LoadingSpinner"; + +interface Deployment { + name: string; + chainId: number; + url: string; + address?: `0x${string}`; +} + +const Deployments = () => { + // -------- Fetch deployments -------- + const [deployments, setDeployments] = useState([] as Deployment[]); + const [isLoading, setIsLoading] = useState(true); + const deploymentsUrl = + "https://github.com/pcaversaccio/createx/blob/main/deployments/deployments.json"; + const deploymentsUrlRaw = + "https://raw.githubusercontent.com/pcaversaccio/createx/main/deployments/deployments.json"; + + useEffect(() => { + setIsLoading(true); + fetch(deploymentsUrlRaw) + .then((response) => response.json()) + .then((data) => setDeployments(data)) + .catch((error) => console.error("Error:", error)) + .finally(() => setIsLoading(false)); + }, []); + + // -------- Focus search input when user presses Cmd/Ctrl + K -------- + const searchInputRef = useRef(null); + const modifierKey = navigator.userAgent.includes("Mac") ? "⌘ " : "Ctrl + "; + + useEffect(() => { + const handleKeyDown = (e: KeyboardEvent) => { + if ((e.metaKey || e.ctrlKey) && e.key === "k") { + e.preventDefault(); + searchInputRef.current?.focus(); + } + }; + + window.addEventListener("keydown", handleKeyDown); + return () => window.removeEventListener("keydown", handleKeyDown); + }, []); + + // -------- Sorting and filtering -------- + const [sortField, setSortField] = useState(null as "name" | "chainId" | null); + const [sortDirection, setSortDirection] = useState("ascending"); + const [search, setSearch] = useState(""); + + const onHeaderClick = (field: "name" | "chainId") => { + if (sortField === field) { + setSortDirection( + sortDirection === "ascending" ? "descending" : "ascending", + ); + } else { + setSortField(field); + setSortDirection("ascending"); + } + }; + + const sortedDeployments = deployments.sort((a, b) => { + // Don't change default sort order if sort field is null. + if (sortField === null) return 0; + + const aValue = a[sortField]; + const bValue = b[sortField]; + if (sortDirection === "ascending") { + return aValue > bValue ? 1 : aValue < bValue ? -1 : 0; + } else { + return aValue < bValue ? 1 : aValue > bValue ? -1 : 0; + } + }); + + const filteredDeployments = sortedDeployments.filter( + (deployment) => + deployment.name.toLowerCase().includes(search.toLowerCase()) || + deployment.chainId.toString().includes(search), + ); + + const loadingDiv = () => ( +
+ +

Fetching deployments...

+
+ ); + + const errorDiv = () => ( +
+
+

+ 🥴Oops! +

+

+ Something went wrong fetching the list of deployments. +

+
+ + + <> + View as JSON{" "} + +
+
+
+ ); + + const noDeploymentsDiv = () => ( +
+
+

+ No deployments found. +

+

+ If you need CreateX deployed on a new chain, +
+ please{" "} + {" "} + on GitHub. +

+
+
+ ); + + const showDeploymentsDiv = () => ( +
+ + + + + + + + + + {filteredDeployments.map((deployment) => ( + + window.open(deployment.url, "_blank", "noopener,noreferrer") + } + > + + + + + ))} + +
+
onHeaderClick("name")} + > + Name + + +
+
+
onHeaderClick("chainId")} + > + Chain ID + + +
+
+ Edit +
+ {deployment.name} + {deployment.address && ( +

+ {`${deployment.address?.slice( + 0, + 6, + )}...${deployment.address?.slice(-4)}`} +

+ )} +
+ {deployment.chainId} + +
+
+
+
+

+ Showing {filteredDeployments.length} of {deployments.length}{" "} + deployments. +

+
+
+ ); + + const deploymentsTableDiv = () => ( + <> +
+ + {modifierKey}K + + setSearch(e.target.value)} + ref={searchInputRef} + /> +
+ {filteredDeployments.length === 0 && noDeploymentsDiv()} + {filteredDeployments.length > 0 && showDeploymentsDiv()} + + ); + + // -------- Render -------- + return ( + <> + +
+
+
+ {isLoading && loadingDiv()} + {!isLoading && deployments.length === 0 && errorDiv()} + {!isLoading && deployments.length > 0 && deploymentsTableDiv()} +
+
+
+ + ); +}; + +export default Deployments; diff --git a/interface/src/pages/index.tsx b/interface/src/pages/index.tsx new file mode 100644 index 00000000..4646c532 --- /dev/null +++ b/interface/src/pages/index.tsx @@ -0,0 +1,68 @@ +import Link from "next/link"; +import { Head } from "@/components/layout/Head"; +import { SITE_DESCRIPTION } from "@/lib/constants"; + +const Home = () => { + // eslint-disable-next-line no-console + console.log(` +:'######::'########::'########::::'###::::'########:'########:'##::::'##: +'##... ##: ##.... ##: ##.....::::'## ##:::... ##..:: ##.....::. ##::'##:: + ##:::..:: ##:::: ##: ##::::::::'##:. ##::::: ##:::: ##::::::::. ##'##::: + ##::::::: ########:: ######:::'##:::. ##:::: ##:::: ######:::::. ###:::: + ##::::::: ##.. ##::: ##...:::: #########:::: ##:::: ##...:::::: ## ##::: + ##::: ##: ##::. ##:: ##::::::: ##.... ##:::: ##:::: ##:::::::: ##:. ##:: +. ######:: ##:::. ##: ########: ##:::: ##:::: ##:::: ########: ##:::. ##: +:......:::..:::::..::........::..:::::..:::::..:::::........::..:::::..:: +`); + const cards = [ + { + id: 1, + href: "/deployments", + title: "Deployments", + subtitle: "Deployed on 60+ chains", + }, + { id: 2, href: "/abi", title: "ABI", subtitle: "In any format" }, + { + id: 3, + href: "https://github.com/pcaversaccio/createx", + title: "Docs", + subtitle: "Learn more", + }, + ]; + + return ( + <> + +
+

+ {SITE_DESCRIPTION} +

+
+ {cards.map((card) => ( + +
+ {card.title} +
+
+ {card.subtitle} +
+ + ))} +
+
+ + ); +}; + +export default Home; diff --git a/interface/src/styles/globals.css b/interface/src/styles/globals.css new file mode 100644 index 00000000..5eb4d10d --- /dev/null +++ b/interface/src/styles/globals.css @@ -0,0 +1,33 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +@layer base { + .hyperlink { + @apply text-blue-700 no-underline hover:text-blue-900 dark:text-blue-300 dark:hover:text-blue-400; + } + + .text-primary { + @apply text-gray-900 dark:text-gray-50; + } + + .text-secondary { + @apply text-gray-500 dark:text-gray-400; + } + + .text-hover { + @apply hover:text-gray-500 dark:hover:text-gray-300; + } + + .text-accent { + @apply text-blue-800 dark:text-blue-300; + } + + .bg-primary { + @apply bg-gray-100 dark:bg-gray-900; + } + + .bg-secondary { + @apply bg-gray-50 dark:bg-gray-800; + } +} diff --git a/interface/tailwind.config.ts b/interface/tailwind.config.ts new file mode 100644 index 00000000..75ca56c5 --- /dev/null +++ b/interface/tailwind.config.ts @@ -0,0 +1,16 @@ +import type { Config } from "tailwindcss"; + +export default { + content: ["./src/**/*.{js,ts,jsx,tsx,mdx}"], + darkMode: "class", + theme: { + extend: { + backgroundImage: { + "gradient-radial": "radial-gradient(var(--tw-gradient-stops))", + "gradient-conic": + "conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))", + }, + }, + }, + plugins: [], +} satisfies Config; diff --git a/interface/tsconfig.json b/interface/tsconfig.json new file mode 100644 index 00000000..f04cae83 --- /dev/null +++ b/interface/tsconfig.json @@ -0,0 +1,30 @@ +{ + "compilerOptions": { + "target": "es2021", + "module": "esnext", + "strict": true, + "esModuleInterop": true, + "outDir": "dist", + "declaration": true, + "forceConsistentCasingInFileNames": true, + "skipLibCheck": true, + "resolveJsonModule": true, + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "noEmit": true, + "moduleResolution": "node", + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "plugins": [ + { + "name": "next" + } + ], + "paths": { + "@/*": ["./src/*"] + } + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], + "exclude": ["node_modules"] +} diff --git a/lib/forge-std b/lib/forge-std index 80a8f6ea..155d547c 160000 --- a/lib/forge-std +++ b/lib/forge-std @@ -1 +1 @@ -Subproject commit 80a8f6ea9362849b2a8f2dc28df40c77a64f9c16 +Subproject commit 155d547c449afa8715f538d69454b83944117811 diff --git a/lib/openzeppelin-contracts b/lib/openzeppelin-contracts index 88512b23..d155600d 160000 --- a/lib/openzeppelin-contracts +++ b/lib/openzeppelin-contracts @@ -1 +1 @@ -Subproject commit 88512b23d2bf5714b5d1bd59feee1d912439689d +Subproject commit d155600d554d28b583a8ab36dee0849215d48a20 diff --git a/lib/solady b/lib/solady index c8051ecd..13854c47 160000 --- a/lib/solady +++ b/lib/solady @@ -1 +1 @@ -Subproject commit c8051ecd7ca7687c26a3c90aedf33bd8a4ac594e +Subproject commit 13854c47df10c93dd2b13a690432bc6d09ae44ee diff --git a/package.json b/package.json index 823d0672..b5dabfda 100644 --- a/package.json +++ b/package.json @@ -103,11 +103,18 @@ "deploy:shardeumtestnet": "npx hardhat run --no-compile --network shardeumTestnet scripts/deploy.ts", "deploy:artheratestnet": "npx hardhat run --no-compile --network artheraTestnet scripts/deploy.ts", "prettier:check": "npx prettier -c **/*.{js,ts,md,sol,json,yml,yaml}", + "prettier:check:interface": "cd interface && pnpm prettier:check", "prettier:fix": "npx prettier -w **/*.{js,ts,md,sol,json,yml,yaml}", + "prettier:fix:interface": "cd interface && pnpm prettier:fix", "solhint:check": "npx solhint -c src/.solhint.json src/**/*.sol && npx solhint -c test/.solhint-tests.json test/**/*.sol", "solhint:fix": "npx solhint -c src/.solhint.json src/**/*.sol --fix && npx solhint -c test/.solhint-tests.json test/**/*.sol --fix", "lint:check": "pnpm prettier:check && pnpm solhint:check && npx eslint **/*.{js,ts}", - "lint:fix": "pnpm prettier:fix && pnpm solhint:fix && npx eslint **/*.{js,ts} --fix" + "lint:check:interface": "cd interface && pnpm lint:check", + "lint:fix": "pnpm prettier:fix && pnpm solhint:fix && npx eslint **/*.{js,ts} --fix", + "lint:fix:interface": "cd interface && pnpm lint:fix", + "dev:interface": "cd interface && pnpm dev", + "build:interface": "cd interface && pnpm build", + "start:interface": "cd interface && pnpm start" }, "devDependencies": { "@nomicfoundation/hardhat-ethers": "^3.0.5", @@ -116,7 +123,7 @@ "@typechain/hardhat": "^9.1.0", "@typescript-eslint/eslint-plugin": "^6.14.0", "@typescript-eslint/parser": "^6.14.0", - "eslint": "^8.55.0", + "eslint": "^8.56.0", "eslint-config-prettier": "^9.1.0", "ethers": "^6.9.0", "hardhat": "^2.19.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 08b6bd74..a2b9feb9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,64 +4,130 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false -devDependencies: - "@nomicfoundation/hardhat-ethers": - specifier: ^3.0.5 - version: 3.0.5(ethers@6.9.0)(hardhat@2.19.2) - "@nomicfoundation/hardhat-verify": - specifier: ^2.0.2 - version: 2.0.2(hardhat@2.19.2) - "@typechain/ethers-v6": - specifier: ^0.5.1 - version: 0.5.1(ethers@6.9.0)(typechain@8.3.2)(typescript@5.3.3) - "@typechain/hardhat": - specifier: ^9.1.0 - version: 9.1.0(@typechain/ethers-v6@0.5.1)(ethers@6.9.0)(hardhat@2.19.2)(typechain@8.3.2) - "@typescript-eslint/eslint-plugin": - specifier: ^6.14.0 - version: 6.14.0(@typescript-eslint/parser@6.14.0)(eslint@8.55.0)(typescript@5.3.3) - "@typescript-eslint/parser": - specifier: ^6.14.0 - version: 6.14.0(eslint@8.55.0)(typescript@5.3.3) - eslint: - specifier: ^8.55.0 - version: 8.55.0 - eslint-config-prettier: - specifier: ^9.1.0 - version: 9.1.0(eslint@8.55.0) - ethers: - specifier: ^6.9.0 - version: 6.9.0 - hardhat: - specifier: ^2.19.2 - version: 2.19.2(ts-node@10.9.2)(typescript@5.3.3) - hardhat-abi-exporter: - specifier: ^2.10.1 - version: 2.10.1(hardhat@2.19.2) - hardhat-contract-sizer: - specifier: ^2.10.0 - version: 2.10.0(hardhat@2.19.2) - hardhat-gas-reporter: - specifier: ^1.0.9 - version: 1.0.9(hardhat@2.19.2) - prettier: - specifier: ^3.1.1 - version: 3.1.1 - prettier-plugin-solidity: - specifier: ^1.2.0 - version: 1.2.0(prettier@3.1.1) - solhint: - specifier: ^4.0.0 - version: 4.0.0(typescript@5.3.3) - ts-node: - specifier: ^10.9.2 - version: 10.9.2(@types/node@20.10.4)(typescript@5.3.3) - typechain: - specifier: ^8.3.2 - version: 8.3.2(typescript@5.3.3) - typescript: - specifier: ^5.3.3 - version: 5.3.3 +importers: + .: + devDependencies: + "@nomicfoundation/hardhat-ethers": + specifier: ^3.0.5 + version: 3.0.5(ethers@6.9.0)(hardhat@2.19.2) + "@nomicfoundation/hardhat-verify": + specifier: ^2.0.2 + version: 2.0.2(hardhat@2.19.2) + "@typechain/ethers-v6": + specifier: ^0.5.1 + version: 0.5.1(ethers@6.9.0)(typechain@8.3.2)(typescript@5.3.3) + "@typechain/hardhat": + specifier: ^9.1.0 + version: 9.1.0(@typechain/ethers-v6@0.5.1)(ethers@6.9.0)(hardhat@2.19.2)(typechain@8.3.2) + "@typescript-eslint/eslint-plugin": + specifier: ^6.14.0 + version: 6.14.0(@typescript-eslint/parser@6.14.0)(eslint@8.56.0)(typescript@5.3.3) + "@typescript-eslint/parser": + specifier: ^6.14.0 + version: 6.14.0(eslint@8.56.0)(typescript@5.3.3) + eslint: + specifier: ^8.56.0 + version: 8.56.0 + eslint-config-prettier: + specifier: ^9.1.0 + version: 9.1.0(eslint@8.56.0) + ethers: + specifier: ^6.9.0 + version: 6.9.0 + hardhat: + specifier: ^2.19.2 + version: 2.19.2(ts-node@10.9.2)(typescript@5.3.3) + hardhat-abi-exporter: + specifier: ^2.10.1 + version: 2.10.1(hardhat@2.19.2) + hardhat-contract-sizer: + specifier: ^2.10.0 + version: 2.10.0(hardhat@2.19.2) + hardhat-gas-reporter: + specifier: ^1.0.9 + version: 1.0.9(hardhat@2.19.2) + prettier: + specifier: ^3.1.1 + version: 3.1.1 + prettier-plugin-solidity: + specifier: ^1.2.0 + version: 1.2.0(prettier@3.1.1) + solhint: + specifier: ^4.0.0 + version: 4.0.0(typescript@5.3.3) + ts-node: + specifier: ^10.9.2 + version: 10.9.2(@types/node@20.10.4)(typescript@5.3.3) + typechain: + specifier: ^8.3.2 + version: 8.3.2(typescript@5.3.3) + typescript: + specifier: ^5.3.3 + version: 5.3.3 + + interface: + dependencies: + "@headlessui/react": + specifier: ^1.7.17 + version: 1.7.17(react-dom@18.2.0)(react@18.2.0) + "@heroicons/react": + specifier: ^2.0.18 + version: 2.0.18(react@18.2.0) + next: + specifier: 14.0.4 + version: 14.0.4(react-dom@18.2.0)(react@18.2.0) + next-themes: + specifier: ^0.2.1 + version: 0.2.1(next@14.0.4)(react-dom@18.2.0)(react@18.2.0) + prismjs: + specifier: ^1.29.0 + version: 1.29.0 + react: + specifier: 18.2.0 + version: 18.2.0 + react-dom: + specifier: 18.2.0 + version: 18.2.0(react@18.2.0) + sharp: + specifier: ^0.33.0 + version: 0.33.0 + devDependencies: + "@trivago/prettier-plugin-sort-imports": + specifier: ^4.3.0 + version: 4.3.0(prettier@3.1.1) + "@types/node": + specifier: 20.10.4 + version: 20.10.4 + "@types/react": + specifier: 18.2.45 + version: 18.2.45 + "@types/react-dom": + specifier: 18.2.18 + version: 18.2.18 + autoprefixer: + specifier: 10.4.16 + version: 10.4.16(postcss@8.4.32) + eslint: + specifier: 8.56.0 + version: 8.56.0 + eslint-config-next: + specifier: 14.0.4 + version: 14.0.4(eslint@8.56.0)(typescript@5.3.3) + postcss: + specifier: 8.4.32 + version: 8.4.32 + prettier: + specifier: ^3.1.1 + version: 3.1.1 + prettier-plugin-tailwindcss: + specifier: ^0.5.9 + version: 0.5.9(@trivago/prettier-plugin-sort-imports@4.3.0)(prettier@3.1.1) + tailwindcss: + specifier: 3.3.6 + version: 3.3.6(ts-node@10.9.2) + typescript: + specifier: 5.3.3 + version: 5.3.3 packages: /@aashutoshrathi/word-wrap@1.2.6: @@ -79,6 +145,14 @@ packages: } dev: true + /@alloc/quick-lru@5.2.0: + resolution: + { + integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==, + } + engines: { node: ">=10" } + dev: true + /@babel/code-frame@7.23.5: resolution: { @@ -90,6 +164,78 @@ packages: chalk: 2.4.2 dev: true + /@babel/generator@7.17.7: + resolution: + { + integrity: sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==, + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/types": 7.17.0 + jsesc: 2.5.2 + source-map: 0.5.7 + dev: true + + /@babel/generator@7.23.6: + resolution: + { + integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==, + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/types": 7.23.6 + "@jridgewell/gen-mapping": 0.3.3 + "@jridgewell/trace-mapping": 0.3.20 + jsesc: 2.5.2 + dev: true + + /@babel/helper-environment-visitor@7.22.20: + resolution: + { + integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==, + } + engines: { node: ">=6.9.0" } + dev: true + + /@babel/helper-function-name@7.23.0: + resolution: + { + integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==, + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/template": 7.22.15 + "@babel/types": 7.23.6 + dev: true + + /@babel/helper-hoist-variables@7.22.5: + resolution: + { + integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==, + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/types": 7.23.6 + dev: true + + /@babel/helper-split-export-declaration@7.22.6: + resolution: + { + integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==, + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/types": 7.23.6 + dev: true + + /@babel/helper-string-parser@7.23.4: + resolution: + { + integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==, + } + engines: { node: ">=6.9.0" } + dev: true + /@babel/helper-validator-identifier@7.22.20: resolution: { @@ -110,6 +256,83 @@ packages: js-tokens: 4.0.0 dev: true + /@babel/parser@7.23.6: + resolution: + { + integrity: sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==, + } + engines: { node: ">=6.0.0" } + hasBin: true + dependencies: + "@babel/types": 7.17.0 + dev: true + + /@babel/runtime@7.23.6: + resolution: + { + integrity: sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ==, + } + engines: { node: ">=6.9.0" } + dependencies: + regenerator-runtime: 0.14.1 + dev: true + + /@babel/template@7.22.15: + resolution: + { + integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==, + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/code-frame": 7.23.5 + "@babel/parser": 7.23.6 + "@babel/types": 7.23.6 + dev: true + + /@babel/traverse@7.23.2: + resolution: + { + integrity: sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==, + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/code-frame": 7.23.5 + "@babel/generator": 7.23.6 + "@babel/helper-environment-visitor": 7.22.20 + "@babel/helper-function-name": 7.23.0 + "@babel/helper-hoist-variables": 7.22.5 + "@babel/helper-split-export-declaration": 7.22.6 + "@babel/parser": 7.23.6 + "@babel/types": 7.23.6 + debug: 4.3.4(supports-color@8.1.1) + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/types@7.17.0: + resolution: + { + integrity: sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==, + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/helper-validator-identifier": 7.22.20 + to-fast-properties: 2.0.0 + dev: true + + /@babel/types@7.23.6: + resolution: + { + integrity: sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==, + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/helper-string-parser": 7.23.4 + "@babel/helper-validator-identifier": 7.22.20 + to-fast-properties: 2.0.0 + dev: true + /@chainsafe/as-sha256@0.3.1: resolution: { @@ -176,7 +399,18 @@ packages: "@jridgewell/trace-mapping": 0.3.9 dev: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.55.0): + /@emnapi/runtime@0.44.0: + resolution: + { + integrity: sha512-ZX/etZEZw8DR7zAB1eVQT40lNo0jeqpb6dCgOvctB6FIQ5PoXfMuNY8+ayQfu8tNQbAB8gQWSSJupR8NxeiZXw==, + } + requiresBuild: true + dependencies: + tslib: 2.6.2 + dev: false + optional: true + + /@eslint-community/eslint-utils@4.4.0(eslint@8.56.0): resolution: { integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==, @@ -185,7 +419,7 @@ packages: peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.55.0 + eslint: 8.56.0 eslint-visitor-keys: 3.4.3 dev: true @@ -217,10 +451,10 @@ packages: - supports-color dev: true - /@eslint/js@8.55.0: + /@eslint/js@8.56.0: resolution: { - integrity: sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA==, + integrity: sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==, } engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } dev: true @@ -638,6 +872,32 @@ packages: engines: { node: ">=14" } dev: true + /@headlessui/react@1.7.17(react-dom@18.2.0)(react@18.2.0): + resolution: + { + integrity: sha512-4am+tzvkqDSSgiwrsEpGWqgGo9dz8qU5M3znCkC4PgkpY4HcCZzEDEvozltGGGHIKl9jbXbZPSH5TWn4sWJdow==, + } + engines: { node: ">=10" } + peerDependencies: + react: ^16 || ^17 || ^18 + react-dom: ^16 || ^17 || ^18 + dependencies: + client-only: 0.0.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@heroicons/react@2.0.18(react@18.2.0): + resolution: + { + integrity: sha512-7TyMjRrZZMBPa+/5Y8lN0iyvUU/01PeMGX2+RE7cQWpEUIcb4QotzUObFkJDejj/HUH4qjP/eQ0gzzKs2f+6Yw==, + } + peerDependencies: + react: ">= 16" + dependencies: + react: 18.2.0 + dev: false + /@humanwhocodes/config-array@0.11.13: resolution: { @@ -667,129 +927,609 @@ packages: } dev: true - /@jridgewell/resolve-uri@3.1.1: + /@img/sharp-darwin-arm64@0.33.0: resolution: { - integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==, + integrity: sha512-070tEheekI1LJWTGPC9WlQEa5UoKTXzzlORBHMX4TbfUxMiL336YHR8vBEUNsjse0RJCX8dZ4ZXwT595aEF1ug==, } - engines: { node: ">=6.0.0" } - dev: true + engines: + { + glibc: ">=2.26", + node: ^18.17.0 || ^20.3.0 || >=21.0.0, + npm: ">=9.6.5", + pnpm: ">=7.1.0", + yarn: ">=3.2.0", + } + cpu: [arm64] + os: [darwin] + requiresBuild: true + optionalDependencies: + "@img/sharp-libvips-darwin-arm64": 1.0.0 + dev: false + optional: true - /@jridgewell/sourcemap-codec@1.4.15: + /@img/sharp-darwin-x64@0.33.0: resolution: { - integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==, + integrity: sha512-pu/nvn152F3qbPeUkr+4e9zVvEhD3jhwzF473veQfMPkOYo9aoWXSfdZH/E6F+nYC3qvFjbxbvdDbUtEbghLqw==, } - dev: true + engines: + { + glibc: ">=2.26", + node: ^18.17.0 || ^20.3.0 || >=21.0.0, + npm: ">=9.6.5", + pnpm: ">=7.1.0", + yarn: ">=3.2.0", + } + cpu: [x64] + os: [darwin] + requiresBuild: true + optionalDependencies: + "@img/sharp-libvips-darwin-x64": 1.0.0 + dev: false + optional: true - /@jridgewell/trace-mapping@0.3.9: + /@img/sharp-libvips-darwin-arm64@1.0.0: resolution: { - integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==, + integrity: sha512-VzYd6OwnUR81sInf3alj1wiokY50DjsHz5bvfnsFpxs5tqQxESoHtJO6xyksDs3RIkyhMWq2FufXo6GNSU9BMw==, } - dependencies: - "@jridgewell/resolve-uri": 3.1.1 - "@jridgewell/sourcemap-codec": 1.4.15 - dev: true + engines: { macos: ">=11", npm: ">=9.6.5", pnpm: ">=7.1.0", yarn: ">=3.2.0" } + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true - /@metamask/eth-sig-util@4.0.1: + /@img/sharp-libvips-darwin-x64@1.0.0: resolution: { - integrity: sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==, + integrity: sha512-dD9OznTlHD6aovRswaPNEy8dKtSAmNo4++tO7uuR4o5VxbVAOoEQ1uSmN4iFAdQneTHws1lkTZeiXPrcCkh6IA==, } - engines: { node: ">=12.0.0" } - dependencies: - ethereumjs-abi: 0.6.8 - ethereumjs-util: 6.2.1 - ethjs-util: 0.1.6 - tweetnacl: 1.0.3 - tweetnacl-util: 0.15.1 - dev: true + engines: + { macos: ">=10.13", npm: ">=9.6.5", pnpm: ">=7.1.0", yarn: ">=3.2.0" } + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true - /@noble/curves@1.2.0: + /@img/sharp-libvips-linux-arm64@1.0.0: resolution: { - integrity: sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==, + integrity: sha512-xTYThiqEZEZc0PRU90yVtM3KE7lw1bKdnDQ9kCTHWbqWyHOe4NpPOtMGy27YnN51q0J5dqRrvicfPbALIOeAZA==, } - dependencies: - "@noble/hashes": 1.3.2 - dev: true + engines: + { glibc: ">=2.26", npm: ">=9.6.5", pnpm: ">=7.1.0", yarn: ">=3.2.0" } + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true - /@noble/hashes@1.2.0: + /@img/sharp-libvips-linux-arm@1.0.0: resolution: { - integrity: sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==, + integrity: sha512-VwgD2eEikDJUk09Mn9Dzi1OW2OJFRQK+XlBTkUNmAWPrtj8Ly0yq05DFgu1VCMx2/DqCGQVi5A1dM9hTmxf3uw==, } - dev: true + engines: + { glibc: ">=2.28", npm: ">=9.6.5", pnpm: ">=7.1.0", yarn: ">=3.2.0" } + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false + optional: true - /@noble/hashes@1.3.2: + /@img/sharp-libvips-linux-s390x@1.0.0: resolution: { - integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==, + integrity: sha512-o9E46WWBC6JsBlwU4QyU9578G77HBDT1NInd+aERfxeOPbk0qBZHgoDsQmA2v9TbqJRWzoBPx1aLOhprBMgPjw==, } - engines: { node: ">= 16" } - dev: true + engines: + { glibc: ">=2.28", npm: ">=9.6.5", pnpm: ">=7.1.0", yarn: ">=3.2.0" } + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: false + optional: true - /@noble/secp256k1@1.7.1: + /@img/sharp-libvips-linux-x64@1.0.0: resolution: { - integrity: sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==, + integrity: sha512-naldaJy4hSVhWBgEjfdBY85CAa4UO+W1nx6a1sWStHZ7EUfNiuBTTN2KUYT5dH1+p/xij1t2QSXfCiFJoC5S/Q==, } - dev: true + engines: + { glibc: ">=2.26", npm: ">=9.6.5", pnpm: ">=7.1.0", yarn: ">=3.2.0" } + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true - /@nodelib/fs.scandir@2.1.5: + /@img/sharp-libvips-linuxmusl-arm64@1.0.0: resolution: { - integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==, + integrity: sha512-OdorplCyvmSAPsoJLldtLh3nLxRrkAAAOHsGWGDYfN0kh730gifK+UZb3dWORRa6EusNqCTjfXV4GxvgJ/nPDQ==, } - engines: { node: ">= 8" } - dependencies: - "@nodelib/fs.stat": 2.0.5 - run-parallel: 1.2.0 - dev: true + engines: + { musl: ">=1.2.2", npm: ">=9.6.5", pnpm: ">=7.1.0", yarn: ">=3.2.0" } + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true - /@nodelib/fs.stat@2.0.5: + /@img/sharp-libvips-linuxmusl-x64@1.0.0: resolution: { - integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==, + integrity: sha512-FW8iK6rJrg+X2jKD0Ajhjv6y74lToIBEvkZhl42nZt563FfxkCYacrXZtd+q/sRQDypQLzY5WdLkVTbJoPyqNg==, } - engines: { node: ">= 8" } - dev: true + engines: + { musl: ">=1.2.2", npm: ">=9.6.5", pnpm: ">=7.1.0", yarn: ">=3.2.0" } + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true - /@nodelib/fs.walk@1.2.8: + /@img/sharp-linux-arm64@0.33.0: resolution: { - integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==, + integrity: sha512-dcomVSrtgF70SyOr8RCOCQ8XGVThXwe71A1d8MGA+mXEVRJ/J6/TrCbBEJh9ddcEIIsrnrkolaEvYSHqVhswQw==, } - engines: { node: ">= 8" } - dependencies: - "@nodelib/fs.scandir": 2.1.5 - fastq: 1.15.0 - dev: true + engines: + { + glibc: ">=2.26", + node: ^18.17.0 || ^20.3.0 || >=21.0.0, + npm: ">=9.6.5", + pnpm: ">=7.1.0", + yarn: ">=3.2.0", + } + cpu: [arm64] + os: [linux] + requiresBuild: true + optionalDependencies: + "@img/sharp-libvips-linux-arm64": 1.0.0 + dev: false + optional: true - /@nomicfoundation/ethereumjs-block@5.0.2: + /@img/sharp-linux-arm@0.33.0: resolution: { - integrity: sha512-hSe6CuHI4SsSiWWjHDIzWhSiAVpzMUcDRpWYzN0T9l8/Rz7xNn3elwVOJ/tAyS0LqL6vitUD78Uk7lQDXZun7Q==, + integrity: sha512-4horD3wMFd5a0ddbDY8/dXU9CaOgHjEHALAddXgafoR5oWq5s8X61PDgsSeh4Qupsdo6ycfPPSSNBrfVQnwwrg==, } - engines: { node: ">=14" } - dependencies: - "@nomicfoundation/ethereumjs-common": 4.0.2 - "@nomicfoundation/ethereumjs-rlp": 5.0.2 - "@nomicfoundation/ethereumjs-trie": 6.0.2 - "@nomicfoundation/ethereumjs-tx": 5.0.2 - "@nomicfoundation/ethereumjs-util": 9.0.2 - ethereum-cryptography: 0.1.3 - ethers: 5.7.2 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - dev: true + engines: + { + glibc: ">=2.28", + node: ^18.17.0 || ^20.3.0 || >=21.0.0, + npm: ">=9.6.5", + pnpm: ">=7.1.0", + yarn: ">=3.2.0", + } + cpu: [arm] + os: [linux] + requiresBuild: true + optionalDependencies: + "@img/sharp-libvips-linux-arm": 1.0.0 + dev: false + optional: true - /@nomicfoundation/ethereumjs-blockchain@7.0.2: + /@img/sharp-linux-s390x@0.33.0: resolution: { - integrity: sha512-8UUsSXJs+MFfIIAKdh3cG16iNmWzWC/91P40sazNvrqhhdR/RtGDlFk2iFTGbBAZPs2+klZVzhRX8m2wvuvz3w==, + integrity: sha512-TiVJbx38J2rNVfA309ffSOB+3/7wOsZYQEOlKqOUdWD/nqkjNGrX+YQGz7nzcf5oy2lC+d37+w183iNXRZNngQ==, + } + engines: + { + glibc: ">=2.28", + node: ^18.17.0 || ^20.3.0 || >=21.0.0, + npm: ">=9.6.5", + pnpm: ">=7.1.0", + yarn: ">=3.2.0", + } + cpu: [s390x] + os: [linux] + requiresBuild: true + optionalDependencies: + "@img/sharp-libvips-linux-s390x": 1.0.0 + dev: false + optional: true + + /@img/sharp-linux-x64@0.33.0: + resolution: + { + integrity: sha512-PaZM4Zi7/Ek71WgTdvR+KzTZpBqrQOFcPe7/8ZoPRlTYYRe43k6TWsf4GVH6XKRLMYeSp8J89RfAhBrSP4itNA==, + } + engines: + { + glibc: ">=2.26", + node: ^18.17.0 || ^20.3.0 || >=21.0.0, + npm: ">=9.6.5", + pnpm: ">=7.1.0", + yarn: ">=3.2.0", + } + cpu: [x64] + os: [linux] + requiresBuild: true + optionalDependencies: + "@img/sharp-libvips-linux-x64": 1.0.0 + dev: false + optional: true + + /@img/sharp-linuxmusl-arm64@0.33.0: + resolution: + { + integrity: sha512-1QLbbN0zt+32eVrg7bb1lwtvEaZwlhEsY1OrijroMkwAqlHqFj6R33Y47s2XUv7P6Ie1PwCxK/uFnNqMnkd5kg==, + } + engines: + { + musl: ">=1.2.2", + node: ^18.17.0 || ^20.3.0 || >=21.0.0, + npm: ">=9.6.5", + pnpm: ">=7.1.0", + yarn: ">=3.2.0", + } + cpu: [arm64] + os: [linux] + requiresBuild: true + optionalDependencies: + "@img/sharp-libvips-linuxmusl-arm64": 1.0.0 + dev: false + optional: true + + /@img/sharp-linuxmusl-x64@0.33.0: + resolution: + { + integrity: sha512-CecqgB/CnkvCWFhmfN9ZhPGMLXaEBXl4o7WtA6U3Ztrlh/s7FUKX4vNxpMSYLIrWuuzjiaYdfU3+Tdqh1xaHfw==, + } + engines: + { + musl: ">=1.2.2", + node: ^18.17.0 || ^20.3.0 || >=21.0.0, + npm: ">=9.6.5", + pnpm: ">=7.1.0", + yarn: ">=3.2.0", + } + cpu: [x64] + os: [linux] + requiresBuild: true + optionalDependencies: + "@img/sharp-libvips-linuxmusl-x64": 1.0.0 + dev: false + optional: true + + /@img/sharp-wasm32@0.33.0: + resolution: + { + integrity: sha512-Hn4js32gUX9qkISlemZBUPuMs0k/xNJebUNl/L6djnU07B/HAA2KaxRVb3HvbU5fL242hLOcp0+tR+M8dvJUFw==, + } + engines: + { + node: ^18.17.0 || ^20.3.0 || >=21.0.0, + npm: ">=9.6.5", + pnpm: ">=7.1.0", + yarn: ">=3.2.0", + } + cpu: [wasm32] + requiresBuild: true + dependencies: + "@emnapi/runtime": 0.44.0 + dev: false + optional: true + + /@img/sharp-win32-ia32@0.33.0: + resolution: + { + integrity: sha512-5HfcsCZi3l5nPRF2q3bllMVMDXBqEWI3Q8KQONfzl0TferFE5lnsIG0A1YrntMAGqvkzdW6y1Ci1A2uTvxhfzg==, + } + engines: + { + node: ^18.17.0 || ^20.3.0 || >=21.0.0, + npm: ">=9.6.5", + pnpm: ">=7.1.0", + yarn: ">=3.2.0", + } + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@img/sharp-win32-x64@0.33.0: + resolution: + { + integrity: sha512-i3DtP/2ce1yKFj4OzOnOYltOEL/+dp4dc4dJXJBv6god1AFTcmkaA99H/7SwOmkCOBQkbVvA3lCGm3/5nDtf9Q==, + } + engines: + { + node: ^18.17.0 || ^20.3.0 || >=21.0.0, + npm: ">=9.6.5", + pnpm: ">=7.1.0", + yarn: ">=3.2.0", + } + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@jridgewell/gen-mapping@0.3.3: + resolution: + { + integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==, + } + engines: { node: ">=6.0.0" } + dependencies: + "@jridgewell/set-array": 1.1.2 + "@jridgewell/sourcemap-codec": 1.4.15 + "@jridgewell/trace-mapping": 0.3.20 + dev: true + + /@jridgewell/resolve-uri@3.1.1: + resolution: + { + integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==, + } + engines: { node: ">=6.0.0" } + dev: true + + /@jridgewell/set-array@1.1.2: + resolution: + { + integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==, + } + engines: { node: ">=6.0.0" } + dev: true + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: + { + integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==, + } + dev: true + + /@jridgewell/trace-mapping@0.3.20: + resolution: + { + integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==, + } + dependencies: + "@jridgewell/resolve-uri": 3.1.1 + "@jridgewell/sourcemap-codec": 1.4.15 + dev: true + + /@jridgewell/trace-mapping@0.3.9: + resolution: + { + integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==, + } + dependencies: + "@jridgewell/resolve-uri": 3.1.1 + "@jridgewell/sourcemap-codec": 1.4.15 + dev: true + + /@metamask/eth-sig-util@4.0.1: + resolution: + { + integrity: sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==, + } + engines: { node: ">=12.0.0" } + dependencies: + ethereumjs-abi: 0.6.8 + ethereumjs-util: 6.2.1 + ethjs-util: 0.1.6 + tweetnacl: 1.0.3 + tweetnacl-util: 0.15.1 + dev: true + + /@next/env@14.0.4: + resolution: + { + integrity: sha512-irQnbMLbUNQpP1wcE5NstJtbuA/69kRfzBrpAD7Gsn8zm/CY6YQYc3HQBz8QPxwISG26tIm5afvvVbu508oBeQ==, + } + dev: false + + /@next/eslint-plugin-next@14.0.4: + resolution: + { + integrity: sha512-U3qMNHmEZoVmHA0j/57nRfi3AscXNvkOnxDmle/69Jz/G0o/gWjXTDdlgILZdrxQ0Lw/jv2mPW8PGy0EGIHXhQ==, + } + dependencies: + glob: 7.1.7 + dev: true + + /@next/swc-darwin-arm64@14.0.4: + resolution: + { + integrity: sha512-mF05E/5uPthWzyYDyptcwHptucf/jj09i2SXBPwNzbgBNc+XnwzrL0U6BmPjQeOL+FiB+iG1gwBeq7mlDjSRPg==, + } + engines: { node: ">= 10" } + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@next/swc-darwin-x64@14.0.4: + resolution: + { + integrity: sha512-IZQ3C7Bx0k2rYtrZZxKKiusMTM9WWcK5ajyhOZkYYTCc8xytmwSzR1skU7qLgVT/EY9xtXDG0WhY6fyujnI3rw==, + } + engines: { node: ">= 10" } + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-arm64-gnu@14.0.4: + resolution: + { + integrity: sha512-VwwZKrBQo/MGb1VOrxJ6LrKvbpo7UbROuyMRvQKTFKhNaXjUmKTu7wxVkIuCARAfiI8JpaWAnKR+D6tzpCcM4w==, + } + engines: { node: ">= 10" } + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-arm64-musl@14.0.4: + resolution: + { + integrity: sha512-8QftwPEW37XxXoAwsn+nXlodKWHfpMaSvt81W43Wh8dv0gkheD+30ezWMcFGHLI71KiWmHK5PSQbTQGUiidvLQ==, + } + engines: { node: ">= 10" } + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-x64-gnu@14.0.4: + resolution: + { + integrity: sha512-/s/Pme3VKfZAfISlYVq2hzFS8AcAIOTnoKupc/j4WlvF6GQ0VouS2Q2KEgPuO1eMBwakWPB1aYFIA4VNVh667A==, + } + engines: { node: ">= 10" } + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-x64-musl@14.0.4: + resolution: + { + integrity: sha512-m8z/6Fyal4L9Bnlxde5g2Mfa1Z7dasMQyhEhskDATpqr+Y0mjOBZcXQ7G5U+vgL22cI4T7MfvgtrM2jdopqWaw==, + } + engines: { node: ">= 10" } + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-arm64-msvc@14.0.4: + resolution: + { + integrity: sha512-7Wv4PRiWIAWbm5XrGz3D8HUkCVDMMz9igffZG4NB1p4u1KoItwx9qjATHz88kwCEal/HXmbShucaslXCQXUM5w==, + } + engines: { node: ">= 10" } + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-ia32-msvc@14.0.4: + resolution: + { + integrity: sha512-zLeNEAPULsl0phfGb4kdzF/cAVIfaC7hY+kt0/d+y9mzcZHsMS3hAS829WbJ31DkSlVKQeHEjZHIdhN+Pg7Gyg==, + } + engines: { node: ">= 10" } + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-x64-msvc@14.0.4: + resolution: + { + integrity: sha512-yEh2+R8qDlDCjxVpzOTEpBLQTEFAcP2A8fUFLaWNap9GitYKkKv1//y2S6XY6zsR4rCOPRpU7plYDR+az2n30A==, + } + engines: { node: ">= 10" } + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@noble/curves@1.2.0: + resolution: + { + integrity: sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==, + } + dependencies: + "@noble/hashes": 1.3.2 + dev: true + + /@noble/hashes@1.2.0: + resolution: + { + integrity: sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==, + } + dev: true + + /@noble/hashes@1.3.2: + resolution: + { + integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==, + } + engines: { node: ">= 16" } + dev: true + + /@noble/secp256k1@1.7.1: + resolution: + { + integrity: sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==, + } + dev: true + + /@nodelib/fs.scandir@2.1.5: + resolution: + { + integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==, + } + engines: { node: ">= 8" } + dependencies: + "@nodelib/fs.stat": 2.0.5 + run-parallel: 1.2.0 + dev: true + + /@nodelib/fs.stat@2.0.5: + resolution: + { + integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==, + } + engines: { node: ">= 8" } + dev: true + + /@nodelib/fs.walk@1.2.8: + resolution: + { + integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==, + } + engines: { node: ">= 8" } + dependencies: + "@nodelib/fs.scandir": 2.1.5 + fastq: 1.15.0 + dev: true + + /@nomicfoundation/ethereumjs-block@5.0.2: + resolution: + { + integrity: sha512-hSe6CuHI4SsSiWWjHDIzWhSiAVpzMUcDRpWYzN0T9l8/Rz7xNn3elwVOJ/tAyS0LqL6vitUD78Uk7lQDXZun7Q==, + } + engines: { node: ">=14" } + dependencies: + "@nomicfoundation/ethereumjs-common": 4.0.2 + "@nomicfoundation/ethereumjs-rlp": 5.0.2 + "@nomicfoundation/ethereumjs-trie": 6.0.2 + "@nomicfoundation/ethereumjs-tx": 5.0.2 + "@nomicfoundation/ethereumjs-util": 9.0.2 + ethereum-cryptography: 0.1.3 + ethers: 5.7.2 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: true + + /@nomicfoundation/ethereumjs-blockchain@7.0.2: + resolution: + { + integrity: sha512-8UUsSXJs+MFfIIAKdh3cG16iNmWzWC/91P40sazNvrqhhdR/RtGDlFk2iFTGbBAZPs2+klZVzhRX8m2wvuvz3w==, } engines: { node: ">=14" } dependencies: @@ -1166,6 +1906,13 @@ packages: config-chain: 1.1.13 dev: true + /@rushstack/eslint-patch@1.6.1: + resolution: + { + integrity: sha512-UY+FGM/2jjMkzQLn8pxcHGMaVLh9aEitG3zY2CiY7XHdLiz3bZOwa6oDxNqEMv7zZkV+cj5DOdz0cQ1BP5Hjgw==, + } + dev: true + /@scure/base@1.1.5: resolution: { @@ -1311,6 +2058,15 @@ packages: antlr4ts: 0.5.0-alpha.4 dev: true + /@swc/helpers@0.5.2: + resolution: + { + integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==, + } + dependencies: + tslib: 2.6.2 + dev: false + /@szmarczak/http-timer@5.0.1: resolution: { @@ -1321,6 +2077,29 @@ packages: defer-to-connect: 2.0.1 dev: true + /@trivago/prettier-plugin-sort-imports@4.3.0(prettier@3.1.1): + resolution: + { + integrity: sha512-r3n0onD3BTOVUNPhR4lhVK4/pABGpbA7bW3eumZnYdKaHkf1qEC+Mag6DPbGNuuh0eG8AaYj+YqmVHSiGslaTQ==, + } + peerDependencies: + "@vue/compiler-sfc": 3.x + prettier: 2.x - 3.x + peerDependenciesMeta: + "@vue/compiler-sfc": + optional: true + dependencies: + "@babel/generator": 7.17.7 + "@babel/parser": 7.23.6 + "@babel/traverse": 7.23.2 + "@babel/types": 7.17.0 + javascript-natural-sort: 0.7.1 + lodash: 4.17.21 + prettier: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + /@tsconfig/node10@1.0.9: resolution: { @@ -1434,6 +2213,13 @@ packages: } dev: true + /@types/json5@0.0.29: + resolution: + { + integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==, + } + dev: true + /@types/lru-cache@5.1.1: resolution: { @@ -1487,6 +2273,13 @@ packages: } dev: true + /@types/prop-types@15.7.11: + resolution: + { + integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==, + } + dev: true + /@types/qs@6.9.10: resolution: { @@ -1494,6 +2287,26 @@ packages: } dev: true + /@types/react-dom@18.2.18: + resolution: + { + integrity: sha512-TJxDm6OfAX2KJWJdMEVTwWke5Sc/E/RlnPGvGfS0W7+6ocy2xhDVQVh/KvC2Uf7kACs+gDytdusDSdWfWkaNzw==, + } + dependencies: + "@types/react": 18.2.45 + dev: true + + /@types/react@18.2.45: + resolution: + { + integrity: sha512-TtAxCNrlrBp8GoeEp1npd5g+d/OejJHFxS3OWmrPBMFaVQMSN0OFySozJio5BHxTuTeug00AVXVAjfDSfk+lUg==, + } + dependencies: + "@types/prop-types": 15.7.11 + "@types/scheduler": 0.16.8 + csstype: 3.1.3 + dev: true + /@types/readable-stream@2.3.15: resolution: { @@ -1504,6 +2317,13 @@ packages: safe-buffer: 5.1.2 dev: true + /@types/scheduler@0.16.8: + resolution: + { + integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==, + } + dev: true + /@types/secp256k1@4.0.6: resolution: { @@ -1520,7 +2340,7 @@ packages: } dev: true - /@typescript-eslint/eslint-plugin@6.14.0(@typescript-eslint/parser@6.14.0)(eslint@8.55.0)(typescript@5.3.3): + /@typescript-eslint/eslint-plugin@6.14.0(@typescript-eslint/parser@6.14.0)(eslint@8.56.0)(typescript@5.3.3): resolution: { integrity: sha512-1ZJBykBCXaSHG94vMMKmiHoL0MhNHKSVlcHVYZNw+BKxufhqQVTOawNpwwI1P5nIFZ/4jLVop0mcY6mJJDFNaw==, @@ -1535,13 +2355,13 @@ packages: optional: true dependencies: "@eslint-community/regexpp": 4.10.0 - "@typescript-eslint/parser": 6.14.0(eslint@8.55.0)(typescript@5.3.3) + "@typescript-eslint/parser": 6.14.0(eslint@8.56.0)(typescript@5.3.3) "@typescript-eslint/scope-manager": 6.14.0 - "@typescript-eslint/type-utils": 6.14.0(eslint@8.55.0)(typescript@5.3.3) - "@typescript-eslint/utils": 6.14.0(eslint@8.55.0)(typescript@5.3.3) + "@typescript-eslint/type-utils": 6.14.0(eslint@8.56.0)(typescript@5.3.3) + "@typescript-eslint/utils": 6.14.0(eslint@8.56.0)(typescript@5.3.3) "@typescript-eslint/visitor-keys": 6.14.0 debug: 4.3.4(supports-color@8.1.1) - eslint: 8.55.0 + eslint: 8.56.0 graphemer: 1.4.0 ignore: 5.3.0 natural-compare: 1.4.0 @@ -1552,7 +2372,7 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@6.14.0(eslint@8.55.0)(typescript@5.3.3): + /@typescript-eslint/parser@6.14.0(eslint@8.56.0)(typescript@5.3.3): resolution: { integrity: sha512-QjToC14CKacd4Pa7JK4GeB/vHmWFJckec49FR4hmIRf97+KXole0T97xxu9IFiPxVQ1DBWrQ5wreLwAGwWAVQA==, @@ -1570,7 +2390,7 @@ packages: "@typescript-eslint/typescript-estree": 6.14.0(typescript@5.3.3) "@typescript-eslint/visitor-keys": 6.14.0 debug: 4.3.4(supports-color@8.1.1) - eslint: 8.55.0 + eslint: 8.56.0 typescript: 5.3.3 transitivePeerDependencies: - supports-color @@ -1587,7 +2407,7 @@ packages: "@typescript-eslint/visitor-keys": 6.14.0 dev: true - /@typescript-eslint/type-utils@6.14.0(eslint@8.55.0)(typescript@5.3.3): + /@typescript-eslint/type-utils@6.14.0(eslint@8.56.0)(typescript@5.3.3): resolution: { integrity: sha512-x6OC9Q7HfYKqjnuNu5a7kffIYs3No30isapRBJl1iCHLitD8O0lFbRcVGiOcuyN837fqXzPZ1NS10maQzZMKqw==, @@ -1601,9 +2421,9 @@ packages: optional: true dependencies: "@typescript-eslint/typescript-estree": 6.14.0(typescript@5.3.3) - "@typescript-eslint/utils": 6.14.0(eslint@8.55.0)(typescript@5.3.3) + "@typescript-eslint/utils": 6.14.0(eslint@8.56.0)(typescript@5.3.3) debug: 4.3.4(supports-color@8.1.1) - eslint: 8.55.0 + eslint: 8.56.0 ts-api-utils: 1.0.3(typescript@5.3.3) typescript: 5.3.3 transitivePeerDependencies: @@ -1642,7 +2462,7 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@6.14.0(eslint@8.55.0)(typescript@5.3.3): + /@typescript-eslint/utils@6.14.0(eslint@8.56.0)(typescript@5.3.3): resolution: { integrity: sha512-XwRTnbvRr7Ey9a1NT6jqdKX8y/atWG+8fAIu3z73HSP8h06i3r/ClMhmaF/RGWGW1tHJEwij1uEg2GbEmPYvYg==, @@ -1651,13 +2471,13 @@ packages: peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: - "@eslint-community/eslint-utils": 4.4.0(eslint@8.55.0) + "@eslint-community/eslint-utils": 4.4.0(eslint@8.56.0) "@types/json-schema": 7.0.15 "@types/semver": 7.5.6 "@typescript-eslint/scope-manager": 6.14.0 "@typescript-eslint/types": 6.14.0 "@typescript-eslint/typescript-estree": 6.14.0(typescript@5.3.3) - eslint: 8.55.0 + eslint: 8.56.0 semver: 7.5.4 transitivePeerDependencies: - supports-color @@ -1872,6 +2692,13 @@ packages: } dev: true + /any-promise@1.3.0: + resolution: + { + integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==, + } + dev: true + /anymatch@3.1.3: resolution: { @@ -1890,6 +2717,13 @@ packages: } dev: true + /arg@5.0.2: + resolution: + { + integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==, + } + dev: true + /argparse@2.0.1: resolution: { @@ -1897,6 +2731,15 @@ packages: } dev: true + /aria-query@5.3.0: + resolution: + { + integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==, + } + dependencies: + dequal: 2.0.3 + dev: true + /array-back@3.1.0: resolution: { @@ -1913,6 +2756,30 @@ packages: engines: { node: ">=8" } dev: true + /array-buffer-byte-length@1.0.0: + resolution: + { + integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==, + } + dependencies: + call-bind: 1.0.5 + is-array-buffer: 3.0.2 + dev: true + + /array-includes@3.1.7: + resolution: + { + integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==, + } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 + is-string: 1.0.7 + dev: true + /array-union@2.1.0: resolution: { @@ -1929,6 +2796,75 @@ packages: engines: { node: ">=0.10.0" } dev: true + /array.prototype.findlastindex@1.2.3: + resolution: + { + integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==, + } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-shim-unscopables: 1.0.2 + get-intrinsic: 1.2.2 + dev: true + + /array.prototype.flat@1.3.2: + resolution: + { + integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==, + } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-shim-unscopables: 1.0.2 + dev: true + + /array.prototype.flatmap@1.3.2: + resolution: + { + integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==, + } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-shim-unscopables: 1.0.2 + dev: true + + /array.prototype.tosorted@1.1.2: + resolution: + { + integrity: sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==, + } + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-shim-unscopables: 1.0.2 + get-intrinsic: 1.2.2 + dev: true + + /arraybuffer.prototype.slice@1.0.2: + resolution: + { + integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==, + } + engines: { node: ">= 0.4" } + dependencies: + array-buffer-byte-length: 1.0.0 + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 + is-array-buffer: 3.0.2 + is-shared-array-buffer: 1.0.2 + dev: true + /asap@2.0.6: resolution: { @@ -1943,6 +2879,13 @@ packages: } dev: true + /ast-types-flow@0.0.8: + resolution: + { + integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==, + } + dev: true + /astral-regex@2.0.0: resolution: { @@ -1951,6 +2894,15 @@ packages: engines: { node: ">=8" } dev: true + /asynciterator.prototype@1.0.0: + resolution: + { + integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==, + } + dependencies: + has-symbols: 1.0.3 + dev: true + /asynckit@0.4.0: resolution: { @@ -1966,6 +2918,41 @@ packages: engines: { node: ">= 4.0.0" } dev: true + /autoprefixer@10.4.16(postcss@8.4.32): + resolution: + { + integrity: sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==, + } + engines: { node: ^10 || ^12 || >=14 } + hasBin: true + peerDependencies: + postcss: ^8.1.0 + dependencies: + browserslist: 4.22.2 + caniuse-lite: 1.0.30001570 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.0.0 + postcss: 8.4.32 + postcss-value-parser: 4.2.0 + dev: true + + /available-typed-arrays@1.0.5: + resolution: + { + integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==, + } + engines: { node: ">= 0.4" } + dev: true + + /axe-core@4.7.0: + resolution: + { + integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==, + } + engines: { node: ">=4" } + dev: true + /axios@1.6.2: resolution: { @@ -1979,6 +2966,15 @@ packages: - debug dev: true + /axobject-query@3.2.1: + resolution: + { + integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==, + } + dependencies: + dequal: 2.0.3 + dev: true + /balanced-match@1.0.2: resolution: { @@ -2115,6 +3111,20 @@ packages: safe-buffer: 5.2.1 dev: true + /browserslist@4.22.2: + resolution: + { + integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==, + } + engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } + hasBin: true + dependencies: + caniuse-lite: 1.0.30001570 + electron-to-chromium: 1.4.614 + node-releases: 2.0.14 + update-browserslist-db: 1.0.13(browserslist@4.22.2) + dev: true + /bs58@4.0.1: resolution: { @@ -2159,6 +3169,16 @@ packages: ieee754: 1.2.1 dev: true + /busboy@1.6.0: + resolution: + { + integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==, + } + engines: { node: ">=10.16.0" } + dependencies: + streamsearch: 1.1.0 + dev: false + /bytes@3.1.2: resolution: { @@ -2210,6 +3230,14 @@ packages: engines: { node: ">=6" } dev: true + /camelcase-css@2.0.1: + resolution: + { + integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==, + } + engines: { node: ">= 6" } + dev: true + /camelcase@6.3.0: resolution: { @@ -2218,6 +3246,12 @@ packages: engines: { node: ">=10" } dev: true + /caniuse-lite@1.0.30001570: + resolution: + { + integrity: sha512-+3e0ASu4sw1SWaoCtvPeyXp+5PsjigkSt8OXZbF9StH5pQWbxEjLAZE3n8Aup5udop1uRiKA7a4utUk/uoSpUw==, + } + /case@1.6.3: resolution: { @@ -2364,6 +3398,13 @@ packages: "@colors/colors": 1.5.0 dev: true + /client-only@0.0.1: + resolution: + { + integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==, + } + dev: false + /cliui@7.0.4: resolution: { @@ -2392,7 +3433,6 @@ packages: engines: { node: ">=7.0.0" } dependencies: color-name: 1.1.4 - dev: true /color-name@1.1.3: resolution: @@ -2406,7 +3446,27 @@ packages: { integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==, } - dev: true + + /color-string@1.9.1: + resolution: + { + integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==, + } + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.2 + dev: false + + /color@4.2.3: + resolution: + { + integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==, + } + engines: { node: ">=12.5.0" } + dependencies: + color-convert: 2.0.1 + color-string: 1.9.1 + dev: false /colors@1.4.0: resolution: @@ -2474,6 +3534,14 @@ packages: } dev: true + /commander@4.1.1: + resolution: + { + integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==, + } + engines: { node: ">= 6" } + dev: true + /concat-map@0.0.1: resolution: { @@ -2574,30 +3642,67 @@ packages: sha.js: 2.4.11 dev: true - /create-require@1.1.1: + /create-require@1.1.1: + resolution: + { + integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==, + } + dev: true + + /cross-spawn@7.0.3: + resolution: + { + integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==, + } + engines: { node: ">= 8" } + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + dev: true + + /crypt@0.0.2: + resolution: + { + integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==, + } + dev: true + + /cssesc@3.0.0: + resolution: + { + integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==, + } + engines: { node: ">=4" } + hasBin: true + dev: true + + /csstype@3.1.3: resolution: { - integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==, + integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==, } dev: true - /cross-spawn@7.0.3: + /damerau-levenshtein@1.0.8: resolution: { - integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==, + integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==, } - engines: { node: ">= 8" } - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 dev: true - /crypt@0.0.2: + /debug@3.2.7: resolution: { - integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==, + integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==, } + peerDependencies: + supports-color: "*" + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.3 dev: true /debug@4.3.4(supports-color@8.1.1): @@ -2669,6 +3774,18 @@ packages: has-property-descriptors: 1.0.1 dev: true + /define-properties@1.2.1: + resolution: + { + integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==, + } + engines: { node: ">= 0.4" } + dependencies: + define-data-property: 1.1.1 + has-property-descriptors: 1.0.1 + object-keys: 1.1.1 + dev: true + /delayed-stream@1.0.0: resolution: { @@ -2699,6 +3816,29 @@ packages: engines: { node: ">= 0.8" } dev: true + /dequal@2.0.3: + resolution: + { + integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==, + } + engines: { node: ">=6" } + dev: true + + /detect-libc@2.0.2: + resolution: + { + integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==, + } + engines: { node: ">=8" } + dev: false + + /didyoumean@1.2.2: + resolution: + { + integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==, + } + dev: true + /diff@4.0.2: resolution: { @@ -2725,6 +3865,23 @@ packages: path-type: 4.0.0 dev: true + /dlv@1.1.3: + resolution: + { + integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==, + } + dev: true + + /doctrine@2.1.0: + resolution: + { + integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==, + } + engines: { node: ">=0.10.0" } + dependencies: + esutils: 2.0.3 + dev: true + /doctrine@3.0.0: resolution: { @@ -2735,6 +3892,13 @@ packages: esutils: 2.0.3 dev: true + /electron-to-chromium@1.4.614: + resolution: + { + integrity: sha512-X4ze/9Sc3QWs6h92yerwqv7aB/uU8vCjZcrMjA8N9R1pjMFRe44dLsck5FzLilOYvcXuDn93B+bpGYyufc70gQ==, + } + dev: true + /elliptic@6.5.4: resolution: { @@ -2757,6 +3921,24 @@ packages: } dev: true + /emoji-regex@9.2.2: + resolution: + { + integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==, + } + dev: true + + /enhanced-resolve@5.15.0: + resolution: + { + integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==, + } + engines: { node: ">=10.13.0" } + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + dev: true + /enquirer@2.4.1: resolution: { @@ -2785,6 +3967,109 @@ packages: is-arrayish: 0.2.1 dev: true + /es-abstract@1.22.3: + resolution: + { + integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==, + } + engines: { node: ">= 0.4" } + dependencies: + array-buffer-byte-length: 1.0.0 + arraybuffer.prototype.slice: 1.0.2 + available-typed-arrays: 1.0.5 + call-bind: 1.0.5 + es-set-tostringtag: 2.0.2 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.6 + get-intrinsic: 1.2.2 + get-symbol-description: 1.0.0 + globalthis: 1.0.3 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 + has-proto: 1.0.1 + has-symbols: 1.0.3 + hasown: 2.0.0 + internal-slot: 1.0.6 + is-array-buffer: 3.0.2 + is-callable: 1.2.7 + is-negative-zero: 2.0.2 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.2 + is-string: 1.0.7 + is-typed-array: 1.1.12 + is-weakref: 1.0.2 + object-inspect: 1.13.1 + object-keys: 1.1.1 + object.assign: 4.1.5 + regexp.prototype.flags: 1.5.1 + safe-array-concat: 1.0.1 + safe-regex-test: 1.0.0 + string.prototype.trim: 1.2.8 + string.prototype.trimend: 1.0.7 + string.prototype.trimstart: 1.0.7 + typed-array-buffer: 1.0.0 + typed-array-byte-length: 1.0.0 + typed-array-byte-offset: 1.0.0 + typed-array-length: 1.0.4 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.13 + dev: true + + /es-iterator-helpers@1.0.15: + resolution: + { + integrity: sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==, + } + dependencies: + asynciterator.prototype: 1.0.0 + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-set-tostringtag: 2.0.2 + function-bind: 1.1.2 + get-intrinsic: 1.2.2 + globalthis: 1.0.3 + has-property-descriptors: 1.0.1 + has-proto: 1.0.1 + has-symbols: 1.0.3 + internal-slot: 1.0.6 + iterator.prototype: 1.1.2 + safe-array-concat: 1.0.1 + dev: true + + /es-set-tostringtag@2.0.2: + resolution: + { + integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==, + } + engines: { node: ">= 0.4" } + dependencies: + get-intrinsic: 1.2.2 + has-tostringtag: 1.0.0 + hasown: 2.0.0 + dev: true + + /es-shim-unscopables@1.0.2: + resolution: + { + integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==, + } + dependencies: + hasown: 2.0.0 + dev: true + + /es-to-primitive@1.2.1: + resolution: + { + integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==, + } + engines: { node: ">= 0.4" } + dependencies: + is-callable: 1.2.7 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + dev: true + /escalade@3.1.1: resolution: { @@ -2809,7 +4094,35 @@ packages: engines: { node: ">=10" } dev: true - /eslint-config-prettier@9.1.0(eslint@8.55.0): + /eslint-config-next@14.0.4(eslint@8.56.0)(typescript@5.3.3): + resolution: + { + integrity: sha512-9/xbOHEQOmQtqvQ1UsTQZpnA7SlDMBtuKJ//S4JnoyK3oGLhILKXdBgu/UO7lQo/2xOykQULS1qQ6p2+EpHgAQ==, + } + peerDependencies: + eslint: ^7.23.0 || ^8.0.0 + typescript: ">=3.3.1" + peerDependenciesMeta: + typescript: + optional: true + dependencies: + "@next/eslint-plugin-next": 14.0.4 + "@rushstack/eslint-patch": 1.6.1 + "@typescript-eslint/parser": 6.14.0(eslint@8.56.0)(typescript@5.3.3) + eslint: 8.56.0 + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.14.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.56.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.14.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) + eslint-plugin-jsx-a11y: 6.8.0(eslint@8.56.0) + eslint-plugin-react: 7.33.2(eslint@8.56.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.56.0) + typescript: 5.3.3 + transitivePeerDependencies: + - eslint-import-resolver-webpack + - supports-color + dev: true + + /eslint-config-prettier@9.1.0(eslint@8.56.0): resolution: { integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==, @@ -2818,7 +4131,185 @@ packages: peerDependencies: eslint: ">=7.0.0" dependencies: - eslint: 8.55.0 + eslint: 8.56.0 + dev: true + + /eslint-import-resolver-node@0.3.9: + resolution: + { + integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==, + } + dependencies: + debug: 3.2.7 + is-core-module: 2.13.1 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.14.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.56.0): + resolution: + { + integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==, + } + engines: { node: ^14.18.0 || >=16.0.0 } + peerDependencies: + eslint: "*" + eslint-plugin-import: "*" + dependencies: + debug: 4.3.4(supports-color@8.1.1) + enhanced-resolve: 5.15.0 + eslint: 8.56.0 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.14.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.14.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) + fast-glob: 3.3.2 + get-tsconfig: 4.7.2 + is-core-module: 2.13.1 + is-glob: 4.0.3 + transitivePeerDependencies: + - "@typescript-eslint/parser" + - eslint-import-resolver-node + - eslint-import-resolver-webpack + - supports-color + dev: true + + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.14.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0): + resolution: + { + integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==, + } + engines: { node: ">=4" } + peerDependencies: + "@typescript-eslint/parser": "*" + eslint: "*" + eslint-import-resolver-node: "*" + eslint-import-resolver-typescript: "*" + eslint-import-resolver-webpack: "*" + peerDependenciesMeta: + "@typescript-eslint/parser": + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + "@typescript-eslint/parser": 6.14.0(eslint@8.56.0)(typescript@5.3.3) + debug: 3.2.7 + eslint: 8.56.0 + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.14.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.56.0) + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.14.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0): + resolution: + { + integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==, + } + engines: { node: ">=4" } + peerDependencies: + "@typescript-eslint/parser": "*" + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + "@typescript-eslint/parser": + optional: true + dependencies: + "@typescript-eslint/parser": 6.14.0(eslint@8.56.0)(typescript@5.3.3) + array-includes: 3.1.7 + array.prototype.findlastindex: 1.2.3 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 8.56.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.14.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) + hasown: 2.0.0 + is-core-module: 2.13.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.7 + object.groupby: 1.0.1 + object.values: 1.1.7 + semver: 6.3.1 + tsconfig-paths: 3.15.0 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: true + + /eslint-plugin-jsx-a11y@6.8.0(eslint@8.56.0): + resolution: + { + integrity: sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==, + } + engines: { node: ">=4.0" } + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + "@babel/runtime": 7.23.6 + aria-query: 5.3.0 + array-includes: 3.1.7 + array.prototype.flatmap: 1.3.2 + ast-types-flow: 0.0.8 + axe-core: 4.7.0 + axobject-query: 3.2.1 + damerau-levenshtein: 1.0.8 + emoji-regex: 9.2.2 + es-iterator-helpers: 1.0.15 + eslint: 8.56.0 + hasown: 2.0.0 + jsx-ast-utils: 3.3.5 + language-tags: 1.0.9 + minimatch: 3.1.2 + object.entries: 1.1.7 + object.fromentries: 2.0.7 + dev: true + + /eslint-plugin-react-hooks@4.6.0(eslint@8.56.0): + resolution: + { + integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==, + } + engines: { node: ">=10" } + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + dependencies: + eslint: 8.56.0 + dev: true + + /eslint-plugin-react@7.33.2(eslint@8.56.0): + resolution: + { + integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==, + } + engines: { node: ">=4" } + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + array-includes: 3.1.7 + array.prototype.flatmap: 1.3.2 + array.prototype.tosorted: 1.1.2 + doctrine: 2.1.0 + es-iterator-helpers: 1.0.15 + eslint: 8.56.0 + estraverse: 5.3.0 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.2 + object.entries: 1.1.7 + object.fromentries: 2.0.7 + object.hasown: 1.1.3 + object.values: 1.1.7 + prop-types: 15.8.1 + resolve: 2.0.0-next.5 + semver: 6.3.1 + string.prototype.matchall: 4.0.10 dev: true /eslint-scope@7.2.2: @@ -2840,18 +4331,18 @@ packages: engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } dev: true - /eslint@8.55.0: + /eslint@8.56.0: resolution: { - integrity: sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA==, + integrity: sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==, } engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } hasBin: true dependencies: - "@eslint-community/eslint-utils": 4.4.0(eslint@8.55.0) + "@eslint-community/eslint-utils": 4.4.0(eslint@8.56.0) "@eslint-community/regexpp": 4.10.0 "@eslint/eslintrc": 2.1.4 - "@eslint/js": 8.55.0 + "@eslint/js": 8.56.0 "@humanwhocodes/config-array": 0.11.13 "@humanwhocodes/module-importer": 1.0.1 "@nodelib/fs.walk": 1.2.8 @@ -3253,6 +4744,15 @@ packages: debug: 4.3.4(supports-color@8.1.1) dev: true + /for-each@0.3.3: + resolution: + { + integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==, + } + dependencies: + is-callable: 1.2.7 + dev: true + /form-data-encoder@2.1.4: resolution: { @@ -3292,6 +4792,13 @@ packages: } dev: true + /fraction.js@4.3.7: + resolution: + { + integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==, + } + dev: true + /fs-extra@0.30.0: resolution: { @@ -3362,6 +4869,19 @@ packages: } dev: true + /function.prototype.name@1.1.6: + resolution: + { + integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==, + } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + functions-have-names: 1.2.3 + dev: true + /functional-red-black-tree@1.0.1: resolution: { @@ -3369,6 +4889,13 @@ packages: } dev: true + /functions-have-names@1.2.3: + resolution: + { + integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==, + } + dev: true + /get-caller-file@2.0.5: resolution: { @@ -3394,15 +4921,35 @@ packages: { integrity: sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==, } - engines: { node: ">=4" } + engines: { node: ">=4" } + dev: true + + /get-stream@6.0.1: + resolution: + { + integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==, + } + engines: { node: ">=10" } + dev: true + + /get-symbol-description@1.0.0: + resolution: + { + integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==, + } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 dev: true - /get-stream@6.0.1: + /get-tsconfig@4.7.2: resolution: { - integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==, + integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==, } - engines: { node: ">=10" } + dependencies: + resolve-pkg-maps: 1.0.0 dev: true /glob-parent@5.1.2: @@ -3425,6 +4972,27 @@ packages: is-glob: 4.0.3 dev: true + /glob-to-regexp@0.4.1: + resolution: + { + integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==, + } + dev: false + + /glob@7.1.6: + resolution: + { + integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==, + } + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + /glob@7.1.7: resolution: { @@ -3481,6 +5049,14 @@ packages: once: 1.4.0 dev: true + /globals@11.12.0: + resolution: + { + integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==, + } + engines: { node: ">=4" } + dev: true + /globals@13.24.0: resolution: { @@ -3491,6 +5067,16 @@ packages: type-fest: 0.20.2 dev: true + /globalthis@1.0.3: + resolution: + { + integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==, + } + engines: { node: ">= 0.4" } + dependencies: + define-properties: 1.2.1 + dev: true + /globby@11.1.0: resolution: { @@ -3547,7 +5133,6 @@ packages: { integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==, } - dev: true /graphemer@1.4.0: resolution: @@ -3674,6 +5259,13 @@ packages: - utf-8-validate dev: true + /has-bigints@1.0.2: + resolution: + { + integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==, + } + dev: true + /has-flag@3.0.0: resolution: { @@ -3715,6 +5307,16 @@ packages: engines: { node: ">= 0.4" } dev: true + /has-tostringtag@1.0.0: + resolution: + { + integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==, + } + engines: { node: ">= 0.4" } + dependencies: + has-symbols: 1.0.3 + dev: true + /hash-base@3.1.0: resolution: { @@ -3876,166 +5478,415 @@ packages: resolve-from: 4.0.0 dev: true - /imurmurhash@0.1.4: + /imurmurhash@0.1.4: + resolution: + { + integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==, + } + engines: { node: ">=0.8.19" } + dev: true + + /indent-string@4.0.0: + resolution: + { + integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==, + } + engines: { node: ">=8" } + dev: true + + /inflight@1.0.6: + resolution: + { + integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==, + } + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + + /inherits@2.0.4: + resolution: + { + integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==, + } + dev: true + + /ini@1.3.8: + resolution: + { + integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==, + } + dev: true + + /internal-slot@1.0.6: + resolution: + { + integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==, + } + engines: { node: ">= 0.4" } + dependencies: + get-intrinsic: 1.2.2 + hasown: 2.0.0 + side-channel: 1.0.4 + dev: true + + /io-ts@1.10.4: + resolution: + { + integrity: sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==, + } + dependencies: + fp-ts: 1.19.3 + dev: true + + /is-array-buffer@3.0.2: + resolution: + { + integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==, + } + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + is-typed-array: 1.1.12 + dev: true + + /is-arrayish@0.2.1: + resolution: + { + integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==, + } + dev: true + + /is-arrayish@0.3.2: + resolution: + { + integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==, + } + dev: false + + /is-async-function@2.0.0: + resolution: + { + integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==, + } + engines: { node: ">= 0.4" } + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-bigint@1.0.4: + resolution: + { + integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==, + } + dependencies: + has-bigints: 1.0.2 + dev: true + + /is-binary-path@2.1.0: + resolution: + { + integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==, + } + engines: { node: ">=8" } + dependencies: + binary-extensions: 2.2.0 + dev: true + + /is-boolean-object@1.1.2: + resolution: + { + integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==, + } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.5 + has-tostringtag: 1.0.0 + dev: true + + /is-buffer@2.0.5: + resolution: + { + integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==, + } + engines: { node: ">=4" } + dev: true + + /is-callable@1.2.7: + resolution: + { + integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==, + } + engines: { node: ">= 0.4" } + dev: true + + /is-core-module@2.13.1: + resolution: + { + integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==, + } + dependencies: + hasown: 2.0.0 + dev: true + + /is-date-object@1.0.5: + resolution: + { + integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==, + } + engines: { node: ">= 0.4" } + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-extglob@2.1.1: + resolution: + { + integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==, + } + engines: { node: ">=0.10.0" } + dev: true + + /is-finalizationregistry@1.0.2: + resolution: + { + integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==, + } + dependencies: + call-bind: 1.0.5 + dev: true + + /is-fullwidth-code-point@2.0.0: + resolution: + { + integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==, + } + engines: { node: ">=4" } + dev: true + + /is-fullwidth-code-point@3.0.0: + resolution: + { + integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==, + } + engines: { node: ">=8" } + dev: true + + /is-generator-function@1.0.10: + resolution: + { + integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==, + } + engines: { node: ">= 0.4" } + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-glob@4.0.3: + resolution: + { + integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==, + } + engines: { node: ">=0.10.0" } + dependencies: + is-extglob: 2.1.1 + dev: true + + /is-hex-prefixed@1.0.0: + resolution: + { + integrity: sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==, + } + engines: { node: ">=6.5.0", npm: ">=3" } + dev: true + + /is-map@2.0.2: + resolution: + { + integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==, + } + dev: true + + /is-negative-zero@2.0.2: + resolution: + { + integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==, + } + engines: { node: ">= 0.4" } + dev: true + + /is-number-object@1.0.7: resolution: { - integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==, + integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==, } - engines: { node: ">=0.8.19" } + engines: { node: ">= 0.4" } + dependencies: + has-tostringtag: 1.0.0 dev: true - /indent-string@4.0.0: + /is-number@7.0.0: resolution: { - integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==, + integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==, } - engines: { node: ">=8" } + engines: { node: ">=0.12.0" } dev: true - /inflight@1.0.6: + /is-path-inside@3.0.3: resolution: { - integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==, + integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==, } - dependencies: - once: 1.4.0 - wrappy: 1.0.2 + engines: { node: ">=8" } dev: true - /inherits@2.0.4: + /is-plain-obj@2.1.0: resolution: { - integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==, + integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==, } + engines: { node: ">=8" } dev: true - /ini@1.3.8: + /is-regex@1.1.4: resolution: { - integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==, + integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==, } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.5 + has-tostringtag: 1.0.0 dev: true - /io-ts@1.10.4: + /is-set@2.0.2: resolution: { - integrity: sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==, + integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==, } - dependencies: - fp-ts: 1.19.3 dev: true - /is-arrayish@0.2.1: + /is-shared-array-buffer@1.0.2: resolution: { - integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==, + integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==, } + dependencies: + call-bind: 1.0.5 dev: true - /is-binary-path@2.1.0: + /is-string@1.0.7: resolution: { - integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==, + integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==, } - engines: { node: ">=8" } + engines: { node: ">= 0.4" } dependencies: - binary-extensions: 2.2.0 + has-tostringtag: 1.0.0 dev: true - /is-buffer@2.0.5: + /is-symbol@1.0.4: resolution: { - integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==, + integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==, } - engines: { node: ">=4" } + engines: { node: ">= 0.4" } + dependencies: + has-symbols: 1.0.3 dev: true - /is-extglob@2.1.1: + /is-typed-array@1.1.12: resolution: { - integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==, + integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==, } - engines: { node: ">=0.10.0" } + engines: { node: ">= 0.4" } + dependencies: + which-typed-array: 1.1.13 dev: true - /is-fullwidth-code-point@2.0.0: + /is-unicode-supported@0.1.0: resolution: { - integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==, + integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==, } - engines: { node: ">=4" } + engines: { node: ">=10" } dev: true - /is-fullwidth-code-point@3.0.0: + /is-weakmap@2.0.1: resolution: { - integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==, + integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==, } - engines: { node: ">=8" } dev: true - /is-glob@4.0.3: + /is-weakref@1.0.2: resolution: { - integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==, + integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==, } - engines: { node: ">=0.10.0" } dependencies: - is-extglob: 2.1.1 + call-bind: 1.0.5 dev: true - /is-hex-prefixed@1.0.0: + /is-weakset@2.0.2: resolution: { - integrity: sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==, + integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==, } - engines: { node: ">=6.5.0", npm: ">=3" } + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 dev: true - /is-number@7.0.0: + /isarray@1.0.0: resolution: { - integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==, + integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==, } - engines: { node: ">=0.12.0" } dev: true - /is-path-inside@3.0.3: + /isarray@2.0.5: resolution: { - integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==, + integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==, } - engines: { node: ">=8" } dev: true - /is-plain-obj@2.1.0: + /isexe@2.0.0: resolution: { - integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==, + integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==, } - engines: { node: ">=8" } dev: true - /is-unicode-supported@0.1.0: + /iterator.prototype@1.1.2: resolution: { - integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==, + integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==, } - engines: { node: ">=10" } + dependencies: + define-properties: 1.2.1 + get-intrinsic: 1.2.2 + has-symbols: 1.0.3 + reflect.getprototypeof: 1.0.4 + set-function-name: 2.0.1 dev: true - /isarray@1.0.0: + /javascript-natural-sort@0.7.1: resolution: { - integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==, + integrity: sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==, } dev: true - /isexe@2.0.0: + /jiti@1.21.0: resolution: { - integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==, + integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==, } + hasBin: true dev: true /js-sdsl@4.4.2: @@ -4057,7 +5908,6 @@ packages: { integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==, } - dev: true /js-yaml@4.1.0: resolution: @@ -4069,6 +5919,15 @@ packages: argparse: 2.0.1 dev: true + /jsesc@2.5.2: + resolution: + { + integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==, + } + engines: { node: ">=4" } + hasBin: true + dev: true + /json-buffer@3.0.1: resolution: { @@ -4104,6 +5963,16 @@ packages: } dev: true + /json5@1.0.2: + resolution: + { + integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==, + } + hasBin: true + dependencies: + minimist: 1.2.8 + dev: true + /jsonfile@2.4.0: resolution: { @@ -4133,6 +6002,19 @@ packages: graceful-fs: 4.2.11 dev: true + /jsx-ast-utils@3.3.5: + resolution: + { + integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==, + } + engines: { node: ">=4.0" } + dependencies: + array-includes: 3.1.7 + array.prototype.flat: 1.3.2 + object.assign: 4.1.5 + object.values: 1.1.7 + dev: true + /keccak@3.0.4: resolution: { @@ -4164,6 +6046,23 @@ packages: graceful-fs: 4.2.11 dev: true + /language-subtag-registry@0.3.22: + resolution: + { + integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==, + } + dev: true + + /language-tags@1.0.9: + resolution: + { + integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==, + } + engines: { node: ">=0.10" } + dependencies: + language-subtag-registry: 0.3.22 + dev: true + /latest-version@7.0.0: resolution: { @@ -4215,6 +6114,22 @@ packages: type-check: 0.4.0 dev: true + /lilconfig@2.1.0: + resolution: + { + integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==, + } + engines: { node: ">=10" } + dev: true + + /lilconfig@3.0.0: + resolution: + { + integrity: sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==, + } + engines: { node: ">=14" } + dev: true + /lines-and-columns@1.2.4: resolution: { @@ -4296,6 +6211,15 @@ packages: is-unicode-supported: 0.1.0 dev: true + /loose-envify@1.4.0: + resolution: + { + integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==, + } + hasBin: true + dependencies: + js-tokens: 4.0.0 + /lowercase-keys@3.0.0: resolution: { @@ -4321,7 +6245,6 @@ packages: engines: { node: ">=10" } dependencies: yallist: 4.0.0 - dev: true /lru_map@0.3.3: resolution: @@ -4535,103 +6458,282 @@ packages: yargs-unparser: 2.0.0 dev: true - /module-error@1.0.2: + /module-error@1.0.2: + resolution: + { + integrity: sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA==, + } + engines: { node: ">=10" } + dev: true + + /ms@2.1.2: + resolution: + { + integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==, + } + dev: true + + /ms@2.1.3: + resolution: + { + integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==, + } + dev: true + + /mz@2.7.0: + resolution: + { + integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==, + } + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + dev: true + + /nanoid@3.3.3: + resolution: + { + integrity: sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==, + } + engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } + hasBin: true + dev: true + + /nanoid@3.3.7: + resolution: + { + integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==, + } + engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } + hasBin: true + + /napi-macros@2.2.2: + resolution: + { + integrity: sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g==, + } + dev: true + + /natural-compare@1.4.0: + resolution: + { + integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==, + } + dev: true + + /next-themes@0.2.1(next@14.0.4)(react-dom@18.2.0)(react@18.2.0): + resolution: + { + integrity: sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A==, + } + peerDependencies: + next: "*" + react: "*" + react-dom: "*" + dependencies: + next: 14.0.4(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /next@14.0.4(react-dom@18.2.0)(react@18.2.0): + resolution: + { + integrity: sha512-qbwypnM7327SadwFtxXnQdGiKpkuhaRLE2uq62/nRul9cj9KhQ5LhHmlziTNqUidZotw/Q1I9OjirBROdUJNgA==, + } + engines: { node: ">=18.17.0" } + hasBin: true + peerDependencies: + "@opentelemetry/api": ^1.1.0 + react: ^18.2.0 + react-dom: ^18.2.0 + sass: ^1.3.0 + peerDependenciesMeta: + "@opentelemetry/api": + optional: true + sass: + optional: true + dependencies: + "@next/env": 14.0.4 + "@swc/helpers": 0.5.2 + busboy: 1.6.0 + caniuse-lite: 1.0.30001570 + graceful-fs: 4.2.11 + postcss: 8.4.31 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + styled-jsx: 5.1.1(react@18.2.0) + watchpack: 2.4.0 + optionalDependencies: + "@next/swc-darwin-arm64": 14.0.4 + "@next/swc-darwin-x64": 14.0.4 + "@next/swc-linux-arm64-gnu": 14.0.4 + "@next/swc-linux-arm64-musl": 14.0.4 + "@next/swc-linux-x64-gnu": 14.0.4 + "@next/swc-linux-x64-musl": 14.0.4 + "@next/swc-win32-arm64-msvc": 14.0.4 + "@next/swc-win32-ia32-msvc": 14.0.4 + "@next/swc-win32-x64-msvc": 14.0.4 + transitivePeerDependencies: + - "@babel/core" + - babel-plugin-macros + dev: false + + /node-addon-api@2.0.2: + resolution: + { + integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==, + } + dev: true + + /node-gyp-build@4.7.1: + resolution: + { + integrity: sha512-wTSrZ+8lsRRa3I3H8Xr65dLWSgCvY2l4AOnaeKdPA9TB/WYMPaTcrzf3rXvFoVvjKNVnu0CcWSx54qq9GKRUYg==, + } + hasBin: true + dev: true + + /node-releases@2.0.14: + resolution: + { + integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==, + } + dev: true + + /nofilter@3.1.0: + resolution: + { + integrity: sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==, + } + engines: { node: ">=12.19" } + dev: true + + /normalize-path@3.0.0: resolution: { - integrity: sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA==, + integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==, } - engines: { node: ">=10" } + engines: { node: ">=0.10.0" } dev: true - /ms@2.1.2: + /normalize-range@0.1.2: resolution: { - integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==, + integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==, } + engines: { node: ">=0.10.0" } dev: true - /ms@2.1.3: + /normalize-url@8.0.0: resolution: { - integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==, + integrity: sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==, } + engines: { node: ">=14.16" } dev: true - /nanoid@3.3.3: + /object-assign@4.1.1: resolution: { - integrity: sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==, + integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==, } - engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } - hasBin: true + engines: { node: ">=0.10.0" } dev: true - /napi-macros@2.2.2: + /object-hash@3.0.0: resolution: { - integrity: sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g==, + integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==, } + engines: { node: ">= 6" } dev: true - /natural-compare@1.4.0: + /object-inspect@1.13.1: resolution: { - integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==, + integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==, } dev: true - /node-addon-api@2.0.2: + /object-keys@1.1.1: resolution: { - integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==, + integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==, } + engines: { node: ">= 0.4" } dev: true - /node-gyp-build@4.7.1: + /object.assign@4.1.5: resolution: { - integrity: sha512-wTSrZ+8lsRRa3I3H8Xr65dLWSgCvY2l4AOnaeKdPA9TB/WYMPaTcrzf3rXvFoVvjKNVnu0CcWSx54qq9GKRUYg==, + integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==, } - hasBin: true + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + has-symbols: 1.0.3 + object-keys: 1.1.1 dev: true - /nofilter@3.1.0: + /object.entries@1.1.7: resolution: { - integrity: sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==, + integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==, } - engines: { node: ">=12.19" } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 dev: true - /normalize-path@3.0.0: + /object.fromentries@2.0.7: resolution: { - integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==, + integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==, } - engines: { node: ">=0.10.0" } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 dev: true - /normalize-url@8.0.0: + /object.groupby@1.0.1: resolution: { - integrity: sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==, + integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==, } - engines: { node: ">=14.16" } + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 dev: true - /object-assign@4.1.1: + /object.hasown@1.1.3: resolution: { - integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==, + integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==, } - engines: { node: ">=0.10.0" } + dependencies: + define-properties: 1.2.1 + es-abstract: 1.22.3 dev: true - /object-inspect@1.13.1: + /object.values@1.1.7: resolution: { - integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==, + integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==, } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 dev: true /obliterator@2.0.4: @@ -4851,6 +6953,12 @@ packages: sha.js: 2.4.11 dev: true + /picocolors@1.0.0: + resolution: + { + integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==, + } + /picomatch@2.3.1: resolution: { @@ -4859,6 +6967,22 @@ packages: engines: { node: ">=8.6" } dev: true + /pify@2.3.0: + resolution: + { + integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==, + } + engines: { node: ">=0.10.0" } + dev: true + + /pirates@4.0.6: + resolution: + { + integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==, + } + engines: { node: ">= 6" } + dev: true + /pluralize@8.0.0: resolution: { @@ -4867,6 +6991,110 @@ packages: engines: { node: ">=4" } dev: true + /postcss-import@15.1.0(postcss@8.4.32): + resolution: + { + integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==, + } + engines: { node: ">=14.0.0" } + peerDependencies: + postcss: ^8.0.0 + dependencies: + postcss: 8.4.32 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.8 + dev: true + + /postcss-js@4.0.1(postcss@8.4.32): + resolution: + { + integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==, + } + engines: { node: ^12 || ^14 || >= 16 } + peerDependencies: + postcss: ^8.4.21 + dependencies: + camelcase-css: 2.0.1 + postcss: 8.4.32 + dev: true + + /postcss-load-config@4.0.2(postcss@8.4.32)(ts-node@10.9.2): + resolution: + { + integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==, + } + engines: { node: ">= 14" } + peerDependencies: + postcss: ">=8.0.9" + ts-node: ">=9.0.0" + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + dependencies: + lilconfig: 3.0.0 + postcss: 8.4.32 + ts-node: 10.9.2(@types/node@20.10.4)(typescript@5.3.3) + yaml: 2.3.4 + dev: true + + /postcss-nested@6.0.1(postcss@8.4.32): + resolution: + { + integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==, + } + engines: { node: ">=12.0" } + peerDependencies: + postcss: ^8.2.14 + dependencies: + postcss: 8.4.32 + postcss-selector-parser: 6.0.13 + dev: true + + /postcss-selector-parser@6.0.13: + resolution: + { + integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==, + } + engines: { node: ">=4" } + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + dev: true + + /postcss-value-parser@4.2.0: + resolution: + { + integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==, + } + dev: true + + /postcss@8.4.31: + resolution: + { + integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==, + } + engines: { node: ^10 || ^12 || >=14 } + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.0 + source-map-js: 1.0.2 + dev: false + + /postcss@8.4.32: + resolution: + { + integrity: sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==, + } + engines: { node: ^10 || ^12 || >=14 } + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.0 + source-map-js: 1.0.2 + dev: true + /prelude-ls@1.2.1: resolution: { @@ -4890,6 +7118,62 @@ packages: solidity-comments-extractor: 0.0.7 dev: true + /prettier-plugin-tailwindcss@0.5.9(@trivago/prettier-plugin-sort-imports@4.3.0)(prettier@3.1.1): + resolution: + { + integrity: sha512-9x3t1s2Cjbut2QiP+O0mDqV3gLXTe2CgRlQDgucopVkUdw26sQi53p/q4qvGxMLBDfk/dcTV57Aa/zYwz9l8Ew==, + } + engines: { node: ">=14.21.3" } + peerDependencies: + "@ianvs/prettier-plugin-sort-imports": "*" + "@prettier/plugin-pug": "*" + "@shopify/prettier-plugin-liquid": "*" + "@trivago/prettier-plugin-sort-imports": "*" + prettier: ^3.0 + prettier-plugin-astro: "*" + prettier-plugin-css-order: "*" + prettier-plugin-import-sort: "*" + prettier-plugin-jsdoc: "*" + prettier-plugin-marko: "*" + prettier-plugin-organize-attributes: "*" + prettier-plugin-organize-imports: "*" + prettier-plugin-style-order: "*" + prettier-plugin-svelte: "*" + prettier-plugin-twig-melody: "*" + peerDependenciesMeta: + "@ianvs/prettier-plugin-sort-imports": + optional: true + "@prettier/plugin-pug": + optional: true + "@shopify/prettier-plugin-liquid": + optional: true + "@trivago/prettier-plugin-sort-imports": + optional: true + prettier-plugin-astro: + optional: true + prettier-plugin-css-order: + optional: true + prettier-plugin-import-sort: + optional: true + prettier-plugin-jsdoc: + optional: true + prettier-plugin-marko: + optional: true + prettier-plugin-organize-attributes: + optional: true + prettier-plugin-organize-imports: + optional: true + prettier-plugin-style-order: + optional: true + prettier-plugin-svelte: + optional: true + prettier-plugin-twig-melody: + optional: true + dependencies: + "@trivago/prettier-plugin-sort-imports": 4.3.0(prettier@3.1.1) + prettier: 3.1.1 + dev: true + /prettier@2.8.8: resolution: { @@ -4908,6 +7192,14 @@ packages: hasBin: true dev: true + /prismjs@1.29.0: + resolution: + { + integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==, + } + engines: { node: ">=6" } + dev: false + /process-nextick-args@2.0.1: resolution: { @@ -4924,6 +7216,17 @@ packages: asap: 2.0.6 dev: true + /prop-types@15.8.1: + resolution: + { + integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==, + } + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + dev: true + /proto-list@1.2.4: resolution: { @@ -5006,6 +7309,45 @@ packages: strip-json-comments: 2.0.1 dev: true + /react-dom@18.2.0(react@18.2.0): + resolution: + { + integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==, + } + peerDependencies: + react: ^18.2.0 + dependencies: + loose-envify: 1.4.0 + react: 18.2.0 + scheduler: 0.23.0 + dev: false + + /react-is@16.13.1: + resolution: + { + integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==, + } + dev: true + + /react@18.2.0: + resolution: + { + integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==, + } + engines: { node: ">=0.10.0" } + dependencies: + loose-envify: 1.4.0 + dev: false + + /read-cache@1.0.0: + resolution: + { + integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==, + } + dependencies: + pify: 2.3.0 + dev: true + /readable-stream@2.3.8: resolution: { @@ -5051,6 +7393,40 @@ packages: engines: { node: ">=6" } dev: true + /reflect.getprototypeof@1.0.4: + resolution: + { + integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==, + } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 + globalthis: 1.0.3 + which-builtin-type: 1.1.3 + dev: true + + /regenerator-runtime@0.14.1: + resolution: + { + integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==, + } + dev: true + + /regexp.prototype.flags@1.5.1: + resolution: + { + integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==, + } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + set-function-name: 2.0.1 + dev: true + /registry-auth-token@5.0.2: resolution: { @@ -5130,6 +7506,13 @@ packages: engines: { node: ">=4" } dev: true + /resolve-pkg-maps@1.0.0: + resolution: + { + integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==, + } + dev: true + /resolve@1.17.0: resolution: { @@ -5139,6 +7522,30 @@ packages: path-parse: 1.0.7 dev: true + /resolve@1.22.8: + resolution: + { + integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==, + } + hasBin: true + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /resolve@2.0.0-next.5: + resolution: + { + integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==, + } + hasBin: true + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + /responselike@3.0.0: resolution: { @@ -5222,6 +7629,19 @@ packages: } dev: true + /safe-array-concat@1.0.1: + resolution: + { + integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==, + } + engines: { node: ">=0.4" } + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + has-symbols: 1.0.3 + isarray: 2.0.5 + dev: true + /safe-buffer@5.1.2: resolution: { @@ -5232,8 +7652,19 @@ packages: /safe-buffer@5.2.1: resolution: { - integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==, + integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==, + } + dev: true + + /safe-regex-test@1.0.0: + resolution: + { + integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==, } + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + is-regex: 1.1.4 dev: true /safer-buffer@2.1.2: @@ -5243,6 +7674,15 @@ packages: } dev: true + /scheduler@0.23.0: + resolution: + { + integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==, + } + dependencies: + loose-envify: 1.4.0 + dev: false + /scrypt-js@3.0.1: resolution: { @@ -5288,7 +7728,6 @@ packages: hasBin: true dependencies: lru-cache: 6.0.0 - dev: true /serialize-javascript@6.0.0: resolution: @@ -5312,6 +7751,18 @@ packages: has-property-descriptors: 1.0.1 dev: true + /set-function-name@2.0.1: + resolution: + { + integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==, + } + engines: { node: ">= 0.4" } + dependencies: + define-data-property: 1.1.1 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.1 + dev: true + /setimmediate@1.0.5: resolution: { @@ -5347,6 +7798,39 @@ packages: crypt: 0.0.2 dev: true + /sharp@0.33.0: + resolution: + { + integrity: sha512-99DZKudjm/Rmz+M0/26t4DKpXyywAOJaayGS9boEn7FvgtG0RYBi46uPE2c+obcJRtA3AZa0QwJot63gJQ1F0Q==, + } + engines: { libvips: ">=8.15.0", node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + requiresBuild: true + dependencies: + color: 4.2.3 + detect-libc: 2.0.2 + semver: 7.5.4 + optionalDependencies: + "@img/sharp-darwin-arm64": 0.33.0 + "@img/sharp-darwin-x64": 0.33.0 + "@img/sharp-libvips-darwin-arm64": 1.0.0 + "@img/sharp-libvips-darwin-x64": 1.0.0 + "@img/sharp-libvips-linux-arm": 1.0.0 + "@img/sharp-libvips-linux-arm64": 1.0.0 + "@img/sharp-libvips-linux-s390x": 1.0.0 + "@img/sharp-libvips-linux-x64": 1.0.0 + "@img/sharp-libvips-linuxmusl-arm64": 1.0.0 + "@img/sharp-libvips-linuxmusl-x64": 1.0.0 + "@img/sharp-linux-arm": 0.33.0 + "@img/sharp-linux-arm64": 0.33.0 + "@img/sharp-linux-s390x": 0.33.0 + "@img/sharp-linux-x64": 0.33.0 + "@img/sharp-linuxmusl-arm64": 0.33.0 + "@img/sharp-linuxmusl-x64": 0.33.0 + "@img/sharp-wasm32": 0.33.0 + "@img/sharp-win32-ia32": 0.33.0 + "@img/sharp-win32-x64": 0.33.0 + dev: false + /shebang-command@2.0.0: resolution: { @@ -5376,6 +7860,15 @@ packages: object-inspect: 1.13.1 dev: true + /simple-swizzle@0.2.2: + resolution: + { + integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==, + } + dependencies: + is-arrayish: 0.3.2 + dev: false + /slash@3.0.0: resolution: { @@ -5455,6 +7948,13 @@ packages: } dev: true + /source-map-js@1.0.2: + resolution: + { + integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==, + } + engines: { node: ">=0.10.0" } + /source-map-support@0.5.21: resolution: { @@ -5465,6 +7965,14 @@ packages: source-map: 0.6.1 dev: true + /source-map@0.5.7: + resolution: + { + integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==, + } + engines: { node: ">=0.10.0" } + dev: true + /source-map@0.6.1: resolution: { @@ -5491,6 +7999,14 @@ packages: engines: { node: ">= 0.8" } dev: true + /streamsearch@1.1.0: + resolution: + { + integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==, + } + engines: { node: ">=10.0.0" } + dev: false + /string-format@2.0.0: resolution: { @@ -5521,6 +8037,57 @@ packages: strip-ansi: 6.0.1 dev: true + /string.prototype.matchall@4.0.10: + resolution: + { + integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==, + } + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 + has-symbols: 1.0.3 + internal-slot: 1.0.6 + regexp.prototype.flags: 1.5.1 + set-function-name: 2.0.1 + side-channel: 1.0.4 + dev: true + + /string.prototype.trim@1.2.8: + resolution: + { + integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==, + } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /string.prototype.trimend@1.0.7: + resolution: + { + integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==, + } + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /string.prototype.trimstart@1.0.7: + resolution: + { + integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==, + } + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + /string_decoder@1.1.1: resolution: { @@ -5559,6 +8126,14 @@ packages: ansi-regex: 5.0.1 dev: true + /strip-bom@3.0.0: + resolution: + { + integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==, + } + engines: { node: ">=4" } + dev: true + /strip-hex-prefix@1.0.0: resolution: { @@ -5585,6 +8160,43 @@ packages: engines: { node: ">=8" } dev: true + /styled-jsx@5.1.1(react@18.2.0): + resolution: + { + integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==, + } + engines: { node: ">= 12.0.0" } + peerDependencies: + "@babel/core": "*" + babel-plugin-macros: "*" + react: ">= 16.8.0 || 17.x.x || ^18.0.0-0" + peerDependenciesMeta: + "@babel/core": + optional: true + babel-plugin-macros: + optional: true + dependencies: + client-only: 0.0.1 + react: 18.2.0 + dev: false + + /sucrase@3.34.0: + resolution: + { + integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==, + } + engines: { node: ">=8" } + hasBin: true + dependencies: + "@jridgewell/gen-mapping": 0.3.3 + commander: 4.1.1 + glob: 7.1.6 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.6 + ts-interface-checker: 0.1.13 + dev: true + /supports-color@5.5.0: resolution: { @@ -5615,6 +8227,14 @@ packages: has-flag: 4.0.0 dev: true + /supports-preserve-symlinks-flag@1.0.0: + resolution: + { + integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==, + } + engines: { node: ">= 0.4" } + dev: true + /sync-request@6.1.0: resolution: { @@ -5663,6 +8283,48 @@ packages: strip-ansi: 6.0.1 dev: true + /tailwindcss@3.3.6(ts-node@10.9.2): + resolution: + { + integrity: sha512-AKjF7qbbLvLaPieoKeTjG1+FyNZT6KaJMJPFeQyLfIp7l82ggH1fbHJSsYIvnbTFQOlkh+gBYpyby5GT1LIdLw==, + } + engines: { node: ">=14.0.0" } + hasBin: true + dependencies: + "@alloc/quick-lru": 5.2.0 + arg: 5.0.2 + chokidar: 3.5.3 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.2 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.21.0 + lilconfig: 2.1.0 + micromatch: 4.0.5 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.0.0 + postcss: 8.4.32 + postcss-import: 15.1.0(postcss@8.4.32) + postcss-js: 4.0.1(postcss@8.4.32) + postcss-load-config: 4.0.2(postcss@8.4.32)(ts-node@10.9.2) + postcss-nested: 6.0.1(postcss@8.4.32) + postcss-selector-parser: 6.0.13 + resolve: 1.22.8 + sucrase: 3.34.0 + transitivePeerDependencies: + - ts-node + dev: true + + /tapable@2.2.1: + resolution: + { + integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==, + } + engines: { node: ">=6" } + dev: true + /text-table@0.2.0: resolution: { @@ -5690,6 +8352,25 @@ packages: qs: 6.11.2 dev: true + /thenify-all@1.6.0: + resolution: + { + integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==, + } + engines: { node: ">=0.8" } + dependencies: + thenify: 3.3.1 + dev: true + + /thenify@3.3.1: + resolution: + { + integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==, + } + dependencies: + any-promise: 1.3.0 + dev: true + /tmp@0.0.33: resolution: { @@ -5700,6 +8381,14 @@ packages: os-tmpdir: 1.0.2 dev: true + /to-fast-properties@2.0.0: + resolution: + { + integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==, + } + engines: { node: ">=4" } + dev: true + /to-regex-range@5.0.1: resolution: { @@ -5754,6 +8443,13 @@ packages: typescript: 5.3.3 dev: true + /ts-interface-checker@0.1.13: + resolution: + { + integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==, + } + dev: true + /ts-node@10.9.2(@types/node@20.10.4)(typescript@5.3.3): resolution: { @@ -5788,6 +8484,18 @@ packages: yn: 3.1.1 dev: true + /tsconfig-paths@3.15.0: + resolution: + { + integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==, + } + dependencies: + "@types/json5": 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + dev: true + /tslib@1.14.1: resolution: { @@ -5802,6 +8510,13 @@ packages: } dev: true + /tslib@2.6.2: + resolution: + { + integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==, + } + dev: false + /tsort@0.0.1: resolution: { @@ -5881,6 +8596,56 @@ packages: - supports-color dev: true + /typed-array-buffer@1.0.0: + resolution: + { + integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==, + } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + is-typed-array: 1.1.12 + dev: true + + /typed-array-byte-length@1.0.0: + resolution: + { + integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==, + } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.5 + for-each: 0.3.3 + has-proto: 1.0.1 + is-typed-array: 1.1.12 + dev: true + + /typed-array-byte-offset@1.0.0: + resolution: + { + integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==, + } + engines: { node: ">= 0.4" } + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.5 + for-each: 0.3.3 + has-proto: 1.0.1 + is-typed-array: 1.1.12 + dev: true + + /typed-array-length@1.0.4: + resolution: + { + integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==, + } + dependencies: + call-bind: 1.0.5 + for-each: 0.3.3 + is-typed-array: 1.1.12 + dev: true + /typedarray@0.0.6: resolution: { @@ -5913,6 +8678,18 @@ packages: engines: { node: ">=8" } dev: true + /unbox-primitive@1.0.2: + resolution: + { + integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==, + } + dependencies: + call-bind: 1.0.5 + has-bigints: 1.0.2 + has-symbols: 1.0.3 + which-boxed-primitive: 1.0.2 + dev: true + /undici-types@5.26.5: resolution: { @@ -5954,6 +8731,20 @@ packages: engines: { node: ">= 0.8" } dev: true + /update-browserslist-db@1.0.13(browserslist@4.22.2): + resolution: + { + integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==, + } + hasBin: true + peerDependencies: + browserslist: ">= 4.21.0" + dependencies: + browserslist: 4.22.2 + escalade: 3.1.1 + picocolors: 1.0.0 + dev: true + /uri-js@4.4.1: resolution: { @@ -5985,6 +8776,77 @@ packages: } dev: true + /watchpack@2.4.0: + resolution: + { + integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==, + } + engines: { node: ">=10.13.0" } + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + dev: false + + /which-boxed-primitive@1.0.2: + resolution: + { + integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==, + } + dependencies: + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-number-object: 1.0.7 + is-string: 1.0.7 + is-symbol: 1.0.4 + dev: true + + /which-builtin-type@1.1.3: + resolution: + { + integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==, + } + engines: { node: ">= 0.4" } + dependencies: + function.prototype.name: 1.1.6 + has-tostringtag: 1.0.0 + is-async-function: 2.0.0 + is-date-object: 1.0.5 + is-finalizationregistry: 1.0.2 + is-generator-function: 1.0.10 + is-regex: 1.1.4 + is-weakref: 1.0.2 + isarray: 2.0.5 + which-boxed-primitive: 1.0.2 + which-collection: 1.0.1 + which-typed-array: 1.1.13 + dev: true + + /which-collection@1.0.1: + resolution: + { + integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==, + } + dependencies: + is-map: 2.0.2 + is-set: 2.0.2 + is-weakmap: 2.0.1 + is-weakset: 2.0.2 + dev: true + + /which-typed-array@1.1.13: + resolution: + { + integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==, + } + engines: { node: ">= 0.4" } + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.5 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.0 + dev: true + /which@2.0.2: resolution: { @@ -6101,6 +8963,13 @@ packages: { integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==, } + + /yaml@2.3.4: + resolution: + { + integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==, + } + engines: { node: ">= 14" } dev: true /yargs-parser@20.2.4: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 00000000..b6ad22ca --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,2 @@ +packages: + - "interface"