From 72b42af17a3653dc85a718db8e668203555510fb Mon Sep 17 00:00:00 2001 From: cantinaverse Date: Sat, 27 Sep 2025 19:48:09 -0700 Subject: [PATCH] feat: npm install, modify context/index, layout, page, package-lock --- .../app/components/SignMessage.tsx | 216 ++++++++++ .../app/context/index.tsx | 124 +++++- .../app/global.d.ts | 14 - .../app/layout.tsx | 5 +- .../app/page.tsx | 191 ++++++++- .../package-lock.json | 395 ++++++++++++------ 6 files changed, 769 insertions(+), 176 deletions(-) create mode 100644 frontend/decentralized-reputation-system/app/components/SignMessage.tsx delete mode 100644 frontend/decentralized-reputation-system/app/global.d.ts diff --git a/frontend/decentralized-reputation-system/app/components/SignMessage.tsx b/frontend/decentralized-reputation-system/app/components/SignMessage.tsx new file mode 100644 index 0000000..f7c2141 --- /dev/null +++ b/frontend/decentralized-reputation-system/app/components/SignMessage.tsx @@ -0,0 +1,216 @@ +// components/SignMessage.tsx +'use client'; +import { useAccount, useSignMessage } from 'wagmi'; +import { useState, useEffect } from 'react'; + +export default function SignMessage() { + const { isConnected, address, chainId } = useAccount(); + const { signMessage, isPending, isSuccess, error, data: signature } = useSignMessage(); + const [hasSigned, setHasSigned] = useState(false); + const [sessionCreated, setSessionCreated] = useState(false); + const [signedData, setSignedData] = useState(null); + + const handleSignMessage = async () => { + if (!isConnected || !address) return; + + const message = `Welcome to Academic Sandbox! + +This signature creates your analytics session. + +Address: ${address} +Chain ID: ${chainId} +Timestamp: ${new Date().toISOString()} +Domain: ${window.location.hostname} + +By signing this message, you agree to participate in our educational platform.`; + + try { + await signMessage({ + message, + account: address // Explicitly pass the account + }); + + console.log("📝 Message signed successfully"); + console.log("✍️ Signature will be available in hook data"); + + setHasSigned(true); + setSignedData(signature || 'signed'); + + // Track the signing event for analytics + try { + const sessionData = { + address, + chainId, + signature: signature, + message, + timestamp: new Date().toISOString(), + domain: window.location.hostname, + projectId: (window as any).reownProjectId + }; + + console.log("📊 Session Data for Analytics:", sessionData); + + // Try to manually create analytics session + if (typeof window !== 'undefined' && (window as any).appkit) { + const appKit = (window as any).appkit; + + // Attempt different methods to trigger analytics + try { + if (appKit.track) { + appKit.track('session_created', sessionData); + console.log("🎯 AppKit track method called"); + } + + if (appKit.analytics) { + appKit.analytics.track('user_signed_message', sessionData); + console.log("🎯 AppKit analytics track method called"); + } + + // Try to access the internal analytics instance + if (appKit._analytics) { + appKit._analytics.track('user_authenticated', sessionData); + console.log("🎯 Internal analytics track method called"); + } + + setSessionCreated(true); + console.log("🎯 Analytics session creation attempted"); + } catch (trackingError) { + const errorMessage = trackingError instanceof Error ? trackingError.message : String(trackingError); + console.log("📊 AppKit tracking methods not available:", errorMessage); + } + } + + // Manual analytics event to Reown + try { + const analyticsEndpoint = 'https://analytics.walletconnect.com/events'; + const analyticsPayload = { + projectId: (window as any).reownProjectId, + event: 'user_authenticated', + properties: { + address: address, + chainId: chainId, + domain: window.location.hostname, + timestamp: Date.now(), + method: 'message_signature', + signature_success: !!signature + } + }; + + console.log("📡 Attempting manual analytics POST:", analyticsPayload); + + // Note: This might be blocked by CORS, but worth trying + fetch(analyticsEndpoint, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify(analyticsPayload) + }).then(response => { + console.log("📡 Manual analytics response:", response.status, response.statusText); + }).catch(fetchError => { + const errorMessage = fetchError instanceof Error ? fetchError.message : String(fetchError); + console.log("📡 Manual analytics failed (expected):", errorMessage); + }); + + } catch (apiError) { + const errorMessage = apiError instanceof Error ? apiError.message : String(apiError); + console.log("📡 Manual API setup failed:", errorMessage); + } + + } catch (analyticsError) { + const errorMessage = analyticsError instanceof Error ? analyticsError.message : String(analyticsError); + console.error("📊 Analytics tracking error:", errorMessage); + } + + } catch (signError) { + const errorMessage = signError instanceof Error ? signError.message : String(signError); + console.error("❌ Failed to sign message:", errorMessage); + } + }; + + // Track successful signatures from the hook + useEffect(() => { + if (isSuccess && signature && !hasSigned) { + console.log("🎉 Signature successful from hook:", signature); + setHasSigned(true); + setSignedData(signature); + } + }, [isSuccess, signature, hasSigned]); + + // Reset state when wallet disconnects + useEffect(() => { + if (!isConnected) { + setHasSigned(false); + setSessionCreated(false); + setSignedData(null); + } + }, [isConnected]); + + if (!isConnected) return null; + + return ( +
+

+ 🔐 Create Analytics Session +

+
+
+

+ Sign a message to create a tracked session in Reown analytics +

+

+ Connected: {address?.slice(0, 6)}...{address?.slice(-4)} +

