UNPKG

@privy-io/react-auth

Version:

React client for the Privy Auth API

2 lines (1 loc) 2.6 kB
import{getTransactionDecoder as r,getBase64Decoder as n,getBase58Encoder as e}from"@solana/kit";import{useMemo as o,useCallback as t}from"react";import{u as a}from"./context-Bycd1SKV.mjs";import{a as i,b as s}from"./internal-context-e-Eni5bG.mjs";function c(n){return new Uint8Array(r().decode(n).messageBytes)}async function l({solanaClient:r,tx:e}){let o=n().decode(c(e)),{value:t}=await r.rpc.getFeeForMessage(o).send();return t??0n}async function u({solanaClient:r,tx:e,replaceRecentBlockhash:o}){let{value:t}=await r.rpc.simulateTransaction(n().decode(e),{commitment:"confirmed",encoding:"base64",sigVerify:!1,replaceRecentBlockhash:o}).send();if("BlockhashNotFound"===t.err&&o)throw Error("Simulation failed: Blockhash not found");return"BlockhashNotFound"===t.err?await u({solanaClient:r,tx:e,replaceRecentBlockhash:!0}):{logs:t.logs??[],error:t.err,hasError:!!t.err,hasFunds:t.logs?.every((r=>!/insufficient funds/gi.test(r)&&!/insufficient lamports/gi.test(r)))??!0}}const f=(...r)=>{if("undefined"==typeof Buffer)throw new i("Buffer is not defined.",void 0,s.BUFFER_NOT_DEFINED);return Buffer.from(...r)};async function p({rpcSubscriptions:r,signature:n,timeout:e}){let o=new AbortController,t=await r.signatureNotifications(n,{commitment:"confirmed"}).subscribe({abortSignal:o.signal}),a=await Promise.race([new Promise((r=>{setTimeout((()=>{o.abort(),r(Error("Transaction confirmation timed out"))}),e)})),new Promise((async r=>{for await(let n of t){if(o.abort(),n.value.err)return r(Error("Transaction confirmation failed"));r(void 0)}}))]);if(a instanceof Error)throw a}function m({rpc:r,rpcSubscriptions:n,chain:o,blockExplorerUrl:t}){let a=function({rpc:r,rpcSubscriptions:n}){return async o=>new Promise((async(t,a)=>{try{let a=await r.sendTransaction(f(o).toString("base64"),{preflightCommitment:"confirmed",encoding:"base64"}).send();await p({rpcSubscriptions:n,signature:a,timeout:1e4}),t({signature:new Uint8Array(e().encode(a))})}catch(r){a(r)}}))}({rpc:r,rpcSubscriptions:n});return{rpc:r,rpcSubscriptions:n,chain:o,blockExplorerUrl:t,sendAndConfirmTransaction:a}}function d(){let r=a(),n=o((()=>Object.fromEntries(["solana:mainnet","solana:devnet","solana:testnet"].map((n=>[n,r.solanaRpcs[n]?m({chain:n,rpc:r.solanaRpcs[n].rpc,rpcSubscriptions:r.solanaRpcs[n].rpcSubscriptions,blockExplorerUrl:r.solanaRpcs[n].blockExplorerUrl??`https://explorer.solana.com?cluster=${n.replace("solana:","")}`}):null])))),[r.solanaRpcs]);return t((r=>{if(!n[r])throw Error(`No RPC configuration found for chain ${r}`);return n[r]}),[n])}export{c as a,f as b,l as f,m as g,u as s,d as u,p as w};