@privy-io/react-auth
Version:
React client for the Privy Auth API
2 lines (1 loc) • 6.6 kB
JavaScript
import{useCallback as e}from"react";import{d as o,a as r}from"./usePrivy-DmWciddF.mjs";import{cy as t,aA as n,an as i,bC as s,cz as l,c1 as m,bL as p}from"./SignRequestScreen-cNZ56bAg.mjs";import{u as h}from"./internal-context-CfE_S5P-.mjs";import{u as f}from"./privy-context-DDSW3jEM.mjs";import{pipe as g,createTransactionMessage as y,setTransactionMessageFeePayerSigner as I,setTransactionMessageLifetimeUsingBlockhash as w,appendTransactionMessageInstructions as v,compileTransaction as C,getTransactionEncoder as A,address as k,setTransactionMessageFeePayer as S,blockhash as T,getTransactionDecoder as W}from"@solana/kit";import{f as x,g as E,s as b,b as j}from"./use-export-wallet-E2KvvjYq.mjs";export{a as useExportWallet,u as useFundWallet,d as useStandardWallets,c as useWallets}from"./use-export-wallet-E2KvvjYq.mjs";import{base64 as P}from"@scure/base";import{getAddMemoInstruction as F}from"@solana-program/memo";import{getWallets as M}from"@wallet-standard/app";import"./paths-B891YjWw.mjs";import"ofetch";import"@privy-io/js-sdk-core";import"react/jsx-runtime";import"lucide-react";import"styled-components";import"@privy-io/urls";import"viem";import"tinycolor2";import"@heroicons/react/24/outline/UserCircleIcon";import"@heroicons/react/24/outline/ArrowLeftIcon";import"@heroicons/react/24/outline/ArrowRightIcon";import"@heroicons/react/24/outline/QuestionMarkCircleIcon";import"@heroicons/react/24/outline/XMarkIcon";import"@heroicons/react/20/solid/CheckIcon";import"@heroicons/react/24/outline/EnvelopeIcon";import"@heroicons/react/24/outline/PhoneIcon";import"react-device-detect";import"@heroicons/react/24/outline/ExclamationTriangleIcon";import"@heroicons/react/24/outline/WalletIcon";import"@heroicons/react/24/outline/ExclamationCircleIcon";import"@heroicons/react/24/outline/Square2StackIcon";import"fast-password-entropy";import"secure-password-utilities";import"secure-password-utilities/wordlists";import"@heroicons/react/24/outline/LockClosedIcon";import"@heroicons/react/24/outline/PencilSquareIcon";import"jose";import"@heroicons/react/24/outline/ArrowPathIcon";import"@heroicons/react/24/outline/EyeIcon";import"@heroicons/react/24/outline/EyeSlashIcon";import"@heroicons/react/24/outline/KeyIcon";import"@heroicons/react/24/solid/CheckCircleIcon";import"@heroicons/react/24/outline/ArrowDownTrayIcon";import"@heroicons/react/24/outline/ClipboardDocumentCheckIcon";import"@heroicons/react/24/outline/DocumentDuplicateIcon";import"@heroicons/react/24/solid/XCircleIcon";import"@heroicons/react/24/outline/ShieldCheckIcon";import"@heroicons/react/24/outline";import"@tanstack/react-virtual";import"@heroicons/react/24/outline/CheckIcon";import"qrcode";import"viem/utils";import"eventemitter3";import"zustand";import"@walletconnect/ethereum-provider";import"@heroicons/react/24/outline/CreditCardIcon";import"@heroicons/react/24/outline/QrCodeIcon";import"@heroicons/react/24/solid/ArrowsRightLeftIcon";import"@heroicons/react/24/outline/InformationCircleIcon";import"@heroicons/react/24/outline/ClipboardDocumentIcon";import"@heroicons/react/24/outline/ChevronDownIcon";import"@privy-io/ethereum";import"@heroicons/react/24/outline/CheckCircleIcon";import"@heroicons/react/24/outline/GlobeAltIcon";import"@headlessui/react";import"@heroicons/react/24/outline/FingerPrintIcon";import"./use-sign-with-user-signer-DVcbjNtZ.mjs";import"@solana-program/system";import"@solana-program/token";const U=e=>{let o,{get:r,on:n}=M(),i=e?.shouldAutoConnect??!0,a=new Map,s=[];function c(...e){e.forEach((e=>{!(e.features["privy:"]&&"isPrivyWallet"in e&&e.isPrivyWallet||a.has(e.name))&&e.chains.some((e=>"string"==typeof e&&e.startsWith("solana:")))&&a.set(e.name,e)})),s=Array.from(a.values()).map((e=>new t(e,i))),o?.(s)}function l(...e){Array.from(a.values()).forEach((o=>!e.includes(o)&&a.delete(o.name))),s=Array.from(a.values()).map((e=>new t(e,i))),o?.(s)}let m=[n("register",c),n("unregister",l)];return c(...r()),{_setOnConnectorsUpdated:e=>{o=e},onMount:()=>{m[0]||(m[0]=n("register",c)),m[1]||(m[1]=n("unregister",l))},onUnmount:()=>{let e=m.pop();for(;e;)e(),e=m.pop()},get:()=>s}},D=()=>{let{user:r}=f(),{client:t,refreshSessionAndUser:a,initializeWalletProxy:s}=h(),c=n(),l=i();return{importWallet:e((({privateKey:e,additionalSigners:n})=>o({getAccessToken:()=>t.getAccessToken(),user:r,initializeWalletProxy:s,refreshSessionAndUser:a,emitPrivyEvent:c,appConfig:l},{privateKey:e,chainType:"solana",additionalSigners:n})),[r,t,a,s,c,l])}};var R={id:s,getSolanaRpcClient:j,createTransactionFromRelayQuote:async function({solanaClient:e,quote:o,source:r}){let t=o.steps[0]?.items?.[0];if(!t)throw Error("Invalid quote");let n=t.data.instructions.map((({keys:e,programId:o,data:r})=>({accounts:e.map((({pubkey:e,isSigner:o,isWritable:r})=>({address:e,role:o&&r?3:o&&!r?2:!o&&r?1:0}))),programAddress:o,data:new Uint8Array(Buffer.from(r,"hex"))}))),{value:i}=await e.rpc.getLatestBlockhash().send(),a=g(y({version:0}),(e=>I({address:r},e)),(e=>w(i,e)),(e=>v(n,e)),(e=>C(e)));return new Uint8Array(A().encode(a))},simulateTransaction:b,getAddressFromBuffer:E,fetchTransactionEstimatedFees:x},q=()=>l(R);var L={id:p,createSiwsMemoTransaction:({address:e,nonce:o})=>{let r=F({memo:m({address:k(e),nonce:o})});return g(y({version:"legacy"}),(o=>S(k(e),o)),(e=>w({blockhash:T("GfVcyD5fWFJ6hRm8bsy7CoVPsLSoJhtJKRJYk8T2VVFN"),lastValidBlockHeight:0n},e)),(e=>v([r],e)),(e=>C(e)),(e=>P.encode(Uint8Array.from(A().encode(e)))))},getSignatureFromTransaction:(e,o)=>{let r=W().decode(e).signatures[o];if(!r)throw Error(`Missing transaction signature for address: ${o}`);return P.encode(r)}},V=()=>l(L);function z(){let{create:e}=r();return{createWallet:async o=>{o&&"target"in o&&o&&(o=void 0);let{account:r}=await e({chainType:"solana",options:o});return{wallet:r}}}}function B(){return{signMessage:async function(...e){let o=[];for(let r of e)o.push(await r.wallet.signMessage({...r,options:r.options}));return 1===e.length?o[0]:[...o]}}}function J(){return{signTransaction:async function(...e){let o=[];for(let r of e)o.push(await r.wallet.signTransaction({...r,chain:r.chain||"solana:mainnet"}));return 1===e.length?o[0]:[...o]}}}function K(){return{signAndSendTransaction:async function(...e){let o=[];for(let r of e)o.push(await r.wallet.signAndSendTransaction({...r,chain:r.chain||"solana:mainnet"}));return 1===e.length?o[0]:[...o]}}}export{t as SolanaAdapterConnector,U as toSolanaWalletConnectors,z as useCreateWallet,D as useImportWallet,K as useSignAndSendTransaction,B as useSignMessage,J as useSignTransaction,q as useSolanaFundingPlugin,V as useSolanaLedgerPlugin};