+
+ + {error && ( +
+ Error: {error.message} +
+ )} + + {!hasSigned ? ( + + ) : ( +
+
+ ✅ Message signed successfully! +
+ {signedData && ( +
+ Signature: {signedData.slice(0, 20)}...{signedData.slice(-10)} +
+ )} + {sessionCreated && ( +
+ 📊 Analytics session created - check your Reown dashboard! +
+ )} +
+ It may take 30-60 minutes for data to appear in analytics +
+
+ )} + + {hasSigned && ( + + )} +
+
+ ); +} \ No newline at end of file diff --git a/frontend/decentralized-reputation-system/app/context/index.tsx b/frontend/decentralized-reputation-system/app/context/index.tsx index 9265501..b71e0d4 100644 --- a/frontend/decentralized-reputation-system/app/context/index.tsx +++ b/frontend/decentralized-reputation-system/app/context/index.tsx @@ -1,8 +1,9 @@ +// app/context/index.tsx "use client"; import { wagmiAdapter, projectId, networks } from "@/app/config"; import { createAppKit } from "@reown/appkit/react"; -import { base } from "@reown/appkit/networks"; +import { mainnet, base, optimism } from "@reown/appkit/networks"; import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; import React, { ReactNode, useEffect } from "react"; @@ -24,7 +25,7 @@ const metadata = { console.log("📝 Metadata:", metadata); -// Initialize AppKit with detailed logging +// Initialize AppKit with enhanced analytics configuration const appKit = createAppKit({ adapters: [wagmiAdapter], projectId, @@ -32,44 +33,68 @@ const appKit = createAppKit({ defaultNetwork: base, metadata, features: { - analytics: true, + analytics: true, // This is crucial email: true, socials: ["google", "x", "github", "discord", "farcaster"], emailShowWallets: true, }, themeMode: "light", - enableWalletConnect: true, // Explicitly enable WalletConnect - enableInjected: true, // Explicitly enable injected wallets - enableCoinbase: true, // Explicitly enable Coinbase + enableWalletConnect: true, + enableInjected: true, + enableCoinbase: true, + // Add these additional options for better tracking + allWallets: "SHOW", // Show all available wallets + includeWalletIds: [], // Include all wallets + excludeWalletIds: [], // Don't exclude any wallets }); console.log("🎯 AppKit initialized:", !!appKit); -// Expose AppKit to window for debugging and analytics -if (typeof window !== 'undefined') { - (window as any).appkit = appKit; - console.log("🪟 AppKit exposed to window"); -} - -// Analytics tracker component +// Enhanced Analytics and Session Tracker function AnalyticsTracker() { const { isConnected, address, chainId } = useAccount(); useEffect(() => { if (isConnected && address) { console.log("📊 Analytics Event - Wallet Connected:", { - address, + address: address.slice(0, 6) + "..." + address.slice(-4), // Log truncated for privacy chainId, timestamp: new Date().toISOString(), url: window.location.href, }); - // Force analytics tracking + // Track connection event explicitly try { - if (window && (window as any).appkit) { - console.log("📈 AppKit instance found on window"); - } else { - console.log("❌ AppKit instance not found on window"); + // Force a session creation by interacting with AppKit + if (typeof window !== 'undefined') { + const appKitInstance = (window as any).appkit || appKit; + + // Log additional connection details + console.log("📈 Session Details:", { + projectId, + domain: window.location.hostname, + connected: isConnected, + network: chainId, + }); + + // Manual analytics event dispatch + try { + // Attempt to trigger analytics tracking + if (appKitInstance && typeof appKitInstance.track === 'function') { + appKitInstance.track({ + event: 'wallet_connected', + properties: { + address: address, + chainId: chainId, + projectId: projectId, + timestamp: Date.now() + } + }); + console.log("🎯 Manual analytics event sent"); + } + } catch (trackError) { + console.log("📊 Manual tracking not available:", trackError instanceof Error ? trackError.message : String(trackError)); + } } } catch (error) { console.error("🚨 Analytics tracking error:", error); @@ -82,6 +107,55 @@ function AnalyticsTracker() { return null; } +// Domain verification component +function DomainVerification() { + useEffect(() => { + if (typeof window !== 'undefined') { + console.log("🌐 Domain Verification:", { + hostname: window.location.hostname, + origin: window.location.origin, + projectId, + configuredDomain: "https://educational-sandbox.vercel.app" + }); + } + }, []); + + return null; +} + +// AppKit Event Listener +function AppKitEventTracker() { + useEffect(() => { + if (typeof window !== 'undefined' && appKit) { + // Listen for AppKit events if available + try { + const handleConnect = (event: any) => { + console.log("🔗 AppKit Connect Event:", event); + }; + + const handleDisconnect = (event: any) => { + console.log("🔌 AppKit Disconnect Event:", event); + }; + + // Try to add event listeners + if (appKit.subscribeEvents) { + appKit.subscribeEvents((event: any) => { + console.log("📡 AppKit Event:", event); + }); + } + + return () => { + // Cleanup if needed + }; + } catch (error) { + console.log("📡 Event listener setup not available:", error instanceof Error ? error.message : String(error)); + } + } + }, []); + + return null; +} + interface ContextProviderProps { children: ReactNode; cookies: string | null; @@ -92,10 +166,22 @@ function ContextProvider({ children, cookies }: ContextProviderProps) { console.log("🍪 Initial state from cookies:", !!initialState); + // Expose AppKit globally for debugging + useEffect(() => { + if (typeof window !== 'undefined') { + (window as any).appkit = appKit; + (window as any).reownProjectId = projectId; + console.log("🪟 AppKit exposed to window for debugging"); + console.log("🔑 Project ID exposed for debugging"); + } + }, []); + return ( + + {children} diff --git a/frontend/decentralized-reputation-system/app/global.d.ts b/frontend/decentralized-reputation-system/app/global.d.ts deleted file mode 100644 index 832faa1..0000000 --- a/frontend/decentralized-reputation-system/app/global.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import React from "react"; - -declare global { - namespace JSX { - interface IntrinsicElements { - "w3m-button": React.DetailedHTMLProps, HTMLElement>; - "w3m-network-button": React.DetailedHTMLProps, HTMLElement>; - "appkit-button": React.DetailedHTMLProps, HTMLElement>; - "appkit-connect-button": React.DetailedHTMLProps, HTMLElement>; - "appkit-account-button": React.DetailedHTMLProps, HTMLElement>; - "appkit-network-button": React.DetailedHTMLProps, HTMLElement>; - } - } -} \ No newline at end of file diff --git a/frontend/decentralized-reputation-system/app/layout.tsx b/frontend/decentralized-reputation-system/app/layout.tsx index a352244..fa27350 100644 --- a/frontend/decentralized-reputation-system/app/layout.tsx +++ b/frontend/decentralized-reputation-system/app/layout.tsx @@ -1,5 +1,4 @@ // app/layout.tsx (or wherever your root layout is) - import type { Metadata } from 'next'; import { Inter } from 'next/font/google'; import './globals.css'; @@ -10,8 +9,8 @@ import ContextProvider from './context'; const inter = Inter({ subsets: ['latin'] }); export const metadata: Metadata = { - title: 'Decentralized Reputation System', - description: 'A ochain decentralized reputation system', + title: "Decentralized Reputation System", + description: "A ochain decentralized reputation system.", }; export default async function RootLayout({ diff --git a/frontend/decentralized-reputation-system/app/page.tsx b/frontend/decentralized-reputation-system/app/page.tsx index 804fedf..64c94d6 100644 --- a/frontend/decentralized-reputation-system/app/page.tsx +++ b/frontend/decentralized-reputation-system/app/page.tsx @@ -1,5 +1,8 @@ +// app/page.tsx 'use client'; -import { useAccount } from 'wagmi'; +import { useAccount, useDisconnect } from 'wagmi'; +import { useEffect, useState } from 'react'; +import SignMessage from '@/app/components/SignMessage'; declare module 'react' { namespace JSX { @@ -10,6 +13,143 @@ declare module 'react' { } } +// Debug Component for Analytics Tracking +function DebugPanel() { + const { isConnected, address, chainId } = useAccount(); + const [debugInfo, setDebugInfo] = useState(null); + + useEffect(() => { + if (typeof window !== 'undefined') { + const info = { + projectId: (window as any).reownProjectId, + appKitInstance: !!(window as any).appkit, + domain: window.location.hostname, + origin: window.location.origin, + userAgent: navigator.userAgent, + timestamp: new Date().toISOString() + }; + setDebugInfo(info); + } + }, []); + + if (!isConnected) return null; + + return ( +
+

