@privy-io/react-auth
Version:
React client for the Privy Auth API
2 lines (1 loc) • 2.8 kB
JavaScript
;var e=require("@solana/kit"),r=require("react"),n=require("./context-DFq1obBO.js"),t=require("./internal-context-NWsAL807.js");function o(r){return new Uint8Array(e.getTransactionDecoder().decode(r).messageBytes)}const a=(...e)=>{if("undefined"==typeof Buffer)throw new t.PrivyClientError("Buffer is not defined.",void 0,t.PrivyErrorCode.BUFFER_NOT_DEFINED);return Buffer.from(...e)};async function i({rpcSubscriptions:e,signature:r,timeout:n}){let t=new AbortController,o=await e.signatureNotifications(r,{commitment:"confirmed"}).subscribe({abortSignal:t.signal}),a=await Promise.race([new Promise((e=>{setTimeout((()=>{t.abort(),e(Error("Transaction confirmation timed out"))}),n)})),new Promise((async e=>{for await(let r of o){if(t.abort(),r.value.err)return e(Error("Transaction confirmation failed"));e(void 0)}}))]);if(a instanceof Error)throw a}function s({rpc:r,rpcSubscriptions:n,chain:t,blockExplorerUrl:o}){let s=function({rpc:r,rpcSubscriptions:n}){return async t=>new Promise((async(o,s)=>{try{let s=await r.sendTransaction(a(t).toString("base64"),{preflightCommitment:"confirmed",encoding:"base64"}).send();await i({rpcSubscriptions:n,signature:s,timeout:1e4}),o({signature:new Uint8Array(e.getBase58Encoder().encode(s))})}catch(e){s(e)}}))}({rpc:r,rpcSubscriptions:n});return{rpc:r,rpcSubscriptions:n,chain:t,blockExplorerUrl:o,sendAndConfirmTransaction:s}}exports.bufferFrom=a,exports.fetchTransactionEstimatedFees=async function({solanaClient:r,tx:n}){let t=e.getBase64Decoder().decode(o(n)),{value:a}=await r.rpc.getFeeForMessage(t).send();return a??0n},exports.getSolanaRpcClient=s,exports.getTransactionMessageBytes=o,exports.simulateTransaction=async function r({solanaClient:n,tx:t,replaceRecentBlockhash:o}){let{value:a}=await n.rpc.simulateTransaction(e.getBase64Decoder().decode(t),{commitment:"confirmed",encoding:"base64",sigVerify:!1,replaceRecentBlockhash:o}).send();if("BlockhashNotFound"===a.err&&o)throw Error("Simulation failed: Blockhash not found");return"BlockhashNotFound"===a.err?await r({solanaClient:n,tx:t,replaceRecentBlockhash:!0}):{logs:a.logs??[],error:a.err,hasError:!!a.err,hasFunds:a.logs?.every((e=>!/insufficient funds/gi.test(e)&&!/insufficient lamports/gi.test(e)))??!0}},exports.useSolanaRpcClient=function(){let e=n.useAppConfig(),t=r.useMemo((()=>Object.fromEntries(["solana:mainnet","solana:devnet","solana:testnet"].map((r=>[r,e.solanaRpcs[r]?s({chain:r,rpc:e.solanaRpcs[r].rpc,rpcSubscriptions:e.solanaRpcs[r].rpcSubscriptions,blockExplorerUrl:e.solanaRpcs[r].blockExplorerUrl??`https://explorer.solana.com?cluster=${r.replace("solana:","")}`}):null])))),[e.solanaRpcs]);return r.useCallback((e=>{if(!t[e])throw Error(`No RPC configuration found for chain ${e}`);return t[e]}),[t])},exports.waitForSignatureConfirmation=i;