@privy-io/react-auth
Version:
React client for the Privy Auth API
2 lines (1 loc) • 9.28 kB
JavaScript
import{getAddress as e}from"viem";import{createContext as t,useContext as i,useMemo as a}from"react";import{a as r,u as s}from"./internal-context-Bxhby7Hv.mjs";function l(e){return e?new Date(1e3*e):null}function n(e,t){return e.slice().sort(((e,t)=>(e.firstVerifiedAt??e.verifiedAt).getTime()-(t.firstVerifiedAt??t.verifiedAt).getTime())).find((e=>e.type===t))}const d=e=>e?u(e).find((e=>0===e.walletIndex))??null:null,u=e=>e?f(e,"ethereum"):[],f=(e,t)=>e.linkedAccounts.filter((e=>"wallet"===e.type&&"privy"===e.walletClientType&&!e.imported&&e.chainType===t)),o=e=>e?f(e,"solana"):[],m=e=>e?o(e).find((e=>0===e.walletIndex))??null:null,p=e=>e?.linkedAccounts.find((e=>"wallet"===e.type&&"privy"===e.walletClientType&&e.imported&&"ethereum"===e.chainType))||null,c=e=>e?.linkedAccounts.find((e=>"wallet"===e.type&&e.imported&&"privy"===e.walletClientType&&"solana"===e.chainType))||null;let _=(t,i)=>t===i||!(!t.startsWith("0x")||!i.startsWith("0x"))&&e(t)===e(i);const y=(e,t)=>e?.linkedAccounts.find((e=>"wallet"===e.type&&"privy"===e.walletClientType&&_(e.address,t)))||null,h=(e,t)=>e.find((e=>_(e.address,t)))||null,v=e=>d(e)??m(e);function b(e){if(!e)return null;let t=function(e){let t=[];for(let i of e){let e=i.type;switch(i.type){case"wallet":let a={id:i.id,address:i.address,type:i.type,imported:i.imported,delegated:i.delegated,verifiedAt:l(i.verified_at),firstVerifiedAt:l(i.first_verified_at),latestVerifiedAt:l(i.latest_verified_at),chainType:i.chain_type,walletClientType:i.wallet_client_type,connectorType:i.connector_type,recoveryMethod:i.recovery_method,walletIndex:i.wallet_index};t.push(a);break;case"smart_wallet":let r={address:i.address,type:i.type,verifiedAt:l(i.verified_at),firstVerifiedAt:l(i.first_verified_at),latestVerifiedAt:l(i.latest_verified_at),smartWalletType:i.smart_wallet_type};t.push(r);break;case"cross_app":let s={type:i.type,subject:i.subject,embeddedWallets:i.embedded_wallets,smartWallets:i.smart_wallets,providerApp:{id:i.provider_app_id},verifiedAt:l(i.verified_at),firstVerifiedAt:l(i.first_verified_at),latestVerifiedAt:l(i.latest_verified_at)};t.push(s);break;case"email":let n={address:i.address,type:i.type,verifiedAt:l(i.verified_at),firstVerifiedAt:l(i.first_verified_at),latestVerifiedAt:l(i.latest_verified_at)};t.push(n);break;case"phone":let d={number:i.phoneNumber,type:i.type,verifiedAt:l(i.verified_at),firstVerifiedAt:l(i.first_verified_at),latestVerifiedAt:l(i.latest_verified_at)};t.push(d);break;case"google_oauth":let u={subject:i.subject,email:i.email,name:i.name,type:i.type,verifiedAt:l(i.verified_at),firstVerifiedAt:l(i.first_verified_at),latestVerifiedAt:l(i.latest_verified_at)};t.push(u);break;case"spotify_oauth":let f={subject:i.subject,email:i.email,name:i.name,type:i.type,verifiedAt:l(i.verified_at),firstVerifiedAt:l(i.first_verified_at),latestVerifiedAt:l(i.latest_verified_at)};t.push(f);break;case"instagram_oauth":let o={subject:i.subject,username:i.username,type:i.type,verifiedAt:l(i.verified_at),firstVerifiedAt:l(i.first_verified_at),latestVerifiedAt:l(i.latest_verified_at)};t.push(o);break;case"twitter_oauth":let m={subject:i.subject,username:i.username,name:i.name,type:i.type,profilePictureUrl:i.profile_picture_url,verifiedAt:l(i.verified_at),firstVerifiedAt:l(i.first_verified_at),latestVerifiedAt:l(i.latest_verified_at)};t.push(m);break;case"discord_oauth":let p={subject:i.subject,username:i.username,email:i.email,type:i.type,verifiedAt:l(i.verified_at),firstVerifiedAt:l(i.first_verified_at),latestVerifiedAt:l(i.latest_verified_at)};t.push(p);break;case"github_oauth":let c={subject:i.subject,username:i.username,name:i.name,email:i.email,type:i.type,verifiedAt:l(i.verified_at),firstVerifiedAt:l(i.first_verified_at),latestVerifiedAt:l(i.latest_verified_at)};t.push(c);break;case"tiktok_oauth":let _={subject:i.subject,username:i.username,name:i.name,type:i.type,verifiedAt:l(i.verified_at),firstVerifiedAt:l(i.first_verified_at),latestVerifiedAt:l(i.latest_verified_at)};t.push(_);break;case"linkedin_oauth":let y={subject:i.subject,name:i.name,email:i.email,vanityName:i.vanity_name,type:i.type,verifiedAt:l(i.verified_at),firstVerifiedAt:l(i.first_verified_at),latestVerifiedAt:l(i.latest_verified_at)};t.push(y);break;case"apple_oauth":let h={subject:i.subject,email:i.email,type:i.type,verifiedAt:l(i.verified_at),firstVerifiedAt:l(i.first_verified_at),latestVerifiedAt:l(i.latest_verified_at)};t.push(h);break;case"custom_auth":t.push({type:i.type,customUserId:i.custom_user_id,verifiedAt:l(i.verified_at),firstVerifiedAt:l(i.first_verified_at),latestVerifiedAt:l(i.latest_verified_at)});break;case"farcaster":let v={type:i.type,fid:i.fid,ownerAddress:i.owner_address,displayName:i.display_name,username:i.username,bio:i.bio,pfp:i.profile_picture_url,url:i.homepage_url,verifiedAt:l(i.verified_at),firstVerifiedAt:l(i.first_verified_at),latestVerifiedAt:l(i.latest_verified_at),signerPublicKey:i.signer_public_key};t.push(v);break;case"passkey":let b={type:i.type,enrolledInMfa:i.enrolled_in_mfa,credentialId:i.credential_id,authenticatorName:i.authenticator_name,createdWithDevice:i.created_with_device,createdWithOs:i.created_with_os,createdWithBrowser:i.created_with_browser,verifiedAt:l(i.verified_at),firstVerifiedAt:l(i.first_verified_at),latestVerifiedAt:l(i.latest_verified_at)};t.push(b);break;case"telegram":let A={type:i.type,telegramUserId:i.telegram_user_id,firstName:i.first_name,lastName:i.last_name,username:i.username,photoUrl:i.photo_url,verifiedAt:l(i.first_verified_at),firstVerifiedAt:l(i.first_verified_at),latestVerifiedAt:l(i.latest_verified_at)};t.push(A);break;default:console.warn(`Unrecognized account type: ${e}. Please consider upgrading the Privy SDK.`)}}return t}(e.linked_accounts),i=n(t,"wallet"),a=n(t,"smart_wallet"),r=n(t,"email"),s=n(t,"phone"),d=n(t,"google_oauth"),u=n(t,"twitter_oauth"),f=n(t,"discord_oauth"),o=n(t,"github_oauth"),m=n(t,"spotify_oauth"),p=n(t,"instagram_oauth"),c=n(t,"tiktok_oauth"),_=n(t,"linkedin_oauth"),y=n(t,"apple_oauth"),h=n(t,"farcaster"),v=n(t,"telegram"),b=e.mfa_methods.map((({type:e,verified_at:t})=>({type:e,verifiedAt:l(t)})));return{id:e.id,createdAt:l(e.created_at),linkedAccounts:t,email:r&&{address:r?.address},phone:s&&{number:s?.number},wallet:i&&{id:i.id,address:i.address,chainType:i.chainType,walletClientType:i.walletClientType,connectorType:i.connectorType,recoveryMethod:i.recoveryMethod,imported:i.imported,delegated:i.delegated,walletIndex:i.walletIndex},smartWallet:a&&{address:a.address,smartWalletType:a.smartWalletType},google:d&&{subject:d.subject,email:d.email,name:d.name},twitter:u&&{subject:u.subject,username:u.username,name:u.name,profilePictureUrl:u.profilePictureUrl},discord:f&&{subject:f.subject,username:f.username,email:f.email},github:o&&{subject:o.subject,username:o.username,name:o.name,email:o.email},spotify:m&&{subject:m.subject,email:m.email,name:m.name},instagram:p&&{subject:p.subject,username:p.username},tiktok:c&&{subject:c.subject,username:c.username,name:c.name},linkedin:_&&{subject:_.subject,name:_.name,email:_.email,vanityName:_.vanityName},apple:y&&{subject:y.subject,email:y.email},farcaster:h&&{fid:h.fid,ownerAddress:h.ownerAddress,displayName:h.displayName,username:h.username,bio:h.bio,pfp:h.pfp,url:h.url,signerPublicKey:h.signerPublicKey},telegram:v&&{telegramUserId:v.telegramUserId,firstName:v.firstName,lastName:v.lastName,username:v.username,photoUrl:v.photoUrl},delegatedWallets:[],mfaMethods:b.map((e=>e.type)),hasAcceptedTerms:e.has_accepted_terms??!1,isGuest:e.is_guest,customMetadata:e.custom_metadata}}const A=e=>!!e.id&&"privy-v2"===e.recoveryMethod,k=/*#__PURE__*/t({ready:!1,authenticated:!1,user:null,walletConnectors:null,connectWallet:r,login:r,connectOrCreateWallet:r,linkEmail:r,linkPhone:r,linkFarcaster:r,linkWallet:r,startCrossAppAuthFlow:r,linkGoogle:r,linkTwitter:r,linkDiscord:r,linkGithub:r,linkSpotify:r,linkInstagram:r,linkTelegram:r,linkTiktok:r,linkLinkedIn:r,linkApple:r,linkPasskey:r,updateEmail:r,updatePhone:r,logout:r,getAccessToken:r,unlinkEmail:r,unlinkPhone:r,unlinkWallet:r,unlinkGoogle:r,unlinkTwitter:r,unlinkDiscord:r,unlinkGithub:r,unlinkSpotify:r,unlinkInstagram:r,unlinkTiktok:r,unlinkLinkedIn:r,unlinkApple:r,unlinkCrossAppAccount:r,unlinkFarcaster:r,unlinkTelegram:r,unlinkPasskey:r,signMessage:r,signTypedData:r,enrollInMfa:r,initEnrollmentWithSms:r,initEnrollmentWithTotp:r,initEnrollmentWithPasskey:r,promptMfa:r,init:r,submitEnrollmentWithSms:r,submitEnrollmentWithTotp:r,submitEnrollmentWithPasskey:r,unenroll:r,submit:r,cancel:r,sendTransaction:r,signTransaction:r,exportWallet:r,setWalletPassword:r,setWalletRecovery:r,requestFarcasterSignerFromWarpcast:r,getFarcasterSignerPublicKey:r,signFarcasterMessage:r,signMessageWithCrossAppWallet:r,signTypedDataWithCrossAppWallet:r,sendTransactionWithCrossAppWallet:r,isModalOpen:!1,mfaMethods:[]}),g=()=>i(k),w=()=>{let{getAccessToken:e}=g(),{walletProxy:t}=s();return a((()=>({signWithUserSigner:async({message:i})=>{if(!t)throw Error("Wallet proxy not initialized");let a=await e();if(!a)throw Error("User must be authenticated");let{signature:r}=await t.signWithUserSigner({accessToken:a,message:i});return{signature:r}}})),[t,e])};export{k as P,w as a,y as b,A as c,o as d,c as e,f,d as g,v as h,b as i,m as j,p as k,u as l,h as m,g as u};