diff --git a/packages/app/.env b/packages/app/.env deleted file mode 100644 index 4d2fee0..0000000 --- a/packages/app/.env +++ /dev/null @@ -1,2 +0,0 @@ -VITE_CONTRACT_ADDRESS=0x21d42CC2EcDb6db2c3D9b494D8CCcb6674360912 -VITE_CIRCUIT_ARTIFACTS_URL=https://storage.googleapis.com/proof-of-twitter-artifacts/b6ea02e/ diff --git a/packages/app/package.json b/packages/app/package.json index 627c55d..a781fd6 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -5,6 +5,7 @@ "@proof-of-twitter/circuits": "workspace:^", "@proof-of-twitter/contracts": "workspace:^", "@rainbow-me/rainbowkit": "^1.3.3", + "@react-oauth/google": "^0.12.1", "@zk-email/helpers": "4.0.0", "lodash": "^4.17.21", "react": "^17.0.2", diff --git a/packages/app/src/components/Button.tsx b/packages/app/src/components/Button.tsx index e55d88d..385498f 100644 --- a/packages/app/src/components/Button.tsx +++ b/packages/app/src/components/Button.tsx @@ -25,3 +25,50 @@ export const Button = styled.button` cursor: not-allowed; } `; + +export const OutlinedButton = styled.button` + padding: 0 14px; + border-radius: 4px; + border: none; + display: flex; + align-items: center; + justify-content: center; + font-weight: 500; + font-size: 0.9rem; + letter-spacing: -0.02em; + color: #8272e4; + cursor: pointer; + height: 48px; + width: 100%; + min-width: 32px; + transition: all 0.2s ease-in-out; + background: transparent; + border: 1px solid #8272e4; + &:hover { + background: #9b8df2; + color: white; + } + &:disabled { + opacity: 0.5; + cursor: not-allowed; + } +`; + + +export const TextButton = styled.button` +width: fit-content; +background: transparent; +border: none; +color: white; +font-weight: 500; +padding: 4px 16px; +border-radius: 4px; + &:hover { + background: #00000020; + color: white; + } + &:disabled { + opacity: 0.5; + cursor: not-allowed; + } +`; diff --git a/packages/app/src/components/EmailInputMethod.tsx b/packages/app/src/components/EmailInputMethod.tsx new file mode 100644 index 0000000..dd991f9 --- /dev/null +++ b/packages/app/src/components/EmailInputMethod.tsx @@ -0,0 +1,28 @@ +import { useState } from "react"; +import { Button, OutlinedButton } from "./Button"; + +const EmailInputMethod = ({ onClickGoogle, onClickEMLFile }) => { + return ( +
+ + or + { + onClickEMLFile(); + }} + > + Upload email .eml file{" "} + +
+ ); +}; + +export default EmailInputMethod; diff --git a/packages/app/src/constants.ts b/packages/app/src/constants.ts new file mode 100644 index 0000000..af183f6 --- /dev/null +++ b/packages/app/src/constants.ts @@ -0,0 +1,75 @@ +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt +export const ZERO = BigInt(0); +export const SECONDS_IN_DAY = BigInt(86400); + +export const MAX_USDC_TRANSFER_SIZE_VENMO = 500000000n; // 500 USD +export const MAX_USDC_TRANSFER_SIZE_HDFC = 10000000n; // 10 USD +export const MAX_USDC_TRANSFER_SIZE_GARANTI = 10000000n; // 10 USD +export const MAX_USDC_TRANSFER_SIZE_REVOLUT = 100000000n; // 100 USD + +export const DEPOSIT_REFETCH_INTERVAL = 20000; // 0.3 minutes +export const STATE_REFETCH_INTERVAL = 60000; // 1 minute +// export const DEPOSIT_REFETCH_INTERVAL = 2000000; // 30 minutes +// export const STATE_REFETCH_INTERVAL = 6000000; // 100 minute + +export const VENMO_EMAIL_FILTER = `from:venmo@venmo.com subject:"You paid" after:2024/01/10`; +export const HDFC_EMAIL_FULTER = `from:alerts@hdfcbank.net subject:"❗ You have done a UPI txn. Check details!" after:2023/09/01`; +export const GARANTI_EMAIL_FULTER = `from:garanti@info.garantibbva.com.tr subject:"Para Transferi Bilgilendirmesi" after:2023/09/01`; + +export const PRECISION = BigInt(1_000_000_000_000_000_000); // 18 +export const USDC_UNITS = BigInt(1_000_000); // 6 +export const PENNY_IN_USDC_UNITS = BigInt(10_000); // 6 + +export const EMPTY_STRING = ''; + +export const SOCKET_QUOTE_DEFAULT_ADDRESS = '0x18Cc6F90512C6D95ACA0d57F98C727D61873c06a'; +export const SOCKET_DEFAULT_SOL_ADDRESS = '8pHKRNF3u8tndkUJ4euAddNWM9EAMWbUiK5GVmtaGY5U'; +export const QUOTE_FETCHING_DEBOUNCE_MS = 750; + +// the numeric form of the payload1 passed into the primitive +// corresponds to the openssh signature produced by the following command: +// echo "E PLURIBUS UNUM; DO NOT SHARE" | ssh-keygen -Y sign -n double-blind.xyz -f ~/.ssh/id_rsa | pbcopy +export const MAGIC_DOUBLE_BLIND_BASE_MESSAGE = + 14447023197094784173331616578829287000074783130802912942914027114823662617007553911501158244718575362051758829289159984830457466395841150324770159971462582912755545324694933673046215187947905307019469n; +// Length in bits +export const MAGIC_DOUBLE_BLIND_BASE_MESSAGE_LEN = 672; + +export const CIRCOM_FIELD_MODULUS = 21888242871839275222246405745257275088548364400416034343698204186575808495617n; +export const MAX_HEADER_PADDED_BYTES = 1024; // NOTE: this must be the same as the first arg in the email in main args circom +export const MAX_BODY_PADDED_BYTES = 6400; // NOTE: this must be the same as the arg to sha the remainder number of bytes in the email in main args circom + + +export const CLIENT_VERSION = '0.3.2'; + +// circom constants from main.circom / https://zkrepl.dev/?gist=30d21c7a7285b1b14f608325f172417b +// template RSAGroupSigVerify(n, k, levels) { +// component main { public [ modulus ] } = RSAVerify(121, 17); +// component main { public [ root, payload1 ] } = RSAGroupSigVerify(121, 17, 30); +export const CIRCOM_BIGINT_N = 121; +export const CIRCOM_BIGINT_K = 17; +export const CIRCOM_LEVELS = 30; + + +// This is the string that comes right before the target string in the email. Ideally as close to the end of the email as possible. +export const STRING_PRESELECTOR = ""; + + +// Misc smart contract values +export const UINT256_MAX = "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"; +export const ZERO_ADDRESS = "0x0000000000000000000000000000000000000000000000000000000000000000"; +export const CALLER_ACCOUNT = "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266"; +export const DEFAULT_NETWORK = "base"; + + +// Proving key paths +export const HOSTED_FILES_PATH = "https://s3.amazonaws.com/zk-p2p/v2/v0.0.10/"; +export const REGISTRATION_KEY_FILE_NAME = "venmo_registration/venmo_registration"; +export const SEND_KEY_FILE_NAME = "venmo_send/venmo_send"; + +export const RemoteProofGenEmailTypes = { + REGISTRATION: "registration", + SEND: "send", +}; + +const ENABLE_STATE_LOGGING = false; +export const esl = ENABLE_STATE_LOGGING; diff --git a/packages/app/src/contexts/Account/AccountContext.ts b/packages/app/src/contexts/Account/AccountContext.ts new file mode 100644 index 0000000..9e02379 --- /dev/null +++ b/packages/app/src/contexts/Account/AccountContext.ts @@ -0,0 +1,30 @@ +import { createContext } from 'react'; + + +interface AccountValues { + isLoggedIn: boolean; + loggedInEthereumAddress: string | null; + loginStatus: string | null; + authenticatedLogout: (() => void) | null; + authenticatedLogin: (() => void) | null; + accountDisplay: string | null; + network: string | null; + connectStatus: string | null; + exportAuthenticatedWallet: (() => void) | null; +}; + +const defaultValues: AccountValues = { + isLoggedIn: false, + loggedInEthereumAddress: null, + loginStatus: null, + authenticatedLogout: null, + authenticatedLogin: null, + accountDisplay: null, + network: null, + connectStatus: null, + exportAuthenticatedWallet: null +}; + +const AccountContext = createContext(defaultValues); + +export default AccountContext; diff --git a/packages/app/src/contexts/Account/AccountProvider.tsx b/packages/app/src/contexts/Account/AccountProvider.tsx new file mode 100644 index 0000000..cee6044 --- /dev/null +++ b/packages/app/src/contexts/Account/AccountProvider.tsx @@ -0,0 +1,172 @@ +import { useEffect, useState, ReactNode } from 'react'; +import { useAccount, useConnect, useDisconnect, useNetwork } from 'wagmi'; +import { useWallets } from '@privy-io/react-auth'; +import { usePrivyWagmi } from '@privy-io/wagmi-connector'; +import { usePrivy } from '@privy-io/react-auth'; + +import AccountContext from './AccountContext'; +import { esl } from '../../constants'; +import { formatAddress } from '../../helpers/addressFormat'; +import { LoginStatus, LoginStatusType } from '../../helpers/types/loginStatus'; + +interface ProvidersProps { + children: ReactNode; +} + +const AccountProvider = ({ children }: ProvidersProps) => { + const { address } = useAccount(); + const { chain } = useNetwork(); + const { disconnect } = useDisconnect(); + const { status: connectStatus } = useConnect(); + + const { wallets } = useWallets(); + const { wallet: activeWallet, setActiveWallet } = usePrivyWagmi(); + const { + authenticated, + logout: authenticatedLogout, + user, + login: authenticatedLogin, + exportWallet: exportAuthenticatedWallet + } = usePrivy(); + + /* + * State + */ + + const [isLoggedIn, setIsLoggedIn] = useState(false); + const [loginStatus, setLoginStatus] = useState(LoginStatus.LOGGED_OUT); + const [loggedInEthereumAddress, setLoggedInEthereumAddress] = useState(null); + const [accountDisplay, setAccountDisplay] = useState(null); + const [network, setNetwork] = useState(null); + + /* + * Hooks + */ + + useEffect(() => { + esl && console.log('activeWallet_1'); + esl && console.log('checking wallets: ', wallets); + esl && console.log('checking activeWallet: ', activeWallet); + + if (wallets[0] && !activeWallet) { + esl && console.log('activeWallet_2'); + setActiveWallet(wallets[0]); + } + }, [activeWallet, wallets, setActiveWallet]); + + useEffect(() => { + esl && console.log('loginStatus_1'); + esl && console.log('user: ', user); + + if (authenticated && user?.wallet?.connectorType) { + const connectorType = user.wallet.connectorType; + if (connectorType === 'embedded') { + esl && console.log('loginStatus_2'); + + setLoginStatus(LoginStatus.AUTHENTICATED); + } else if ( + connectorType === 'injected' || + connectorType === 'coinbase_wallet' || + connectorType === 'wallet_connect' || + connectorType === 'wallet_connect_v2' + ) { + esl && console.log('loginStatus_3'); + + setLoginStatus(LoginStatus.EOA); + } else { + esl && console.log('loginStatus_4'); + + setLoginStatus(LoginStatus.LOGGED_OUT); + } + } else { + esl && console.log('loginStatus_5'); + + setLoginStatus(LoginStatus.LOGGED_OUT); + } + }, [authenticated, user]); + + useEffect(() => { + esl && console.log('isLoggedIn_1'); + esl && console.log('checking loginStatus: ', loginStatus); + esl && console.log('user: ', user); + esl && console.log('address: ', address); + + switch (loginStatus) { + case LoginStatus.AUTHENTICATED: + if (address && user) { + esl && console.log('isLoggedIn_2'); + + if (user.email && user.email.address) { + setAccountDisplay(user.email.address); + } else if (user.google && user.google.email) { + setAccountDisplay(user.google.email); + } else if (user.twitter && user.twitter.username) { + setAccountDisplay(user.twitter.username); + } else if (user.farcaster && user.farcaster.displayName) { + setAccountDisplay(user.farcaster.displayName); + } else { + setAccountDisplay('Account'); + } + + setIsLoggedIn(true); + setLoggedInEthereumAddress(address); + } + break; + + case LoginStatus.EOA: + if (address) { + esl && console.log('isLoggedIn_3'); + + const formattedAddress = formatAddress(address); + + setAccountDisplay(formattedAddress); + setIsLoggedIn(true); + setLoggedInEthereumAddress(address); + } + break; + + case LoginStatus.LOGGED_OUT: + default: + esl && console.log('isLoggedIn_4'); + + setAccountDisplay(null); + setIsLoggedIn(false); + setLoggedInEthereumAddress(null); + } + }, [user, address, loginStatus, disconnect]); + + useEffect(() => { + esl && console.log('networkRaw_1'); + esl && console.log('checking chain: ', chain); + + if (chain) { + esl && console.log('networkRaw_2'); + + setNetwork(chain.network); + } else { + esl && console.log('networkRaw_3'); + + setNetwork(null); + } + }, [chain]); + + return ( + + {children} + + ); +}; + +export default AccountProvider; diff --git a/packages/app/src/contexts/Account/index.ts b/packages/app/src/contexts/Account/index.ts new file mode 100644 index 0000000..91841ae --- /dev/null +++ b/packages/app/src/contexts/Account/index.ts @@ -0,0 +1,2 @@ +export { default as AccountContext } from './AccountContext' +export { default as AccountProvider } from './AccountProvider' diff --git a/packages/app/src/contexts/GoogleAuth/GoogleAuthContext.ts b/packages/app/src/contexts/GoogleAuth/GoogleAuthContext.ts new file mode 100644 index 0000000..3156bc2 --- /dev/null +++ b/packages/app/src/contexts/GoogleAuth/GoogleAuthContext.ts @@ -0,0 +1,24 @@ +import { createContext } from 'react' + + +interface GoogleAuthValues { + googleAuthToken: any | null; + isGoogleAuthed: boolean; + loggedInGmail: string | null; + scopesApproved: boolean; + googleLogIn: () => void; + googleLogOut: () => void; +} + +const defaultValues: GoogleAuthValues = { + googleAuthToken: null, + isGoogleAuthed: false, + loggedInGmail: null, + scopesApproved: false, + googleLogIn: () => {}, + googleLogOut: () => {}, +}; + +const GoogleAuthContext = createContext(defaultValues) + +export default GoogleAuthContext diff --git a/packages/app/src/contexts/GoogleAuth/GoogleAuthProvider.tsx b/packages/app/src/contexts/GoogleAuth/GoogleAuthProvider.tsx new file mode 100644 index 0000000..e0941d2 --- /dev/null +++ b/packages/app/src/contexts/GoogleAuth/GoogleAuthProvider.tsx @@ -0,0 +1,154 @@ +import React, { useEffect, useState, ReactNode } from 'react' +import { + hasGrantedAllScopesGoogle, + useGoogleLogin, + googleLogout, +} from '@react-oauth/google'; + +// import GoogleAuthContext from './GoogleAuthContext' +import { fetchProfile } from '../../hooks/useGmailClient'; +import useAccount from '../../hooks/useAccount'; +import { esl } from '../../constants'; +import GoogleAuthContext from './GoogleAuthContext'; + + +interface ProvidersProps { + children: ReactNode; +} + +const GoogleAuthProvider = ({ children }: ProvidersProps) => { + /* + * Contexts + */ + + const { loggedInEthereumAddress } = useAccount() + + /* + * State Keys + */ + + const getGoogleAuthTokenKey = () => { + return `googleAuthToken_${loggedInEthereumAddress}`; + } + + /* + * State + */ + + const [googleAuthToken, setGoogleAuthToken] = useState( + () => { + const cachedToken = localStorage.getItem(getGoogleAuthTokenKey()); + return cachedToken ? JSON.parse(cachedToken) : null; + } + ); + + const [isGoogleAuthed, setIsGoogleAuthed] = useState(false); + const [isScopesApproved, setIsScopesApproved] = useState(false); + const [loggedInGmail, setLoggedInGmail] = useState(null); + + /* + * Hooks + */ + + useEffect(() => { + esl && console.log('logoOutGoogleAuth'); + esl && console.log('checking loggedInEthereumAddress', loggedInEthereumAddress); + + if (!loggedInEthereumAddress) { + esl && console.log('logoOutGoogleAuth_1'); + + googleLogOut(); + } + + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [loggedInEthereumAddress]); + + useEffect(() => { + esl && console.log('googleAuthScopes_1'); + esl && console.log('checking googleAuthToken', googleAuthToken); + + if (googleAuthToken) { + esl && console.log('googleAuthScopes_2'); + + const allScope = hasGrantedAllScopesGoogle( + googleAuthToken, + 'email', + 'profile', + 'https://www.googleapis.com/auth/gmail.readonly', + ); + + setIsScopesApproved(allScope); + } + }, [googleAuthToken]); + + useEffect(() => { + esl && console.log('googleProfile_1'); + esl && console.log('checking googleAuthToken', googleAuthToken); + + if (googleAuthToken) { + esl && console.log('googleProfile_2'); + + const fetchData = async () => { + try { + const email = await fetchProfile(googleAuthToken.access_token); + + if (email) { + setLoggedInGmail(email); + + localStorage.setItem('loggedInEmail', email); + } + } catch (error) { + console.error('Error in fetching profile data:', error); + } + }; + + fetchData(); + }; + }, [googleAuthToken]); + + /* + * Helpers + */ + + const googleLogIn = useGoogleLogin({ + onSuccess: tokenResponse => { + setGoogleAuthToken(tokenResponse); + setIsGoogleAuthed(true); + + localStorage.setItem(getGoogleAuthTokenKey(), JSON.stringify(tokenResponse)); + }, + scope: 'email profile https://www.googleapis.com/auth/gmail.readonly', + }); + + const googleLogOut = () => { + setIsScopesApproved(false); + + setGoogleAuthToken(null); + localStorage.removeItem(getGoogleAuthTokenKey()); + + setIsGoogleAuthed(false); + localStorage.removeItem('isGoogleAuthed'); + + setLoggedInGmail(null); + localStorage.removeItem('loggedInGmail'); + + googleLogout(); + }; + + return ( + + {children} + + ); +}; + +export default GoogleAuthProvider diff --git a/packages/app/src/contexts/GoogleAuth/index.ts b/packages/app/src/contexts/GoogleAuth/index.ts new file mode 100644 index 0000000..80c2afe --- /dev/null +++ b/packages/app/src/contexts/GoogleAuth/index.ts @@ -0,0 +1,2 @@ +export { default as GoogleAuthContext } from './GoogleAuthContext' +export { default as GoogleAuthProvider } from './GoogleAuthProvider' diff --git a/packages/app/src/helpers/addressFormat.ts b/packages/app/src/helpers/addressFormat.ts new file mode 100644 index 0000000..78dca2c --- /dev/null +++ b/packages/app/src/helpers/addressFormat.ts @@ -0,0 +1,13 @@ +export const formatAddress = (address: string | undefined): string => { + if (!address || address.length < 9) { + return address || ''; + } + return `${address.substring(0, 6)}...${address.substring(address.length - 4)}`; + }; + + export const formatAddressLong = (address: string | undefined): string => { + if (!address || address.length < 9) { + return address || ''; + } + return `${address.substring(0, 12)}...${address.substring(address.length - 10)}`; + }; \ No newline at end of file diff --git a/packages/app/src/helpers/dateTimeFormat.ts b/packages/app/src/helpers/dateTimeFormat.ts new file mode 100644 index 0000000..14ffcfe --- /dev/null +++ b/packages/app/src/helpers/dateTimeFormat.ts @@ -0,0 +1,21 @@ +export function formatDateTime(unixTimestamp: string): string { + const date = new Date(Number(unixTimestamp)); + const now = new Date(); + + const isToday = + date.getDate() === now.getDate() && + date.getMonth() === now.getMonth() && + date.getFullYear() === now.getFullYear(); + + if (isToday) { + return date.toLocaleTimeString("en-US", { + hour: "numeric", + minute: "2-digit", + hour12: true, + }); + } + return date.toLocaleDateString("en-US", { + month: "numeric", + day: "numeric", + }); +} diff --git a/packages/app/src/helpers/types/index.ts b/packages/app/src/helpers/types/index.ts new file mode 100644 index 0000000..e69de29 diff --git a/packages/app/src/helpers/types/loginStatus.ts b/packages/app/src/helpers/types/loginStatus.ts new file mode 100644 index 0000000..affed4e --- /dev/null +++ b/packages/app/src/helpers/types/loginStatus.ts @@ -0,0 +1,8 @@ +export const LoginStatus = { + LOGGED_OUT: 'logged_out', + AUTHENTICATED: 'authenticated', + EOA: 'eoa' + }; + + export type LoginStatusType = typeof LoginStatus[keyof typeof LoginStatus]; + \ No newline at end of file diff --git a/packages/app/src/hooks/useAccount.ts b/packages/app/src/hooks/useAccount.ts new file mode 100644 index 0000000..b744222 --- /dev/null +++ b/packages/app/src/hooks/useAccount.ts @@ -0,0 +1,8 @@ +import { useContext } from 'react' +import { AccountContext } from '../contexts/Account' + +const useAccount = () => { + return { ...useContext(AccountContext) } +} + +export default useAccount diff --git a/packages/app/src/hooks/useGmailClient.ts b/packages/app/src/hooks/useGmailClient.ts new file mode 100644 index 0000000..3ab9f1a --- /dev/null +++ b/packages/app/src/hooks/useGmailClient.ts @@ -0,0 +1,129 @@ +/* + * users.getProfile + */ + +export async function fetchProfile( + accessToken: string, + ): Promise { + const url = `https://www.googleapis.com/gmail/v1/users/me/profile`; + + const response = await fetch(url, { + headers: { + 'Authorization': `Bearer ${accessToken}`, + }, + }); + + if (response.ok) { + const data = await response.json(); + + return data.emailAddress; + } else { + console.error('Failed to fetch emails:', response); + + throw new Error('Failed to fetch emails'); + } + } + + /* + * messages.list + */ + + export type GmailMessagesListResponse = { + messages: Array<{ + id: string; + threadId: string; + }>; + nextPageToken?: string; + resultSizeEstimate?: number; + }; + + export async function fetchEmailList( + accessToken: string, + queryParams: any + ): Promise { + const defaultParams = { + maxResults: 5, + pageToken: 0, + }; + + const finalQueryParams = { ...defaultParams, ...queryParams }; + const queryString = new URLSearchParams(finalQueryParams).toString(); + const url = `https://www.googleapis.com/gmail/v1/users/me/messages?${queryString}`; + + const response = await fetch(url, { + headers: { + 'Authorization': `Bearer ${accessToken}`, + }, + }); + + if (response.ok) { + const data: GmailMessagesListResponse = await response.json(); + + return data; + } else { + console.error('Failed to fetch emails:', response); + throw new Error('Failed to fetch emails'); + } + } + + /* + * messages.get + */ + + export type RawEmailResponse = { + subject: string; + internalDate: string; + decodedContents: string; + }; + + export async function fetchEmailsRaw( + accessToken: string, + messageIds: string[] + ): Promise { + try { + const fetchPromises = messageIds.map(messageId => { + const url = `https://www.googleapis.com/gmail/v1/users/me/messages/${messageId}?format=raw`; + + return fetch(url, { + headers: { + 'Authorization': `Bearer ${accessToken}`, + }, + }) + .then(response => { + if (!response.ok) { + throw new Error(`Failed to fetch email with ID: ${messageId}`); + } + + return response.json(); + }) + .then(data => { + let rawBase64 = data.raw + .replace(/-/g, '+') + .replace(/_/g, '/'); + + while (rawBase64.length % 4) { + rawBase64 += '='; + } + + const decodedContents = atob(rawBase64); + + const subject = decodedContents.match(/Subject: (.*)/)?.[1] || 'No Subject'; + + return { + subject, + internalDate: data.internalDate, + decodedContents + }; + }) as Promise; + }); + + const results = await Promise.all(fetchPromises); + + return results; + } catch (error) { + console.error('Error fetching emails:', error); + + throw new Error('Error fetching emails'); + } + }; + \ No newline at end of file diff --git a/packages/app/src/hooks/useGoogleAuth.ts b/packages/app/src/hooks/useGoogleAuth.ts new file mode 100644 index 0000000..32fbf82 --- /dev/null +++ b/packages/app/src/hooks/useGoogleAuth.ts @@ -0,0 +1,8 @@ +import { useContext } from 'react' +import { GoogleAuthContext } from '../contexts/GoogleAuth' + +const useGoogleAuth = () => { + return { ...useContext(GoogleAuthContext) } +} + +export default useGoogleAuth diff --git a/packages/app/src/index.tsx b/packages/app/src/index.tsx index 61fa279..4fec4d0 100644 --- a/packages/app/src/index.tsx +++ b/packages/app/src/index.tsx @@ -2,7 +2,9 @@ import React from "react"; import ReactDOM from "react-dom"; import App from "./App"; import { WagmiConfig, createConfig } from "wagmi"; -import { createPublicClient, http } from 'viem' +import { createPublicClient, http } from "viem"; +import { configureChains } from "wagmi"; +import { publicProvider } from "wagmi/providers/public"; import { sepolia } from "wagmi/chains"; import { getDefaultWallets, @@ -10,7 +12,8 @@ import { darkTheme, } from "@rainbow-me/rainbowkit"; import "@rainbow-me/rainbowkit/styles.css"; - +import { GoogleOAuthProvider } from "@react-oauth/google"; +import { GoogleAuthProvider } from "./contexts/GoogleAuth"; const { connectors } = getDefaultWallets({ appName: "ZK Email - Twitter Verifier", @@ -22,17 +25,20 @@ const config = createConfig({ autoConnect: true, publicClient: createPublicClient({ chain: sepolia, - transport: http() + transport: http(), }), connectors: connectors, -}) - +}); ReactDOM.render( - + + + + + , diff --git a/packages/app/src/pages/MainPage.tsx b/packages/app/src/pages/MainPage.tsx index be6677a..fa31636 100644 --- a/packages/app/src/pages/MainPage.tsx +++ b/packages/app/src/pages/MainPage.tsx @@ -22,17 +22,34 @@ import { import { LabeledTextArea } from "../components/LabeledTextArea"; import DragAndDropTextBox from "../components/DragAndDropTextBox"; import { SingleLineInput } from "../components/SingleLineInput"; -import { Button } from "../components/Button"; +import { Button, TextButton } from "../components/Button"; import { Col, Row } from "../components/Layout"; import { NumberedStep } from "../components/NumberedStep"; import { TopBanner } from "../components/TopBanner"; import { ProgressBar } from "../components/ProgressBar"; +import useGoogleAuth from "../hooks/useGoogleAuth"; +import { + RawEmailResponse, + fetchEmailList, + fetchEmailsRaw, +} from "../hooks/useGmailClient"; +import { formatDateTime } from "../helpers/dateTimeFormat"; +import EmailInputMethod from "../components/EmailInputMethod"; const CIRCUIT_NAME = "twitter"; export const MainPage: React.FC<{}> = (props) => { const { address } = useAccount(); + const { + googleAuthToken, + isGoogleAuthed, + loggedInGmail, + scopesApproved, + googleLogIn, + googleLogOut, + } = useGoogleAuth(); + const [ethereumAddress, setEthereumAddress] = useState(address ?? ""); const [emailFull, setEmailFull] = useState( localStorage.emailFull || "" @@ -48,8 +65,13 @@ export const MainPage: React.FC<{}> = (props) => { const [lastAction, setLastAction] = useState<"" | "sign" | "verify" | "send">( "" ); + const [isFetchEmailLoading, setIsFetchEmailLoading] = useState(false); + const [fetchedEmails, setFetchedEmails] = useState([]); const [showBrowserWarning, setShowBrowserWarning] = useState(false); const [downloadProgress, setDownloadProgress] = useState(0); + const [inputMethod, setInputMethod] = useState< + "GOOGLE" | "EML_FILE" | null + >(); const [status, setStatus] = useState< | "not-started" | "generating-input" @@ -73,6 +95,14 @@ export const MainPage: React.FC<{}> = (props) => { finishedProving: 0, }); + useEffect(() => { + if (isGoogleAuthed) { + handleFetchEmails(); + } + }, [isGoogleAuthed]); + + console.log(fetchedEmails); + useEffect(() => { const userAgent = navigator.userAgent; const isChrome = userAgent.indexOf("Chrome") > -1; @@ -129,6 +159,33 @@ export const MainPage: React.FC<{}> = (props) => { const { data, isLoading, isSuccess, write } = useContractWrite(config); + const handleFetchEmails = async () => { + try { + setIsFetchEmailLoading(true); + const emailListResponse = await fetchEmailList( + googleAuthToken.access_token, + {} + ); + + const emailResponseMessages = emailListResponse.messages; + if (emailResponseMessages?.length > 0) { + const emailIds = emailResponseMessages.map((message) => message.id); + const emails = await fetchEmailsRaw( + googleAuthToken.access_token, + emailIds + ); + + setFetchedEmails(emails); + } else { + setFetchedEmails([]); + } + } catch (error) { + console.error("Error in fetching data:", error); + } finally { + setIsFetchEmailLoading(false); + } + }; + useMount(() => { function handleKeyDown() { setLastAction(""); @@ -284,23 +341,88 @@ export const MainPage: React.FC<{}> = (props) => {
Input - -

