UNPKG

@privy-io/react-auth

Version:

React client for the Privy Auth API

2 lines (1 loc) • 18 kB
"use strict";var e=require("react"),t=require("./usePrivy-BdYU4BZI.js"),i=require("./events-context-7-Gs8c_9.js"),r=require("./internal-context-CeWKmK5u.js"),n=require("./EmbeddedWalletConnectingScreen-JRafXI8d.js"),s=require("@solana/kit"),a=require("./use-export-wallet-Cz8MVlvJ.js"),o=require("@scure/base"),c=require("@solana-program/memo"),l=require("@wallet-standard/app"),u=require("@walletconnect/universal-provider");require("@privy-io/js-sdk-core"),require("react/jsx-runtime"),require("tinycolor2"),require("ofetch"),require("lucide-react"),require("viem"),require("fast-password-entropy"),require("secure-password-utilities"),require("secure-password-utilities/wordlists"),require("@heroicons/react/24/outline/UserCircleIcon"),require("styled-components"),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/20/solid/CheckIcon"),require("@heroicons/react/24/outline/EnvelopeIcon"),require("@heroicons/react/24/outline/PhoneIcon"),require("react-device-detect"),require("@heroicons/react/24/outline/ExclamationTriangleIcon"),require("@heroicons/react/24/outline/WalletIcon"),require("@heroicons/react/24/outline/ExclamationCircleIcon"),require("@heroicons/react/24/outline/Square2StackIcon"),require("zustand"),require("@heroicons/react/24/outline"),require("@tanstack/react-virtual"),require("@heroicons/react/24/outline/CheckIcon"),require("qrcode"),require("viem/utils"),require("eventemitter3"),require("@walletconnect/ethereum-provider"),require("@heroicons/react/24/outline/CreditCardIcon"),require("@heroicons/react/24/outline/QrCodeIcon"),require("@heroicons/react/24/solid/ArrowsRightLeftIcon"),require("@heroicons/react/24/outline/InformationCircleIcon"),require("@heroicons/react/24/outline/ClipboardDocumentCheckIcon"),require("@heroicons/react/24/outline/ClipboardDocumentIcon"),require("@heroicons/react/24/outline/ChevronDownIcon"),require("@privy-io/ethereum"),require("@heroicons/react/24/outline/CheckCircleIcon"),require("@heroicons/react/24/outline/GlobeAltIcon"),require("@headlessui/react"),require("@privy-io/popup"),require("@heroicons/react/24/solid/CheckCircleIcon"),require("@heroicons/react/24/outline/FingerPrintIcon"),require("@heroicons/react/24/outline/LockClosedIcon"),require("@heroicons/react/24/outline/PencilSquareIcon"),require("jose"),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/DocumentDuplicateIcon"),require("@heroicons/react/24/solid/XCircleIcon"),require("@heroicons/react/24/outline/ShieldCheckIcon"),require("@privy-io/urls"),require("./use-sign-with-user-signer-BtJVKMQr.js"),require("./SignRequestScreen-Dy02euV9.js"),require("@solana-program/system"),require("@solana-program/token");function d(e,t){if(!Object.prototype.hasOwnProperty.call(e,t))throw TypeError("attempted to use private field on non-instance");return e}var h=0;function p(e){return"__private_"+h+++"_"+e}var g=/*#__PURE__*/p("_address"),v=/*#__PURE__*/p("_publicKey"),f=/*#__PURE__*/p("_chains"),y=/*#__PURE__*/p("_features"),b=/*#__PURE__*/p("_label"),w=/*#__PURE__*/p("_icon");class m{get address(){return d(this,g)[g]}get publicKey(){return d(this,v)[v].slice()}get chains(){return d(this,f)[f].slice()}get features(){return d(this,y)[y].slice()}get label(){return d(this,b)[b]}get icon(){return d(this,w)[w]}constructor({address:e,publicKey:t,label:i,icon:r}){Object.defineProperty(this,g,{writable:!0,value:void 0}),Object.defineProperty(this,v,{writable:!0,value:void 0}),Object.defineProperty(this,f,{writable:!0,value:void 0}),Object.defineProperty(this,y,{writable:!0,value:void 0}),Object.defineProperty(this,b,{writable:!0,value:void 0}),Object.defineProperty(this,w,{writable:!0,value:void 0}),d(this,g)[g]=e,d(this,v)[v]=t,d(this,f)[f]=a.SOLANA_CHAINS,d(this,y)[y]=["solana:signAndSendTransaction","solana:signTransaction","solana:signMessage"],d(this,b)[b]=i,d(this,w)[w]=r}}function q(e){if("string"==typeof e)return o.base58.decode(e);if(e instanceof Uint8Array)return e;let t=e.signature;return"string"==typeof t?o.base58.decode(t):t}function P(e){if("string"==typeof e){try{return o.base58.decode(e)}catch{}return o.base64.decode(e)}if(e instanceof Uint8Array)return e;let t=e.transaction;if("string"==typeof t){try{return o.base58.decode(t)}catch{}return o.base64.decode(t)}return t}function _(e,t){if(!Object.prototype.hasOwnProperty.call(e,t))throw TypeError("attempted to use private field on non-instance");return e}var S=0;function C(e){return"__private_"+S+++"_"+e}let T="solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",I="solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1";var A=/*#__PURE__*/C("_listeners"),j=/*#__PURE__*/C("_version"),O=/*#__PURE__*/C("_name"),W=/*#__PURE__*/C("_icon"),E=/*#__PURE__*/C("_provider"),k=/*#__PURE__*/C("_accounts"),M=/*#__PURE__*/C("_privyAppName"),x=/*#__PURE__*/C("_walletConnectCloudProjectId"),U=/*#__PURE__*/C("_walletEntry"),L=/*#__PURE__*/C("_onDisplayUriCallback"),F=/*#__PURE__*/C("_providerEventListeners"),N=/*#__PURE__*/C("_on"),R=/*#__PURE__*/C("_emit"),D=/*#__PURE__*/C("_off"),K=/*#__PURE__*/C("_connected"),B=/*#__PURE__*/C("_disconnected"),V=/*#__PURE__*/C("_connect"),G=/*#__PURE__*/C("_disconnect"),z=/*#__PURE__*/C("_signMessage"),J=/*#__PURE__*/C("_signAndSendTransaction"),Y=/*#__PURE__*/C("_signTransaction"),H=/*#__PURE__*/C("_getOrCreateProvider"),Q=/*#__PURE__*/C("_getOrCreateSession"),X=/*#__PURE__*/C("_restoreSession"),Z=/*#__PURE__*/C("_addProviderEventListener"),$=/*#__PURE__*/C("_destroySession"),ee=/*#__PURE__*/C("_makeRpcRequest"),te=/*#__PURE__*/C("_onDisplayUri"),ie=/*#__PURE__*/C("_onSessionDelete");class re{get version(){return _(this,j)[j]}get name(){return _(this,O)[O]}get icon(){return _(this,W)[W]}get chains(){return a.SOLANA_CHAINS.slice()}get features(){return{"standard:connect":{version:"1.0.0",connect:_(this,V)[V]},"standard:disconnect":{version:"1.0.0",disconnect:_(this,G)[G]},"standard:events":{version:"1.0.0",on:_(this,N)[N]},"solana:signAndSendTransaction":{version:"1.0.0",supportedTransactionVersions:["legacy",0],signAndSendTransaction:_(this,J)[J]},"solana:signTransaction":{version:"1.0.0",supportedTransactionVersions:["legacy",0],signTransaction:_(this,Y)[Y]},"solana:signMessage":{version:"1.0.0",signMessage:_(this,z)[z]}}}get accounts(){return _(this,k)[k].slice()}get isWalletConnectSolana(){return!0}async initialize({walletConnectCloudProjectId:e,privyAppName:t}){_(this,x)[x]=e,_(this,M)[M]=t,await _(this,H)[H](),await _(this,X)[X]()}setWalletEntry(e,t){_(this,U)[U]=e,_(this,L)[L]=t}constructor(){Object.defineProperty(this,R,{value:ne}),Object.defineProperty(this,D,{value:se}),Object.defineProperty(this,A,{writable:!0,value:void 0}),Object.defineProperty(this,j,{writable:!0,value:void 0}),Object.defineProperty(this,O,{writable:!0,value:void 0}),Object.defineProperty(this,W,{writable:!0,value:void 0}),Object.defineProperty(this,E,{writable:!0,value:void 0}),Object.defineProperty(this,k,{writable:!0,value:void 0}),Object.defineProperty(this,M,{writable:!0,value:void 0}),Object.defineProperty(this,x,{writable:!0,value:void 0}),Object.defineProperty(this,U,{writable:!0,value:void 0}),Object.defineProperty(this,L,{writable:!0,value:void 0}),Object.defineProperty(this,F,{writable:!0,value:void 0}),Object.defineProperty(this,N,{writable:!0,value:void 0}),Object.defineProperty(this,K,{writable:!0,value:void 0}),Object.defineProperty(this,B,{writable:!0,value:void 0}),Object.defineProperty(this,V,{writable:!0,value:void 0}),Object.defineProperty(this,G,{writable:!0,value:void 0}),Object.defineProperty(this,z,{writable:!0,value:void 0}),Object.defineProperty(this,J,{writable:!0,value:void 0}),Object.defineProperty(this,Y,{writable:!0,value:void 0}),Object.defineProperty(this,H,{writable:!0,value:void 0}),Object.defineProperty(this,Q,{writable:!0,value:void 0}),Object.defineProperty(this,X,{writable:!0,value:void 0}),Object.defineProperty(this,Z,{writable:!0,value:void 0}),Object.defineProperty(this,$,{writable:!0,value:void 0}),Object.defineProperty(this,ee,{writable:!0,value:void 0}),Object.defineProperty(this,te,{writable:!0,value:void 0}),Object.defineProperty(this,ie,{writable:!0,value:void 0}),_(this,A)[A]={},_(this,j)[j]="1.0.0",_(this,O)[O]="WalletConnect",_(this,W)[W]=n.WALLET_CONNECT_LOGO_DATA_URI,_(this,E)[E]=null,_(this,k)[k]=[],_(this,M)[M]="",_(this,x)[x]="",_(this,F)[F]=new Map,_(this,N)[N]=(e,t)=>(_(this,A)[A][e]?.push(t)||(_(this,A)[A][e]=[t]),()=>_(this,D)[D](e,t)),_(this,K)[K]=e=>{_(this,O)[O]=_(this,E)[E]?.session?.peer?.metadata?.name||_(this,U)[U]?.name||"WalletConnect",_(this,W)[W]=_(this,E)[E]?.session?.peer?.metadata?.icons?.[0]||_(this,U)[U]?.image_url?.sm||_(this,W)[W],_(this,k)[k]=e.map((e=>new m({address:e,publicKey:o.base58.decode(e),label:_(this,O)[O],icon:_(this,W)[W]}))),_(this,R)[R]("change",{accounts:this.accounts})},_(this,B)[B]=()=>{_(this,k)[k]=[],_(this,R)[R]("change",{accounts:this.accounts})},_(this,V)[V]=async()=>(this.accounts.length||await _(this,Q)[Q](),{accounts:this.accounts}),_(this,G)[G]=async()=>{await _(this,$)[$](),_(this,R)[R]("change",{accounts:this.accounts})},_(this,z)[z]=async(...e)=>{let t=[];for(let{account:i,message:r}of e){let e=o.base58.encode(r);try{let n=await _(this,ee)[ee]("solana_signMessage",{message:e,pubkey:i.address},oe("solana:mainnet"));t.push({signedMessage:r,signature:q(n)})}catch(n){if(n?.message?.includes("Missing or invalid")){let n=await _(this,ee)[ee]("solana:signMessage",{message:e,pubkey:i.address},oe("solana:mainnet"));t.push({signedMessage:r,signature:q(n)})}throw n}}return t},_(this,J)[J]=async(...e)=>{let t=[];for(let{account:i,chain:r,transaction:n,options:s}of e){let e=o.base64.encode(n);try{let n=await _(this,ee)[ee]("solana_signAndSendTransaction",{transaction:e,pubkey:i.address,sendOptions:s},oe(r));t.push({signature:q(n)})}catch(n){if(n?.message?.includes("Missing or invalid")){let n=await _(this,ee)[ee]("solana:signAndSendTransaction",{transaction:e,pubkey:i.address,sendOptions:s},oe(r));t.push({signature:q(n)})}}}return t},_(this,Y)[Y]=async(...e)=>{let t=[];for(let{account:i,chain:r,transaction:n}of e){let e=o.base64.encode(n);try{let n=await _(this,ee)[ee]("solana_signTransaction",{transaction:e,pubkey:i.address},oe(r||"solana:mainnet"));t.push({signedTransaction:P(n)})}catch(n){if(n?.message?.includes("Missing or invalid")){let n=await _(this,ee)[ee]("solana:signTransaction",{transaction:e,pubkey:i.address},oe(r||"solana:mainnet"));t.push({signedTransaction:P(n)})}}}return t},_(this,H)[H]=async()=>{if(_(this,E)[E])return _(this,E)[E];if(!_(this,x)[x])throw Error("WalletConnect Cloud Project ID is required");return _(this,E)[E]=await u.UniversalProvider.init({projectId:_(this,x)[x],metadata:{name:_(this,M)[M],description:_(this,M)[M],url:window.location.origin,icons:[]},relayUrl:"wss://relay.walletconnect.com",telemetryEnabled:!1}),_(this,Z)[Z]("display_uri",_(this,te)[te]),_(this,Z)[Z]("session_delete",_(this,ie)[ie]),_(this,Z)[Z]("session_ping",(()=>{})),_(this,Z)[Z]("session_event",(()=>{})),_(this,Z)[Z]("session_update",(()=>{})),_(this,E)[E]},_(this,Q)[Q]=async()=>{if(!_(this,E)[E])throw Error("WalletConnectSolana: Failed to get or create session. Provider not initialized");if(_(this,E)[E].session)return _(this,E)[E].session;let e=await _(this,E)[E].connect({optionalNamespaces:{solana:{chains:[T,I],methods:["solana_signMessage","solana_signTransaction","solana_signAndSendTransaction"],events:[]}}});if(!e)throw Error("WalletConnectSolana: Failed to create new session");return _(this,K)[K](ae(e)),e},_(this,X)[X]=async()=>{let e=_(this,E)[E]?.session;if(e){if(!e.namespaces?.solana)return await(_(this,E)[E]?.disconnect().catch((e=>console.error("WalletConnectSolana: Error disconnecting session",e)))),void(_(this,E)[E].session=void 0);_(this,K)[K](ae(e))}},_(this,Z)[Z]=(e,t)=>{let i=_(this,F)[F].get(e);i&&(_(this,E)[E]?.off(e,i),_(this,F)[F].delete(e)),_(this,E)[E]?.on(e,t),_(this,F)[F].set(e,t)},_(this,$)[$]=async()=>{try{if(_(this,E)[E]?.session&&await(_(this,E)[E]?.disconnect().catch((e=>console.error("WalletConnectSolana: Error disconnecting session",e)))),_(this,E)[E]?.client){let e=_(this,E)[E].client.proposal.getAll();await Promise.allSettled(e.map((e=>_(this,E)[E]?.client.proposal.delete(e.id,{code:6e3,message:"User disconnected"}))));let t=_(this,E)[E].client.pairing.getAll();await Promise.allSettled(t.map((e=>_(this,E)[E]?.client.pairing.delete(e.topic,{code:6e3,message:"User disconnected"}))))}_(this,B)[B]()}catch(e){console.error("WalletConnectSolana: Error destroying session",e)}},_(this,ee)[ee]=async(e,t,i)=>{try{return await _(this,E)[E].request({method:e,params:t},i)}catch(t){if(console.error(`WalletConnectSolana: RPC Error - ${e}:`,t),t?.message?.includes("without any listeners")&&t.result)return t.result;if(t?.message?.includes("session topic does not exist in keychain"))throw Error("WalletConnectSolana: Wallet connection lost. Please reconnect.");throw t}},_(this,te)[te]=e=>{null==_(this,L)[L]||_(this,L)[L].call(this,{native:e,universal:void 0})},_(this,ie)[ie]=()=>{_(this,B)[B]()}}}function ne(e,...t){_(this,A)[A][e]?.forEach((e=>e.apply(null,t)))}function se(e,t){_(this,A)[A][e]=_(this,A)[A][e]?.filter((e=>t!==e))}function ae(e){return e.namespaces.solana.accounts.reduce(((e,t)=>{let i=t.split(":").at(-1);return e.includes(i)||e.push(i),e}),[])}function oe(e){switch(e){case"solana:mainnet":return T;case"solana:devnet":return I;default:return e}}var ce={id:n.SOLANA_FUNDING_PLUGIN_ID,getSolanaRpcClient:a.getSolanaRpcClient,createTransactionFromRelayQuote:async function({solanaClient:e,quote:t,source:i}){let r=t.steps[0]?.items?.[0];if(!r)throw Error("Invalid quote");let n=r.data.instructions.map((({keys:e,programId:t,data:i})=>({accounts:e.map((({pubkey:e,isSigner:t,isWritable:i})=>({address:e,role:t&&i?3:t&&!i?2:!t&&i?1:0}))),programAddress:t,data:new Uint8Array(Buffer.from(i,"hex"))}))),{value:a}=await e.rpc.getLatestBlockhash().send(),o=s.pipe(s.createTransactionMessage({version:0}),(e=>s.setTransactionMessageFeePayerSigner({address:i},e)),(e=>s.setTransactionMessageLifetimeUsingBlockhash(a,e)),(e=>s.appendTransactionMessageInstructions(n,e)),(e=>s.compileTransaction(e)));return new Uint8Array(s.getTransactionEncoder().encode(o))},simulateTransaction:a.simulateTransaction,getAddressFromBuffer:a.getAddressFromBuffer,fetchTransactionEstimatedFees:a.fetchTransactionEstimatedFees};var le={id:n.SOLANA_LEDGER_PLUGIN_ID,createSiwsMemoTransaction:({address:e,nonce:t})=>{let i=c.getAddMemoInstruction({memo:n.prepareSiwsMessageWithNonce({address:s.address(e),nonce:t})});return s.pipe(s.createTransactionMessage({version:"legacy"}),(t=>s.setTransactionMessageFeePayer(s.address(e),t)),(e=>s.setTransactionMessageLifetimeUsingBlockhash({blockhash:s.blockhash("GfVcyD5fWFJ6hRm8bsy7CoVPsLSoJhtJKRJYk8T2VVFN"),lastValidBlockHeight:0n},e)),(e=>s.appendTransactionMessageInstructions([i],e)),(e=>s.compileTransaction(e)),(e=>o.base64.encode(Uint8Array.from(s.getTransactionEncoder().encode(e)))))},getSignatureFromTransaction:(e,t)=>{let i=s.getTransactionDecoder().decode(e).signatures[t];if(!i)throw Error(`Missing transaction signature for address: ${t}`);return o.base64.encode(i)}};exports.SolanaAdapterConnector=n.SolanaWalletConnector,exports.useExportWallet=a.useExportWallet,exports.useFundWallet=a.useFundWallet,exports.useStandardWallets=a.useSolanaStandardWallets,exports.useWallets=a.useWallets,exports.toSolanaWalletConnectors=e=>{let t,{get:i,on:r}=l.getWallets(),s=e?.shouldAutoConnect??!0,a=new n.SolanaWalletConnector(new re,s),o=new Map,c=[];function u(...e){e.forEach((e=>{!(e.features["privy:"]&&"isPrivyWallet"in e&&e.isPrivyWallet||o.has(e.name))&&e.chains.some((e=>"string"==typeof e&&e.startsWith("solana:")))&&o.set(e.name,e)})),c=Array.from(o.values()).map((e=>new n.SolanaWalletConnector(e,s))).concat(a),t?.(c)}function d(...e){Array.from(o.values()).forEach((t=>!e.includes(t)&&o.delete(t.name))),c=Array.from(o.values()).map((e=>new n.SolanaWalletConnector(e,s))).concat(a),t?.(c)}let h=[r("register",u),r("unregister",d)];return u(...i()),{_setOnConnectorsUpdated:e=>{t=e},onMount:()=>{h[0]||(h[0]=r("register",u)),h[1]||(h[1]=r("unregister",d))},onUnmount:()=>{let e=h.pop();for(;e;)e(),e=h.pop()},get:()=>c}},exports.useCreateWallet=function(){let{create:e}=t.useCreateWalletInternal();return{createWallet:async t=>{t&&"target"in t&&t&&(t=void 0);let{account:i}=await e({chainType:"solana",options:t});return{wallet:i}}}},exports.useImportWallet=()=>{let{user:s}=n.usePrivyContext(),{client:a,refreshSessionAndUser:o,initializeWalletProxy:c}=r.usePrivyInternal(),l=i.useEmitPrivyEvent(),u=i.useAppConfig();return{importWallet:e.useCallback((({privateKey:e,additionalSigners:i})=>t.importWallet({getAccessToken:()=>a.getAccessToken(),user:s,initializeWalletProxy:c,refreshSessionAndUser:o,emitPrivyEvent:l,appConfig:u},{privateKey:e,chainType:"solana",additionalSigners:i})),[s,a,o,c,l,u])}},exports.useSignAndSendTransaction=function(){return{signAndSendTransaction:async function(...e){let t=[];for(let i of e)t.push(await i.wallet.signAndSendTransaction({...i,chain:i.chain||"solana:mainnet"}));return 1===e.length?t[0]:[...t]}}},exports.useSignMessage=function(){return{signMessage:async function(...e){let t=[];for(let i of e)t.push(await i.wallet.signMessage({...i,options:i.options}));return 1===e.length?t[0]:[...t]}}},exports.useSignTransaction=function(){return{signTransaction:async function(...e){let t=[];for(let i of e)t.push(await i.wallet.signTransaction({...i,chain:i.chain||"solana:mainnet"}));return 1===e.length?t[0]:[...t]}}},exports.useSolanaFundingPlugin=()=>n.useRegisterPlugin(ce),exports.useSolanaLedgerPlugin=()=>n.useRegisterPlugin(le);