@privy-io/react-auth
Version:
React client for the Privy Auth API
2 lines (1 loc) • 15.2 kB
JavaScript
import{isWalletAdapterCompatibleStandardWallet as e}from"@solana/wallet-adapter-base";import{StandardWalletAdapter as t}from"@solana/wallet-standard-wallet-adapter-base";import{getWallets as n}from"@wallet-standard/app";import{aP as i,p as r,o,aQ as s,aR as a,X as c,e as l,u as d,aS as p,w as h,aT as m,aU as g,aV as A,aW as v,aX as w,aY as f}from"./privy-provider-Ck8owl_s.mjs";export{a7 as useSolanaWallets}from"./privy-provider-Ck8owl_s.mjs";import{useCallback as y,useMemo as b,useEffect as I,useState as T}from"react";import{u as C,n as j}from"./internal-context-qdNgTV5f.mjs";import{u as P,a as O,d as S,e as E}from"./use-sign-with-user-signer-DYa7HrQH.mjs";import{VersionedTransaction as _,Connection as k,Transaction as M,TransactionInstruction as B,PublicKey as W}from"@solana/web3.js";import D from"eventemitter3";import{base58 as F}from"@scure/base";import{t as x}from"./useFundWallet-CDIGvTkf.mjs";export{u as useFundWallet}from"./useFundWallet-CDIGvTkf.mjs";import"react/jsx-runtime";import"mipd";import"react-device-detect";import"viem/utils";import"@privy-io/js-sdk-core";import"./paths-DCwuPDUk.mjs";import"ofetch";import"viem";import"uuid";import"jose";import"@coinbase/wallet-sdk";import"@privy-io/ethereum";import"@marsidev/react-turnstile";import"styled-components";import"tinycolor2";import"@heroicons/react/24/outline/DevicePhoneMobileIcon";import"@heroicons/react/24/outline/FingerPrintIcon";import"@heroicons/react/24/outline/PhoneIcon";import"@heroicons/react/24/outline/ShieldCheckIcon";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/24/outline/CalendarIcon";import"@heroicons/react/24/outline/ExclamationTriangleIcon";import"@heroicons/react/24/outline/ChevronDownIcon";import"zustand";import"@headlessui/react";import"@heroicons/react/24/outline/CheckIcon";import"@heroicons/react/24/outline/Square2StackIcon";import"@walletconnect/ethereum-provider";import"fast-password-entropy";import"secure-password-utilities";import"secure-password-utilities/wordlists";import"@heroicons/react/24/outline/UserCircleIcon";import"@heroicons/react/24/outline/EnvelopeIcon";import"@heroicons/react/20/solid/CheckIcon";import"@heroicons/react/24/outline/WalletIcon";import"@heroicons/react/24/outline/ExclamationCircleIcon";import"@heroicons/react/24/outline/ArrowTopRightOnSquareIcon";import"@heroicons/react/24/solid/DocumentCheckIcon";import"@heroicons/react/24/solid/XCircleIcon";import"@heroicons/react/24/solid/CheckCircleIcon";import"@heroicons/react/24/outline";import"@tanstack/react-virtual";import"qrcode";import"@heroicons/react/24/solid/ArrowsRightLeftIcon";import"@heroicons/react/24/outline/ChevronRightIcon";import"@heroicons/react/24/outline/LockClosedIcon";import"@heroicons/react/24/outline/PencilSquareIcon";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/outline/ArrowDownTrayIcon";import"@heroicons/react/24/outline/ClipboardDocumentCheckIcon";import"@heroicons/react/24/outline/DocumentDuplicateIcon";import"@heroicons/react/24/solid/LockClosedIcon";import"@heroicons/react/24/outline/CheckCircleIcon";import"@heroicons/react/24/outline/InformationCircleIcon";import"@heroicons/react/24/outline/CreditCardIcon";import"@heroicons/react/24/outline/QrCodeIcon";import"@heroicons/react/24/outline/GlobeAltIcon";import"@heroicons/react/24/outline/ClipboardDocumentIcon";import"@heroicons/react/24/outline/CloudArrowUpIcon";import"@heroicons/react/24/outline/NoSymbolIcon";import"@heroicons/react/24/outline/ClockIcon";import"@heroicons/react/24/outline/TrashIcon";import"@heroicons/react/24/solid/CheckBadgeIcon";import"@heroicons/react/24/solid/IdentificationIcon";import"@heroicons/react/24/outline/MinusCircleIcon";import"@heroicons/react/24/outline/ArrowRightEndOnRectangleIcon";import"@heroicons/react/24/solid/ShieldCheckIcon";import"js-cookie";import"@solana/spl-token";const U=e=>{let t,{get:r,on:o}=n(),s=e?.shouldAutoConnect??!0,a=new Map,c=[];function l(...e){Q(e).forEach((e=>!a.has(e.wallet)&&a.set(e.wallet,e))),c=Array.from(a.values()).map((e=>new i(e,s))),t?.(c)}function u(...e){Array.from(a.keys()).forEach((t=>!e.includes(t)&&a.delete(t))),c=Array.from(a.values()).map((e=>new i(e,s))),t?.(c)}let d=[o("register",l),o("unregister",u)];return Q(r()).forEach((e=>!a.has(e.wallet)&&a.set(e.wallet,e))),c=Array.from(a.values()).map((e=>new i(e,s))),{_setOnConnectorsUpdated:e=>{t=e},onMount:()=>{d[0]||(d[0]=o("register",l)),d[1]||(d[1]=o("unregister",u))},onUnmount:()=>{let e=d.pop();for(;e;)e(),e=d.pop()},get:()=>c}};let Q=n=>n.filter((t=>e(t)&&!(t.features["privy:"]&&"isPrivyWallet"in t&&t.isPrivyWallet))).map((e=>new t({wallet:e})));const V=()=>{let{user:e}=P(),{client:t,refreshSessionAndUser:n,initializeWalletProxy:i}=C(),a=r(),c=o();return{importWallet:y((({privateKey:r})=>s({getAccessToken:()=>t.getAccessToken(),user:e,initializeWalletProxy:i,refreshSessionAndUser:n,emitPrivyEvent:a,appConfig:c},{privateKey:r,chainType:"solana"})),[e,t,n,i,a])}},J=["solana:mainnet","solana:devnet","solana:testnet"];function R(e){switch(e){case"solana:mainnet":return"mainnet-beta";case"solana:devnet":return"devnet";case"solana:testnet":return"testnet";default:throw Error(`Unknown chain: ${e}`)}}function z(e,t){if(!Object.prototype.hasOwnProperty.call(e,t))throw TypeError("attempted to use private field on non-instance");return e}var K=0,G="__private_"+K+++"__implementation";function Y(e,t){if(!Object.prototype.hasOwnProperty.call(e,t))throw TypeError("attempted to use private field on non-instance");return e}var q=0;function H(e){return"__private_"+q+++"_"+e}var L=/*#__PURE__*/H("_address"),Z=/*#__PURE__*/H("_publicKey"),X=/*#__PURE__*/H("_chains"),N=/*#__PURE__*/H("_features"),$=/*#__PURE__*/H("_label"),ee=/*#__PURE__*/H("_icon");class te{get address(){return Y(this,L)[L]}get publicKey(){return Y(this,Z)[Z].slice()}get chains(){return Y(this,X)[X].slice()}get features(){return Y(this,N)[N].slice()}get label(){return Y(this,$)[$]}get icon(){return Y(this,ee)[ee]}constructor({address:e,publicKey:t,label:n,icon:i}){Object.defineProperty(this,L,{writable:!0,value:void 0}),Object.defineProperty(this,Z,{writable:!0,value:void 0}),Object.defineProperty(this,X,{writable:!0,value:void 0}),Object.defineProperty(this,N,{writable:!0,value:void 0}),Object.defineProperty(this,$,{writable:!0,value:void 0}),Object.defineProperty(this,ee,{writable:!0,value:void 0}),Y(this,L)[L]=e,Y(this,Z)[Z]=t,Y(this,X)[X]=J,Y(this,$)[$]=n,Y(this,ee)[ee]=i,Y(this,N)[N]=["solana:signAndSendTransaction","solana:signTransaction","solana:signMessage"],new.target===te&&Object.freeze(this)}}function ne(e,t){if(!Object.prototype.hasOwnProperty.call(e,t))throw TypeError("attempted to use private field on non-instance");return e}var ie=0;function re(e){return"__private_"+ie+++"_"+e}var oe=/*#__PURE__*/re("_listeners"),se=/*#__PURE__*/re("_version"),ae=/*#__PURE__*/re("_name"),ce=/*#__PURE__*/re("_icon"),le=/*#__PURE__*/re("_injection"),ue=/*#__PURE__*/re("_isPrivyWallet"),de=/*#__PURE__*/re("_accounts"),pe=/*#__PURE__*/re("_on"),he=/*#__PURE__*/re("_emit"),me=/*#__PURE__*/re("_off"),ge=/*#__PURE__*/re("_connected"),Ae=/*#__PURE__*/re("_connect"),ve=/*#__PURE__*/re("_disconnect"),we=/*#__PURE__*/re("_signMessage"),fe=/*#__PURE__*/re("_signAndSendTransaction"),ye=/*#__PURE__*/re("_signTransaction");function be(e,...t){ne(this,oe)[oe][e]?.forEach((e=>e.apply(null,t)))}function Ie(e,t){ne(this,oe)[oe][e]=ne(this,oe)[oe][e]?.filter((e=>t!==e))}function Te(e){let t=o(),{user:n}=c(),{setModalData:i}=l(),{client:s,isHeadlessSigning:a,openModal:u,walletProxy:h,recoverEmbeddedWallet:m,privy:g,solanaWallets:A}=C(),v=r(),{signWithUserSigner:w}=O();return d("signSolanaTransaction",e),{signTransaction:async({transaction:e,connection:r,uiOptions:o,transactionOptions:c,address:l})=>{let d=l?A.find((e=>e.address===l&&"privy"!==e.walletClientType)):void 0,{signedTransaction:f}=await p({privy:g,appConfig:t,getAccessToken:()=>s.getAccessToken(),isHeadlessSigning:a,emitPrivyEvent:v,setModalData:i,openModal:u,walletProxy:h,user:n,recoverEmbeddedWallet:m,signWithUserSigner:w,connectedExternalWallet:d},{transaction:e,connection:r,transactionOptions:c,uiOptions:o,address:l,signOnly:!0});return f}}}let Ce=new class extends D{setImplementation(e){z(this,G)[G]=e}async signMessage(e,t){return z(this,G)[G].signMessage(e,t)}async signAndSendTransaction(e,t,n,i){return z(this,G)[G].signAndSendTransaction(e,t,n,i)}async signTransaction(e,t,n,i){return z(this,G)[G].signTransaction(e,t,n,i)}constructor(e){super(),Object.defineProperty(this,G,{writable:!0,value:void 0}),z(this,G)[G]=e}}({signTransaction:j("signTransaction was not injected"),signAndSendTransaction:j("signAndSendTransaction was not injected"),signMessage:j("signMessage was not injected")}),je=new class{get version(){return ne(this,se)[se]}get name(){return ne(this,ae)[ae]}get icon(){return ne(this,ce)[ce]}get chains(){return J.slice()}get features(){return{"standard:connect":{version:"1.0.0",connect:ne(this,Ae)[Ae]},"standard:disconnect":{version:"1.0.0",disconnect:ne(this,ve)[ve]},"standard:events":{version:"1.0.0",on:ne(this,pe)[pe]},"solana:signAndSendTransaction":{version:"1.0.0",supportedTransactionVersions:["legacy",0],signAndSendTransaction:ne(this,fe)[fe]},"solana:signTransaction":{version:"1.0.0",supportedTransactionVersions:["legacy",0],signTransaction:ne(this,ye)[ye]},"solana:signMessage":{version:"1.0.0",signMessage:ne(this,we)[we]},"privy:":{privy:{signMessage:ne(this,le)[le].signMessage,signTransaction:ne(this,le)[le].signTransaction,signAndSendTransaction:ne(this,le)[le].signAndSendTransaction}}}}get accounts(){return ne(this,de)[de].slice()}get isPrivyWallet(){return ne(this,ue)[ue]}constructor({name:e,icon:t,version:n,injection:i,wallets:r}){Object.defineProperty(this,he,{value:be}),Object.defineProperty(this,me,{value:Ie}),Object.defineProperty(this,oe,{writable:!0,value:void 0}),Object.defineProperty(this,se,{writable:!0,value:void 0}),Object.defineProperty(this,ae,{writable:!0,value:void 0}),Object.defineProperty(this,ce,{writable:!0,value:void 0}),Object.defineProperty(this,le,{writable:!0,value:void 0}),Object.defineProperty(this,ue,{writable:!0,value:void 0}),Object.defineProperty(this,de,{writable:!0,value:void 0}),Object.defineProperty(this,pe,{writable:!0,value:void 0}),Object.defineProperty(this,ge,{writable:!0,value:void 0}),Object.defineProperty(this,Ae,{writable:!0,value:void 0}),Object.defineProperty(this,ve,{writable:!0,value:void 0}),Object.defineProperty(this,we,{writable:!0,value:void 0}),Object.defineProperty(this,fe,{writable:!0,value:void 0}),Object.defineProperty(this,ye,{writable:!0,value:void 0}),ne(this,oe)[oe]={},ne(this,pe)[pe]=(e,t)=>(ne(this,oe)[oe][e]?.push(t)||(ne(this,oe)[oe][e]=[t]),()=>ne(this,me)[me](e,t)),ne(this,ge)[ge]=e=>{null!=e&&(ne(this,de)[de]=e.map((({address:e})=>new te({address:e,publicKey:F.decode(e)})))),ne(this,he)[he]("change",{accounts:this.accounts})},ne(this,Ae)[Ae]=async()=>(ne(this,he)[he]("change",{accounts:this.accounts}),{accounts:this.accounts}),ne(this,ve)[ve]=async()=>{ne(this,he)[he]("change",{accounts:this.accounts})},ne(this,we)[we]=async(...e)=>{let t=[];for(let{message:n,account:i}of e){let{signature:e}=await ne(this,le)[le].signMessage(n,i.address);t.push({signedMessage:n,signature:e})}return t},ne(this,fe)[fe]=async(...e)=>{let t=[];for(let{transaction:n,account:i,options:r,chain:o}of e){let{signature:e}=await ne(this,le)[le].signAndSendTransaction(_.deserialize(n),i.address,R(o||"solana:mainnet"),r);t.push({signature:F.decode(e)})}return t},ne(this,ye)[ye]=async(...e)=>{let t=[];for(let{transaction:n,account:i,options:r,chain:o}of e){let e=await ne(this,le)[le].signTransaction(_.deserialize(n),i.address,R(o||"solana:mainnet"),r),s=a(e)?e.serialize():new Uint8Array(e.serialize({requireAllSignatures:!1,verifySignatures:!1}));t.push({signedTransaction:s})}return t},ne(this,ae)[ae]=e,ne(this,ce)[ce]=t,ne(this,se)[se]=n,ne(this,le)[le]=i,ne(this,de)[de]=[],ne(this,ue)[ue]=!0,i.on("accountChanged",ne(this,ge)[ge],this),ne(this,ge)[ge](r)}}({name:"Privy",version:"1.0.0",icon:"data:image/png;base64,AAABAAEAFBQAAAAAIABlAQAAFgAAAIlQTkcNChoKAAAADUlIRFIAAAAUAAAAFAgGAAAAjYkdDQAAAAlwSFlzAAAOwwAADsMBx2+oZAAAAQVJREFUeJxiYMANZIC4E4ivAPFPIP4FxDeAuB+IlfDowwBMQFwJxF+B+D8O/AOI66Bq8QJGIF6ExyB0vAqImfEZmEeCYTDcgMswPiB+T4aB34FYApuBsWQYBsP52AycToGBK7EZuJECAw9jM3AVBQbuwWZgIwUGTsZmoDkFBnpiMxAEjpJh2FV8iVsbiD+TYBgoDVrgMgwGnID4HRGGgTKBGyHDYEAaiBdCSxh0g/5AU4Q8sYYhAzEgjoGmABBOgFo2eACowFABYn0oVgViAVINkQTiZUD8DIj/ATF6GILEXgLxCiCWIsZAbiAuBeKtQHwHiEHJ6C8UfwHie0C8E4jLoWpRAAAAAP//rcbhsQAAAAZJREFUAwBYFs3VKJ0cuQAAAABJRU5ErkJggg==",wallets:[],injection:Ce});function Pe(){let{solanaClusters:e}=o(),{ready:t}=h(),{user:n}=c(),{signMessage:i}=m(),{signTransaction:r}=Te(),{sendTransaction:s}=g(),a=b((()=>{let e=[...S(n).sort(((e,t)=>(e.walletIndex??0)-(t.walletIndex??0)))],t=E(n);return t?[...e,t]:e}),[n]),l=b((()=>({signMessage:async(e,t)=>({signature:await i({message:e,options:{address:t}})}),async signTransaction(t,n,i){let o=new k(e[i].rpcUrl);return await r({transaction:t,address:n,connection:o})},async signAndSendTransaction(t,n,i,r){let o=new k(e[i].rpcUrl),{signature:a}=await s({transaction:t,connection:o,address:n,transactionOptions:r});return{signature:a}}})),[i,r,s,e]);return I((()=>{Ce?.setImplementation(l)}),[l]),I((()=>{var e;!t||(e=je.accounts).length===a.length&&e.every(((e,t)=>e.address===a[t]?.address))||Ce?.emit("accountChanged",a)}),[t,a]),{ready:t,wallet:je}}function Oe(){let{client:e}=C(),{ready:t,wallet:n}=Pe(),[i,r]=T([]),[o,s]=T([]);return I((()=>{let e=[n,...i.filter((e=>"solana"===e.chainType)).map((e=>e.wallet))];s(e);let t=e.map((t=>t.features["standard:events"]?.on("change",(()=>{s([...e])}))));return()=>{t.forEach((e=>e?.()))}}),[i]),I((()=>{if(!t)return;r(e.connectors?.walletConnectors.filter((e=>"solana"===e.chainType))??[]);let n=()=>{r(e.connectors?.walletConnectors.filter((e=>"solana"===e.chainType))??[])};return e.connectors?.on("connectorInitialized",n),()=>{e.connectors?.off("connectorInitialized",n)}}),[t,e.connectors]),{ready:t,wallets:o}}var Se=()=>A(x),Ee={id:v,prepareSiwsTransactionWithMemo:({address:e,nonce:t})=>{let n=w({address:e,nonce:t}),i=new M,r=new B({keys:[{pubkey:new W(e),isSigner:!0,isWritable:!1}],programId:new W("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),data:Buffer.from(n,"utf-8")});return i.add(r),i.feePayer=new W(e),i.recentBlockhash="GfVcyD5fWFJ6hRm8bsy7CoVPsLSoJhtJKRJYk8T2VVFN",i.serialize({requireAllSignatures:!1}).toString("base64")},deserializeTransactionFromB64String:e=>M.from(f(e,"base64"))},_e=()=>A(Ee);export{i as SolanaAdapterConnector,U as toSolanaWalletConnectors,V as useImportWallet,Pe as usePrivyStandardWallet,g as useSendTransaction,m as useSignMessage,Te as useSignTransaction,Se as useSolanaFundingPlugin,_e as useSolanaLedgerPlugin,Oe as useSolanaStandardWallets};