@privy-io/react-auth
Version:
React client for the Privy Auth API
2 lines (1 loc) • 8.89 kB
JavaScript
import{getAddress as e}from"viem";import{createContext as t,useContext as i}from"react";import{n as a}from"./internal-context-LlMdpfkb.mjs";function r(e){return e?new Date(1e3*e):null}function s(e,t){return e.slice().sort(((e,t)=>(e.firstVerifiedAt?.getTime()??0)-(t.firstVerifiedAt?.getTime()??0))).find((e=>e.type===t))}const l=e=>e?n(e).find((e=>0===e.walletIndex))??null:null,n=e=>e?d(e,"ethereum"):[],d=(e,t)=>e.linkedAccounts.filter((e=>"wallet"===e.type&&"privy"===e.walletClientType&&!e.imported&&e.chainType===t)),u=e=>e?d(e,"solana"):[],p=e=>e?u(e).find((e=>0===e.walletIndex))??null:null,o=e=>e?.linkedAccounts.find((e=>"wallet"===e.type&&"privy"===e.walletClientType&&e.imported&&"ethereum"===e.chainType))||null,m=e=>e?.linkedAccounts.find((e=>"wallet"===e.type&&e.imported&&"privy"===e.walletClientType&&"solana"===e.chainType))||null;let c=(t,i)=>t===i||!(!t.startsWith("0x")||!i.startsWith("0x"))&&e(t)===e(i);const f=(e,t)=>e?.linkedAccounts.find((e=>"wallet"===e.type&&"privy"===e.walletClientType&&c(e.address,t)))||null,_=(e,t)=>e.find((e=>c(e.address,t)))||null,y=e=>l(e)??p(e);function h(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,firstVerifiedAt:r(i.first_verified_at),latestVerifiedAt:r(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 s={address:i.address,type:i.type,firstVerifiedAt:r(i.first_verified_at),latestVerifiedAt:r(i.latest_verified_at),smartWalletType:i.smart_wallet_type,smartWalletVersion:i.smart_wallet_version};t.push(s);break;case"cross_app":let l={type:i.type,subject:i.subject,embeddedWallets:i.embedded_wallets,smartWallets:i.smart_wallets,providerApp:{id:i.provider_app_id},firstVerifiedAt:r(i.first_verified_at),latestVerifiedAt:r(i.latest_verified_at)};t.push(l);break;case"email":let n={address:i.address,type:i.type,firstVerifiedAt:r(i.first_verified_at),latestVerifiedAt:r(i.latest_verified_at)};t.push(n);break;case"phone":let d={number:i.phoneNumber,type:i.type,firstVerifiedAt:r(i.first_verified_at),latestVerifiedAt:r(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,firstVerifiedAt:r(i.first_verified_at),latestVerifiedAt:r(i.latest_verified_at)};t.push(u);break;case"spotify_oauth":let p={subject:i.subject,email:i.email,name:i.name,type:i.type,firstVerifiedAt:r(i.first_verified_at),latestVerifiedAt:r(i.latest_verified_at)};t.push(p);break;case"instagram_oauth":let o={subject:i.subject,username:i.username,type:i.type,firstVerifiedAt:r(i.first_verified_at),latestVerifiedAt:r(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,firstVerifiedAt:r(i.first_verified_at),latestVerifiedAt:r(i.latest_verified_at)};t.push(m);break;case"discord_oauth":let c={subject:i.subject,username:i.username,email:i.email,type:i.type,firstVerifiedAt:r(i.first_verified_at),latestVerifiedAt:r(i.latest_verified_at)};t.push(c);break;case"github_oauth":let f={subject:i.subject,username:i.username,name:i.name,email:i.email,type:i.type,firstVerifiedAt:r(i.first_verified_at),latestVerifiedAt:r(i.latest_verified_at)};t.push(f);break;case"tiktok_oauth":let _={subject:i.subject,username:i.username,name:i.name,type:i.type,firstVerifiedAt:r(i.first_verified_at),latestVerifiedAt:r(i.latest_verified_at)};t.push(_);break;case"line_oauth":let y={subject:i.subject,name:i.name,email:i.email,profilePictureUrl:i.profile_picture_url,type:i.type,firstVerifiedAt:r(i.first_verified_at),latestVerifiedAt:r(i.latest_verified_at)};t.push(y);break;case"linkedin_oauth":let h={subject:i.subject,name:i.name,email:i.email,vanityName:i.vanity_name,type:i.type,firstVerifiedAt:r(i.first_verified_at),latestVerifiedAt:r(i.latest_verified_at)};t.push(h);break;case"apple_oauth":let b={subject:i.subject,email:i.email,type:i.type,firstVerifiedAt:r(i.first_verified_at),latestVerifiedAt:r(i.latest_verified_at)};t.push(b);break;case"custom_auth":t.push({type:i.type,customUserId:i.custom_user_id,firstVerifiedAt:r(i.first_verified_at),latestVerifiedAt:r(i.latest_verified_at)});break;case"farcaster":let k={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,firstVerifiedAt:r(i.first_verified_at),latestVerifiedAt:r(i.latest_verified_at),signerPublicKey:i.signer_public_key};t.push(k);break;case"passkey":let v={type:i.type,enrolledInMfa:i.enrolled_in_mfa,credentialId:i.credential_id,publicKey:i.public_key,authenticatorName:i.authenticator_name,createdWithDevice:i.created_with_device,createdWithOs:i.created_with_os,createdWithBrowser:i.created_with_browser,firstVerifiedAt:r(i.first_verified_at),latestVerifiedAt:r(i.latest_verified_at)};t.push(v);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,firstVerifiedAt:r(i.first_verified_at),latestVerifiedAt:r(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=s(t,"wallet"),a=s(t,"smart_wallet"),l=s(t,"email"),n=s(t,"phone"),d=s(t,"google_oauth"),u=s(t,"twitter_oauth"),p=s(t,"discord_oauth"),o=s(t,"github_oauth"),m=s(t,"spotify_oauth"),c=s(t,"instagram_oauth"),f=s(t,"tiktok_oauth"),_=s(t,"line_oauth"),y=s(t,"linkedin_oauth"),h=s(t,"apple_oauth"),b=s(t,"farcaster"),k=s(t,"telegram"),v=e.mfa_methods.map((({type:e,verified_at:t})=>({type:e,verifiedAt:r(t)})));return{id:e.id,createdAt:r(e.created_at),linkedAccounts:t,email:l&&{address:l?.address},phone:n&&{number:n?.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,smartWalletVersion:a.smartWalletVersion},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:p&&{subject:p.subject,username:p.username,email:p.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:c&&{subject:c.subject,username:c.username},tiktok:f&&{subject:f.subject,username:f.username,name:f.name},line:_&&{subject:_.subject,name:_.name,email:_.email,profilePictureUrl:_.profilePictureUrl},linkedin:y&&{subject:y.subject,name:y.name,email:y.email,vanityName:y.vanityName},apple:h&&{subject:h.subject,email:h.email},farcaster:b&&{fid:b.fid,ownerAddress:b.ownerAddress,displayName:b.displayName,username:b.username,bio:b.bio,pfp:b.pfp,url:b.url,signerPublicKey:b.signerPublicKey},telegram:k&&{telegramUserId:k.telegramUserId,firstName:k.firstName,lastName:k.lastName,username:k.username,photoUrl:k.photoUrl},delegatedWallets:[],mfaMethods:v.map((e=>e.type)),hasAcceptedTerms:e.has_accepted_terms??!1,isGuest:e.is_guest,customMetadata:e.custom_metadata}}const b=e=>!!e.id&&"privy-v2"===e.recoveryMethod,k=/*#__PURE__*/t({ready:!1,authenticated:!1,user:null,walletConnectors:null,connectWallet:a,login:a,connectOrCreateWallet:a,linkEmail:a,linkPhone:a,linkFarcaster:a,linkWallet:a,startCrossAppAuthFlow:a,linkGoogle:a,linkTwitter:a,linkDiscord:a,linkGithub:a,linkSpotify:a,linkInstagram:a,linkTelegram:a,linkTiktok:a,linkLine:a,linkLinkedIn:a,linkApple:a,linkPasskey:a,updateEmail:a,updatePhone:a,logout:a,getAccessToken:a,unlinkEmail:a,unlinkPhone:a,unlinkWallet:a,unlinkGoogle:a,unlinkTwitter:a,unlinkDiscord:a,unlinkGithub:a,unlinkSpotify:a,unlinkInstagram:a,unlinkTiktok:a,unlinkLine:a,unlinkLinkedIn:a,unlinkApple:a,unlinkCrossAppAccount:a,unlinkFarcaster:a,unlinkTelegram:a,unlinkPasskey:a,signMessage:a,signTypedData:a,enrollInMfa:a,initEnrollmentWithSms:a,initEnrollmentWithTotp:a,initEnrollmentWithPasskey:a,promptMfa:a,init:a,submitEnrollmentWithSms:a,submitEnrollmentWithTotp:a,submitEnrollmentWithPasskey:a,unenroll:a,submit:a,cancel:a,sendTransaction:a,signTransaction:a,exportWallet:a,setWalletPassword:a,setWalletRecovery:a,requestFarcasterSignerFromWarpcast:a,getFarcasterSignerPublicKey:a,signFarcasterMessage:a,signMessageWithCrossAppWallet:a,signTypedDataWithCrossAppWallet:a,sendTransactionWithCrossAppWallet:a,signTransactionWithCrossAppWallet:a,isModalOpen:!1,mfaMethods:[]}),v=()=>i(k);export{k as P,y as a,l as b,h as c,n as d,o as e,f,b as g,_ as h,m as i,u as j,p as k,d as l,v as u};