- OR -

- { - setEmailFull(e.currentTarget.value); - }} - /> + {inputMethod ? null : ( + { + try { + setIsFetchEmailLoading(true); + setInputMethod("GOOGLE"); + googleLogIn(); + } catch (e) { + console.log(e); + setIsFetchEmailLoading(false); + } + }} + onClickEMLFile={() => { + setInputMethod("EML_FILE"); + }} + /> + )} + {inputMethod ? ( + setInputMethod(null)}> + ←{" "}Go Back + + ) : null} + {inputMethod === "GOOGLE" ? ( +
+ {isFetchEmailLoading ? ( +
+ ) : ( + fetchedEmails.map((email, index) => ( +
{ + setEmailFull(email.decodedContents); + }} + > +

{email.subject}

+

{formatDateTime(email.internalDate)}

+
+ )) + )} +
+ ) : null} + {inputMethod === "EML_FILE" ? ( + <> + {" "} + +

+ OR +

+ { + setEmailFull(e.currentTarget.value); + }} + /> + + ) : null} =17" viem: ~0.3.19 || ^1.0.0 wagmi: ~1.0.1 || ~1.1.0 || ~1.2.0 || ~1.3.0 || ~1.4.0 - checksum: 212286d24fb76e07b60255fef3b549b96925cb294b77fd1a697c7aed40381779428b5b64981b72d078e087ad0db6a3b89dbd634f8c79574a5bfa97ae23b0fc4e + checksum: 63a367eccc897203976473057f41e7537248a28b859dc4d58f0d4bae0808ce6588af691f1dbf480f7c393714d06e520b16105305ac1f345c816757f778d3ba8e languageName: node linkType: hard -"@remix-run/router@npm:1.15.3": - version: 1.15.3 - resolution: "@remix-run/router@npm:1.15.3" - checksum: 9e70bd334d99fdf9285f0885c10353d7e25f66369080f551d997e3ce204e1af3a12d6f12b091f94a2dc9a54c80598bbe3c5194b57cbae17b7b40ab815dcd49a0 +"@react-oauth/google@npm:^0.12.1": + version: 0.12.1 + resolution: "@react-oauth/google@npm:0.12.1" + peerDependencies: + react: ">=16.8.0" + react-dom: ">=16.8.0" + checksum: fff63a0fc0b367519b48422c39f6ebc73226e4442ae148d752d05083a185660e66d047fcc8d88b962de97980cfb71f726de0a96ff5f00af0d7e68f333560a7c3 languageName: node linkType: hard -"@rollup/rollup-android-arm-eabi@npm:4.14.3": - version: 4.14.3 - resolution: "@rollup/rollup-android-arm-eabi@npm:4.14.3" +"@remix-run/router@npm:1.16.1": + version: 1.16.1 + resolution: "@remix-run/router@npm:1.16.1" + checksum: 69068815832b30d2a5c063ac1c75365c45cf5b484dab65e1b3129fdbb3c2a7b866401733f766e550dbca1eaf0b84bc772a9c55310f4dd21eb53e62eb1b4625d0 + languageName: node + linkType: hard + +"@rollup/rollup-android-arm-eabi@npm:4.18.0": + version: 4.18.0 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.18.0" conditions: os=android & cpu=arm languageName: node linkType: hard -"@rollup/rollup-android-arm64@npm:4.14.3": - version: 4.14.3 - resolution: "@rollup/rollup-android-arm64@npm:4.14.3" +"@rollup/rollup-android-arm64@npm:4.18.0": + version: 4.18.0 + resolution: "@rollup/rollup-android-arm64@npm:4.18.0" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-darwin-arm64@npm:4.14.3": - version: 4.14.3 - resolution: "@rollup/rollup-darwin-arm64@npm:4.14.3" +"@rollup/rollup-darwin-arm64@npm:4.18.0": + version: 4.18.0 + resolution: "@rollup/rollup-darwin-arm64@npm:4.18.0" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-darwin-x64@npm:4.14.3": - version: 4.14.3 - resolution: "@rollup/rollup-darwin-x64@npm:4.14.3" +"@rollup/rollup-darwin-x64@npm:4.18.0": + version: 4.18.0 + resolution: "@rollup/rollup-darwin-x64@npm:4.18.0" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-linux-arm-gnueabihf@npm:4.14.3": - version: 4.14.3 - resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.14.3" - conditions: os=linux & cpu=arm +"@rollup/rollup-linux-arm-gnueabihf@npm:4.18.0": + version: 4.18.0 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.18.0" + conditions: os=linux & cpu=arm & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-arm-musleabihf@npm:4.14.3": - version: 4.14.3 - resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.14.3" - conditions: os=linux & cpu=arm +"@rollup/rollup-linux-arm-musleabihf@npm:4.18.0": + version: 4.18.0 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.18.0" + conditions: os=linux & cpu=arm & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-arm64-gnu@npm:4.14.3": - version: 4.14.3 - resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.14.3" +"@rollup/rollup-linux-arm64-gnu@npm:4.18.0": + version: 4.18.0 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.18.0" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-arm64-musl@npm:4.14.3": - version: 4.14.3 - resolution: "@rollup/rollup-linux-arm64-musl@npm:4.14.3" +"@rollup/rollup-linux-arm64-musl@npm:4.18.0": + version: 4.18.0 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.18.0" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-powerpc64le-gnu@npm:4.14.3": - version: 4.14.3 - resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.14.3" +"@rollup/rollup-linux-powerpc64le-gnu@npm:4.18.0": + version: 4.18.0 + resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.18.0" conditions: os=linux & cpu=ppc64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-riscv64-gnu@npm:4.14.3": - version: 4.14.3 - resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.14.3" +"@rollup/rollup-linux-riscv64-gnu@npm:4.18.0": + version: 4.18.0 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.18.0" conditions: os=linux & cpu=riscv64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-s390x-gnu@npm:4.14.3": - version: 4.14.3 - resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.14.3" +"@rollup/rollup-linux-s390x-gnu@npm:4.18.0": + version: 4.18.0 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.18.0" conditions: os=linux & cpu=s390x & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-x64-gnu@npm:4.14.3": - version: 4.14.3 - resolution: "@rollup/rollup-linux-x64-gnu@npm:4.14.3" +"@rollup/rollup-linux-x64-gnu@npm:4.18.0": + version: 4.18.0 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.18.0" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-x64-musl@npm:4.14.3": - version: 4.14.3 - resolution: "@rollup/rollup-linux-x64-musl@npm:4.14.3" +"@rollup/rollup-linux-x64-musl@npm:4.18.0": + version: 4.18.0 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.18.0" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-win32-arm64-msvc@npm:4.14.3": - version: 4.14.3 - resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.14.3" +"@rollup/rollup-win32-arm64-msvc@npm:4.18.0": + version: 4.18.0 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.18.0" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-win32-ia32-msvc@npm:4.14.3": - version: 4.14.3 - resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.14.3" +"@rollup/rollup-win32-ia32-msvc@npm:4.18.0": + version: 4.18.0 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.18.0" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@rollup/rollup-win32-x64-msvc@npm:4.14.3": - version: 4.14.3 - resolution: "@rollup/rollup-win32-x64-msvc@npm:4.14.3" +"@rollup/rollup-win32-x64-msvc@npm:4.18.0": + version: 4.18.0 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.18.0" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -3179,9 +3198,9 @@ __metadata: linkType: hard "@safe-global/safe-gateway-typescript-sdk@npm:^3.5.3": - version: 3.19.0 - resolution: "@safe-global/safe-gateway-typescript-sdk@npm:3.19.0" - checksum: e658d42b285b9f05e6ef86a1b6e32e9b540de64d236f9e0556924b48a7bcd9d0b1ae88aa8ac62a3da663c199fda6bda56203ed7648a694d778fd28ae8c96088a + version: 3.21.1 + resolution: "@safe-global/safe-gateway-typescript-sdk@npm:3.21.1" + checksum: 04934d3ad1d6f97de499357522df123ebb03e15b5c9264dd1750fb6ea7cd2fa02b67223c92e27755946f2a043658071c4e5bc92a9cc7b470b9a29d261fdb5f2d languageName: node linkType: hard @@ -3608,11 +3627,11 @@ __metadata: linkType: hard "@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.6": - version: 7.20.5 - resolution: "@types/babel__traverse@npm:7.20.5" + version: 7.20.6 + resolution: "@types/babel__traverse@npm:7.20.6" dependencies: "@babel/types": ^7.20.7 - checksum: 608e0ab4fc31cd47011d98942e6241b34d461608c0c0e153377c5fd822c436c475f1ded76a56bfa76a1adf8d9266b727bbf9bfac90c4cb152c97f30dadc5b7e8 + checksum: 2bdc65eb62232c2d5c1086adeb0c31e7980e6fd7e50a3483b4a724a1a1029c84d9cb59749cf8de612f9afa2bc14c85b8f50e64e21f8a4398fa77eb9059a4283c languageName: node linkType: hard @@ -3712,9 +3731,9 @@ __metadata: linkType: hard "@types/lodash@npm:^4.14.202": - version: 4.17.0 - resolution: "@types/lodash@npm:4.17.0" - checksum: 3f98c0b67a93994cbc3403d4fa9dbaf52b0b6bb7f07a764d73875c2dcd5ef91222621bd5bcf8eee7b417a74d175c2f7191b9f595f8603956fd06f0674c0cba93 + version: 4.17.4 + resolution: "@types/lodash@npm:4.17.4" + checksum: 268e652fd52d49189f155bc89b49bd4535aa44f0b6b0ed9ce7e50318307bda58147c49539d2047f39ca37cf5b5ea38dfb801d0dbcdbc8b019c95c1afc346b05a languageName: node linkType: hard @@ -3742,11 +3761,11 @@ __metadata: linkType: hard "@types/node@npm:*, @types/node@npm:^20.11.5": - version: 20.12.7 - resolution: "@types/node@npm:20.12.7" + version: 20.12.12 + resolution: "@types/node@npm:20.12.12" dependencies: undici-types: ~5.26.4 - checksum: 7cc979f7e2ca9a339ec71318c3901b9978555257929ef3666987f3e447123bc6dc92afcc89f6347e09e07d602fde7d51bcddea626c23aa2bb74aeaacfd1e1686 + checksum: 5373983874b9af7c216e7ca5d26b32a8d9829c703a69f1e66f2113598b5be8582c0e009ca97369f1ec9a6282b3f92812208d06eb1e9fc3bd9b939b022303d042 languageName: node linkType: hard @@ -3774,12 +3793,12 @@ __metadata: linkType: hard "@types/react@npm:*": - version: 18.2.79 - resolution: "@types/react@npm:18.2.79" + version: 18.3.3 + resolution: "@types/react@npm:18.3.3" dependencies: "@types/prop-types": "*" csstype: ^3.0.2 - checksum: 85aa96e0e88725c84d8fc5f04f10a4da6a1f507dde33557ac9cc211414756867721264bfefd9e02bae1288ce2905351d949b652b931e734ea24519ee5c625138 + checksum: c63d6a78163244e2022b01ef79b0baec4fe4da3475dc4a90bb8accefad35ef0c43560fd0312e5974f92a0f1108aa4d669ac72d73d66396aa060ea03b5d2e3873 languageName: node linkType: hard @@ -3819,10 +3838,10 @@ __metadata: languageName: node linkType: hard -"@types/stylis@npm:4.2.0": - version: 4.2.0 - resolution: "@types/stylis@npm:4.2.0" - checksum: 02a47584acd2fcb664f7d8270a69686c83752bdfb855f804015d33116a2b09c0b2ac535213a4a7b6d3a78b2915b22b4024cce067ae979beee0e4f8f5fdbc26a9 +"@types/stylis@npm:4.2.5": + version: 4.2.5 + resolution: "@types/stylis@npm:4.2.5" + checksum: 24f91719db5569979e9e2f197e050ef82e1fd72474e8dc45bca38d48ee56481eae0f0d4a7ac172540d7774b45a2a78d901a4c6d07bba77a33dbccff464ea3edf languageName: node linkType: hard @@ -3973,9 +3992,9 @@ __metadata: linkType: hard "@vanilla-extract/private@npm:^1.0.3": - version: 1.0.4 - resolution: "@vanilla-extract/private@npm:1.0.4" - checksum: 12d85d0e02d39e7ea27e63a4a623040ac1cce1cee2f39292185661803792457d80bdd21a60620764713fff87dffa0bf5744fe7e0d7f0740eb7dfb61210ed7171 + version: 1.0.5 + resolution: "@vanilla-extract/private@npm:1.0.5" + checksum: 147acf9b1795f0681372db92e483bc27eeddad050b7d517e9ab87c5e9bcbdce69c0be300c4948f42e3bdeb81b8dd16b8243f3404ce74e6bc9acbb31112429ff4 languageName: node linkType: hard @@ -3989,17 +4008,17 @@ __metadata: linkType: hard "@vitejs/plugin-react@npm:^4.2.1": - version: 4.2.1 - resolution: "@vitejs/plugin-react@npm:4.2.1" + version: 4.3.0 + resolution: "@vitejs/plugin-react@npm:4.3.0" dependencies: - "@babel/core": ^7.23.5 - "@babel/plugin-transform-react-jsx-self": ^7.23.3 - "@babel/plugin-transform-react-jsx-source": ^7.23.3 + "@babel/core": ^7.24.5 + "@babel/plugin-transform-react-jsx-self": ^7.24.5 + "@babel/plugin-transform-react-jsx-source": ^7.24.1 "@types/babel__core": ^7.20.5 - react-refresh: ^0.14.0 + react-refresh: ^0.14.2 peerDependencies: vite: ^4.2.0 || ^5.0.0 - checksum: 08d227d27ff2304e395e746bd2d4b5fee40587f69d7e2fcd6beb7d91163c1f1dc26d843bc48e2ffb8f38c6b8a1b9445fb07840e3dcc841f97b56bbb8205346aa + checksum: e4642c081e74e701fc07f03f505b44eb428d7105461b8026e7364ecd30dcf7785126bf272767a3bc36899b6abe85479af444612ef6d09509d9bc7d6025cac925 languageName: node linkType: hard @@ -4143,18 +4162,18 @@ __metadata: linkType: hard "@walletconnect/jsonrpc-http-connection@npm:^1.0.4, @walletconnect/jsonrpc-http-connection@npm:^1.0.7": - version: 1.0.7 - resolution: "@walletconnect/jsonrpc-http-connection@npm:1.0.7" + version: 1.0.8 + resolution: "@walletconnect/jsonrpc-http-connection@npm:1.0.8" dependencies: "@walletconnect/jsonrpc-utils": ^1.0.6 "@walletconnect/safe-json": ^1.0.1 cross-fetch: ^3.1.4 - tslib: 1.14.1 - checksum: c4efcd46d4b344727ca6879badca2c2f855499ac76c8dace5d118f4423167adce34e41a99f3dcab0febb945ce51c6ef0ac8556567d5e38d8dad864b131eb5b00 + events: ^3.3.0 + checksum: 2b7c49aca54af2ec37f7bb493062e0bb522ec262889890aa00c133a85dd39beffcfcdb73252600446383a9e6db360cffdc6c50ef7c9b68aae7f5606c8781bdbc languageName: node linkType: hard -"@walletconnect/jsonrpc-provider@npm:1.0.13, @walletconnect/jsonrpc-provider@npm:^1.0.13, @walletconnect/jsonrpc-provider@npm:^1.0.6": +"@walletconnect/jsonrpc-provider@npm:1.0.13": version: 1.0.13 resolution: "@walletconnect/jsonrpc-provider@npm:1.0.13" dependencies: @@ -4165,7 +4184,18 @@ __metadata: languageName: node linkType: hard -"@walletconnect/jsonrpc-types@npm:1.0.3, @walletconnect/jsonrpc-types@npm:^1.0.2, @walletconnect/jsonrpc-types@npm:^1.0.3": +"@walletconnect/jsonrpc-provider@npm:^1.0.13, @walletconnect/jsonrpc-provider@npm:^1.0.6": + version: 1.0.14 + resolution: "@walletconnect/jsonrpc-provider@npm:1.0.14" + dependencies: + "@walletconnect/jsonrpc-utils": ^1.0.8 + "@walletconnect/safe-json": ^1.0.2 + events: ^3.3.0 + checksum: db8f931f93285520c51939603108f5cfe2a90a651d12744766d14471db3a488d2964ece5bfedc6cc93832ecd008cd37e7e1b1a950d9ef3385106ee052b936573 + languageName: node + linkType: hard + +"@walletconnect/jsonrpc-types@npm:1.0.3": version: 1.0.3 resolution: "@walletconnect/jsonrpc-types@npm:1.0.3" dependencies: @@ -4175,6 +4205,16 @@ __metadata: languageName: node linkType: hard +"@walletconnect/jsonrpc-types@npm:^1.0.2, @walletconnect/jsonrpc-types@npm:^1.0.3": + version: 1.0.4 + resolution: "@walletconnect/jsonrpc-types@npm:1.0.4" + dependencies: + events: ^3.3.0 + keyvaluestorage-interface: ^1.0.0 + checksum: 99ea5f9f3b0c5892ff874de87dee62cf4fc345124177db1e6e5eaf48b85e2ea3833f0157beca43c51047444938e8eda6362fa8069b33e11d39e1050e7ef6e821 + languageName: node + linkType: hard + "@walletconnect/jsonrpc-utils@npm:1.0.8, @walletconnect/jsonrpc-utils@npm:^1.0.4, @walletconnect/jsonrpc-utils@npm:^1.0.6, @walletconnect/jsonrpc-utils@npm:^1.0.7, @walletconnect/jsonrpc-utils@npm:^1.0.8": version: 1.0.8 resolution: "@walletconnect/jsonrpc-utils@npm:1.0.8" @@ -4338,12 +4378,11 @@ __metadata: linkType: hard "@walletconnect/relay-api@npm:^1.0.9": - version: 1.0.9 - resolution: "@walletconnect/relay-api@npm:1.0.9" + version: 1.0.10 + resolution: "@walletconnect/relay-api@npm:1.0.10" dependencies: "@walletconnect/jsonrpc-types": ^1.0.2 - tslib: 1.14.1 - checksum: 5870579b6552f1ce7351878f1acb8386b0c11288c64d39133c7cee5040feeb7ccf9114228d97a59749d60366ad107b097d656407d534567c24f5d3878ea6e246 + checksum: a332cbfdf0d3bad7046b0559653a5121a4b5a540f029cc01eeb8ef466681b10626a5a24d55668405e7c635535f35b8038d4aa5a2f0d16c8b512c41fecff2448c languageName: node linkType: hard @@ -4486,12 +4525,12 @@ __metadata: linkType: hard "@zk-email/contracts@npm:^6.0.0": - version: 6.0.0 - resolution: "@zk-email/contracts@npm:6.0.0" + version: 6.0.3 + resolution: "@zk-email/contracts@npm:6.0.3" dependencies: "@openzeppelin/contracts": ^5.0.0 dotenv: ^16.3.1 - checksum: cf6fefabc1d8c28e7dce4a82395c737ea9f40a556c361d7397410bbd352e7dd329d14c9e8d24f6ec350b68a660c7729dbf56c4ff13317dcd3a01f500564482a6 + checksum: 520ddfacbd0b54f9b4a1dac728c4fd421a6958978dbe077cbc64a8fafb65c0af7a3a34d75081d98fc4266668f8ab68a289f9a26dc54e24e1c91a4943c37ff606 languageName: node linkType: hard @@ -4536,6 +4575,7 @@ __metadata: "@proof-of-twitter/circuits": "workspace:^" "@proof-of-twitter/contracts": "workspace:^" "@rainbow-me/rainbowkit": ^1.3.3 + "@react-oauth/google": ^0.12.1 "@testing-library/jest-dom": ^5.16.3 "@testing-library/react": ^12.1.4 "@types/jest": ^29.5.11 @@ -4957,13 +4997,13 @@ __metadata: linkType: hard "axios@npm:^1.6.1": - version: 1.6.8 - resolution: "axios@npm:1.6.8" + version: 1.7.2 + resolution: "axios@npm:1.7.2" dependencies: follow-redirects: ^1.15.6 form-data: ^4.0.0 proxy-from-env: ^1.1.0 - checksum: bf007fa4b207d102459300698620b3b0873503c6d47bf5a8f6e43c0c64c90035a4f698b55027ca1958f61ab43723df2781c38a99711848d232cad7accbcdfcdd + checksum: e457e2b0ab748504621f6fa6609074ac08c824bf0881592209dfa15098ece7e88495300e02cd22ba50b3468fd712fe687e629dcb03d6a3f6a51989727405aedf languageName: node linkType: hard @@ -5017,15 +5057,15 @@ __metadata: linkType: hard "babel-plugin-polyfill-corejs2@npm:^0.4.10": - version: 0.4.10 - resolution: "babel-plugin-polyfill-corejs2@npm:0.4.10" + version: 0.4.11 + resolution: "babel-plugin-polyfill-corejs2@npm:0.4.11" dependencies: "@babel/compat-data": ^7.22.6 - "@babel/helper-define-polyfill-provider": ^0.6.1 + "@babel/helper-define-polyfill-provider": ^0.6.2 semver: ^6.3.1 peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 2c0e4868789152f50db306f4957fa7934876cefb51d5d86436595f0b091539e45ce0e9c0125b5db2d71f913b29cd48ae76b8e942ba28fcf2273e084f54664a1c + checksum: f098353ce7c7dde1a1d2710858e01b471e85689110c9e37813e009072347eb8c55d5f84d20d3bf1cab31755f20078ba90f8855fdc4686a9daa826a95ff280bd7 languageName: node linkType: hard @@ -5042,13 +5082,13 @@ __metadata: linkType: hard "babel-plugin-polyfill-regenerator@npm:^0.6.1": - version: 0.6.1 - resolution: "babel-plugin-polyfill-regenerator@npm:0.6.1" + version: 0.6.2 + resolution: "babel-plugin-polyfill-regenerator@npm:0.6.2" dependencies: - "@babel/helper-define-polyfill-provider": ^0.6.1 + "@babel/helper-define-polyfill-provider": ^0.6.2 peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 9df4a8e9939dd419fed3d9ea26594b4479f2968f37c225e1b2aa463001d7721f5537740e6622909d2a570b61cec23256924a1701404fc9d6fd4474d3e845cedb + checksum: 150233571072b6b3dfe946242da39cba8587b7f908d1c006f7545fc88b0e3c3018d445739beb61e7a75835f0c2751dbe884a94ff9b245ec42369d9267e0e1b3f languageName: node linkType: hard @@ -5238,12 +5278,12 @@ __metadata: languageName: node linkType: hard -"braces@npm:^3.0.2, braces@npm:~3.0.2": - version: 3.0.2 - resolution: "braces@npm:3.0.2" +"braces@npm:^3.0.3, braces@npm:~3.0.2": + version: 3.0.3 + resolution: "braces@npm:3.0.3" dependencies: - fill-range: ^7.0.1 - checksum: e2a8e769a863f3d4ee887b5fe21f63193a891c68b612ddb4b68d82d1b5f3ff9073af066c343e9867a393fe4c2555dcb33e89b937195feb9c1613d259edfcd459 + fill-range: ^7.1.1 + checksum: b95aa0b3bd909f6cd1720ffcf031aeaf46154dd88b4da01f9a1d3f7ea866a79eba76a6d01cbc3c422b2ee5cdc39a4f02491058d5df0d7bf6e6a162a832df1f69 languageName: node linkType: hard @@ -5391,8 +5431,8 @@ __metadata: linkType: hard "cacache@npm:^18.0.0": - version: 18.0.2 - resolution: "cacache@npm:18.0.2" + version: 18.0.3 + resolution: "cacache@npm:18.0.3" dependencies: "@npmcli/fs": ^3.1.0 fs-minipass: ^3.0.0 @@ -5406,7 +5446,7 @@ __metadata: ssri: ^10.0.0 tar: ^6.1.11 unique-filename: ^3.0.0 - checksum: 0250df80e1ad0c828c956744850c5f742c24244e9deb5b7dc81bca90f8c10e011e132ecc58b64497cc1cad9a98968676147fb6575f4f94722f7619757b17a11b + checksum: b717fd9b36e9c3279bfde4545c3a8f6d5a539b084ee26a9504d48f83694beb724057d26e090b97540f9cc62bea18b9f6cf671c50e18fb7dac60eda9db691714f languageName: node linkType: hard @@ -5452,9 +5492,9 @@ __metadata: linkType: hard "caniuse-lite@npm:^1.0.30001587": - version: 1.0.30001610 - resolution: "caniuse-lite@npm:1.0.30001610" - checksum: 580c7367aafd7e524f4e3f0e8b22ac08d081a4d44ceece211f1758e214df9a87961750fb1e1ee28a2cd2830f0daf3edafe5e1d87bf1eefbbe7c6cf3d00e2979d + version: 1.0.30001621 + resolution: "caniuse-lite@npm:1.0.30001621" + checksum: 0afb65bbf558faea769c16e831fbbd5600c684c0f6bb4ffbc0d38528671fb5cb5d88714804241a88c61872ce289f7c6333aef6cfdfb09277bda0dbdf0aab3459 languageName: node linkType: hard @@ -5637,14 +5677,14 @@ __metadata: languageName: node linkType: hard -"circom_runtime@npm:0.1.24": - version: 0.1.24 - resolution: "circom_runtime@npm:0.1.24" +"circom_runtime@npm:0.1.25": + version: 0.1.25 + resolution: "circom_runtime@npm:0.1.25" dependencies: - ffjavascript: 0.2.60 + ffjavascript: 0.3.0 bin: calcwit: calcwit.js - checksum: 0654649ed64ace5562cec025648422970df885e79048b7942e283ef50f43142673acfd752ac2851917a81c43d4d42d37f5fdfc8df71d59ee81b873c19ea81a31 + checksum: db2c786ba5bfe749c2824e8f36567d202a3a4c838a1940711b009fd63ca9fb178bd96888817becbd59e240dbdeb6dff83e673b93a91c4fa49d67b2dfdd53b1eb languageName: node linkType: hard @@ -5693,9 +5733,9 @@ __metadata: linkType: hard "cjs-module-lexer@npm:^1.0.0": - version: 1.2.3 - resolution: "cjs-module-lexer@npm:1.2.3" - checksum: 5ea3cb867a9bb609b6d476cd86590d105f3cfd6514db38ff71f63992ab40939c2feb68967faa15a6d2b1f90daa6416b79ea2de486e9e2485a6f8b66a21b4fb0a + version: 1.3.1 + resolution: "cjs-module-lexer@npm:1.3.1" + checksum: 75f20ac264a397ea5c63f9c2343a51ab878043666468f275e94862f7180ec1d764a400ec0c09085dcf0db3193c74a8b571519abd2bf4be0d2be510d1377c8d4b languageName: node linkType: hard @@ -5904,6 +5944,13 @@ __metadata: languageName: node linkType: hard +"confbox@npm:^0.1.7": + version: 0.1.7 + resolution: "confbox@npm:0.1.7" + checksum: bde836c26f5154a348b0c0a757f8a0138929e5737e0553be3c4f07a056abca618b861aa63ac3b22d344789b56be99a1382928933e08cd500df00213bf4d8fb43 + languageName: node + linkType: hard + "consola@npm:^3.2.3": version: 3.2.3 resolution: "consola@npm:3.2.3" @@ -5935,11 +5982,11 @@ __metadata: linkType: hard "core-js-compat@npm:^3.31.0, core-js-compat@npm:^3.36.1": - version: 3.36.1 - resolution: "core-js-compat@npm:3.36.1" + version: 3.37.1 + resolution: "core-js-compat@npm:3.37.1" dependencies: browserslist: ^4.23.0 - checksum: c9109bd599a97b5d20f25fc8b8339b8c7f3fca5f9a1bebd397805383ff7699e117786c7ffe0f7a95058a6fa5e0e1435d4c10e5cda6ad86ce1957986bb6580562 + checksum: 5e7430329358bced08c30950512d2081aea0a5652b4c5892cbb3c4a6db05b0d3893a191a955162a07fdb5f4fe74e61b6429fdb503f54e062336d76e43c9555d9 languageName: node linkType: hard @@ -6182,14 +6229,7 @@ __metadata: languageName: node linkType: hard -"csstype@npm:3.1.2": - version: 3.1.2 - resolution: "csstype@npm:3.1.2" - checksum: e1a52e6c25c1314d6beef5168da704ab29c5186b877c07d822bd0806717d9a265e8493a2e35ca7e68d0f5d472d43fac1cdce70fd79fd0853dff81f3028d857b5 - languageName: node - linkType: hard - -"csstype@npm:^3.0.2, csstype@npm:^3.0.7, csstype@npm:^3.1.2": +"csstype@npm:3.1.3, csstype@npm:^3.0.2, csstype@npm:^3.0.7, csstype@npm:^3.1.2": version: 3.1.3 resolution: "csstype@npm:3.1.3" checksum: 8db785cc92d259102725b3c694ec0c823f5619a84741b5c7991b8ad135dfaa66093038a1cc63e03361a6cd28d122be48f2106ae72334e067dd619a51f49eddf7 @@ -6758,9 +6798,9 @@ __metadata: linkType: hard "electron-to-chromium@npm:^1.4.668": - version: 1.4.737 - resolution: "electron-to-chromium@npm:1.4.737" - checksum: ef20126fee0eecb3bb3d8af0cfd33b8b8305d4726f2ea6d25bd7f21f7d0e7a4b64026b185fd24146e3a81d9a3ebee68f6742230d9281962274b5478dcb798b06 + version: 1.4.783 + resolution: "electron-to-chromium@npm:1.4.783" + checksum: 49dfd8614c8e28076ca82e241a4a246685440dacde5e2cdb85d57a0d5bcc1cbd5de3201b3158b94ad5f1016e91ab9bb0d4da8cfe46d2897400fb62e6a5be198e languageName: node linkType: hard @@ -6848,12 +6888,12 @@ __metadata: linkType: hard "enhanced-resolve@npm:^5.8.3": - version: 5.16.0 - resolution: "enhanced-resolve@npm:5.16.0" + version: 5.16.1 + resolution: "enhanced-resolve@npm:5.16.1" dependencies: graceful-fs: ^4.2.4 tapable: ^2.2.0 - checksum: ccfd01850ecf2aa51e8554d539973319ff7d8a539ef1e0ba3460a0ccad6223c4ef6e19165ee64161b459cd8a48df10f52af4434c60023c65fde6afa32d475f7e + checksum: 6e4c166fef72ef231455f9119686d93ecccb11874f8256d73a42de5b293cb2536050849382468864b25973514ca4fa4cb13c37be2ff857a211e2aca3ff05bb6c languageName: node linkType: hard @@ -6930,9 +6970,9 @@ __metadata: linkType: hard "es-module-lexer@npm:^1.2.1": - version: 1.5.0 - resolution: "es-module-lexer@npm:1.5.0" - checksum: adbe0772701e226b4b853f758fd89c0bbfe8357ab93babde7b1cdb4f88c3a31460c908cbe578817e241d116cc4fcf569f7c6f29c4fbfa0aadb0def90f1ad4dd2 + version: 1.5.3 + resolution: "es-module-lexer@npm:1.5.3" + checksum: 2e0a0936fb49ca072d438128f588d5b46974035f7a1362bdb26447868016243cfd1c5ec8f12e80d273749e8c603f5aba5a828d5c2d95c07f61fbe77ab4fce4af languageName: node linkType: hard @@ -7016,7 +7056,7 @@ __metadata: languageName: node linkType: hard -"escalade@npm:^3.1.1": +"escalade@npm:^3.1.1, escalade@npm:^3.1.2": version: 3.1.2 resolution: "escalade@npm:3.1.2" checksum: 1ec0977aa2772075493002bdbd549d595ff6e9393b1cb0d7d6fcaf78c750da0c158f180938365486f75cb69fba20294351caddfce1b46552a7b6c3cde52eaa02 @@ -7504,18 +7544,18 @@ __metadata: languageName: node linkType: hard -"ffjavascript@npm:0.2.60": - version: 0.2.60 - resolution: "ffjavascript@npm:0.2.60" +"ffjavascript@npm:0.3.0, ffjavascript@npm:^0.3.0": + version: 0.3.0 + resolution: "ffjavascript@npm:0.3.0" dependencies: wasmbuilder: 0.0.16 wasmcurves: 0.2.2 - web-worker: ^1.2.0 - checksum: 5dbd597ee108373af1ba1877757a08b47db4bcd7b3b043b260d4475a0b1125454de00fb214224f85d9e6e6a6c0a1cfabd1ba9a2b68279b99c581404266e78138 + web-worker: 1.2.0 + checksum: eb1c3ee979299d3b670f371336e1a65ec5319a085da3a896465218283a079453b164e340483a5d66588227d8f1e8cf2ddb890d556bb21931a6f5b70d06f3d894 languageName: node linkType: hard -"ffjavascript@npm:0.2.63, ffjavascript@npm:^0.2.45, ffjavascript@npm:^0.2.48, ffjavascript@npm:^0.2.56, ffjavascript@npm:^0.2.59": +"ffjavascript@npm:^0.2.45, ffjavascript@npm:^0.2.48, ffjavascript@npm:^0.2.56, ffjavascript@npm:^0.2.59": version: 0.2.63 resolution: "ffjavascript@npm:0.2.63" dependencies: @@ -7558,12 +7598,12 @@ __metadata: languageName: node linkType: hard -"fill-range@npm:^7.0.1": - version: 7.0.1 - resolution: "fill-range@npm:7.0.1" +"fill-range@npm:^7.1.1": + version: 7.1.1 + resolution: "fill-range@npm:7.1.1" dependencies: to-regex-range: ^5.0.1 - checksum: cc283f4e65b504259e64fd969bcf4def4eb08d85565e906b7d36516e87819db52029a76b6363d0f02d0d532f0033c9603b9e2d943d56ee3b0d4f7ad3328ff917 + checksum: b4abfbca3839a3d55e4ae5ec62e131e2e356bf4859ce8480c64c4876100f4df292a63e5bb1618e1d7460282ca2b305653064f01654474aa35c68000980f17798 languageName: node linkType: hard @@ -7702,9 +7742,9 @@ __metadata: linkType: hard "forge-std@git+https://github.com/foundry-rs/forge-std.git": - version: 1.7.6 - resolution: "forge-std@https://github.com/foundry-rs/forge-std.git#commit=e4aef94c1768803a16fe19f7ce8b65defd027cfd" - checksum: 6fab51b92a24c97384f55dcb1b9eba29ce5043b67930b4179a9f9f4f8da85e8315163db60bec2ffbe7334135755630ba549b246db9e503e59ec93ba2f11931cc + version: 1.8.2 + resolution: "forge-std@https://github.com/foundry-rs/forge-std.git#commit=52715a217dc51d0de15877878ab8213f6cbbbab5" + checksum: 51b9148c39ebbedb4470042dec86f3961d35d5d088249091d2b51258b45a697c5cce25f96d1601a099838dae11fdd1bfddf5119f6bacf6c69698d88535822350 languageName: node linkType: hard @@ -7942,17 +7982,17 @@ __metadata: linkType: hard "glob@npm:^10.2.2, glob@npm:^10.3.10": - version: 10.3.12 - resolution: "glob@npm:10.3.12" + version: 10.4.1 + resolution: "glob@npm:10.4.1" dependencies: foreground-child: ^3.1.0 - jackspeak: ^2.3.6 - minimatch: ^9.0.1 - minipass: ^7.0.4 - path-scurry: ^1.10.2 + jackspeak: ^3.1.2 + minimatch: ^9.0.4 + minipass: ^7.1.2 + path-scurry: ^1.11.1 bin: glob: dist/esm/bin.mjs - checksum: 2b0949d6363021aaa561b108ac317bf5a97271b8a5d7a5fac1a176e40e8068ecdcccc992f8a7e958593d501103ac06d673de92adc1efcbdab45edefe35f8d7c6 + checksum: 5d33c686c80bf6877f4284adf99a8c3cbb2a6eccbc92342943fe5d4b42c01d78c1881f2223d950c92a938d0f857e12e37b86a8e5483ab2141822e053b67d0dde languageName: node linkType: hard @@ -8296,9 +8336,9 @@ __metadata: linkType: hard "hyphenate-style-name@npm:^1.0.3": - version: 1.0.4 - resolution: "hyphenate-style-name@npm:1.0.4" - checksum: 4f5bf4b055089754924babebaa23c17845937bcca6aee95d5d015f8fa1e6814279002bd6a9e541e3fac2cd02519fc76305396727066c57c8e21a7e73e7a12137 + version: 1.0.5 + resolution: "hyphenate-style-name@npm:1.0.5" + checksum: 1eda2ea5bf6798cb16317edce62658791371b0e371bbf15c95f49f41c44a2c3fae42aec945be55bd1e453df13f377c20998952e1019393687f962eb42e46d6ab languageName: node linkType: hard @@ -8447,9 +8487,9 @@ __metadata: linkType: hard "iron-webcrypto@npm:^1.0.0": - version: 1.1.0 - resolution: "iron-webcrypto@npm:1.1.0" - checksum: 75cdc0931a9ff701dfd699c48eeeb855bc07c2525f72f4086d0790e18133e44e8253949cf109240c149aa0b823f376c4eff4b2e69d4540914d54b2200b19f460 + version: 1.2.1 + resolution: "iron-webcrypto@npm:1.2.1" + checksum: b158d1893c8d037c11a7dcfd1998b519f31f979643c2c505c6eb1170fd63553498a58b05947d5dea116975df8f12ede5ca235cb68e4c1f404fa6695e4508c60c languageName: node linkType: hard @@ -8878,6 +8918,15 @@ __metadata: languageName: node linkType: hard +"isows@npm:1.0.4": + version: 1.0.4 + resolution: "isows@npm:1.0.4" + peerDependencies: + ws: "*" + checksum: a3ee62e3d6216abb3adeeb2a551fe2e7835eac87b05a6ecc3e7739259bf5f8e83290501f49e26137390c8093f207fc3378d4a7653aab76ad7bbab4b2dba9c5b9 + languageName: node + linkType: hard + "istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0": version: 3.2.2 resolution: "istanbul-lib-coverage@npm:3.2.2" @@ -8943,22 +8992,22 @@ __metadata: languageName: node linkType: hard -"jackspeak@npm:^2.3.6": - version: 2.3.6 - resolution: "jackspeak@npm:2.3.6" +"jackspeak@npm:^3.1.2": + version: 3.1.2 + resolution: "jackspeak@npm:3.1.2" dependencies: "@isaacs/cliui": ^8.0.2 "@pkgjs/parseargs": ^0.11.0 dependenciesMeta: "@pkgjs/parseargs": optional: true - checksum: 57d43ad11eadc98cdfe7496612f6bbb5255ea69fe51ea431162db302c2a11011642f50cfad57288bd0aea78384a0612b16e131944ad8ecd09d619041c8531b54 + checksum: 134276d5f785c518930701a0dcba1f3b0e9ce3e5b1c3e300898e2ae0bbd9b5195088b77252bf2110768de072c426e9e39f47e13912b0b002da4a3f4ff6e16eac languageName: node linkType: hard "jake@npm:^10.8.5": - version: 10.8.7 - resolution: "jake@npm:10.8.7" + version: 10.9.1 + resolution: "jake@npm:10.9.1" dependencies: async: ^3.2.3 chalk: ^4.0.2 @@ -8966,7 +9015,7 @@ __metadata: minimatch: ^3.1.2 bin: jake: bin/cli.js - checksum: a23fd2273fb13f0d0d845502d02c791fd55ef5c6a2d207df72f72d8e1eac6d2b8ffa6caf660bc8006b3242e0daaa88a3ecc600194d72b5c6016ad56e9cd43553 + checksum: 49659c156b8ad921af377fb782505ae3cc7e7dd8793695b782070d99b4b66d2688b4e3efb32e09252400bfe6e49a7fb393a3a0959e8e1a51dbda95bcacbb9c36 languageName: node linkType: hard @@ -9502,15 +9551,15 @@ __metadata: linkType: hard "joi@npm:^17.11.0": - version: 17.12.3 - resolution: "joi@npm:17.12.3" + version: 17.13.1 + resolution: "joi@npm:17.13.1" dependencies: "@hapi/hoek": ^9.3.0 "@hapi/topo": ^5.1.0 "@sideway/address": ^4.1.5 "@sideway/formula": ^3.0.1 "@sideway/pinpoint": ^2.0.0 - checksum: 6fc74ad7561261a3500fecfcb2cab30928526286a4ee737cad4d41e8556263326561e4146f6c2c9429d0eef27a7d1ba93b919795ade1e766d6dbb797fb4f1b77 + checksum: e755140446a0e0fb679c0f512d20dfe1625691de368abe8069507c9bccae5216b5bb56b5a83100a600808b1753ab44fdfdc9933026268417f84b6e0832a9604e languageName: node linkType: hard @@ -9678,13 +9727,6 @@ __metadata: languageName: node linkType: hard -"jsonc-parser@npm:^3.2.0": - version: 3.2.1 - resolution: "jsonc-parser@npm:3.2.1" - checksum: 656d9027b91de98d8ab91b3aa0d0a4cab7dc798a6830845ca664f3e76c82d46b973675bbe9b500fae1de37fd3e81aceacbaa2a57884bf2f8f29192150d2d1ef7 - languageName: node - linkType: hard - "jsonfile@npm:^6.0.1": version: 6.1.0 resolution: "jsonfile@npm:6.1.0" @@ -9993,9 +10035,9 @@ __metadata: linkType: hard "lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0": - version: 10.2.0 - resolution: "lru-cache@npm:10.2.0" - checksum: eee7ddda4a7475deac51ac81d7dd78709095c6fa46e8350dc2d22462559a1faa3b81ed931d5464b13d48cbd7e08b46100b6f768c76833912bc444b99c37e25db + version: 10.2.2 + resolution: "lru-cache@npm:10.2.2" + checksum: 98e8fc93691c546f719a76103ef2bee5a3ac823955c755a47641ec41f8c7fafa1baeaba466937cc1cbfa9cfd47e03536d10e2db3158a64ad91ff3a58a32c893e languageName: node linkType: hard @@ -10008,15 +10050,6 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:^6.0.0": - version: 6.0.0 - resolution: "lru-cache@npm:6.0.0" - dependencies: - yallist: ^4.0.0 - checksum: f97f499f898f23e4585742138a22f22526254fdba6d75d41a1c2526b3b6cc5747ef59c5612ba7375f42aca4f8461950e925ba08c991ead0651b4918b7c978297 - languageName: node - linkType: hard - "lru-cache@npm:^7.14.1": version: 7.18.3 resolution: "lru-cache@npm:7.18.3" @@ -10080,11 +10113,11 @@ __metadata: linkType: hard "magic-string@npm:^0.30.1": - version: 0.30.9 - resolution: "magic-string@npm:0.30.9" + version: 0.30.10 + resolution: "magic-string@npm:0.30.10" dependencies: "@jridgewell/sourcemap-codec": ^1.4.15 - checksum: a97b9a706b39e9569781dcb662b15ab085ca3af8b916cd69d8485e8565108917c17e4eb03b6b1013389387d827bb3025711ebeafe237f742bc95a90708416147 + checksum: 456fd47c39b296c47dff967e1965121ace35417eab7f45a99e681e725b8661b48e1573c366ee67a27715025b3740773c46b088f115421c7365ea4ea6fa10d399 languageName: node linkType: hard @@ -10098,8 +10131,8 @@ __metadata: linkType: hard "make-fetch-happen@npm:^13.0.0": - version: 13.0.0 - resolution: "make-fetch-happen@npm:13.0.0" + version: 13.0.1 + resolution: "make-fetch-happen@npm:13.0.1" dependencies: "@npmcli/agent": ^2.0.0 cacache: ^18.0.0 @@ -10110,9 +10143,10 @@ __metadata: minipass-flush: ^1.0.5 minipass-pipeline: ^1.2.4 negotiator: ^0.6.3 + proc-log: ^4.2.0 promise-retry: ^2.0.1 ssri: ^10.0.0 - checksum: 7c7a6d381ce919dd83af398b66459a10e2fe8f4504f340d1d090d3fa3d1b0c93750220e1d898114c64467223504bd258612ba83efbc16f31b075cd56de24b4af + checksum: 5c9fad695579b79488fa100da05777213dd9365222f85e4757630f8dd2a21a79ddd3206c78cfd6f9b37346819681782b67900ac847a57cf04190f52dda5343fd languageName: node linkType: hard @@ -10185,12 +10219,12 @@ __metadata: linkType: hard "micromatch@npm:^4.0.4, micromatch@npm:^4.0.5": - version: 4.0.5 - resolution: "micromatch@npm:4.0.5" + version: 4.0.7 + resolution: "micromatch@npm:4.0.7" dependencies: - braces: ^3.0.2 + braces: ^3.0.3 picomatch: ^2.3.1 - checksum: 02a17b671c06e8fefeeb6ef996119c1e597c942e632a21ef589154f23898c9c6a9858526246abb14f8bca6e77734aa9dcf65476fca47cedfb80d9577d52843fc + checksum: 3cde047d70ad80cf60c787b77198d680db3b8c25b23feb01de5e2652205d9c19f43bd81882f69a0fd1f0cde6a7a122d774998aad3271ddb1b8accf8a0f480cf7 languageName: node linkType: hard @@ -10293,7 +10327,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^9.0.1": +"minimatch@npm:^9.0.4": version: 9.0.4 resolution: "minimatch@npm:9.0.4" dependencies: @@ -10319,8 +10353,8 @@ __metadata: linkType: hard "minipass-fetch@npm:^3.0.0": - version: 3.0.4 - resolution: "minipass-fetch@npm:3.0.4" + version: 3.0.5 + resolution: "minipass-fetch@npm:3.0.5" dependencies: encoding: ^0.1.13 minipass: ^7.0.3 @@ -10329,7 +10363,7 @@ __metadata: dependenciesMeta: encoding: optional: true - checksum: af7aad15d5c128ab1ebe52e043bdf7d62c3c6f0cecb9285b40d7b395e1375b45dcdfd40e63e93d26a0e8249c9efd5c325c65575aceee192883970ff8cb11364a + checksum: 8047d273236157aab27ab7cd8eab7ea79e6ecd63e8f80c3366ec076cb9a0fed550a6935bab51764369027c414647fd8256c2a20c5445fb250c483de43350de83 languageName: node linkType: hard @@ -10376,10 +10410,10 @@ __metadata: languageName: node linkType: hard -"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.0.4": - version: 7.0.4 - resolution: "minipass@npm:7.0.4" - checksum: 87585e258b9488caf2e7acea242fd7856bbe9a2c84a7807643513a338d66f368c7d518200ad7b70a508664d408aa000517647b2930c259a8b1f9f0984f344a21 +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.1.2": + version: 7.1.2 + resolution: "minipass@npm:7.1.2" + checksum: 2bfd325b95c555f2b4d2814d49325691c7bee937d753814861b0b49d5edcda55cbbf22b6b6a60bb91eddac8668771f03c5ff647dcd9d0f798e9548b9cdc46ee3 languageName: node linkType: hard @@ -10426,15 +10460,15 @@ __metadata: languageName: node linkType: hard -"mlly@npm:^1.2.0, mlly@npm:^1.6.1": - version: 1.6.1 - resolution: "mlly@npm:1.6.1" +"mlly@npm:^1.6.1, mlly@npm:^1.7.0": + version: 1.7.0 + resolution: "mlly@npm:1.7.0" dependencies: acorn: ^8.11.3 pathe: ^1.1.2 - pkg-types: ^1.0.3 - ufo: ^1.3.2 - checksum: c40a547dba8f6b2a5a840899d49f4c9550c233d47fd7bd75f4ac27f388047bad655ad86684329809c1640df4373b45bec77304f73530ca4354bc1199700e2a46 + pkg-types: ^1.1.0 + ufo: ^1.5.3 + checksum: c1548f4dd0e31ce15d293ebb7c61778bd28c405573dc43dcf799eaeb8f6b776d7dadd95e957d6631b9cc4bb963cd01079d58b7e2290ed540aa460e061bdbd1fa languageName: node linkType: hard @@ -10583,7 +10617,7 @@ __metadata: languageName: node linkType: hard -"nanoid@npm:^3.3.6, nanoid@npm:^3.3.7": +"nanoid@npm:^3.3.7": version: 3.3.7 resolution: "nanoid@npm:3.3.7" bin: @@ -10690,13 +10724,13 @@ __metadata: linkType: hard "node-gyp-build@npm:^4.2.0, node-gyp-build@npm:^4.2.2": - version: 4.8.0 - resolution: "node-gyp-build@npm:4.8.0" + version: 4.8.1 + resolution: "node-gyp-build@npm:4.8.1" bin: node-gyp-build: bin.js node-gyp-build-optional: optional.js node-gyp-build-test: build-test.js - checksum: b82a56f866034b559dd3ed1ad04f55b04ae381b22ec2affe74b488d1582473ca6e7f85fccf52da085812d3de2b0bf23109e752a57709ac7b9963951c710fea40 + checksum: fe6e95da6f4608c1a98655f6bf2fe4e8dd9c877cd13256056a8acaf585cc7f98718823fe9366be11b78c2f332d5a184b00cf07a4af96c9d8fea45f640c019f98 languageName: node linkType: hard @@ -10753,13 +10787,13 @@ __metadata: linkType: hard "nopt@npm:^7.0.0": - version: 7.2.0 - resolution: "nopt@npm:7.2.0" + version: 7.2.1 + resolution: "nopt@npm:7.2.1" dependencies: abbrev: ^2.0.0 bin: nopt: bin/nopt.js - checksum: a9c0f57fb8cb9cc82ae47192ca2b7ef00e199b9480eed202482c962d61b59a7fbe7541920b2a5839a97b42ee39e288c0aed770e38057a608d7f579389dfde410 + checksum: 6fa729cc77ce4162cfad8abbc9ba31d4a0ff6850c3af61d59b505653bef4781ec059f8890ecfe93ee8aa0c511093369cca88bfc998101616a2904e715bbbb7c9 languageName: node linkType: hard @@ -10789,9 +10823,9 @@ __metadata: linkType: hard "nwsapi@npm:^2.2.2": - version: 2.2.7 - resolution: "nwsapi@npm:2.2.7" - checksum: cab25f7983acec7e23490fec3ef7be608041b460504229770e3bfcf9977c41d6fe58f518994d3bd9aa3a101f501089a3d4a63536f4ff8ae4b8c4ca23bdbfda4e + version: 2.2.10 + resolution: "nwsapi@npm:2.2.10" + checksum: 5f1d361b38c47ab49727d5ea8bbfeb5867ae6de0e538eec9a8b77c88005ddde36d8b930e0730b50ee5e5dda949112c0f9ffed1bf15e7e1b3cd9cfa319f5a9b6f languageName: node linkType: hard @@ -11120,13 +11154,13 @@ __metadata: languageName: node linkType: hard -"path-scurry@npm:^1.10.2": - version: 1.10.2 - resolution: "path-scurry@npm:1.10.2" +"path-scurry@npm:^1.11.1": + version: 1.11.1 + resolution: "path-scurry@npm:1.11.1" dependencies: lru-cache: ^10.2.0 minipass: ^5.0.0 || ^6.0.2 || ^7.0.0 - checksum: 6739b4290f7d1a949c61c758b481c07ac7d1a841964c68cf5e1fa153d7e18cbde4872b37aadf9c5173c800d627f219c47945859159de36c977dd82419997b9b8 + checksum: 890d5abcd593a7912dcce7cf7c6bf7a0b5648e3dee6caf0712c126ca0a65c7f3d7b9d769072a4d1baf370f61ce493ab5b038d59988688e0c5f3f646ee3c69023 languageName: node linkType: hard @@ -11137,7 +11171,7 @@ __metadata: languageName: node linkType: hard -"pathe@npm:^1.1.0, pathe@npm:^1.1.1, pathe@npm:^1.1.2": +"pathe@npm:^1.1.1, pathe@npm:^1.1.2": version: 1.1.2 resolution: "pathe@npm:1.1.2" checksum: ec5f778d9790e7b9ffc3e4c1df39a5bb1ce94657a4e3ad830c1276491ca9d79f189f47609884671db173400256b005f4955f7952f52a2aeb5834ad5fb4faf134 @@ -11171,10 +11205,10 @@ __metadata: languageName: node linkType: hard -"picocolors@npm:^1.0.0": - version: 1.0.0 - resolution: "picocolors@npm:1.0.0" - checksum: a2e8092dd86c8396bdba9f2b5481032848525b3dc295ce9b57896f931e63fc16f79805144321f72976383fc249584672a75cc18d6777c6b757603f372f745981 +"picocolors@npm:^1.0.0, picocolors@npm:^1.0.1": + version: 1.0.1 + resolution: "picocolors@npm:1.0.1" + checksum: fa68166d1f56009fc02a34cdfd112b0dd3cf1ef57667ac57281f714065558c01828cdf4f18600ad6851cbe0093952ed0660b1e0156bddf2184b6aaf5817553a5 languageName: node linkType: hard @@ -11253,14 +11287,14 @@ __metadata: languageName: node linkType: hard -"pkg-types@npm:^1.0.3": - version: 1.0.3 - resolution: "pkg-types@npm:1.0.3" +"pkg-types@npm:^1.1.0": + version: 1.1.1 + resolution: "pkg-types@npm:1.1.1" dependencies: - jsonc-parser: ^3.2.0 - mlly: ^1.2.0 - pathe: ^1.1.0 - checksum: 4b305c834b912ddcc8a0fe77530c0b0321fe340396f84cbb87aecdbc126606f47f2178f23b8639e71a4870f9631c7217aef52ffed0ae17ea2dbbe7e43d116a6e + confbox: ^0.1.7 + mlly: ^1.7.0 + pathe: ^1.1.2 + checksum: 78ee49eea8c03802ffbdc79dfb6a741f905a4053453280cd2f1149850523fdaf46d39ecb88c2c2f757cceb9883f234bb0e56371084b5895632bdb00ef0f7298f languageName: node linkType: hard @@ -11333,18 +11367,7 @@ __metadata: languageName: node linkType: hard -"postcss@npm:8.4.31": - version: 8.4.31 - resolution: "postcss@npm:8.4.31" - dependencies: - nanoid: ^3.3.6 - picocolors: ^1.0.0 - source-map-js: ^1.0.2 - checksum: 1d8611341b073143ad90486fcdfeab49edd243377b1f51834dc4f6d028e82ce5190e4f11bb2633276864503654fb7cab28e67abdc0fbf9d1f88cad4a0ff0beea - languageName: node - linkType: hard - -"postcss@npm:^8.1.7, postcss@npm:^8.4.23, postcss@npm:^8.4.38": +"postcss@npm:8.4.38, postcss@npm:^8.1.7, postcss@npm:^8.4.23, postcss@npm:^8.4.38": version: 8.4.38 resolution: "postcss@npm:8.4.38" dependencies: @@ -11356,9 +11379,9 @@ __metadata: linkType: hard "preact@npm:^10.12.0, preact@npm:^10.16.0": - version: 10.20.2 - resolution: "preact@npm:10.20.2" - checksum: 497c755065cdaf9d687e38c1cfaf935e20e98cc95a4b8c977a538dc74d41133a13ebed26d34001d11fa08b7d6811de28add74e94a3404bf35b222aa5e966fd1b + version: 10.22.0 + resolution: "preact@npm:10.22.0" + checksum: 1b7493abec35d5042094d652e5cb980de00a0ef39e130b2f20485214d273ef0cebafa2000aa9fa4ef9dad952bd4e746ad3714f42206f34b817fd3712d0d70bcd languageName: node linkType: hard @@ -11452,6 +11475,13 @@ __metadata: languageName: node linkType: hard +"proc-log@npm:^4.2.0": + version: 4.2.0 + resolution: "proc-log@npm:4.2.0" + checksum: 98f6cd012d54b5334144c5255ecb941ee171744f45fca8b43b58ae5a0c1af07352475f481cadd9848e7f0250376ee584f6aa0951a856ff8f021bdfbff4eb33fc + languageName: node + linkType: hard + "process-nextick-args@npm:~2.0.0": version: 2.0.1 resolution: "process-nextick-args@npm:2.0.1" @@ -11718,15 +11748,15 @@ __metadata: languageName: node linkType: hard -"r1csfile@npm:0.0.47": - version: 0.0.47 - resolution: "r1csfile@npm:0.0.47" +"r1csfile@npm:0.0.48": + version: 0.0.48 + resolution: "r1csfile@npm:0.0.48" dependencies: "@iden3/bigarray": 0.0.2 - "@iden3/binfileutils": 0.0.11 + "@iden3/binfileutils": 0.0.12 fastfile: 0.0.20 - ffjavascript: 0.2.60 - checksum: edeb325b83851a71cbca2e5de56eb622ee5347ecae921b526a5fc484c4825b6b30c73b6fde40e9bc5112b9d21e046af885bf212ed9cee2efbc6de93b8454ec06 + ffjavascript: 0.3.0 + checksum: 8929285ece5d0e8e560572e3a202e84165c5de3855cd04f221fec474b289c8bf9f3d0f734fc7303482fdc75f650e09ca0633bf5769c3367f642df93e83dbb90e languageName: node linkType: hard @@ -11798,16 +11828,16 @@ __metadata: linkType: hard "react-is@npm:^18.0.0, react-is@npm:^18.2.0": - version: 18.2.0 - resolution: "react-is@npm:18.2.0" - checksum: e72d0ba81b5922759e4aff17e0252bd29988f9642ed817f56b25a3e217e13eea8a7f2322af99a06edb779da12d5d636e9fda473d620df9a3da0df2a74141d53e + version: 18.3.1 + resolution: "react-is@npm:18.3.1" + checksum: e20fe84c86ff172fc8d898251b7cc2c43645d108bf96d0b8edf39b98f9a2cae97b40520ee7ed8ee0085ccc94736c4886294456033304151c3f94978cec03df21 languageName: node linkType: hard -"react-refresh@npm:^0.14.0": - version: 0.14.0 - resolution: "react-refresh@npm:0.14.0" - checksum: dc69fa8c993df512f42dd0f1b604978ae89bd747c0ed5ec595c0cc50d535fb2696619ccd98ae28775cc01d0a7c146a532f0f7fb81dc22e1977c242a4912312f4 +"react-refresh@npm:^0.14.2": + version: 0.14.2 + resolution: "react-refresh@npm:0.14.2" + checksum: d80db4bd40a36dab79010dc8aa317a5b931f960c0d83c4f3b81f0552cbcf7f29e115b84bb7908ec6a1eb67720fff7023084eff73ece8a7ddc694882478464382 languageName: node linkType: hard @@ -11847,26 +11877,26 @@ __metadata: linkType: hard "react-router-dom@npm:^6.2.2": - version: 6.22.3 - resolution: "react-router-dom@npm:6.22.3" + version: 6.23.1 + resolution: "react-router-dom@npm:6.23.1" dependencies: - "@remix-run/router": 1.15.3 - react-router: 6.22.3 + "@remix-run/router": 1.16.1 + react-router: 6.23.1 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 5ae3759a70e4123cd4b8efbb82199a69f5d8c4a7a434d186d2ec7b532b6ef3302df2a98e5c27db977d3f0d725c7a279010a16ae77a3bf6257f1fee96123d8b77 + checksum: e87b5cf85019496f499286d466a4ad9cf5efe729f1420502fc5d16093d525462803253538418ea5b0da7ab5671a16caefee67848b373008e567629c2d667dc44 languageName: node linkType: hard -"react-router@npm:6.22.3": - version: 6.22.3 - resolution: "react-router@npm:6.22.3" +"react-router@npm:6.23.1": + version: 6.23.1 + resolution: "react-router@npm:6.23.1" dependencies: - "@remix-run/router": 1.15.3 + "@remix-run/router": 1.16.1 peerDependencies: react: ">=16.8" - checksum: 1f7d9a5a849761ff69ef8f3d3131b4c1c25d18b76317ba5ad6f0d9421192c0b8b71ab0cc818c57aad7b81ada725559e513307d0ab43296a460262f0358602672 + checksum: d5d43ccb908a95d2b7345f2a13315c38bf094e25bcf97d5a6c3f353b1ea88602de15726c3570cd7f07c53b19a3519af2b6739bf6929ec355012795611d739cff languageName: node linkType: hard @@ -12256,25 +12286,25 @@ __metadata: linkType: hard "rollup@npm:^4.13.0": - version: 4.14.3 - resolution: "rollup@npm:4.14.3" - dependencies: - "@rollup/rollup-android-arm-eabi": 4.14.3 - "@rollup/rollup-android-arm64": 4.14.3 - "@rollup/rollup-darwin-arm64": 4.14.3 - "@rollup/rollup-darwin-x64": 4.14.3 - "@rollup/rollup-linux-arm-gnueabihf": 4.14.3 - "@rollup/rollup-linux-arm-musleabihf": 4.14.3 - "@rollup/rollup-linux-arm64-gnu": 4.14.3 - "@rollup/rollup-linux-arm64-musl": 4.14.3 - "@rollup/rollup-linux-powerpc64le-gnu": 4.14.3 - "@rollup/rollup-linux-riscv64-gnu": 4.14.3 - "@rollup/rollup-linux-s390x-gnu": 4.14.3 - "@rollup/rollup-linux-x64-gnu": 4.14.3 - "@rollup/rollup-linux-x64-musl": 4.14.3 - "@rollup/rollup-win32-arm64-msvc": 4.14.3 - "@rollup/rollup-win32-ia32-msvc": 4.14.3 - "@rollup/rollup-win32-x64-msvc": 4.14.3 + version: 4.18.0 + resolution: "rollup@npm:4.18.0" + dependencies: + "@rollup/rollup-android-arm-eabi": 4.18.0 + "@rollup/rollup-android-arm64": 4.18.0 + "@rollup/rollup-darwin-arm64": 4.18.0 + "@rollup/rollup-darwin-x64": 4.18.0 + "@rollup/rollup-linux-arm-gnueabihf": 4.18.0 + "@rollup/rollup-linux-arm-musleabihf": 4.18.0 + "@rollup/rollup-linux-arm64-gnu": 4.18.0 + "@rollup/rollup-linux-arm64-musl": 4.18.0 + "@rollup/rollup-linux-powerpc64le-gnu": 4.18.0 + "@rollup/rollup-linux-riscv64-gnu": 4.18.0 + "@rollup/rollup-linux-s390x-gnu": 4.18.0 + "@rollup/rollup-linux-x64-gnu": 4.18.0 + "@rollup/rollup-linux-x64-musl": 4.18.0 + "@rollup/rollup-win32-arm64-msvc": 4.18.0 + "@rollup/rollup-win32-ia32-msvc": 4.18.0 + "@rollup/rollup-win32-x64-msvc": 4.18.0 "@types/estree": 1.0.5 fsevents: ~2.3.2 dependenciesMeta: @@ -12314,7 +12344,7 @@ __metadata: optional: true bin: rollup: dist/bin/rollup - checksum: f5077037e8514e330db1451a92bf6d9d15b8634698b2e60f56d8d7f30df11cdacfcd1b350a1598ed6516383b5ed2bf3e5a0685e72f81bb2fdb4e630491d09b67 + checksum: 54cde921e763017ce952ba76ec77d58dd9c01e3536c3be628d4af8c59d9b2f0e1e6a11b30fda44845c7b74098646cd972feb3bcd2f4a35d3293366f2eeb0a39e languageName: node linkType: hard @@ -12424,13 +12454,13 @@ __metadata: linkType: hard "selenium-webdriver@npm:^4.16.0": - version: 4.19.0 - resolution: "selenium-webdriver@npm:4.19.0" + version: 4.21.0 + resolution: "selenium-webdriver@npm:4.21.0" dependencies: jszip: ^3.10.1 tmp: ^0.2.3 ws: ">=8.16.0" - checksum: 1e4bba2923bc8277c7f63e6af869db38291074dd290124a4303f8de4f5e77f1e8e3346230feff1d0604b8a2e46b1ab6c56b5bd38feb2074ca8fd6362470b5901 + checksum: 9d6bd5337580d7f47cafc60df719c6fca5e8bba0ce1e1920da5ba06d8372533300e4b955cd50f1e35e8775d8e74c744a2c11e71f5920dec8362fbcb8910ad202 languageName: node linkType: hard @@ -12444,13 +12474,11 @@ __metadata: linkType: hard "semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.3, semver@npm:^7.5.4": - version: 7.6.0 - resolution: "semver@npm:7.6.0" - dependencies: - lru-cache: ^6.0.0 + version: 7.6.2 + resolution: "semver@npm:7.6.2" bin: semver: bin/semver.js - checksum: 7427f05b70786c696640edc29fdd4bc33b2acf3bbe1740b955029044f80575fc664e1a512e4113c3af21e767154a94b4aa214bf6cd6e42a1f6dba5914e0b208c + checksum: 40f6a95101e8d854357a644da1b8dd9d93ce786d5c6a77227bc69dbb17bea83d0d1d1d7c4cd5920a6df909f48e8bd8a5909869535007f90278289f2451d0292d languageName: node linkType: hard @@ -12666,22 +12694,22 @@ __metadata: linkType: hard "snarkjs@npm:^0.7.0": - version: 0.7.3 - resolution: "snarkjs@npm:0.7.3" + version: 0.7.4 + resolution: "snarkjs@npm:0.7.4" dependencies: - "@iden3/binfileutils": 0.0.11 + "@iden3/binfileutils": 0.0.12 bfj: ^7.0.2 blake2b-wasm: ^2.4.0 - circom_runtime: 0.1.24 + circom_runtime: 0.1.25 ejs: ^3.1.6 fastfile: 0.0.20 - ffjavascript: 0.2.63 + ffjavascript: 0.3.0 js-sha3: ^0.8.0 logplease: ^1.2.15 - r1csfile: 0.0.47 + r1csfile: 0.0.48 bin: snarkjs: build/cli.cjs - checksum: 6a8818c0f23b1c213b3296b4a253ceb2f26accfd0259274230550dfce010e4c6d1f5ecaaea1d84ff9b9da54c42dc94869f820838af4e33ffd4e09d95e986d9ee + checksum: 239b12de4f837deb32ba7ca3b02ddea71d25152242016f8d789e98fc984ecf7588a2f396174e603894d3cdfa76cf0ce7f89afdb15a27115a2a7932285a7e77bd languageName: node linkType: hard @@ -12715,7 +12743,7 @@ __metadata: languageName: node linkType: hard -"source-map-js@npm:^1.0.2, source-map-js@npm:^1.2.0": +"source-map-js@npm:^1.2.0": version: 1.2.0 resolution: "source-map-js@npm:1.2.0" checksum: 791a43306d9223792e84293b00458bf102a8946e7188f3db0e4e22d8d530b5f80a4ce468eb5ec0bf585443ad55ebbd630bf379c98db0b1f317fd902500217f97 @@ -12793,11 +12821,11 @@ __metadata: linkType: hard "ssri@npm:^10.0.0": - version: 10.0.5 - resolution: "ssri@npm:10.0.5" + version: 10.0.6 + resolution: "ssri@npm:10.0.6" dependencies: minipass: ^7.0.3 - checksum: 0a31b65f21872dea1ed3f7c200d7bc1c1b91c15e419deca14f282508ba917cbb342c08a6814c7f68ca4ca4116dd1a85da2bbf39227480e50125a1ceffeecb750 + checksum: 4603d53a05bcd44188747d38f1cc43833b9951b5a1ee43ba50535bdfc5fe4a0897472dbe69837570a5417c3c073377ef4f8c1a272683b401857f72738ee57299 languageName: node linkType: hard @@ -13050,29 +13078,29 @@ __metadata: linkType: hard "styled-components@npm:^6.1.8": - version: 6.1.8 - resolution: "styled-components@npm:6.1.8" + version: 6.1.11 + resolution: "styled-components@npm:6.1.11" dependencies: - "@emotion/is-prop-valid": 1.2.1 - "@emotion/unitless": 0.8.0 - "@types/stylis": 4.2.0 + "@emotion/is-prop-valid": 1.2.2 + "@emotion/unitless": 0.8.1 + "@types/stylis": 4.2.5 css-to-react-native: 3.2.0 - csstype: 3.1.2 - postcss: 8.4.31 + csstype: 3.1.3 + postcss: 8.4.38 shallowequal: 1.1.0 - stylis: 4.3.1 - tslib: 2.5.0 + stylis: 4.3.2 + tslib: 2.6.2 peerDependencies: react: ">= 16.8.0" react-dom: ">= 16.8.0" - checksum: 367858097ca57911cc310ddf95d16fed162fbb1d2f187366b33ce5e6e22c324f9bcc7206686624a3edd15e3e9605875c8c041ac5ffb430bbee98f1ad0be71604 + checksum: 18fb43fe49b61c7b5d3b6c6bd6fd315c7f83310916b52e7b788286064f6586d3211d40528d9413b4f812c6ff806ae25976f7e400f9b125a8f7ea653b39f155c8 languageName: node linkType: hard -"stylis@npm:4.3.1, stylis@npm:^4.3.0": - version: 4.3.1 - resolution: "stylis@npm:4.3.1" - checksum: d365f1b008677b2147e8391e9cf20094a4202a5f9789562e7d9d0a3bd6f0b3067d39e8fd17cce5323903a56f6c45388e3d839e9c0bb5a738c91726992b14966d +"stylis@npm:4.3.2, stylis@npm:^4.3.0": + version: 4.3.2 + resolution: "stylis@npm:4.3.2" + checksum: 0faa8a97ff38369f47354376cd9f0def9bf12846da54c28c5987f64aaf67dcb6f00dce88a8632013bfb823b2c4d1d62a44f4ac20363a3505a7ab4e21b70179fc languageName: node linkType: hard @@ -13292,14 +13320,14 @@ __metadata: linkType: hard "tough-cookie@npm:^4.1.2": - version: 4.1.3 - resolution: "tough-cookie@npm:4.1.3" + version: 4.1.4 + resolution: "tough-cookie@npm:4.1.4" dependencies: psl: ^1.1.33 punycode: ^2.1.1 universalify: ^0.2.0 url-parse: ^1.5.3 - checksum: c9226afff36492a52118432611af083d1d8493a53ff41ec4ea48e5b583aec744b989e4280bcf476c910ec1525a89a4a0f1cae81c08b18fb2ec3a9b3a72b91dcc + checksum: 5815059f014c31179a303c673f753f7899a6fce94ac93712c88ea5f3c26e0c042b5f0c7a599a00f8e0feeca4615dba75c3dffc54f3c1a489978aa8205e09307c languageName: node linkType: hard @@ -13382,14 +13410,7 @@ __metadata: languageName: node linkType: hard -"tslib@npm:2.5.0": - version: 2.5.0 - resolution: "tslib@npm:2.5.0" - checksum: ae3ed5f9ce29932d049908ebfdf21b3a003a85653a9a140d614da6b767a93ef94f460e52c3d787f0e4f383546981713f165037dc2274df212ea9f8a4541004e1 - languageName: node - linkType: hard - -"tslib@npm:^2.0.0, tslib@npm:^2.0.1, tslib@npm:^2.1.0, tslib@npm:^2.3.1": +"tslib@npm:2.6.2, tslib@npm:^2.0.0, tslib@npm:^2.0.1, tslib@npm:^2.1.0, tslib@npm:^2.3.1": version: 2.6.2 resolution: "tslib@npm:2.6.2" checksum: 329ea56123005922f39642318e3d1f0f8265d1e7fcb92c633e0809521da75eeaca28d2cf96d7248229deb40e5c19adf408259f4b9640afd20d13aecc1430f3ad @@ -13506,7 +13527,7 @@ __metadata: languageName: node linkType: hard -"ufo@npm:^1.3.2, ufo@npm:^1.4.0, ufo@npm:^1.5.3": +"ufo@npm:^1.4.0, ufo@npm:^1.5.3": version: 1.5.3 resolution: "ufo@npm:1.5.3" checksum: 2f54fa543b2e689cc4ab341fe2194937afe37c5ee43cd782e6ecc184e36859e84d4197a43ae4cd6e9a56f793ca7c5b950dfff3f16fadaeef9b6b88b05c88c8ef @@ -13716,16 +13737,16 @@ __metadata: linkType: hard "update-browserslist-db@npm:^1.0.13": - version: 1.0.13 - resolution: "update-browserslist-db@npm:1.0.13" + version: 1.0.16 + resolution: "update-browserslist-db@npm:1.0.16" dependencies: - escalade: ^3.1.1 - picocolors: ^1.0.0 + escalade: ^3.1.2 + picocolors: ^1.0.1 peerDependencies: browserslist: ">= 4.21.0" bin: update-browserslist-db: cli.js - checksum: 1e47d80182ab6e4ad35396ad8b61008ae2a1330221175d0abd37689658bdb61af9b705bfc41057fd16682474d79944fb2d86767c5ed5ae34b6276b9bed353322 + checksum: 51b1f7189c9ea5925c80154b0a6fd3ec36106d07858d8f69826427d8edb4735d1801512c69eade38ba0814d7407d11f400d74440bbf3da0309f3d788017f35b2 languageName: node linkType: hard @@ -13784,7 +13805,7 @@ __metadata: languageName: node linkType: hard -"use-sync-external-store@npm:1.2.0, use-sync-external-store@npm:^1.2.0": +"use-sync-external-store@npm:1.2.0": version: 1.2.0 resolution: "use-sync-external-store@npm:1.2.0" peerDependencies: @@ -13793,6 +13814,15 @@ __metadata: languageName: node linkType: hard +"use-sync-external-store@npm:^1.2.0": + version: 1.2.2 + resolution: "use-sync-external-store@npm:1.2.2" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: fe07c071c4da3645f112c38c0e57beb479a8838616ff4e92598256ecce527f2888c08febc7f9b2f0ce2f0e18540ba3cde41eb2035e4fafcb4f52955037098a81 + languageName: node + linkType: hard + "util-deprecate@npm:^1.0.1, util-deprecate@npm:~1.0.1": version: 1.0.2 resolution: "util-deprecate@npm:1.0.2" @@ -13889,8 +13919,8 @@ __metadata: linkType: hard "viem@npm:^2.2.0": - version: 2.9.19 - resolution: "viem@npm:2.9.19" + version: 2.12.1 + resolution: "viem@npm:2.12.1" dependencies: "@adraffy/ens-normalize": 1.10.0 "@noble/curves": 1.2.0 @@ -13898,14 +13928,14 @@ __metadata: "@scure/bip32": 1.3.2 "@scure/bip39": 1.2.1 abitype: 1.0.0 - isows: 1.0.3 + isows: 1.0.4 ws: 8.13.0 peerDependencies: typescript: ">=5.0.4" peerDependenciesMeta: typescript: optional: true - checksum: 9f649ab58720f58a15c35e920e2828da513b8bb4005f4294a8e76bdc1dbe4328f74cda47397e9c7b96d5c720ff9c5da364a38fe697ecfd8e17eba2eea5066007 + checksum: b0083f992a564eb13b88816b1c870d8f31cfc7a54e4b8b4a20db918c62a54f339d451f3ec009c3c9ddb338714771f8ea7334c11b9399fac1ae94439889ee7966 languageName: node linkType: hard @@ -13950,8 +13980,8 @@ __metadata: linkType: hard "vite@npm:^5.0.8": - version: 5.2.9 - resolution: "vite@npm:5.2.9" + version: 5.2.11 + resolution: "vite@npm:5.2.11" dependencies: esbuild: ^0.20.1 fsevents: ~2.3.3 @@ -13985,7 +14015,7 @@ __metadata: optional: true bin: vite: bin/vite.js - checksum: 7a97f9547af8550c55bc2529cc6827c1ef0a043a09e9686cf20b615e8d59305cbe917954e806c5fdad6c33bfb883c1ce51325a9c474b5aa5bc13c377a74805fd + checksum: 3f9f976cc6ada93aca56abcc683a140e807725b351abc241a1ec0763ec561a4bf5760e1ad94de4e59505904ddaa88727de66af02f61ecf540c7720045de55d0a languageName: node linkType: hard @@ -14339,7 +14369,7 @@ __metadata: languageName: node linkType: hard -"ws@npm:8.16.0, ws@npm:>=8.16.0, ws@npm:^8.11.0": +"ws@npm:8.16.0": version: 8.16.0 resolution: "ws@npm:8.16.0" peerDependencies: @@ -14369,6 +14399,21 @@ __metadata: languageName: node linkType: hard +"ws@npm:>=8.16.0, ws@npm:^8.11.0": + version: 8.17.0 + resolution: "ws@npm:8.17.0" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ">=5.0.2" + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 147ef9eab0251364e1d2c55338ad0efb15e6913923ccbfdf20f7a8a6cb8f88432bcd7f4d8f66977135bfad35575644f9983201c1a361019594a4e53977bf6d4e + languageName: node + linkType: hard + "ws@npm:^7.5.1": version: 7.5.9 resolution: "ws@npm:7.5.9"