diff --git a/.syncpackrc b/.syncpackrc index 19421a4016..d67c726ec0 100644 --- a/.syncpackrc +++ b/.syncpackrc @@ -13,6 +13,13 @@ "dependencyTypes": ["peer"], "packages": ["@imtbl/auth-next-server", "@imtbl/auth-next-client", "@imtbl/sdk"], "isIgnored": true + }, + { + "label": "Allow Next.js 14 in auth-next devDependencies for compatibility", + "dependencies": ["next"], + "dependencyTypes": ["dev"], + "packages": ["@imtbl/auth-next-server", "@imtbl/auth-next-client"], + "isIgnored": true } ] } \ No newline at end of file diff --git a/examples/passport/auth-next-default-test/.env.example b/examples/passport/auth-next-default-test/.env.example new file mode 100644 index 0000000000..0610127ed1 --- /dev/null +++ b/examples/passport/auth-next-default-test/.env.example @@ -0,0 +1,5 @@ +# Required for NextAuth.js +AUTH_SECRET=your-secret-key-min-32-characters-long-change-this-in-production + +# Optional: Override default clientId (will use sandbox/production defaults if not set) +# NEXT_PUBLIC_IMMUTABLE_CLIENT_ID=your-client-id-here diff --git a/examples/passport/auth-next-default-test/.eslintrc.json b/examples/passport/auth-next-default-test/.eslintrc.json new file mode 100644 index 0000000000..e7564bddde --- /dev/null +++ b/examples/passport/auth-next-default-test/.eslintrc.json @@ -0,0 +1,4 @@ +{ + "root": true, + "extends": ["next/core-web-vitals", "next"] +} diff --git a/examples/passport/auth-next-default-test/README.md b/examples/passport/auth-next-default-test/README.md new file mode 100644 index 0000000000..10b1cb3502 --- /dev/null +++ b/examples/passport/auth-next-default-test/README.md @@ -0,0 +1,32 @@ +# Default Auth Test App + +Test application for `@imtbl/auth-next-client` and `@imtbl/auth-next-server` with default auth configuration. + +## Setup + +```bash +# Install dependencies +pnpm install + +# Create .env.local +cp .env.example .env.local + +# Run dev server +pnpm dev +``` + +## Testing + +This app tests: +- ✅ Zero-config setup (no clientId or redirectUri required) +- ✅ Auto-detection of clientId (sandbox vs production) +- ✅ Auto-derivation of redirectUri +- ✅ useLogin hook with optional config +- ✅ useLogout hook with optional config +- ✅ Custom config overrides + +## URLs + +- Home: http://localhost:3000 +- Callback: http://localhost:3000/callback +- Auth API: http://localhost:3000/api/auth diff --git a/examples/passport/auth-next-default-test/app/api/auth/[...nextauth]/route.ts b/examples/passport/auth-next-default-test/app/api/auth/[...nextauth]/route.ts new file mode 100644 index 0000000000..c55a45ed70 --- /dev/null +++ b/examples/passport/auth-next-default-test/app/api/auth/[...nextauth]/route.ts @@ -0,0 +1,3 @@ +import { handlers } from "@/lib/auth"; + +export const { GET, POST } = handlers; diff --git a/examples/passport/auth-next-default-test/app/callback/page.tsx b/examples/passport/auth-next-default-test/app/callback/page.tsx new file mode 100644 index 0000000000..1323c1d9ac --- /dev/null +++ b/examples/passport/auth-next-default-test/app/callback/page.tsx @@ -0,0 +1,26 @@ +"use client"; + +import { CallbackPage } from "@imtbl/auth-next-client"; +import { + DEFAULT_PRODUCTION_CLIENT_ID, + DEFAULT_SANDBOX_CLIENT_ID, +} from "@imtbl/auth-next-client"; + +export default function Callback() { + // Auto-detect environment and derive config + const isSandbox = typeof window !== 'undefined' && + (window.location.hostname.includes('sandbox') || window.location.hostname.includes('localhost')); + + const config = { + clientId: isSandbox ? DEFAULT_SANDBOX_CLIENT_ID : DEFAULT_PRODUCTION_CLIENT_ID, + redirectUri: typeof window !== 'undefined' ? `${window.location.origin}/callback` : '/callback', + }; + + return ( +
+

Processing authentication...

+ +
+ ); +} + diff --git a/examples/passport/auth-next-default-test/app/components/ConfigInfo.tsx b/examples/passport/auth-next-default-test/app/components/ConfigInfo.tsx new file mode 100644 index 0000000000..38b9ffffa0 --- /dev/null +++ b/examples/passport/auth-next-default-test/app/components/ConfigInfo.tsx @@ -0,0 +1,47 @@ +"use client"; + +import { useEffect, useState } from "react"; +import { + DEFAULT_PRODUCTION_CLIENT_ID, + DEFAULT_SANDBOX_CLIENT_ID, +} from "@imtbl/auth-next-client"; + +export function ConfigInfo() { + const [info, setInfo] = useState<{ + hostname: string; + isSandbox: boolean; + expectedClientId: string; + redirectUri: string; + } | null>(null); + + useEffect(() => { + const hostname = window.location.hostname; + const isSandbox = hostname.includes('sandbox') || hostname.includes('localhost'); + const expectedClientId = isSandbox ? DEFAULT_SANDBOX_CLIENT_ID : DEFAULT_PRODUCTION_CLIENT_ID; + const redirectUri = `${window.location.origin}/callback`; + + setInfo({ + hostname, + isSandbox, + expectedClientId, + redirectUri, + }); + }, []); + + if (!info) { + return
Loading config info...
; + } + + return ( +
+

📋 Auto-Detected Configuration

+ +

These values are automatically detected and don't need to be configured!

+
+ ); +} diff --git a/examples/passport/auth-next-default-test/app/components/LoginButton.tsx b/examples/passport/auth-next-default-test/app/components/LoginButton.tsx new file mode 100644 index 0000000000..4213169969 --- /dev/null +++ b/examples/passport/auth-next-default-test/app/components/LoginButton.tsx @@ -0,0 +1,35 @@ +"use client"; + +import { useLogin, useImmutableSession } from "@imtbl/auth-next-client"; + +export function LoginButton() { + const { isAuthenticated, session } = useImmutableSession(); + const { loginWithPopup, isLoggingIn, error } = useLogin(); + + if (isAuthenticated && session) { + return ( +
+

✅ Logged In

+

Email: {session.user?.email || 'N/A'}

+

User ID: {session.user?.sub || 'N/A'}

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

Test Login (Zero Config)

+ + {error &&

Error: {error}

} +

+ This uses loginWithPopup() with no config!
+ ClientId and redirectUri are auto-detected. +

+
+ ); +} diff --git a/examples/passport/auth-next-default-test/app/components/LoginWithOverride.tsx b/examples/passport/auth-next-default-test/app/components/LoginWithOverride.tsx new file mode 100644 index 0000000000..567f021e2f --- /dev/null +++ b/examples/passport/auth-next-default-test/app/components/LoginWithOverride.tsx @@ -0,0 +1,57 @@ +"use client"; + +import { useLogin, useImmutableSession } from "@imtbl/auth-next-client"; +import { useState } from "react"; + +export function LoginWithOverride() { + const { isAuthenticated, session } = useImmutableSession(); + const { loginWithPopup, isLoggingIn, error } = useLogin(); + const [customClientId, setCustomClientId] = useState(""); + + if (isAuthenticated && session) { + return ( +
+

✅ Logged In with Override

+

Email: {session.user?.email || 'N/A'}

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

Test Login with Custom ClientId Override

+
+ setCustomClientId(e.target.value)} + style={{ + width: '100%', + padding: '0.5rem', + fontSize: '0.9rem', + borderRadius: '0.25rem', + border: '1px solid #ccc', + }} + /> + + Leave empty to use default sandbox clientId + +
+ + {error &&

Error: {error}

} +

+ This tests loginWithPopup({ clientId: '...' })
+ Custom clientId overrides the default, but redirectUri is still auto-detected. +

+
+ ); +} diff --git a/examples/passport/auth-next-default-test/app/components/LogoutButton.tsx b/examples/passport/auth-next-default-test/app/components/LogoutButton.tsx new file mode 100644 index 0000000000..7de2e4a909 --- /dev/null +++ b/examples/passport/auth-next-default-test/app/components/LogoutButton.tsx @@ -0,0 +1,29 @@ +"use client"; + +import { useLogout, useImmutableSession } from "@imtbl/auth-next-client"; + +export function LogoutButton() { + const { isAuthenticated } = useImmutableSession(); + const { logout, isLoggingOut, error } = useLogout(); + + if (!isAuthenticated) { + return null; + } + + return ( +
+

Test Logout (Zero Config)

+ + {error &&

Error: {error}

} +

+ This uses logout() with no config!
+ Performs federated logout to clear both local and upstream sessions. +

+
+ ); +} diff --git a/examples/passport/auth-next-default-test/app/components/LogoutWithOverride.tsx b/examples/passport/auth-next-default-test/app/components/LogoutWithOverride.tsx new file mode 100644 index 0000000000..aea659f046 --- /dev/null +++ b/examples/passport/auth-next-default-test/app/components/LogoutWithOverride.tsx @@ -0,0 +1,52 @@ +"use client"; + +import { useLogout, useImmutableSession } from "@imtbl/auth-next-client"; +import { useState } from "react"; + +export function LogoutWithOverride() { + const { isAuthenticated } = useImmutableSession(); + const { logout, isLoggingOut, error } = useLogout(); + const [customRedirectUri, setCustomRedirectUri] = useState(""); + + if (!isAuthenticated) { + return null; + } + + return ( +
+

Test Logout with Custom Redirect Override

+
+ setCustomRedirectUri(e.target.value)} + style={{ + width: '100%', + padding: '0.5rem', + fontSize: '0.9rem', + borderRadius: '0.25rem', + border: '1px solid #ccc', + }} + /> + + Leave empty to use default (http://localhost:3000) + +
+ + {error &&

Error: {error}

} +

+ This tests logout({ logoutRedirectUri: '...' })
+ Custom redirect after logout, but clientId is still auto-detected. +

+
+ ); +} diff --git a/examples/passport/auth-next-default-test/app/globals.css b/examples/passport/auth-next-default-test/app/globals.css new file mode 100644 index 0000000000..a098b26f90 --- /dev/null +++ b/examples/passport/auth-next-default-test/app/globals.css @@ -0,0 +1,63 @@ +body { + font-family: system-ui, -apple-system, sans-serif; + margin: 0; + padding: 2rem; + max-width: 800px; + margin: 0 auto; +} + +h1 { + color: #333; +} + +button { + background: #0070f3; + color: white; + border: none; + padding: 0.75rem 1.5rem; + font-size: 1rem; + border-radius: 0.5rem; + cursor: pointer; + margin: 0.5rem 0.5rem 0.5rem 0; +} + +button:hover { + background: #0051cc; +} + +button:disabled { + background: #ccc; + cursor: not-allowed; +} + +.error { + color: #ff0000; + margin-top: 1rem; +} + +.success { + color: #00aa00; + margin-top: 1rem; +} + +.info { + background: #f0f0f0; + padding: 1rem; + border-radius: 0.5rem; + margin: 1rem 0; +} + +.code { + background: #f5f5f5; + padding: 0.25rem 0.5rem; + border-radius: 0.25rem; + font-family: monospace; + font-size: 0.9rem; +} + +pre { + background: #f5f5f5; + padding: 1rem; + border-radius: 0.5rem; + overflow-x: auto; +} diff --git a/examples/passport/auth-next-default-test/app/layout.tsx b/examples/passport/auth-next-default-test/app/layout.tsx new file mode 100644 index 0000000000..e52c80274c --- /dev/null +++ b/examples/passport/auth-next-default-test/app/layout.tsx @@ -0,0 +1,22 @@ +import type { Metadata } from "next"; +import { Providers } from "./providers"; +import "./globals.css"; + +export const metadata: Metadata = { + title: "Default Auth Test", + description: "Testing @imtbl/auth-next-client and @imtbl/auth-next-server with default auth", +}; + +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode; +}>) { + return ( + + + {children} + + + ); +} diff --git a/examples/passport/auth-next-default-test/app/page.tsx b/examples/passport/auth-next-default-test/app/page.tsx new file mode 100644 index 0000000000..64cf22b5c5 --- /dev/null +++ b/examples/passport/auth-next-default-test/app/page.tsx @@ -0,0 +1,52 @@ +import { LoginButton } from "./components/LoginButton"; +import { LogoutButton } from "./components/LogoutButton"; +import { LoginWithOverride } from "./components/LoginWithOverride"; +import { LogoutWithOverride } from "./components/LogoutWithOverride"; +import { ConfigInfo } from "./components/ConfigInfo"; + +export default function Home() { + return ( +
+

🧪 Default Auth Test App

+

+ Testing @imtbl/auth-next-client and @imtbl/auth-next-server + with zero-config default auth. +

+ + + +
+ +

📋 Test 1: Zero Config (Full Defaults)

+ + +
+ + + +
+ +

📋 Test 2: Partial Config Override

+ + +
+ + + +
+ +
+

✅ Test Checklist

+
    +
  • ✅ No TypeScript errors
  • +
  • ✅ App starts without configuration errors
  • +
  • ✅ ClientId is auto-detected based on hostname
  • +
  • ✅ RedirectUri is auto-derived from origin
  • +
  • ✅ Login button works (opens Immutable auth)
  • +
  • ✅ Logout clears session properly
  • +
  • ⏳ Custom config overrides work
  • +
+
+
+ ); +} diff --git a/examples/passport/auth-next-default-test/app/providers.tsx b/examples/passport/auth-next-default-test/app/providers.tsx new file mode 100644 index 0000000000..f4cd92d4bc --- /dev/null +++ b/examples/passport/auth-next-default-test/app/providers.tsx @@ -0,0 +1,7 @@ +"use client"; + +import { SessionProvider } from "next-auth/react"; + +export function Providers({ children }: { children: React.ReactNode }) { + return {children}; +} diff --git a/examples/passport/auth-next-default-test/lib/auth.ts b/examples/passport/auth-next-default-test/lib/auth.ts new file mode 100644 index 0000000000..47686cc50d --- /dev/null +++ b/examples/passport/auth-next-default-test/lib/auth.ts @@ -0,0 +1,11 @@ +import NextAuth from "next-auth"; +import { createDefaultAuthConfig } from "@imtbl/auth-next-server"; + +/** + * Zero-config setup! + * Everything is auto-detected: + * - clientId: auto-detected based on environment (sandbox vs production) + * - redirectUri: auto-derived from window.location.origin + '/callback' + * - audience, scope, authenticationDomain: use sensible defaults + */ +export const { handlers, auth, signIn, signOut } = NextAuth(createDefaultAuthConfig() as any); diff --git a/examples/passport/auth-next-default-test/next-env.d.ts b/examples/passport/auth-next-default-test/next-env.d.ts new file mode 100644 index 0000000000..40c3d68096 --- /dev/null +++ b/examples/passport/auth-next-default-test/next-env.d.ts @@ -0,0 +1,5 @@ +/// +/// + +// NOTE: This file should not be edited +// see https://nextjs.org/docs/app/building-your-application/configuring/typescript for more information. diff --git a/examples/passport/auth-next-default-test/next.config.mjs b/examples/passport/auth-next-default-test/next.config.mjs new file mode 100644 index 0000000000..1d6147825a --- /dev/null +++ b/examples/passport/auth-next-default-test/next.config.mjs @@ -0,0 +1,4 @@ +/** @type {import('next').NextConfig} */ +const nextConfig = {} + +export default nextConfig diff --git a/examples/passport/auth-next-default-test/package.json b/examples/passport/auth-next-default-test/package.json new file mode 100644 index 0000000000..8c89e1a4dd --- /dev/null +++ b/examples/passport/auth-next-default-test/package.json @@ -0,0 +1,25 @@ +{ + "name": "@examples/auth-next-default-test", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "next lint" + }, + "dependencies": { + "@imtbl/auth-next-client": "workspace:*", + "@imtbl/auth-next-server": "workspace:*", + "next": "14.2.25", + "next-auth": "^5.0.0-beta.30", + "react": "^18.2.0", + "react-dom": "^18.2.0" + }, + "devDependencies": { + "@types/node": "^22", + "@types/react": "^18", + "@types/react-dom": "^18", + "typescript": "^5" + } +} diff --git a/examples/passport/auth-next-default-test/tsconfig.json b/examples/passport/auth-next-default-test/tsconfig.json new file mode 100644 index 0000000000..d81d4ee14e --- /dev/null +++ b/examples/passport/auth-next-default-test/tsconfig.json @@ -0,0 +1,40 @@ +{ + "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": { + "@/*": [ + "./*" + ] + }, + "target": "ES2017" + }, + "include": [ + "next-env.d.ts", + "**/*.ts", + "**/*.tsx", + ".next/types/**/*.ts" + ], + "exclude": [ + "node_modules" + ] +} diff --git a/examples/passport/wallets-connect-with-nextjs/.env b/examples/passport/wallets-connect-with-nextjs/.env index a0b975515f..3b4921917e 100644 --- a/examples/passport/wallets-connect-with-nextjs/.env +++ b/examples/passport/wallets-connect-with-nextjs/.env @@ -1,2 +1,5 @@ NEXT_PUBLIC_PUBLISHABLE_KEY="pk_imapik-test-5ss4GpFy-n@$$Ye3LSox" -NEXT_PUBLIC_CLIENT_ID="K846H940Uxokhz1aDb034QwBclYnAH24" \ No newline at end of file +NEXT_PUBLIC_CLIENT_ID="K846H940Uxokhz1aDb034QwBclYnAH24" + +# Required for Auth-Next example (NextAuth.js) +AUTH_SECRET="test-secret-key-for-development-minimum-32-characters-long-change-in-prod" \ No newline at end of file diff --git a/examples/passport/wallets-connect-with-nextjs/.env.example b/examples/passport/wallets-connect-with-nextjs/.env.example index 1947cf61ec..0975cd9377 100644 --- a/examples/passport/wallets-connect-with-nextjs/.env.example +++ b/examples/passport/wallets-connect-with-nextjs/.env.example @@ -1,2 +1,5 @@ NEXT_PUBLIC_PUBLISHABLE_KEY= -NEXT_PUBLIC_CLIENT_ID= \ No newline at end of file +NEXT_PUBLIC_CLIENT_ID= + +# Required for Auth-Next example (NextAuth.js) +AUTH_SECRET=your-secret-key-min-32-characters-long-change-this \ No newline at end of file diff --git a/examples/passport/wallets-connect-with-nextjs/README.md b/examples/passport/wallets-connect-with-nextjs/README.md index 1d568290df..dccf23b74f 100644 --- a/examples/passport/wallets-connect-with-nextjs/README.md +++ b/examples/passport/wallets-connect-with-nextjs/README.md @@ -10,7 +10,28 @@ pnpm dev browse to `http://localhost:3000` to see the full list of examples. +## Examples + +1. **Connect with EIP-1193** - Standard Ethereum provider +2. **Connect with EtherJS** - Using ethers.js library +3. **Connect with Wagmi** - Using wagmi library +4. **🆕 Connect with Auth-Next (Default Auth)** - Zero-config auth with `@imtbl/auth-next-client` + `@imtbl/wallet` + ## Required Environment Variables +### For Passport SDK Examples (EIP-1193, EtherJS, Wagmi) - NEXT_PUBLIC_PUBLISHABLE_KEY // replace with your publishable API key from Hub -- NEXT_PUBLIC_CLIENT_ID // replace with your client ID from Hub \ No newline at end of file +- NEXT_PUBLIC_CLIENT_ID // replace with your client ID from Hub + +### For Auth-Next Example (Default Auth) +- AUTH_SECRET // required for NextAuth.js (min 32 characters) +- No other variables needed! ClientId and redirectUri are auto-detected. + +## Auth-Next Default Auth + +The `/connect-with-auth-next` route demonstrates: +- Zero-config authentication using `@imtbl/auth-next-client` and `@imtbl/auth-next-server` +- Integration with `@imtbl/wallet` using the `getUser` function from `useImmutableSession()` +- Auto-detection of clientId (sandbox vs production based on hostname) +- Auto-derivation of redirectUri (from `window.location.origin`) +- Full wallet connection flow without manual configuration \ No newline at end of file diff --git a/examples/passport/wallets-connect-with-nextjs/app/api/auth/[...nextauth]/route.ts b/examples/passport/wallets-connect-with-nextjs/app/api/auth/[...nextauth]/route.ts new file mode 100644 index 0000000000..b970e52532 --- /dev/null +++ b/examples/passport/wallets-connect-with-nextjs/app/api/auth/[...nextauth]/route.ts @@ -0,0 +1,3 @@ +import { handlers } from "@/lib/auth-next"; + +export const { GET, POST } = handlers; diff --git a/examples/passport/wallets-connect-with-nextjs/app/callback-auth-next/page.tsx b/examples/passport/wallets-connect-with-nextjs/app/callback-auth-next/page.tsx new file mode 100644 index 0000000000..c741be7563 --- /dev/null +++ b/examples/passport/wallets-connect-with-nextjs/app/callback-auth-next/page.tsx @@ -0,0 +1,26 @@ +"use client"; + +import { CallbackPage } from "@imtbl/auth-next-client"; +import { + DEFAULT_PRODUCTION_CLIENT_ID, + DEFAULT_SANDBOX_CLIENT_ID, +} from "@imtbl/auth-next-client"; + +export default function AuthNextCallback() { + // Auto-detect environment and derive config + const isSandbox = typeof window !== 'undefined' && + (window.location.hostname.includes('sandbox') || window.location.hostname.includes('localhost')); + + const config = { + clientId: isSandbox ? DEFAULT_SANDBOX_CLIENT_ID : DEFAULT_PRODUCTION_CLIENT_ID, + redirectUri: typeof window !== 'undefined' ? `${window.location.origin}/callback-auth-next` : '/callback-auth-next', + }; + + return ( +
+

Processing authentication...

