diff --git a/.eslintrc.js b/.eslintrc.js index d4366e42..82a17395 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,5 +1,3 @@ -const { off } = require("process") - module.exports = { parser: '@typescript-eslint/parser', parserOptions: { @@ -32,7 +30,6 @@ module.exports = { 'import/no-named-as-default-member': 'off', 'import/export': 'off' - // 'import/order': [ // 'warn', // { @@ -43,6 +40,5 @@ module.exports = { // } // }, // ] - } } diff --git a/examples/next/.eslintrc.json b/examples/next/.eslintrc.json new file mode 100644 index 00000000..bffb357a --- /dev/null +++ b/examples/next/.eslintrc.json @@ -0,0 +1,3 @@ +{ + "extends": "next/core-web-vitals" +} diff --git a/examples/next/.gitignore b/examples/next/.gitignore new file mode 100644 index 00000000..fd3dbb57 --- /dev/null +++ b/examples/next/.gitignore @@ -0,0 +1,36 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js +.yarn/install-state.gz + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# local env files +.env*.local + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/examples/next/README.md b/examples/next/README.md new file mode 100644 index 00000000..c4033664 --- /dev/null +++ b/examples/next/README.md @@ -0,0 +1,36 @@ +This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app). + +## Getting Started + +First, run the development server: + +```bash +npm run dev +# or +yarn dev +# or +pnpm dev +# or +bun dev +``` + +Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. + +You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file. + +This project uses [`next/font`](https://nextjs.org/docs/basic-features/font-optimization) to automatically optimize and load Inter, a custom Google Font. + +## Learn More + +To learn more about Next.js, take a look at the following resources: + +- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. +- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. + +You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome! + +## Deploy on Vercel + +The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. + +Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details. diff --git a/examples/next/next.config.mjs b/examples/next/next.config.mjs new file mode 100644 index 00000000..6ae7e1af --- /dev/null +++ b/examples/next/next.config.mjs @@ -0,0 +1,10 @@ +import { createVanillaExtractPlugin } from '@vanilla-extract/next-plugin' + +const withVanillaExtract = createVanillaExtractPlugin() + +/** @type {import('next').NextConfig} */ +const nextConfig = { + // transpilePackages: ['@0xsequence/kit', '@0xsequence/kit-wallet', '@0xsequence/kit-connectors', '@0xsequence/checkout'] +} + +export default withVanillaExtract(nextConfig) diff --git a/examples/next/package.json b/examples/next/package.json new file mode 100644 index 00000000..61afd62d --- /dev/null +++ b/examples/next/package.json @@ -0,0 +1,36 @@ +{ + "name": "@0xsequence/kit-example-next", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "next lint" + }, + "dependencies": { + "@0xsequence/design-system": "^1.4.7", + "@0xsequence/kit": "workspace:*", + "@0xsequence/kit-checkout": "workspace:*", + "@0xsequence/kit-connectors": "workspace:*", + "@0xsequence/kit-wallet": "workspace:*", + "@0xsequence/network": "^1.9.19", + "@tanstack/react-query": "^5.29.2", + "next": "14.2.3", + "react": "^18", + "react-dom": "^18", + "viem": "^2.5.7", + "wagmi": "^2.5.7" + }, + "devDependencies": { + "@types/node": "^20", + "@types/react": "^18", + "@types/react-dom": "^18", + "@vanilla-extract/next-plugin": "^2.4.0", + "eslint": "^8", + "eslint-config-next": "14.2.3", + "postcss": "^8", + "tailwindcss": "^3.4.3", + "typescript": "^5" + } +} diff --git a/examples/next/postcss.config.mjs b/examples/next/postcss.config.mjs new file mode 100644 index 00000000..1a69fd2a --- /dev/null +++ b/examples/next/postcss.config.mjs @@ -0,0 +1,8 @@ +/** @type {import('postcss-load-config').Config} */ +const config = { + plugins: { + tailwindcss: {}, + }, +}; + +export default config; diff --git a/examples/next/public/next.svg b/examples/next/public/next.svg new file mode 100644 index 00000000..5174b28c --- /dev/null +++ b/examples/next/public/next.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/examples/next/public/vercel.svg b/examples/next/public/vercel.svg new file mode 100644 index 00000000..d2f84222 --- /dev/null +++ b/examples/next/public/vercel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/examples/next/src/app/WalletOptions.tsx b/examples/next/src/app/WalletOptions.tsx new file mode 100644 index 00000000..693db88f --- /dev/null +++ b/examples/next/src/app/WalletOptions.tsx @@ -0,0 +1,17 @@ +'use client' + +import { Connector, useConnect } from 'wagmi' + +export const WalletOptions = () => { + const { connectors, connect } = useConnect() + + return ( +
+ {connectors.map(connector => ( + + ))} +
+ ) +} diff --git a/examples/next/src/app/Web3Provider.tsx b/examples/next/src/app/Web3Provider.tsx new file mode 100644 index 00000000..97608622 --- /dev/null +++ b/examples/next/src/app/Web3Provider.tsx @@ -0,0 +1,62 @@ +'use client' + +import { QueryClient, QueryClientProvider } from '@tanstack/react-query' +import { WagmiProvider } from 'wagmi' +// import { KitProvider } from '@0xsequence/kit' + +import { config } from './config' + +const queryClient = new QueryClient() + +// const kitConfig: KitConfig = { +// defaultTheme: 'dark', +// signIn: { +// projectName: 'Kit Demo' +// // logoUrl: 'sw-logo-white.svg', +// // useMock: isDebugMode +// }, +// displayedAssets: [ +// // Native token +// { +// contractAddress: '0x0000000000000000000000000000000000000000', +// chainId: 42170 +// }, +// // Native token +// { +// contractAddress: '0x0000000000000000000000000000000000000000', +// chainId: 421614 +// }, +// // Waas demo NFT +// { +// contractAddress: '0x0d402c63cae0200f0723b3e6fa0914627a48462e', +// chainId: 42170 +// }, +// // Waas demo NFT +// { +// contractAddress: '0x0d402c63cae0200f0723b3e6fa0914627a48462e', +// chainId: 421614 +// }, +// // Skyweaver assets +// { +// contractAddress: '0x631998e91476da5b870d741192fc5cbc55f5a52e', +// chainId: 137 +// } +// ] +// } + +export interface Web3ProviderProps { + children: React.ReactNode +} + +export const Web3Provider = (props: Web3ProviderProps) => { + const { children } = props + + return ( + + + {/* {children} */} + {children} + + + ) +} diff --git a/examples/next/src/app/config.ts b/examples/next/src/app/config.ts new file mode 100644 index 00000000..9edbe4b2 --- /dev/null +++ b/examples/next/src/app/config.ts @@ -0,0 +1,44 @@ +'use client' + +import { findNetworkConfig, allNetworks } from '@0xsequence/network' +import { CreateConnectorFn, createConfig, http } from 'wagmi' +import { Transport } from 'viem' +import { arbitrumNova, arbitrumSepolia, mainnet, polygon } from 'viem/chains' +import { getDefaultConnectors } from '@0xsequence/kit-connectors' + +const walletConnectProjectId = 'c65a6cb1aa83c4e24500130f23a437d8' +const projectAccessKey = 'AQAAAAAAAEGvyZiWA9FMslYeG_yayXaHnSI' + +const chains = [arbitrumNova, arbitrumSepolia, mainnet, polygon] as const +const transports = chains.reduce>((acc, chain) => { + const network = findNetworkConfig(allNetworks, chain.id) + + if (network) { + acc[chain.id] = http(network.rpcUrl) + } + + return acc +}, {}) + +const connectors: CreateConnectorFn[] = [ + ...getDefaultConnectors({ + walletConnectProjectId, + defaultChainId: arbitrumNova.id, + appName: 'demo app', + projectAccessKey + }) + // ...(isDebugMode + // ? getKitConnectWallets(projectAccessKey, [ + // mock({ + // accounts: ['0xCb88b6315507e9d8c35D81AFB7F190aB6c3227C9'] + // }) + // ]) + // : []) +] + +export const config = createConfig({ + chains, + transports, + connectors, + ssr: true // For Next.js SSR support +}) diff --git a/examples/next/src/app/favicon.ico b/examples/next/src/app/favicon.ico new file mode 100644 index 00000000..718d6fea Binary files /dev/null and b/examples/next/src/app/favicon.ico differ diff --git a/examples/next/src/app/globals.css b/examples/next/src/app/globals.css new file mode 100644 index 00000000..875c01e8 --- /dev/null +++ b/examples/next/src/app/globals.css @@ -0,0 +1,33 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +:root { + --foreground-rgb: 0, 0, 0; + --background-start-rgb: 214, 219, 220; + --background-end-rgb: 255, 255, 255; +} + +@media (prefers-color-scheme: dark) { + :root { + --foreground-rgb: 255, 255, 255; + --background-start-rgb: 0, 0, 0; + --background-end-rgb: 0, 0, 0; + } +} + +body { + color: rgb(var(--foreground-rgb)); + background: linear-gradient( + to bottom, + transparent, + rgb(var(--background-end-rgb)) + ) + rgb(var(--background-start-rgb)); +} + +@layer utilities { + .text-balance { + text-wrap: balance; + } +} diff --git a/examples/next/src/app/layout.tsx b/examples/next/src/app/layout.tsx new file mode 100644 index 00000000..325bfbb2 --- /dev/null +++ b/examples/next/src/app/layout.tsx @@ -0,0 +1,27 @@ +import type { Metadata } from 'next' +import { Inter } from 'next/font/google' +import './globals.css' +import '@0xsequence/design-system/styles.css' + +import { Web3Provider } from './Web3Provider' + +const inter = Inter({ subsets: ['latin'] }) + +export const metadata: Metadata = { + title: 'Create Next App', + description: 'Generated by create next app' +} + +export default function RootLayout({ + children +}: Readonly<{ + children: React.ReactNode +}>) { + return ( + + + {children} + + + ) +} diff --git a/examples/next/src/app/page.tsx b/examples/next/src/app/page.tsx new file mode 100644 index 00000000..324b9bd5 --- /dev/null +++ b/examples/next/src/app/page.tsx @@ -0,0 +1,102 @@ +import Image from 'next/image' +import { WalletOptions } from './WalletOptions' + +export default function Home() { + return ( +
+
+

+ Get started by editing  + src/app/page.tsx +

+
+ + By Vercel Logo + +
+
+ +
+ Next.js Logo +
+ + + +
+ +

+ Docs{' '} + + -> + +

+

Find in-depth information about Next.js features and API.

+
+ + +

+ Learn{' '} + + -> + +

+

Learn about Next.js in an interactive course with quizzes!

+
+ + +

+ Templates{' '} + + -> + +

+

Explore starter templates for Next.js.

+
+ + +

+ Deploy{' '} + + -> + +

+

+ Instantly deploy your Next.js site to a shareable URL with Vercel. +

+
+
+
+ ) +} diff --git a/examples/next/tailwind.config.ts b/examples/next/tailwind.config.ts new file mode 100644 index 00000000..e9a0944e --- /dev/null +++ b/examples/next/tailwind.config.ts @@ -0,0 +1,20 @@ +import type { Config } from "tailwindcss"; + +const config: Config = { + content: [ + "./src/pages/**/*.{js,ts,jsx,tsx,mdx}", + "./src/components/**/*.{js,ts,jsx,tsx,mdx}", + "./src/app/**/*.{js,ts,jsx,tsx,mdx}", + ], + 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: [], +}; +export default config; diff --git a/examples/next/tsconfig.json b/examples/next/tsconfig.json new file mode 100644 index 00000000..7b285893 --- /dev/null +++ b/examples/next/tsconfig.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "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/package.json b/package.json index 0d8b94c5..359682d8 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,10 @@ "build:react": "pnpm --filter @0xsequence/kit-example-react build", "start:react-waas": "pnpm --filter @0xsequence/kit-example-react-waas start", "serve:react-waas": "pnpm --filter @0xsequence/kit-example-react-waas serve", - "build:react-waas": "pnpm --filter @0xsequence/kit-example-react-waas build" + "build:react-waas": "pnpm --filter @0xsequence/kit-example-react-waas build", + "start:next": "pnpm --filter @0xsequence/kit-example-next dev", + "serve:next": "pnpm --filter @0xsequence/kit-example-next start", + "build:next": "pnpm --filter @0xsequence/kit-example-next build" }, "devDependencies": { "@0xsequence/kit": "workspace:*", diff --git a/packages/connectors/src/connectors/apple/apple.ts b/packages/connectors/src/connectors/apple/apple.ts index 22162b23..2e4950ba 100644 --- a/packages/connectors/src/connectors/apple/apple.ts +++ b/packages/connectors/src/connectors/apple/apple.ts @@ -1,13 +1,11 @@ import type { Wallet } from '@0xsequence/kit' -import { CreateConnectorFn } from 'wagmi' - import { getAppleLogo, getAppleMonochromeLogo } from './AppleLogo' import { sequenceWallet, BaseSequenceConnectorOptions } from '../wagmiConnectors' export type AppleOptions = BaseSequenceConnectorOptions -export const apple = (options: AppleOptions) => ({ +export const apple = (options: AppleOptions): Wallet => ({ id: 'apple', isSequenceBased: true, logoDark: getAppleLogo({ isDarkMode: true }), @@ -16,7 +14,7 @@ export const apple = (options: AppleOptions) => ({ monochromeLogoLight: getAppleMonochromeLogo({ isDarkMode: false }), // iconBackground: '#fff', name: 'Apple', - createConnector: (() => { + createConnector: () => { const connector = sequenceWallet({ ...options, connect: { @@ -28,5 +26,5 @@ export const apple = (options: AppleOptions) => ({ } }) return connector - }) as () => CreateConnectorFn + } }) diff --git a/packages/connectors/src/connectors/apple/appleWaas.ts b/packages/connectors/src/connectors/apple/appleWaas.ts index 08b9532b..0b47167c 100644 --- a/packages/connectors/src/connectors/apple/appleWaas.ts +++ b/packages/connectors/src/connectors/apple/appleWaas.ts @@ -1,4 +1,4 @@ -import { CreateConnectorFn } from 'wagmi' +import { Wallet } from '@0xsequence/kit' import { getAppleLogo, getAppleMonochromeLogo } from './AppleLogo' @@ -6,18 +6,18 @@ import { sequenceWaasWallet, BaseSequenceWaasConnectorOptions } from '../wagmiCo export type AppleWaasOptions = Omit -export const appleWaas = (options: AppleWaasOptions) => ({ +export const appleWaas = (options: AppleWaasOptions): Wallet => ({ id: 'apple-waas', logoDark: getAppleLogo({ isDarkMode: true }), logoLight: getAppleLogo({ isDarkMode: false }), monochromeLogoDark: getAppleMonochromeLogo({ isDarkMode: true }), monochromeLogoLight: getAppleMonochromeLogo({ isDarkMode: false }), name: 'Apple', - createConnector: (() => { + createConnector: () => { const connector = sequenceWaasWallet({ ...options, loginType: 'apple' }) return connector - }) as () => CreateConnectorFn + } }) diff --git a/packages/connectors/src/connectors/discord/discord.ts b/packages/connectors/src/connectors/discord/discord.ts index 324249f1..65b8714e 100644 --- a/packages/connectors/src/connectors/discord/discord.ts +++ b/packages/connectors/src/connectors/discord/discord.ts @@ -1,12 +1,11 @@ -import { CreateConnectorFn } from 'wagmi' - import { getDiscordLogo } from './DiscordLogo' import { sequenceWallet, BaseSequenceConnectorOptions } from '../wagmiConnectors' +import { Wallet } from '@0xsequence/kit' export interface DiscordOptions extends BaseSequenceConnectorOptions {} -export const discord = (options: DiscordOptions) => ({ +export const discord = (options: DiscordOptions): Wallet => ({ id: 'discord', isSequenceBased: true, logoDark: getDiscordLogo({ isDarkMode: true }), @@ -15,7 +14,7 @@ export const discord = (options: DiscordOptions) => ({ monochromeLogoLight: getDiscordLogo({ isDarkMode: false }), // iconBackground: '#fff', name: 'Discord', - createConnector: (() => { + createConnector: () => { const connector = sequenceWallet({ ...options, connect: { @@ -27,5 +26,5 @@ export const discord = (options: DiscordOptions) => ({ } }) return connector - }) as () => CreateConnectorFn + } }) diff --git a/packages/connectors/src/connectors/email/email.ts b/packages/connectors/src/connectors/email/email.ts index 93c6b1d3..aa77c8d7 100644 --- a/packages/connectors/src/connectors/email/email.ts +++ b/packages/connectors/src/connectors/email/email.ts @@ -1,21 +1,20 @@ -import { CreateConnectorFn } from 'wagmi' - import { getEmailLogo } from './EmailLogo' import { sequenceWallet, BaseSequenceConnectorOptions } from '../wagmiConnectors' +import { Wallet } from '@0xsequence/kit' export const EMAIL_CONNECTOR_LOCAL_STORAGE_KEY = '@sequence.kit.connector.email' export interface EmailOptions extends BaseSequenceConnectorOptions {} -export const email = (options: EmailOptions) => ({ +export const email = (options: EmailOptions): Wallet => ({ id: 'email', isSequenceBased: true, logoDark: getEmailLogo({ isDarkMode: true }), logoLight: getEmailLogo({ isDarkMode: false }), // iconBackground: '#fff', name: 'Email', - createConnector: (() => { + createConnector: () => { const email = localStorage.getItem(EMAIL_CONNECTOR_LOCAL_STORAGE_KEY) const connector = sequenceWallet({ @@ -32,5 +31,5 @@ export const email = (options: EmailOptions) => ({ }) return connector - }) as () => CreateConnectorFn + } }) diff --git a/packages/connectors/src/connectors/email/emailWaas.ts b/packages/connectors/src/connectors/email/emailWaas.ts index 4a67e1d5..41bb673e 100644 --- a/packages/connectors/src/connectors/email/emailWaas.ts +++ b/packages/connectors/src/connectors/email/emailWaas.ts @@ -1,21 +1,20 @@ -import { CreateConnectorFn } from 'wagmi' - import { getEmailLogo } from './EmailLogo' import { sequenceWaasWallet, BaseSequenceWaasConnectorOptions } from '../wagmiConnectors/sequenceWaasConnector' +import { Wallet } from '@0xsequence/kit' export type EmailWaasOptions = Omit -export const emailWaas = (options: EmailWaasOptions) => ({ +export const emailWaas = (options: EmailWaasOptions): Wallet => ({ id: 'email-waas', logoDark: getEmailLogo({ isDarkMode: true }), logoLight: getEmailLogo({ isDarkMode: false }), name: 'Email', - createConnector: (() => { + createConnector: () => { const connector = sequenceWaasWallet({ ...options, loginType: 'email' }) return connector - }) as () => CreateConnectorFn + } }) diff --git a/packages/connectors/src/connectors/facebook/facebook.ts b/packages/connectors/src/connectors/facebook/facebook.ts index e7d5cad9..c661cc52 100644 --- a/packages/connectors/src/connectors/facebook/facebook.ts +++ b/packages/connectors/src/connectors/facebook/facebook.ts @@ -1,4 +1,3 @@ -import { CreateConnectorFn } from 'wagmi' import type { Wallet } from '@0xsequence/kit' import { FacebookLogo, getFacebookMonochromeLogo } from './FacebookLogo' @@ -7,7 +6,7 @@ import { sequenceWallet, BaseSequenceConnectorOptions } from '../wagmiConnectors export interface FacebookOptions extends BaseSequenceConnectorOptions {} -export const facebook = (options: FacebookOptions) => ({ +export const facebook = (options: FacebookOptions): Wallet => ({ id: 'facebook', isSequenceBased: true, logoDark: FacebookLogo, @@ -16,7 +15,7 @@ export const facebook = (options: FacebookOptions) => ({ monochromeLogoLight: getFacebookMonochromeLogo({ isDarkMode: false }), // iconBackground: '#fff', name: 'Facebook', - createConnector: (() => { + createConnector: () => { const connector = sequenceWallet({ ...options, connect: { @@ -28,5 +27,5 @@ export const facebook = (options: FacebookOptions) => ({ } }) return connector - }) as () => CreateConnectorFn + } }) diff --git a/packages/connectors/src/connectors/google/google.ts b/packages/connectors/src/connectors/google/google.ts index c7b438cd..2de33124 100644 --- a/packages/connectors/src/connectors/google/google.ts +++ b/packages/connectors/src/connectors/google/google.ts @@ -1,12 +1,11 @@ -import { CreateConnectorFn } from 'wagmi' - import { GoogleLogo, getMonochromeGoogleLogo } from './GoogleLogo' import { sequenceWallet, BaseSequenceConnectorOptions } from '../wagmiConnectors' +import { Wallet } from '@0xsequence/kit' export type GoogleOptions = BaseSequenceConnectorOptions -export const google = (options: GoogleOptions) => ({ +export const google = (options: GoogleOptions): Wallet => ({ id: 'google', isSequenceBased: true, logoDark: GoogleLogo, @@ -14,7 +13,7 @@ export const google = (options: GoogleOptions) => ({ monochromeLogoDark: getMonochromeGoogleLogo({ isDarkMode: true }), monochromeLogoLight: getMonochromeGoogleLogo({ isDarkMode: false }), name: 'Google', - createConnector: (() => { + createConnector: () => { const connector = sequenceWallet({ ...options, // @ts-ignore @@ -27,5 +26,5 @@ export const google = (options: GoogleOptions) => ({ } }) return connector - }) as () => CreateConnectorFn + } }) diff --git a/packages/connectors/src/connectors/google/googleWaas.ts b/packages/connectors/src/connectors/google/googleWaas.ts index 69150564..d561e222 100644 --- a/packages/connectors/src/connectors/google/googleWaas.ts +++ b/packages/connectors/src/connectors/google/googleWaas.ts @@ -1,23 +1,22 @@ -import { CreateConnectorFn } from 'wagmi' - import { GoogleLogo, getMonochromeGoogleLogo } from './GoogleLogo' import { sequenceWaasWallet, BaseSequenceWaasConnectorOptions } from '../wagmiConnectors/sequenceWaasConnector' +import { Wallet } from '@0xsequence/kit' export type GoogleWaasOptions = Omit -export const googleWaas = (options: GoogleWaasOptions) => ({ +export const googleWaas = (options: GoogleWaasOptions): Wallet => ({ id: 'google-waas', logoDark: GoogleLogo, logoLight: GoogleLogo, monochromeLogoDark: getMonochromeGoogleLogo({ isDarkMode: true }), monochromeLogoLight: getMonochromeGoogleLogo({ isDarkMode: false }), name: 'Google', - createConnector: (() => { + createConnector: () => { const connector = sequenceWaasWallet({ ...options, loginType: 'google' }) return connector - }) as () => CreateConnectorFn + } }) diff --git a/packages/connectors/src/connectors/injected/injected.ts b/packages/connectors/src/connectors/injected/injected.ts index 5a874e4e..cdc08356 100644 --- a/packages/connectors/src/connectors/injected/injected.ts +++ b/packages/connectors/src/connectors/injected/injected.ts @@ -3,6 +3,7 @@ import { ethers } from 'ethers' import { injected as injectedBase } from 'wagmi/connectors' import { InjectedLogo } from './InjectedLogo' +import { Wallet } from '@0xsequence/kit' declare global { interface Window { @@ -29,7 +30,7 @@ const getInjectedWalletInformation = (): InjectedWalletInformation => { } } -export const injected = () => { +export const injected = (): Wallet => { const { name, logoDark, logoLight } = getInjectedWalletInformation() return { diff --git a/packages/connectors/src/connectors/metamask/metamask.ts b/packages/connectors/src/connectors/metamask/metamask.ts index ef428d6e..52691d99 100644 --- a/packages/connectors/src/connectors/metamask/metamask.ts +++ b/packages/connectors/src/connectors/metamask/metamask.ts @@ -1,8 +1,9 @@ import { injected } from 'wagmi/connectors' import { MetamaskLogo } from './MetamaskLogo' +import { Wallet } from '@0xsequence/kit' -export const metamask = () => ({ +export const metamask = (): Wallet => ({ id: 'metamask', logoDark: MetamaskLogo, logoLight: MetamaskLogo, diff --git a/packages/connectors/src/connectors/mock/mock.ts b/packages/connectors/src/connectors/mock/mock.ts index 0f5b1dd8..7ba896c8 100644 --- a/packages/connectors/src/connectors/mock/mock.ts +++ b/packages/connectors/src/connectors/mock/mock.ts @@ -1,17 +1,17 @@ -import { CreateConnectorFn } from 'wagmi' import { mock as mockBase, MockParameters } from 'wagmi/connectors' import { SequenceLogo } from '../sequence/SequenceLogo' +import { Wallet } from '@0xsequence/kit' -export const mock = (options: MockParameters) => ({ +export const mock = (options: MockParameters): Wallet => ({ id: 'mock', isSequenceBased: true, logoDark: SequenceLogo, logoLight: SequenceLogo, // iconBackground: '#777', name: 'Mock', - createConnector: (() => { + createConnector: () => { const connector = mockBase(options) return connector - }) as () => CreateConnectorFn + } }) diff --git a/packages/connectors/src/connectors/sequence/sequence.ts b/packages/connectors/src/connectors/sequence/sequence.ts index 6b67c51a..31b9c238 100644 --- a/packages/connectors/src/connectors/sequence/sequence.ts +++ b/packages/connectors/src/connectors/sequence/sequence.ts @@ -1,4 +1,3 @@ -import { CreateConnectorFn } from 'wagmi' import type { Wallet } from '@0xsequence/kit' import { sequenceWallet, BaseSequenceConnectorOptions } from '../wagmiConnectors' @@ -6,17 +5,17 @@ import { SequenceLogo } from './SequenceLogo' export interface SequenceOptions extends BaseSequenceConnectorOptions {} -export const sequence = (options: SequenceOptions) => ({ +export const sequence = (options: SequenceOptions): Wallet => ({ id: 'sequence', isSequenceBased: true, logoDark: SequenceLogo, logoLight: SequenceLogo, // iconBackground: '#777', name: 'Sequence', - createConnector: (() => { + createConnector: () => { const connector = sequenceWallet({ ...options }) return connector - }) as () => CreateConnectorFn + } }) diff --git a/packages/connectors/src/connectors/twitch/twitch.ts b/packages/connectors/src/connectors/twitch/twitch.ts index 3bb77cfa..2b4bd196 100644 --- a/packages/connectors/src/connectors/twitch/twitch.ts +++ b/packages/connectors/src/connectors/twitch/twitch.ts @@ -1,12 +1,11 @@ -import { CreateConnectorFn } from 'wagmi' - import { getTwitchLogo } from './TwitchLogo' import { sequenceWallet, BaseSequenceConnectorOptions } from '../wagmiConnectors' +import { Wallet } from '@0xsequence/kit' export interface TwitchOptions extends BaseSequenceConnectorOptions {} -export const twitch = (options: TwitchOptions) => ({ +export const twitch = (options: TwitchOptions): Wallet => ({ id: 'twitch', isSequenceBased: true, logoDark: getTwitchLogo({}), @@ -15,7 +14,7 @@ export const twitch = (options: TwitchOptions) => ({ monochromeLogoLight: getTwitchLogo({ isDarkMode: false }), // iconBackground: '#fff', name: 'Twitch', - createConnector: (() => { + createConnector: () => { const connector = sequenceWallet({ ...options, connect: { @@ -27,5 +26,5 @@ export const twitch = (options: TwitchOptions) => ({ } }) return connector - }) as () => CreateConnectorFn + } }) diff --git a/packages/connectors/src/connectors/wagmiConnectors/sequenceConnector.ts b/packages/connectors/src/connectors/wagmiConnectors/sequenceConnector.ts index f47f3dae..026f0f21 100644 --- a/packages/connectors/src/connectors/wagmiConnectors/sequenceConnector.ts +++ b/packages/connectors/src/connectors/wagmiConnectors/sequenceConnector.ts @@ -40,8 +40,14 @@ export function sequenceWallet(params: BaseSequenceConnectorOptions) { type Provider = sequence.provider.SequenceProvider type Properties = {} + type StorageItem = { + [LocalStorageKey.EthAuthProof]: string + [LocalStorageKey.ProjectAccessKey]: string + [LocalStorageKey.Theme]: string + [LocalStorageKey.EthAuthSettings]: string + } - return createConnector(config => ({ + return createConnector(config => ({ id: 'sequence', name: 'Sequence', type: sequenceWallet.type, @@ -59,8 +65,8 @@ export function sequenceWallet(params: BaseSequenceConnectorOptions) { const provider = (await this.getProvider()) as sequence.provider.SequenceProvider if (!provider.isConnected()) { - const localStorageTheme = localStorage.getItem(LocalStorageKey.Theme) - const ethAuthSettingsRaw = localStorage.getItem(LocalStorageKey.EthAuthSettings) + const localStorageTheme = await config.storage?.getItem(LocalStorageKey.Theme) + const ethAuthSettingsRaw = await config.storage?.getItem(LocalStorageKey.EthAuthSettings) const parseEthAuthSettings = ethAuthSettingsRaw ? JSON.parse(ethAuthSettingsRaw) : ({} as EthAuthSettings) const connectOptionsWithTheme = { @@ -89,7 +95,7 @@ export function sequenceWallet(params: BaseSequenceConnectorOptions) { typedData: proofTypedData }) - localStorage.setItem(LocalStorageKey.EthAuthProof, jsonEthAuthProof) + await config.storage?.setItem(LocalStorageKey.EthAuthProof, jsonEthAuthProof) } } @@ -118,7 +124,7 @@ export function sequenceWallet(params: BaseSequenceConnectorOptions) { return provider } catch (e) { - const projectAccessKey = localStorage.getItem(LocalStorageKey.ProjectAccessKey) + const projectAccessKey = await config.storage?.getItem(LocalStorageKey.ProjectAccessKey) if (!projectAccessKey) { throw 'projectAccessKey not found' @@ -174,7 +180,7 @@ export function sequenceWallet(params: BaseSequenceConnectorOptions) { }, async onConnect(connectinfo) {}, async onDisconnect() { - localStorage.removeItem(LocalStorageKey.EthAuthProof) + await config.storage?.removeItem(LocalStorageKey.EthAuthProof) config.emitter.emit('disconnect') } })) diff --git a/packages/connectors/src/connectors/wagmiConnectors/sequenceWaasConnector.ts b/packages/connectors/src/connectors/wagmiConnectors/sequenceWaasConnector.ts index cae9ad98..ac82332a 100644 --- a/packages/connectors/src/connectors/wagmiConnectors/sequenceWaasConnector.ts +++ b/packages/connectors/src/connectors/wagmiConnectors/sequenceWaasConnector.ts @@ -21,15 +21,15 @@ sequenceWaasWallet.type = 'sequence-waas' as const export function sequenceWaasWallet(params: BaseSequenceWaasConnectorOptions) { type Provider = SequenceWaasProvider type Properties = { sequenceWaas: SequenceWaaS; sequenceWaasProvider: SequenceWaasProvider } - - if (params.googleClientId) { - localStorage.setItem(LocalStorageKey.WaasGoogleClientID, params.googleClientId) - } - if (params.appleClientId) { - localStorage.setItem(LocalStorageKey.WaasAppleClientID, params.appleClientId) - } - if (params.appleRedirectURI) { - localStorage.setItem(LocalStorageKey.WaasAppleRedirectURI, params.appleRedirectURI) + type StorageItem = { + [LocalStorageKey.WaasSessionHash]: string + [LocalStorageKey.WaasActiveLoginType]: string + [LocalStorageKey.WaasGoogleIdToken]: string + [LocalStorageKey.WaasEmailIdToken]: string + [LocalStorageKey.WaasAppleIdToken]: string + [LocalStorageKey.WaasGoogleClientID]: string + [LocalStorageKey.WaasAppleClientID]: string + [LocalStorageKey.WaasAppleRedirectURI]: string } const showConfirmationModal = params.enableConfirmationModal ?? false @@ -59,17 +59,27 @@ export function sequenceWaasWallet(params: BaseSequenceWaasConnectorOptions) { sequenceWaasProvider.updateNetwork(ethers.providers.getNetwork(chainId)) } - return createConnector(config => ({ + return createConnector(config => ({ id: `sequence-waas`, name: 'Sequence WaaS', type: sequenceWaasWallet.type, sequenceWaas, sequenceWaasProvider, async setup() { + if (params.googleClientId) { + await config.storage?.setItem(LocalStorageKey.WaasGoogleClientID, params.googleClientId) + } + if (params.appleClientId) { + await config.storage?.setItem(LocalStorageKey.WaasAppleClientID, params.appleClientId) + } + if (params.appleRedirectURI) { + await config.storage?.setItem(LocalStorageKey.WaasAppleRedirectURI, params.appleRedirectURI) + } + const isConnected = await sequenceWaas.isSignedIn() if (!isConnected) { const sessionHash = await sequenceWaas.getSessionHash() - localStorage.setItem(LocalStorageKey.WaasSessionHash, sessionHash) + await config.storage?.setItem(LocalStorageKey.WaasSessionHash, sessionHash) } sequenceWaasProvider.on('disconnect', () => { @@ -90,9 +100,9 @@ export function sequenceWaasWallet(params: BaseSequenceWaasConnectorOptions) { await this.disconnect() } } else { - const googleIdToken = localStorage.getItem(LocalStorageKey.WaasGoogleIdToken) - const emailIdToken = localStorage.getItem(LocalStorageKey.WaasEmailIdToken) - const appleIdToken = localStorage.getItem(LocalStorageKey.WaasAppleIdToken) + const googleIdToken = await config.storage?.getItem(LocalStorageKey.WaasGoogleIdToken) + const emailIdToken = await config.storage?.getItem(LocalStorageKey.WaasEmailIdToken) + const appleIdToken = await config.storage?.getItem(LocalStorageKey.WaasAppleIdToken) let idToken: string | undefined @@ -115,13 +125,13 @@ export function sequenceWaasWallet(params: BaseSequenceWaasConnectorOptions) { accounts = await this.getAccounts() if (accounts.length) { - localStorage.setItem(LocalStorageKey.WaasActiveLoginType, params.loginType) + await config.storage?.setItem(LocalStorageKey.WaasActiveLoginType, params.loginType) } } - localStorage.removeItem(LocalStorageKey.WaasGoogleIdToken) - localStorage.removeItem(LocalStorageKey.WaasEmailIdToken) - localStorage.removeItem(LocalStorageKey.WaasAppleIdToken) + await config.storage?.removeItem(LocalStorageKey.WaasGoogleIdToken) + await config.storage?.removeItem(LocalStorageKey.WaasEmailIdToken) + await config.storage?.removeItem(LocalStorageKey.WaasAppleIdToken) } return { @@ -136,11 +146,11 @@ export function sequenceWaasWallet(params: BaseSequenceWaasConnectorOptions) { console.log(e) } - localStorage.removeItem(LocalStorageKey.WaasSessionHash) - localStorage.removeItem(LocalStorageKey.WaasActiveLoginType) + await config.storage?.removeItem(LocalStorageKey.WaasSessionHash) + await config.storage?.removeItem(LocalStorageKey.WaasActiveLoginType) const sessionHash = await sequenceWaas.getSessionHash() - localStorage.setItem(LocalStorageKey.WaasSessionHash, sessionHash) + await config.storage?.setItem(LocalStorageKey.WaasSessionHash, sessionHash) }, async getAccounts() { try { @@ -158,7 +168,7 @@ export function sequenceWaasWallet(params: BaseSequenceWaasConnectorOptions) { return sequenceWaasProvider }, async isAuthorized() { - const activeWaasOption = localStorage.getItem(LocalStorageKey.WaasActiveLoginType) + const activeWaasOption = await config.storage?.getItem(LocalStorageKey.WaasActiveLoginType) if (params.loginType !== activeWaasOption) { return false } diff --git a/packages/connectors/src/connectors/walletConnect/walletConnect.ts b/packages/connectors/src/connectors/walletConnect/walletConnect.ts index 895be42b..7f5881d9 100644 --- a/packages/connectors/src/connectors/walletConnect/walletConnect.ts +++ b/packages/connectors/src/connectors/walletConnect/walletConnect.ts @@ -1,18 +1,18 @@ -import { CreateConnectorFn } from 'wagmi' import { walletConnect as walletConnectbase, WalletConnectParameters } from 'wagmi/connectors' import { WalletConnectLogo } from './WalletConnectLogo' +import { Wallet } from '@0xsequence/kit' -export const walletConnect = (options: WalletConnectParameters) => ({ +export const walletConnect = (options: WalletConnectParameters): Wallet => ({ id: 'wallet-connect', logoDark: WalletConnectLogo, logoLight: WalletConnectLogo, // iconBackground: '#fff', name: 'Walletconnect', - createConnector: (() => { + createConnector: () => { const connector = walletConnectbase({ ...options }) return connector - }) as () => CreateConnectorFn + } }) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 18494671..71786e4b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -93,6 +93,73 @@ importers: specifier: ^2.5.20 version: 2.5.20(@tanstack/react-query@5.32.0)(@types/react@18.2.79)(react-dom@18.2.0)(react-native@0.74.0)(react@18.2.0)(rollup@2.79.1)(typescript@5.4.5)(viem@2.9.26) + examples/next: + dependencies: + '@0xsequence/design-system': + specifier: ^1.4.7 + version: 1.4.7(@types/react-dom@18.2.25)(@types/react@18.2.79)(framer-motion@11.1.7)(react-dom@18.2.0)(react@18.2.0) + '@0xsequence/kit': + specifier: workspace:* + version: link:../../packages/kit + '@0xsequence/kit-checkout': + specifier: workspace:* + version: link:../../packages/checkout + '@0xsequence/kit-connectors': + specifier: workspace:* + version: link:../../packages/connectors + '@0xsequence/kit-wallet': + specifier: workspace:* + version: link:../../packages/wallet + '@0xsequence/network': + specifier: ^1.9.19 + version: 1.9.19(ethers@5.7.2) + '@tanstack/react-query': + specifier: ^5.29.2 + version: 5.32.0(react@18.2.0) + next: + specifier: 14.2.3 + version: 14.2.3(@babel/core@7.24.4)(react-dom@18.2.0)(react@18.2.0) + react: + specifier: ^18 + version: 18.2.0 + react-dom: + specifier: ^18 + version: 18.2.0(react@18.2.0) + viem: + specifier: ^2.5.7 + version: 2.9.26(typescript@5.4.5) + wagmi: + specifier: ^2.5.7 + version: 2.5.20(@tanstack/react-query@5.32.0)(@types/react@18.2.79)(react-dom@18.2.0)(react-native@0.74.0)(react@18.2.0)(rollup@2.79.1)(typescript@5.4.5)(viem@2.9.26) + devDependencies: + '@types/node': + specifier: ^20 + version: 20.12.7 + '@types/react': + specifier: ^18 + version: 18.2.79 + '@types/react-dom': + specifier: ^18 + version: 18.2.25 + '@vanilla-extract/next-plugin': + specifier: ^2.4.0 + version: 2.4.0(@types/node@20.12.7)(next@14.2.3)(webpack@5.91.0) + eslint: + specifier: ^8 + version: 8.57.0 + eslint-config-next: + specifier: 14.2.3 + version: 14.2.3(eslint@8.57.0)(typescript@5.4.5) + postcss: + specifier: ^8 + version: 8.4.38 + tailwindcss: + specifier: ^3.4.3 + version: 3.4.3 + typescript: + specifier: ^5 + version: 5.4.5 + examples/react: dependencies: '@0xsequence/design-system': @@ -562,6 +629,34 @@ packages: '@0xsequence/abi': 1.9.19 ethers: 5.7.2 + /@0xsequence/design-system@1.4.7(@types/react-dom@18.2.25)(@types/react@18.2.79)(framer-motion@11.1.7)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-ywJfFp/BE59JGb6jt23EWVyADptpBfl9zh+Rzcjeuv0mPnSZMROIJUrNQljmyBRfRGrFJol2rnFkKEdO2lIAIQ==} + peerDependencies: + framer-motion: '>=6' + react: '>=17' + react-dom: '>=17' + dependencies: + '@radix-ui/react-aspect-ratio': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-checkbox': 1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-collapsible': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-dialog': 1.0.5(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-dropdown-menu': 2.0.6(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-progress': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-radio-group': 1.1.3(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-select': 2.0.0(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-switch': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-tabs': 1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-toast': 1.1.5(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-tooltip': 1.0.7(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0) + framer-motion: 11.1.7(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-hook-form: 7.51.3(react@18.2.0) + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + dev: false + /@0xsequence/design-system@1.4.7(@types/react-dom@18.2.25)(@types/react@18.2.79)(framer-motion@8.5.2)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-ywJfFp/BE59JGb6jt23EWVyADptpBfl9zh+Rzcjeuv0mPnSZMROIJUrNQljmyBRfRGrFJol2rnFkKEdO2lIAIQ==} peerDependencies: @@ -767,6 +862,11 @@ packages: /@adraffy/ens-normalize@1.10.0: resolution: {integrity: sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q==} + /@alloc/quick-lru@5.2.0: + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + dev: true + /@ampproject/remapping@2.3.0: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} @@ -4183,6 +4283,87 @@ packages: '@motionone/dom': 10.17.0 tslib: 2.6.2 + /@next/env@14.2.3: + resolution: {integrity: sha512-W7fd7IbkfmeeY2gXrzJYDx8D2lWKbVoTIj1o1ScPHNzvp30s1AuoEFSdr39bC5sjxJaxTtq3OTCZboNp0lNWHA==} + + /@next/eslint-plugin-next@14.2.3: + resolution: {integrity: sha512-L3oDricIIjgj1AVnRdRor21gI7mShlSwU/1ZGHmqM3LzHhXXhdkrfeNY5zif25Bi5Dd7fiJHsbhoZCHfXYvlAw==} + dependencies: + glob: 10.3.10 + dev: true + + /@next/swc-darwin-arm64@14.2.3: + resolution: {integrity: sha512-3pEYo/RaGqPP0YzwnlmPN2puaF2WMLM3apt5jLW2fFdXD9+pqcoTzRk+iZsf8ta7+quAe4Q6Ms0nR0SFGFdS1A==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + optional: true + + /@next/swc-darwin-x64@14.2.3: + resolution: {integrity: sha512-6adp7waE6P1TYFSXpY366xwsOnEXM+y1kgRpjSRVI2CBDOcbRjsJ67Z6EgKIqWIue52d2q/Mx8g9MszARj8IEA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + requiresBuild: true + optional: true + + /@next/swc-linux-arm64-gnu@14.2.3: + resolution: {integrity: sha512-cuzCE/1G0ZSnTAHJPUT1rPgQx1w5tzSX7POXSLaS7w2nIUJUD+e25QoXD/hMfxbsT9rslEXugWypJMILBj/QsA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + optional: true + + /@next/swc-linux-arm64-musl@14.2.3: + resolution: {integrity: sha512-0D4/oMM2Y9Ta3nGuCcQN8jjJjmDPYpHX9OJzqk42NZGJocU2MqhBq5tWkJrUQOQY9N+In9xOdymzapM09GeiZw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + optional: true + + /@next/swc-linux-x64-gnu@14.2.3: + resolution: {integrity: sha512-ENPiNnBNDInBLyUU5ii8PMQh+4XLr4pG51tOp6aJ9xqFQ2iRI6IH0Ds2yJkAzNV1CfyagcyzPfROMViS2wOZ9w==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + optional: true + + /@next/swc-linux-x64-musl@14.2.3: + resolution: {integrity: sha512-BTAbq0LnCbF5MtoM7I/9UeUu/8ZBY0i8SFjUMCbPDOLv+un67e2JgyN4pmgfXBwy/I+RHu8q+k+MCkDN6P9ViQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + optional: true + + /@next/swc-win32-arm64-msvc@14.2.3: + resolution: {integrity: sha512-AEHIw/dhAMLNFJFJIJIyOFDzrzI5bAjI9J26gbO5xhAKHYTZ9Or04BesFPXiAYXDNdrwTP2dQceYA4dL1geu8A==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + requiresBuild: true + optional: true + + /@next/swc-win32-ia32-msvc@14.2.3: + resolution: {integrity: sha512-vga40n1q6aYb0CLrM+eEmisfKCR45ixQYXuBXxOOmmoV8sYST9k7E3US32FsY+CkkF7NtzdcebiFT4CHuMSyZw==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + requiresBuild: true + optional: true + + /@next/swc-win32-x64-msvc@14.2.3: + resolution: {integrity: sha512-Q1/zm43RWynxrO7lW4ehciQVj+5ePBhOK+/K2P7pLFX3JaJ/IZVC69SHidrmZSOkqz7ECIOhhy7XhAFG4JYyHA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + requiresBuild: true + optional: true + /@noble/curves@1.2.0: resolution: {integrity: sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==} dependencies: @@ -4333,6 +4514,7 @@ packages: dependencies: is-glob: 4.0.3 micromatch: 4.0.5 + napi-wasm: 1.1.0 bundledDependencies: - napi-wasm @@ -5970,6 +6152,10 @@ packages: dev: true optional: true + /@rushstack/eslint-patch@1.10.2: + resolution: {integrity: sha512-hw437iINopmQuxWPSUEvqE56NCPsiU8N4AYtfHmJFckclktzK9YQJieD3XkDCDH4OjL+C7zgPUh73R/nrcHrqw==} + dev: true + /@safe-global/safe-apps-provider@0.18.1(typescript@5.4.5): resolution: {integrity: sha512-V4a05A3EgJcriqtDoJklDz1BOinWhC6P0hjUSxshA4KOZM7rGPCTto/usXs09zr1vvL28evl/NldSTv97j2bmg==} dependencies: @@ -6003,7 +6189,7 @@ packages: resolution: {integrity: sha512-N1ZhksgwD3OBlwTv3R6KFEcPojl/W4ElJOeCZdi+vuI5QmTFwLq3OFf2zd2ROpKvxFdgZ6hUpb0dx9bVNEwYCA==} dependencies: '@noble/curves': 1.2.0 - '@noble/hashes': 1.3.2 + '@noble/hashes': 1.3.3 '@scure/base': 1.1.6 /@scure/bip32@1.3.3: @@ -6016,7 +6202,7 @@ packages: /@scure/bip39@1.2.1: resolution: {integrity: sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==} dependencies: - '@noble/hashes': 1.3.2 + '@noble/hashes': 1.3.3 '@scure/base': 1.1.6 /@scure/bip39@1.2.2: @@ -6639,6 +6825,15 @@ packages: - supports-color dev: true + /@swc/counter@0.1.3: + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + + /@swc/helpers@0.5.5: + resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} + dependencies: + '@swc/counter': 0.1.3 + tslib: 2.6.2 + /@tanstack/query-core@5.32.0: resolution: {integrity: sha512-Z3flEgCat55DRXU5UMwYU1U+DgFZKA3iufyOKs+II7iRAo0uXkeU7PH5e6sOH1CGEag0IpKmZxlUFpCg6roSKw==} @@ -6873,6 +7068,27 @@ packages: - supports-color dev: true + /@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-5FKsVcHTk6TafQKQbuIVkXq58Fnbkd2wDL4LB7AURN7RUOu1utVP+G8+6u3ZhEroW3DF6hyo3ZEXxgKgp4KeCg==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 7.2.0 + '@typescript-eslint/types': 7.2.0 + '@typescript-eslint/typescript-estree': 7.2.0(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.2.0 + debug: 4.3.4 + eslint: 8.57.0 + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/parser@7.7.1(eslint@8.57.0)(typescript@5.4.5): resolution: {integrity: sha512-vmPzBOOtz48F6JAGVS/kZYk4EkXao6iGrD838sp1w3NQQC0W8ry/q641KU4PrG7AKNAf56NOcR8GOpH8l9FPCw==} engines: {node: ^18.18.0 || >=20.0.0} @@ -6894,6 +7110,14 @@ packages: - supports-color dev: true + /@typescript-eslint/scope-manager@7.2.0: + resolution: {integrity: sha512-Qh976RbQM/fYtjx9hs4XkayYujB/aPwglw2choHmf3zBjB4qOywWSdt9+KLRdHubGcoSwBnXUH2sR3hkyaERRg==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 7.2.0 + '@typescript-eslint/visitor-keys': 7.2.0 + dev: true + /@typescript-eslint/scope-manager@7.7.1: resolution: {integrity: sha512-PytBif2SF+9SpEUKynYn5g1RHFddJUcyynGpztX3l/ik7KmZEv19WCMhUBkHXPU9es/VWGD3/zg3wg90+Dh2rA==} engines: {node: ^18.18.0 || >=20.0.0} @@ -6922,11 +7146,38 @@ packages: - supports-color dev: true + /@typescript-eslint/types@7.2.0: + resolution: {integrity: sha512-XFtUHPI/abFhm4cbCDc5Ykc8npOKBSJePY3a3s+lwumt7XWJuzP5cZcfZ610MIPHjQjNsOLlYK8ASPaNG8UiyA==} + engines: {node: ^16.0.0 || >=18.0.0} + dev: true + /@typescript-eslint/types@7.7.1: resolution: {integrity: sha512-AmPmnGW1ZLTpWa+/2omPrPfR7BcbUU4oha5VIbSbS1a1Tv966bklvLNXxp3mrbc+P2j4MNOTfDffNsk4o0c6/w==} engines: {node: ^18.18.0 || >=20.0.0} dev: true + /@typescript-eslint/typescript-estree@7.2.0(typescript@5.4.5): + resolution: {integrity: sha512-cyxS5WQQCoBwSakpMrvMXuMDEbhOo9bNHHrNcEWis6XHx6KF518tkF1wBvKIn/tpq5ZpUYK7Bdklu8qY0MsFIA==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 7.2.0 + '@typescript-eslint/visitor-keys': 7.2.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.3 + semver: 7.6.0 + ts-api-utils: 1.3.0(typescript@5.4.5) + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/typescript-estree@7.7.1(typescript@5.4.5): resolution: {integrity: sha512-CXe0JHCXru8Fa36dteXqmH2YxngKJjkQLjxzoj6LYwzZ7qZvgsLSc+eqItCrqIop8Vl2UKoAi0StVWu97FQZIQ==} engines: {node: ^18.18.0 || >=20.0.0} @@ -6968,6 +7219,14 @@ packages: - typescript dev: true + /@typescript-eslint/visitor-keys@7.2.0: + resolution: {integrity: sha512-c6EIQRHhcpl6+tO8EMR+kjkkV+ugUNXOmeASA1rlzkd8EPIriavpWoiEz1HR/VLhbVIdhqnV6E7JZm00cBDx2A==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 7.2.0 + eslint-visitor-keys: 3.4.3 + dev: true + /@typescript-eslint/visitor-keys@7.7.1: resolution: {integrity: sha512-gBL3Eq25uADw1LQ9kVpf3hRM+DWzs0uZknHYK3hq4jcTPqVCClHGDnB6UUUV2SFeBeA4KWHWbbLqmbGcZ4FYbw==} engines: {node: ^18.18.0 || >=20.0.0} @@ -7053,6 +7312,25 @@ packages: - terser dev: true + /@vanilla-extract/next-plugin@2.4.0(@types/node@20.12.7)(next@14.2.3)(webpack@5.91.0): + resolution: {integrity: sha512-hRdTpr43NIFNmIbY7z+oA/BupzK7rBDVMfTFi/fVD3TD4x47LH/eNkDLsujGYl4kUpO96TxLw1wn9P9eC034YA==} + peerDependencies: + next: '>=12.1.7' + dependencies: + '@vanilla-extract/webpack-plugin': 2.3.7(@types/node@20.12.7)(webpack@5.91.0) + next: 14.2.3(@babel/core@7.24.4)(react-dom@18.2.0)(react@18.2.0) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + - webpack + dev: true + /@vanilla-extract/private@1.0.4: resolution: {integrity: sha512-8FGD6AejeC/nXcblgNCM5rnZb9KXa4WNkR03HCWtdJBpANjTgjHEglNLFnhuvdQ78tC6afaxBPI+g7F2NX3tgg==} @@ -7081,6 +7359,27 @@ packages: - terser dev: true + /@vanilla-extract/webpack-plugin@2.3.7(@types/node@20.12.7)(webpack@5.91.0): + resolution: {integrity: sha512-xKhl7BUGqjj1eRzgASBcfKSvzIWGN1ndNT9ycUcfDz1AXZr6rok99LSj+Z2LqAnCGZGAiLsYzdQ5AYBABXV+vA==} + peerDependencies: + webpack: ^4.30.0 || ^5.20.2 + dependencies: + '@vanilla-extract/integration': 7.1.2(@types/node@20.12.7) + chalk: 4.1.2 + debug: 4.3.4 + loader-utils: 2.0.4 + webpack: 5.91.0(webpack-cli@5.1.4) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + /@vitejs/plugin-react@4.2.1(vite@5.2.10): resolution: {integrity: sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ==} engines: {node: ^14.18.0 || >=16.0.0} @@ -7778,6 +8077,10 @@ packages: engines: {node: '>=12'} dev: true + /any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + dev: true + /anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} @@ -7788,6 +8091,10 @@ packages: /appdirsjs@1.2.7: resolution: {integrity: sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==} + /arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + dev: true + /argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} dependencies: @@ -7803,6 +8110,12 @@ packages: dependencies: tslib: 2.6.2 + /aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + dependencies: + dequal: 2.0.3 + dev: true + /array-buffer-byte-length@1.0.1: resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} engines: {node: '>= 0.4'} @@ -7828,6 +8141,30 @@ packages: engines: {node: '>=8'} dev: true + /array.prototype.findlast@1.2.5: + resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-shim-unscopables: 1.0.2 + dev: true + + /array.prototype.findlastindex@1.2.5: + resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-shim-unscopables: 1.0.2 + dev: true + /array.prototype.flat@1.3.2: resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} engines: {node: '>= 0.4'} @@ -7838,6 +8175,35 @@ packages: 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.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-shim-unscopables: 1.0.2 + dev: true + + /array.prototype.toreversed@1.1.2: + resolution: {integrity: sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-shim-unscopables: 1.0.2 + dev: true + + /array.prototype.tosorted@1.1.3: + resolution: {integrity: sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-shim-unscopables: 1.0.2 + dev: true + /arraybuffer.prototype.slice@1.0.3: resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} engines: {node: '>= 0.4'} @@ -7878,6 +8244,10 @@ packages: util: 0.12.5 dev: true + /ast-types-flow@0.0.8: + resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} + dev: true + /ast-types@0.15.2: resolution: {integrity: sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==} engines: {node: '>=4'} @@ -7911,6 +8281,17 @@ packages: dependencies: possible-typed-array-names: 1.0.0 + /axe-core@4.7.0: + resolution: {integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==} + engines: {node: '>=4'} + dev: true + + /axobject-query@3.2.1: + resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} + dependencies: + dequal: 2.0.3 + dev: true + /babel-core@7.0.0-bridge.0(@babel/core@7.24.4): resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} peerDependencies: @@ -7992,6 +8373,10 @@ packages: is-windows: 1.0.2 dev: true + /big.js@5.2.2: + resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} + dev: true + /binary-extensions@2.3.0: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} @@ -8152,6 +8537,12 @@ packages: resolution: {integrity: sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==} dev: true + /busboy@1.6.0: + resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} + engines: {node: '>=10.16.0'} + dependencies: + streamsearch: 1.1.0 + /bytes@3.0.0: resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} engines: {node: '>= 0.8'} @@ -8191,6 +8582,11 @@ packages: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} + /camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + dev: true + /camelcase-keys@6.2.2: resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} engines: {node: '>=8'} @@ -8291,7 +8687,6 @@ packages: /client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} - dev: false /clipboardy@4.0.0: resolution: {integrity: sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w==} @@ -8370,6 +8765,11 @@ packages: /commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + /commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + dev: true + /commander@9.5.0: resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} engines: {node: ^12.20.0 || >=14} @@ -8609,6 +9009,10 @@ packages: stream-transform: 2.1.3 dev: true + /damerau-levenshtein@1.0.8: + resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} + dev: true + /data-view-buffer@1.0.1: resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} engines: {node: '>= 0.4'} @@ -8752,6 +9156,11 @@ packages: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} + /dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + dev: true + /des.js@1.1.0: resolution: {integrity: sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==} dependencies: @@ -8782,6 +9191,10 @@ packages: /detect-node-es@1.1.0: resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + /didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + dev: true + /diffie-hellman@5.0.3: resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==} dependencies: @@ -8800,6 +9213,10 @@ 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'} @@ -8885,6 +9302,11 @@ packages: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} dev: true + /emojis-list@3.0.0: + resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} + engines: {node: '>= 4'} + dev: true + /encode-utf8@1.0.3: resolution: {integrity: sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==} @@ -9018,6 +9440,26 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} + /es-iterator-helpers@1.0.18: + resolution: {integrity: sha512-scxAJaewsahbqTYrGKJihhViaM6DDZDDoucfvzNbK0pOren1g/daDQ3IAhzn+1G14rBG7w+i5N+qul60++zlKA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-set-tostringtag: 2.0.3 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + globalthis: 1.0.3 + has-property-descriptors: 1.0.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + internal-slot: 1.0.7 + iterator.prototype: 1.1.2 + safe-array-concat: 1.1.2 + dev: true + /es-module-lexer@1.5.0: resolution: {integrity: sha512-pqrTKmwEIgafsYZAGw9kszYzmagcE/n4dbgwGWLEXg7J4QFJVQRBld8j3Q3GNez79jzxZshq0bcT962QHOghjw==} @@ -9139,6 +9581,31 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} + /eslint-config-next@14.2.3(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-ZkNztm3Q7hjqvB1rRlOX8P9E/cXRL9ajRcs8jufEtwMfTVYRqnmtnaSu57QqHyBlovMuiB8LEzfLBkh5RYV6Fg==} + peerDependencies: + eslint: ^7.23.0 || ^8.0.0 + typescript: '>=3.3.1' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@next/eslint-plugin-next': 14.2.3 + '@rushstack/eslint-patch': 1.10.2 + '@typescript-eslint/parser': 7.2.0(eslint@8.57.0)(typescript@5.4.5) + eslint: 8.57.0 + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.7.1)(eslint@8.57.0) + eslint-plugin-jsx-a11y: 6.8.0(eslint@8.57.0) + eslint-plugin-react: 7.34.1(eslint@8.57.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.57.0) + typescript: 5.4.5 + transitivePeerDependencies: + - eslint-import-resolver-webpack + - supports-color + dev: true + /eslint-config-prettier@8.5.0(eslint@8.57.0): resolution: {integrity: sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==} hasBin: true @@ -9158,6 +9625,59 @@ packages: - supports-color dev: true + /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0): + resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + dependencies: + debug: 4.3.4 + enhanced-resolve: 5.16.0 + eslint: 8.57.0 + eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.7.1)(eslint@8.57.0) + fast-glob: 3.3.2 + get-tsconfig: 4.7.3 + 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.1(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): + resolution: {integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==} + 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': 7.2.0(eslint@8.57.0)(typescript@5.4.5) + debug: 3.2.7 + eslint: 8.57.0 + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0) + transitivePeerDependencies: + - supports-color + dev: true + /eslint-module-utils@2.8.1(@typescript-eslint/parser@7.7.1)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): resolution: {integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==} engines: {node: '>=4'} @@ -9218,6 +9738,66 @@ packages: - supports-color dev: true + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.7.1)(eslint@8.57.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': 7.7.1(eslint@8.57.0)(typescript@5.4.5) + array-includes: 3.1.8 + array.prototype.findlastindex: 1.2.5 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 8.57.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.7.1)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) + hasown: 2.0.2 + is-core-module: 2.13.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.0 + 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.57.0): + resolution: {integrity: sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==} + engines: {node: '>=4.0'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + '@babel/runtime': 7.24.4 + aria-query: 5.3.0 + array-includes: 3.1.8 + 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.18 + eslint: 8.57.0 + hasown: 2.0.2 + jsx-ast-utils: 3.3.5 + language-tags: 1.0.9 + minimatch: 3.1.2 + object.entries: 1.1.8 + object.fromentries: 2.0.8 + dev: true + /eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.5.0)(eslint@8.57.0)(prettier@3.2.5): resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} engines: {node: '>=12.0.0'} @@ -9252,6 +9832,33 @@ packages: eslint: 8.57.0 dev: true + /eslint-plugin-react@7.34.1(eslint@8.57.0): + resolution: {integrity: sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + array-includes: 3.1.8 + array.prototype.findlast: 1.2.5 + array.prototype.flatmap: 1.3.2 + array.prototype.toreversed: 1.1.2 + array.prototype.tosorted: 1.1.3 + doctrine: 2.1.0 + es-iterator-helpers: 1.0.18 + eslint: 8.57.0 + estraverse: 5.3.0 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.2 + object.entries: 1.1.8 + object.fromentries: 2.0.8 + object.hasown: 1.1.4 + object.values: 1.2.0 + prop-types: 15.8.1 + resolve: 2.0.0-next.5 + semver: 6.3.1 + string.prototype.matchall: 4.0.11 + dev: true + /eslint-scope@5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} @@ -9712,6 +10319,25 @@ packages: signal-exit: 4.1.0 dev: true + /framer-motion@11.1.7(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-cW11Pu53eDAXUEhv5hEiWuIXWhfkbV32PlgVISn7jRdcAiVrJ1S03YQQ0/DzoswGYYwKi4qYmHHjCzAH52eSdQ==} + peerDependencies: + '@emotion/is-prop-valid': '*' + react: ^18.0.0 + react-dom: ^18.0.0 + peerDependenciesMeta: + '@emotion/is-prop-valid': + optional: true + react: + optional: true + react-dom: + optional: true + dependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + tslib: 2.6.2 + dev: false + /framer-motion@8.5.2(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-dt1WwCUIlJ24N/PCCayr0BZJcHOfU/L7kO8fgG8SxcAiGufaNg+Xl0oD14z7mRTGLrqRdA1ZlMW5Wr77aO1Xuw==} peerDependencies: @@ -9835,6 +10461,12 @@ packages: get-intrinsic: 1.2.4 dev: true + /get-tsconfig@4.7.3: + resolution: {integrity: sha512-ZvkrzoUA0PQZM6fy6+/Hce561s+faD1rsNwhnO5FelNjyy7EMGJ3Rz1AQ8GYDWjhRs/7dBLOEJvhK8MiEJOAFg==} + dependencies: + resolve-pkg-maps: 1.0.0 + dev: true + /glob-base@0.3.0: resolution: {integrity: sha512-ab1S1g1EbO7YzauaJLkgLp7DZVAqj9M/dvKlTt8DkXA2tiOIcSMrlVI2J1RZyB5iJVccEscjGn+kpOG9788MHA==} engines: {node: '>=0.10.0'} @@ -9865,6 +10497,18 @@ packages: /glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + /glob@10.3.10: + resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + dependencies: + foreground-child: 3.1.1 + jackspeak: 2.3.6 + minimatch: 9.0.4 + minipass: 7.0.4 + path-scurry: 1.10.2 + dev: true + /glob@10.3.12: resolution: {integrity: sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==} engines: {node: '>=16 || 14 >=14.17'} @@ -10232,6 +10876,13 @@ packages: /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + /is-async-function@2.0.0: + resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.2 + dev: true + /is-bigint@1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: @@ -10310,6 +10961,12 @@ packages: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} + /is-finalizationregistry@1.0.2: + resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} + dependencies: + call-bind: 1.0.7 + dev: true + /is-fullwidth-code-point@2.0.0: resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} engines: {node: '>=4'} @@ -10348,6 +11005,11 @@ packages: resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} engines: {node: '>=8'} + /is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} + dev: true + /is-module@1.0.0: resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} dev: true @@ -10410,6 +11072,11 @@ packages: has-tostringtag: 1.0.2 dev: true + /is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} + dev: true + /is-shared-array-buffer@1.0.3: resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} engines: {node: '>= 0.4'} @@ -10456,12 +11123,25 @@ packages: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} + /is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} + dev: true + /is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: call-bind: 1.0.7 dev: true + /is-weakset@2.0.3: + resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + dev: true + /is-windows@1.0.2: resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} engines: {node: '>=0.10.0'} @@ -10523,6 +11203,16 @@ packages: dependencies: ws: 8.13.0 + /iterator.prototype@1.1.2: + resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} + dependencies: + define-properties: 1.2.1 + get-intrinsic: 1.2.4 + has-symbols: 1.0.3 + reflect.getprototypeof: 1.0.6 + set-function-name: 2.0.2 + dev: true + /jackspeak@2.3.6: resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} engines: {node: '>=14'} @@ -10765,6 +11455,16 @@ 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.8 + array.prototype.flat: 1.3.2 + object.assign: 4.1.5 + object.values: 1.2.0 + dev: true + /jwt-decode@4.0.0: resolution: {integrity: sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==} engines: {node: '>=18'} @@ -10801,6 +11501,17 @@ packages: engines: {node: '>=6'} 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 + /leven@3.1.0: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} @@ -10821,6 +11532,16 @@ packages: transitivePeerDependencies: - supports-color + /lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + dev: true + + /lilconfig@3.1.1: + resolution: {integrity: sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==} + engines: {node: '>=14'} + dev: true + /lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} @@ -10882,6 +11603,15 @@ packages: resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} engines: {node: '>=6.11.5'} + /loader-utils@2.0.4: + resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} + engines: {node: '>=8.9.0'} + dependencies: + big.js: 5.2.2 + emojis-list: 3.0.0 + json5: 2.2.3 + dev: true + /locate-path@3.0.0: resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} engines: {node: '>=6'} @@ -11342,6 +12072,13 @@ packages: brace-expansion: 2.0.1 dev: true + /minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: true + /minimatch@9.0.4: resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} engines: {node: '>=16 || 14 >=14.17'} @@ -11439,11 +12176,21 @@ packages: /multiformats@9.9.0: resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==} + /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.7: resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - dev: true + + /napi-wasm@1.1.0: + resolution: {integrity: sha512-lHwIAJbmLSjF9VDRm9GoVOy9AGp3aIvkjv+Kvz9h16QR3uSVYH78PNQUnT2U4X53mhlnV2M7wrhibQ3GHicDmg==} /natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} @@ -11456,6 +12203,47 @@ packages: /neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + /next@14.2.3(@babel/core@7.24.4)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-dowFkFTR8v79NPJO4QsBUtxv0g9BrS/phluVpMAt2ku7H+cbcBJlopXjkWlwxrk/xGqMemr7JkGPGemPrLLX7A==} + engines: {node: '>=18.17.0'} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + '@playwright/test': ^1.41.2 + react: ^18.2.0 + react-dom: ^18.2.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + '@playwright/test': + optional: true + sass: + optional: true + dependencies: + '@next/env': 14.2.3 + '@swc/helpers': 0.5.5 + busboy: 1.6.0 + caniuse-lite: 1.0.30001612 + 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(@babel/core@7.24.4)(react@18.2.0) + optionalDependencies: + '@next/swc-darwin-arm64': 14.2.3 + '@next/swc-darwin-x64': 14.2.3 + '@next/swc-linux-arm64-gnu': 14.2.3 + '@next/swc-linux-arm64-musl': 14.2.3 + '@next/swc-linux-x64-gnu': 14.2.3 + '@next/swc-linux-x64-musl': 14.2.3 + '@next/swc-win32-arm64-msvc': 14.2.3 + '@next/swc-win32-ia32-msvc': 14.2.3 + '@next/swc-win32-x64-msvc': 14.2.3 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + /no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} dependencies: @@ -11615,6 +12403,11 @@ packages: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} + /object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + dev: true + /object-inspect@1.13.1: resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} dev: true @@ -11642,6 +12435,43 @@ packages: object-keys: 1.1.1 dev: true + /object.entries@1.1.8: + resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + dev: true + + /object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + dev: true + + /object.groupby@1.0.3: + resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + dev: true + + /object.hasown@1.1.4: + resolution: {integrity: sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==} + engines: {node: '>= 0.4'} + dependencies: + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + dev: true + /object.values@1.2.0: resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} engines: {node: '>= 0.4'} @@ -11918,6 +12748,11 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} + /pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + dev: true + /pify@3.0.0: resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} engines: {node: '>=4'} @@ -12004,6 +12839,75 @@ packages: resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} engines: {node: '>= 0.4'} + /postcss-import@15.1.0(postcss@8.4.38): + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 + dependencies: + postcss: 8.4.38 + 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.38): + 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.38 + dev: true + + /postcss-load-config@4.0.2(postcss@8.4.38): + 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.1.1 + postcss: 8.4.38 + yaml: 2.4.1 + dev: true + + /postcss-nested@6.0.1(postcss@8.4.38): + resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + dependencies: + postcss: 8.4.38 + postcss-selector-parser: 6.0.16 + dev: true + + /postcss-selector-parser@6.0.16: + resolution: {integrity: sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==} + 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.2.0 + /postcss@8.4.38: resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} engines: {node: ^10 || ^12 || >=14} @@ -12099,7 +13003,6 @@ packages: loose-envify: 1.4.0 object-assign: 4.1.1 react-is: 16.13.1 - dev: false /proxy-compare@2.5.1: resolution: {integrity: sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA==} @@ -12441,6 +13344,12 @@ packages: dependencies: loose-envify: 1.4.0 + /read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + dependencies: + pify: 2.3.0 + dev: true + /read-pkg-up@7.0.1: resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} engines: {node: '>=8'} @@ -12536,6 +13445,19 @@ packages: strip-indent: 3.0.0 dev: true + /reflect.getprototypeof@1.0.6: + resolution: {integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + globalthis: 1.0.3 + which-builtin-type: 1.1.3 + dev: true + /regenerate-unicode-properties@10.1.1: resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} engines: {node: '>=4'} @@ -12616,6 +13538,10 @@ packages: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} + /resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + dev: true + /resolve@1.22.8: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true @@ -12624,6 +13550,15 @@ packages: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + /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 + /restore-cursor@3.1.0: resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} engines: {node: '>=8'} @@ -12992,7 +13927,6 @@ packages: /source-map-js@1.2.0: resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} engines: {node: '>=0.10.0'} - dev: true /source-map-support@0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} @@ -13108,6 +14042,10 @@ packages: mixme: 0.5.10 dev: true + /streamsearch@1.1.0: + resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} + engines: {node: '>=10.0.0'} + /strict-uri-encode@2.0.0: resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} engines: {node: '>=4'} @@ -13129,6 +14067,24 @@ packages: strip-ansi: 7.1.0 dev: true + /string.prototype.matchall@4.0.11: + resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + get-intrinsic: 1.2.4 + gopd: 1.0.1 + has-symbols: 1.0.3 + internal-slot: 1.0.7 + regexp.prototype.flags: 1.5.2 + set-function-name: 2.0.2 + side-channel: 1.0.6 + dev: true + /string.prototype.trim@1.2.9: resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} engines: {node: '>= 0.4'} @@ -13218,9 +14174,40 @@ packages: /strnum@1.0.5: resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} + /styled-jsx@5.1.1(@babel/core@7.24.4)(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: + '@babel/core': 7.24.4 + client-only: 0.0.1 + react: 18.2.0 + /stylis@4.2.0: resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} + /sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + commander: 4.1.1 + glob: 10.3.12 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.6 + ts-interface-checker: 0.1.13 + dev: true + /sudo-prompt@9.2.1: resolution: {integrity: sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==} @@ -13258,6 +14245,37 @@ packages: resolution: {integrity: sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==} engines: {node: '>=18'} + /tailwindcss@3.4.3: + resolution: {integrity: sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==} + engines: {node: '>=14.0.0'} + hasBin: true + dependencies: + '@alloc/quick-lru': 5.2.0 + arg: 5.0.2 + chokidar: 3.6.0 + 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.38 + postcss-import: 15.1.0(postcss@8.4.38) + postcss-js: 4.0.1(postcss@8.4.38) + postcss-load-config: 4.0.2(postcss@8.4.38) + postcss-nested: 6.0.1(postcss@8.4.38) + postcss-selector-parser: 6.0.16 + resolve: 1.22.8 + sucrase: 3.35.0 + transitivePeerDependencies: + - ts-node + dev: true + /tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} @@ -13314,6 +14332,19 @@ packages: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 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 + /thread-stream@0.15.2: resolution: {integrity: sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==} dependencies: @@ -13380,6 +14411,10 @@ packages: typescript: 5.4.5 dev: true + /ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + dev: true + /tsconfck@3.0.3(typescript@5.4.5): resolution: {integrity: sha512-4t0noZX9t6GcPTfBAbIbbIU4pfpCwh0ueq3S4O/5qXI1VwK1outmxhe9dOiEWqMz3MW2LKgDTpqWV+37IWuVbA==} engines: {node: ^18 || >=20} @@ -14122,6 +15157,34 @@ packages: is-symbol: 1.0.4 dev: true + /which-builtin-type@1.1.3: + resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} + engines: {node: '>= 0.4'} + dependencies: + function.prototype.name: 1.1.6 + has-tostringtag: 1.0.2 + 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.2 + which-typed-array: 1.1.15 + dev: true + + /which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} + dependencies: + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.3 + dev: true + /which-module@2.0.1: resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==}