+ 🔍 Debug Information +

+
+
Connected: {isConnected ? '✅ Yes' : '❌ No'}
+
Address: {address?.slice(0, 10)}...{address?.slice(-8)}
+
Chain ID: {chainId}
+
Project ID: {debugInfo?.projectId?.slice(0, 16)}...
+
AppKit Instance: {debugInfo?.appKitInstance ? '✅ Found' : '❌ Missing'}
+
Domain: {debugInfo?.domain}
+
Origin: {debugInfo?.origin}
+ +
+
+ ); +} + +// Connection Status Component +function ConnectionStatus() { + const { isConnected, address, chainId, connector } = useAccount(); + const { disconnect } = useDisconnect(); + + if (!isConnected) return null; + + return ( +
+

+ ✅ Wallet Connected +

+
+
+

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

+

+ Chain: {chainId} | Connector: {connector?.name || 'Unknown'} +

+
+
+ +
+
+
+ ); +} + +// Analytics Status Component +function AnalyticsStatus() { + const { isConnected } = useAccount(); + const [analyticsChecks, setAnalyticsChecks] = useState({ + projectIdSet: false, + domainConfigured: false, + appKitInstance: false, + analyticsEnabled: false + }); + + useEffect(() => { + if (typeof window !== 'undefined') { + const checks = { + projectIdSet: !!(window as any).reownProjectId, + domainConfigured: window.location.hostname === 'educational-sandbox.vercel.app' || + window.location.hostname === 'localhost', + appKitInstance: !!(window as any).appkit, + analyticsEnabled: true // Assuming it's enabled in config + }; + setAnalyticsChecks(checks); + } + }, [isConnected]); + + const allChecksPass = Object.values(analyticsChecks).every(check => check); + + return ( +
+

+ 📊 Analytics Status +

+
+
+
+ {analyticsChecks.projectIdSet ? '✅' : '❌'} Project ID configured +
+
+ {analyticsChecks.domainConfigured ? '✅' : '❌'} Domain configured +
+
+ {analyticsChecks.appKitInstance ? '✅' : '❌'} AppKit instance found +
+
+ {analyticsChecks.analyticsEnabled ? '✅' : '❌'} Analytics enabled +
+
+
+ Status: {allChecksPass ? 'All checks pass ✅' : 'Some issues detected ⚠️'} +
+ {!allChecksPass && ( +
+ Check Reown dashboard configuration and environment variables +
+ )} +
+
+ ); +} + export default function Home() { const { isConnected } = useAccount(); @@ -22,27 +162,64 @@ export default function Home() { -

Examples

-
+

+ Educational Sandbox with Analytics +

+ +
{/* Wallet connect */}
-

Connect your Wallet

+

+ 🔌 Connect your Wallet +

-
+ {/* Connection Status */} + + + {/* Analytics Status */} + + + {/* Sign message for analytics - CRITICAL FOR USER TRACKING */} + - {/* Show network selector only if connected */} + {/* Network selector */} {isConnected && (
-

Network selection button

+

+ 🌐 Network Selection +

)} + + {/* Debug Panel */} + + + {/* Instructions */} +
+

+ 📋 Analytics Testing Instructions +

+
+
    +
  1. Connect your wallet using the button above
  2. +
  3. Sign the welcome message to create an analytics session
  4. +
  5. Wait 30-60 minutes for data to appear in Reown dashboard
  6. +
  7. Check the Debug Information for troubleshooting
  8. +
  9. Verify all Analytics Status checks pass
  10. +
+
+ Note: Users appear in Reown analytics only after signing a message, + not just connecting a wallet. The signing step creates an authenticated session. +
+
+
); diff --git a/frontend/decentralized-reputation-system/package-lock.json b/frontend/decentralized-reputation-system/package-lock.json index 894a6cf..39fa993 100644 --- a/frontend/decentralized-reputation-system/package-lock.json +++ b/frontend/decentralized-reputation-system/package-lock.json @@ -1065,9 +1065,9 @@ } }, "node_modules/@metamask/utils": { - "version": "11.8.0", - "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-11.8.0.tgz", - "integrity": "sha512-EJqiuvVBAjV1vd1kBhmVmRtGfadrBfY3ImcAMjl+8MSSByTB3VNwvlIBLQdp+TwdAomUdenJCx2BvOSQykm8Hg==", + "version": "11.8.1", + "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-11.8.1.tgz", + "integrity": "sha512-DIbsNUyqWLFgqJlZxi1OOCMYvI23GqFCvNJAtzv8/WXWzJfnJnvp1M24j7VvUe3URBi3S86UgQ7+7aWU9p/cnQ==", "dependencies": { "@ethereumjs/tx": "^4.2.0", "@metamask/superstruct": "^3.1.0", @@ -1295,19 +1295,19 @@ } }, "node_modules/@reown/appkit": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@reown/appkit/-/appkit-1.8.6.tgz", - "integrity": "sha512-3dXht+l6FtSu7yMC4TlCYySLXVC5fLIfSHvgWExhLMzgSF4f5ZKKO36K2rAyxBHMcJatRJiRUzXMgackQZ7cRg==", + "version": "1.8.7", + "resolved": "https://registry.npmjs.org/@reown/appkit/-/appkit-1.8.7.tgz", + "integrity": "sha512-lzTDfC15DFd2zF6DfBGXJrNdBohdb7rgMnPF9A/b3O55SkbA+vb3wogWMThSTekEbaJXXUDLl2a+cO7z2/b4Aw==", "hasInstallScript": true, "dependencies": { - "@reown/appkit-common": "1.8.6", - "@reown/appkit-controllers": "1.8.6", - "@reown/appkit-pay": "1.8.6", - "@reown/appkit-polyfills": "1.8.6", - "@reown/appkit-scaffold-ui": "1.8.6", - "@reown/appkit-ui": "1.8.6", - "@reown/appkit-utils": "1.8.6", - "@reown/appkit-wallet": "1.8.6", + "@reown/appkit-common": "1.8.7", + "@reown/appkit-controllers": "1.8.7", + "@reown/appkit-pay": "1.8.7", + "@reown/appkit-polyfills": "1.8.7", + "@reown/appkit-scaffold-ui": "1.8.7", + "@reown/appkit-ui": "1.8.7", + "@reown/appkit-utils": "1.8.7", + "@reown/appkit-wallet": "1.8.7", "@walletconnect/universal-provider": "2.21.7", "bs58": "6.0.0", "semver": "7.7.2", @@ -1319,17 +1319,17 @@ } }, "node_modules/@reown/appkit-adapter-wagmi": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@reown/appkit-adapter-wagmi/-/appkit-adapter-wagmi-1.8.6.tgz", - "integrity": "sha512-amAw0e5Se81At2LpXRMoPvglC0fjsEYkasai8HzVN9hYpEJq45DWow+gUdxg24dEujRjcn6aLuA7yVSu3cYX5A==", - "dependencies": { - "@reown/appkit": "1.8.6", - "@reown/appkit-common": "1.8.6", - "@reown/appkit-controllers": "1.8.6", - "@reown/appkit-polyfills": "1.8.6", - "@reown/appkit-scaffold-ui": "1.8.6", - "@reown/appkit-utils": "1.8.6", - "@reown/appkit-wallet": "1.8.6", + "version": "1.8.7", + "resolved": "https://registry.npmjs.org/@reown/appkit-adapter-wagmi/-/appkit-adapter-wagmi-1.8.7.tgz", + "integrity": "sha512-gCG1e7n9IMaqP6EWM9dYZLUaec5FCN/WxzBQD0iNGrYs7OFpOhsMMJm/DNtZ6xkdOJiSVBVu3JG2aXZuKsFnSQ==", + "dependencies": { + "@reown/appkit": "1.8.7", + "@reown/appkit-common": "1.8.7", + "@reown/appkit-controllers": "1.8.7", + "@reown/appkit-polyfills": "1.8.7", + "@reown/appkit-scaffold-ui": "1.8.7", + "@reown/appkit-utils": "1.8.7", + "@reown/appkit-wallet": "1.8.7", "@walletconnect/universal-provider": "2.21.7", "valtio": "2.1.7" }, @@ -1343,9 +1343,9 @@ } }, "node_modules/@reown/appkit-common": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@reown/appkit-common/-/appkit-common-1.8.6.tgz", - "integrity": "sha512-A4U/80u+ELqWYKDF/OWXHa4+O2BMILvZSyuXEt2NrNzozrMfUB3yq12jXGkqJHkiv7E8smo0khxneX3cSCGuaA==", + "version": "1.8.7", + "resolved": "https://registry.npmjs.org/@reown/appkit-common/-/appkit-common-1.8.7.tgz", + "integrity": "sha512-OJPAKBU8XETPXanNVWWI9nb08r16+rySU/O5MHiGOMMTQ1CiWyLTD63dVvSeS5ECGW27jAhg4X6yPyNuGKnQ6w==", "dependencies": { "big.js": "6.2.2", "dayjs": "1.11.13", @@ -1353,73 +1353,73 @@ } }, "node_modules/@reown/appkit-controllers": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@reown/appkit-controllers/-/appkit-controllers-1.8.6.tgz", - "integrity": "sha512-+ftwSvT8VcMjCJXwf7IfOAp/5lJpJka7Y1nps+iiAE1J1+20BD3yOQ50TUhyCczIegutbuDINlVPUnYufe3a1A==", + "version": "1.8.7", + "resolved": "https://registry.npmjs.org/@reown/appkit-controllers/-/appkit-controllers-1.8.7.tgz", + "integrity": "sha512-UZ5XcO38KLfza6ZeNxaghq2CfNuIz05sFDW31l3UJR78p8rNDYtXSbWoanj8lELZhKilwY7whFyX+7EIi+P5mA==", "dependencies": { - "@reown/appkit-common": "1.8.6", - "@reown/appkit-wallet": "1.8.6", + "@reown/appkit-common": "1.8.7", + "@reown/appkit-wallet": "1.8.7", "@walletconnect/universal-provider": "2.21.7", "valtio": "2.1.7", "viem": ">=2.37.2" } }, "node_modules/@reown/appkit-pay": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@reown/appkit-pay/-/appkit-pay-1.8.6.tgz", - "integrity": "sha512-fU80ENaKBknYctDnN7RZYLjyW2B29ZGfwIy5x7sEDny9WBlMVAHgG1dAKEKlU6WkYEM5aTaUe1tl4NhhwPpVVg==", - "dependencies": { - "@reown/appkit-common": "1.8.6", - "@reown/appkit-controllers": "1.8.6", - "@reown/appkit-ui": "1.8.6", - "@reown/appkit-utils": "1.8.6", + "version": "1.8.7", + "resolved": "https://registry.npmjs.org/@reown/appkit-pay/-/appkit-pay-1.8.7.tgz", + "integrity": "sha512-agKrLhiK0ahLOMuaR9njq0+855AZ6IkbYSFH+/jsfq+g3/KJaoO6FBXLENlZo053dOelN+bWK9mggeHTL9r0Sg==", + "dependencies": { + "@reown/appkit-common": "1.8.7", + "@reown/appkit-controllers": "1.8.7", + "@reown/appkit-ui": "1.8.7", + "@reown/appkit-utils": "1.8.7", "lit": "3.3.0", "valtio": "2.1.7" } }, "node_modules/@reown/appkit-polyfills": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@reown/appkit-polyfills/-/appkit-polyfills-1.8.6.tgz", - "integrity": "sha512-aoBkQSHCZvoLgdHfZfeOLswrYHIPGhhknRMUk8UHDhQsoALCvIEYrenhgIDZUSfkJC//z+4OfQO/yVq3g3vecA==", + "version": "1.8.7", + "resolved": "https://registry.npmjs.org/@reown/appkit-polyfills/-/appkit-polyfills-1.8.7.tgz", + "integrity": "sha512-ZzPFM/mBo676rAJsjVoWbOKOwQFvzoHnPY1Gm0omXk3RM11CP+KhVnGQDy+fN5ZXZ1VSUQSDsjN7sofIlvytXw==", "dependencies": { "buffer": "6.0.3" } }, "node_modules/@reown/appkit-scaffold-ui": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@reown/appkit-scaffold-ui/-/appkit-scaffold-ui-1.8.6.tgz", - "integrity": "sha512-H4NCFBv5fII49pEdJYaIXeujpwJ3WLVAmyaC4i+BxCpDZ8Us8TtNhYoH2ziEqJvsHwC6BhZ54CAlTOszjiww1w==", - "dependencies": { - "@reown/appkit-common": "1.8.6", - "@reown/appkit-controllers": "1.8.6", - "@reown/appkit-ui": "1.8.6", - "@reown/appkit-utils": "1.8.6", - "@reown/appkit-wallet": "1.8.6", + "version": "1.8.7", + "resolved": "https://registry.npmjs.org/@reown/appkit-scaffold-ui/-/appkit-scaffold-ui-1.8.7.tgz", + "integrity": "sha512-gx3uogqpw9k6AJ5smowdrGdFg7WjbYtnOiDw/jwDi9zmEd8T0BDmCl6xX9QN0s26943VX2mh2bLVWpX6Agk47A==", + "dependencies": { + "@reown/appkit-common": "1.8.7", + "@reown/appkit-controllers": "1.8.7", + "@reown/appkit-ui": "1.8.7", + "@reown/appkit-utils": "1.8.7", + "@reown/appkit-wallet": "1.8.7", "lit": "3.3.0" } }, "node_modules/@reown/appkit-ui": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@reown/appkit-ui/-/appkit-ui-1.8.6.tgz", - "integrity": "sha512-c2/UYGRoI/nayqiPp+nxxw7Wohdzl7Z1J14/p/HHPYyl1/qtV0DaHZW8ZA3NtxfmFGny7eE4fRz5YXRwNDuzAw==", + "version": "1.8.7", + "resolved": "https://registry.npmjs.org/@reown/appkit-ui/-/appkit-ui-1.8.7.tgz", + "integrity": "sha512-VBTFA0SiPBq9HOfuOXNiOtNmMeCCv84HfhEILglNWtk+RiGM56mxQoCQJ1t/dQb/xGqwpXo+24czbliDUyZK6Q==", "dependencies": { "@phosphor-icons/webcomponents": "2.1.5", - "@reown/appkit-common": "1.8.6", - "@reown/appkit-controllers": "1.8.6", - "@reown/appkit-wallet": "1.8.6", + "@reown/appkit-common": "1.8.7", + "@reown/appkit-controllers": "1.8.7", + "@reown/appkit-wallet": "1.8.7", "lit": "3.3.0", "qrcode": "1.5.3" } }, "node_modules/@reown/appkit-utils": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@reown/appkit-utils/-/appkit-utils-1.8.6.tgz", - "integrity": "sha512-MpnCsQEsDh3SMU0+0Vsn5aX/2dfO+oNTvwPz4hvb35sHqR1NoP/CO0IzCApLjc84TXqbX5giavzgME5s3QL3Jw==", - "dependencies": { - "@reown/appkit-common": "1.8.6", - "@reown/appkit-controllers": "1.8.6", - "@reown/appkit-polyfills": "1.8.6", - "@reown/appkit-wallet": "1.8.6", + "version": "1.8.7", + "resolved": "https://registry.npmjs.org/@reown/appkit-utils/-/appkit-utils-1.8.7.tgz", + "integrity": "sha512-OW5Y8GDNZ2OGeLepnQuppf1b+2rjEPF/e416yOORDG4Ha2jlNOEWPbPhaurvxMRDdER4w/2X59Ekc+R+PzEuUw==", + "dependencies": { + "@reown/appkit-common": "1.8.7", + "@reown/appkit-controllers": "1.8.7", + "@reown/appkit-polyfills": "1.8.7", + "@reown/appkit-wallet": "1.8.7", "@wallet-standard/wallet": "1.1.0", "@walletconnect/logger": "2.1.2", "@walletconnect/universal-provider": "2.21.7", @@ -1431,12 +1431,12 @@ } }, "node_modules/@reown/appkit-wallet": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@reown/appkit-wallet/-/appkit-wallet-1.8.6.tgz", - "integrity": "sha512-m0Um+PLeWEHsW8saBWdjkROFs5DRI++SWb+NL+k4Ys2+PfhH9adAbV8o6SJEUzG4XqWhQsS5QrpNo4ZJIfyu5g==", + "version": "1.8.7", + "resolved": "https://registry.npmjs.org/@reown/appkit-wallet/-/appkit-wallet-1.8.7.tgz", + "integrity": "sha512-ExvQ4u68W0BuM9i+tptH6k/DMInM+MWeLexB35WJRnAa9mQAT1EZbFhFA5hOm8YiEmWrG6nBLMv5/zRChVf9hw==", "dependencies": { - "@reown/appkit-common": "1.8.6", - "@reown/appkit-polyfills": "1.8.6", + "@reown/appkit-common": "1.8.7", + "@reown/appkit-polyfills": "1.8.7", "@walletconnect/logger": "2.1.2", "zod": "3.22.4" } @@ -1802,20 +1802,20 @@ } }, "node_modules/@tanstack/query-core": { - "version": "5.89.0", - "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.89.0.tgz", - "integrity": "sha512-joFV1MuPhSLsKfTzwjmPDrp8ENfZ9N23ymFu07nLfn3JCkSHy0CFgsyhHTJOmWaumC/WiNIKM0EJyduCF/Ih/Q==", + "version": "5.90.2", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.90.2.tgz", + "integrity": "sha512-k/TcR3YalnzibscALLwxeiLUub6jN5EDLwKDiO7q5f4ICEoptJ+n9+7vcEFy5/x/i6Q+Lb/tXrsKCggf5uQJXQ==", "funding": { "type": "github", "url": "https://github.com/sponsors/tannerlinsley" } }, "node_modules/@tanstack/react-query": { - "version": "5.89.0", - "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.89.0.tgz", - "integrity": "sha512-SXbtWSTSRXyBOe80mszPxpEbaN4XPRUp/i0EfQK1uyj3KCk/c8FuPJNIRwzOVe/OU3rzxrYtiNabsAmk1l714A==", + "version": "5.90.2", + "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.90.2.tgz", + "integrity": "sha512-CLABiR+h5PYfOWr/z+vWFt5VsOA2ekQeRQBFSKlcoW6Ndx/f8rfyVmq4LbgOM4GG2qtxAxjLYLOpCNTYm4uKzw==", "dependencies": { - "@tanstack/query-core": "5.89.0" + "@tanstack/query-core": "5.90.2" }, "funding": { "type": "github", @@ -1853,9 +1853,9 @@ } }, "node_modules/@types/react": { - "version": "19.1.13", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.13.tgz", - "integrity": "sha512-hHkbU/eoO3EG5/MZkuFSKmYqPbSVk5byPFa3e7y/8TybHiLMACgI8seVYlicwk7H5K/rI2px9xrQp/C+AUDTiQ==", + "version": "19.1.14", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.14.tgz", + "integrity": "sha512-ukd93VGzaNPMAUPy0gRDSC57UuQbnH9Kussp7HBjM06YFi9uZTFhOvMSO2OKqXm1rSgzOE+pVx1k1PYHGwlc8Q==", "devOptional": true, "dependencies": { "csstype": "^3.0.2" @@ -1876,9 +1876,9 @@ "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==" }, "node_modules/@wagmi/connectors": { - "version": "5.10.1", - "resolved": "https://registry.npmjs.org/@wagmi/connectors/-/connectors-5.10.1.tgz", - "integrity": "sha512-ho07FF5WLCqiR3+HsSZV1R3UrkLTi6F+EDiQdJOlgLLYsUHvB7Y7s8uLePP5lRxYUmDoFRURK1PwTGNSwlcKAA==", + "version": "5.11.2", + "resolved": "https://registry.npmjs.org/@wagmi/connectors/-/connectors-5.11.2.tgz", + "integrity": "sha512-OkiElOI8xXGPDZE5UdG6NgDT3laSkEh9llX1DDapUnfnKecK3Tr/HUf5YzgwDhEoox8mdxp+8ZCjtnTKz56SdA==", "dependencies": { "@base-org/account": "1.1.1", "@coinbase/wallet-sdk": "4.3.6", @@ -1887,13 +1887,14 @@ "@safe-global/safe-apps-provider": "0.18.6", "@safe-global/safe-apps-sdk": "9.1.0", "@walletconnect/ethereum-provider": "2.21.1", - "cbw-sdk": "npm:@coinbase/wallet-sdk@3.9.3" + "cbw-sdk": "npm:@coinbase/wallet-sdk@3.9.3", + "porto": "0.2.19" }, "funding": { "url": "https://github.com/sponsors/wevm" }, "peerDependencies": { - "@wagmi/core": "2.21.0", + "@wagmi/core": "2.21.2", "typescript": ">=5.0.4", "viem": "2.x" }, @@ -1904,9 +1905,9 @@ } }, "node_modules/@wagmi/core": { - "version": "2.21.0", - "resolved": "https://registry.npmjs.org/@wagmi/core/-/core-2.21.0.tgz", - "integrity": "sha512-ZtQBUvHEyfSM22BCeXZDjwcpby2vZjivjP8mMkQHxuVqRDnunaS5DIlZr2XPJKv01lPdlUajFSoiziNcIZlH5w==", + "version": "2.21.2", + "resolved": "https://registry.npmjs.org/@wagmi/core/-/core-2.21.2.tgz", + "integrity": "sha512-Rp4waam2z0FQUDINkJ91jq38PI5wFUHCv1YBL2LXzAQswaEk1ZY8d6+WG3vYGhFHQ22DXy2AlQ8IWmj+2EG3zQ==", "dependencies": { "eventemitter3": "5.0.1", "mipd": "0.0.7", @@ -3740,9 +3741,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001743", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001743.tgz", - "integrity": "sha512-e6Ojr7RV14Un7dz6ASD0aZDmQPT/A+eZU+nuTNfjqmRrmkmQlnTNWH0SKmqagx9PeW87UVqapSurtAXifmtdmw==", + "version": "1.0.30001745", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001745.tgz", + "integrity": "sha512-ywt6i8FzvdgrrrGbr1jZVObnVv6adj+0if2/omv9cmR2oiZs30zL4DIyaptKcbOrBdOIc74QTMoJvSE2QHh5UQ==", "funding": [ { "type": "opencollective", @@ -3972,9 +3973,9 @@ "integrity": "sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==" }, "node_modules/detect-libc": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.0.tgz", - "integrity": "sha512-vEtk+OcP7VBRtQZ1EJ3bdgzSfBjgnEalLTp5zjJrS+2Z1w2KZly4SBdac/WDU3hhsNAZ9E8SC96ME4Ey8MZ7cg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.1.tgz", + "integrity": "sha512-ecqj/sy1jcK1uWrwpR67UhYrIFQ+5WlGxth34WquCbamhFA6hkkwiu37o6J5xCHdo1oixJRfVRw+ywV+Hq/0Aw==", "devOptional": true, "engines": { "node": ">=8" @@ -4472,6 +4473,14 @@ "node": ">= 0.4" } }, + "node_modules/hono": { + "version": "4.9.9", + "resolved": "https://registry.npmjs.org/hono/-/hono-4.9.9.tgz", + "integrity": "sha512-Hxw4wT6zjJGZJdkJzAx9PyBdf7ZpxaTSA0NfxqjLghwMrLBX8p33hJBzoETRakF3UJu6OdNQBZAlNSkGqKFukw==", + "engines": { + "node": ">=16.9.0" + } + }, "node_modules/idb-keyval": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.2.1.tgz", @@ -4622,9 +4631,9 @@ } }, "node_modules/jiti": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.5.1.tgz", - "integrity": "sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.0.tgz", + "integrity": "sha512-VXe6RjJkBPj0ohtqaO8vSWP3ZhAKo66fKrFNCll4BTcwljPLz03pCbaNKfzGP5MbrCYcbJ7v0nOYYwUzTEIdXQ==", "dev": true, "bin": { "jiti": "lib/jiti-cli.mjs" @@ -4998,9 +5007,9 @@ } }, "node_modules/minizlib": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.2.tgz", - "integrity": "sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", + "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", "dev": true, "dependencies": { "minipass": "^7.1.2" @@ -5028,21 +5037,6 @@ } } }, - "node_modules/mkdirp": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", - "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", - "dev": true, - "bin": { - "mkdirp": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -5472,6 +5466,142 @@ "node": ">=12.0.0" } }, + "node_modules/porto": { + "version": "0.2.19", + "resolved": "https://registry.npmjs.org/porto/-/porto-0.2.19.tgz", + "integrity": "sha512-q1vEJgdtlEOf6byWgD31GHiMwpfLuxFSfx9f7Sw4RGdvpQs2ANBGfnzzardADZegr87ZXsebSp+3vaaznEUzPQ==", + "dependencies": { + "hono": "^4.9.6", + "idb-keyval": "^6.2.1", + "mipd": "^0.0.7", + "ox": "^0.9.6", + "zod": "^4.1.5", + "zustand": "^5.0.1" + }, + "bin": { + "porto": "_dist/cli/bin/index.js" + }, + "peerDependencies": { + "@tanstack/react-query": ">=5.59.0", + "@wagmi/core": ">=2.16.3", + "react": ">=18", + "typescript": ">=5.4.0", + "viem": ">=2.37.0", + "wagmi": ">=2.0.0" + }, + "peerDependenciesMeta": { + "@tanstack/react-query": { + "optional": true + }, + "react": { + "optional": true + }, + "typescript": { + "optional": true + }, + "wagmi": { + "optional": true + } + } + }, + "node_modules/porto/node_modules/@noble/ciphers": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.3.0.tgz", + "integrity": "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/porto/node_modules/@noble/curves": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.1.tgz", + "integrity": "sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA==", + "dependencies": { + "@noble/hashes": "1.8.0" + }, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/porto/node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/porto/node_modules/@scure/bip32": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.7.0.tgz", + "integrity": "sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw==", + "dependencies": { + "@noble/curves": "~1.9.0", + "@noble/hashes": "~1.8.0", + "@scure/base": "~1.2.5" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/porto/node_modules/@scure/bip39": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.6.0.tgz", + "integrity": "sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A==", + "dependencies": { + "@noble/hashes": "~1.8.0", + "@scure/base": "~1.2.5" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/porto/node_modules/ox": { + "version": "0.9.7", + "resolved": "https://registry.npmjs.org/ox/-/ox-0.9.7.tgz", + "integrity": "sha512-KX9Lvv0Rd+SKZXcT6Y85cuYbkmrQbK8Bz26k+s3X4EiT5bSU/hTDNSK/ApBeorJeIaOZbxEmJD2hHW0q1vIDEA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wevm" + } + ], + "dependencies": { + "@adraffy/ens-normalize": "^1.11.0", + "@noble/ciphers": "^1.3.0", + "@noble/curves": "1.9.1", + "@noble/hashes": "^1.8.0", + "@scure/bip32": "^1.7.0", + "@scure/bip39": "^1.6.0", + "abitype": "^1.0.9", + "eventemitter3": "5.0.1" + }, + "peerDependencies": { + "typescript": ">=5.4.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/porto/node_modules/zod": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.1.11.tgz", + "integrity": "sha512-WPsqwxITS2tzx1bzhIKsEs19ABD5vmCVa4xBo2tq/SrV4RNZtfws1EnCWQXM6yh8bD08a1idvkB5MZSBiZsjwg==", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, "node_modules/possible-typed-array-names": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", @@ -5944,16 +6074,15 @@ } }, "node_modules/tar": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz", - "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==", + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.1.tgz", + "integrity": "sha512-nlGpxf+hv0v7GkWBK2V9spgactGOp0qvfWRxUMjqHyzrt3SgwE48DIv/FhqPHJYLHpgW1opq3nERbz5Anq7n1g==", "dev": true, "dependencies": { "@isaacs/fs-minipass": "^4.0.0", "chownr": "^3.0.0", "minipass": "^7.1.2", - "minizlib": "^3.0.1", - "mkdirp": "^3.0.1", + "minizlib": "^3.1.0", "yallist": "^5.0.0" }, "engines": { @@ -5969,9 +6098,9 @@ } }, "node_modules/to-buffer": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.1.tgz", - "integrity": "sha512-tB82LpAIWjhLYbqjx3X4zEeHN6M8CiuOEy2JY8SEQVdYRe3CCHOFaqrBW1doLDrfpWhplcW7BL+bO3/6S3pcDQ==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.2.tgz", + "integrity": "sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==", "dependencies": { "isarray": "^2.0.5", "safe-buffer": "^5.2.1", @@ -6205,9 +6334,9 @@ } }, "node_modules/viem": { - "version": "2.37.7", - "resolved": "https://registry.npmjs.org/viem/-/viem-2.37.7.tgz", - "integrity": "sha512-KmTK/xc6790I0V9iaiJz8C3RdGevpU+fPvg53eOlfEfsfz0wCypXqOlOmCcjzkpmf2XFoEtu9MAxhMqk8YdNNA==", + "version": "2.37.8", + "resolved": "https://registry.npmjs.org/viem/-/viem-2.37.8.tgz", + "integrity": "sha512-mL+5yvCQbRIR6QvngDQMfEiZTfNWfd+/QL5yFaOoYbpH3b1Q2ddwF7YG2eI2AcYSh9LE1gtUkbzZLFUAVyj4oQ==", "funding": [ { "type": "github", @@ -6364,12 +6493,12 @@ } }, "node_modules/wagmi": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/wagmi/-/wagmi-2.17.1.tgz", - "integrity": "sha512-Y1CTRPENz/+A0fRgezmdkpTUoRnzDe+OUd+x2+nVPWuffoNDXVLAs/d3qFA18Z5/3B8u2/2/E8ntP1McunfisQ==", + "version": "2.17.5", + "resolved": "https://registry.npmjs.org/wagmi/-/wagmi-2.17.5.tgz", + "integrity": "sha512-Sk2e40gfo68gbJ6lHkpIwCMkH76rO0+toCPjf3PzdQX37rZo9042DdNTYcSg3zhnx8abFJtrk/5vAWfR8APTDw==", "dependencies": { - "@wagmi/connectors": "5.10.1", - "@wagmi/core": "2.21.0", + "@wagmi/connectors": "5.11.2", + "@wagmi/core": "2.21.2", "use-sync-external-store": "1.4.0" }, "funding": {