+ +
+ ); +} + diff --git a/examples/passport/wallets-connect-with-nextjs/app/connect-with-auth-next/page.tsx b/examples/passport/wallets-connect-with-nextjs/app/connect-with-auth-next/page.tsx new file mode 100644 index 0000000000..5d07bce4d0 --- /dev/null +++ b/examples/passport/wallets-connect-with-nextjs/app/connect-with-auth-next/page.tsx @@ -0,0 +1,160 @@ +'use client'; + +import { Button, Heading, Body } from '@biom3/react'; +import { useImmutableSession, useLogin, useLogout } from '@imtbl/auth-next-client'; +import { connectWallet } from '@imtbl/wallet'; +import { useState } from 'react'; +import { SessionProvider } from 'next-auth/react'; + +function ConnectWithAuthNextContent() { + const { isAuthenticated, session, getUser } = useImmutableSession(); + const { loginWithPopup, isLoggingIn, error: loginError } = useLogin(); + const { logout, isLoggingOut, error: logoutError } = useLogout(); + const [walletAddress, setWalletAddress] = useState(''); + const [walletError, setWalletError] = useState(''); + + const handleLogin = async () => { + try { + await loginWithPopup(); // Zero config! + } catch (err) { + console.error('Login failed:', err); + } + }; + + const handleLogout = async () => { + try { + await logout(); // Zero config! + } catch (err) { + console.error('Logout failed:', err); + } + }; + + const handleConnectWallet = async () => { + try { + setWalletError(''); + + // Connect wallet using getUser from useImmutableSession + const provider = await connectWallet({ + getUser, // Uses default auth from NextAuth session! + }); + + // Get the wallet address + const accounts = await provider.request({ + method: 'eth_requestAccounts' + }) as string[]; + + setWalletAddress(accounts[0]); + } catch (err) { + const errorMsg = err instanceof Error ? err.message : 'Failed to connect wallet'; + setWalletError(errorMsg); + console.error('Wallet connection failed:', err); + } + }; + + return ( +
+ + Connect Wallet with Auth-Next (Default Auth) + + + + This example demonstrates using @imtbl/auth-next-client and @imtbl/wallet + together with zero-config default auth. + + +
+ Status: {isAuthenticated ? '✅ Authenticated' : '❌ Not Authenticated'} + {session?.user?.email && ( +
+ Email: {session.user.email} +
+ )} + {walletAddress && ( +
+ Wallet: {walletAddress} +
+ )} +
+ + {!isAuthenticated ? ( + <> + + {loginError && ( +
+ Error: {loginError} +
+ )} + + Uses loginWithPopup() with no configuration. + ClientId and redirectUri are auto-detected! + + + ) : ( + <> + + + + + {walletError && ( +
+ Wallet Error: {walletError} +
+ )} + {logoutError && ( +
+ Logout Error: {logoutError} +
+ )} + +
+ ✅ Integration Test: +
    +
  • Auth via useImmutableSession()
  • +
  • Wallet via connectWallet({ getUser })
  • +
  • Zero configuration required!
  • +
+
+ + )} +
+ ); +} + +export default function ConnectWithAuthNext() { + return ( + + + + ); +} diff --git a/examples/passport/wallets-connect-with-nextjs/app/page.tsx b/examples/passport/wallets-connect-with-nextjs/app/page.tsx index 495318ba2c..786ee51c17 100644 --- a/examples/passport/wallets-connect-with-nextjs/app/page.tsx +++ b/examples/passport/wallets-connect-with-nextjs/app/page.tsx @@ -26,6 +26,12 @@ export default function Home() { size="medium" rc={}> Connect with Wagmi - + + ); } diff --git a/examples/passport/wallets-connect-with-nextjs/lib/auth-next.ts b/examples/passport/wallets-connect-with-nextjs/lib/auth-next.ts new file mode 100644 index 0000000000..9181164974 --- /dev/null +++ b/examples/passport/wallets-connect-with-nextjs/lib/auth-next.ts @@ -0,0 +1,8 @@ +import NextAuth from "next-auth"; +import { createDefaultAuthConfig } from "@imtbl/auth-next-server"; + +/** + * Default auth configuration for testing. + * This uses zero-config setup to demonstrate default auth functionality. + */ +export const { handlers, auth, signIn, signOut } = NextAuth(createDefaultAuthConfig() as any); diff --git a/examples/passport/wallets-connect-with-nextjs/package.json b/examples/passport/wallets-connect-with-nextjs/package.json index efa9960cea..4c0842ddeb 100644 --- a/examples/passport/wallets-connect-with-nextjs/package.json +++ b/examples/passport/wallets-connect-with-nextjs/package.json @@ -4,9 +4,13 @@ "dependencies": { "@biom3/react": "^0.27.12", "@imtbl/sdk": "workspace:*", + "@imtbl/auth-next-client": "workspace:*", + "@imtbl/auth-next-server": "workspace:*", + "@imtbl/wallet": "workspace:*", "@tanstack/react-query": "^5.51.11", "ethers": "^6.13.4", "next": "14.2.25", + "next-auth": "^5.0.0-beta.30", "react": "^18.2.0", "react-dom": "^18.2.0", "wagmi": "^2.11.3" diff --git a/packages/auth-next-client/package.json b/packages/auth-next-client/package.json index d1bad50656..4e82b43cd1 100644 --- a/packages/auth-next-client/package.json +++ b/packages/auth-next-client/package.json @@ -40,7 +40,7 @@ "@imtbl/auth-next-server": "workspace:*" }, "peerDependencies": { - "next": "^15.0.0", + "next": "^14.0.0 || ^15.0.0", "next-auth": "^5.0.0-beta.25", "react": "^18.2.0 || ^19.0.0" }, @@ -65,7 +65,7 @@ "@types/react": "^18.3.5", "eslint": "^8.56.0", "jest": "^29.7.0", - "next": "^15.1.6", + "next": "^14.2.25", "next-auth": "^5.0.0-beta.30", "react": "^18.2.0", "tsup": "^8.3.0", diff --git a/packages/auth-next-client/src/constants.ts b/packages/auth-next-client/src/constants.ts index 83a42e0522..5e684aca54 100644 --- a/packages/auth-next-client/src/constants.ts +++ b/packages/auth-next-client/src/constants.ts @@ -43,3 +43,18 @@ export const DEFAULT_TOKEN_EXPIRY_MS = DEFAULT_TOKEN_EXPIRY_SECONDS * 1000; * Matches TOKEN_EXPIRY_BUFFER_SECONDS (60s) in @imtbl/auth-next-server. */ export const TOKEN_EXPIRY_BUFFER_MS = 60 * 1000; + +/** + * Default Client IDs for auto-detection + * These are public client IDs for Immutable's default applications + */ +export const DEFAULT_PRODUCTION_CLIENT_ID = 'PtQRK4iRJ8GkXjiz6xfImMAYhPhW0cYk'; +export const DEFAULT_SANDBOX_CLIENT_ID = 'mjtCL8mt06BtbxSkp2vbrYStKWnXVZfo'; + +/** + * Default redirect URI paths + * Note: popupRedirectUri uses the same path as redirectUri to align with @imtbl/auth and @imtbl/wallet behavior + */ +export const DEFAULT_REDIRECT_URI_PATH = '/callback'; +export const DEFAULT_POPUP_REDIRECT_URI_PATH = '/callback'; +export const DEFAULT_LOGOUT_REDIRECT_URI_PATH = '/'; diff --git a/packages/auth-next-client/src/hooks.tsx b/packages/auth-next-client/src/hooks.tsx index 2aa038b79f..77fbf5fe3f 100644 --- a/packages/auth-next-client/src/hooks.tsx +++ b/packages/auth-next-client/src/hooks.tsx @@ -18,7 +18,18 @@ import { loginWithRedirect as rawLoginWithRedirect, logoutWithRedirect as rawLogoutWithRedirect, } from '@imtbl/auth'; -import { IMMUTABLE_PROVIDER_ID, TOKEN_EXPIRY_BUFFER_MS } from './constants'; +import { + IMMUTABLE_PROVIDER_ID, + TOKEN_EXPIRY_BUFFER_MS, + DEFAULT_PRODUCTION_CLIENT_ID, + DEFAULT_SANDBOX_CLIENT_ID, + DEFAULT_REDIRECT_URI_PATH, + DEFAULT_POPUP_REDIRECT_URI_PATH, + DEFAULT_LOGOUT_REDIRECT_URI_PATH, + DEFAULT_AUTH_DOMAIN, + DEFAULT_SCOPE, + DEFAULT_AUDIENCE, +} from './constants'; import { storeIdToken, getStoredIdToken, clearStoredIdToken } from './idTokenStorage'; // --------------------------------------------------------------------------- @@ -42,6 +53,113 @@ function deduplicatedUpdate( return pendingRefresh; } +// --------------------------------------------------------------------------- +// Default configuration helpers +// --------------------------------------------------------------------------- + +/** + * Detect if we're in a sandbox/test environment based on the current URL. + * Checks if the hostname includes 'sandbox' or 'localhost'. + * + * @returns true if in sandbox environment, false otherwise + * @internal + */ +function isSandboxEnvironment(): boolean { + if (typeof window === 'undefined') { + return false; + } + + const hostname = window.location.hostname.toLowerCase(); + return hostname.includes('sandbox') || hostname.includes('localhost'); +} + +/** + * Derive the default clientId based on the environment. + * Uses public Immutable client IDs for sandbox and production. + * + * @returns Default client ID for the current environment + * @internal + */ +function deriveDefaultClientId(): string { + return isSandboxEnvironment() ? DEFAULT_SANDBOX_CLIENT_ID : DEFAULT_PRODUCTION_CLIENT_ID; +} + +/** + * Derive the default redirectUri based on the current URL. + * + * @returns Default redirect URI + * @internal + */ +function deriveDefaultRedirectUri(): string { + if (typeof window === 'undefined') { + return DEFAULT_REDIRECT_URI_PATH; + } + + return `${window.location.origin}${DEFAULT_REDIRECT_URI_PATH}`; +} + +/** + * Derive the default popupRedirectUri based on the current URL. + * + * @returns Default popup redirect URI + * @internal + */ +function deriveDefaultPopupRedirectUri(): string { + if (typeof window === 'undefined') { + return DEFAULT_POPUP_REDIRECT_URI_PATH; + } + + return `${window.location.origin}${DEFAULT_POPUP_REDIRECT_URI_PATH}`; +} + +/** + * Derive the default logoutRedirectUri based on the current URL. + * + * @returns Default logout redirect URI + * @internal + */ +function deriveDefaultLogoutRedirectUri(): string { + if (typeof window === 'undefined') { + return DEFAULT_LOGOUT_REDIRECT_URI_PATH; + } + + return window.location.origin + DEFAULT_LOGOUT_REDIRECT_URI_PATH; +} + +/** + * Create a complete LoginConfig with default values. + * All fields are optional and will be auto-derived if not provided. + * + * @param config - Optional partial login configuration + * @returns Complete LoginConfig with defaults applied + * @internal + */ +function createDefaultLoginConfig(config?: Partial): LoginConfig { + return { + clientId: config?.clientId || deriveDefaultClientId(), + redirectUri: config?.redirectUri || deriveDefaultRedirectUri(), + popupRedirectUri: config?.popupRedirectUri || deriveDefaultPopupRedirectUri(), + scope: config?.scope || DEFAULT_SCOPE, + audience: config?.audience || DEFAULT_AUDIENCE, + authenticationDomain: config?.authenticationDomain || DEFAULT_AUTH_DOMAIN, + }; +} + +/** + * Create a complete LogoutConfig with default values. + * All fields are optional and will be auto-derived if not provided. + * + * @param config - Optional partial logout configuration + * @returns Complete LogoutConfig with defaults applied + * @internal + */ +function createDefaultLogoutConfig(config?: Partial): LogoutConfig { + return { + clientId: config?.clientId || deriveDefaultClientId(), + logoutRedirectUri: config?.logoutRedirectUri || deriveDefaultLogoutRedirectUri(), + }; +} + /** * Internal session type with full token data (not exported). * Used internally by the hook for token validation, refresh logic, and getUser/getAccessToken. @@ -344,11 +462,11 @@ export function useImmutableSession(): UseImmutableSessionReturn { */ export interface UseLoginReturn { /** Start login with popup flow */ - loginWithPopup: (config: LoginConfig, options?: StandaloneLoginOptions) => Promise; + loginWithPopup: (config?: Partial, options?: StandaloneLoginOptions) => Promise; /** Start login with embedded modal flow */ - loginWithEmbedded: (config: LoginConfig) => Promise; + loginWithEmbedded: (config?: Partial) => Promise; /** Start login with redirect flow (navigates away from page) */ - loginWithRedirect: (config: LoginConfig, options?: StandaloneLoginOptions) => Promise; + loginWithRedirect: (config?: Partial, options?: StandaloneLoginOptions) => Promise; /** Whether login is currently in progress */ isLoggingIn: boolean; /** Error message from the last login attempt, or null if none */ @@ -356,39 +474,69 @@ export interface UseLoginReturn { } /** - * Hook to handle Immutable authentication login flows. + * Hook to handle Immutable authentication login flows with automatic defaults. * * Provides login functions that: * 1. Handle OAuth authentication via popup, embedded modal, or redirect * 2. Automatically sign in to NextAuth after successful authentication * 3. Track loading and error states + * 4. Auto-detect clientId and redirectUri if not provided (uses defaults) * - * Config is passed at call time to allow different configurations for different - * login methods (e.g., different redirectUri vs popupRedirectUri). + * Config can be passed at call time or omitted to use sensible defaults: + * - `clientId`: Auto-detected based on environment (sandbox vs production) + * - `redirectUri`: Auto-derived from `window.location.origin + '/callback'` + * - `popupRedirectUri`: Auto-derived from `window.location.origin + '/callback'` (same as redirectUri) + * - `logoutRedirectUri`: Auto-derived from `window.location.origin` + * - `scope`: `'openid profile email offline_access transact'` + * - `audience`: `'platform_api'` + * - `authenticationDomain`: `'https://auth.immutable.com'` * * Must be used within a SessionProvider from next-auth/react. * - * @example + * @example Minimal usage (uses all defaults) * ```tsx * import { useLogin, useImmutableSession } from '@imtbl/auth-next-client'; * - * const config = { - * clientId: process.env.NEXT_PUBLIC_IMMUTABLE_CLIENT_ID!, - * redirectUri: `${process.env.NEXT_PUBLIC_BASE_URL}/callback`, - * popupRedirectUri: `${process.env.NEXT_PUBLIC_BASE_URL}/callback/popup`, - * }; + * function LoginButton() { + * const { isAuthenticated } = useImmutableSession(); + * const { loginWithPopup, isLoggingIn, error } = useLogin(); + * + * if (isAuthenticated) { + * return

You are logged in!

