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