@rhinestone/1auth 0.6.1 → 0.6.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-N4BLW5UR.mjs → chunk-IP2FG4WQ.mjs} +3 -7
- package/dist/chunk-IP2FG4WQ.mjs.map +1 -0
- package/dist/{client-CHCVV9H3.d.mts → client-hZxAAhcl.d.mts} +15 -0
- package/dist/{client-CHCVV9H3.d.ts → client-hZxAAhcl.d.ts} +15 -0
- package/dist/index.d.mts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +249 -82
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +248 -77
- package/dist/index.mjs.map +1 -1
- package/dist/{provider-DzxXGyV8.d.ts → provider-A89sCgGr.d.ts} +1 -1
- package/dist/{provider-B5pLvKo_.d.mts → provider-B9GKBMC5.d.mts} +1 -1
- package/dist/react.d.mts +1 -1
- package/dist/react.d.ts +1 -1
- package/dist/server.js +1 -1
- package/dist/server.js.map +1 -1
- package/dist/server.mjs +1 -1
- package/dist/server.mjs.map +1 -1
- package/dist/wagmi.d.mts +2 -2
- package/dist/wagmi.d.ts +2 -2
- package/dist/wagmi.js +2 -6
- package/dist/wagmi.js.map +1 -1
- package/dist/wagmi.mjs +1 -1
- package/package.json +1 -1
- package/dist/chunk-N4BLW5UR.mjs.map +0 -1
|
@@ -37,7 +37,7 @@ function applyChainFilters(chainIds, options) {
|
|
|
37
37
|
if (!includeTestnets) {
|
|
38
38
|
filtered = filtered.filter((chainId) => !isTestnet(chainId));
|
|
39
39
|
}
|
|
40
|
-
if (allowlist
|
|
40
|
+
if (allowlist) {
|
|
41
41
|
const allowed = new Set(allowlist);
|
|
42
42
|
filtered = filtered.filter((chainId) => allowed.has(chainId));
|
|
43
43
|
}
|
|
@@ -312,11 +312,7 @@ function createOneAuthProvider(options) {
|
|
|
312
312
|
if (typeof value === "number") return Math.trunc(value).toString();
|
|
313
313
|
if (typeof value === "string") {
|
|
314
314
|
if (value.startsWith("0x")) {
|
|
315
|
-
|
|
316
|
-
return BigInt(value).toString();
|
|
317
|
-
} catch {
|
|
318
|
-
return "0";
|
|
319
|
-
}
|
|
315
|
+
return BigInt(value).toString();
|
|
320
316
|
}
|
|
321
317
|
return value;
|
|
322
318
|
}
|
|
@@ -662,4 +658,4 @@ export {
|
|
|
662
658
|
buildTransactionReview,
|
|
663
659
|
createOneAuthProvider
|
|
664
660
|
};
|
|
665
|
-
//# sourceMappingURL=chunk-
|
|
661
|
+
//# sourceMappingURL=chunk-IP2FG4WQ.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/registry.ts","../src/walletClient/utils.ts","../src/provider.ts"],"sourcesContent":["import type { Address, Chain } from \"viem\";\nimport { isAddress } from \"viem\";\nimport * as viemChains from \"viem/chains\";\nimport {\n getAllSupportedChainsAndTokens as getAllSupportedChainsAndTokensRaw,\n getSupportedTokens as getSupportedTokensRaw,\n getTokenAddress,\n getTokenDecimals,\n} from \"@rhinestone/sdk\";\n\nexport type TokenConfig = {\n symbol: string;\n address: Address;\n decimals: number;\n supportsMultichain?: boolean;\n [key: string]: unknown;\n};\n\nexport type ChainFilterOptions = {\n includeTestnets?: boolean;\n chainIds?: number[];\n};\n\nconst env: Record<string, string | undefined> =\n typeof process !== \"undefined\" ? process.env : {};\n\n// Build a chain-ID-to-Chain map from viem, resolving collisions by\n// preferring non-testnet (mainnet) definitions. Viem has duplicate IDs\n// (e.g. zoraTestnet and hyperEvm both use 999) and Map last-write-wins\n// can pick the wrong one.\nconst VIEM_CHAIN_BY_ID = new Map<number, Chain>();\nfor (const value of Object.values(viemChains)) {\n if (typeof value !== \"object\" || value === null || !(\"id\" in value) || !(\"name\" in value)) continue;\n const chain = value as Chain;\n const existing = VIEM_CHAIN_BY_ID.get(chain.id);\n if (!existing || (existing.testnet && !chain.testnet)) {\n VIEM_CHAIN_BY_ID.set(chain.id, chain);\n }\n}\nconst SUPPORTED_CHAIN_IDS = new Set(\n getAllSupportedChainsAndTokensRaw().map((entry) => entry.chainId)\n);\n\nfunction parseBool(value?: string): boolean | undefined {\n if (value === \"true\" || value === \"1\") return true;\n if (value === \"false\" || value === \"0\") return false;\n return undefined;\n}\n\nfunction resolveIncludeTestnets(explicit?: boolean): boolean {\n if (explicit !== undefined) return explicit;\n const envValue =\n parseBool(env.NEXT_PUBLIC_ORCHESTRATOR_USE_TESTNETS) ??\n parseBool(env.ORCHESTRATOR_USE_TESTNETS);\n return envValue ?? false;\n}\n\nfunction applyChainFilters(chainIds: number[], options?: ChainFilterOptions): number[] {\n const includeTestnets = resolveIncludeTestnets(options?.includeTestnets);\n const allowlist = options?.chainIds;\n let filtered = chainIds;\n\n if (!includeTestnets) {\n filtered = filtered.filter((chainId) => !isTestnet(chainId));\n }\n\n if (allowlist) {\n const allowed = new Set(allowlist);\n filtered = filtered.filter((chainId) => allowed.has(chainId));\n }\n\n return filtered;\n}\n\nexport function getSupportedChainIds(options?: ChainFilterOptions): number[] {\n return applyChainFilters(Array.from(SUPPORTED_CHAIN_IDS), options);\n}\n\nexport function getSupportedChains(options?: ChainFilterOptions): Chain[] {\n return getSupportedChainIds(options)\n .map((chainId) => VIEM_CHAIN_BY_ID.get(chainId))\n .filter((chain): chain is Chain => Boolean(chain));\n}\n\nexport function getAllSupportedChainsAndTokens(options?: ChainFilterOptions): Array<{\n chainId: number;\n tokens: TokenConfig[];\n}> {\n const allowed = new Set(getSupportedChainIds(options));\n return getAllSupportedChainsAndTokensRaw()\n .filter((entry) => allowed.has(entry.chainId))\n .map((entry) => ({\n chainId: entry.chainId,\n tokens: entry.tokens as TokenConfig[],\n }));\n}\n\nexport function getChainById(chainId: number): Chain {\n if (!SUPPORTED_CHAIN_IDS.has(chainId)) {\n throw new Error(`Unsupported chain ID: ${chainId}`);\n }\n const chain = VIEM_CHAIN_BY_ID.get(chainId);\n if (!chain) {\n throw new Error(`Unsupported chain ID: ${chainId}`);\n }\n return chain;\n}\n\nexport function getChainName(chainId: number): string {\n try {\n return getChainById(chainId).name;\n } catch {\n return `Chain ${chainId}`;\n }\n}\n\nexport function getChainExplorerUrl(chainId: number): string | undefined {\n try {\n return getChainById(chainId).blockExplorers?.default?.url;\n } catch {\n return undefined;\n }\n}\n\nexport function getChainRpcUrl(chainId: number): string | undefined {\n try {\n const chain = getChainById(chainId);\n return chain.rpcUrls?.default?.http?.[0] || chain.rpcUrls?.public?.http?.[0];\n } catch {\n return undefined;\n }\n}\n\nexport function getSupportedTokens(chainId: number): TokenConfig[] {\n return getSupportedTokensRaw(chainId) as TokenConfig[];\n}\n\nexport function getSupportedTokenSymbols(chainId: number): string[] {\n return getSupportedTokens(chainId).map((token) => token.symbol);\n}\n\nexport function resolveTokenAddress(token: string, chainId: number): Address {\n if (isAddress(token)) {\n return token;\n }\n // Case-insensitive lookup: find canonical symbol from registry, then resolve\n const match = getSupportedTokens(chainId).find(\n (t) => t.symbol.toUpperCase() === token.toUpperCase()\n );\n if (!match) {\n return getTokenAddress(token as never, chainId);\n }\n return match.address;\n}\n\nexport function isTestnet(chainId: number): boolean {\n try {\n return getChainById(chainId).testnet ?? false;\n } catch {\n return false;\n }\n}\n\nexport function getTokenSymbol(tokenAddress: Address, chainId: number): string {\n const token = getSupportedTokens(chainId).find(\n (entry) => entry.address.toLowerCase() === tokenAddress.toLowerCase()\n );\n if (!token) {\n throw new Error(`Unsupported token: ${tokenAddress} on chain ${chainId}`);\n }\n return token.symbol;\n}\n\nexport function isTokenAddressSupported(tokenAddress: Address, chainId: number): boolean {\n try {\n return getSupportedTokens(chainId).some(\n (entry) => entry.address.toLowerCase() === tokenAddress.toLowerCase()\n );\n } catch {\n return false;\n }\n}\n\nexport { getTokenAddress, getTokenDecimals };\n","import { encodeAbiParameters, keccak256 } from 'viem';\nimport type { Hex } from 'viem';\nimport type { WebAuthnSignature } from '../types';\nimport type { TransactionCall } from './types';\n\n/**\n * P-256 curve order (n)\n * Used for signature malleability normalization\n */\nconst P256_N = BigInt(\n '0xFFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551'\n);\nconst P256_N_DIV_2 = P256_N / 2n;\n\n/**\n * WebAuthnAuth struct type for ABI encoding\n */\nconst WEBAUTHN_AUTH_TYPE = {\n type: 'tuple',\n components: [\n { type: 'bytes', name: 'authenticatorData' },\n { type: 'string', name: 'clientDataJSON' },\n { type: 'uint256', name: 'challengeIndex' },\n { type: 'uint256', name: 'typeIndex' },\n { type: 'uint256', name: 'r' },\n { type: 'uint256', name: 's' },\n ],\n} as const;\n\n/**\n * Encode a WebAuthn signature for ERC-1271 verification on-chain\n *\n * @param sig - The WebAuthn signature from the passkey\n * @returns ABI-encoded signature bytes\n */\nexport function encodeWebAuthnSignature(sig: WebAuthnSignature): Hex {\n // Normalize s to prevent signature malleability\n let s = BigInt(sig.s);\n if (s > P256_N_DIV_2) {\n s = P256_N - s;\n }\n\n return encodeAbiParameters([WEBAUTHN_AUTH_TYPE], [\n {\n authenticatorData: sig.authenticatorData as Hex,\n clientDataJSON: sig.clientDataJSON,\n challengeIndex: BigInt(sig.challengeIndex),\n typeIndex: BigInt(sig.typeIndex),\n r: BigInt(sig.r),\n s,\n },\n ]);\n}\n\n/**\n * Hash an array of transaction calls for signing\n *\n * @param calls - Array of transaction calls\n * @returns keccak256 hash of the encoded calls\n */\nexport function hashCalls(calls: TransactionCall[]): Hex {\n const encoded = encodeAbiParameters(\n [\n {\n type: 'tuple[]',\n components: [\n { type: 'address', name: 'to' },\n { type: 'bytes', name: 'data' },\n { type: 'uint256', name: 'value' },\n ],\n },\n ],\n [\n calls.map((c) => ({\n to: c.to,\n data: c.data || '0x',\n value: c.value || 0n,\n })),\n ]\n );\n return keccak256(encoded);\n}\n\n/**\n * Build transaction review display data from calls\n *\n * @param calls - Array of transaction calls\n * @returns TransactionDetails for the signing modal\n */\nexport function buildTransactionReview(calls: TransactionCall[]) {\n return {\n actions: calls.map((call, i) => ({\n type: 'custom' as const,\n label: call.label || `Contract Call ${i + 1}`,\n sublabel: call.sublabel || `To: ${call.to.slice(0, 10)}...${call.to.slice(-8)}`,\n amount: call.value ? `${call.value} wei` : undefined,\n })),\n };\n}\n","import {\n hexToString,\n isHex,\n numberToHex,\n type Address,\n type Hex,\n} from \"viem\";\nimport { OneAuthClient } from \"./client\";\nimport { getSupportedChainIds } from \"./registry\";\nimport type { CloseOnStatus, IntentCall, IntentSigner, IntentTokenRequest } from \"./types\";\nimport { encodeWebAuthnSignature } from \"./walletClient/utils\";\n\ntype ProviderRequest = {\n method: string;\n params?: unknown[] | Record<string, unknown>;\n};\n\ntype Listener = (...args: unknown[]) => void;\n\ntype StoredUser = {\n username?: string;\n address: Address;\n};\n\nexport type OneAuthProvider = {\n request: (args: ProviderRequest) => Promise<unknown>;\n on: (event: string, listener: Listener) => void;\n removeListener: (event: string, listener: Listener) => void;\n disconnect: () => Promise<void>;\n};\n\nexport type OneAuthProviderOptions = {\n client: OneAuthClient;\n chainId: number;\n storageKey?: string;\n /** When to close the dialog and return success. Defaults to \"preconfirmed\" */\n closeOn?: CloseOnStatus;\n waitForHash?: boolean;\n hashTimeoutMs?: number;\n hashIntervalMs?: number;\n signIntent?: IntentSigner;\n};\n\nconst DEFAULT_STORAGE_KEY = \"1auth-user\";\n\nexport function createOneAuthProvider(\n options: OneAuthProviderOptions\n): OneAuthProvider {\n const { client } = options;\n let chainId = options.chainId;\n const storageKey = options.storageKey || DEFAULT_STORAGE_KEY;\n\n const listeners = new Map<string, Set<Listener>>();\n\n const emit = (event: string, ...args: unknown[]) => {\n const set = listeners.get(event);\n if (!set) return;\n for (const listener of set) listener(...args);\n };\n\n const getStoredUser = (): StoredUser | null => {\n if (typeof window === \"undefined\") return null;\n try {\n const raw = localStorage.getItem(storageKey);\n if (!raw) return null;\n const parsed = JSON.parse(raw) as StoredUser;\n if (!parsed?.address) return null;\n return parsed;\n } catch {\n return null;\n }\n };\n\n const setStoredUser = (user: StoredUser) => {\n if (typeof window === \"undefined\") return;\n localStorage.setItem(storageKey, JSON.stringify(user));\n };\n\n const clearStoredUser = () => {\n if (typeof window === \"undefined\") return;\n localStorage.removeItem(storageKey);\n };\n\n const resolveAccountAddress = async (username: string): Promise<Address> => {\n const clientId = client.getClientId();\n const response = await fetch(\n `${client.getProviderUrl()}/api/users/${encodeURIComponent(username)}/account`,\n {\n headers: clientId ? { \"x-client-id\": clientId } : {},\n }\n );\n\n if (!response.ok) {\n const data = await response.json().catch(() => ({}));\n throw new Error(data.error || \"Failed to resolve account address\");\n }\n\n const data = await response.json();\n return data.address as Address;\n };\n\n const connect = async (): Promise<Address[]> => {\n const stored = getStoredUser();\n if (stored) {\n return [stored.address];\n }\n\n // First try the lightweight connect modal\n const connectResult = await client.connectWithModal();\n\n let username: string | undefined;\n let address: Address | undefined;\n\n if (connectResult.success) {\n // Connection successful (user confirmed or auto-connected)\n username = connectResult.user?.username;\n address = connectResult.user?.address;\n } else if (connectResult.action === \"switch\") {\n // User wants to switch account or no previous user - show auth modal\n const authResult = await client.authWithModal();\n if (!authResult.success) {\n throw new Error(authResult.error?.message || \"Authentication failed\");\n }\n username = authResult.user?.username;\n address = authResult.user?.address;\n } else {\n // Connection was cancelled\n throw new Error(connectResult.error?.message || \"Connection cancelled\");\n }\n\n // Use address from result directly, or resolve from username\n if (!address && username) {\n address = await resolveAccountAddress(username);\n }\n if (!address) {\n throw new Error(\"No account address available\");\n }\n\n setStoredUser({ username, address });\n emit(\"accountsChanged\", [address]);\n emit(\"connect\", { chainId: numberToHex(chainId) });\n return [address];\n };\n\n const disconnect = async () => {\n clearStoredUser();\n emit(\"accountsChanged\", []);\n emit(\"disconnect\");\n };\n\n const ensureUser = async (): Promise<StoredUser> => {\n const stored = getStoredUser();\n if (stored) return stored;\n const [address] = await connect();\n if (!address) {\n throw new Error(\"Failed to resolve user session\");\n }\n const user = getStoredUser();\n return user || { address };\n };\n\n const parseChainId = (value: unknown): number | undefined => {\n if (typeof value === \"number\") return value;\n if (typeof value === \"string\") {\n if (value.startsWith(\"0x\")) return Number.parseInt(value, 16);\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : undefined;\n }\n return undefined;\n };\n\n const normalizeValue = (value: unknown): string | undefined => {\n if (value === undefined || value === null) return undefined;\n if (typeof value === \"bigint\") return value.toString();\n if (typeof value === \"number\") return Math.trunc(value).toString();\n if (typeof value === \"string\") {\n if (value.startsWith(\"0x\")) {\n return BigInt(value).toString();\n }\n return value;\n }\n return undefined;\n };\n\n const normalizeCalls = (calls: unknown[]): IntentCall[] => {\n return calls.map((call) => {\n const c = call as Record<string, unknown>;\n return {\n to: c.to as Address,\n data: (c.data as Hex | undefined) || \"0x\",\n value: normalizeValue(c.value) || \"0\",\n label: c.label as string | undefined,\n sublabel: c.sublabel as string | undefined,\n };\n });\n };\n\n const normalizeTokenRequests = (\n requests: unknown\n ): IntentTokenRequest[] | undefined => {\n if (!Array.isArray(requests)) return undefined;\n return requests.map((r) => {\n const req = r as Record<string, unknown>;\n return {\n token: req.token as string,\n amount:\n typeof req.amount === \"bigint\"\n ? req.amount\n : BigInt(String(req.amount || \"0\")),\n };\n });\n };\n\n const decodeMessage = (value: string) => {\n if (!isHex(value)) return value;\n try {\n return hexToString(value as Hex);\n } catch {\n return value;\n }\n };\n\n const signMessage = async (message: string) => {\n const user = await ensureUser();\n if (!user.username && !user.address) {\n throw new Error(\"Username or address required for signing.\");\n }\n const result = await client.signMessage({\n username: user.username,\n accountAddress: user.address,\n message,\n });\n if (!result.success || !result.signature) {\n throw new Error(result.error?.message || \"Signing failed\");\n }\n return encodeWebAuthnSignature(result.signature);\n };\n\n const signTypedData = async (typedData: unknown) => {\n const user = await ensureUser();\n if (!user.username && !user.address) {\n throw new Error(\"Username or address required for signing.\");\n }\n const data =\n typeof typedData === \"string\" ? JSON.parse(typedData) : typedData;\n const result = await client.signTypedData({\n username: user.username,\n accountAddress: user.address,\n domain: (data as any).domain,\n types: (data as any).types,\n primaryType: (data as any).primaryType,\n message: (data as any).message,\n });\n if (!result.success || !result.signature) {\n throw new Error(result.error?.message || \"Signing failed\");\n }\n return encodeWebAuthnSignature(result.signature);\n };\n\n const resolveIntentPayload = async (payload: {\n username?: string;\n accountAddress: Address;\n targetChain: number;\n calls: IntentCall[];\n tokenRequests?: IntentTokenRequest[];\n }) => {\n if (!options.signIntent) {\n return {\n username: payload.username,\n accountAddress: payload.accountAddress,\n targetChain: payload.targetChain,\n calls: payload.calls,\n tokenRequests: payload.tokenRequests,\n };\n }\n if (!payload.username) {\n throw new Error(\"Username required for signed intents. Set a username first.\");\n }\n const signedIntent = await options.signIntent({\n username: payload.username,\n accountAddress: payload.accountAddress,\n targetChain: payload.targetChain,\n calls: payload.calls,\n tokenRequests: payload.tokenRequests,\n });\n return { signedIntent };\n };\n\n const sendIntent = async (payload: {\n username?: string;\n accountAddress: Address;\n targetChain: number;\n calls: IntentCall[];\n tokenRequests?: IntentTokenRequest[];\n sourceChainId?: number;\n }) => {\n // Use explicit closeOn if provided, otherwise default based on waitForHash\n const closeOn = options.closeOn ?? ((options.waitForHash ?? true) ? \"completed\" : \"preconfirmed\");\n const intentPayload = await resolveIntentPayload(payload);\n const result = await client.sendIntent({\n ...intentPayload,\n tokenRequests: payload.tokenRequests,\n sourceChainId: payload.sourceChainId,\n closeOn,\n waitForHash: options.waitForHash ?? true,\n hashTimeoutMs: options.hashTimeoutMs,\n hashIntervalMs: options.hashIntervalMs,\n });\n\n if (!result.success) {\n throw new Error(result.error?.message || \"Transaction failed\");\n }\n\n // Return intentId as callsId for EIP-5792 compatibility\n return result.intentId;\n };\n\n const request = async ({ method, params }: ProviderRequest) => {\n switch (method) {\n case \"eth_chainId\":\n return numberToHex(chainId);\n case \"eth_accounts\": {\n const stored = getStoredUser();\n return stored ? [stored.address] : [];\n }\n case \"eth_requestAccounts\":\n return connect();\n case \"wallet_connect\":\n return connect();\n case \"wallet_disconnect\":\n await disconnect();\n return true;\n case \"wallet_switchEthereumChain\": {\n const [param] = (params as any[]) || [];\n const next = parseChainId(param?.chainId ?? param);\n if (!next) {\n throw new Error(\"Invalid chainId\");\n }\n chainId = next;\n emit(\"chainChanged\", numberToHex(chainId));\n return null;\n }\n case \"personal_sign\": {\n const paramList = Array.isArray(params) ? params : [];\n const first = paramList[0];\n const second = paramList[1];\n const message =\n typeof first === \"string\" && first.startsWith(\"0x\") && second\n ? typeof second === \"string\" && !second.startsWith(\"0x\")\n ? second\n : decodeMessage(first)\n : typeof first === \"string\"\n ? decodeMessage(first)\n : typeof second === \"string\"\n ? decodeMessage(second)\n : \"\";\n if (!message) throw new Error(\"Invalid personal_sign payload\");\n return signMessage(message);\n }\n case \"eth_sign\": {\n const paramList = Array.isArray(params) ? params : [];\n const message = typeof paramList[1] === \"string\" ? paramList[1] : \"\";\n if (!message) throw new Error(\"Invalid eth_sign payload\");\n return signMessage(decodeMessage(message));\n }\n case \"eth_signTypedData\":\n case \"eth_signTypedData_v4\": {\n const paramList = Array.isArray(params) ? params : [];\n const typedData = paramList[1] ?? paramList[0];\n return signTypedData(typedData);\n }\n case \"eth_sendTransaction\": {\n const paramList = Array.isArray(params) ? params : [];\n const tx = (paramList[0] || {}) as Record<string, unknown>;\n const user = await ensureUser();\n const targetChain = parseChainId(tx.chainId) ?? chainId;\n const calls = normalizeCalls([tx]);\n const tokenRequests = normalizeTokenRequests(tx.tokenRequests);\n const txSourceChainId = parseChainId(tx.sourceChainId);\n return sendIntent({\n username: user.username,\n accountAddress: user.address,\n targetChain,\n calls,\n tokenRequests,\n sourceChainId: txSourceChainId,\n });\n }\n case \"wallet_sendCalls\": {\n const paramList = Array.isArray(params) ? params : [];\n const payload = (paramList[0] || {}) as Record<string, unknown>;\n const user = await ensureUser();\n const targetChain = parseChainId(payload.chainId) ?? chainId;\n const calls = normalizeCalls((payload.calls as unknown[]) || []);\n const tokenRequests = normalizeTokenRequests(payload.tokenRequests);\n const sourceChainId = parseChainId(payload.sourceChainId);\n if (!calls.length) throw new Error(\"No calls provided\");\n return sendIntent({\n username: user.username,\n accountAddress: user.address,\n targetChain,\n calls,\n tokenRequests,\n sourceChainId,\n });\n }\n case \"wallet_getCapabilities\": {\n const paramList = Array.isArray(params) ? params : [];\n // walletAddress is params[0] - we ignore since all accounts have same capabilities\n const requestedChains = paramList[1] as `0x${string}`[] | undefined;\n\n const chainIds = getSupportedChainIds();\n const capabilities: Record<`0x${string}`, Record<string, unknown>> = {};\n\n for (const chainId of chainIds) {\n const hexChainId = `0x${chainId.toString(16)}` as `0x${string}`;\n\n // Filter if specific chains requested\n if (requestedChains && !requestedChains.includes(hexChainId)) {\n continue;\n }\n\n capabilities[hexChainId] = {\n atomic: { status: \"supported\" },\n paymasterService: { supported: true },\n auxiliaryFunds: { supported: true },\n };\n }\n\n return capabilities;\n }\n case \"wallet_getAssets\": {\n const user = await ensureUser();\n if (!user.username) {\n throw new Error(\"Username required to fetch assets. Set a username first.\");\n }\n const clientId = client.getClientId();\n const response = await fetch(\n `${client.getProviderUrl()}/api/users/${encodeURIComponent(user.username)}/portfolio`,\n {\n headers: clientId ? { \"x-client-id\": clientId } : {},\n }\n );\n if (!response.ok) {\n const data = await response.json().catch(() => ({}));\n throw new Error(data.error || \"Failed to get assets\");\n }\n return response.json();\n }\n case \"wallet_getCallsStatus\": {\n const paramList = Array.isArray(params) ? params : [];\n const callsId = paramList[0] as string;\n if (!callsId) {\n throw new Error(\"callsId is required\");\n }\n const statusClientId = client.getClientId();\n const response = await fetch(\n `${client.getProviderUrl()}/api/intent/status/${encodeURIComponent(callsId)}`,\n {\n headers: statusClientId ? { \"x-client-id\": statusClientId } : {},\n }\n );\n if (!response.ok) {\n const data = await response.json().catch(() => ({}));\n throw new Error(data.error || \"Failed to get calls status\");\n }\n const data = await response.json();\n // Map intent status to EIP-5792 format\n const statusMap: Record<string, string> = {\n pending: \"PENDING\",\n preconfirmed: \"PENDING\",\n completed: \"CONFIRMED\",\n failed: \"CONFIRMED\",\n expired: \"CONFIRMED\",\n };\n return {\n status: statusMap[data.status] || \"PENDING\",\n receipts: data.transactionHash\n ? [\n {\n logs: [],\n status: data.status === \"completed\" ? \"0x1\" : \"0x0\",\n blockHash: data.blockHash,\n blockNumber: data.blockNumber,\n transactionHash: data.transactionHash,\n },\n ]\n : [],\n };\n }\n case \"wallet_getCallsHistory\": {\n const paramList = Array.isArray(params) ? params : [];\n const options = (paramList[0] || {}) as {\n limit?: number;\n offset?: number;\n status?: string;\n from?: string;\n to?: string;\n };\n\n const queryParams = new URLSearchParams();\n if (options.limit) queryParams.set(\"limit\", String(options.limit));\n if (options.offset) queryParams.set(\"offset\", String(options.offset));\n if (options.status) queryParams.set(\"status\", options.status);\n if (options.from) queryParams.set(\"from\", options.from);\n if (options.to) queryParams.set(\"to\", options.to);\n\n const url = `${client.getProviderUrl()}/api/intent/history${\n queryParams.toString() ? `?${queryParams}` : \"\"\n }`;\n\n const historyClientId = client.getClientId();\n const response = await fetch(url, {\n headers: historyClientId ? { \"x-client-id\": historyClientId } : {},\n credentials: \"include\",\n });\n\n if (!response.ok) {\n const data = await response.json().catch(() => ({}));\n throw new Error(data.error || \"Failed to get calls history\");\n }\n\n const data = await response.json();\n\n // Map intent status to EIP-5792 format\n const statusMap: Record<string, string> = {\n pending: \"PENDING\",\n preconfirmed: \"PENDING\",\n completed: \"CONFIRMED\",\n failed: \"CONFIRMED\",\n expired: \"CONFIRMED\",\n };\n\n // intentId IS the orchestrator's ID (used as callsId in EIP-5792)\n return {\n calls: data.intents.map(\n (intent: {\n intentId: string;\n status: string;\n transactionHash?: string;\n targetChain: number;\n }) => ({\n callsId: intent.intentId, // intentId is the orchestrator's ID\n status: statusMap[intent.status] || \"PENDING\",\n receipts: intent.transactionHash\n ? [{ transactionHash: intent.transactionHash }]\n : [],\n chainId: `0x${intent.targetChain.toString(16)}`,\n })\n ),\n total: data.total,\n hasMore: data.hasMore,\n };\n }\n default:\n throw new Error(`Unsupported method: ${method}`);\n }\n };\n\n return {\n request,\n on(event, listener) {\n const set = listeners.get(event) ?? new Set();\n set.add(listener);\n listeners.set(event, set);\n },\n removeListener(event, listener) {\n const set = listeners.get(event);\n if (!set) return;\n set.delete(listener);\n if (set.size === 0) listeners.delete(event);\n },\n disconnect,\n };\n}\n"],"mappings":"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","names":["data","chainId","options"]}
|
|
@@ -874,6 +874,21 @@ declare class OneAuthClient {
|
|
|
874
874
|
connectWithModal(options?: {
|
|
875
875
|
theme?: ThemeConfig;
|
|
876
876
|
}): Promise<ConnectResult>;
|
|
877
|
+
/**
|
|
878
|
+
* Open the account management dialog.
|
|
879
|
+
*
|
|
880
|
+
* Shows the account overview with guardian status and recovery setup
|
|
881
|
+
* options. The dialog closes when the user clicks the X button or
|
|
882
|
+
* completes their action.
|
|
883
|
+
*
|
|
884
|
+
* @example
|
|
885
|
+
* ```typescript
|
|
886
|
+
* await client.openAccountDialog();
|
|
887
|
+
* ```
|
|
888
|
+
*/
|
|
889
|
+
openAccountDialog(options?: {
|
|
890
|
+
theme?: ThemeConfig;
|
|
891
|
+
}): Promise<void>;
|
|
877
892
|
/**
|
|
878
893
|
* Check if a user has already granted consent for the requested fields.
|
|
879
894
|
* This is a read-only check — no dialog is shown.
|
|
@@ -874,6 +874,21 @@ declare class OneAuthClient {
|
|
|
874
874
|
connectWithModal(options?: {
|
|
875
875
|
theme?: ThemeConfig;
|
|
876
876
|
}): Promise<ConnectResult>;
|
|
877
|
+
/**
|
|
878
|
+
* Open the account management dialog.
|
|
879
|
+
*
|
|
880
|
+
* Shows the account overview with guardian status and recovery setup
|
|
881
|
+
* options. The dialog closes when the user clicks the X button or
|
|
882
|
+
* completes their action.
|
|
883
|
+
*
|
|
884
|
+
* @example
|
|
885
|
+
* ```typescript
|
|
886
|
+
* await client.openAccountDialog();
|
|
887
|
+
* ```
|
|
888
|
+
*/
|
|
889
|
+
openAccountDialog(options?: {
|
|
890
|
+
theme?: ThemeConfig;
|
|
891
|
+
}): Promise<void>;
|
|
877
892
|
/**
|
|
878
893
|
* Check if a user has already granted consent for the requested fields.
|
|
879
894
|
* This is a read-only check — no dialog is shown.
|
package/dist/index.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { O as OneAuthClient, I as IntentSigner, W as WebAuthnSignature, a as IntentCall, S as SendIntentResult } from './client-
|
|
2
|
-
export { A as AuthResult, j as AuthenticateOptions, k as AuthenticateResult, B as BalanceRequirement, a0 as BatchIntentItem, a3 as BatchIntentItemResult, Y as CheckConsentOptions, Z as CheckConsentResult, F as CloseOnStatus, i as ConnectResult, X as ConsentData, V as ConsentField, C as CreateSigningRequestResponse, D as DeveloperSignedIntent, q as EIP712Domain, s as EIP712TypeField, r as EIP712Types, E as EmbedOptions, H as ExecuteIntentResponse, K as IntentHistoryItem, J as IntentHistoryOptions, L as IntentHistoryResult, x as IntentQuote, y as IntentStatus, v as IntentTokenRequest, z as OrchestratorStatus, h as PasskeyCredential, P as PasskeyProviderConfig, a5 as PrepareBatchIntentResponse, G as PrepareIntentResponse, a4 as PreparedBatchIntent, _ as RequestConsentOptions, $ as RequestConsentResult, a1 as SendBatchIntentOptions, a2 as SendBatchIntentResult, w as SendIntentOptions, M as SendSwapOptions, N as SendSwapResult, m as SignMessageOptions, n as SignMessageResult, o as SignTypedDataOptions, p as SignTypedDataResult, e as SigningError, f as SigningErrorCode, b as SigningRequestOptions, g as SigningRequestStatus, c as SigningResult, l as SigningResultBase, d as SigningSuccess, Q as SwapQuote, R as ThemeConfig, T as TransactionAction, u as TransactionDetails, t as TransactionFees, U as UserPasskeysResponse } from './client-
|
|
3
|
-
export { O as OneAuthProvider, a as OneAuthProviderOptions, c as createOneAuthProvider } from './provider-
|
|
1
|
+
import { O as OneAuthClient, I as IntentSigner, W as WebAuthnSignature, a as IntentCall, S as SendIntentResult } from './client-hZxAAhcl.mjs';
|
|
2
|
+
export { A as AuthResult, j as AuthenticateOptions, k as AuthenticateResult, B as BalanceRequirement, a0 as BatchIntentItem, a3 as BatchIntentItemResult, Y as CheckConsentOptions, Z as CheckConsentResult, F as CloseOnStatus, i as ConnectResult, X as ConsentData, V as ConsentField, C as CreateSigningRequestResponse, D as DeveloperSignedIntent, q as EIP712Domain, s as EIP712TypeField, r as EIP712Types, E as EmbedOptions, H as ExecuteIntentResponse, K as IntentHistoryItem, J as IntentHistoryOptions, L as IntentHistoryResult, x as IntentQuote, y as IntentStatus, v as IntentTokenRequest, z as OrchestratorStatus, h as PasskeyCredential, P as PasskeyProviderConfig, a5 as PrepareBatchIntentResponse, G as PrepareIntentResponse, a4 as PreparedBatchIntent, _ as RequestConsentOptions, $ as RequestConsentResult, a1 as SendBatchIntentOptions, a2 as SendBatchIntentResult, w as SendIntentOptions, M as SendSwapOptions, N as SendSwapResult, m as SignMessageOptions, n as SignMessageResult, o as SignTypedDataOptions, p as SignTypedDataResult, e as SigningError, f as SigningErrorCode, b as SigningRequestOptions, g as SigningRequestStatus, c as SigningResult, l as SigningResultBase, d as SigningSuccess, Q as SwapQuote, R as ThemeConfig, T as TransactionAction, u as TransactionDetails, t as TransactionFees, U as UserPasskeysResponse } from './client-hZxAAhcl.mjs';
|
|
3
|
+
export { O as OneAuthProvider, a as OneAuthProviderOptions, c as createOneAuthProvider } from './provider-B9GKBMC5.mjs';
|
|
4
4
|
import { Address, LocalAccount, Chain, Transport, Hex, WalletClient, Hash } from 'viem';
|
|
5
5
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
6
6
|
import * as React from 'react';
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { O as OneAuthClient, I as IntentSigner, W as WebAuthnSignature, a as IntentCall, S as SendIntentResult } from './client-
|
|
2
|
-
export { A as AuthResult, j as AuthenticateOptions, k as AuthenticateResult, B as BalanceRequirement, a0 as BatchIntentItem, a3 as BatchIntentItemResult, Y as CheckConsentOptions, Z as CheckConsentResult, F as CloseOnStatus, i as ConnectResult, X as ConsentData, V as ConsentField, C as CreateSigningRequestResponse, D as DeveloperSignedIntent, q as EIP712Domain, s as EIP712TypeField, r as EIP712Types, E as EmbedOptions, H as ExecuteIntentResponse, K as IntentHistoryItem, J as IntentHistoryOptions, L as IntentHistoryResult, x as IntentQuote, y as IntentStatus, v as IntentTokenRequest, z as OrchestratorStatus, h as PasskeyCredential, P as PasskeyProviderConfig, a5 as PrepareBatchIntentResponse, G as PrepareIntentResponse, a4 as PreparedBatchIntent, _ as RequestConsentOptions, $ as RequestConsentResult, a1 as SendBatchIntentOptions, a2 as SendBatchIntentResult, w as SendIntentOptions, M as SendSwapOptions, N as SendSwapResult, m as SignMessageOptions, n as SignMessageResult, o as SignTypedDataOptions, p as SignTypedDataResult, e as SigningError, f as SigningErrorCode, b as SigningRequestOptions, g as SigningRequestStatus, c as SigningResult, l as SigningResultBase, d as SigningSuccess, Q as SwapQuote, R as ThemeConfig, T as TransactionAction, u as TransactionDetails, t as TransactionFees, U as UserPasskeysResponse } from './client-
|
|
3
|
-
export { O as OneAuthProvider, a as OneAuthProviderOptions, c as createOneAuthProvider } from './provider-
|
|
1
|
+
import { O as OneAuthClient, I as IntentSigner, W as WebAuthnSignature, a as IntentCall, S as SendIntentResult } from './client-hZxAAhcl.js';
|
|
2
|
+
export { A as AuthResult, j as AuthenticateOptions, k as AuthenticateResult, B as BalanceRequirement, a0 as BatchIntentItem, a3 as BatchIntentItemResult, Y as CheckConsentOptions, Z as CheckConsentResult, F as CloseOnStatus, i as ConnectResult, X as ConsentData, V as ConsentField, C as CreateSigningRequestResponse, D as DeveloperSignedIntent, q as EIP712Domain, s as EIP712TypeField, r as EIP712Types, E as EmbedOptions, H as ExecuteIntentResponse, K as IntentHistoryItem, J as IntentHistoryOptions, L as IntentHistoryResult, x as IntentQuote, y as IntentStatus, v as IntentTokenRequest, z as OrchestratorStatus, h as PasskeyCredential, P as PasskeyProviderConfig, a5 as PrepareBatchIntentResponse, G as PrepareIntentResponse, a4 as PreparedBatchIntent, _ as RequestConsentOptions, $ as RequestConsentResult, a1 as SendBatchIntentOptions, a2 as SendBatchIntentResult, w as SendIntentOptions, M as SendSwapOptions, N as SendSwapResult, m as SignMessageOptions, n as SignMessageResult, o as SignTypedDataOptions, p as SignTypedDataResult, e as SigningError, f as SigningErrorCode, b as SigningRequestOptions, g as SigningRequestStatus, c as SigningResult, l as SigningResultBase, d as SigningSuccess, Q as SwapQuote, R as ThemeConfig, T as TransactionAction, u as TransactionDetails, t as TransactionFees, U as UserPasskeysResponse } from './client-hZxAAhcl.js';
|
|
3
|
+
export { O as OneAuthProvider, a as OneAuthProviderOptions, c as createOneAuthProvider } from './provider-A89sCgGr.js';
|
|
4
4
|
import { Address, LocalAccount, Chain, Transport, Hex, WalletClient, Hash } from 'viem';
|
|
5
5
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
6
6
|
import * as React from 'react';
|
package/dist/index.js
CHANGED
|
@@ -97,7 +97,7 @@ function applyChainFilters(chainIds, options) {
|
|
|
97
97
|
if (!includeTestnets) {
|
|
98
98
|
filtered = filtered.filter((chainId) => !isTestnet(chainId));
|
|
99
99
|
}
|
|
100
|
-
if (allowlist
|
|
100
|
+
if (allowlist) {
|
|
101
101
|
const allowed = new Set(allowlist);
|
|
102
102
|
filtered = filtered.filter((chainId) => allowed.has(chainId));
|
|
103
103
|
}
|
|
@@ -385,6 +385,53 @@ var OneAuthClient = class {
|
|
|
385
385
|
}
|
|
386
386
|
return this.waitForConnectResponse(dialog, iframe, cleanup);
|
|
387
387
|
}
|
|
388
|
+
/**
|
|
389
|
+
* Open the account management dialog.
|
|
390
|
+
*
|
|
391
|
+
* Shows the account overview with guardian status and recovery setup
|
|
392
|
+
* options. The dialog closes when the user clicks the X button or
|
|
393
|
+
* completes their action.
|
|
394
|
+
*
|
|
395
|
+
* @example
|
|
396
|
+
* ```typescript
|
|
397
|
+
* await client.openAccountDialog();
|
|
398
|
+
* ```
|
|
399
|
+
*/
|
|
400
|
+
async openAccountDialog(options) {
|
|
401
|
+
const dialogUrl = this.getDialogUrl();
|
|
402
|
+
const params = new URLSearchParams({
|
|
403
|
+
mode: "iframe"
|
|
404
|
+
});
|
|
405
|
+
const themeParams = this.getThemeParams(options?.theme);
|
|
406
|
+
if (themeParams) {
|
|
407
|
+
const themeParsed = new URLSearchParams(themeParams);
|
|
408
|
+
themeParsed.forEach((value, key) => params.set(key, value));
|
|
409
|
+
}
|
|
410
|
+
const url = `${dialogUrl}/dialog/account?${params.toString()}`;
|
|
411
|
+
const { dialog, iframe, cleanup } = this.createModalDialog(url);
|
|
412
|
+
const ready = await this.waitForDialogReady(dialog, iframe, cleanup, {
|
|
413
|
+
mode: "iframe"
|
|
414
|
+
});
|
|
415
|
+
if (!ready) return;
|
|
416
|
+
const dialogOrigin = this.getDialogOrigin();
|
|
417
|
+
return new Promise((resolve) => {
|
|
418
|
+
const handleMessage = (event) => {
|
|
419
|
+
if (event.origin !== dialogOrigin) return;
|
|
420
|
+
if (event.data?.type === "PASSKEY_CLOSE" || event.data?.type === "PASSKEY_DISCONNECT") {
|
|
421
|
+
window.removeEventListener("message", handleMessage);
|
|
422
|
+
dialog.removeEventListener("close", handleClose);
|
|
423
|
+
cleanup();
|
|
424
|
+
resolve();
|
|
425
|
+
}
|
|
426
|
+
};
|
|
427
|
+
const handleClose = () => {
|
|
428
|
+
window.removeEventListener("message", handleMessage);
|
|
429
|
+
resolve();
|
|
430
|
+
};
|
|
431
|
+
window.addEventListener("message", handleMessage);
|
|
432
|
+
dialog.addEventListener("close", handleClose);
|
|
433
|
+
});
|
|
434
|
+
}
|
|
388
435
|
/**
|
|
389
436
|
* Check if a user has already granted consent for the requested fields.
|
|
390
437
|
* This is a read-only check — no dialog is shown.
|
|
@@ -680,10 +727,13 @@ var OneAuthClient = class {
|
|
|
680
727
|
const themeParams = this.getThemeParams();
|
|
681
728
|
const signingUrl = `${dialogUrl}/dialog/sign?mode=iframe${themeParams ? `&${themeParams}` : ""}`;
|
|
682
729
|
const { dialog, iframe, cleanup } = this.createModalDialog(signingUrl);
|
|
683
|
-
const
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
730
|
+
const dialogOrigin = this.getDialogOrigin();
|
|
731
|
+
let earlyPrepareResult = null;
|
|
732
|
+
const preparePromise = this.prepareIntent(requestBody).then((r) => {
|
|
733
|
+
earlyPrepareResult = r;
|
|
734
|
+
return r;
|
|
735
|
+
});
|
|
736
|
+
const dialogResult = await this.waitForDialogReadyDeferred(dialog, iframe, cleanup);
|
|
687
737
|
if (!dialogResult.ready) {
|
|
688
738
|
return {
|
|
689
739
|
success: false,
|
|
@@ -692,40 +742,85 @@ var OneAuthClient = class {
|
|
|
692
742
|
error: { code: "USER_CANCELLED", message: "User closed the dialog" }
|
|
693
743
|
};
|
|
694
744
|
}
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
745
|
+
let currentInitPayload;
|
|
746
|
+
if (earlyPrepareResult) {
|
|
747
|
+
const prepareResult = earlyPrepareResult;
|
|
748
|
+
if (!prepareResult.success) {
|
|
749
|
+
this.sendPrepareError(iframe, prepareResult.error.message);
|
|
750
|
+
await this.waitForDialogClose(dialog, cleanup);
|
|
751
|
+
return {
|
|
752
|
+
success: false,
|
|
753
|
+
intentId: "",
|
|
754
|
+
status: "failed",
|
|
755
|
+
error: prepareResult.error
|
|
756
|
+
};
|
|
757
|
+
}
|
|
758
|
+
prepareResponse = prepareResult.data;
|
|
759
|
+
currentInitPayload = {
|
|
760
|
+
mode: "iframe",
|
|
761
|
+
calls,
|
|
762
|
+
chainId: targetChain,
|
|
763
|
+
transaction: prepareResponse.transaction,
|
|
764
|
+
challenge: prepareResponse.challenge,
|
|
765
|
+
username,
|
|
766
|
+
accountAddress: prepareResponse.accountAddress,
|
|
767
|
+
originMessages: prepareResponse.originMessages,
|
|
768
|
+
tokenRequests: serializedTokenRequests,
|
|
769
|
+
expiresAt: prepareResponse.expiresAt,
|
|
770
|
+
userId: prepareResponse.userId,
|
|
771
|
+
intentOp: prepareResponse.intentOp,
|
|
772
|
+
digestResult: prepareResponse.digestResult,
|
|
773
|
+
tier: prepareResult.tier
|
|
774
|
+
};
|
|
775
|
+
dialogResult.sendInit(currentInitPayload);
|
|
776
|
+
} else {
|
|
777
|
+
currentInitPayload = {
|
|
778
|
+
mode: "iframe",
|
|
779
|
+
calls,
|
|
780
|
+
chainId: targetChain,
|
|
781
|
+
username,
|
|
782
|
+
accountAddress: options.accountAddress,
|
|
783
|
+
tokenRequests: serializedTokenRequests
|
|
784
|
+
};
|
|
785
|
+
dialogResult.sendInit(currentInitPayload);
|
|
786
|
+
const prepareResult = await preparePromise;
|
|
787
|
+
if (!prepareResult.success) {
|
|
788
|
+
this.sendPrepareError(iframe, prepareResult.error.message);
|
|
789
|
+
await this.waitForDialogClose(dialog, cleanup);
|
|
790
|
+
return {
|
|
791
|
+
success: false,
|
|
792
|
+
intentId: "",
|
|
793
|
+
status: "failed",
|
|
794
|
+
error: prepareResult.error
|
|
795
|
+
};
|
|
796
|
+
}
|
|
797
|
+
prepareResponse = prepareResult.data;
|
|
798
|
+
currentInitPayload = {
|
|
799
|
+
mode: "iframe",
|
|
800
|
+
calls,
|
|
801
|
+
chainId: targetChain,
|
|
802
|
+
transaction: prepareResponse.transaction,
|
|
803
|
+
challenge: prepareResponse.challenge,
|
|
804
|
+
username,
|
|
805
|
+
accountAddress: prepareResponse.accountAddress,
|
|
806
|
+
originMessages: prepareResponse.originMessages,
|
|
807
|
+
tokenRequests: serializedTokenRequests,
|
|
808
|
+
expiresAt: prepareResponse.expiresAt,
|
|
809
|
+
userId: prepareResponse.userId,
|
|
810
|
+
intentOp: prepareResponse.intentOp,
|
|
811
|
+
digestResult: prepareResponse.digestResult,
|
|
812
|
+
tier: prepareResult.tier
|
|
703
813
|
};
|
|
814
|
+
iframe.contentWindow?.postMessage(
|
|
815
|
+
{ type: "PASSKEY_INIT", ...currentInitPayload, fullViewport: true },
|
|
816
|
+
dialogOrigin
|
|
817
|
+
);
|
|
704
818
|
}
|
|
705
|
-
prepareResponse = prepareResult.data;
|
|
706
|
-
const dialogOrigin = this.getDialogOrigin();
|
|
707
|
-
const initPayload = {
|
|
708
|
-
mode: "iframe",
|
|
709
|
-
calls,
|
|
710
|
-
chainId: targetChain,
|
|
711
|
-
transaction: prepareResponse.transaction,
|
|
712
|
-
challenge: prepareResponse.challenge,
|
|
713
|
-
username,
|
|
714
|
-
accountAddress: prepareResponse.accountAddress,
|
|
715
|
-
originMessages: prepareResponse.originMessages,
|
|
716
|
-
tokenRequests: serializedTokenRequests,
|
|
717
|
-
expiresAt: prepareResponse.expiresAt,
|
|
718
|
-
userId: prepareResponse.userId,
|
|
719
|
-
intentOp: prepareResponse.intentOp,
|
|
720
|
-
digestResult: prepareResponse.digestResult,
|
|
721
|
-
tier: prepareResult.tier
|
|
722
|
-
};
|
|
723
|
-
dialogResult.sendInit(initPayload);
|
|
724
819
|
const handleReReady = (event) => {
|
|
725
820
|
if (event.origin !== dialogOrigin) return;
|
|
726
821
|
if (event.data?.type === "PASSKEY_READY") {
|
|
727
822
|
iframe.contentWindow?.postMessage(
|
|
728
|
-
{ type: "PASSKEY_INIT", ...
|
|
823
|
+
{ type: "PASSKEY_INIT", ...currentInitPayload, fullViewport: true },
|
|
729
824
|
dialogOrigin
|
|
730
825
|
);
|
|
731
826
|
}
|
|
@@ -1014,10 +1109,13 @@ var OneAuthClient = class {
|
|
|
1014
1109
|
const themeParams = this.getThemeParams();
|
|
1015
1110
|
const signingUrl = `${dialogUrl}/dialog/sign?mode=iframe${themeParams ? `&${themeParams}` : ""}`;
|
|
1016
1111
|
const { dialog, iframe, cleanup } = this.createModalDialog(signingUrl);
|
|
1017
|
-
const
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1112
|
+
const dialogOrigin = this.getDialogOrigin();
|
|
1113
|
+
let earlyBatchResult = null;
|
|
1114
|
+
const preparePromise = this.prepareBatchIntent(requestBody).then((r) => {
|
|
1115
|
+
earlyBatchResult = r;
|
|
1116
|
+
return r;
|
|
1117
|
+
});
|
|
1118
|
+
const dialogResult = await this.waitForDialogReadyDeferred(dialog, iframe, cleanup);
|
|
1021
1119
|
if (!dialogResult.ready) {
|
|
1022
1120
|
return {
|
|
1023
1121
|
success: false,
|
|
@@ -1026,7 +1124,8 @@ var OneAuthClient = class {
|
|
|
1026
1124
|
failureCount: 0
|
|
1027
1125
|
};
|
|
1028
1126
|
}
|
|
1029
|
-
|
|
1127
|
+
let currentBatchPayload;
|
|
1128
|
+
const handleBatchPrepareFailure = async (prepareResult) => {
|
|
1030
1129
|
const failedIntents = prepareResult.failedIntents;
|
|
1031
1130
|
const failureResults = failedIntents?.map((f) => ({
|
|
1032
1131
|
index: f.index,
|
|
@@ -1044,27 +1143,68 @@ var OneAuthClient = class {
|
|
|
1044
1143
|
failureCount: failureResults.length,
|
|
1045
1144
|
error: prepareResult.error
|
|
1046
1145
|
};
|
|
1047
|
-
}
|
|
1048
|
-
let prepareResponse = prepareResult.data;
|
|
1049
|
-
const dialogOrigin = this.getDialogOrigin();
|
|
1050
|
-
const batchInitPayload = {
|
|
1051
|
-
mode: "iframe",
|
|
1052
|
-
batchMode: true,
|
|
1053
|
-
batchIntents: prepareResponse.intents,
|
|
1054
|
-
batchFailedIntents: prepareResponse.failedIntents,
|
|
1055
|
-
challenge: prepareResponse.challenge,
|
|
1056
|
-
username: options.username,
|
|
1057
|
-
accountAddress: prepareResponse.accountAddress,
|
|
1058
|
-
userId: prepareResponse.userId,
|
|
1059
|
-
expiresAt: prepareResponse.expiresAt,
|
|
1060
|
-
tier: prepareResult.tier
|
|
1061
1146
|
};
|
|
1062
|
-
|
|
1147
|
+
let prepareResponse;
|
|
1148
|
+
if (earlyBatchResult) {
|
|
1149
|
+
const prepareResult = earlyBatchResult;
|
|
1150
|
+
if (!prepareResult.success) {
|
|
1151
|
+
return handleBatchPrepareFailure(prepareResult);
|
|
1152
|
+
}
|
|
1153
|
+
prepareResponse = prepareResult.data;
|
|
1154
|
+
currentBatchPayload = {
|
|
1155
|
+
mode: "iframe",
|
|
1156
|
+
batchMode: true,
|
|
1157
|
+
batchIntents: prepareResponse.intents,
|
|
1158
|
+
batchFailedIntents: prepareResponse.failedIntents,
|
|
1159
|
+
challenge: prepareResponse.challenge,
|
|
1160
|
+
username: options.username,
|
|
1161
|
+
accountAddress: prepareResponse.accountAddress,
|
|
1162
|
+
userId: prepareResponse.userId,
|
|
1163
|
+
expiresAt: prepareResponse.expiresAt,
|
|
1164
|
+
tier: prepareResult.tier
|
|
1165
|
+
};
|
|
1166
|
+
dialogResult.sendInit(currentBatchPayload);
|
|
1167
|
+
} else {
|
|
1168
|
+
currentBatchPayload = {
|
|
1169
|
+
mode: "iframe",
|
|
1170
|
+
batchMode: true,
|
|
1171
|
+
batchIntents: serializedIntents.map((intent, idx) => ({
|
|
1172
|
+
index: idx,
|
|
1173
|
+
targetChain: intent.targetChain,
|
|
1174
|
+
calls: JSON.stringify(intent.calls)
|
|
1175
|
+
// No: transaction, intentOp, expiresAt, originMessages
|
|
1176
|
+
})),
|
|
1177
|
+
username: options.username,
|
|
1178
|
+
accountAddress: options.accountAddress
|
|
1179
|
+
};
|
|
1180
|
+
dialogResult.sendInit(currentBatchPayload);
|
|
1181
|
+
const prepareResult = await preparePromise;
|
|
1182
|
+
if (!prepareResult.success) {
|
|
1183
|
+
return handleBatchPrepareFailure(prepareResult);
|
|
1184
|
+
}
|
|
1185
|
+
prepareResponse = prepareResult.data;
|
|
1186
|
+
currentBatchPayload = {
|
|
1187
|
+
mode: "iframe",
|
|
1188
|
+
batchMode: true,
|
|
1189
|
+
batchIntents: prepareResponse.intents,
|
|
1190
|
+
batchFailedIntents: prepareResponse.failedIntents,
|
|
1191
|
+
challenge: prepareResponse.challenge,
|
|
1192
|
+
username: options.username,
|
|
1193
|
+
accountAddress: prepareResponse.accountAddress,
|
|
1194
|
+
userId: prepareResponse.userId,
|
|
1195
|
+
expiresAt: prepareResponse.expiresAt,
|
|
1196
|
+
tier: prepareResult.tier
|
|
1197
|
+
};
|
|
1198
|
+
iframe.contentWindow?.postMessage(
|
|
1199
|
+
{ type: "PASSKEY_INIT", ...currentBatchPayload, fullViewport: true },
|
|
1200
|
+
dialogOrigin
|
|
1201
|
+
);
|
|
1202
|
+
}
|
|
1063
1203
|
const handleBatchReReady = (event) => {
|
|
1064
1204
|
if (event.origin !== dialogOrigin) return;
|
|
1065
1205
|
if (event.data?.type === "PASSKEY_READY") {
|
|
1066
1206
|
iframe.contentWindow?.postMessage(
|
|
1067
|
-
{ type: "PASSKEY_INIT", ...
|
|
1207
|
+
{ type: "PASSKEY_INIT", ...currentBatchPayload, fullViewport: true },
|
|
1068
1208
|
dialogOrigin
|
|
1069
1209
|
);
|
|
1070
1210
|
}
|
|
@@ -1802,16 +1942,8 @@ var OneAuthClient = class {
|
|
|
1802
1942
|
const themeParams = this.getThemeParams(options?.theme);
|
|
1803
1943
|
const signingUrl = `${dialogUrl}/dialog/sign?mode=iframe${themeParams ? `&${themeParams}` : ""}`;
|
|
1804
1944
|
const { dialog, iframe, cleanup } = this.createModalDialog(signingUrl);
|
|
1805
|
-
const
|
|
1806
|
-
|
|
1807
|
-
message: options.message,
|
|
1808
|
-
challenge: options.challenge || options.message,
|
|
1809
|
-
username: options.username,
|
|
1810
|
-
accountAddress: options.accountAddress,
|
|
1811
|
-
description: options.description,
|
|
1812
|
-
metadata: options.metadata
|
|
1813
|
-
});
|
|
1814
|
-
if (!ready) {
|
|
1945
|
+
const dialogResult = await this.waitForDialogReadyDeferred(dialog, iframe, cleanup);
|
|
1946
|
+
if (!dialogResult.ready) {
|
|
1815
1947
|
return {
|
|
1816
1948
|
success: false,
|
|
1817
1949
|
error: {
|
|
@@ -1820,7 +1952,29 @@ var OneAuthClient = class {
|
|
|
1820
1952
|
}
|
|
1821
1953
|
};
|
|
1822
1954
|
}
|
|
1955
|
+
const initPayload = {
|
|
1956
|
+
mode: "iframe",
|
|
1957
|
+
message: options.message,
|
|
1958
|
+
challenge: options.challenge || options.message,
|
|
1959
|
+
username: options.username,
|
|
1960
|
+
accountAddress: options.accountAddress,
|
|
1961
|
+
description: options.description,
|
|
1962
|
+
metadata: options.metadata
|
|
1963
|
+
};
|
|
1964
|
+
dialogResult.sendInit(initPayload);
|
|
1965
|
+
const dialogOrigin = this.getDialogOrigin();
|
|
1966
|
+
const handleReReady = (event) => {
|
|
1967
|
+
if (event.origin !== dialogOrigin) return;
|
|
1968
|
+
if (event.data?.type === "PASSKEY_READY") {
|
|
1969
|
+
iframe.contentWindow?.postMessage(
|
|
1970
|
+
{ type: "PASSKEY_INIT", ...initPayload, fullViewport: true },
|
|
1971
|
+
dialogOrigin
|
|
1972
|
+
);
|
|
1973
|
+
}
|
|
1974
|
+
};
|
|
1975
|
+
window.addEventListener("message", handleReReady);
|
|
1823
1976
|
const signingResult = await this.waitForSigningResponse(dialog, iframe, cleanup);
|
|
1977
|
+
window.removeEventListener("message", handleReReady);
|
|
1824
1978
|
cleanup();
|
|
1825
1979
|
if (signingResult.success) {
|
|
1826
1980
|
return {
|
|
@@ -1888,7 +2042,17 @@ var OneAuthClient = class {
|
|
|
1888
2042
|
const themeParams = this.getThemeParams(options?.theme);
|
|
1889
2043
|
const signingUrl = `${dialogUrl}/dialog/sign?mode=iframe${themeParams ? `&${themeParams}` : ""}`;
|
|
1890
2044
|
const { dialog, iframe, cleanup } = this.createModalDialog(signingUrl);
|
|
1891
|
-
const
|
|
2045
|
+
const dialogResult = await this.waitForDialogReadyDeferred(dialog, iframe, cleanup);
|
|
2046
|
+
if (!dialogResult.ready) {
|
|
2047
|
+
return {
|
|
2048
|
+
success: false,
|
|
2049
|
+
error: {
|
|
2050
|
+
code: "USER_REJECTED",
|
|
2051
|
+
message: "User closed the dialog"
|
|
2052
|
+
}
|
|
2053
|
+
};
|
|
2054
|
+
}
|
|
2055
|
+
const initPayload = {
|
|
1892
2056
|
mode: "iframe",
|
|
1893
2057
|
signingMode: "typedData",
|
|
1894
2058
|
typedData: {
|
|
@@ -1901,17 +2065,21 @@ var OneAuthClient = class {
|
|
|
1901
2065
|
username: options.username,
|
|
1902
2066
|
accountAddress: options.accountAddress,
|
|
1903
2067
|
description: options.description
|
|
1904
|
-
}
|
|
1905
|
-
|
|
1906
|
-
|
|
1907
|
-
|
|
1908
|
-
|
|
1909
|
-
|
|
1910
|
-
|
|
1911
|
-
|
|
1912
|
-
|
|
1913
|
-
|
|
2068
|
+
};
|
|
2069
|
+
dialogResult.sendInit(initPayload);
|
|
2070
|
+
const dialogOrigin = this.getDialogOrigin();
|
|
2071
|
+
const handleReReady = (event) => {
|
|
2072
|
+
if (event.origin !== dialogOrigin) return;
|
|
2073
|
+
if (event.data?.type === "PASSKEY_READY") {
|
|
2074
|
+
iframe.contentWindow?.postMessage(
|
|
2075
|
+
{ type: "PASSKEY_INIT", ...initPayload, fullViewport: true },
|
|
2076
|
+
dialogOrigin
|
|
2077
|
+
);
|
|
2078
|
+
}
|
|
2079
|
+
};
|
|
2080
|
+
window.addEventListener("message", handleReReady);
|
|
1914
2081
|
const signingResult = await this.waitForSigningResponse(dialog, iframe, cleanup);
|
|
2082
|
+
window.removeEventListener("message", handleReReady);
|
|
1915
2083
|
cleanup();
|
|
1916
2084
|
if (signingResult.success) {
|
|
1917
2085
|
return {
|
|
@@ -2315,8 +2483,10 @@ var OneAuthClient = class {
|
|
|
2315
2483
|
const hideOverlay = () => {
|
|
2316
2484
|
if (overlayHidden) return;
|
|
2317
2485
|
overlayHidden = true;
|
|
2318
|
-
overlay.style.display = "none";
|
|
2319
2486
|
iframe.style.opacity = "1";
|
|
2487
|
+
requestAnimationFrame(() => {
|
|
2488
|
+
overlay.style.display = "none";
|
|
2489
|
+
});
|
|
2320
2490
|
};
|
|
2321
2491
|
const handleMessage = (event) => {
|
|
2322
2492
|
if (event.origin !== hostUrl.origin) return;
|
|
@@ -2892,11 +3062,7 @@ function createOneAuthProvider(options) {
|
|
|
2892
3062
|
if (typeof value === "number") return Math.trunc(value).toString();
|
|
2893
3063
|
if (typeof value === "string") {
|
|
2894
3064
|
if (value.startsWith("0x")) {
|
|
2895
|
-
|
|
2896
|
-
return BigInt(value).toString();
|
|
2897
|
-
} catch {
|
|
2898
|
-
return "0";
|
|
2899
|
-
}
|
|
3065
|
+
return BigInt(value).toString();
|
|
2900
3066
|
}
|
|
2901
3067
|
return value;
|
|
2902
3068
|
}
|
|
@@ -3891,7 +4057,8 @@ function BatchQueueWidget({ onSignAll }) {
|
|
|
3891
4057
|
var import_viem7 = require("viem");
|
|
3892
4058
|
var ETHEREUM_MESSAGE_PREFIX = "Ethereum Signed Message:\n";
|
|
3893
4059
|
function hashMessage2(message) {
|
|
3894
|
-
const
|
|
4060
|
+
const messageBytes = (0, import_viem7.toBytes)(message);
|
|
4061
|
+
const prefixed = ETHEREUM_MESSAGE_PREFIX + messageBytes.length.toString() + message;
|
|
3895
4062
|
return (0, import_viem7.keccak256)((0, import_viem7.toBytes)(prefixed));
|
|
3896
4063
|
}
|
|
3897
4064
|
function verifyMessageHash(message, signedHash) {
|