; + * } + * + * return ( + * <> + * + * {error &&

{error}

} + * + * ); + * } + * ``` + * + * @example With custom configuration + * ```tsx + * import { useLogin, useImmutableSession } from '@imtbl/auth-next-client'; * * function LoginButton() { * const { isAuthenticated } = useImmutableSession(); * const { loginWithPopup, isLoggingIn, error } = useLogin(); * + * const handleLogin = () => { + * loginWithPopup({ + * clientId: process.env.NEXT_PUBLIC_IMMUTABLE_CLIENT_ID, // Use your own client ID + * }); + * }; + * * if (isAuthenticated) { * return

You are logged in!

; * } * * return ( * <> - * * {error &&

{error}

} @@ -434,16 +582,18 @@ export function useLogin(): UseLoginReturn { /** * Login with a popup window. * Opens a popup for OAuth authentication, then signs in to NextAuth. + * Config is optional - defaults will be auto-derived if not provided. */ const loginWithPopup = useCallback(async ( - config: LoginConfig, + config?: Partial, options?: StandaloneLoginOptions, ): Promise => { setIsLoggingIn(true); setError(null); try { - const tokens = await rawLoginWithPopup(config, options); + const fullConfig = createDefaultLoginConfig(config); + const tokens = await rawLoginWithPopup(fullConfig, options); await signInWithTokens(tokens); } catch (err) { const errorMessage = err instanceof Error ? err.message : 'Login failed'; @@ -457,13 +607,15 @@ export function useLogin(): UseLoginReturn { /** * Login with an embedded modal. * Shows a modal for login method selection, then opens a popup for OAuth. + * Config is optional - defaults will be auto-derived if not provided. */ - const loginWithEmbedded = useCallback(async (config: LoginConfig): Promise => { + const loginWithEmbedded = useCallback(async (config?: Partial): Promise => { setIsLoggingIn(true); setError(null); try { - const tokens = await rawLoginWithEmbedded(config); + const fullConfig = createDefaultLoginConfig(config); + const tokens = await rawLoginWithEmbedded(fullConfig); await signInWithTokens(tokens); } catch (err) { const errorMessage = err instanceof Error ? err.message : 'Login failed'; @@ -479,16 +631,18 @@ export function useLogin(): UseLoginReturn { * Redirects the page to OAuth authentication. * After authentication, the user will be redirected to your callback page. * Use the CallbackPage component to complete the flow. + * Config is optional - defaults will be auto-derived if not provided. */ const loginWithRedirect = useCallback(async ( - config: LoginConfig, + config?: Partial, options?: StandaloneLoginOptions, ): Promise => { setIsLoggingIn(true); setError(null); try { - await rawLoginWithRedirect(config, options); + const fullConfig = createDefaultLoginConfig(config); + await rawLoginWithRedirect(fullConfig, options); // Note: The page will redirect, so this code may not run } catch (err) { const errorMessage = err instanceof Error ? err.message : 'Login failed'; @@ -518,9 +672,11 @@ export interface UseLogoutReturn { * This ensures that when the user logs in again, they will be prompted to select * an account instead of being automatically logged in with the previous account. * - * @param config - Logout configuration with clientId and optional redirectUri + * Config is optional - defaults will be auto-derived if not provided. + * + * @param config - Optional logout configuration with clientId and optional redirectUri */ - logout: (config: LogoutConfig) => Promise; + logout: (config?: Partial) => Promise; /** Whether logout is currently in progress */ isLoggingOut: boolean; /** Error message from the last logout attempt, or null if none */ @@ -538,16 +694,38 @@ export interface UseLogoutReturn { * an account (for social logins like Google) instead of being automatically logged * in with the previous account. * + * Config is optional - defaults will be auto-derived if not provided: + * - `clientId`: Auto-detected based on environment (sandbox vs production) + * - `logoutRedirectUri`: Auto-derived from `window.location.origin` + * * Must be used within a SessionProvider from next-auth/react. * - * @example + * @example Minimal usage (uses all defaults) * ```tsx * import { useLogout, useImmutableSession } from '@imtbl/auth-next-client'; * - * const logoutConfig = { - * clientId: process.env.NEXT_PUBLIC_IMMUTABLE_CLIENT_ID!, - * logoutRedirectUri: process.env.NEXT_PUBLIC_BASE_URL!, - * }; + * function LogoutButton() { + * const { isAuthenticated } = useImmutableSession(); + * const { logout, isLoggingOut, error } = useLogout(); + * + * if (!isAuthenticated) { + * return null; + * } + * + * return ( + * <> + * + * {error &&

{error}

} + * + * ); + * } + * ``` + * + * @example With custom configuration + * ```tsx + * import { useLogout, useImmutableSession } from '@imtbl/auth-next-client'; * * function LogoutButton() { * const { isAuthenticated } = useImmutableSession(); @@ -559,7 +737,13 @@ export interface UseLogoutReturn { * * return ( * <> - * * {error &&

{error}

} @@ -575,8 +759,9 @@ export function useLogout(): UseLogoutReturn { /** * Logout with federated logout. * First clears the NextAuth session, then redirects to the auth domain's logout endpoint. + * Config is optional - defaults will be auto-derived if not provided. */ - const logout = useCallback(async (config: LogoutConfig): Promise => { + const logout = useCallback(async (config?: Partial): Promise => { setIsLoggingOut(true); setError(null); @@ -588,10 +773,13 @@ export function useLogout(): UseLogoutReturn { // We use redirect: false to handle the redirect ourselves for federated logout await signOut({ redirect: false }); + // Create full config with defaults + const fullConfig = createDefaultLogoutConfig(config); + // Redirect to the auth domain's logout endpoint using the standalone function // This clears the upstream session (Auth0/Immutable) so that on next login, // the user will be prompted to select an account instead of auto-logging in - rawLogoutWithRedirect(config); + rawLogoutWithRedirect(fullConfig); } catch (err) { const errorMessage = err instanceof Error ? err.message : 'Logout failed'; setError(errorMessage); diff --git a/packages/auth-next-client/src/index.ts b/packages/auth-next-client/src/index.ts index c736255677..4b35ad48a5 100644 --- a/packages/auth-next-client/src/index.ts +++ b/packages/auth-next-client/src/index.ts @@ -59,3 +59,16 @@ export type { LogoutConfig, } from '@imtbl/auth'; export { MarketingConsentStatus } from '@imtbl/auth'; + +// Re-export constants for consumer convenience +export { + DEFAULT_AUTH_DOMAIN, + DEFAULT_AUDIENCE, + DEFAULT_SCOPE, + IMMUTABLE_PROVIDER_ID, + DEFAULT_PRODUCTION_CLIENT_ID, + DEFAULT_SANDBOX_CLIENT_ID, + DEFAULT_REDIRECT_URI_PATH, + DEFAULT_POPUP_REDIRECT_URI_PATH, + DEFAULT_LOGOUT_REDIRECT_URI_PATH, +} from './constants'; diff --git a/packages/auth-next-server/package.json b/packages/auth-next-server/package.json index 898009d481..bd9650bb5a 100644 --- a/packages/auth-next-server/package.json +++ b/packages/auth-next-server/package.json @@ -36,7 +36,7 @@ "test": "jest --passWithNoTests" }, "peerDependencies": { - "next": "^15.0.0", + "next": "^14.0.0 || ^15.0.0", "next-auth": "^5.0.0-beta.25" }, "peerDependenciesMeta": { @@ -54,7 +54,7 @@ "@types/node": "^22.10.7", "eslint": "^8.56.0", "jest": "^29.7.0", - "next": "^15.1.6", + "next": "^14.2.25", "next-auth": "^5.0.0-beta.30", "tsup": "^8.3.0", "typescript": "^5.6.2" diff --git a/packages/auth-next-server/src/config.ts b/packages/auth-next-server/src/config.ts index 877bcda08f..cb7ffede47 100644 --- a/packages/auth-next-server/src/config.ts +++ b/packages/auth-next-server/src/config.ts @@ -10,6 +10,9 @@ import { DEFAULT_AUTH_DOMAIN, IMMUTABLE_PROVIDER_ID, DEFAULT_SESSION_MAX_AGE_SECONDS, + DEFAULT_PRODUCTION_CLIENT_ID, + DEFAULT_SANDBOX_CLIENT_ID, + DEFAULT_REDIRECT_URI_PATH, } from './constants'; // Handle ESM/CJS interop - in some bundler configurations, the default export @@ -19,6 +22,51 @@ const Credentials = ((CredentialsImport as any).default || CredentialsImport) as // eslint-disable-next-line @typescript-eslint/no-explicit-any const defaultJwtEncode = ((encodeImport as any).default || encodeImport) as typeof encodeImport; +/** + * Detect if we're in a sandbox/test environment based on the current URL. + * Checks if the hostname includes 'sandbox' or 'localhost'. + * Server-side safe: returns false if window is not available. + * + * @returns true if in sandbox environment, false otherwise + * @internal + */ +function isSandboxEnvironment(): boolean { + if (typeof window === 'undefined') { + // Server-side: cannot detect, default to production for safety + return false; + } + + const hostname = window.location.hostname.toLowerCase(); + return hostname.includes('sandbox') || hostname.includes('localhost'); +} + +/** + * Derive the default clientId based on the environment. + * Uses public Immutable client IDs for sandbox and production. + * + * @returns Default client ID for the current environment + * @internal + */ +function deriveDefaultClientId(): string { + return isSandboxEnvironment() ? DEFAULT_SANDBOX_CLIENT_ID : DEFAULT_PRODUCTION_CLIENT_ID; +} + +/** + * Derive the default redirectUri based on the current URL. + * Server-side safe: returns a placeholder that will be replaced client-side. + * + * @returns Default redirect URI + * @internal + */ +function deriveDefaultRedirectUri(): string { + if (typeof window === 'undefined') { + // Server-side: return path only, will be combined with window.location.origin client-side + return DEFAULT_REDIRECT_URI_PATH; + } + + return `${window.location.origin}${DEFAULT_REDIRECT_URI_PATH}`; +} + /** * Validate tokens by calling the userinfo endpoint. * This is the standard OAuth 2.0 way to validate access tokens server-side. @@ -324,3 +372,50 @@ export function createAuthConfig(config: ImmutableAuthConfig): NextAuthConfig { // Keep backwards compatibility alias export const createAuthOptions = createAuthConfig; + +/** + * Create Auth.js v5 configuration for Immutable authentication with all parameters optional. + * + * This is a convenience wrapper around `createAuthConfig` that provides sensible defaults: + * - Auto-detects `clientId` based on environment (sandbox vs production) + * - Auto-derives `redirectUri` from `window.location.origin + '/callback'` + * - Uses default values for `audience`, `scope`, and `authenticationDomain` + * + * **Important**: This uses public Immutable client IDs for development convenience. + * For production applications, you should use your own client ID from Immutable Hub. + * + * @param config - Optional partial configuration. All fields can be overridden. + * @returns Auth.js v5 configuration object + * + * @example + * ```typescript + * // Minimal setup - all defaults + * import NextAuth from "next-auth"; + * import { createDefaultAuthConfig } from "@imtbl/auth-next-server"; + * + * export const { handlers, auth, signIn, signOut } = NextAuth(createDefaultAuthConfig()); + * ``` + * + * @example + * ```typescript + * // Override specific fields + * import NextAuth from "next-auth"; + * import { createDefaultAuthConfig } from "@imtbl/auth-next-server"; + * + * export const { handlers, auth, signIn, signOut } = NextAuth(createDefaultAuthConfig({ + * clientId: process.env.NEXT_PUBLIC_IMMUTABLE_CLIENT_ID, // Use your own client ID + * })); + * ``` + */ +export function createDefaultAuthConfig(config?: Partial): NextAuthConfig { + const clientId = config?.clientId || deriveDefaultClientId(); + const redirectUri = config?.redirectUri || deriveDefaultRedirectUri(); + + return createAuthConfig({ + clientId, + redirectUri, + audience: config?.audience, + scope: config?.scope, + authenticationDomain: config?.authenticationDomain, + }); +} diff --git a/packages/auth-next-server/src/constants.ts b/packages/auth-next-server/src/constants.ts index 48c8926f2b..e087fb16f7 100644 --- a/packages/auth-next-server/src/constants.ts +++ b/packages/auth-next-server/src/constants.ts @@ -49,3 +49,15 @@ export const TOKEN_EXPIRY_BUFFER_SECONDS = 60; * This is how long the NextAuth session cookie will be valid */ export const DEFAULT_SESSION_MAX_AGE_SECONDS = 365 * 24 * 60 * 60; + +/** + * Default Client IDs for auto-detection + * These are public client IDs for Immutable's default applications + */ +export const DEFAULT_PRODUCTION_CLIENT_ID = 'PtQRK4iRJ8GkXjiz6xfImMAYhPhW0cYk'; +export const DEFAULT_SANDBOX_CLIENT_ID = 'mjtCL8mt06BtbxSkp2vbrYStKWnXVZfo'; + +/** + * Default redirect URI fallback (will be replaced at runtime with window.location.origin + '/callback') + */ +export const DEFAULT_REDIRECT_URI_PATH = '/callback'; diff --git a/packages/auth-next-server/src/index.ts b/packages/auth-next-server/src/index.ts index 0f83d99366..f57a8f2471 100644 --- a/packages/auth-next-server/src/index.ts +++ b/packages/auth-next-server/src/index.ts @@ -37,7 +37,7 @@ export { default as NextAuth } from 'next-auth'; // Re-export config utilities // ============================================================================ -export { createAuthConfig, createAuthOptions } from './config'; +export { createAuthConfig, createDefaultAuthConfig, createAuthOptions } from './config'; export { isTokenExpired, refreshAccessToken, @@ -45,6 +45,16 @@ export { type RefreshedTokens, type ZkEvmData, } from './refresh'; +export { + DEFAULT_AUTH_DOMAIN, + DEFAULT_AUDIENCE, + DEFAULT_SCOPE, + IMMUTABLE_PROVIDER_ID, + DEFAULT_NEXTAUTH_BASE_PATH, + DEFAULT_PRODUCTION_CLIENT_ID, + DEFAULT_SANDBOX_CLIENT_ID, + DEFAULT_REDIRECT_URI_PATH, +} from './constants'; // ============================================================================ // Type exports diff --git a/packages/wallet/src/connectWallet.test.ts b/packages/wallet/src/connectWallet.test.ts index b4cc795dd2..6b8246e495 100644 --- a/packages/wallet/src/connectWallet.test.ts +++ b/packages/wallet/src/connectWallet.test.ts @@ -1,17 +1,21 @@ -jest.mock('@imtbl/auth', () => { - const Auth = jest.fn().mockImplementation(() => ({ - getConfig: jest.fn().mockReturnValue({ - authenticationDomain: 'https://auth.immutable.com', - passportDomain: 'https://passport.immutable.com', - oidcConfiguration: { - clientId: 'client', - redirectUri: 'https://redirect', - }, - }), - getUser: jest.fn().mockResolvedValue({ profile: { sub: 'user' } }), - getUserOrLogin: jest.fn().mockResolvedValue({ profile: { sub: 'user' }, accessToken: 'token' }), - })); +// Mock Auth with configurable behavior +const mockAuthInstance = { + getConfig: jest.fn().mockReturnValue({ + authenticationDomain: 'https://auth.immutable.com', + passportDomain: 'https://passport.immutable.com', + oidcConfiguration: { + clientId: 'client', + redirectUri: 'https://redirect', + }, + }), + getUser: jest.fn().mockResolvedValue({ profile: { sub: 'user' } }), + getUserOrLogin: jest.fn().mockResolvedValue({ profile: { sub: 'user' }, accessToken: 'token' }), + loginCallback: jest.fn().mockResolvedValue(undefined), +}; + +const Auth = jest.fn().mockImplementation(() => mockAuthInstance); +jest.mock('@imtbl/auth', () => { const TypedEventEmitter = jest.fn().mockImplementation(() => ({ emit: jest.fn(), on: jest.fn(), @@ -70,26 +74,461 @@ const createGetUserMock = () => jest.fn().mockResolvedValue({ describe('connectWallet', () => { beforeEach(() => { jest.clearAllMocks(); + Auth.mockClear(); + mockAuthInstance.getUser.mockClear(); + mockAuthInstance.getUserOrLogin.mockClear(); + mockAuthInstance.loginCallback.mockClear(); }); - it('announces provider by default', async () => { - const getUser = createGetUserMock(); + describe('with external getUser (existing tests)', () => { + it('announces provider by default', async () => { + const getUser = createGetUserMock(); + + const provider = await connectWallet({ getUser, chains: [zkEvmChain] }); + + expect(ZkEvmProvider).toHaveBeenCalled(); + expect(announceProvider).toHaveBeenCalledWith({ + info: expect.any(Object), + provider, + }); + }); + + it('does not announce provider when disabled', async () => { + const getUser = createGetUserMock(); + + await connectWallet({ getUser, chains: [zkEvmChain], announceProvider: false }); - const provider = await connectWallet({ getUser, chains: [zkEvmChain] }); + expect(announceProvider).not.toHaveBeenCalled(); + }); + + it('uses provided getUser when supplied', async () => { + const getUser = createGetUserMock(); - expect(ZkEvmProvider).toHaveBeenCalled(); - expect(announceProvider).toHaveBeenCalledWith({ - info: expect.any(Object), - provider, + await connectWallet({ getUser, chains: [zkEvmChain] }); + + // Should NOT create internal Auth instance + expect(Auth).not.toHaveBeenCalled(); + // Should use the provided getUser + expect(getUser).toHaveBeenCalled(); }); }); - it('does not announce provider when disabled', async () => { - const getUser = createGetUserMock(); + describe('default auth (no getUser provided)', () => { + describe('Auth instance creation', () => { + it('creates internal Auth instance when getUser is not provided', async () => { + await connectWallet({ chains: [zkEvmChain] }); + + expect(Auth).toHaveBeenCalledTimes(1); + expect(Auth).toHaveBeenCalledWith( + expect.objectContaining({ + scope: 'openid profile email offline_access transact', + audience: 'platform_api', + authenticationDomain: 'https://auth.immutable.com', + }), + ); + }); + + it('uses getUserOrLogin from internal Auth', async () => { + await connectWallet({ chains: [zkEvmChain] }); + + // Internal Auth's getUserOrLogin should be called during setup + expect(mockAuthInstance.getUserOrLogin).toHaveBeenCalled(); + }); + + it('derives passportDomain from chain apiUrl', async () => { + const customChain = { + ...zkEvmChain, + apiUrl: 'https://api.custom.immutable.com', + }; + + await connectWallet({ chains: [customChain] }); + + expect(Auth).toHaveBeenCalledWith( + expect.objectContaining({ + passportDomain: 'https://passport.custom.immutable.com', + }), + ); + }); + + it('uses provided passportDomain if specified in chain config', async () => { + const customChain = { + ...zkEvmChain, + passportDomain: 'https://custom-passport.immutable.com', + }; + + await connectWallet({ chains: [customChain] }); - await connectWallet({ getUser, chains: [zkEvmChain], announceProvider: false }); + expect(Auth).toHaveBeenCalledWith( + expect.objectContaining({ + passportDomain: 'https://custom-passport.immutable.com', + }), + ); + }); - expect(announceProvider).not.toHaveBeenCalled(); + it('uses default redirect URI fallback', async () => { + await connectWallet({ chains: [zkEvmChain] }); + + expect(Auth).toHaveBeenCalledWith( + expect.objectContaining({ + redirectUri: 'https://auth.immutable.com/im-logged-in', + popupRedirectUri: 'https://auth.immutable.com/im-logged-in', + logoutRedirectUri: 'https://auth.immutable.com/im-logged-in', + }), + ); + }); + + it('passes popupOverlayOptions to Auth', async () => { + const popupOverlayOptions = { + disableGenericPopupOverlay: true, + disableBlockedPopupOverlay: false, + }; + + await connectWallet({ chains: [zkEvmChain], popupOverlayOptions }); + + expect(Auth).toHaveBeenCalledWith( + expect.objectContaining({ + popupOverlayOptions, + }), + ); + }); + + it('passes crossSdkBridgeEnabled to Auth', async () => { + await connectWallet({ chains: [zkEvmChain], crossSdkBridgeEnabled: true }); + + expect(Auth).toHaveBeenCalledWith( + expect.objectContaining({ + crossSdkBridgeEnabled: true, + }), + ); + }); + }); + + describe('clientId auto-detection', () => { + it('uses sandbox client ID for testnet chain (chainId 13473)', async () => { + const testnetChain = { + ...zkEvmChain, + chainId: 13473, + apiUrl: 'https://api.sandbox.immutable.com', + }; + + await connectWallet({ chains: [testnetChain] }); + + expect(Auth).toHaveBeenCalledWith( + expect.objectContaining({ + clientId: 'mjtCL8mt06BtbxSkp2vbrYStKWnXVZfo', // Sandbox client ID + }), + ); + }); + + it('uses production client ID for mainnet chain (chainId 13371)', async () => { + const mainnetChain = { + chainId: 13371, + rpcUrl: 'https://rpc.immutable.com', + relayerUrl: 'https://relayer.immutable.com', + apiUrl: 'https://api.immutable.com', + name: 'Immutable zkEVM Mainnet', + }; + + await connectWallet({ chains: [mainnetChain] }); + + expect(Auth).toHaveBeenCalledWith( + expect.objectContaining({ + clientId: 'PtQRK4iRJ8GkXjiz6xfImMAYhPhW0cYk', // Production client ID + }), + ); + }); + + it('detects sandbox from apiUrl containing "sandbox"', async () => { + const sandboxChain = { + chainId: 99999, // unknown chainId + rpcUrl: 'https://rpc.custom.com', + relayerUrl: 'https://relayer.custom.com', + apiUrl: 'https://api.sandbox.custom.com', // "sandbox" in URL + name: 'Custom Sandbox Chain', + magicPublishableApiKey: 'pk_test_123', + magicProviderId: 'provider-123', + }; + + await connectWallet({ chains: [sandboxChain] }); + + expect(Auth).toHaveBeenCalledWith( + expect.objectContaining({ + clientId: 'mjtCL8mt06BtbxSkp2vbrYStKWnXVZfo', // Sandbox client ID + }), + ); + }); + + it('detects sandbox from apiUrl containing "testnet"', async () => { + const testnetChain = { + chainId: 99999, + rpcUrl: 'https://rpc.testnet.custom.com', + relayerUrl: 'https://relayer.testnet.custom.com', + apiUrl: 'https://api.testnet.custom.com', // "testnet" in URL + name: 'Custom Testnet Chain', + magicPublishableApiKey: 'pk_test_123', + magicProviderId: 'provider-123', + }; + + await connectWallet({ chains: [testnetChain] }); + + expect(Auth).toHaveBeenCalledWith( + expect.objectContaining({ + clientId: 'mjtCL8mt06BtbxSkp2vbrYStKWnXVZfo', // Sandbox client ID + }), + ); + }); + + it('uses provided clientId when explicitly set', async () => { + const customClientId = 'custom-client-id-123'; + + await connectWallet({ chains: [zkEvmChain], clientId: customClientId }); + + expect(Auth).toHaveBeenCalledWith( + expect.objectContaining({ + clientId: customClientId, + }), + ); + }); + + it('prefers provided clientId over auto-detected one', async () => { + const customClientId = 'custom-client-id-456'; + const mainnetChain = { + chainId: 13371, + rpcUrl: 'https://rpc.immutable.com', + relayerUrl: 'https://relayer.immutable.com', + apiUrl: 'https://api.immutable.com', + name: 'Immutable zkEVM Mainnet', + }; + + await connectWallet({ chains: [mainnetChain], clientId: customClientId }); + + // Should use custom, not production client ID + expect(Auth).toHaveBeenCalledWith( + expect.objectContaining({ + clientId: customClientId, + }), + ); + }); + }); + + describe('popup callback handling', () => { + it('sets up message listener for popup callback', async () => { + const addEventListenerSpy = jest.spyOn(window, 'addEventListener'); + + await connectWallet({ chains: [zkEvmChain] }); + + expect(addEventListenerSpy).toHaveBeenCalledWith('message', expect.any(Function)); + + addEventListenerSpy.mockRestore(); + }); + + it('handles OAuth callback message with code and state', async () => { + let messageHandler: ((event: MessageEvent) => void) | null = null; + const addEventListenerSpy = jest.spyOn(window, 'addEventListener').mockImplementation((event, handler) => { + if (event === 'message') { + messageHandler = handler as (event: MessageEvent) => void; + } + }); + + const replaceStateSpy = jest.spyOn(window.history, 'replaceState').mockImplementation(() => {}); + + await connectWallet({ chains: [zkEvmChain] }); + + expect(messageHandler).not.toBeNull(); + + // Simulate popup callback message + const callbackMessage = { + data: { + code: 'auth-code-123', + state: 'state-456', + }, + } as MessageEvent; + + // Trigger the message event + const promise = messageHandler!(callbackMessage); + + // Wait for async operations + await promise; + await Promise.resolve(); + + // Should call Auth.loginCallback + expect(mockAuthInstance.loginCallback).toHaveBeenCalled(); + + // Should update browser history with code/state + expect(replaceStateSpy).toHaveBeenCalledTimes(2); + + addEventListenerSpy.mockRestore(); + replaceStateSpy.mockRestore(); + }); + + it('ignores messages without code and state', async () => { + let messageHandler: ((event: MessageEvent) => void) | null = null; + const addEventListenerSpy = jest.spyOn(window, 'addEventListener').mockImplementation((event, handler) => { + if (event === 'message') { + messageHandler = handler as (event: MessageEvent) => void; + } + }); + + await connectWallet({ chains: [zkEvmChain] }); + + // Simulate non-callback message + const regularMessage = { + data: { + someOtherData: 'value', + }, + } as MessageEvent; + + messageHandler!(regularMessage); + + await Promise.resolve(); + + // Should NOT call Auth.loginCallback + expect(mockAuthInstance.loginCallback).not.toHaveBeenCalled(); + + addEventListenerSpy.mockRestore(); + }); + + it('updates query string with code and state during callback', async () => { + let messageHandler: ((event: MessageEvent) => void) | null = null; + const addEventListenerSpy = jest.spyOn(window, 'addEventListener').mockImplementation((event, handler) => { + if (event === 'message') { + messageHandler = handler as (event: MessageEvent) => void; + } + }); + + const replaceStateSpy = jest.spyOn(window.history, 'replaceState').mockImplementation(() => {}); + + // Mock window.location.search + Object.defineProperty(window, 'location', { + value: { search: '?existing=param' }, + writable: true, + }); + + await connectWallet({ chains: [zkEvmChain] }); + + const callbackMessage = { + data: { + code: 'test-code', + state: 'test-state', + }, + } as MessageEvent; + + const promise = messageHandler!(callbackMessage); + await promise; + await Promise.resolve(); + + // First call: add code and state + expect(replaceStateSpy).toHaveBeenNthCalledWith( + 1, + null, + '', + expect.stringContaining('code=test-code'), + ); + expect(replaceStateSpy).toHaveBeenNthCalledWith( + 1, + null, + '', + expect.stringContaining('state=test-state'), + ); + + // Second call: remove code and state after callback + expect(replaceStateSpy).toHaveBeenNthCalledWith( + 2, + null, + '', + expect.not.stringContaining('code='), + ); + + addEventListenerSpy.mockRestore(); + replaceStateSpy.mockRestore(); + }); + }); + + describe('provider creation with default auth', () => { + it('creates provider successfully without getUser', async () => { + const provider = await connectWallet({ chains: [zkEvmChain] }); + + expect(provider).toBeDefined(); + expect(ZkEvmProvider).toHaveBeenCalled(); + }); + + it('passes getUser function to ZkEvmProvider', async () => { + await connectWallet({ chains: [zkEvmChain] }); + + const zkEvmProviderCall = (ZkEvmProvider as jest.Mock).mock.calls[0][0]; + expect(zkEvmProviderCall.getUser).toEqual(expect.any(Function)); + }); + + it('passes clientId to ZkEvmProvider', async () => { + await connectWallet({ chains: [zkEvmChain] }); + + const zkEvmProviderCall = (ZkEvmProvider as jest.Mock).mock.calls[0][0]; + expect(zkEvmProviderCall.clientId).toBe('mjtCL8mt06BtbxSkp2vbrYStKWnXVZfo'); + }); + + it('works with custom chain configuration', async () => { + const customChain = { + chainId: 99999, + rpcUrl: 'https://rpc.custom.com', + relayerUrl: 'https://relayer.custom.com', + apiUrl: 'https://api.custom.com', + passportDomain: 'https://passport.custom.com', + name: 'Custom Chain', + magicPublishableApiKey: 'pk_test_custom', + magicProviderId: 'provider-custom', + }; + + const provider = await connectWallet({ chains: [customChain] }); + + expect(provider).toBeDefined(); + expect(Auth).toHaveBeenCalledWith( + expect.objectContaining({ + passportDomain: 'https://passport.custom.com', + }), + ); + }); + }); + + describe('error handling', () => { + it('handles auth failure gracefully', async () => { + mockAuthInstance.getUserOrLogin.mockRejectedValueOnce(new Error('Auth failed')); + + const provider = await connectWallet({ chains: [zkEvmChain] }); + + // Should still create provider (user will be null) + expect(provider).toBeDefined(); + expect(ZkEvmProvider).toHaveBeenCalledWith( + expect.objectContaining({ + user: null, + }), + ); + }); + + it('handles loginCallback failure gracefully', async () => { + let messageHandler: ((event: MessageEvent) => void) | null = null; + const addEventListenerSpy = jest.spyOn(window, 'addEventListener').mockImplementation((event, handler) => { + if (event === 'message') { + messageHandler = handler as (event: MessageEvent) => void; + } + }); + + mockAuthInstance.loginCallback.mockRejectedValueOnce(new Error('Callback failed')); + + await connectWallet({ chains: [zkEvmChain] }); + + const callbackMessage = { + data: { + code: 'test-code', + state: 'test-state', + }, + } as MessageEvent; + + // Should not throw (error is handled internally) + await expect(messageHandler!(callbackMessage)).rejects.toThrow('Callback failed'); + + addEventListenerSpy.mockRestore(); + }); + }); }); describe('provider selection', () => { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7a29eaa538..2d44d65890 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -56,7 +56,7 @@ importers: version: 1.4.0 esbuild-plugins-node-modules-polyfill: specifier: ^1.6.7 - version: 1.6.7(esbuild@0.24.2) + version: 1.6.7(esbuild@0.23.1) eslint: specifier: ^8.40.0 version: 8.57.0 @@ -117,13 +117,13 @@ importers: version: 29.7.0 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@20.14.13)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@20.14.13)(typescript@5.6.2)) + version: 29.7.0(@types/node@22.19.7)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2)) ts-jest: specifier: ^29.2.5 - version: 29.2.5(@babel/core@7.26.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.10))(esbuild@0.24.2)(jest@29.7.0(@types/node@20.14.13)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@20.14.13)(typescript@5.6.2)))(typescript@5.6.2) + version: 29.2.5(@babel/core@7.26.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.10))(esbuild@0.23.1)(jest@29.7.0(@types/node@22.19.7)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2)))(typescript@5.6.2) ts-node: specifier: ^10.9.2 - version: 10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@20.14.13)(typescript@5.6.2) + version: 10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2) typescript: specifier: ^5 version: 5.6.2 @@ -135,10 +135,10 @@ importers: version: 0.25.21(@emotion/react@11.11.3(@types/react@18.3.12)(react@18.3.1))(@rive-app/react-canvas-lite@4.9.0(react@18.3.1))(embla-carousel-react@8.1.5(react@18.3.1))(framer-motion@11.18.2(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@imtbl/sdk': specifier: latest - version: 2.12.6(bufferutil@4.0.8)(hardhat@2.22.6(bufferutil@4.0.8)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@20.14.13)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))(typescript@5.6.2)(utf-8-validate@5.0.10) + version: 2.12.6(typescript@5.6.2) next: specifier: 14.2.25 - version: 14.2.25(@babel/core@7.26.10)(@playwright/test@1.45.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 14.2.25(@babel/core@7.26.10)(@playwright/test@1.45.3)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: specifier: ^18 version: 18.3.1 @@ -181,7 +181,7 @@ importers: version: 6.13.5(bufferutil@4.0.8)(utf-8-validate@5.0.10) next: specifier: 14.2.25 - version: 14.2.25(@babel/core@7.26.10)(@playwright/test@1.45.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 14.2.25(@babel/core@7.26.10)(@playwright/test@1.45.3)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: specifier: ^18 version: 18.3.1 @@ -224,7 +224,7 @@ importers: version: 6.13.5(bufferutil@4.0.8)(utf-8-validate@5.0.10) next: specifier: 14.2.25 - version: 14.2.25(@babel/core@7.26.10)(@playwright/test@1.45.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 14.2.25(@babel/core@7.26.10)(@playwright/test@1.45.3)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: specifier: ^18 version: 18.3.1 @@ -267,7 +267,7 @@ importers: version: 6.13.5(bufferutil@4.0.8)(utf-8-validate@5.0.10) next: specifier: 14.2.25 - version: 14.2.25(@babel/core@7.26.10)(@playwright/test@1.45.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 14.2.25(@babel/core@7.26.10)(@playwright/test@1.45.3)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: specifier: ^18 version: 18.3.1 @@ -310,7 +310,7 @@ importers: version: 6.13.5(bufferutil@4.0.8)(utf-8-validate@5.0.10) next: specifier: 14.2.25 - version: 14.2.25(@babel/core@7.26.10)(@playwright/test@1.45.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 14.2.25(@babel/core@7.26.10)(@playwright/test@1.45.3)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: specifier: ^18 version: 18.3.1 @@ -360,7 +360,7 @@ importers: version: 29.7.0(@types/node@22.19.7)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2)) ts-jest: specifier: ^29.2.5 - version: 29.2.5(@babel/core@7.26.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.10))(esbuild@0.24.2)(jest@29.7.0(@types/node@22.19.7)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2)))(typescript@5.6.2) + version: 29.2.5(@babel/core@7.26.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.10))(esbuild@0.23.1)(jest@29.7.0(@types/node@22.19.7)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2)))(typescript@5.6.2) ts-node: specifier: ^10.9.2 version: 10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2) @@ -381,7 +381,7 @@ importers: version: 6.13.5(bufferutil@4.0.8)(utf-8-validate@5.0.10) next: specifier: 14.2.25 - version: 14.2.25(@babel/core@7.26.10)(@playwright/test@1.45.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 14.2.25(@babel/core@7.26.10)(@playwright/test@1.45.3)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: specifier: ^18 version: 18.3.1 @@ -424,7 +424,7 @@ importers: version: 6.13.5(bufferutil@4.0.8)(utf-8-validate@5.0.10) next: specifier: 14.2.25 - version: 14.2.25(@babel/core@7.26.10)(@playwright/test@1.45.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 14.2.25(@babel/core@7.26.10)(@playwright/test@1.45.3)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: specifier: ^18 version: 18.3.1 @@ -467,7 +467,7 @@ importers: version: 6.13.5(bufferutil@4.0.8)(utf-8-validate@5.0.10) next: specifier: 14.2.25 - version: 14.2.25(@babel/core@7.26.10)(@playwright/test@1.45.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 14.2.25(@babel/core@7.26.10)(@playwright/test@1.45.3)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: specifier: ^18 version: 18.3.1 @@ -510,7 +510,7 @@ importers: version: 6.13.5(bufferutil@4.0.8)(utf-8-validate@5.0.10) next: specifier: 14.2.25 - version: 14.2.25(@babel/core@7.26.10)(@playwright/test@1.45.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 14.2.25(@babel/core@7.26.10)(@playwright/test@1.45.3)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: specifier: ^18 version: 18.3.1 @@ -553,7 +553,7 @@ importers: version: 6.13.5(bufferutil@4.0.8)(utf-8-validate@5.0.10) next: specifier: 14.2.25 - version: 14.2.25(@babel/core@7.26.10)(@playwright/test@1.45.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 14.2.25(@babel/core@7.26.10)(@playwright/test@1.45.3)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: specifier: ^18 version: 18.3.1 @@ -596,7 +596,7 @@ importers: version: 6.13.5(bufferutil@4.0.8)(utf-8-validate@5.0.10) next: specifier: 14.2.25 - version: 14.2.25(@babel/core@7.26.10)(@playwright/test@1.45.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 14.2.25(@babel/core@7.26.10)(@playwright/test@1.45.3)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: specifier: ^18 version: 18.3.1 @@ -626,6 +626,40 @@ importers: specifier: ^5.6.2 version: 5.6.2 + examples/passport/auth-next-default-test: + dependencies: + '@imtbl/auth-next-client': + specifier: workspace:* + version: link:../../../packages/auth-next-client + '@imtbl/auth-next-server': + specifier: workspace:* + version: link:../../../packages/auth-next-server + next: + specifier: 14.2.25 + version: 14.2.25(@babel/core@7.26.10)(@playwright/test@1.45.3)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + next-auth: + specifier: ^5.0.0-beta.30 + version: 5.0.0-beta.30(next@14.2.25(@babel/core@7.26.10)(@playwright/test@1.45.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) + react: + specifier: ^18.2.0 + version: 18.3.1 + react-dom: + specifier: ^18.2.0 + version: 18.3.1(react@18.3.1) + devDependencies: + '@types/node': + specifier: ^22 + version: 22.19.7 + '@types/react': + specifier: ^18 + version: 18.3.12 + '@types/react-dom': + specifier: ^18 + version: 18.3.0 + typescript: + specifier: ^5 + version: 5.6.2 + examples/passport/logged-in-user-with-nextjs: dependencies: '@biom3/react': @@ -636,7 +670,7 @@ importers: version: link:../../../sdk next: specifier: 14.2.25 - version: 14.2.25(@babel/core@7.26.10)(@playwright/test@1.45.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 14.2.25(@babel/core@7.26.10)(@playwright/test@1.45.3)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: specifier: ^18 version: 18.3.1 @@ -682,7 +716,7 @@ importers: version: 6.13.5(bufferutil@4.0.8)(utf-8-validate@5.0.10) next: specifier: 14.2.25 - version: 14.2.25(@babel/core@7.26.10)(@playwright/test@1.45.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 14.2.25(@babel/core@7.26.10)(@playwright/test@1.45.3)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: specifier: ^18 version: 18.3.1 @@ -725,7 +759,7 @@ importers: version: 6.13.5(bufferutil@4.0.8)(utf-8-validate@5.0.10) next: specifier: 14.2.25 - version: 14.2.25(@babel/core@7.26.10)(@playwright/test@1.45.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 14.2.25(@babel/core@7.26.10)(@playwright/test@1.45.3)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: specifier: ^18 version: 18.3.1 @@ -760,9 +794,18 @@ importers: '@biom3/react': specifier: ^0.27.12 version: 0.27.30(@emotion/react@11.11.3(@types/react@18.3.12)(react@18.3.1))(@rive-app/react-canvas-lite@4.9.0(react@18.3.1))(embla-carousel-react@8.1.5(react@18.3.1))(framer-motion@11.18.2(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@imtbl/auth-next-client': + specifier: workspace:* + version: link:../../../packages/auth-next-client + '@imtbl/auth-next-server': + specifier: workspace:* + version: link:../../../packages/auth-next-server '@imtbl/sdk': specifier: workspace:* version: link:../../../sdk + '@imtbl/wallet': + specifier: workspace:* + version: link:../../../packages/wallet '@tanstack/react-query': specifier: ^5.51.11 version: 5.51.15(react@18.3.1) @@ -771,7 +814,10 @@ importers: version: 6.13.5(bufferutil@4.0.8)(utf-8-validate@5.0.10) next: specifier: 14.2.25 - version: 14.2.25(@babel/core@7.26.10)(@playwright/test@1.45.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 14.2.25(@babel/core@7.26.10)(@playwright/test@1.45.3)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + next-auth: + specifier: ^5.0.0-beta.30 + version: 5.0.0-beta.30(next@14.2.25(@babel/core@7.26.10)(@playwright/test@1.45.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) react: specifier: ^18.2.0 version: 18.3.1 @@ -829,7 +875,7 @@ importers: version: 6.13.5(bufferutil@4.0.8)(utf-8-validate@5.0.10) next: specifier: 14.2.25 - version: 14.2.25(@babel/core@7.26.10)(@playwright/test@1.45.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 14.2.25(@babel/core@7.26.10)(@playwright/test@1.45.3)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: specifier: ^18.2.0 version: 18.3.1 @@ -878,7 +924,7 @@ importers: version: 6.13.5(bufferutil@4.0.8)(utf-8-validate@5.0.10) next: specifier: 14.2.25 - version: 14.2.25(@babel/core@7.26.10)(@playwright/test@1.45.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 14.2.25(@babel/core@7.26.10)(@playwright/test@1.45.3)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: specifier: ^18.2.0 version: 18.3.1 @@ -970,7 +1016,7 @@ importers: version: 16.4.5 next: specifier: 14.2.25 - version: 14.2.25(@babel/core@7.26.10)(@playwright/test@1.45.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 14.2.25(@babel/core@7.26.10)(@playwright/test@1.45.3)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: specifier: ^18 version: 18.3.1 @@ -1078,13 +1124,13 @@ importers: version: 8.57.0 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.19.7)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2) + version: 29.7.0(@types/node@22.19.7)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2)) next: - specifier: ^15.1.6 - version: 15.5.10(@babel/core@7.26.10)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^14.2.25 + version: 14.2.25(@babel/core@7.26.10)(@playwright/test@1.45.3)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) next-auth: specifier: ^5.0.0-beta.30 - version: 5.0.0-beta.30(next@15.5.10(@babel/core@7.26.10)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) + version: 5.0.0-beta.30(next@14.2.25(@babel/core@7.26.10)(@playwright/test@1.45.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) react: specifier: ^18.2.0 version: 18.3.1 @@ -1114,13 +1160,13 @@ importers: version: 8.57.0 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.19.7)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2) + version: 29.7.0(@types/node@22.19.7)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2)) next: - specifier: ^15.1.6 - version: 15.5.10(@babel/core@7.26.10)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@19.0.0-rc-66855b96-20241106))(react@19.0.0-rc-66855b96-20241106) + specifier: ^14.2.25 + version: 14.2.25(@babel/core@7.26.10)(@playwright/test@1.45.3)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@19.0.0-rc-66855b96-20241106))(react@19.0.0-rc-66855b96-20241106) next-auth: specifier: ^5.0.0-beta.30 - version: 5.0.0-beta.30(next@15.5.10(@babel/core@7.26.10)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@19.0.0-rc-66855b96-20241106))(react@19.0.0-rc-66855b96-20241106))(react@19.0.0-rc-66855b96-20241106) + version: 5.0.0-beta.30(next@14.2.25(@babel/core@7.26.10)(@playwright/test@1.45.3)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@19.0.0-rc-66855b96-20241106))(react@19.0.0-rc-66855b96-20241106))(react@19.0.0-rc-66855b96-20241106) tsup: specifier: ^8.3.0 version: 8.3.0(@swc/core@1.15.3(@swc/helpers@0.5.15))(jiti@1.21.0)(postcss@8.4.49)(typescript@5.6.2)(yaml@2.5.0) @@ -1154,7 +1200,7 @@ importers: version: 8.57.0 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.19.7)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2) + version: 29.7.0(@types/node@22.19.7)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2)) jest-environment-jsdom: specifier: ^29.4.3 version: 29.6.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) @@ -1233,7 +1279,7 @@ importers: version: 8.57.0 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.19.7)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2) + version: 29.7.0(@types/node@22.19.7)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2)) jest-environment-jsdom: specifier: ^29.4.3 version: 29.6.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) @@ -1330,7 +1376,7 @@ importers: version: 29.6.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) react-scripts: specifier: 5.0.1 - version: 5.0.1(@babel/plugin-syntax-flow@7.24.7(@babel/core@7.26.9))(@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.26.9))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/babel__core@7.20.5)(bufferutil@4.0.8)(esbuild@0.24.2)(eslint@9.16.0(jiti@1.21.0))(node-notifier@8.0.2)(react@18.3.1)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2))(type-fest@2.19.0)(typescript@5.6.2)(utf-8-validate@5.0.10) + version: 5.0.1(@babel/plugin-syntax-flow@7.24.7(@babel/core@7.26.9))(@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.26.9))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/babel__core@7.20.5)(bufferutil@4.0.8)(esbuild@0.23.1)(eslint@9.16.0(jiti@1.21.0))(node-notifier@8.0.2)(react@18.3.1)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2))(type-fest@2.19.0)(typescript@5.6.2)(utf-8-validate@5.0.10) typescript: specifier: ^5.6.2 version: 5.6.2 @@ -1496,7 +1542,7 @@ importers: version: 29.6.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) react-scripts: specifier: 5.0.1 - version: 5.0.1(@babel/plugin-syntax-flow@7.24.7(@babel/core@7.26.10))(@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.26.10))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/babel__core@7.20.5)(bufferutil@4.0.8)(esbuild@0.24.2)(eslint@8.57.0)(node-notifier@8.0.2)(react@18.3.1)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2))(type-fest@2.19.0)(typescript@5.6.2)(utf-8-validate@5.0.10) + version: 5.0.1(@babel/plugin-syntax-flow@7.24.7(@babel/core@7.26.10))(@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.26.10))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/babel__core@7.20.5)(bufferutil@4.0.8)(esbuild@0.23.1)(eslint@8.57.0)(node-notifier@8.0.2)(react@18.3.1)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2))(type-fest@2.19.0)(typescript@5.6.2)(utf-8-validate@5.0.10) rimraf: specifier: ^6.0.1 version: 6.0.1 @@ -1508,7 +1554,7 @@ importers: version: 0.13.0(rollup@4.28.0) ts-jest: specifier: ^29.1.0 - version: 29.2.5(@babel/core@7.26.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.10))(esbuild@0.24.2)(jest@29.7.0(@types/node@22.19.7)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2)))(typescript@5.6.2) + version: 29.2.5(@babel/core@7.26.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.10))(esbuild@0.23.1)(jest@29.7.0(@types/node@22.19.7)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2)))(typescript@5.6.2) typescript: specifier: ^5.6.2 version: 5.6.2 @@ -1902,7 +1948,7 @@ importers: version: 6.13.5(bufferutil@4.0.8)(utf-8-validate@5.0.10) next: specifier: ^15.1.6 - version: 15.5.10(@babel/core@7.26.10)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 15.5.10(@babel/core@7.26.10)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) postcss: specifier: 8.4.31 version: 8.4.31 @@ -1939,7 +1985,7 @@ importers: version: 22.19.7 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.19.7)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2) + version: 29.7.0(@types/node@22.19.7)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2)) rimraf: specifier: ^6.0.1 version: 6.0.1 @@ -1976,13 +2022,13 @@ importers: version: 8.57.0 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.19.7)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2) + version: 29.7.0(@types/node@22.19.7)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2)) jest-environment-jsdom: specifier: ^29.4.3 version: 29.6.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) ts-jest: specifier: ^29.1.0 - version: 29.2.5(@babel/core@7.26.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.10))(esbuild@0.24.2)(jest@29.7.0(@types/node@22.19.7)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2))(typescript@5.6.2) + version: 29.2.5(@babel/core@7.26.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.10))(esbuild@0.23.1)(jest@29.7.0(@types/node@22.19.7)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2))(typescript@5.6.2) tsup: specifier: ^8.3.0 version: 8.3.0(@swc/core@1.15.3(@swc/helpers@0.5.15))(jiti@1.21.0)(postcss@8.4.49)(typescript@5.6.2)(yaml@2.5.0) @@ -2117,7 +2163,7 @@ importers: version: 8.57.0 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.19.7)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2) + version: 29.7.0(@types/node@22.19.7)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2)) jest-environment-jsdom: specifier: ^29.4.3 version: 29.6.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) @@ -2175,7 +2221,7 @@ importers: version: 8.57.0 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.19.7)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2) + version: 29.7.0(@types/node@22.19.7)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2)) jest-environment-jsdom: specifier: ^29.4.3 version: 29.6.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) @@ -2347,7 +2393,7 @@ importers: version: 11.18.2(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) next: specifier: ^15.1.6 - version: 15.5.10(@babel/core@7.26.10)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 15.5.10(@babel/core@7.26.10)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) next-auth: specifier: ^5.0.0-beta.30 version: 5.0.0-beta.30(next@15.5.10(@babel/core@7.26.10)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) @@ -2470,7 +2516,7 @@ importers: version: 8.57.0 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.19.7)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2) + version: 29.7.0(@types/node@22.19.7)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2)) jest-environment-jsdom: specifier: ^29.4.3 version: 29.6.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) @@ -2531,7 +2577,7 @@ importers: version: 8.57.0 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.19.7)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2) + version: 29.7.0(@types/node@22.19.7)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2)) jest-environment-jsdom: specifier: ^29.4.3 version: 29.6.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) @@ -2658,7 +2704,7 @@ importers: version: 18.3.1(react@18.3.1) react-scripts: specifier: 5.0.1 - version: 5.0.1(@babel/plugin-syntax-flow@7.24.7(@babel/core@7.26.10))(@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.26.10))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/babel__core@7.20.5)(bufferutil@4.0.8)(esbuild@0.24.2)(eslint@9.16.0(jiti@1.21.0))(node-notifier@8.0.2)(react@18.3.1)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2))(type-fest@2.19.0)(typescript@5.6.2)(utf-8-validate@5.0.10) + version: 5.0.1(@babel/plugin-syntax-flow@7.24.7(@babel/core@7.26.10))(@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.26.10))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/babel__core@7.20.5)(bufferutil@4.0.8)(esbuild@0.23.1)(eslint@9.16.0(jiti@1.21.0))(node-notifier@8.0.2)(react@18.3.1)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2))(type-fest@2.19.0)(typescript@5.6.2)(utf-8-validate@5.0.10) typescript: specifier: ^5.6.2 version: 5.6.2 @@ -2713,7 +2759,7 @@ importers: version: link:../packages/x-provider next: specifier: ^14.2.0 || ^15.0.0 - version: 15.5.10(@babel/core@7.26.10)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 15.5.10(@babel/core@7.26.10)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) next-auth: specifier: ^5.0.0-beta.25 version: 5.0.0-beta.30(next@15.5.10(@babel/core@7.26.10)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) @@ -2763,7 +2809,7 @@ importers: version: 3.0.0 ts-jest: specifier: ^29.1.1 - version: 29.2.5(@babel/core@7.26.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.10))(esbuild@0.24.2)(jest@29.7.0(@types/node@20.14.13)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@20.14.13)(typescript@5.6.2)))(typescript@5.6.2) + version: 29.2.5(@babel/core@7.26.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.10))(esbuild@0.23.1)(jest@29.7.0(@types/node@20.14.13)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@20.14.13)(typescript@5.6.2)))(typescript@5.6.2) ts-node: specifier: ^10.9.1 version: 10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@20.14.13)(typescript@5.6.2) @@ -2845,7 +2891,7 @@ importers: version: 3.0.0 ts-jest: specifier: ^29.1.1 - version: 29.2.5(@babel/core@7.26.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.10))(esbuild@0.24.2)(jest@29.7.0(@types/node@20.14.13)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@20.14.13)(typescript@5.6.2)))(typescript@5.6.2) + version: 29.2.5(@babel/core@7.26.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.10))(esbuild@0.23.1)(jest@29.7.0(@types/node@20.14.13)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@20.14.13)(typescript@5.6.2)))(typescript@5.6.2) ts-node: specifier: ^10.9.2 version: 10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@20.14.13)(typescript@5.6.2) @@ -2935,6 +2981,10 @@ packages: resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} engines: {node: '>=6.9.0'} + '@babel/code-frame@7.29.0': + resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} + engines: {node: '>=6.9.0'} + '@babel/compat-data@7.26.8': resolution: {integrity: sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==} engines: {node: '>=6.9.0'} @@ -3047,6 +3097,10 @@ packages: resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.28.5': + resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@7.25.9': resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} engines: {node: '>=6.9.0'} @@ -4042,12 +4096,6 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.24.2': - resolution: {integrity: sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - '@esbuild/android-arm64@0.21.5': resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} engines: {node: '>=12'} @@ -4060,12 +4108,6 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.24.2': - resolution: {integrity: sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - '@esbuild/android-arm@0.21.5': resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} engines: {node: '>=12'} @@ -4078,12 +4120,6 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.24.2': - resolution: {integrity: sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - '@esbuild/android-x64@0.21.5': resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} engines: {node: '>=12'} @@ -4096,12 +4132,6 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.24.2': - resolution: {integrity: sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - '@esbuild/darwin-arm64@0.21.5': resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} engines: {node: '>=12'} @@ -4114,12 +4144,6 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.24.2': - resolution: {integrity: sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - '@esbuild/darwin-x64@0.21.5': resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} engines: {node: '>=12'} @@ -4132,12 +4156,6 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.24.2': - resolution: {integrity: sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - '@esbuild/freebsd-arm64@0.21.5': resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} engines: {node: '>=12'} @@ -4150,12 +4168,6 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.24.2': - resolution: {integrity: sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - '@esbuild/freebsd-x64@0.21.5': resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} engines: {node: '>=12'} @@ -4168,12 +4180,6 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.24.2': - resolution: {integrity: sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - '@esbuild/linux-arm64@0.21.5': resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} engines: {node: '>=12'} @@ -4186,12 +4192,6 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.24.2': - resolution: {integrity: sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - '@esbuild/linux-arm@0.21.5': resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} engines: {node: '>=12'} @@ -4204,12 +4204,6 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.24.2': - resolution: {integrity: sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - '@esbuild/linux-ia32@0.21.5': resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} engines: {node: '>=12'} @@ -4222,12 +4216,6 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.24.2': - resolution: {integrity: sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - '@esbuild/linux-loong64@0.21.5': resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} engines: {node: '>=12'} @@ -4240,12 +4228,6 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.24.2': - resolution: {integrity: sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - '@esbuild/linux-mips64el@0.21.5': resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} engines: {node: '>=12'} @@ -4258,12 +4240,6 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.24.2': - resolution: {integrity: sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - '@esbuild/linux-ppc64@0.21.5': resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} engines: {node: '>=12'} @@ -4276,12 +4252,6 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.24.2': - resolution: {integrity: sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - '@esbuild/linux-riscv64@0.21.5': resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} engines: {node: '>=12'} @@ -4294,12 +4264,6 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.24.2': - resolution: {integrity: sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - '@esbuild/linux-s390x@0.21.5': resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} engines: {node: '>=12'} @@ -4312,12 +4276,6 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.24.2': - resolution: {integrity: sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - '@esbuild/linux-x64@0.21.5': resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} engines: {node: '>=12'} @@ -4330,18 +4288,6 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.24.2': - resolution: {integrity: sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - - '@esbuild/netbsd-arm64@0.24.2': - resolution: {integrity: sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] - '@esbuild/netbsd-x64@0.21.5': resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} engines: {node: '>=12'} @@ -4354,24 +4300,12 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.24.2': - resolution: {integrity: sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - '@esbuild/openbsd-arm64@0.23.1': resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-arm64@0.24.2': - resolution: {integrity: sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - '@esbuild/openbsd-x64@0.21.5': resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} engines: {node: '>=12'} @@ -4384,12 +4318,6 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.24.2': - resolution: {integrity: sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - '@esbuild/sunos-x64@0.21.5': resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} engines: {node: '>=12'} @@ -4402,12 +4330,6 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.24.2': - resolution: {integrity: sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - '@esbuild/win32-arm64@0.21.5': resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} engines: {node: '>=12'} @@ -4420,12 +4342,6 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.24.2': - resolution: {integrity: sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - '@esbuild/win32-ia32@0.21.5': resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} engines: {node: '>=12'} @@ -4438,12 +4354,6 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.24.2': - resolution: {integrity: sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - '@esbuild/win32-x64@0.21.5': resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} engines: {node: '>=12'} @@ -4456,12 +4366,6 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.24.2': - resolution: {integrity: sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - '@eslint-community/eslint-utils@4.4.0': resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -9113,6 +9017,10 @@ packages: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + brorand@1.1.0: resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} @@ -9286,9 +9194,6 @@ packages: caniuse-lite@1.0.30001660: resolution: {integrity: sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==} - caniuse-lite@1.0.30001703: - resolution: {integrity: sha512-kRlAGTRWgPsOj7oARC9m1okJEXdL/8fekFVcxA8Hl7GH4r/sN4OJn/i6Flde373T50KS7Y37oFbMwlE8+F42kQ==} - caniuse-lite@1.0.30001760: resolution: {integrity: sha512-7AAMPcueWELt1p3mi13HR/LHH0TJLT11cnwDJEs3xA4+CK/PLKeO9Kl1oru24htkyUKtkGCvAx4ohB0Ttry8Dw==} @@ -10568,11 +10473,6 @@ packages: engines: {node: '>=18'} hasBin: true - esbuild@0.24.2: - resolution: {integrity: sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==} - engines: {node: '>=18'} - hasBin: true - escalade@3.1.2: resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} engines: {node: '>=6'} @@ -11214,6 +11114,10 @@ packages: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + filter-obj@1.1.0: resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==} engines: {node: '>=0.10.0'} @@ -11564,24 +11468,24 @@ packages: glob@5.0.15: resolution: {integrity: sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==} - deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + deprecated: Glob versions prior to v9 are no longer supported glob@7.1.7: resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} - deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + deprecated: Glob versions prior to v9 are no longer supported glob@7.2.0: resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} - deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + deprecated: Glob versions prior to v9 are no longer supported glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + deprecated: Glob versions prior to v9 are no longer supported glob@8.1.0: resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} engines: {node: '>=12'} - deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + deprecated: Glob versions prior to v9 are no longer supported global-const@0.1.2: resolution: {integrity: sha512-yb8pTRSbWcdjmKhRfdB1+s7oU9UXTPPcRwd0oPal0WHta7B/3roXz7yGLMU+KhgByoeX/1QOFKY8aCTETexKAg==} @@ -13507,6 +13411,10 @@ packages: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + miller-rabin@4.0.1: resolution: {integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==} hasBin: true @@ -18025,6 +17933,12 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.1.1 + '@babel/code-frame@7.29.0': + dependencies: + '@babel/helper-validator-identifier': 7.28.5 + js-tokens: 4.0.0 + picocolors: 1.1.1 + '@babel/compat-data@7.26.8': {} '@babel/core@7.26.10': @@ -18278,6 +18192,8 @@ snapshots: '@babel/helper-validator-identifier@7.25.9': {} + '@babel/helper-validator-identifier@7.28.5': {} + '@babel/helper-validator-option@7.25.9': {} '@babel/helper-wrap-function@7.25.9': @@ -20132,7 +20048,7 @@ snapshots: '@emnapi/runtime@1.8.1': dependencies: - tslib: 2.7.0 + tslib: 2.8.1 optional: true '@emnapi/wasi-threads@1.0.1': @@ -20235,216 +20151,141 @@ snapshots: '@esbuild/aix-ppc64@0.23.1': optional: true - '@esbuild/aix-ppc64@0.24.2': - optional: true - '@esbuild/android-arm64@0.21.5': optional: true '@esbuild/android-arm64@0.23.1': optional: true - '@esbuild/android-arm64@0.24.2': - optional: true - '@esbuild/android-arm@0.21.5': optional: true '@esbuild/android-arm@0.23.1': optional: true - '@esbuild/android-arm@0.24.2': - optional: true - '@esbuild/android-x64@0.21.5': optional: true '@esbuild/android-x64@0.23.1': optional: true - '@esbuild/android-x64@0.24.2': - optional: true - '@esbuild/darwin-arm64@0.21.5': optional: true '@esbuild/darwin-arm64@0.23.1': optional: true - '@esbuild/darwin-arm64@0.24.2': - optional: true - '@esbuild/darwin-x64@0.21.5': optional: true '@esbuild/darwin-x64@0.23.1': optional: true - '@esbuild/darwin-x64@0.24.2': - optional: true - '@esbuild/freebsd-arm64@0.21.5': optional: true '@esbuild/freebsd-arm64@0.23.1': optional: true - '@esbuild/freebsd-arm64@0.24.2': - optional: true - '@esbuild/freebsd-x64@0.21.5': optional: true '@esbuild/freebsd-x64@0.23.1': optional: true - '@esbuild/freebsd-x64@0.24.2': - optional: true - '@esbuild/linux-arm64@0.21.5': optional: true '@esbuild/linux-arm64@0.23.1': optional: true - '@esbuild/linux-arm64@0.24.2': - optional: true - '@esbuild/linux-arm@0.21.5': optional: true '@esbuild/linux-arm@0.23.1': optional: true - '@esbuild/linux-arm@0.24.2': - optional: true - '@esbuild/linux-ia32@0.21.5': optional: true '@esbuild/linux-ia32@0.23.1': optional: true - '@esbuild/linux-ia32@0.24.2': - optional: true - '@esbuild/linux-loong64@0.21.5': optional: true '@esbuild/linux-loong64@0.23.1': optional: true - '@esbuild/linux-loong64@0.24.2': - optional: true - '@esbuild/linux-mips64el@0.21.5': optional: true '@esbuild/linux-mips64el@0.23.1': optional: true - '@esbuild/linux-mips64el@0.24.2': - optional: true - '@esbuild/linux-ppc64@0.21.5': optional: true '@esbuild/linux-ppc64@0.23.1': optional: true - '@esbuild/linux-ppc64@0.24.2': - optional: true - '@esbuild/linux-riscv64@0.21.5': optional: true '@esbuild/linux-riscv64@0.23.1': optional: true - '@esbuild/linux-riscv64@0.24.2': - optional: true - '@esbuild/linux-s390x@0.21.5': optional: true '@esbuild/linux-s390x@0.23.1': optional: true - '@esbuild/linux-s390x@0.24.2': - optional: true - '@esbuild/linux-x64@0.21.5': optional: true '@esbuild/linux-x64@0.23.1': optional: true - '@esbuild/linux-x64@0.24.2': - optional: true - - '@esbuild/netbsd-arm64@0.24.2': - optional: true - '@esbuild/netbsd-x64@0.21.5': optional: true '@esbuild/netbsd-x64@0.23.1': optional: true - '@esbuild/netbsd-x64@0.24.2': - optional: true - '@esbuild/openbsd-arm64@0.23.1': optional: true - '@esbuild/openbsd-arm64@0.24.2': - optional: true - '@esbuild/openbsd-x64@0.21.5': optional: true '@esbuild/openbsd-x64@0.23.1': optional: true - '@esbuild/openbsd-x64@0.24.2': - optional: true - '@esbuild/sunos-x64@0.21.5': optional: true '@esbuild/sunos-x64@0.23.1': optional: true - '@esbuild/sunos-x64@0.24.2': - optional: true - '@esbuild/win32-arm64@0.21.5': optional: true '@esbuild/win32-arm64@0.23.1': optional: true - '@esbuild/win32-arm64@0.24.2': - optional: true - '@esbuild/win32-ia32@0.21.5': optional: true '@esbuild/win32-ia32@0.23.1': optional: true - '@esbuild/win32-ia32@0.24.2': - optional: true - '@esbuild/win32-x64@0.21.5': optional: true '@esbuild/win32-x64@0.23.1': optional: true - '@esbuild/win32-x64@0.24.2': - optional: true - '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)': dependencies: eslint: 8.57.0 @@ -20963,7 +20804,7 @@ snapshots: transitivePeerDependencies: - debug - '@imtbl/bridge-sdk@2.12.6(bufferutil@4.0.8)(utf-8-validate@5.0.10)': + '@imtbl/bridge-sdk@2.12.6': dependencies: '@imtbl/config': 2.12.6 '@jest/globals': 29.7.0 @@ -20975,16 +20816,16 @@ snapshots: - supports-color - utf-8-validate - '@imtbl/checkout-sdk@2.12.6(bufferutil@4.0.8)(hardhat@2.22.6(bufferutil@4.0.8)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@20.14.13)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))(typescript@5.6.2)(utf-8-validate@5.0.10)': + '@imtbl/checkout-sdk@2.12.6(typescript@5.6.2)': dependencies: '@imtbl/blockchain-data': 2.12.6 - '@imtbl/bridge-sdk': 2.12.6(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@imtbl/bridge-sdk': 2.12.6 '@imtbl/config': 2.12.6 - '@imtbl/dex-sdk': 2.12.6(bufferutil@4.0.8)(hardhat@2.22.6(bufferutil@4.0.8)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@20.14.13)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10) + '@imtbl/dex-sdk': 2.12.6 '@imtbl/generated-clients': 2.12.6 '@imtbl/metrics': 2.12.6 - '@imtbl/orderbook': 2.12.6(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@imtbl/passport': 2.12.6(bufferutil@4.0.8)(typescript@5.6.2)(utf-8-validate@5.0.10) + '@imtbl/orderbook': 2.12.6 + '@imtbl/passport': 2.12.6(typescript@5.6.2) '@metamask/detect-provider': 2.0.0 axios: 1.7.7 ethers: 6.13.5(bufferutil@4.0.8)(utf-8-validate@5.0.10) @@ -21046,12 +20887,12 @@ snapshots: - typescript - utf-8-validate - '@imtbl/dex-sdk@2.12.6(bufferutil@4.0.8)(hardhat@2.22.6(bufferutil@4.0.8)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@20.14.13)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10)': + '@imtbl/dex-sdk@2.12.6': dependencies: '@imtbl/config': 2.12.6 '@uniswap/sdk-core': 3.2.3 - '@uniswap/swap-router-contracts': 1.3.1(hardhat@2.22.6(bufferutil@4.0.8)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@20.14.13)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10)) - '@uniswap/v3-sdk': 3.10.0(hardhat@2.22.6(bufferutil@4.0.8)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@20.14.13)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10)) + '@uniswap/swap-router-contracts': 1.3.1(hardhat@2.22.6(bufferutil@4.0.8)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10)) + '@uniswap/v3-sdk': 3.10.0(hardhat@2.22.6(bufferutil@4.0.8)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10)) ethers: 6.13.5(bufferutil@4.0.8)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil @@ -21088,7 +20929,7 @@ snapshots: - debug - pg-native - '@imtbl/orderbook@2.12.6(bufferutil@4.0.8)(utf-8-validate@5.0.10)': + '@imtbl/orderbook@2.12.6': dependencies: '@imtbl/config': 2.12.6 '@imtbl/metrics': 2.12.6 @@ -21102,16 +20943,16 @@ snapshots: - debug - utf-8-validate - '@imtbl/passport@2.12.6(bufferutil@4.0.8)(typescript@5.6.2)(utf-8-validate@5.0.10)': + '@imtbl/passport@2.12.6(typescript@5.6.2)': dependencies: '@imtbl/auth': 2.12.6 '@imtbl/config': 2.12.6 '@imtbl/generated-clients': 2.12.6 '@imtbl/metrics': 2.12.6 - '@imtbl/toolkit': 2.12.6(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@imtbl/wallet': 2.12.6(bufferutil@4.0.8)(typescript@5.6.2)(utf-8-validate@5.0.10) - '@imtbl/x-client': 2.12.6(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@imtbl/x-provider': 2.12.6(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@imtbl/toolkit': 2.12.6 + '@imtbl/wallet': 2.12.6(typescript@5.6.2) + '@imtbl/x-client': 2.12.6 + '@imtbl/x-provider': 2.12.6 ethers: 6.13.5(bufferutil@4.0.8)(utf-8-validate@5.0.10) localforage: 1.10.0 oidc-client-ts: 3.4.1 @@ -21130,19 +20971,19 @@ snapshots: - encoding - supports-color - '@imtbl/sdk@2.12.6(bufferutil@4.0.8)(hardhat@2.22.6(bufferutil@4.0.8)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@20.14.13)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))(typescript@5.6.2)(utf-8-validate@5.0.10)': + '@imtbl/sdk@2.12.6(typescript@5.6.2)': dependencies: '@imtbl/auth': 2.12.6 '@imtbl/blockchain-data': 2.12.6 - '@imtbl/checkout-sdk': 2.12.6(bufferutil@4.0.8)(hardhat@2.22.6(bufferutil@4.0.8)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@20.14.13)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))(typescript@5.6.2)(utf-8-validate@5.0.10) + '@imtbl/checkout-sdk': 2.12.6(typescript@5.6.2) '@imtbl/config': 2.12.6 '@imtbl/minting-backend': 2.12.6 - '@imtbl/orderbook': 2.12.6(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@imtbl/passport': 2.12.6(bufferutil@4.0.8)(typescript@5.6.2)(utf-8-validate@5.0.10) - '@imtbl/wallet': 2.12.6(bufferutil@4.0.8)(typescript@5.6.2)(utf-8-validate@5.0.10) + '@imtbl/orderbook': 2.12.6 + '@imtbl/passport': 2.12.6(typescript@5.6.2) + '@imtbl/wallet': 2.12.6(typescript@5.6.2) '@imtbl/webhook': 2.12.6 - '@imtbl/x-client': 2.12.6(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@imtbl/x-provider': 2.12.6(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@imtbl/x-client': 2.12.6 + '@imtbl/x-provider': 2.12.6 transitivePeerDependencies: - bufferutil - debug @@ -21153,9 +20994,9 @@ snapshots: - utf-8-validate - zod - '@imtbl/toolkit@2.12.6(bufferutil@4.0.8)(utf-8-validate@5.0.10)': + '@imtbl/toolkit@2.12.6': dependencies: - '@imtbl/x-client': 2.12.6(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@imtbl/x-client': 2.12.6 '@metamask/detect-provider': 2.0.0 axios: 1.7.7 bn.js: 5.2.1 @@ -21167,7 +21008,7 @@ snapshots: - debug - utf-8-validate - '@imtbl/wallet@2.12.6(bufferutil@4.0.8)(typescript@5.6.2)(utf-8-validate@5.0.10)': + '@imtbl/wallet@2.12.6(typescript@5.6.2)': dependencies: '@imtbl/auth': 2.12.6 '@imtbl/generated-clients': 2.12.6 @@ -21188,7 +21029,7 @@ snapshots: transitivePeerDependencies: - debug - '@imtbl/x-client@2.12.6(bufferutil@4.0.8)(utf-8-validate@5.0.10)': + '@imtbl/x-client@2.12.6': dependencies: '@ethereumjs/wallet': 2.0.4 '@imtbl/config': 2.12.6 @@ -21204,12 +21045,12 @@ snapshots: - debug - utf-8-validate - '@imtbl/x-provider@2.12.6(bufferutil@4.0.8)(utf-8-validate@5.0.10)': + '@imtbl/x-provider@2.12.6': dependencies: '@imtbl/config': 2.12.6 '@imtbl/generated-clients': 2.12.6 - '@imtbl/toolkit': 2.12.6(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@imtbl/x-client': 2.12.6(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@imtbl/toolkit': 2.12.6 + '@imtbl/x-client': 2.12.6 '@metamask/detect-provider': 2.0.0 axios: 1.7.7 enc-utils: 3.0.0 @@ -21246,7 +21087,7 @@ snapshots: '@jest/console@26.6.2': dependencies: '@jest/types': 26.6.2 - '@types/node': 20.14.13 + '@types/node': 22.19.7 chalk: 4.1.2 jest-message-util: 26.6.2 jest-util: 26.6.2 @@ -21255,7 +21096,7 @@ snapshots: '@jest/console@27.5.1': dependencies: '@jest/types': 27.5.1 - '@types/node': 20.14.13 + '@types/node': 22.19.7 chalk: 4.1.2 jest-message-util: 27.5.1 jest-util: 27.5.1 @@ -21264,7 +21105,7 @@ snapshots: '@jest/console@28.1.3': dependencies: '@jest/types': 28.1.3 - '@types/node': 20.14.13 + '@types/node': 22.19.7 chalk: 4.1.2 jest-message-util: 28.1.3 jest-util: 28.1.3 @@ -21273,7 +21114,7 @@ snapshots: '@jest/console@29.7.0': dependencies: '@jest/types': 29.6.3 - '@types/node': 20.14.13 + '@types/node': 22.19.7 chalk: 4.1.2 jest-message-util: 29.7.0 jest-util: 29.7.0 @@ -21286,7 +21127,7 @@ snapshots: '@jest/test-result': 26.6.2 '@jest/transform': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 20.14.13 + '@types/node': 22.19.7 ansi-escapes: 4.3.2 chalk: 4.1.2 exit: 0.1.2 @@ -21323,7 +21164,7 @@ snapshots: '@jest/test-result': 27.5.1 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 20.14.13 + '@types/node': 22.19.7 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.8.1 @@ -21362,14 +21203,14 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.14.13 + '@types/node': 22.19.7 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.8.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.14.13)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@20.14.13)(typescript@5.6.2)) + jest-config: 29.7.0(@types/node@22.19.7)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@20.14.13)(typescript@5.6.2)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -21399,14 +21240,14 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.14.13 + '@types/node': 22.19.7 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.8.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.14.13)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2)) + jest-config: 29.7.0(@types/node@22.19.7)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -21437,21 +21278,21 @@ snapshots: dependencies: '@jest/fake-timers': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 20.14.13 + '@types/node': 22.19.7 jest-mock: 26.6.2 '@jest/environment@27.5.1': dependencies: '@jest/fake-timers': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 20.14.13 + '@types/node': 22.19.7 jest-mock: 27.5.1 '@jest/environment@29.7.0': dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.14.13 + '@types/node': 22.19.7 jest-mock: 29.7.0 '@jest/expect-utils@29.7.0': @@ -21469,7 +21310,7 @@ snapshots: dependencies: '@jest/types': 26.6.2 '@sinonjs/fake-timers': 6.0.1 - '@types/node': 20.14.13 + '@types/node': 22.19.7 jest-message-util: 26.6.2 jest-mock: 26.6.2 jest-util: 26.6.2 @@ -21478,7 +21319,7 @@ snapshots: dependencies: '@jest/types': 27.5.1 '@sinonjs/fake-timers': 8.1.0 - '@types/node': 20.14.13 + '@types/node': 22.19.7 jest-message-util: 27.5.1 jest-mock: 27.5.1 jest-util: 27.5.1 @@ -21487,7 +21328,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 20.14.13 + '@types/node': 22.19.7 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -21551,7 +21392,7 @@ snapshots: '@jest/test-result': 27.5.1 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 20.14.13 + '@types/node': 22.19.7 chalk: 4.1.2 collect-v8-coverage: 1.0.2 exit: 0.1.2 @@ -21584,7 +21425,7 @@ snapshots: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.25 - '@types/node': 20.14.13 + '@types/node': 22.19.7 chalk: 4.1.2 collect-v8-coverage: 1.0.2 exit: 0.1.2 @@ -21761,7 +21602,7 @@ snapshots: dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 20.14.13 + '@types/node': 22.19.7 '@types/yargs': 15.0.19 chalk: 4.1.2 @@ -21769,7 +21610,7 @@ snapshots: dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 20.14.13 + '@types/node': 22.19.7 '@types/yargs': 16.0.5 chalk: 4.1.2 @@ -21778,7 +21619,7 @@ snapshots: '@jest/schemas': 28.1.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 20.14.13 + '@types/node': 22.19.7 '@types/yargs': 17.0.24 chalk: 4.1.2 @@ -21787,7 +21628,7 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 20.14.13 + '@types/node': 22.19.7 '@types/yargs': 17.0.24 chalk: 4.1.2 @@ -23362,7 +23203,7 @@ snapshots: dependencies: playwright: 1.45.3 - '@pmmmwh/react-refresh-webpack-plugin@0.5.10(react-refresh@0.11.0)(type-fest@2.19.0)(webpack-dev-server@4.15.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)))(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2))': + '@pmmmwh/react-refresh-webpack-plugin@0.5.10(react-refresh@0.11.0)(type-fest@2.19.0)(webpack-dev-server@4.15.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)))(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1))': dependencies: ansi-html-community: 0.0.8 common-path-prefix: 3.0.0 @@ -23374,10 +23215,10 @@ snapshots: react-refresh: 0.11.0 schema-utils: 3.3.0 source-map: 0.7.4 - webpack: 5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2) + webpack: 5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1) optionalDependencies: type-fest: 2.19.0 - webpack-dev-server: 4.15.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)) + webpack-dev-server: 4.15.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)) '@popperjs/core@2.11.8': {} @@ -25102,7 +24943,7 @@ snapshots: '@swc/helpers@0.5.5': dependencies: '@swc/counter': 0.1.3 - tslib: 2.7.0 + tslib: 2.8.1 '@swc/jest@0.2.36(@swc/core@1.15.3(@swc/helpers@0.5.15))': dependencies: @@ -25146,7 +24987,7 @@ snapshots: '@testing-library/dom@10.4.0': dependencies: - '@babel/code-frame': 7.26.2 + '@babel/code-frame': 7.29.0 '@babel/runtime': 7.25.0 '@types/aria-query': 5.0.1 aria-query: 5.3.0 @@ -25258,26 +25099,26 @@ snapshots: '@types/bn.js@4.11.6': dependencies: - '@types/node': 20.14.13 + '@types/node': 22.19.7 '@types/bn.js@5.1.6': dependencies: - '@types/node': 20.14.13 + '@types/node': 22.19.7 '@types/body-parser@1.19.2': dependencies: '@types/connect': 3.4.35 - '@types/node': 20.14.13 + '@types/node': 22.19.7 '@types/bonjour@3.5.10': dependencies: - '@types/node': 20.14.13 + '@types/node': 22.19.7 '@types/cacheable-request@6.0.3': dependencies: '@types/http-cache-semantics': 4.0.4 '@types/keyv': 3.1.4 - '@types/node': 20.14.13 + '@types/node': 22.19.7 '@types/responselike': 1.0.3 '@types/chai-as-promised@7.1.8': @@ -25288,16 +25129,16 @@ snapshots: '@types/concat-stream@1.6.1': dependencies: - '@types/node': 20.14.13 + '@types/node': 22.19.7 '@types/connect-history-api-fallback@1.5.0': dependencies: '@types/express-serve-static-core': 4.17.35 - '@types/node': 20.14.13 + '@types/node': 22.19.7 '@types/connect@3.4.35': dependencies: - '@types/node': 20.14.13 + '@types/node': 22.19.7 '@types/cookie@0.4.1': {} @@ -25307,13 +25148,13 @@ snapshots: '@types/docker-modem@3.0.6': dependencies: - '@types/node': 20.14.13 + '@types/node': 22.19.7 '@types/ssh2': 1.15.0 '@types/dockerode@3.3.29': dependencies: '@types/docker-modem': 3.0.6 - '@types/node': 20.14.13 + '@types/node': 22.19.7 '@types/ssh2': 1.15.0 '@types/dom-screen-wake-lock@1.0.3': {} @@ -25334,7 +25175,7 @@ snapshots: '@types/express-serve-static-core@4.17.35': dependencies: - '@types/node': 20.14.13 + '@types/node': 22.19.7 '@types/qs': 6.9.15 '@types/range-parser': 1.2.4 '@types/send': 0.17.1 @@ -25348,16 +25189,16 @@ snapshots: '@types/form-data@0.0.33': dependencies: - '@types/node': 20.14.13 + '@types/node': 22.19.7 '@types/glob@7.2.0': dependencies: '@types/minimatch': 5.1.2 - '@types/node': 20.14.13 + '@types/node': 22.19.7 '@types/graceful-fs@4.1.6': dependencies: - '@types/node': 20.14.13 + '@types/node': 22.19.7 '@types/hast@3.0.4': dependencies: @@ -25371,7 +25212,7 @@ snapshots: '@types/http-proxy@1.17.11': dependencies: - '@types/node': 20.14.13 + '@types/node': 22.19.7 '@types/istanbul-lib-coverage@2.0.4': {} @@ -25407,7 +25248,7 @@ snapshots: '@types/jsdom@20.0.1': dependencies: - '@types/node': 20.14.13 + '@types/node': 22.19.7 '@types/tough-cookie': 4.0.2 parse5: 7.1.2 @@ -25419,7 +25260,7 @@ snapshots: '@types/keyv@3.1.4': dependencies: - '@types/node': 20.14.13 + '@types/node': 22.19.7 '@types/lodash.debounce@4.0.9': dependencies: @@ -25443,7 +25284,7 @@ snapshots: '@types/node-forge@1.3.11': dependencies: - '@types/node': 20.14.13 + '@types/node': 22.19.7 '@types/node@10.17.60': {} @@ -25471,11 +25312,11 @@ snapshots: '@types/pbkdf2@3.1.0': dependencies: - '@types/node': 20.14.13 + '@types/node': 22.19.7 '@types/pg@8.11.6': dependencies: - '@types/node': 20.14.13 + '@types/node': 22.19.7 pg-protocol: 1.6.1 pg-types: 4.0.2 @@ -25504,26 +25345,26 @@ snapshots: '@types/resolve@1.17.1': dependencies: - '@types/node': 20.14.13 + '@types/node': 22.19.7 '@types/resolve@1.20.2': {} '@types/responselike@1.0.3': dependencies: - '@types/node': 20.14.13 + '@types/node': 22.19.7 '@types/retry@0.12.0': {} '@types/secp256k1@4.0.6': dependencies: - '@types/node': 20.14.13 + '@types/node': 22.19.7 '@types/semver@7.5.8': {} '@types/send@0.17.1': dependencies: '@types/mime': 1.3.2 - '@types/node': 20.14.13 + '@types/node': 22.19.7 '@types/serve-index@1.9.1': dependencies: @@ -25533,25 +25374,25 @@ snapshots: dependencies: '@types/http-errors': 2.0.1 '@types/mime': 3.0.1 - '@types/node': 20.14.13 + '@types/node': 22.19.7 '@types/set-cookie-parser@2.4.3': dependencies: - '@types/node': 20.14.13 + '@types/node': 22.19.7 '@types/sns-validator@0.3.3': {} '@types/sockjs@0.3.33': dependencies: - '@types/node': 20.14.13 + '@types/node': 22.19.7 '@types/ssh2-streams@0.1.12': dependencies: - '@types/node': 20.14.13 + '@types/node': 22.19.7 '@types/ssh2@0.5.52': dependencies: - '@types/node': 20.14.13 + '@types/node': 22.19.7 '@types/ssh2-streams': 0.1.12 '@types/ssh2@1.15.0': @@ -25582,7 +25423,7 @@ snapshots: '@types/ws@8.5.5': dependencies: - '@types/node': 20.14.13 + '@types/node': 22.19.7 '@types/yargs-parser@21.0.0': {} @@ -25801,17 +25642,6 @@ snapshots: tiny-invariant: 1.3.1 toformat: 2.0.0 - '@uniswap/swap-router-contracts@1.3.1(hardhat@2.22.6(bufferutil@4.0.8)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@20.14.13)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))': - dependencies: - '@openzeppelin/contracts': 3.4.2 - '@uniswap/v2-core': 1.0.1 - '@uniswap/v3-core': 1.0.0 - '@uniswap/v3-periphery': 1.4.4 - dotenv: 14.3.2 - hardhat-watcher: 2.5.0(hardhat@2.22.6(bufferutil@4.0.8)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@20.14.13)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10)) - transitivePeerDependencies: - - hardhat - '@uniswap/swap-router-contracts@1.3.1(hardhat@2.22.6(bufferutil@4.0.8)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))': dependencies: '@openzeppelin/contracts': 3.4.2 @@ -25843,19 +25673,6 @@ snapshots: '@uniswap/v3-core': 1.0.0 base64-sol: 1.0.1 - '@uniswap/v3-sdk@3.10.0(hardhat@2.22.6(bufferutil@4.0.8)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@20.14.13)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))': - dependencies: - '@ethersproject/abi': 5.7.0 - '@ethersproject/solidity': 5.7.0 - '@uniswap/sdk-core': 4.0.6 - '@uniswap/swap-router-contracts': 1.3.1(hardhat@2.22.6(bufferutil@4.0.8)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@20.14.13)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10)) - '@uniswap/v3-periphery': 1.4.3 - '@uniswap/v3-staker': 1.0.0 - tiny-invariant: 1.3.1 - tiny-warning: 1.0.3 - transitivePeerDependencies: - - hardhat - '@uniswap/v3-sdk@3.10.0(hardhat@2.22.6(bufferutil@4.0.8)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))': dependencies: '@ethersproject/abi': 5.7.0 @@ -26871,14 +26688,14 @@ snapshots: transitivePeerDependencies: - supports-color - babel-loader@8.3.0(@babel/core@7.26.9)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)): + babel-loader@8.3.0(@babel/core@7.26.9)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)): dependencies: '@babel/core': 7.26.9 find-cache-dir: 3.3.2 loader-utils: 2.0.4 make-dir: 3.1.0 schema-utils: 2.7.1 - webpack: 5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2) + webpack: 5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1) babel-plugin-const-enum@1.2.0(@babel/core@7.26.10): dependencies: @@ -27268,6 +27085,10 @@ snapshots: dependencies: fill-range: 7.0.1 + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + brorand@1.1.0: {} browser-process-hrtime@1.0.0: {} @@ -27483,8 +27304,6 @@ snapshots: caniuse-lite@1.0.30001660: {} - caniuse-lite@1.0.30001703: {} - caniuse-lite@1.0.30001760: {} capture-exit@2.0.0: @@ -27575,7 +27394,7 @@ snapshots: chrome-launcher@0.15.2: dependencies: - '@types/node': 20.14.13 + '@types/node': 22.19.7 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2 @@ -27586,7 +27405,7 @@ snapshots: chromium-edge-launcher@0.2.0: dependencies: - '@types/node': 20.14.13 + '@types/node': 22.19.7 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2 @@ -28101,7 +27920,7 @@ snapshots: postcss: 8.4.49 postcss-selector-parser: 6.0.13 - css-loader@6.8.1(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)): + css-loader@6.8.1(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)): dependencies: icss-utils: 5.1.0(postcss@8.4.49) postcss: 8.4.49 @@ -28111,9 +27930,9 @@ snapshots: postcss-modules-values: 4.0.0(postcss@8.4.49) postcss-value-parser: 4.2.0 semver: 7.7.1 - webpack: 5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2) + webpack: 5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1) - css-minimizer-webpack-plugin@3.4.1(esbuild@0.24.2)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)): + css-minimizer-webpack-plugin@3.4.1(esbuild@0.23.1)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)): dependencies: cssnano: 5.1.15(postcss@8.4.49) jest-worker: 27.5.1 @@ -28121,9 +27940,9 @@ snapshots: schema-utils: 4.2.0 serialize-javascript: 6.0.2 source-map: 0.6.1 - webpack: 5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2) + webpack: 5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1) optionalDependencies: - esbuild: 0.24.2 + esbuild: 0.23.1 css-prefers-color-scheme@6.0.3(postcss@8.4.49): dependencies: @@ -28876,10 +28695,10 @@ snapshots: dependencies: magic-string: 0.25.9 - esbuild-plugins-node-modules-polyfill@1.6.7(esbuild@0.24.2): + esbuild-plugins-node-modules-polyfill@1.6.7(esbuild@0.23.1): dependencies: '@jspm/core': 2.0.1 - esbuild: 0.24.2 + esbuild: 0.23.1 local-pkg: 0.5.0 resolve.exports: 2.0.2 @@ -28936,34 +28755,6 @@ snapshots: '@esbuild/win32-ia32': 0.23.1 '@esbuild/win32-x64': 0.23.1 - esbuild@0.24.2: - optionalDependencies: - '@esbuild/aix-ppc64': 0.24.2 - '@esbuild/android-arm': 0.24.2 - '@esbuild/android-arm64': 0.24.2 - '@esbuild/android-x64': 0.24.2 - '@esbuild/darwin-arm64': 0.24.2 - '@esbuild/darwin-x64': 0.24.2 - '@esbuild/freebsd-arm64': 0.24.2 - '@esbuild/freebsd-x64': 0.24.2 - '@esbuild/linux-arm': 0.24.2 - '@esbuild/linux-arm64': 0.24.2 - '@esbuild/linux-ia32': 0.24.2 - '@esbuild/linux-loong64': 0.24.2 - '@esbuild/linux-mips64el': 0.24.2 - '@esbuild/linux-ppc64': 0.24.2 - '@esbuild/linux-riscv64': 0.24.2 - '@esbuild/linux-s390x': 0.24.2 - '@esbuild/linux-x64': 0.24.2 - '@esbuild/netbsd-arm64': 0.24.2 - '@esbuild/netbsd-x64': 0.24.2 - '@esbuild/openbsd-arm64': 0.24.2 - '@esbuild/openbsd-x64': 0.24.2 - '@esbuild/sunos-x64': 0.24.2 - '@esbuild/win32-arm64': 0.24.2 - '@esbuild/win32-ia32': 0.24.2 - '@esbuild/win32-x64': 0.24.2 - escalade@3.1.2: {} escalade@3.2.0: {} @@ -28999,7 +28790,7 @@ snapshots: dependencies: confusing-browser-globals: 1.0.11 eslint: 8.57.0 - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint-import-resolver-typescript@3.5.5)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) object.assign: 4.1.5 object.entries: 1.1.8 semver: 6.3.1 @@ -29010,13 +28801,13 @@ snapshots: '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@5.6.2) eslint: 8.57.0 eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint@8.57.0))(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint-import-resolver-typescript@3.5.5)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) eslint-config-airbnb@19.0.4(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint@8.57.0))(eslint-plugin-jsx-a11y@6.9.0(eslint@8.57.0))(eslint-plugin-react-hooks@5.0.0(eslint@8.57.0))(eslint-plugin-react@7.35.0(eslint@8.57.0))(eslint@8.57.0): dependencies: eslint: 8.57.0 eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint@8.57.0))(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint-import-resolver-typescript@3.5.5)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) eslint-plugin-jsx-a11y: 6.9.0(eslint@8.57.0) eslint-plugin-react: 7.35.0(eslint@8.57.0) eslint-plugin-react-hooks: 5.0.0(eslint@8.57.0) @@ -29031,7 +28822,7 @@ snapshots: eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(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@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint-import-resolver-typescript@3.5.5)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) eslint-plugin-jsx-a11y: 6.9.0(eslint@8.57.0) eslint-plugin-react: 7.35.0(eslint@8.57.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.57.0) @@ -29050,7 +28841,7 @@ snapshots: eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint@8.57.0))(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint-import-resolver-typescript@3.5.5)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) eslint-plugin-jsx-a11y: 6.9.0(eslint@8.57.0) eslint-plugin-react: 7.35.0(eslint@8.57.0) eslint-plugin-react-hooks: 5.0.0-canary-7118f5dd7-20230705(eslint@8.57.0) @@ -29069,7 +28860,7 @@ snapshots: eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint@8.57.0))(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint-import-resolver-typescript@3.5.5)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) eslint-plugin-jsx-a11y: 6.9.0(eslint@8.57.0) eslint-plugin-react: 7.35.0(eslint@8.57.0) eslint-plugin-react-hooks: 5.0.0-canary-7118f5dd7-20230705(eslint@8.57.0) @@ -29087,7 +28878,7 @@ snapshots: eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(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@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint-import-resolver-typescript@3.5.5)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) eslint-plugin-jsx-a11y: 6.9.0(eslint@8.57.0) eslint-plugin-react: 7.35.0(eslint@8.57.0) eslint-plugin-react-hooks: 5.0.0-canary-7118f5dd7-20230705(eslint@8.57.0) @@ -29105,7 +28896,7 @@ snapshots: eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(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@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint-import-resolver-typescript@3.5.5)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) eslint-plugin-jsx-a11y: 6.9.0(eslint@8.57.0) eslint-plugin-react: 7.35.0(eslint@8.57.0) eslint-plugin-react-hooks: 5.0.0-canary-7118f5dd7-20230705(eslint@8.57.0) @@ -29126,7 +28917,7 @@ snapshots: confusing-browser-globals: 1.0.11 eslint: 8.57.0 eslint-plugin-flowtype: 8.0.3(@babel/plugin-syntax-flow@7.24.7(@babel/core@7.26.10))(@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.26.10))(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint-import-resolver-typescript@3.5.5)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint@8.57.0)(typescript@5.6.2))(eslint@8.57.0)(jest@27.5.1(bufferutil@4.0.8)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2))(utf-8-validate@5.0.10))(typescript@5.6.2) eslint-plugin-jsx-a11y: 6.9.0(eslint@8.57.0) eslint-plugin-react: 7.35.0(eslint@8.57.0) @@ -29210,7 +29001,7 @@ snapshots: enhanced-resolve: 5.15.0 eslint: 8.57.0 eslint-module-utils: 2.8.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint-import-resolver-typescript@3.5.5)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) get-tsconfig: 4.6.2 globby: 13.2.2 is-core-module: 2.15.0 @@ -29228,7 +29019,7 @@ snapshots: enhanced-resolve: 5.15.0 eslint: 8.57.0 eslint-module-utils: 2.8.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.5.5)(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint-import-resolver-typescript@3.5.5)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) get-tsconfig: 4.6.2 globby: 13.2.2 is-core-module: 2.15.0 @@ -29306,7 +29097,7 @@ snapshots: lodash: 4.17.21 string-natural-compare: 3.0.1 - eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint-import-resolver-typescript@3.5.5)(eslint@8.57.0): + eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.6.2))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0): dependencies: array-includes: 3.1.8 array.prototype.findlastindex: 1.2.5 @@ -29573,7 +29364,7 @@ snapshots: eslint-visitor-keys@4.2.0: {} - eslint-webpack-plugin@3.2.0(eslint@8.57.0)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)): + eslint-webpack-plugin@3.2.0(eslint@8.57.0)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)): dependencies: '@types/eslint': 8.44.0 eslint: 8.57.0 @@ -29581,9 +29372,9 @@ snapshots: micromatch: 4.0.5 normalize-path: 3.0.0 schema-utils: 4.2.0 - webpack: 5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2) + webpack: 5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1) - eslint-webpack-plugin@3.2.0(eslint@9.16.0(jiti@1.21.0))(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)): + eslint-webpack-plugin@3.2.0(eslint@9.16.0(jiti@1.21.0))(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)): dependencies: '@types/eslint': 8.44.0 eslint: 9.16.0(jiti@1.21.0) @@ -29591,7 +29382,7 @@ snapshots: micromatch: 4.0.5 normalize-path: 3.0.0 schema-utils: 4.2.0 - webpack: 5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2) + webpack: 5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1) eslint@8.57.0: dependencies: @@ -30240,11 +30031,11 @@ snapshots: dependencies: flat-cache: 4.0.1 - file-loader@6.2.0(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)): + file-loader@6.2.0(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2) + webpack: 5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1) file-type@17.1.6: dependencies: @@ -30277,6 +30068,10 @@ snapshots: dependencies: to-regex-range: 5.0.1 + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + filter-obj@1.1.0: {} finalhandler@1.1.2: @@ -30384,7 +30179,7 @@ snapshots: forge-std@1.1.2: {} - fork-ts-checker-webpack-plugin@6.5.3(eslint@8.57.0)(typescript@5.6.2)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)): + fork-ts-checker-webpack-plugin@6.5.3(eslint@8.57.0)(typescript@5.6.2)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)): dependencies: '@babel/code-frame': 7.26.2 '@types/json-schema': 7.0.15 @@ -30400,11 +30195,11 @@ snapshots: semver: 7.7.3 tapable: 1.1.3 typescript: 5.6.2 - webpack: 5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2) + webpack: 5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1) optionalDependencies: eslint: 8.57.0 - fork-ts-checker-webpack-plugin@6.5.3(eslint@9.16.0(jiti@1.21.0))(typescript@5.6.2)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)): + fork-ts-checker-webpack-plugin@6.5.3(eslint@9.16.0(jiti@1.21.0))(typescript@5.6.2)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)): dependencies: '@babel/code-frame': 7.26.2 '@types/json-schema': 7.0.15 @@ -30420,7 +30215,7 @@ snapshots: semver: 7.7.3 tapable: 1.1.3 typescript: 5.6.2 - webpack: 5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2) + webpack: 5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1) optionalDependencies: eslint: 9.16.0(jiti@1.21.0) @@ -30828,11 +30623,6 @@ snapshots: - debug - utf-8-validate - hardhat-watcher@2.5.0(hardhat@2.22.6(bufferutil@4.0.8)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@20.14.13)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10)): - dependencies: - chokidar: 3.6.0 - hardhat: 2.22.6(bufferutil@4.0.8)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@20.14.13)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10) - hardhat-watcher@2.5.0(hardhat@2.22.6(bufferutil@4.0.8)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10)): dependencies: chokidar: 3.6.0 @@ -31084,14 +30874,14 @@ snapshots: dependencies: void-elements: 3.1.0 - html-webpack-plugin@5.5.3(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)): + html-webpack-plugin@5.5.3(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 lodash: 4.17.21 pretty-error: 4.0.0 tapable: 2.2.1 - webpack: 5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2) + webpack: 5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1) htmlparser2@6.1.0: dependencies: @@ -31729,7 +31519,7 @@ snapshots: '@jest/environment': 27.5.1 '@jest/test-result': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 20.14.13 + '@types/node': 22.19.7 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 @@ -31754,7 +31544,7 @@ snapshots: '@jest/expect': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.14.13 + '@types/node': 22.19.7 chalk: 4.1.2 co: 4.6.0 dedent: 1.5.3(babel-plugin-macros@3.1.0) @@ -31840,27 +31630,6 @@ snapshots: - supports-color - ts-node - jest-cli@29.7.0(@types/node@22.19.7)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2): - dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@20.14.13)(typescript@5.6.2)) - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - chalk: 4.1.2 - create-jest: 29.7.0(@types/node@22.19.7)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2)) - exit: 0.1.2 - import-local: 3.1.0 - jest-config: 29.7.0(@types/node@22.19.7)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2)) - jest-util: 29.7.0 - jest-validate: 29.7.0 - yargs: 17.7.2 - optionalDependencies: - node-notifier: 8.0.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - jest-cli@29.7.0(@types/node@22.19.7)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2)): dependencies: '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2)) @@ -31895,7 +31664,7 @@ snapshots: jest-environment-jsdom: 26.6.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) jest-environment-node: 26.6.2 jest-get-type: 26.3.0 - jest-jasmine2: 26.6.3(bufferutil@4.0.8)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@20.14.13)(typescript@5.6.2))(utf-8-validate@5.0.10) + jest-jasmine2: 26.6.3 jest-regex-util: 26.0.0 jest-resolve: 26.6.2 jest-util: 26.6.2 @@ -31975,7 +31744,7 @@ snapshots: - babel-plugin-macros - supports-color - jest-config@29.7.0(@types/node@20.14.13)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2)): + jest-config@29.7.0(@types/node@22.19.7)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@20.14.13)(typescript@5.6.2)): dependencies: '@babel/core': 7.26.10 '@jest/test-sequencer': 29.7.0 @@ -32000,8 +31769,8 @@ snapshots: slash: 3.0.0 strip-json-comments: 3.1.1 optionalDependencies: - '@types/node': 20.14.13 - ts-node: 10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2) + '@types/node': 22.19.7 + ts-node: 10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@20.14.13)(typescript@5.6.2) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -32116,7 +31885,7 @@ snapshots: '@jest/environment': 26.6.2 '@jest/fake-timers': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 20.14.13 + '@types/node': 22.19.7 jest-mock: 26.6.2 jest-util: 26.6.2 jsdom: 16.7.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) @@ -32131,7 +31900,7 @@ snapshots: '@jest/environment': 27.5.1 '@jest/fake-timers': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 20.14.13 + '@types/node': 22.19.7 jest-mock: 27.5.1 jest-util: 27.5.1 jsdom: 16.7.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) @@ -32147,7 +31916,7 @@ snapshots: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 '@types/jsdom': 20.0.1 - '@types/node': 20.14.13 + '@types/node': 22.19.7 jest-mock: 29.7.0 jest-util: 29.7.0 jsdom: 20.0.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) @@ -32161,7 +31930,7 @@ snapshots: '@jest/environment': 26.6.2 '@jest/fake-timers': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 20.14.13 + '@types/node': 22.19.7 jest-mock: 26.6.2 jest-util: 26.6.2 @@ -32170,7 +31939,7 @@ snapshots: '@jest/environment': 27.5.1 '@jest/fake-timers': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 20.14.13 + '@types/node': 22.19.7 jest-mock: 27.5.1 jest-util: 27.5.1 @@ -32179,7 +31948,7 @@ snapshots: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.14.13 + '@types/node': 22.19.7 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -32193,7 +31962,7 @@ snapshots: dependencies: '@jest/types': 26.6.2 '@types/graceful-fs': 4.1.6 - '@types/node': 20.14.13 + '@types/node': 22.19.7 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -32213,7 +31982,7 @@ snapshots: dependencies: '@jest/types': 27.5.1 '@types/graceful-fs': 4.1.6 - '@types/node': 20.14.13 + '@types/node': 22.19.7 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -32230,7 +31999,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.6 - '@types/node': 20.14.13 + '@types/node': 22.19.7 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -32242,14 +32011,14 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - jest-jasmine2@26.6.3(bufferutil@4.0.8)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@20.14.13)(typescript@5.6.2))(utf-8-validate@5.0.10): + jest-jasmine2@26.6.3: dependencies: '@babel/traverse': 7.27.0 '@jest/environment': 26.6.2 '@jest/source-map': 26.6.2 '@jest/test-result': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 20.14.13 + '@types/node': 22.19.7 chalk: 4.1.2 co: 4.6.0 expect: 26.6.2 @@ -32263,11 +32032,7 @@ snapshots: pretty-format: 26.6.2 throat: 5.0.0 transitivePeerDependencies: - - bufferutil - - canvas - supports-color - - ts-node - - utf-8-validate jest-jasmine2@27.5.1: dependencies: @@ -32275,7 +32040,7 @@ snapshots: '@jest/source-map': 27.5.1 '@jest/test-result': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 20.14.13 + '@types/node': 22.19.7 chalk: 4.1.2 co: 4.6.0 expect: 27.5.1 @@ -32378,17 +32143,17 @@ snapshots: jest-mock@26.6.2: dependencies: '@jest/types': 26.6.2 - '@types/node': 20.14.13 + '@types/node': 22.19.7 jest-mock@27.5.1: dependencies: '@jest/types': 27.5.1 - '@types/node': 20.14.13 + '@types/node': 22.19.7 jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 20.14.13 + '@types/node': 22.19.7 jest-util: 29.7.0 jest-pnp-resolver@1.2.3(jest-resolve@26.6.2): @@ -32476,7 +32241,7 @@ snapshots: '@jest/environment': 26.6.2 '@jest/test-result': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 20.14.13 + '@types/node': 22.19.7 chalk: 4.1.2 emittery: 0.7.2 exit: 0.1.2 @@ -32506,7 +32271,7 @@ snapshots: '@jest/test-result': 27.5.1 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 20.14.13 + '@types/node': 22.19.7 chalk: 4.1.2 emittery: 0.8.1 graceful-fs: 4.2.11 @@ -32535,7 +32300,7 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.14.13 + '@types/node': 22.19.7 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -32626,7 +32391,7 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.14.13 + '@types/node': 22.19.7 chalk: 4.1.2 cjs-module-lexer: 1.2.3 collect-v8-coverage: 1.0.2 @@ -32646,12 +32411,12 @@ snapshots: jest-serializer@26.6.2: dependencies: - '@types/node': 20.14.13 + '@types/node': 22.19.7 graceful-fs: 4.2.11 jest-serializer@27.5.1: dependencies: - '@types/node': 20.14.13 + '@types/node': 22.19.7 graceful-fs: 4.2.11 jest-snapshot@26.6.2: @@ -32730,7 +32495,7 @@ snapshots: jest-util@26.6.2: dependencies: '@jest/types': 26.6.2 - '@types/node': 20.14.13 + '@types/node': 22.19.7 chalk: 4.1.2 graceful-fs: 4.2.11 is-ci: 2.0.0 @@ -32739,7 +32504,7 @@ snapshots: jest-util@27.5.1: dependencies: '@jest/types': 27.5.1 - '@types/node': 20.14.13 + '@types/node': 22.19.7 chalk: 4.1.2 ci-info: 3.8.0 graceful-fs: 4.2.11 @@ -32748,7 +32513,7 @@ snapshots: jest-util@28.1.3: dependencies: '@jest/types': 28.1.3 - '@types/node': 20.14.13 + '@types/node': 22.19.7 chalk: 4.1.2 ci-info: 3.8.0 graceful-fs: 4.2.11 @@ -32757,7 +32522,7 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 20.14.13 + '@types/node': 22.19.7 chalk: 4.1.2 ci-info: 3.8.0 graceful-fs: 4.2.11 @@ -32805,7 +32570,7 @@ snapshots: dependencies: '@jest/test-result': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 20.14.13 + '@types/node': 22.19.7 ansi-escapes: 4.3.2 chalk: 4.1.2 jest-util: 26.6.2 @@ -32815,7 +32580,7 @@ snapshots: dependencies: '@jest/test-result': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 20.14.13 + '@types/node': 22.19.7 ansi-escapes: 4.3.2 chalk: 4.1.2 jest-util: 27.5.1 @@ -32825,7 +32590,7 @@ snapshots: dependencies: '@jest/test-result': 28.1.3 '@jest/types': 28.1.3 - '@types/node': 20.14.13 + '@types/node': 22.19.7 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.10.2 @@ -32836,7 +32601,7 @@ snapshots: dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.14.13 + '@types/node': 22.19.7 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -32845,25 +32610,25 @@ snapshots: jest-worker@26.6.2: dependencies: - '@types/node': 20.14.13 + '@types/node': 22.19.7 merge-stream: 2.0.0 supports-color: 7.2.0 jest-worker@27.5.1: dependencies: - '@types/node': 20.14.13 + '@types/node': 22.19.7 merge-stream: 2.0.0 supports-color: 8.1.1 jest-worker@28.1.3: dependencies: - '@types/node': 20.14.13 + '@types/node': 22.19.7 merge-stream: 2.0.0 supports-color: 8.1.1 jest-worker@29.7.0: dependencies: - '@types/node': 20.14.13 + '@types/node': 22.19.7 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -32910,10 +32675,10 @@ snapshots: jest@29.7.0(@types/node@22.19.7)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2): dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@20.14.13)(typescript@5.6.2)) + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2)) '@jest/types': 29.6.3 import-local: 3.1.0 - jest-cli: 29.7.0(@types/node@22.19.7)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2) + jest-cli: 29.7.0(@types/node@22.19.7)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2)) optionalDependencies: node-notifier: 8.0.2 transitivePeerDependencies: @@ -32991,7 +32756,7 @@ snapshots: chalk: 4.1.2 flow-parser: 0.246.0 graceful-fs: 4.2.11 - micromatch: 4.0.5 + micromatch: 4.0.8 neo-async: 2.6.2 node-dir: 0.1.17 recast: 0.21.5 @@ -33648,7 +33413,7 @@ snapshots: graceful-fs: 4.2.11 invariant: 2.2.4 jest-worker: 29.7.0 - micromatch: 4.0.5 + micromatch: 4.0.8 node-abort-controller: 3.1.1 nullthrows: 1.1.1 walker: 1.0.8 @@ -33730,7 +33495,7 @@ snapshots: metro@0.80.12(bufferutil@4.0.8)(utf-8-validate@5.0.10): dependencies: - '@babel/code-frame': 7.26.2 + '@babel/code-frame': 7.29.0 '@babel/core': 7.26.10 '@babel/generator': 7.27.0 '@babel/parser': 7.27.0 @@ -33802,6 +33567,11 @@ snapshots: braces: 3.0.2 picomatch: 2.3.1 + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + miller-rabin@4.0.1: dependencies: bn.js: 4.12.0 @@ -33829,10 +33599,10 @@ snapshots: min-indent@1.0.1: {} - mini-css-extract-plugin@2.7.6(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)): + mini-css-extract-plugin@2.7.6(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)): dependencies: schema-utils: 4.2.0 - webpack: 5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2) + webpack: 5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1) minimalistic-assert@1.0.1: {} @@ -34073,29 +33843,35 @@ snapshots: dependencies: '@segment/isodate': 1.0.3 - next-auth@5.0.0-beta.30(next@15.5.10(@babel/core@7.26.10)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@19.0.0-rc-66855b96-20241106))(react@19.0.0-rc-66855b96-20241106))(react@19.0.0-rc-66855b96-20241106): + next-auth@5.0.0-beta.30(next@14.2.25(@babel/core@7.26.10)(@playwright/test@1.45.3)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@19.0.0-rc-66855b96-20241106))(react@19.0.0-rc-66855b96-20241106))(react@19.0.0-rc-66855b96-20241106): dependencies: '@auth/core': 0.41.0 - next: 15.5.10(@babel/core@7.26.10)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@19.0.0-rc-66855b96-20241106))(react@19.0.0-rc-66855b96-20241106) + next: 14.2.25(@babel/core@7.26.10)(@playwright/test@1.45.3)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@19.0.0-rc-66855b96-20241106))(react@19.0.0-rc-66855b96-20241106) react: 19.0.0-rc-66855b96-20241106 + next-auth@5.0.0-beta.30(next@14.2.25(@babel/core@7.26.10)(@playwright/test@1.45.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1): + dependencies: + '@auth/core': 0.41.0 + next: 14.2.25(@babel/core@7.26.10)(@playwright/test@1.45.3)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + next-auth@5.0.0-beta.30(next@15.5.10(@babel/core@7.26.10)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1): dependencies: '@auth/core': 0.41.0 - next: 15.5.10(@babel/core@7.26.10)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + next: 15.5.10(@babel/core@7.26.10)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 - next@14.2.25(@babel/core@7.26.10)(@playwright/test@1.45.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + next@14.2.25(@babel/core@7.26.10)(@playwright/test@1.45.3)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: '@next/env': 14.2.25 '@swc/helpers': 0.5.5 busboy: 1.6.0 - caniuse-lite: 1.0.30001703 + caniuse-lite: 1.0.30001760 graceful-fs: 4.2.11 postcss: 8.4.31 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - styled-jsx: 5.1.1(@babel/core@7.26.10)(react@18.3.1) + styled-jsx: 5.1.1(@babel/core@7.26.10)(babel-plugin-macros@3.1.0)(react@18.3.1) optionalDependencies: '@next/swc-darwin-arm64': 14.2.25 '@next/swc-darwin-x64': 14.2.25 @@ -34111,38 +33887,41 @@ snapshots: - '@babel/core' - babel-plugin-macros - next@15.5.10(@babel/core@7.26.10)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + next@14.2.25(@babel/core@7.26.10)(@playwright/test@1.45.3)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@19.0.0-rc-66855b96-20241106))(react@19.0.0-rc-66855b96-20241106): dependencies: - '@next/env': 15.5.10 - '@swc/helpers': 0.5.15 + '@next/env': 14.2.25 + '@swc/helpers': 0.5.5 + busboy: 1.6.0 caniuse-lite: 1.0.30001760 + graceful-fs: 4.2.11 postcss: 8.4.31 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - styled-jsx: 5.1.6(@babel/core@7.26.10)(babel-plugin-macros@3.1.0)(react@18.3.1) + react: 19.0.0-rc-66855b96-20241106 + react-dom: 18.3.1(react@19.0.0-rc-66855b96-20241106) + styled-jsx: 5.1.1(@babel/core@7.26.10)(babel-plugin-macros@3.1.0)(react@19.0.0-rc-66855b96-20241106) optionalDependencies: - '@next/swc-darwin-arm64': 15.5.7 - '@next/swc-darwin-x64': 15.5.7 - '@next/swc-linux-arm64-gnu': 15.5.7 - '@next/swc-linux-arm64-musl': 15.5.7 - '@next/swc-linux-x64-gnu': 15.5.7 - '@next/swc-linux-x64-musl': 15.5.7 - '@next/swc-win32-arm64-msvc': 15.5.7 - '@next/swc-win32-x64-msvc': 15.5.7 - sharp: 0.34.5 + '@next/swc-darwin-arm64': 14.2.25 + '@next/swc-darwin-x64': 14.2.25 + '@next/swc-linux-arm64-gnu': 14.2.25 + '@next/swc-linux-arm64-musl': 14.2.25 + '@next/swc-linux-x64-gnu': 14.2.25 + '@next/swc-linux-x64-musl': 14.2.25 + '@next/swc-win32-arm64-msvc': 14.2.25 + '@next/swc-win32-ia32-msvc': 14.2.25 + '@next/swc-win32-x64-msvc': 14.2.25 + '@playwright/test': 1.45.3 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros - next@15.5.10(@babel/core@7.26.10)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@19.0.0-rc-66855b96-20241106))(react@19.0.0-rc-66855b96-20241106): + next@15.5.10(@babel/core@7.26.10)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: '@next/env': 15.5.10 '@swc/helpers': 0.5.15 caniuse-lite: 1.0.30001760 postcss: 8.4.31 - react: 19.0.0-rc-66855b96-20241106 - react-dom: 18.3.1(react@19.0.0-rc-66855b96-20241106) - styled-jsx: 5.1.6(@babel/core@7.26.10)(babel-plugin-macros@3.1.0)(react@19.0.0-rc-66855b96-20241106) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + styled-jsx: 5.1.6(@babel/core@7.26.10)(react@18.3.1) optionalDependencies: '@next/swc-darwin-arm64': 15.5.7 '@next/swc-darwin-x64': 15.5.7 @@ -35171,13 +34950,13 @@ snapshots: postcss: 8.4.49 yaml: 2.5.0 - postcss-loader@6.2.1(postcss@8.4.49)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)): + postcss-loader@6.2.1(postcss@8.4.49)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)): dependencies: cosmiconfig: 7.1.0 klona: 2.0.6 postcss: 8.4.49 semver: 7.7.1 - webpack: 5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2) + webpack: 5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1) postcss-logical@5.0.4(postcss@8.4.49): dependencies: @@ -35587,7 +35366,7 @@ snapshots: '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 '@types/long': 4.0.2 - '@types/node': 20.14.13 + '@types/node': 22.19.7 long: 4.0.0 protobufjs@7.4.0: @@ -35602,7 +35381,7 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 20.14.13 + '@types/node': 22.19.7 long: 5.2.3 proxy-addr@2.0.7: @@ -35749,7 +35528,7 @@ snapshots: optionalDependencies: '@types/react': 18.3.12 - react-dev-utils@12.0.1(eslint@8.57.0)(typescript@5.6.2)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)): + react-dev-utils@12.0.1(eslint@8.57.0)(typescript@5.6.2)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)): dependencies: '@babel/code-frame': 7.26.2 address: 1.2.2 @@ -35760,7 +35539,7 @@ snapshots: escape-string-regexp: 4.0.0 filesize: 8.0.7 find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.57.0)(typescript@5.6.2)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)) + fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.57.0)(typescript@5.6.2)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)) global-modules: 2.0.0 globby: 11.1.0 gzip-size: 6.0.0 @@ -35775,7 +35554,7 @@ snapshots: shell-quote: 1.8.1 strip-ansi: 6.0.1 text-table: 0.2.0 - webpack: 5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2) + webpack: 5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1) optionalDependencies: typescript: 5.6.2 transitivePeerDependencies: @@ -35783,7 +35562,7 @@ snapshots: - supports-color - vue-template-compiler - react-dev-utils@12.0.1(eslint@9.16.0(jiti@1.21.0))(typescript@5.6.2)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)): + react-dev-utils@12.0.1(eslint@9.16.0(jiti@1.21.0))(typescript@5.6.2)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)): dependencies: '@babel/code-frame': 7.26.2 address: 1.2.2 @@ -35794,7 +35573,7 @@ snapshots: escape-string-regexp: 4.0.0 filesize: 8.0.7 find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 6.5.3(eslint@9.16.0(jiti@1.21.0))(typescript@5.6.2)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)) + fork-ts-checker-webpack-plugin: 6.5.3(eslint@9.16.0(jiti@1.21.0))(typescript@5.6.2)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)) global-modules: 2.0.0 globby: 11.1.0 gzip-size: 6.0.0 @@ -35809,7 +35588,7 @@ snapshots: shell-quote: 1.8.1 strip-ansi: 6.0.1 text-table: 0.2.0 - webpack: 5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2) + webpack: 5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1) optionalDependencies: typescript: 5.6.2 transitivePeerDependencies: @@ -35941,56 +35720,56 @@ snapshots: '@remix-run/router': 1.7.2 react: 18.3.1 - react-scripts@5.0.1(@babel/plugin-syntax-flow@7.24.7(@babel/core@7.26.10))(@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.26.10))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/babel__core@7.20.5)(bufferutil@4.0.8)(esbuild@0.24.2)(eslint@8.57.0)(node-notifier@8.0.2)(react@18.3.1)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2))(type-fest@2.19.0)(typescript@5.6.2)(utf-8-validate@5.0.10): + react-scripts@5.0.1(@babel/plugin-syntax-flow@7.24.7(@babel/core@7.26.10))(@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.26.10))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/babel__core@7.20.5)(bufferutil@4.0.8)(esbuild@0.23.1)(eslint@8.57.0)(node-notifier@8.0.2)(react@18.3.1)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2))(type-fest@2.19.0)(typescript@5.6.2)(utf-8-validate@5.0.10): dependencies: '@babel/core': 7.26.9 - '@pmmmwh/react-refresh-webpack-plugin': 0.5.10(react-refresh@0.11.0)(type-fest@2.19.0)(webpack-dev-server@4.15.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)))(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)) + '@pmmmwh/react-refresh-webpack-plugin': 0.5.10(react-refresh@0.11.0)(type-fest@2.19.0)(webpack-dev-server@4.15.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)))(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)) '@svgr/webpack': 5.5.0 babel-jest: 27.5.1(@babel/core@7.26.9) - babel-loader: 8.3.0(@babel/core@7.26.9)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)) + babel-loader: 8.3.0(@babel/core@7.26.9)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)) babel-plugin-named-asset-import: 0.3.8(@babel/core@7.26.9) babel-preset-react-app: 10.0.1 bfj: 7.0.2 browserslist: 4.23.3 camelcase: 6.3.0 case-sensitive-paths-webpack-plugin: 2.4.0 - css-loader: 6.8.1(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)) - css-minimizer-webpack-plugin: 3.4.1(esbuild@0.24.2)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)) + css-loader: 6.8.1(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)) + css-minimizer-webpack-plugin: 3.4.1(esbuild@0.23.1)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)) dotenv: 10.0.0 dotenv-expand: 5.1.0 eslint: 8.57.0 eslint-config-react-app: 7.0.1(@babel/plugin-syntax-flow@7.24.7(@babel/core@7.26.10))(@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.26.10))(eslint@8.57.0)(jest@27.5.1(bufferutil@4.0.8)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2))(utf-8-validate@5.0.10))(typescript@5.6.2) - eslint-webpack-plugin: 3.2.0(eslint@8.57.0)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)) - file-loader: 6.2.0(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)) + eslint-webpack-plugin: 3.2.0(eslint@8.57.0)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)) + file-loader: 6.2.0(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)) fs-extra: 10.1.0 - html-webpack-plugin: 5.5.3(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)) + html-webpack-plugin: 5.5.3(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)) identity-obj-proxy: 3.0.0 jest: 27.5.1(bufferutil@4.0.8)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2))(utf-8-validate@5.0.10) jest-resolve: 27.5.1 jest-watch-typeahead: 1.1.0(jest@27.5.1(bufferutil@4.0.8)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2))(utf-8-validate@5.0.10)) - mini-css-extract-plugin: 2.7.6(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)) + mini-css-extract-plugin: 2.7.6(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)) postcss: 8.4.49 postcss-flexbugs-fixes: 5.0.2(postcss@8.4.49) - postcss-loader: 6.2.1(postcss@8.4.49)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)) + postcss-loader: 6.2.1(postcss@8.4.49)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)) postcss-normalize: 10.0.1(browserslist@4.23.3)(postcss@8.4.49) postcss-preset-env: 7.8.3(postcss@8.4.49) prompts: 2.4.2 react: 18.3.1 react-app-polyfill: 3.0.0 - react-dev-utils: 12.0.1(eslint@8.57.0)(typescript@5.6.2)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)) + react-dev-utils: 12.0.1(eslint@8.57.0)(typescript@5.6.2)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)) react-refresh: 0.11.0 resolve: 1.22.8 resolve-url-loader: 4.0.0 - sass-loader: 12.6.0(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)) + sass-loader: 12.6.0(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)) semver: 7.6.3 - source-map-loader: 3.0.2(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)) - style-loader: 3.3.3(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)) + source-map-loader: 3.0.2(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)) + style-loader: 3.3.3(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)) tailwindcss: 3.4.7(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2)) - terser-webpack-plugin: 5.3.9(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)) - webpack: 5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2) - webpack-dev-server: 4.15.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)) - webpack-manifest-plugin: 4.1.1(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)) - workbox-webpack-plugin: 6.6.0(@types/babel__core@7.20.5)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)) + terser-webpack-plugin: 5.3.9(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)) + webpack: 5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1) + webpack-dev-server: 4.15.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)) + webpack-manifest-plugin: 4.1.1(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)) + workbox-webpack-plugin: 6.6.0(@types/babel__core@7.20.5)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)) optionalDependencies: fsevents: 2.3.3 typescript: 5.6.2 @@ -36027,56 +35806,56 @@ snapshots: - webpack-hot-middleware - webpack-plugin-serve - react-scripts@5.0.1(@babel/plugin-syntax-flow@7.24.7(@babel/core@7.26.10))(@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.26.10))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/babel__core@7.20.5)(bufferutil@4.0.8)(esbuild@0.24.2)(eslint@9.16.0(jiti@1.21.0))(node-notifier@8.0.2)(react@18.3.1)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2))(type-fest@2.19.0)(typescript@5.6.2)(utf-8-validate@5.0.10): + react-scripts@5.0.1(@babel/plugin-syntax-flow@7.24.7(@babel/core@7.26.10))(@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.26.10))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/babel__core@7.20.5)(bufferutil@4.0.8)(esbuild@0.23.1)(eslint@9.16.0(jiti@1.21.0))(node-notifier@8.0.2)(react@18.3.1)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2))(type-fest@2.19.0)(typescript@5.6.2)(utf-8-validate@5.0.10): dependencies: '@babel/core': 7.26.9 - '@pmmmwh/react-refresh-webpack-plugin': 0.5.10(react-refresh@0.11.0)(type-fest@2.19.0)(webpack-dev-server@4.15.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)))(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)) + '@pmmmwh/react-refresh-webpack-plugin': 0.5.10(react-refresh@0.11.0)(type-fest@2.19.0)(webpack-dev-server@4.15.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)))(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)) '@svgr/webpack': 5.5.0 babel-jest: 27.5.1(@babel/core@7.26.9) - babel-loader: 8.3.0(@babel/core@7.26.9)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)) + babel-loader: 8.3.0(@babel/core@7.26.9)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)) babel-plugin-named-asset-import: 0.3.8(@babel/core@7.26.9) babel-preset-react-app: 10.0.1 bfj: 7.0.2 browserslist: 4.23.3 camelcase: 6.3.0 case-sensitive-paths-webpack-plugin: 2.4.0 - css-loader: 6.8.1(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)) - css-minimizer-webpack-plugin: 3.4.1(esbuild@0.24.2)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)) + css-loader: 6.8.1(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)) + css-minimizer-webpack-plugin: 3.4.1(esbuild@0.23.1)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)) dotenv: 10.0.0 dotenv-expand: 5.1.0 eslint: 9.16.0(jiti@1.21.0) eslint-config-react-app: 7.0.1(@babel/plugin-syntax-flow@7.24.7(@babel/core@7.26.10))(@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.26.10))(eslint@9.16.0(jiti@1.21.0))(jest@27.5.1(bufferutil@4.0.8)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2))(utf-8-validate@5.0.10))(typescript@5.6.2) - eslint-webpack-plugin: 3.2.0(eslint@9.16.0(jiti@1.21.0))(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)) - file-loader: 6.2.0(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)) + eslint-webpack-plugin: 3.2.0(eslint@9.16.0(jiti@1.21.0))(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)) + file-loader: 6.2.0(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)) fs-extra: 10.1.0 - html-webpack-plugin: 5.5.3(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)) + html-webpack-plugin: 5.5.3(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)) identity-obj-proxy: 3.0.0 jest: 27.5.1(bufferutil@4.0.8)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2))(utf-8-validate@5.0.10) jest-resolve: 27.5.1 jest-watch-typeahead: 1.1.0(jest@27.5.1(bufferutil@4.0.8)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2))(utf-8-validate@5.0.10)) - mini-css-extract-plugin: 2.7.6(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)) + mini-css-extract-plugin: 2.7.6(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)) postcss: 8.4.49 postcss-flexbugs-fixes: 5.0.2(postcss@8.4.49) - postcss-loader: 6.2.1(postcss@8.4.49)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)) + postcss-loader: 6.2.1(postcss@8.4.49)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)) postcss-normalize: 10.0.1(browserslist@4.23.3)(postcss@8.4.49) postcss-preset-env: 7.8.3(postcss@8.4.49) prompts: 2.4.2 react: 18.3.1 react-app-polyfill: 3.0.0 - react-dev-utils: 12.0.1(eslint@9.16.0(jiti@1.21.0))(typescript@5.6.2)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)) + react-dev-utils: 12.0.1(eslint@9.16.0(jiti@1.21.0))(typescript@5.6.2)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)) react-refresh: 0.11.0 resolve: 1.22.8 resolve-url-loader: 4.0.0 - sass-loader: 12.6.0(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)) + sass-loader: 12.6.0(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)) semver: 7.6.3 - source-map-loader: 3.0.2(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)) - style-loader: 3.3.3(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)) + source-map-loader: 3.0.2(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)) + style-loader: 3.3.3(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)) tailwindcss: 3.4.7(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2)) - terser-webpack-plugin: 5.3.9(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)) - webpack: 5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2) - webpack-dev-server: 4.15.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)) - webpack-manifest-plugin: 4.1.1(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)) - workbox-webpack-plugin: 6.6.0(@types/babel__core@7.20.5)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)) + terser-webpack-plugin: 5.3.9(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)) + webpack: 5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1) + webpack-dev-server: 4.15.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)) + webpack-manifest-plugin: 4.1.1(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)) + workbox-webpack-plugin: 6.6.0(@types/babel__core@7.20.5)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)) optionalDependencies: fsevents: 2.3.3 typescript: 5.6.2 @@ -36113,56 +35892,56 @@ snapshots: - webpack-hot-middleware - webpack-plugin-serve - react-scripts@5.0.1(@babel/plugin-syntax-flow@7.24.7(@babel/core@7.26.9))(@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.26.9))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/babel__core@7.20.5)(bufferutil@4.0.8)(esbuild@0.24.2)(eslint@9.16.0(jiti@1.21.0))(node-notifier@8.0.2)(react@18.3.1)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2))(type-fest@2.19.0)(typescript@5.6.2)(utf-8-validate@5.0.10): + react-scripts@5.0.1(@babel/plugin-syntax-flow@7.24.7(@babel/core@7.26.9))(@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.26.9))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/babel__core@7.20.5)(bufferutil@4.0.8)(esbuild@0.23.1)(eslint@9.16.0(jiti@1.21.0))(node-notifier@8.0.2)(react@18.3.1)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2))(type-fest@2.19.0)(typescript@5.6.2)(utf-8-validate@5.0.10): dependencies: '@babel/core': 7.26.9 - '@pmmmwh/react-refresh-webpack-plugin': 0.5.10(react-refresh@0.11.0)(type-fest@2.19.0)(webpack-dev-server@4.15.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)))(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)) + '@pmmmwh/react-refresh-webpack-plugin': 0.5.10(react-refresh@0.11.0)(type-fest@2.19.0)(webpack-dev-server@4.15.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)))(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)) '@svgr/webpack': 5.5.0 babel-jest: 27.5.1(@babel/core@7.26.9) - babel-loader: 8.3.0(@babel/core@7.26.9)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)) + babel-loader: 8.3.0(@babel/core@7.26.9)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)) babel-plugin-named-asset-import: 0.3.8(@babel/core@7.26.9) babel-preset-react-app: 10.0.1 bfj: 7.0.2 browserslist: 4.23.3 camelcase: 6.3.0 case-sensitive-paths-webpack-plugin: 2.4.0 - css-loader: 6.8.1(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)) - css-minimizer-webpack-plugin: 3.4.1(esbuild@0.24.2)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)) + css-loader: 6.8.1(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)) + css-minimizer-webpack-plugin: 3.4.1(esbuild@0.23.1)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)) dotenv: 10.0.0 dotenv-expand: 5.1.0 eslint: 9.16.0(jiti@1.21.0) eslint-config-react-app: 7.0.1(@babel/plugin-syntax-flow@7.24.7(@babel/core@7.26.9))(@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.26.9))(eslint@9.16.0(jiti@1.21.0))(jest@27.5.1(bufferutil@4.0.8)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2))(utf-8-validate@5.0.10))(typescript@5.6.2) - eslint-webpack-plugin: 3.2.0(eslint@9.16.0(jiti@1.21.0))(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)) - file-loader: 6.2.0(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)) + eslint-webpack-plugin: 3.2.0(eslint@9.16.0(jiti@1.21.0))(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)) + file-loader: 6.2.0(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)) fs-extra: 10.1.0 - html-webpack-plugin: 5.5.3(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)) + html-webpack-plugin: 5.5.3(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)) identity-obj-proxy: 3.0.0 jest: 27.5.1(bufferutil@4.0.8)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2))(utf-8-validate@5.0.10) jest-resolve: 27.5.1 jest-watch-typeahead: 1.1.0(jest@27.5.1(bufferutil@4.0.8)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2))(utf-8-validate@5.0.10)) - mini-css-extract-plugin: 2.7.6(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)) + mini-css-extract-plugin: 2.7.6(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)) postcss: 8.4.49 postcss-flexbugs-fixes: 5.0.2(postcss@8.4.49) - postcss-loader: 6.2.1(postcss@8.4.49)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)) + postcss-loader: 6.2.1(postcss@8.4.49)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)) postcss-normalize: 10.0.1(browserslist@4.23.3)(postcss@8.4.49) postcss-preset-env: 7.8.3(postcss@8.4.49) prompts: 2.4.2 react: 18.3.1 react-app-polyfill: 3.0.0 - react-dev-utils: 12.0.1(eslint@9.16.0(jiti@1.21.0))(typescript@5.6.2)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)) + react-dev-utils: 12.0.1(eslint@9.16.0(jiti@1.21.0))(typescript@5.6.2)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)) react-refresh: 0.11.0 resolve: 1.22.8 resolve-url-loader: 4.0.0 - sass-loader: 12.6.0(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)) + sass-loader: 12.6.0(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)) semver: 7.6.3 - source-map-loader: 3.0.2(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)) - style-loader: 3.3.3(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)) + source-map-loader: 3.0.2(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)) + style-loader: 3.3.3(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)) tailwindcss: 3.4.7(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2)) - terser-webpack-plugin: 5.3.9(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)) - webpack: 5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2) - webpack-dev-server: 4.15.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)) - webpack-manifest-plugin: 4.1.1(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)) - workbox-webpack-plugin: 6.6.0(@types/babel__core@7.20.5)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)) + terser-webpack-plugin: 5.3.9(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)) + webpack: 5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1) + webpack-dev-server: 4.15.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)) + webpack-manifest-plugin: 4.1.1(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)) + workbox-webpack-plugin: 6.6.0(@types/babel__core@7.20.5)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)) optionalDependencies: fsevents: 2.3.3 typescript: 5.6.2 @@ -36604,11 +36383,11 @@ snapshots: sanitize.css@13.0.0: {} - sass-loader@12.6.0(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)): + sass-loader@12.6.0(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)): dependencies: klona: 2.0.6 neo-async: 2.6.2 - webpack: 5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2) + webpack: 5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1) sax@1.2.4: {} @@ -37133,12 +36912,12 @@ snapshots: source-map-js@1.2.1: {} - source-map-loader@3.0.2(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)): + source-map-loader@3.0.2(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)): dependencies: abab: 2.0.6 iconv-lite: 0.6.3 source-map-js: 1.2.1 - webpack: 5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2) + webpack: 5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1) source-map-resolve@0.5.3: dependencies: @@ -37487,32 +37266,32 @@ snapshots: '@tokenizer/token': 0.3.0 peek-readable: 5.1.0 - style-loader@3.3.3(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)): + style-loader@3.3.3(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)): dependencies: - webpack: 5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2) + webpack: 5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1) - styled-jsx@5.1.1(@babel/core@7.26.10)(react@18.3.1): + styled-jsx@5.1.1(@babel/core@7.26.10)(babel-plugin-macros@3.1.0)(react@18.3.1): dependencies: client-only: 0.0.1 react: 18.3.1 optionalDependencies: '@babel/core': 7.26.10 + babel-plugin-macros: 3.1.0 - styled-jsx@5.1.6(@babel/core@7.26.10)(babel-plugin-macros@3.1.0)(react@18.3.1): + styled-jsx@5.1.1(@babel/core@7.26.10)(babel-plugin-macros@3.1.0)(react@19.0.0-rc-66855b96-20241106): dependencies: client-only: 0.0.1 - react: 18.3.1 + react: 19.0.0-rc-66855b96-20241106 optionalDependencies: '@babel/core': 7.26.10 babel-plugin-macros: 3.1.0 - styled-jsx@5.1.6(@babel/core@7.26.10)(babel-plugin-macros@3.1.0)(react@19.0.0-rc-66855b96-20241106): + styled-jsx@5.1.6(@babel/core@7.26.10)(react@18.3.1): dependencies: client-only: 0.0.1 - react: 19.0.0-rc-66855b96-20241106 + react: 18.3.1 optionalDependencies: '@babel/core': 7.26.10 - babel-plugin-macros: 3.1.0 stylehacks@5.1.1(postcss@8.4.49): dependencies: @@ -37799,17 +37578,17 @@ snapshots: ansi-escapes: 4.3.2 supports-hyperlinks: 2.3.0 - terser-webpack-plugin@5.3.9(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)): + terser-webpack-plugin@5.3.9(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.34.1 - webpack: 5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2) + webpack: 5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1) optionalDependencies: '@swc/core': 1.15.3(@swc/helpers@0.5.15) - esbuild: 0.24.2 + esbuild: 0.23.1 terser@5.34.1: dependencies: @@ -38006,7 +37785,7 @@ snapshots: ts-interface-checker@0.1.13: {} - ts-jest@29.2.5(@babel/core@7.26.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.10))(esbuild@0.24.2)(jest@29.7.0(@types/node@20.14.13)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@20.14.13)(typescript@5.6.2)))(typescript@5.6.2): + ts-jest@29.2.5(@babel/core@7.26.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.10))(esbuild@0.23.1)(jest@29.7.0(@types/node@20.14.13)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@20.14.13)(typescript@5.6.2)))(typescript@5.6.2): dependencies: bs-logger: 0.2.6 ejs: 3.1.10 @@ -38024,9 +37803,9 @@ snapshots: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.26.10) - esbuild: 0.24.2 + esbuild: 0.23.1 - ts-jest@29.2.5(@babel/core@7.26.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.10))(esbuild@0.24.2)(jest@29.7.0(@types/node@22.19.7)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2)))(typescript@5.6.2): + ts-jest@29.2.5(@babel/core@7.26.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.10))(esbuild@0.23.1)(jest@29.7.0(@types/node@22.19.7)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/node@22.19.7)(typescript@5.6.2)))(typescript@5.6.2): dependencies: bs-logger: 0.2.6 ejs: 3.1.10 @@ -38044,9 +37823,9 @@ snapshots: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.26.10) - esbuild: 0.24.2 + esbuild: 0.23.1 - ts-jest@29.2.5(@babel/core@7.26.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.10))(esbuild@0.24.2)(jest@29.7.0(@types/node@22.19.7)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2))(typescript@5.6.2): + ts-jest@29.2.5(@babel/core@7.26.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.10))(esbuild@0.23.1)(jest@29.7.0(@types/node@22.19.7)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2))(typescript@5.6.2): dependencies: bs-logger: 0.2.6 ejs: 3.1.10 @@ -38064,7 +37843,7 @@ snapshots: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.26.10) - esbuild: 0.24.2 + esbuild: 0.23.1 ts-mockito@2.6.1: dependencies: @@ -38818,16 +38597,16 @@ snapshots: webidl-conversions@7.0.0: {} - webpack-dev-middleware@5.3.3(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)): + webpack-dev-middleware@5.3.3(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)): dependencies: colorette: 2.0.20 memfs: 3.5.3 mime-types: 2.1.35 range-parser: 1.2.1 schema-utils: 4.2.0 - webpack: 5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2) + webpack: 5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1) - webpack-dev-server@4.15.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)): + webpack-dev-server@4.15.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)): dependencies: '@types/bonjour': 3.5.10 '@types/connect-history-api-fallback': 1.5.0 @@ -38857,20 +38636,20 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 5.3.3(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)) + webpack-dev-middleware: 5.3.3(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)) ws: 8.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) optionalDependencies: - webpack: 5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2) + webpack: 5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1) transitivePeerDependencies: - bufferutil - debug - supports-color - utf-8-validate - webpack-manifest-plugin@4.1.1(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)): + webpack-manifest-plugin@4.1.1(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)): dependencies: tapable: 2.2.1 - webpack: 5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2) + webpack: 5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1) webpack-sources: 2.3.1 webpack-sources@1.4.3: @@ -38887,7 +38666,7 @@ snapshots: webpack-virtual-modules@0.6.2: {} - webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2): + webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1): dependencies: '@types/eslint-scope': 3.7.4 '@types/estree': 1.0.6 @@ -38910,7 +38689,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.9(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)) + terser-webpack-plugin: 5.3.9(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)) watchpack: 2.4.0 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -39135,12 +38914,12 @@ snapshots: workbox-sw@6.6.0: {} - workbox-webpack-plugin@6.6.0(@types/babel__core@7.20.5)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2)): + workbox-webpack-plugin@6.6.0(@types/babel__core@7.20.5)(webpack@5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1)): dependencies: fast-json-stable-stringify: 2.1.0 pretty-bytes: 5.6.0 upath: 1.2.0 - webpack: 5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.24.2) + webpack: 5.88.2(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.23.1) webpack-sources: 1.4.3 workbox-build: 6.6.0(@types/babel__core@7.20.5) transitivePeerDependencies: