@privy-io/react-auth 1.10.0-beta.7 → 1.10.0-beta.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs.js CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";var J3=Object.create;var J1=Object.defineProperty;var X3=Object.getOwnPropertyDescriptor;var Q3=Object.getOwnPropertyNames;var t5=Object.getPrototypeOf,e5=Object.prototype.hasOwnProperty;var i5=(i,e)=>{for(var a in e)J1(i,a,{get:e[a],enumerable:!0})},c4=(i,e,a,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Q3(e))!e5.call(i,r)&&r!==a&&J1(i,r,{get:()=>e[r],enumerable:!(o=X3(e,r))||o.enumerable});return i};var w=(i,e,a)=>(a=i!=null?J3(t5(i)):{},c4(e||!i||!i.__esModule?J1(a,"default",{value:i,enumerable:!0}):a,i)),a5=i=>c4(J1({},"__esModule",{value:!0}),i);var b6={};i5(b6,{PrivyProvider:()=>K3,VERSION:()=>t2,getAccessToken:()=>q3,usePrivy:()=>T});module.exports=a5(b6);var H=require("react");var a2=w(require("axios"));var p4=w(require("axios")),K=class extends Error{constructor(a,o){super(a);o instanceof Error&&(this.cause=o)}toString(){return`${this.type}: ${this.message}${this.cause?` [cause: ${this.cause}]`:""}`}},X1=class extends K{constructor(a,o,r,s){super(r,s);this.type=a;this.status=o}},C=class extends K{constructor(a,o){super(a,o);this.type="client_error"}};var j=class extends K{constructor(a,o){super(a,o);this.type="connector_error"}},L=i=>{if(i instanceof K)return i;if(!p4.default.isAxiosError(i))return z(i);if(!i.response)return new X1("api_error",null,i.message,i);let{type:e,message:a,error:o}=i.response.data;return new X1(e||"ApiError",i.response.status,a||o,i)},z=i=>i instanceof K?i:i instanceof Error?new C(i.message,i):new C(`Internal error: ${i}`);var h4="1.10.0-beta.7";var f4="https://api.privy.io/v0",u4=process.env.NEXT_PUBLIC_PRIVY_AUTH_URL||"https://auth.privy.io",Q1="4df5e2316331463a9130964bd6078dfa",m4=1e4,Z1=1200,b4=365*24*60*60,t2=h4,k4="ES256",g4="privy.io",x1="privy:token",e2="privy:refresh_token",i2="privy:wallet_type",M4="walletconnect";var o2=class{constructor(e,a,o){this.appId=e,this.sdkVersion=t2,this.session=a,this.defaults=o}async get(e,a){try{return await a2.default.get(e,this.buildConfig({headers:{"Cache-Control":"no-cache"},...a}))}catch(o){throw L(o)}}async post(e,a,o){try{return await a2.default.post(e,a,this.buildConfig(o))}catch(r){throw L(r)}}async delete(e,a){try{return await a2.default.delete(e,this.buildConfig(a))}catch(o){throw L(o)}}buildConfig(e){return e=e||{},e.headers=e.headers||{},e.headers["privy-app-id"]=this.appId,e.headers["privy-client"]=`react-auth:${this.sdkVersion}`,this.session.token!==null&&(e.headers.authorization=`Bearer ${this.session.token}`),{...this.defaults,...e}}};var L1=w(require("jose"));var n1=class{static parse(e){try{return new n1(e)}catch{return null}}constructor(e){this.value=e,this._decoded=L1.decodeJwt(e)}get subject(){return this._decoded.sub}get expiration(){return this._decoded.exp}get issuer(){return this._decoded.iss}get audience(){return this._decoded.aud}isExpired(e=0){let a=Date.now(),o=(this.expiration-e)*1e3;return a>=o}async isValid(e,a,o=0){let r=await L1.importSPKI(e,k4);try{return await L1.jwtVerify(this.value,r,{issuer:g4,audience:a,clockTolerance:o}),!0}catch{return!1}}};var s1=class{constructor(e){this.promise=null;this.fn=e}execute(e){return this.promise===null&&(this.promise=(async()=>{try{return await this.fn(e)}finally{this.promise=null}})()),this.promise}};var I2=class{constructor(){this._cache={}}get(e){return this._cache[e]}put(e,a){a!==void 0?this._cache[e]=a:this.del(e)}del(e){delete this._cache[e]}},R2=class{get(e){let a=localStorage.getItem(e);return a===null?void 0:JSON.parse(a)}put(e,a){a!==void 0?localStorage.setItem(e,JSON.stringify(a)):this.del(e)}del(e){localStorage.removeItem(e)}};function r5(){return typeof window<"u"&&window.localStorage?new R2:new I2}var F=r5();function h1(i){return new Date(i*1e3)}function l5(i){return i.map(e=>{switch(e.type){case"wallet":return{address:e.address,type:e.type,verifiedAt:h1(e.verified_at),chainType:e.chain_type};case"email":return{address:e.address,type:e.type,verifiedAt:h1(e.verified_at)};case"phone":return{number:e.phoneNumber,type:e.type,verifiedAt:h1(e.verified_at)};case"google_oauth":return{subject:e.subject,email:e.email,name:e.name,type:e.type,verifiedAt:h1(e.verified_at)};case"twitter_oauth":return{subject:e.subject,username:e.username,name:e.name,type:e.type,verifiedAt:h1(e.verified_at)};case"discord_oauth":return{subject:e.subject,username:e.username,email:e.email,type:e.type,verifiedAt:h1(e.verified_at)};default:throw new C("Unrecognized account type")}})}function A1(i,e){return i.sort((a,o)=>o.verifiedAt.getTime()-a.verifiedAt.getTime()),i.find(a=>a.type===e)}function i1(i){if(!i)return null;let e=l5(i.linked_accounts),a=A1(e,"wallet"),o=A1(e,"email"),r=A1(e,"phone"),s=A1(e,"google_oauth"),d=A1(e,"twitter_oauth"),f=A1(e,"discord_oauth");return{id:i.id,createdAt:h1(i.created_at),linkedAccounts:e,email:o&&{address:o==null?void 0:o.address},phone:r&&{number:r==null?void 0:r.number},wallet:a&&{address:a.address,chainType:a.chainType,chainId:a.chainId,walletType:a.walletType},google:s&&{subject:s.subject,email:s.email,name:s.name},twitter:d&&{subject:d.subject,username:d.username,name:d.name},discord:f&&{subject:f.subject,username:f.username,email:f.email}}}var w4=()=>"/api/v1/sessions",y4=()=>"/api/v1/sessions/logout",v4=()=>"/api/v1/sessions/fork",Z4=()=>"/api/v1/siwe/init",x4=()=>"/api/v1/siwe/authenticate",L4=()=>"/api/v1/siwe/link",A4=()=>"/api/v1/passwordless/init",E4=()=>"/api/v1/passwordless/authenticate",_4=()=>"/api/v1/passwordless/link",P4=()=>"/api/v1/passwordless_sms/init",T4=()=>"/api/v1/passwordless_sms/authenticate",S4=()=>"/api/v1/passwordless_sms/link",I4=()=>"/api/v1/oauth/init",R4=()=>"/api/v1/oauth/authenticate",W4=()=>"/api/v1/oauth/link",O4=()=>"/api/v1/siwe/unlink",N4=()=>"/api/v1/passwordless/unlink",U4=()=>"/api/v1/passwordless_sms/unlink",D4=()=>"/api/v1/oauth/unlink";var n5=30,r2=class{constructor(){this.authenticateOnce=new s1(async e=>this._authenticate(e)),this.linkOnce=new s1(async e=>this._link(e)),this.refreshOnce=new s1(this._refresh.bind(this)),this.destroyOnce=new s1(this._destroy.bind(this)),this.forkSessionOnce=new s1(this._forkSession.bind(this))}get token(){try{let e=F.get(x1);return typeof e=="string"?new n1(e).value:null}catch(e){return console.error(e),this.destroyLocalState(),null}}get refreshToken(){try{let e=F.get(e2);return typeof e=="string"?e:null}catch(e){return console.error(e),this.destroyLocalState(),null}}hasRefreshCredentials(){return typeof this.token=="string"&&typeof this.refreshToken=="string"}hasActiveToken(){let e=n1.parse(this.token);return e!==null&&!e.isExpired(n5)}async hasValidToken(e,a,o=0){let r=n1.parse(this.token);return r!==null&&await r.isValid(e,a,o)}authenticate(e){return this.authenticateOnce.execute(e)}link(e){return this.linkOnce.execute(e)}refresh(){return this.refreshOnce.execute()}forkSession(){return this.forkSessionOnce.execute()}destroy(){return this.destroyOnce.execute()}async _authenticate(e){try{let{token:a,refresh_token:o,user:r}=await e.authenticate();return this.storeToken(a),this.storeRefreshToken(o),i1(r)}catch(a){throw console.warn("Error authenticating session"),z(a)}}async _link(e){try{let a=await e.link();return i1(a)}catch(a){throw console.warn("Error linking account"),z(a)}}async _refresh(){if(!this.api)throw new C("Session has no API instance");let e=this.token,a=this.refreshToken;if(!e||!a)return null;try{let o=await this.api.post(w4(),{refresh_token:a});return this.storeToken(o.data.token),this.storeRefreshToken(o.data.refresh_token),i1(o.data.user)}catch(o){throw z(o)}}async _destroy(){var e;try{await((e=this.api)==null?void 0:e.post(y4(),{refresh_token:this.refreshToken}))}catch{console.warn("Error destroying session")}this.destroyLocalState()}async _forkSession(){if(!this.api)throw new C("Session has no API instance");let e=this.refreshToken;try{let a=await this.api.post(v4(),{refresh_token:e});return this.storeToken(a.data.token),this.storeRefreshToken(a.data.refresh_token),a.data.new_session_refresh_token}catch(a){throw z(a)}}destroyLocalState(){this.storeToken(null),this.storeRefreshToken(null)}storeToken(e){typeof e=="string"?F.put(x1,e):F.del(x1)}storeRefreshToken(e){typeof e=="string"?F.put(e2,e):F.del(e2)}};var G4=require("@ethersproject/address"),N2=w(require("@walletconnect/web3-provider"));var F4=require("ethers");var E1=class extends j{constructor(){super("Wallet timeout");this.type="wallet_error"}},l2=i=>{if(i instanceof j)return i;if((i==null?void 0:i.code)&&(i==null?void 0:i.reason)){let e=new _1(i);return i.code===F4.ethers.errors.ACTION_REJECTED&&(e.details=f1.E4001_USER_REJECTED_REQUEST),e}return i!=null&&i.code?new _1(i):new j("Unknown connector error",i)},W2=class extends K{constructor(a,o,r){super(a);this.type="provider_error";this.code=o,this.data=r}},_1=class extends W2{constructor(a){var s,d,f;let o=a;super(o.message,o.code,o.data);let r=Object.values(f1).find(u=>u.eipCode===o.code);this.details=r||f1.UNKNOWN_ERROR,o.code===-32002&&((s=o.message)!=null&&s.includes("already pending for origin")?(d=o.message)!=null&&d.includes("wallet_requestPermissions")?this.details=f1.E32002_CONNECTION_ALREADY_PENDING:this.details=f1.E32002_REQUEST_ALREADY_PENDING:(f=o.message)!=null&&f.includes("Already processing")&&o.message.includes("eth_requestAccounts")&&(this.details=f1.E32002_WALLET_LOCKED))}},s5={ERROR_USER_EXISTS:{message:"User already exists for this address",detail:"Try another address!",retryable:!1},ERROR_TIMED_OUT:{message:"Wallet request timed out",detail:"Please try connecting again.",retryable:!0},ERROR_WALLET_CONNECTION:{message:"Could not log in with wallet",detail:"Please try connecting again.",retryable:!0}},C5={E32002_CONNECTION_ALREADY_PENDING:{eipCode:-32002,message:"Connection request already pending",detail:"Don\u2019t see your wallet modal? Check your other browser windows.",retryable:!1},E32002_REQUEST_ALREADY_PENDING:{eipCode:-32002,message:"Resource request already pending",detail:"Don\u2019t see your wallet modal? Check your other browser windows.",retryable:!1},E32002_WALLET_LOCKED:{eipCode:-32002,message:"Wallet might be locked",detail:"Don\u2019t see your wallet modal? Check your other browser windows.",retryable:!1},E4001_USER_REJECTED_REQUEST:{eipCode:4001,message:"Signature rejected",detail:"Please try signing again.",retryable:!0}},d5={E4001_DEFAULT_USER_REJECTED_REQUEST:{eipCode:4001,message:"User Rejected Request",detail:"The user rejected the request.",default:!0,retryable:!0},E4100_DEFAULT_UNAUTHORIZED:{eipCode:4100,message:"Unauthorized",detail:"The requested method and/or account has not been authorized by the user.",default:!0,retryable:!1},E4200_DEFAULT_UNSUPPORTED_METHOD:{eipCode:4200,message:"Unsupported Method",detail:"The Provider does not support the requested method.",default:!0,retryable:!1},E4900_DEFAULT_DISCONNECTED:{eipCode:4900,message:"Disconnected",detail:"The Provider is disconnected from all chains.",default:!0,retryable:!0},E4901_DEFAULT_CHAIN_DISCONNECTED:{eipCode:4901,message:"Chain Disconnected",detail:"The Provider is not connected to the requested chain.",default:!0,retryable:!0},E32700_DEFAULT_PARSE_ERROR:{eipCode:-32700,message:"Parse error",detail:"Invalid JSON",default:!0,retryable:!1},E32600_DEFAULT_INVALID_REQUEST:{eipCode:-32600,message:"Invalid request",detail:"JSON is not a valid request object",default:!0,retryable:!1},E32601_DEFAULT_METHOD_NOT_FOUND:{eipCode:-32601,message:"Method not found",detail:"Method does not exist",default:!0,retryable:!1},E32602_DEFAULT_INVALID_PARAMS:{eipCode:-32602,message:"Invalid params",detail:"Invalid method parameters",default:!0,retryable:!1},E32603_DEFAULT_INTERNAL_ERROR:{eipCode:-32603,message:"Internal error",detail:"Internal JSON-RPC error",default:!0,retryable:!0},E32000_DEFAULT_INVALID_INPUT:{eipCode:-32e3,message:"Invalid input",detail:"Missing or invalid parameters",default:!0,retryable:!1},E32001_DEFAULT_RESOURCE_NOT_FOUND:{eipCode:-32001,message:"Resource not found",detail:"Requested resource not found",default:!0,retryable:!1},E32002_DEFAULT_RESOURCE_UNAVAILABLE:{eipCode:-32002,message:"Resource unavailable",detail:"Requested resource not available",default:!0,retryable:!0},E32003_DEFAULT_TRANSACTION_REJECTED:{eipCode:-32003,message:"Transaction rejected",detail:"Transaction creation failed",default:!0,retryable:!0},E32004_DEFAULT_METHOD_NOT_SUPPORTED:{eipCode:-32004,message:"Method not supported",detail:"Method is not implemented",default:!0,retryable:!1},E32005_DEFAULT_LIMIT_EXCEEDED:{eipCode:-32005,message:"Limit exceeded",detail:"Request exceeds defined limit",default:!0,retryable:!1},E32006_DEFAULT_JSON_RPC_VERSION_NOT_SUPPORTED:{eipCode:-32006,message:"JSON-RPC version not supported",detail:"Version of JSON-RPC protocol is not supported",default:!0,retryable:!1}},f1={UNKNOWN_ERROR:{eipCode:0,message:"Unknown error",detail:"Unknown error",retryable:!0},...d5,...C5},n2={...s5,...f1};var c5=12e4,O2=(i=new E1,e=c5)=>new Promise((a,o)=>setTimeout(()=>{o(i)},e)),P1=class{constructor(e){this.removeListener=(e,a)=>{if(this.walletProvider)return this.walletProvider.removeListener(e,a)};this.setProvider=e=>{this.walletProvider=e,this._subscriptions.forEach(a=>{var o;(o=this.walletProvider)==null||o.on(a.eventName,a.listener)})};this.walletProvider=e,this._subscriptions=[]}on(e,a){if(this.walletProvider)return this.walletProvider.on(e,a);this._subscriptions.push({eventName:e,listener:a})}request(e){if(!this.walletProvider)throw new j(`A wallet request of type ${e.method} was made before setting a wallet provider.`);return Promise.race([this.walletProvider.request(e),O2()]).catch(a=>{throw l2(a)})}},T1=class extends P1{constructor(a){super(a)}},s2=class extends P1{constructor(e){super(e)}sendAsync(e,a){throw new Error("sendAsync is no longer supported by EIP-1193. Use the request method instead.")}};var H4=require("ethers");var V4=["metamask","coinbase_wallet","wallet_connect"];var B4=w(require("@coinbase/wallet-sdk")),p5=()=>{let i=`https://mainnet.infura.io/v3/${Q1}`,e=1;return new B4.default({appName:"Privy",darkMode:!1,headlessMode:!1}).makeWeb3Provider(i,e)},U2=()=>{if(!window.ethereum)return!1;if(window.ethereum.isMetaMask)return!0;if(window.ethereum.providers){for(let i of window.ethereum.providers)if(i.isMetaMask)return!0}return!1},d2=()=>{if(!window.ethereum)return!1;if(window.ethereum.isCoinbaseWallet)return!0;if(window.ethereum.providers){for(let i of window.ethereum.providers)if(i.isCoinbaseWallet)return!0}return!1},C2=class{constructor(){this.walletType=null;this.getEthereumProvider=()=>this.ethProvider;this.createSiweMessage=(e,a,o,r,s,d,f)=>`${o} wants you to sign in with your Ethereum account:
1
+ "use strict";var J3=Object.create;var J1=Object.defineProperty;var X3=Object.getOwnPropertyDescriptor;var Q3=Object.getOwnPropertyNames;var t5=Object.getPrototypeOf,e5=Object.prototype.hasOwnProperty;var i5=(i,e)=>{for(var a in e)J1(i,a,{get:e[a],enumerable:!0})},c4=(i,e,a,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Q3(e))!e5.call(i,r)&&r!==a&&J1(i,r,{get:()=>e[r],enumerable:!(o=X3(e,r))||o.enumerable});return i};var w=(i,e,a)=>(a=i!=null?J3(t5(i)):{},c4(e||!i||!i.__esModule?J1(a,"default",{value:i,enumerable:!0}):a,i)),a5=i=>c4(J1({},"__esModule",{value:!0}),i);var b6={};i5(b6,{PrivyProvider:()=>K3,VERSION:()=>t2,getAccessToken:()=>q3,usePrivy:()=>T});module.exports=a5(b6);var H=require("react");var a2=w(require("axios"));var p4=w(require("axios")),K=class extends Error{constructor(a,o){super(a);o instanceof Error&&(this.cause=o)}toString(){return`${this.type}: ${this.message}${this.cause?` [cause: ${this.cause}]`:""}`}},X1=class extends K{constructor(a,o,r,s){super(r,s);this.type=a;this.status=o}},C=class extends K{constructor(a,o){super(a,o);this.type="client_error"}};var j=class extends K{constructor(a,o){super(a,o);this.type="connector_error"}},L=i=>{if(i instanceof K)return i;if(!p4.default.isAxiosError(i))return z(i);if(!i.response)return new X1("api_error",null,i.message,i);let{type:e,message:a,error:o}=i.response.data;return new X1(e||"ApiError",i.response.status,a||o,i)},z=i=>i instanceof K?i:i instanceof Error?new C(i.message,i):new C(`Internal error: ${i}`);var h4="1.10.0-beta.8";var f4="https://api.privy.io/v0",u4=process.env.NEXT_PUBLIC_PRIVY_AUTH_URL||"https://auth.privy.io",Q1="4df5e2316331463a9130964bd6078dfa",m4=1e4,Z1=1200,b4=365*24*60*60,t2=h4,k4="ES256",g4="privy.io",x1="privy:token",e2="privy:refresh_token",i2="privy:wallet_type",M4="walletconnect";var o2=class{constructor(e,a,o){this.appId=e,this.sdkVersion=t2,this.session=a,this.defaults=o}async get(e,a){try{return await a2.default.get(e,this.buildConfig({headers:{"Cache-Control":"no-cache"},...a}))}catch(o){throw L(o)}}async post(e,a,o){try{return await a2.default.post(e,a,this.buildConfig(o))}catch(r){throw L(r)}}async delete(e,a){try{return await a2.default.delete(e,this.buildConfig(a))}catch(o){throw L(o)}}buildConfig(e){return e=e||{},e.headers=e.headers||{},e.headers["privy-app-id"]=this.appId,e.headers["privy-client"]=`react-auth:${this.sdkVersion}`,this.session.token!==null&&(e.headers.authorization=`Bearer ${this.session.token}`),{...this.defaults,...e}}};var L1=w(require("jose"));var n1=class{static parse(e){try{return new n1(e)}catch{return null}}constructor(e){this.value=e,this._decoded=L1.decodeJwt(e)}get subject(){return this._decoded.sub}get expiration(){return this._decoded.exp}get issuer(){return this._decoded.iss}get audience(){return this._decoded.aud}isExpired(e=0){let a=Date.now(),o=(this.expiration-e)*1e3;return a>=o}async isValid(e,a,o=0){let r=await L1.importSPKI(e,k4);try{return await L1.jwtVerify(this.value,r,{issuer:g4,audience:a,clockTolerance:o}),!0}catch{return!1}}};var s1=class{constructor(e){this.promise=null;this.fn=e}execute(e){return this.promise===null&&(this.promise=(async()=>{try{return await this.fn(e)}finally{this.promise=null}})()),this.promise}};var I2=class{constructor(){this._cache={}}get(e){return this._cache[e]}put(e,a){a!==void 0?this._cache[e]=a:this.del(e)}del(e){delete this._cache[e]}},R2=class{get(e){let a=localStorage.getItem(e);return a===null?void 0:JSON.parse(a)}put(e,a){a!==void 0?localStorage.setItem(e,JSON.stringify(a)):this.del(e)}del(e){localStorage.removeItem(e)}};function r5(){return typeof window<"u"&&window.localStorage?new R2:new I2}var F=r5();function h1(i){return new Date(i*1e3)}function l5(i){return i.map(e=>{switch(e.type){case"wallet":return{address:e.address,type:e.type,verifiedAt:h1(e.verified_at),chainType:e.chain_type};case"email":return{address:e.address,type:e.type,verifiedAt:h1(e.verified_at)};case"phone":return{number:e.phoneNumber,type:e.type,verifiedAt:h1(e.verified_at)};case"google_oauth":return{subject:e.subject,email:e.email,name:e.name,type:e.type,verifiedAt:h1(e.verified_at)};case"twitter_oauth":return{subject:e.subject,username:e.username,name:e.name,type:e.type,verifiedAt:h1(e.verified_at)};case"discord_oauth":return{subject:e.subject,username:e.username,email:e.email,type:e.type,verifiedAt:h1(e.verified_at)};default:throw new C("Unrecognized account type")}})}function A1(i,e){return i.sort((a,o)=>o.verifiedAt.getTime()-a.verifiedAt.getTime()),i.find(a=>a.type===e)}function i1(i){if(!i)return null;let e=l5(i.linked_accounts),a=A1(e,"wallet"),o=A1(e,"email"),r=A1(e,"phone"),s=A1(e,"google_oauth"),d=A1(e,"twitter_oauth"),f=A1(e,"discord_oauth");return{id:i.id,createdAt:h1(i.created_at),linkedAccounts:e,email:o&&{address:o==null?void 0:o.address},phone:r&&{number:r==null?void 0:r.number},wallet:a&&{address:a.address,chainType:a.chainType,chainId:a.chainId,walletType:a.walletType},google:s&&{subject:s.subject,email:s.email,name:s.name},twitter:d&&{subject:d.subject,username:d.username,name:d.name},discord:f&&{subject:f.subject,username:f.username,email:f.email}}}var w4=()=>"/api/v1/sessions",y4=()=>"/api/v1/sessions/logout",v4=()=>"/api/v1/sessions/fork",Z4=()=>"/api/v1/siwe/init",x4=()=>"/api/v1/siwe/authenticate",L4=()=>"/api/v1/siwe/link",A4=()=>"/api/v1/passwordless/init",E4=()=>"/api/v1/passwordless/authenticate",_4=()=>"/api/v1/passwordless/link",P4=()=>"/api/v1/passwordless_sms/init",T4=()=>"/api/v1/passwordless_sms/authenticate",S4=()=>"/api/v1/passwordless_sms/link",I4=()=>"/api/v1/oauth/init",R4=()=>"/api/v1/oauth/authenticate",W4=()=>"/api/v1/oauth/link",O4=()=>"/api/v1/siwe/unlink",N4=()=>"/api/v1/passwordless/unlink",U4=()=>"/api/v1/passwordless_sms/unlink",D4=()=>"/api/v1/oauth/unlink";var n5=30,r2=class{constructor(){this.authenticateOnce=new s1(async e=>this._authenticate(e)),this.linkOnce=new s1(async e=>this._link(e)),this.refreshOnce=new s1(this._refresh.bind(this)),this.destroyOnce=new s1(this._destroy.bind(this)),this.forkSessionOnce=new s1(this._forkSession.bind(this))}get token(){try{let e=F.get(x1);return typeof e=="string"?new n1(e).value:null}catch(e){return console.error(e),this.destroyLocalState(),null}}get refreshToken(){try{let e=F.get(e2);return typeof e=="string"?e:null}catch(e){return console.error(e),this.destroyLocalState(),null}}hasRefreshCredentials(){return typeof this.token=="string"&&typeof this.refreshToken=="string"}hasActiveToken(){let e=n1.parse(this.token);return e!==null&&!e.isExpired(n5)}async hasValidToken(e,a,o=0){let r=n1.parse(this.token);return r!==null&&await r.isValid(e,a,o)}authenticate(e){return this.authenticateOnce.execute(e)}link(e){return this.linkOnce.execute(e)}refresh(){return this.refreshOnce.execute()}forkSession(){return this.forkSessionOnce.execute()}destroy(){return this.destroyOnce.execute()}async _authenticate(e){try{let{token:a,refresh_token:o,user:r}=await e.authenticate();return this.storeToken(a),this.storeRefreshToken(o),i1(r)}catch(a){throw console.warn("Error authenticating session"),z(a)}}async _link(e){try{let a=await e.link();return i1(a)}catch(a){throw console.warn("Error linking account"),z(a)}}async _refresh(){if(!this.api)throw new C("Session has no API instance");let e=this.token,a=this.refreshToken;if(!e||!a)return null;try{let o=await this.api.post(w4(),{refresh_token:a});return this.storeToken(o.data.token),this.storeRefreshToken(o.data.refresh_token),i1(o.data.user)}catch(o){throw z(o)}}async _destroy(){var e;try{await((e=this.api)==null?void 0:e.post(y4(),{refresh_token:this.refreshToken}))}catch{console.warn("Error destroying session")}this.destroyLocalState()}async _forkSession(){if(!this.api)throw new C("Session has no API instance");let e=this.refreshToken;try{let a=await this.api.post(v4(),{refresh_token:e});return this.storeToken(a.data.token),this.storeRefreshToken(a.data.refresh_token),a.data.new_session_refresh_token}catch(a){throw z(a)}}destroyLocalState(){this.storeToken(null),this.storeRefreshToken(null)}storeToken(e){typeof e=="string"?F.put(x1,e):F.del(x1)}storeRefreshToken(e){typeof e=="string"?F.put(e2,e):F.del(e2)}};var G4=require("@ethersproject/address"),N2=w(require("@walletconnect/web3-provider"));var F4=require("@ethersproject/logger");var E1=class extends j{constructor(){super("Wallet timeout");this.type="wallet_error"}},l2=i=>{if(i instanceof j)return i;if((i==null?void 0:i.code)&&(i==null?void 0:i.reason)){let e=new _1(i);return i.code===F4.ErrorCode.ACTION_REJECTED&&(e.details=f1.E4001_USER_REJECTED_REQUEST),e}return i!=null&&i.code?new _1(i):new j("Unknown connector error",i)},W2=class extends K{constructor(a,o,r){super(a);this.type="provider_error";this.code=o,this.data=r}},_1=class extends W2{constructor(a){var s,d,f;let o=a;super(o.message,o.code,o.data);let r=Object.values(f1).find(u=>u.eipCode===o.code);this.details=r||f1.UNKNOWN_ERROR,o.code===-32002&&((s=o.message)!=null&&s.includes("already pending for origin")?(d=o.message)!=null&&d.includes("wallet_requestPermissions")?this.details=f1.E32002_CONNECTION_ALREADY_PENDING:this.details=f1.E32002_REQUEST_ALREADY_PENDING:(f=o.message)!=null&&f.includes("Already processing")&&o.message.includes("eth_requestAccounts")&&(this.details=f1.E32002_WALLET_LOCKED))}},s5={ERROR_USER_EXISTS:{message:"User already exists for this address",detail:"Try another address!",retryable:!1},ERROR_TIMED_OUT:{message:"Wallet request timed out",detail:"Please try connecting again.",retryable:!0},ERROR_WALLET_CONNECTION:{message:"Could not log in with wallet",detail:"Please try connecting again.",retryable:!0}},C5={E32002_CONNECTION_ALREADY_PENDING:{eipCode:-32002,message:"Connection request already pending",detail:"Don\u2019t see your wallet modal? Check your other browser windows.",retryable:!1},E32002_REQUEST_ALREADY_PENDING:{eipCode:-32002,message:"Resource request already pending",detail:"Don\u2019t see your wallet modal? Check your other browser windows.",retryable:!1},E32002_WALLET_LOCKED:{eipCode:-32002,message:"Wallet might be locked",detail:"Don\u2019t see your wallet modal? Check your other browser windows.",retryable:!1},E4001_USER_REJECTED_REQUEST:{eipCode:4001,message:"Signature rejected",detail:"Please try signing again.",retryable:!0}},d5={E4001_DEFAULT_USER_REJECTED_REQUEST:{eipCode:4001,message:"User Rejected Request",detail:"The user rejected the request.",default:!0,retryable:!0},E4100_DEFAULT_UNAUTHORIZED:{eipCode:4100,message:"Unauthorized",detail:"The requested method and/or account has not been authorized by the user.",default:!0,retryable:!1},E4200_DEFAULT_UNSUPPORTED_METHOD:{eipCode:4200,message:"Unsupported Method",detail:"The Provider does not support the requested method.",default:!0,retryable:!1},E4900_DEFAULT_DISCONNECTED:{eipCode:4900,message:"Disconnected",detail:"The Provider is disconnected from all chains.",default:!0,retryable:!0},E4901_DEFAULT_CHAIN_DISCONNECTED:{eipCode:4901,message:"Chain Disconnected",detail:"The Provider is not connected to the requested chain.",default:!0,retryable:!0},E32700_DEFAULT_PARSE_ERROR:{eipCode:-32700,message:"Parse error",detail:"Invalid JSON",default:!0,retryable:!1},E32600_DEFAULT_INVALID_REQUEST:{eipCode:-32600,message:"Invalid request",detail:"JSON is not a valid request object",default:!0,retryable:!1},E32601_DEFAULT_METHOD_NOT_FOUND:{eipCode:-32601,message:"Method not found",detail:"Method does not exist",default:!0,retryable:!1},E32602_DEFAULT_INVALID_PARAMS:{eipCode:-32602,message:"Invalid params",detail:"Invalid method parameters",default:!0,retryable:!1},E32603_DEFAULT_INTERNAL_ERROR:{eipCode:-32603,message:"Internal error",detail:"Internal JSON-RPC error",default:!0,retryable:!0},E32000_DEFAULT_INVALID_INPUT:{eipCode:-32e3,message:"Invalid input",detail:"Missing or invalid parameters",default:!0,retryable:!1},E32001_DEFAULT_RESOURCE_NOT_FOUND:{eipCode:-32001,message:"Resource not found",detail:"Requested resource not found",default:!0,retryable:!1},E32002_DEFAULT_RESOURCE_UNAVAILABLE:{eipCode:-32002,message:"Resource unavailable",detail:"Requested resource not available",default:!0,retryable:!0},E32003_DEFAULT_TRANSACTION_REJECTED:{eipCode:-32003,message:"Transaction rejected",detail:"Transaction creation failed",default:!0,retryable:!0},E32004_DEFAULT_METHOD_NOT_SUPPORTED:{eipCode:-32004,message:"Method not supported",detail:"Method is not implemented",default:!0,retryable:!1},E32005_DEFAULT_LIMIT_EXCEEDED:{eipCode:-32005,message:"Limit exceeded",detail:"Request exceeds defined limit",default:!0,retryable:!1},E32006_DEFAULT_JSON_RPC_VERSION_NOT_SUPPORTED:{eipCode:-32006,message:"JSON-RPC version not supported",detail:"Version of JSON-RPC protocol is not supported",default:!0,retryable:!1}},f1={UNKNOWN_ERROR:{eipCode:0,message:"Unknown error",detail:"Unknown error",retryable:!0},...d5,...C5},n2={...s5,...f1};var c5=12e4,O2=(i=new E1,e=c5)=>new Promise((a,o)=>setTimeout(()=>{o(i)},e)),P1=class{constructor(e){this.removeListener=(e,a)=>{if(this.walletProvider)return this.walletProvider.removeListener(e,a)};this.setProvider=e=>{this.walletProvider=e,this._subscriptions.forEach(a=>{var o;(o=this.walletProvider)==null||o.on(a.eventName,a.listener)})};this.walletProvider=e,this._subscriptions=[]}on(e,a){if(this.walletProvider)return this.walletProvider.on(e,a);this._subscriptions.push({eventName:e,listener:a})}request(e){if(!this.walletProvider)throw new j(`A wallet request of type ${e.method} was made before setting a wallet provider.`);return Promise.race([this.walletProvider.request(e),O2()]).catch(a=>{throw l2(a)})}},T1=class extends P1{constructor(a){super(a)}},s2=class extends P1{constructor(e){super(e)}sendAsync(e,a){throw new Error("sendAsync is no longer supported by EIP-1193. Use the request method instead.")}};var H4=require("@ethersproject/providers");var V4=["metamask","coinbase_wallet","wallet_connect"];var B4=w(require("@coinbase/wallet-sdk")),p5=()=>{let i=`https://mainnet.infura.io/v3/${Q1}`,e=1;return new B4.default({appName:"Privy",darkMode:!1,headlessMode:!1}).makeWeb3Provider(i,e)},U2=()=>{if(!window.ethereum)return!1;if(window.ethereum.isMetaMask)return!0;if(window.ethereum.providers){for(let i of window.ethereum.providers)if(i.isMetaMask)return!0}return!1},d2=()=>{if(!window.ethereum)return!1;if(window.ethereum.isCoinbaseWallet)return!0;if(window.ethereum.providers){for(let i of window.ethereum.providers)if(i.isCoinbaseWallet)return!0}return!1},C2=class{constructor(){this.walletType=null;this.getEthereumProvider=()=>this.ethProvider;this.createSiweMessage=(e,a,o,r,s,d,f)=>`${o} wants you to sign in with your Ethereum account:
2
2
  ${a}
3
3
 
4
4
  ${f}
@@ -9,7 +9,7 @@ Chain ID: ${e}
9
9
  Nonce: ${d}
10
10
  Issued At: ${s}
11
11
  Resources:
12
- - https://privy.io`;this.ethProvider=new P1}initialize(){let e=F.get(i2);V4.includes(e)&&(this.walletType=e,this.connect({showPrompt:!1}))}destroy(){this.walletType=null,F.del(i2),F.del(M4)}async getConnectedWallet(){let e=this.walletType;if(!e||!await this.isConnected())return null;let a=await this.address(),o=await this.chainId();return{address:a,chainId:o,chainType:"ethereum",walletType:e}}async connect(e){var a;switch(this.walletType){case"metamask":this.ethProvider.setProvider(window.ethereum),(a=window.ethereum.providers)==null||a.forEach(async r=>{r.isMetaMask&&this.ethProvider.setProvider(r)});break;case"coinbase_wallet":this.ethProvider.setProvider(p5());break;case"wallet_connect":let o=new N2.default({infuraId:Q1});this.ethProvider.setProvider(o);break;default:throw new j(`Unsupported wallet: ${this.walletType}`)}return(!await this.isConnected()||e.showPrompt)&&await this.promptConnection(this.walletType),this.getConnectedWallet()}async isConnected(){switch(this.walletType){case"metamask":return await this.address()!==null;case"coinbase_wallet":return await this.address()!==null;case"wallet_connect":return this.ethProvider.walletProvider.connected;default:throw new j(`Unsupported wallet: ${this.walletType}`)}}async promptConnection(e){try{switch(e){case"metamask":await this.ethProvider.request({method:"wallet_requestPermissions",params:[{eth_accounts:{}}]}),await this.ethProvider.request({method:"eth_requestAccounts"});break;case"coinbase_wallet":await this.ethProvider.request({method:"eth_requestAccounts"});break;case"wallet_connect":let a=new N2.default({infuraId:Q1});this.ethProvider.setProvider(a),await Promise.race([a.enable(),O2()]);break;default:throw new j(`Unsupported wallet: ${this.walletType}`)}F.put(i2,e)}catch(a){throw l2(a)}}async sign(e){return new H4.providers.Web3Provider(new T1(this.getEthereumProvider())).getSigner().signMessage(e)}prepareMessage(e,a,o){let r=window.location.host,s=window.location.origin,d=`Welcome! Before continuing, ${r} needs to verify you own this wallet. Signing this message proves ownership. Please note that signing is NOT a transaction, there are NO fees, and this signature does NOT authorize any future transaction requests.`,f=new Date().toISOString();return this.createSiweMessage(e,a,r,s,f,o,d)}async chainId(){let e=await this.getEthereumProvider().request({method:"eth_chainId"}),a=Number(e);return String(a)}async address(){let e=await this.getEthereumProvider().request({method:"eth_accounts"});return Array.isArray(e)&&e.length>0?(0,G4.getAddress)(e[0]):null}};var D2,c2=class{constructor(e){let a=e.apiURL||f4,o=e.timeout||m4;this.appId=e.appId,this.connector=new C2,this.connector.initialize(),D2||(D2=new r2),this.session=D2,this.api=new o2(e.appId,this.session,{baseURL:a,timeout:o}),this.session.api=this.api}authenticate(){if(!this.authFlow)throw new C("No auth flow in progress.");return this.session.authenticate(this.authFlow)}link(){if(!this.authFlow)throw new C("No auth flow in progress.");return this.session.link(this.authFlow)}async logout(){await this.session.destroy(),this.connector.destroy(),this.authFlow=void 0}startAuthFlow(e){e.api=this.api,this.authFlow=e}async unlinkEmail(e){try{let a=await this.api.post(N4(),{address:e});return i1(a.data)}catch(a){throw z(a)}}async unlinkPhone(e){try{let a=await this.api.post(U4(),{phoneNumber:e});return i1(a.data)}catch(a){throw z(a)}}async unlinkWallet(e){try{let a=await this.api.post(O4(),{address:e});return i1(a.data)}catch(a){throw z(a)}}async unlinkOAuth(e,a){try{let o=await this.api.post(D4(),{provider:e,subject:a});return i1(o.data)}catch(o){throw z(o)}}async getAuthenticatedUser(){return this.session.hasRefreshCredentials()?this.session.refresh():null}async getAccessToken(){if(this.session.hasActiveToken()){let{verificationKey:e,id:a}=await this.getAppSettings();return await this.session.hasValidToken(e,a,b4)?this.session.token:(await this.logout(),null)}else return this.session.hasRefreshCredentials()?(await this.session.refresh(),this.session.token):null}async getAppSettings(){try{let e=await this.api.get(`/api/v1/apps/${this.appId}`);return{id:e.data.id,name:e.data.name,verificationKey:e.data.verification_key,logoUrl:e.data.logo_url||void 0,theme:e.data.theme,accentColor:e.data.accent_color||void 0,walletAuth:e.data.wallet_auth,emailAuth:e.data.email_auth,smsAuth:e.data.sms_auth,googleOAuth:e.data.google_oauth,twitterOAuth:e.data.twitter_oauth,discordOAuth:e.data.discord_oauth,termsAndConditionsUrl:e.data.terms_and_conditions_url,privacyPolicyUrl:e.data.privacy_policy_url,createdAt:new Date(e.data.created_at*1e3),updatedAt:new Date(e.data.updated_at*1e3)}}catch(e){throw z(e)}}async forkSession(){return await this.session.forkSession()}};var $3=require("@ethersproject/providers");var p2=require("react");var m=()=>{throw new Error("You need to wrap your application with the <PrivyProvider> initialized with your app id.")};var F2=(0,p2.createContext)({ready:!1,authenticated:!1,user:null,login:m,linkEmail:m,linkPhone:m,linkWallet:m,linkGoogle:m,linkTwitter:m,linkDiscord:m,logout:m,getAccessToken:m,getEthereumProvider:m,getEthersProvider:m,getWeb3jsProvider:m,unlinkEmail:m,unlinkPhone:m,unlinkWallet:m,unlinkGoogle:m,unlinkTwitter:m,unlinkDiscord:m,forkSession:m}),T=()=>(0,p2.useContext)(F2);var V1=class{constructor(e){this.connector=e,this.meta={wallet:this.connector.walletType}}async authenticate(){if(!this.api)throw new C("Auth flow has no API instance");if(!this.connector.walletType)throw new C("Wallet must be specified");try{let{message:e,signature:a}=await this.promptConnectAndSign(this.api),o=await this.api.post(x4(),{message:e,signature:a});return{user:o.data.user,token:o.data.token,refresh_token:o.data.refresh_token}}catch(e){throw L(e)}}async link(){if(!this.api)throw new C("Auth flow has no API instance");if(!this.connector.walletType)throw new C("Wallet must be specified");try{let{message:e,signature:a}=await this.promptConnectAndSign(this.api);return(await this.api.post(L4(),{message:e,signature:a})).data}catch(e){throw L(e)}}async promptConnectAndSign(e){let a=await this.connector.connect({showPrompt:!0}),o=a.address,r=a.chainId,s=await e.post(Z4(),{address:o}),d=this.connector.prepareMessage(r,o,s.data.nonce),f=await this.connector.sign(d);return{message:d,signature:f}}getEthereumProvider(){return this.connector.getEthereumProvider()}};var G1=class{constructor(e){this.meta={email:e}}async authenticate(){if(!this.api)throw new C("Auth flow has no API instance");if(!this.meta.email||!this.meta.emailCode)throw new C("Email and email code must be set prior to calling authenticate.");try{let e=E4(),a=await this.api.post(e,{email:this.meta.email,code:this.meta.emailCode});return{user:a.data.user,token:a.data.token,refresh_token:a.data.refresh_token}}catch(e){throw L(e)}}async link(){if(!this.api)throw new C("Auth flow has no API instance");if(!this.meta.email||!this.meta.emailCode)throw new C("Email and email code must be set prior to calling authenticate.");try{let e=_4();return(await this.api.post(e,{email:this.meta.email,code:this.meta.emailCode})).data}catch(e){throw L(e)}}async sendCodeEmail(e){if(!this.api)throw new C("Auth flow has no API instance");if(e&&(this.meta.email=e),!this.meta.email)throw new C("Email must be set when initialzing authentication.");try{let a=A4();return(await this.api.post(a,{email:this.meta.email})).data}catch(a){throw L(a)}}};var H1=class{constructor(e){this.meta={phoneNumber:e}}async authenticate(){if(!this.api)throw new C("Auth flow has no API instance");if(!this.meta.phoneNumber||!this.meta.smsCode)throw new C("phone number and sms code must be set prior to calling authenticate.");try{let e=T4(),a=await this.api.post(e,{phoneNumber:this.meta.phoneNumber,code:this.meta.smsCode});return{user:a.data.user,token:a.data.token,refresh_token:a.data.refresh_token}}catch(e){throw L(e)}}async link(){if(!this.api)throw new C("Auth flow has no API instance");if(!this.meta.phoneNumber||!this.meta.smsCode)throw new C("phone number and sms code must be set prior to calling authenticate.");try{let e=S4();return(await this.api.post(e,{phoneNumber:this.meta.phoneNumber,code:this.meta.smsCode})).data}catch(e){throw L(e)}}async sendSmsCode(e){if(!this.api)throw new C("Auth flow has no API instance");if(e&&(this.meta.phoneNumber=e),!this.meta.phoneNumber)throw new C("phone nNumber must be set when initialzing authentication.");try{let a=P4();return(await this.api.post(a,{phoneNumber:this.meta.phoneNumber})).data}catch(a){throw L(a)}}};var S1=class{constructor(e,a,o){this.meta={provider:e},this.meta.authorizationCode=a,this.meta.stateCode=o}isActive(){return!!(this.meta.authorizationCode&&this.meta.stateCode&&this.meta.provider)}async authenticate(){if(!this.api)throw new C("Auth flow has no API instance");if(!this.meta.authorizationCode||!this.meta.stateCode)throw new C("[OAuth AuthFlow] Authorization and state codes code must be set prior to calling authenticate.");if(this.meta.authorizationCode==="undefined")throw new C("User denied confirmation during OAuth flow");try{let e=R4(),a=await this.api.post(e,{authorization_code:this.meta.authorizationCode,state_code:this.meta.stateCode});return{user:a.data.user,token:a.data.token,refresh_token:a.data.refresh_token}}catch(e){throw L(e)}}async link(){if(!this.api)throw new C("Auth flow has no API instance");if(!this.meta.authorizationCode||!this.meta.stateCode)throw new C("[OAuth AuthFlow] Authorization and state codes code must be set prior to calling link.");if(this.meta.authorizationCode==="undefined")throw new C("User denied confirmation during OAuth flow");try{let e=W4();return(await this.api.post(e,{authorization_code:this.meta.authorizationCode,state_code:this.meta.stateCode})).data}catch(e){throw L(e)}}async getAuthorizationUrl(){if(!this.api)throw new C("Auth flow has no API instance");if(!this.meta.provider)throw new C("Provider must be set when initialzing OAuth authentication.");try{let e=I4();return(await this.api.post(e,{provider:this.meta.provider,redirect_to:window.location.href})).data}catch(e){throw L(e)}}};var f0=require("wicg-inert"),B3=w(require("react-dom")),E2=w(require("styled-components"));var X=require("react");var z4=require("react/jsx-runtime");function j4(i){return(0,z4.jsx)("link",{rel:"prefetch",href:i.src})}var h2=require("react/jsx-runtime"),$4=(0,X.createContext)({ready:!1,app:null,options:{email:!0,sms:!1,wallet:!0,google:!1,twitter:!1,discord:!1},currentScreen:"LANDING",lastScreen:"LANDING",navigate:m,navigateBack:m}),q4=i=>{let e=i.appSettings,a=i.authenticated,o=i.visible,[r,s]=(0,X.useState)(null),[d,f]=(0,X.useState)(null);(0,X.useEffect)(()=>{a||s(null)},[a]),(0,X.useEffect)(()=>{o||(f("LANDING"),s("LANDING"))},[o]);let u={ready:!!(e!=null&&e.id),app:e,options:i.options,currentScreen:r||"LANDING",lastScreen:d||"LANDING",navigate:g=>{f(r),s(g)},navigateBack:()=>{s(d)}};return(0,h2.jsxs)($4.Provider,{value:u,children:[e&&e.logoUrl&&(0,h2.jsx)(j4,{src:e.logoUrl}),i.children]})},y=()=>(0,X.useContext)($4);var Z2=require("react"),N1=w(require("styled-components"));var J4=w(require("styled-components"));var V2=require("react/jsx-runtime"),K4=({style:i,...e})=>(0,V2.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",style:{height:"1.5rem",width:"1.5rem",...i},...e,children:(0,V2.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 18L18 6M6 6l12 12"})});var G2=require("react/jsx-runtime"),Y4=({style:i,...e})=>(0,G2.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",style:{height:"1.5rem",width:"1.5rem",...i},...e,children:(0,G2.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M10.5 19.5L3 12m0 0l7.5-7.5M3 12h18"})});var f2=require("react");var H2=(0,f2.createContext)({getAuthMeta:m,getAuthFlow:m,closePrivyModal:m,initLoginWithWallet:m,loginWithWallet:m,loginWithCode:m,loginWithEmail:m,loginWithSms:m,resendEmailCode:m,resendSmsCode:m,initLoginWithOAuth:m,loginWithOAuth:m}),E=()=>(0,f2.useContext)(H2);var $=require("react/jsx-runtime"),h5=()=>(0,$.jsx)("div",{}),f5=({backFn:i})=>(0,$.jsx)("div",{children:(0,$.jsx)(Y4,{onClick:i})}),u5=()=>{let{closePrivyModal:i}=E();return(0,$.jsx)("div",{children:(0,$.jsx)("div",{children:(0,$.jsx)(K4,{onClick:i})})})};var S=({backFn:i})=>(0,$.jsxs)(m5,{children:[i?(0,$.jsx)(f5,{backFn:i}):(0,$.jsx)(h5,{}),(0,$.jsx)(u5,{})]}),m5=J4.default.div`
12
+ - https://privy.io`;this.ethProvider=new P1}initialize(){let e=F.get(i2);V4.includes(e)&&(this.walletType=e,this.connect({showPrompt:!1}))}destroy(){this.walletType=null,F.del(i2),F.del(M4)}async getConnectedWallet(){let e=this.walletType;if(!e||!await this.isConnected())return null;let a=await this.address(),o=await this.chainId();return{address:a,chainId:o,chainType:"ethereum",walletType:e}}async connect(e){var a;switch(this.walletType){case"metamask":this.ethProvider.setProvider(window.ethereum),(a=window.ethereum.providers)==null||a.forEach(async r=>{r.isMetaMask&&this.ethProvider.setProvider(r)});break;case"coinbase_wallet":this.ethProvider.setProvider(p5());break;case"wallet_connect":let o=new N2.default({infuraId:Q1});this.ethProvider.setProvider(o);break;default:throw new j(`Unsupported wallet: ${this.walletType}`)}return(!await this.isConnected()||e.showPrompt)&&await this.promptConnection(this.walletType),this.getConnectedWallet()}async isConnected(){switch(this.walletType){case"metamask":return await this.address()!==null;case"coinbase_wallet":return await this.address()!==null;case"wallet_connect":return this.ethProvider.walletProvider.connected;default:throw new j(`Unsupported wallet: ${this.walletType}`)}}async promptConnection(e){try{switch(e){case"metamask":await this.ethProvider.request({method:"wallet_requestPermissions",params:[{eth_accounts:{}}]}),await this.ethProvider.request({method:"eth_requestAccounts"});break;case"coinbase_wallet":await this.ethProvider.request({method:"eth_requestAccounts"});break;case"wallet_connect":let a=new N2.default({infuraId:Q1});this.ethProvider.setProvider(a),await Promise.race([a.enable(),O2()]);break;default:throw new j(`Unsupported wallet: ${this.walletType}`)}F.put(i2,e)}catch(a){throw l2(a)}}async sign(e){return new H4.Web3Provider(new T1(this.getEthereumProvider())).getSigner().signMessage(e)}prepareMessage(e,a,o){let r=window.location.host,s=window.location.origin,d=`Welcome! Before continuing, ${r} needs to verify you own this wallet. Signing this message proves ownership. Please note that signing is NOT a transaction, there are NO fees, and this signature does NOT authorize any future transaction requests.`,f=new Date().toISOString();return this.createSiweMessage(e,a,r,s,f,o,d)}async chainId(){let e=await this.getEthereumProvider().request({method:"eth_chainId"}),a=Number(e);return String(a)}async address(){let e=await this.getEthereumProvider().request({method:"eth_accounts"});return Array.isArray(e)&&e.length>0?(0,G4.getAddress)(e[0]):null}};var D2,c2=class{constructor(e){let a=e.apiURL||f4,o=e.timeout||m4;this.appId=e.appId,this.connector=new C2,this.connector.initialize(),D2||(D2=new r2),this.session=D2,this.api=new o2(e.appId,this.session,{baseURL:a,timeout:o}),this.session.api=this.api}authenticate(){if(!this.authFlow)throw new C("No auth flow in progress.");return this.session.authenticate(this.authFlow)}link(){if(!this.authFlow)throw new C("No auth flow in progress.");return this.session.link(this.authFlow)}async logout(){await this.session.destroy(),this.connector.destroy(),this.authFlow=void 0}startAuthFlow(e){e.api=this.api,this.authFlow=e}async unlinkEmail(e){try{let a=await this.api.post(N4(),{address:e});return i1(a.data)}catch(a){throw z(a)}}async unlinkPhone(e){try{let a=await this.api.post(U4(),{phoneNumber:e});return i1(a.data)}catch(a){throw z(a)}}async unlinkWallet(e){try{let a=await this.api.post(O4(),{address:e});return i1(a.data)}catch(a){throw z(a)}}async unlinkOAuth(e,a){try{let o=await this.api.post(D4(),{provider:e,subject:a});return i1(o.data)}catch(o){throw z(o)}}async getAuthenticatedUser(){return this.session.hasRefreshCredentials()?this.session.refresh():null}async getAccessToken(){if(this.session.hasActiveToken()){let{verificationKey:e,id:a}=await this.getAppSettings();return await this.session.hasValidToken(e,a,b4)?this.session.token:(await this.logout(),null)}else return this.session.hasRefreshCredentials()?(await this.session.refresh(),this.session.token):null}async getAppSettings(){try{let e=await this.api.get(`/api/v1/apps/${this.appId}`);return{id:e.data.id,name:e.data.name,verificationKey:e.data.verification_key,logoUrl:e.data.logo_url||void 0,theme:e.data.theme,accentColor:e.data.accent_color||void 0,walletAuth:e.data.wallet_auth,emailAuth:e.data.email_auth,smsAuth:e.data.sms_auth,googleOAuth:e.data.google_oauth,twitterOAuth:e.data.twitter_oauth,discordOAuth:e.data.discord_oauth,termsAndConditionsUrl:e.data.terms_and_conditions_url,privacyPolicyUrl:e.data.privacy_policy_url,createdAt:new Date(e.data.created_at*1e3),updatedAt:new Date(e.data.updated_at*1e3)}}catch(e){throw z(e)}}async forkSession(){return await this.session.forkSession()}};var $3=require("@ethersproject/providers");var p2=require("react");var m=()=>{throw new Error("You need to wrap your application with the <PrivyProvider> initialized with your app id.")};var F2=(0,p2.createContext)({ready:!1,authenticated:!1,user:null,login:m,linkEmail:m,linkPhone:m,linkWallet:m,linkGoogle:m,linkTwitter:m,linkDiscord:m,logout:m,getAccessToken:m,getEthereumProvider:m,getEthersProvider:m,getWeb3jsProvider:m,unlinkEmail:m,unlinkPhone:m,unlinkWallet:m,unlinkGoogle:m,unlinkTwitter:m,unlinkDiscord:m,forkSession:m}),T=()=>(0,p2.useContext)(F2);var V1=class{constructor(e){this.connector=e,this.meta={wallet:this.connector.walletType}}async authenticate(){if(!this.api)throw new C("Auth flow has no API instance");if(!this.connector.walletType)throw new C("Wallet must be specified");try{let{message:e,signature:a}=await this.promptConnectAndSign(this.api),o=await this.api.post(x4(),{message:e,signature:a});return{user:o.data.user,token:o.data.token,refresh_token:o.data.refresh_token}}catch(e){throw L(e)}}async link(){if(!this.api)throw new C("Auth flow has no API instance");if(!this.connector.walletType)throw new C("Wallet must be specified");try{let{message:e,signature:a}=await this.promptConnectAndSign(this.api);return(await this.api.post(L4(),{message:e,signature:a})).data}catch(e){throw L(e)}}async promptConnectAndSign(e){let a=await this.connector.connect({showPrompt:!0}),o=a.address,r=a.chainId,s=await e.post(Z4(),{address:o}),d=this.connector.prepareMessage(r,o,s.data.nonce),f=await this.connector.sign(d);return{message:d,signature:f}}getEthereumProvider(){return this.connector.getEthereumProvider()}};var G1=class{constructor(e){this.meta={email:e}}async authenticate(){if(!this.api)throw new C("Auth flow has no API instance");if(!this.meta.email||!this.meta.emailCode)throw new C("Email and email code must be set prior to calling authenticate.");try{let e=E4(),a=await this.api.post(e,{email:this.meta.email,code:this.meta.emailCode});return{user:a.data.user,token:a.data.token,refresh_token:a.data.refresh_token}}catch(e){throw L(e)}}async link(){if(!this.api)throw new C("Auth flow has no API instance");if(!this.meta.email||!this.meta.emailCode)throw new C("Email and email code must be set prior to calling authenticate.");try{let e=_4();return(await this.api.post(e,{email:this.meta.email,code:this.meta.emailCode})).data}catch(e){throw L(e)}}async sendCodeEmail(e){if(!this.api)throw new C("Auth flow has no API instance");if(e&&(this.meta.email=e),!this.meta.email)throw new C("Email must be set when initialzing authentication.");try{let a=A4();return(await this.api.post(a,{email:this.meta.email})).data}catch(a){throw L(a)}}};var H1=class{constructor(e){this.meta={phoneNumber:e}}async authenticate(){if(!this.api)throw new C("Auth flow has no API instance");if(!this.meta.phoneNumber||!this.meta.smsCode)throw new C("phone number and sms code must be set prior to calling authenticate.");try{let e=T4(),a=await this.api.post(e,{phoneNumber:this.meta.phoneNumber,code:this.meta.smsCode});return{user:a.data.user,token:a.data.token,refresh_token:a.data.refresh_token}}catch(e){throw L(e)}}async link(){if(!this.api)throw new C("Auth flow has no API instance");if(!this.meta.phoneNumber||!this.meta.smsCode)throw new C("phone number and sms code must be set prior to calling authenticate.");try{let e=S4();return(await this.api.post(e,{phoneNumber:this.meta.phoneNumber,code:this.meta.smsCode})).data}catch(e){throw L(e)}}async sendSmsCode(e){if(!this.api)throw new C("Auth flow has no API instance");if(e&&(this.meta.phoneNumber=e),!this.meta.phoneNumber)throw new C("phone nNumber must be set when initialzing authentication.");try{let a=P4();return(await this.api.post(a,{phoneNumber:this.meta.phoneNumber})).data}catch(a){throw L(a)}}};var S1=class{constructor(e,a,o){this.meta={provider:e},this.meta.authorizationCode=a,this.meta.stateCode=o}isActive(){return!!(this.meta.authorizationCode&&this.meta.stateCode&&this.meta.provider)}async authenticate(){if(!this.api)throw new C("Auth flow has no API instance");if(!this.meta.authorizationCode||!this.meta.stateCode)throw new C("[OAuth AuthFlow] Authorization and state codes code must be set prior to calling authenticate.");if(this.meta.authorizationCode==="undefined")throw new C("User denied confirmation during OAuth flow");try{let e=R4(),a=await this.api.post(e,{authorization_code:this.meta.authorizationCode,state_code:this.meta.stateCode});return{user:a.data.user,token:a.data.token,refresh_token:a.data.refresh_token}}catch(e){throw L(e)}}async link(){if(!this.api)throw new C("Auth flow has no API instance");if(!this.meta.authorizationCode||!this.meta.stateCode)throw new C("[OAuth AuthFlow] Authorization and state codes code must be set prior to calling link.");if(this.meta.authorizationCode==="undefined")throw new C("User denied confirmation during OAuth flow");try{let e=W4();return(await this.api.post(e,{authorization_code:this.meta.authorizationCode,state_code:this.meta.stateCode})).data}catch(e){throw L(e)}}async getAuthorizationUrl(){if(!this.api)throw new C("Auth flow has no API instance");if(!this.meta.provider)throw new C("Provider must be set when initialzing OAuth authentication.");try{let e=I4();return(await this.api.post(e,{provider:this.meta.provider,redirect_to:window.location.href})).data}catch(e){throw L(e)}}};var f0=require("wicg-inert"),B3=w(require("react-dom")),E2=w(require("styled-components"));var X=require("react");var z4=require("react/jsx-runtime");function j4(i){return(0,z4.jsx)("link",{rel:"prefetch",href:i.src})}var h2=require("react/jsx-runtime"),$4=(0,X.createContext)({ready:!1,app:null,options:{email:!0,sms:!1,wallet:!0,google:!1,twitter:!1,discord:!1},currentScreen:"LANDING",lastScreen:"LANDING",navigate:m,navigateBack:m}),q4=i=>{let e=i.appSettings,a=i.authenticated,o=i.visible,[r,s]=(0,X.useState)(null),[d,f]=(0,X.useState)(null);(0,X.useEffect)(()=>{a||s(null)},[a]),(0,X.useEffect)(()=>{o||(f("LANDING"),s("LANDING"))},[o]);let u={ready:!!(e!=null&&e.id),app:e,options:i.options,currentScreen:r||"LANDING",lastScreen:d||"LANDING",navigate:g=>{f(r),s(g)},navigateBack:()=>{s(d)}};return(0,h2.jsxs)($4.Provider,{value:u,children:[e&&e.logoUrl&&(0,h2.jsx)(j4,{src:e.logoUrl}),i.children]})},y=()=>(0,X.useContext)($4);var Z2=require("react"),N1=w(require("styled-components"));var J4=w(require("styled-components"));var V2=require("react/jsx-runtime"),K4=({style:i,...e})=>(0,V2.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",style:{height:"1.5rem",width:"1.5rem",...i},...e,children:(0,V2.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 18L18 6M6 6l12 12"})});var G2=require("react/jsx-runtime"),Y4=({style:i,...e})=>(0,G2.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",style:{height:"1.5rem",width:"1.5rem",...i},...e,children:(0,G2.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M10.5 19.5L3 12m0 0l7.5-7.5M3 12h18"})});var f2=require("react");var H2=(0,f2.createContext)({getAuthMeta:m,getAuthFlow:m,closePrivyModal:m,initLoginWithWallet:m,loginWithWallet:m,loginWithCode:m,loginWithEmail:m,loginWithSms:m,resendEmailCode:m,resendSmsCode:m,initLoginWithOAuth:m,loginWithOAuth:m}),E=()=>(0,f2.useContext)(H2);var $=require("react/jsx-runtime"),h5=()=>(0,$.jsx)("div",{}),f5=({backFn:i})=>(0,$.jsx)("div",{children:(0,$.jsx)(Y4,{onClick:i})}),u5=()=>{let{closePrivyModal:i}=E();return(0,$.jsx)("div",{children:(0,$.jsx)("div",{children:(0,$.jsx)(K4,{onClick:i})})})};var S=({backFn:i})=>(0,$.jsxs)(m5,{children:[i?(0,$.jsx)(f5,{backFn:i}):(0,$.jsx)(h5,{}),(0,$.jsx)(u5,{})]}),m5=J4.default.div`
13
13
  height: 30px;
14
14
  display: flex;
15
15
  align-items: center;
package/dist/index.esm.js CHANGED
@@ -1,4 +1,4 @@
1
- import{useEffect as b2,useState as t1}from"react";import v2 from"axios";import B3 from"axios";var V=class extends Error{constructor(a,o){super(a);o instanceof Error&&(this.cause=o)}toString(){return`${this.type}: ${this.message}${this.cause?` [cause: ${this.cause}]`:""}`}},U1=class extends V{constructor(a,o,r,n){super(r,n);this.type=a;this.status=o}},C=class extends V{constructor(a,o){super(a,o);this.type="client_error"}};var N=class extends V{constructor(a,o){super(a,o);this.type="connector_error"}},v=i=>{if(i instanceof V)return i;if(!B3.isAxiosError(i))return U(i);if(!i.response)return new U1("api_error",null,i.message,i);let{type:e,message:a,error:o}=i.response.data;return new U1(e||"ApiError",i.response.status,a||o,i)},U=i=>i instanceof V?i:i instanceof Error?new C(i.message,i):new C(`Internal error: ${i}`);var X2="1.10.0-beta.7";var Q2="https://api.privy.io/v0",t4=process.env.NEXT_PUBLIC_PRIVY_AUTH_URL||"https://auth.privy.io",D1="4df5e2316331463a9130964bd6078dfa",e4=1e4,h1=1200,i4=365*24*60*60,y2=X2,a4="ES256",o4="privy.io",f1="privy:token",F1="privy:refresh_token",V1="privy:wallet_type",r4="walletconnect";var G1=class{constructor(e,a,o){this.appId=e,this.sdkVersion=y2,this.session=a,this.defaults=o}async get(e,a){try{return await v2.get(e,this.buildConfig({headers:{"Cache-Control":"no-cache"},...a}))}catch(o){throw v(o)}}async post(e,a,o){try{return await v2.post(e,a,this.buildConfig(o))}catch(r){throw v(r)}}async delete(e,a){try{return await v2.delete(e,this.buildConfig(a))}catch(o){throw v(o)}}buildConfig(e){return e=e||{},e.headers=e.headers||{},e.headers["privy-app-id"]=this.appId,e.headers["privy-client"]=`react-auth:${this.sdkVersion}`,this.session.token!==null&&(e.headers.authorization=`Bearer ${this.session.token}`),{...this.defaults,...e}}};import*as u1 from"jose";var Y=class{static parse(e){try{return new Y(e)}catch{return null}}constructor(e){this.value=e,this._decoded=u1.decodeJwt(e)}get subject(){return this._decoded.sub}get expiration(){return this._decoded.exp}get issuer(){return this._decoded.iss}get audience(){return this._decoded.aud}isExpired(e=0){let a=Date.now(),o=(this.expiration-e)*1e3;return a>=o}async isValid(e,a,o=0){let r=await u1.importSPKI(e,a4);try{return await u1.jwtVerify(this.value,r,{issuer:o4,audience:a,clockTolerance:o}),!0}catch{return!1}}};var J=class{constructor(e){this.promise=null;this.fn=e}execute(e){return this.promise===null&&(this.promise=(async()=>{try{return await this.fn(e)}finally{this.promise=null}})()),this.promise}};var Z2=class{constructor(){this._cache={}}get(e){return this._cache[e]}put(e,a){a!==void 0?this._cache[e]=a:this.del(e)}del(e){delete this._cache[e]}},x2=class{get(e){let a=localStorage.getItem(e);return a===null?void 0:JSON.parse(a)}put(e,a){a!==void 0?localStorage.setItem(e,JSON.stringify(a)):this.del(e)}del(e){localStorage.removeItem(e)}};function z3(){return typeof window<"u"&&window.localStorage?new x2:new Z2}var W=z3();function e1(i){return new Date(i*1e3)}function $3(i){return i.map(e=>{switch(e.type){case"wallet":return{address:e.address,type:e.type,verifiedAt:e1(e.verified_at),chainType:e.chain_type};case"email":return{address:e.address,type:e.type,verifiedAt:e1(e.verified_at)};case"phone":return{number:e.phoneNumber,type:e.type,verifiedAt:e1(e.verified_at)};case"google_oauth":return{subject:e.subject,email:e.email,name:e.name,type:e.type,verifiedAt:e1(e.verified_at)};case"twitter_oauth":return{subject:e.subject,username:e.username,name:e.name,type:e.type,verifiedAt:e1(e.verified_at)};case"discord_oauth":return{subject:e.subject,username:e.username,email:e.email,type:e.type,verifiedAt:e1(e.verified_at)};default:throw new C("Unrecognized account type")}})}function m1(i,e){return i.sort((a,o)=>o.verifiedAt.getTime()-a.verifiedAt.getTime()),i.find(a=>a.type===e)}function B(i){if(!i)return null;let e=$3(i.linked_accounts),a=m1(e,"wallet"),o=m1(e,"email"),r=m1(e,"phone"),n=m1(e,"google_oauth"),d=m1(e,"twitter_oauth"),h=m1(e,"discord_oauth");return{id:i.id,createdAt:e1(i.created_at),linkedAccounts:e,email:o&&{address:o==null?void 0:o.address},phone:r&&{number:r==null?void 0:r.number},wallet:a&&{address:a.address,chainType:a.chainType,chainId:a.chainId,walletType:a.walletType},google:n&&{subject:n.subject,email:n.email,name:n.name},twitter:d&&{subject:d.subject,username:d.username,name:d.name},discord:h&&{subject:h.subject,username:h.username,email:h.email}}}var l4=()=>"/api/v1/sessions",n4=()=>"/api/v1/sessions/logout",s4=()=>"/api/v1/sessions/fork",C4=()=>"/api/v1/siwe/init",d4=()=>"/api/v1/siwe/authenticate",c4=()=>"/api/v1/siwe/link",p4=()=>"/api/v1/passwordless/init",h4=()=>"/api/v1/passwordless/authenticate",f4=()=>"/api/v1/passwordless/link",u4=()=>"/api/v1/passwordless_sms/init",m4=()=>"/api/v1/passwordless_sms/authenticate",b4=()=>"/api/v1/passwordless_sms/link",k4=()=>"/api/v1/oauth/init",g4=()=>"/api/v1/oauth/authenticate",M4=()=>"/api/v1/oauth/link",w4=()=>"/api/v1/siwe/unlink",y4=()=>"/api/v1/passwordless/unlink",v4=()=>"/api/v1/passwordless_sms/unlink",Z4=()=>"/api/v1/oauth/unlink";var q3=30,H1=class{constructor(){this.authenticateOnce=new J(async e=>this._authenticate(e)),this.linkOnce=new J(async e=>this._link(e)),this.refreshOnce=new J(this._refresh.bind(this)),this.destroyOnce=new J(this._destroy.bind(this)),this.forkSessionOnce=new J(this._forkSession.bind(this))}get token(){try{let e=W.get(f1);return typeof e=="string"?new Y(e).value:null}catch(e){return console.error(e),this.destroyLocalState(),null}}get refreshToken(){try{let e=W.get(F1);return typeof e=="string"?e:null}catch(e){return console.error(e),this.destroyLocalState(),null}}hasRefreshCredentials(){return typeof this.token=="string"&&typeof this.refreshToken=="string"}hasActiveToken(){let e=Y.parse(this.token);return e!==null&&!e.isExpired(q3)}async hasValidToken(e,a,o=0){let r=Y.parse(this.token);return r!==null&&await r.isValid(e,a,o)}authenticate(e){return this.authenticateOnce.execute(e)}link(e){return this.linkOnce.execute(e)}refresh(){return this.refreshOnce.execute()}forkSession(){return this.forkSessionOnce.execute()}destroy(){return this.destroyOnce.execute()}async _authenticate(e){try{let{token:a,refresh_token:o,user:r}=await e.authenticate();return this.storeToken(a),this.storeRefreshToken(o),B(r)}catch(a){throw console.warn("Error authenticating session"),U(a)}}async _link(e){try{let a=await e.link();return B(a)}catch(a){throw console.warn("Error linking account"),U(a)}}async _refresh(){if(!this.api)throw new C("Session has no API instance");let e=this.token,a=this.refreshToken;if(!e||!a)return null;try{let o=await this.api.post(l4(),{refresh_token:a});return this.storeToken(o.data.token),this.storeRefreshToken(o.data.refresh_token),B(o.data.user)}catch(o){throw U(o)}}async _destroy(){var e;try{await((e=this.api)==null?void 0:e.post(n4(),{refresh_token:this.refreshToken}))}catch{console.warn("Error destroying session")}this.destroyLocalState()}async _forkSession(){if(!this.api)throw new C("Session has no API instance");let e=this.refreshToken;try{let a=await this.api.post(s4(),{refresh_token:e});return this.storeToken(a.data.token),this.storeRefreshToken(a.data.refresh_token),a.data.new_session_refresh_token}catch(a){throw U(a)}}destroyLocalState(){this.storeToken(null),this.storeRefreshToken(null)}storeToken(e){typeof e=="string"?W.put(f1,e):W.del(f1)}storeRefreshToken(e){typeof e=="string"?W.put(F1,e):W.del(F1)}};import{getAddress as t5}from"@ethersproject/address";import L4 from"@walletconnect/web3-provider";import{ethers as K3}from"ethers";var b1=class extends N{constructor(){super("Wallet timeout");this.type="wallet_error"}},B1=i=>{if(i instanceof N)return i;if((i==null?void 0:i.code)&&(i==null?void 0:i.reason)){let e=new k1(i);return i.code===K3.errors.ACTION_REJECTED&&(e.details=i1.E4001_USER_REJECTED_REQUEST),e}return i!=null&&i.code?new k1(i):new N("Unknown connector error",i)},L2=class extends V{constructor(a,o,r){super(a);this.type="provider_error";this.code=o,this.data=r}},k1=class extends L2{constructor(a){var n,d,h;let o=a;super(o.message,o.code,o.data);let r=Object.values(i1).find(f=>f.eipCode===o.code);this.details=r||i1.UNKNOWN_ERROR,o.code===-32002&&((n=o.message)!=null&&n.includes("already pending for origin")?(d=o.message)!=null&&d.includes("wallet_requestPermissions")?this.details=i1.E32002_CONNECTION_ALREADY_PENDING:this.details=i1.E32002_REQUEST_ALREADY_PENDING:(h=o.message)!=null&&h.includes("Already processing")&&o.message.includes("eth_requestAccounts")&&(this.details=i1.E32002_WALLET_LOCKED))}},Y3={ERROR_USER_EXISTS:{message:"User already exists for this address",detail:"Try another address!",retryable:!1},ERROR_TIMED_OUT:{message:"Wallet request timed out",detail:"Please try connecting again.",retryable:!0},ERROR_WALLET_CONNECTION:{message:"Could not log in with wallet",detail:"Please try connecting again.",retryable:!0}},J3={E32002_CONNECTION_ALREADY_PENDING:{eipCode:-32002,message:"Connection request already pending",detail:"Don\u2019t see your wallet modal? Check your other browser windows.",retryable:!1},E32002_REQUEST_ALREADY_PENDING:{eipCode:-32002,message:"Resource request already pending",detail:"Don\u2019t see your wallet modal? Check your other browser windows.",retryable:!1},E32002_WALLET_LOCKED:{eipCode:-32002,message:"Wallet might be locked",detail:"Don\u2019t see your wallet modal? Check your other browser windows.",retryable:!1},E4001_USER_REJECTED_REQUEST:{eipCode:4001,message:"Signature rejected",detail:"Please try signing again.",retryable:!0}},X3={E4001_DEFAULT_USER_REJECTED_REQUEST:{eipCode:4001,message:"User Rejected Request",detail:"The user rejected the request.",default:!0,retryable:!0},E4100_DEFAULT_UNAUTHORIZED:{eipCode:4100,message:"Unauthorized",detail:"The requested method and/or account has not been authorized by the user.",default:!0,retryable:!1},E4200_DEFAULT_UNSUPPORTED_METHOD:{eipCode:4200,message:"Unsupported Method",detail:"The Provider does not support the requested method.",default:!0,retryable:!1},E4900_DEFAULT_DISCONNECTED:{eipCode:4900,message:"Disconnected",detail:"The Provider is disconnected from all chains.",default:!0,retryable:!0},E4901_DEFAULT_CHAIN_DISCONNECTED:{eipCode:4901,message:"Chain Disconnected",detail:"The Provider is not connected to the requested chain.",default:!0,retryable:!0},E32700_DEFAULT_PARSE_ERROR:{eipCode:-32700,message:"Parse error",detail:"Invalid JSON",default:!0,retryable:!1},E32600_DEFAULT_INVALID_REQUEST:{eipCode:-32600,message:"Invalid request",detail:"JSON is not a valid request object",default:!0,retryable:!1},E32601_DEFAULT_METHOD_NOT_FOUND:{eipCode:-32601,message:"Method not found",detail:"Method does not exist",default:!0,retryable:!1},E32602_DEFAULT_INVALID_PARAMS:{eipCode:-32602,message:"Invalid params",detail:"Invalid method parameters",default:!0,retryable:!1},E32603_DEFAULT_INTERNAL_ERROR:{eipCode:-32603,message:"Internal error",detail:"Internal JSON-RPC error",default:!0,retryable:!0},E32000_DEFAULT_INVALID_INPUT:{eipCode:-32e3,message:"Invalid input",detail:"Missing or invalid parameters",default:!0,retryable:!1},E32001_DEFAULT_RESOURCE_NOT_FOUND:{eipCode:-32001,message:"Resource not found",detail:"Requested resource not found",default:!0,retryable:!1},E32002_DEFAULT_RESOURCE_UNAVAILABLE:{eipCode:-32002,message:"Resource unavailable",detail:"Requested resource not available",default:!0,retryable:!0},E32003_DEFAULT_TRANSACTION_REJECTED:{eipCode:-32003,message:"Transaction rejected",detail:"Transaction creation failed",default:!0,retryable:!0},E32004_DEFAULT_METHOD_NOT_SUPPORTED:{eipCode:-32004,message:"Method not supported",detail:"Method is not implemented",default:!0,retryable:!1},E32005_DEFAULT_LIMIT_EXCEEDED:{eipCode:-32005,message:"Limit exceeded",detail:"Request exceeds defined limit",default:!0,retryable:!1},E32006_DEFAULT_JSON_RPC_VERSION_NOT_SUPPORTED:{eipCode:-32006,message:"JSON-RPC version not supported",detail:"Version of JSON-RPC protocol is not supported",default:!0,retryable:!1}},i1={UNKNOWN_ERROR:{eipCode:0,message:"Unknown error",detail:"Unknown error",retryable:!0},...X3,...J3},j1={...Y3,...i1};var Q3=12e4,A2=(i=new b1,e=Q3)=>new Promise((a,o)=>setTimeout(()=>{o(i)},e)),g1=class{constructor(e){this.removeListener=(e,a)=>{if(this.walletProvider)return this.walletProvider.removeListener(e,a)};this.setProvider=e=>{this.walletProvider=e,this._subscriptions.forEach(a=>{var o;(o=this.walletProvider)==null||o.on(a.eventName,a.listener)})};this.walletProvider=e,this._subscriptions=[]}on(e,a){if(this.walletProvider)return this.walletProvider.on(e,a);this._subscriptions.push({eventName:e,listener:a})}request(e){if(!this.walletProvider)throw new N(`A wallet request of type ${e.method} was made before setting a wallet provider.`);return Promise.race([this.walletProvider.request(e),A2()]).catch(a=>{throw B1(a)})}},M1=class extends g1{constructor(a){super(a)}},z1=class extends g1{constructor(e){super(e)}sendAsync(e,a){throw new Error("sendAsync is no longer supported by EIP-1193. Use the request method instead.")}};import{providers as e5}from"ethers";var x4=["metamask","coinbase_wallet","wallet_connect"];import i5 from"@coinbase/wallet-sdk";var a5=()=>{let i=`https://mainnet.infura.io/v3/${D1}`,e=1;return new i5({appName:"Privy",darkMode:!1,headlessMode:!1}).makeWeb3Provider(i,e)},E2=()=>{if(!window.ethereum)return!1;if(window.ethereum.isMetaMask)return!0;if(window.ethereum.providers){for(let i of window.ethereum.providers)if(i.isMetaMask)return!0}return!1},q1=()=>{if(!window.ethereum)return!1;if(window.ethereum.isCoinbaseWallet)return!0;if(window.ethereum.providers){for(let i of window.ethereum.providers)if(i.isCoinbaseWallet)return!0}return!1},$1=class{constructor(){this.walletType=null;this.getEthereumProvider=()=>this.ethProvider;this.createSiweMessage=(e,a,o,r,n,d,h)=>`${o} wants you to sign in with your Ethereum account:
1
+ import{useEffect as b2,useState as t1}from"react";import v2 from"axios";import B3 from"axios";var V=class extends Error{constructor(a,o){super(a);o instanceof Error&&(this.cause=o)}toString(){return`${this.type}: ${this.message}${this.cause?` [cause: ${this.cause}]`:""}`}},U1=class extends V{constructor(a,o,r,n){super(r,n);this.type=a;this.status=o}},C=class extends V{constructor(a,o){super(a,o);this.type="client_error"}};var N=class extends V{constructor(a,o){super(a,o);this.type="connector_error"}},v=i=>{if(i instanceof V)return i;if(!B3.isAxiosError(i))return U(i);if(!i.response)return new U1("api_error",null,i.message,i);let{type:e,message:a,error:o}=i.response.data;return new U1(e||"ApiError",i.response.status,a||o,i)},U=i=>i instanceof V?i:i instanceof Error?new C(i.message,i):new C(`Internal error: ${i}`);var X2="1.10.0-beta.8";var Q2="https://api.privy.io/v0",t4=process.env.NEXT_PUBLIC_PRIVY_AUTH_URL||"https://auth.privy.io",D1="4df5e2316331463a9130964bd6078dfa",e4=1e4,h1=1200,i4=365*24*60*60,y2=X2,a4="ES256",o4="privy.io",f1="privy:token",F1="privy:refresh_token",V1="privy:wallet_type",r4="walletconnect";var G1=class{constructor(e,a,o){this.appId=e,this.sdkVersion=y2,this.session=a,this.defaults=o}async get(e,a){try{return await v2.get(e,this.buildConfig({headers:{"Cache-Control":"no-cache"},...a}))}catch(o){throw v(o)}}async post(e,a,o){try{return await v2.post(e,a,this.buildConfig(o))}catch(r){throw v(r)}}async delete(e,a){try{return await v2.delete(e,this.buildConfig(a))}catch(o){throw v(o)}}buildConfig(e){return e=e||{},e.headers=e.headers||{},e.headers["privy-app-id"]=this.appId,e.headers["privy-client"]=`react-auth:${this.sdkVersion}`,this.session.token!==null&&(e.headers.authorization=`Bearer ${this.session.token}`),{...this.defaults,...e}}};import*as u1 from"jose";var Y=class{static parse(e){try{return new Y(e)}catch{return null}}constructor(e){this.value=e,this._decoded=u1.decodeJwt(e)}get subject(){return this._decoded.sub}get expiration(){return this._decoded.exp}get issuer(){return this._decoded.iss}get audience(){return this._decoded.aud}isExpired(e=0){let a=Date.now(),o=(this.expiration-e)*1e3;return a>=o}async isValid(e,a,o=0){let r=await u1.importSPKI(e,a4);try{return await u1.jwtVerify(this.value,r,{issuer:o4,audience:a,clockTolerance:o}),!0}catch{return!1}}};var J=class{constructor(e){this.promise=null;this.fn=e}execute(e){return this.promise===null&&(this.promise=(async()=>{try{return await this.fn(e)}finally{this.promise=null}})()),this.promise}};var Z2=class{constructor(){this._cache={}}get(e){return this._cache[e]}put(e,a){a!==void 0?this._cache[e]=a:this.del(e)}del(e){delete this._cache[e]}},x2=class{get(e){let a=localStorage.getItem(e);return a===null?void 0:JSON.parse(a)}put(e,a){a!==void 0?localStorage.setItem(e,JSON.stringify(a)):this.del(e)}del(e){localStorage.removeItem(e)}};function z3(){return typeof window<"u"&&window.localStorage?new x2:new Z2}var W=z3();function e1(i){return new Date(i*1e3)}function $3(i){return i.map(e=>{switch(e.type){case"wallet":return{address:e.address,type:e.type,verifiedAt:e1(e.verified_at),chainType:e.chain_type};case"email":return{address:e.address,type:e.type,verifiedAt:e1(e.verified_at)};case"phone":return{number:e.phoneNumber,type:e.type,verifiedAt:e1(e.verified_at)};case"google_oauth":return{subject:e.subject,email:e.email,name:e.name,type:e.type,verifiedAt:e1(e.verified_at)};case"twitter_oauth":return{subject:e.subject,username:e.username,name:e.name,type:e.type,verifiedAt:e1(e.verified_at)};case"discord_oauth":return{subject:e.subject,username:e.username,email:e.email,type:e.type,verifiedAt:e1(e.verified_at)};default:throw new C("Unrecognized account type")}})}function m1(i,e){return i.sort((a,o)=>o.verifiedAt.getTime()-a.verifiedAt.getTime()),i.find(a=>a.type===e)}function B(i){if(!i)return null;let e=$3(i.linked_accounts),a=m1(e,"wallet"),o=m1(e,"email"),r=m1(e,"phone"),n=m1(e,"google_oauth"),d=m1(e,"twitter_oauth"),h=m1(e,"discord_oauth");return{id:i.id,createdAt:e1(i.created_at),linkedAccounts:e,email:o&&{address:o==null?void 0:o.address},phone:r&&{number:r==null?void 0:r.number},wallet:a&&{address:a.address,chainType:a.chainType,chainId:a.chainId,walletType:a.walletType},google:n&&{subject:n.subject,email:n.email,name:n.name},twitter:d&&{subject:d.subject,username:d.username,name:d.name},discord:h&&{subject:h.subject,username:h.username,email:h.email}}}var l4=()=>"/api/v1/sessions",n4=()=>"/api/v1/sessions/logout",s4=()=>"/api/v1/sessions/fork",C4=()=>"/api/v1/siwe/init",d4=()=>"/api/v1/siwe/authenticate",c4=()=>"/api/v1/siwe/link",p4=()=>"/api/v1/passwordless/init",h4=()=>"/api/v1/passwordless/authenticate",f4=()=>"/api/v1/passwordless/link",u4=()=>"/api/v1/passwordless_sms/init",m4=()=>"/api/v1/passwordless_sms/authenticate",b4=()=>"/api/v1/passwordless_sms/link",k4=()=>"/api/v1/oauth/init",g4=()=>"/api/v1/oauth/authenticate",M4=()=>"/api/v1/oauth/link",w4=()=>"/api/v1/siwe/unlink",y4=()=>"/api/v1/passwordless/unlink",v4=()=>"/api/v1/passwordless_sms/unlink",Z4=()=>"/api/v1/oauth/unlink";var q3=30,H1=class{constructor(){this.authenticateOnce=new J(async e=>this._authenticate(e)),this.linkOnce=new J(async e=>this._link(e)),this.refreshOnce=new J(this._refresh.bind(this)),this.destroyOnce=new J(this._destroy.bind(this)),this.forkSessionOnce=new J(this._forkSession.bind(this))}get token(){try{let e=W.get(f1);return typeof e=="string"?new Y(e).value:null}catch(e){return console.error(e),this.destroyLocalState(),null}}get refreshToken(){try{let e=W.get(F1);return typeof e=="string"?e:null}catch(e){return console.error(e),this.destroyLocalState(),null}}hasRefreshCredentials(){return typeof this.token=="string"&&typeof this.refreshToken=="string"}hasActiveToken(){let e=Y.parse(this.token);return e!==null&&!e.isExpired(q3)}async hasValidToken(e,a,o=0){let r=Y.parse(this.token);return r!==null&&await r.isValid(e,a,o)}authenticate(e){return this.authenticateOnce.execute(e)}link(e){return this.linkOnce.execute(e)}refresh(){return this.refreshOnce.execute()}forkSession(){return this.forkSessionOnce.execute()}destroy(){return this.destroyOnce.execute()}async _authenticate(e){try{let{token:a,refresh_token:o,user:r}=await e.authenticate();return this.storeToken(a),this.storeRefreshToken(o),B(r)}catch(a){throw console.warn("Error authenticating session"),U(a)}}async _link(e){try{let a=await e.link();return B(a)}catch(a){throw console.warn("Error linking account"),U(a)}}async _refresh(){if(!this.api)throw new C("Session has no API instance");let e=this.token,a=this.refreshToken;if(!e||!a)return null;try{let o=await this.api.post(l4(),{refresh_token:a});return this.storeToken(o.data.token),this.storeRefreshToken(o.data.refresh_token),B(o.data.user)}catch(o){throw U(o)}}async _destroy(){var e;try{await((e=this.api)==null?void 0:e.post(n4(),{refresh_token:this.refreshToken}))}catch{console.warn("Error destroying session")}this.destroyLocalState()}async _forkSession(){if(!this.api)throw new C("Session has no API instance");let e=this.refreshToken;try{let a=await this.api.post(s4(),{refresh_token:e});return this.storeToken(a.data.token),this.storeRefreshToken(a.data.refresh_token),a.data.new_session_refresh_token}catch(a){throw U(a)}}destroyLocalState(){this.storeToken(null),this.storeRefreshToken(null)}storeToken(e){typeof e=="string"?W.put(f1,e):W.del(f1)}storeRefreshToken(e){typeof e=="string"?W.put(F1,e):W.del(F1)}};import{getAddress as t5}from"@ethersproject/address";import L4 from"@walletconnect/web3-provider";import{ErrorCode as K3}from"@ethersproject/logger";var b1=class extends N{constructor(){super("Wallet timeout");this.type="wallet_error"}},B1=i=>{if(i instanceof N)return i;if((i==null?void 0:i.code)&&(i==null?void 0:i.reason)){let e=new k1(i);return i.code===K3.ACTION_REJECTED&&(e.details=i1.E4001_USER_REJECTED_REQUEST),e}return i!=null&&i.code?new k1(i):new N("Unknown connector error",i)},L2=class extends V{constructor(a,o,r){super(a);this.type="provider_error";this.code=o,this.data=r}},k1=class extends L2{constructor(a){var n,d,h;let o=a;super(o.message,o.code,o.data);let r=Object.values(i1).find(f=>f.eipCode===o.code);this.details=r||i1.UNKNOWN_ERROR,o.code===-32002&&((n=o.message)!=null&&n.includes("already pending for origin")?(d=o.message)!=null&&d.includes("wallet_requestPermissions")?this.details=i1.E32002_CONNECTION_ALREADY_PENDING:this.details=i1.E32002_REQUEST_ALREADY_PENDING:(h=o.message)!=null&&h.includes("Already processing")&&o.message.includes("eth_requestAccounts")&&(this.details=i1.E32002_WALLET_LOCKED))}},Y3={ERROR_USER_EXISTS:{message:"User already exists for this address",detail:"Try another address!",retryable:!1},ERROR_TIMED_OUT:{message:"Wallet request timed out",detail:"Please try connecting again.",retryable:!0},ERROR_WALLET_CONNECTION:{message:"Could not log in with wallet",detail:"Please try connecting again.",retryable:!0}},J3={E32002_CONNECTION_ALREADY_PENDING:{eipCode:-32002,message:"Connection request already pending",detail:"Don\u2019t see your wallet modal? Check your other browser windows.",retryable:!1},E32002_REQUEST_ALREADY_PENDING:{eipCode:-32002,message:"Resource request already pending",detail:"Don\u2019t see your wallet modal? Check your other browser windows.",retryable:!1},E32002_WALLET_LOCKED:{eipCode:-32002,message:"Wallet might be locked",detail:"Don\u2019t see your wallet modal? Check your other browser windows.",retryable:!1},E4001_USER_REJECTED_REQUEST:{eipCode:4001,message:"Signature rejected",detail:"Please try signing again.",retryable:!0}},X3={E4001_DEFAULT_USER_REJECTED_REQUEST:{eipCode:4001,message:"User Rejected Request",detail:"The user rejected the request.",default:!0,retryable:!0},E4100_DEFAULT_UNAUTHORIZED:{eipCode:4100,message:"Unauthorized",detail:"The requested method and/or account has not been authorized by the user.",default:!0,retryable:!1},E4200_DEFAULT_UNSUPPORTED_METHOD:{eipCode:4200,message:"Unsupported Method",detail:"The Provider does not support the requested method.",default:!0,retryable:!1},E4900_DEFAULT_DISCONNECTED:{eipCode:4900,message:"Disconnected",detail:"The Provider is disconnected from all chains.",default:!0,retryable:!0},E4901_DEFAULT_CHAIN_DISCONNECTED:{eipCode:4901,message:"Chain Disconnected",detail:"The Provider is not connected to the requested chain.",default:!0,retryable:!0},E32700_DEFAULT_PARSE_ERROR:{eipCode:-32700,message:"Parse error",detail:"Invalid JSON",default:!0,retryable:!1},E32600_DEFAULT_INVALID_REQUEST:{eipCode:-32600,message:"Invalid request",detail:"JSON is not a valid request object",default:!0,retryable:!1},E32601_DEFAULT_METHOD_NOT_FOUND:{eipCode:-32601,message:"Method not found",detail:"Method does not exist",default:!0,retryable:!1},E32602_DEFAULT_INVALID_PARAMS:{eipCode:-32602,message:"Invalid params",detail:"Invalid method parameters",default:!0,retryable:!1},E32603_DEFAULT_INTERNAL_ERROR:{eipCode:-32603,message:"Internal error",detail:"Internal JSON-RPC error",default:!0,retryable:!0},E32000_DEFAULT_INVALID_INPUT:{eipCode:-32e3,message:"Invalid input",detail:"Missing or invalid parameters",default:!0,retryable:!1},E32001_DEFAULT_RESOURCE_NOT_FOUND:{eipCode:-32001,message:"Resource not found",detail:"Requested resource not found",default:!0,retryable:!1},E32002_DEFAULT_RESOURCE_UNAVAILABLE:{eipCode:-32002,message:"Resource unavailable",detail:"Requested resource not available",default:!0,retryable:!0},E32003_DEFAULT_TRANSACTION_REJECTED:{eipCode:-32003,message:"Transaction rejected",detail:"Transaction creation failed",default:!0,retryable:!0},E32004_DEFAULT_METHOD_NOT_SUPPORTED:{eipCode:-32004,message:"Method not supported",detail:"Method is not implemented",default:!0,retryable:!1},E32005_DEFAULT_LIMIT_EXCEEDED:{eipCode:-32005,message:"Limit exceeded",detail:"Request exceeds defined limit",default:!0,retryable:!1},E32006_DEFAULT_JSON_RPC_VERSION_NOT_SUPPORTED:{eipCode:-32006,message:"JSON-RPC version not supported",detail:"Version of JSON-RPC protocol is not supported",default:!0,retryable:!1}},i1={UNKNOWN_ERROR:{eipCode:0,message:"Unknown error",detail:"Unknown error",retryable:!0},...X3,...J3},j1={...Y3,...i1};var Q3=12e4,A2=(i=new b1,e=Q3)=>new Promise((a,o)=>setTimeout(()=>{o(i)},e)),g1=class{constructor(e){this.removeListener=(e,a)=>{if(this.walletProvider)return this.walletProvider.removeListener(e,a)};this.setProvider=e=>{this.walletProvider=e,this._subscriptions.forEach(a=>{var o;(o=this.walletProvider)==null||o.on(a.eventName,a.listener)})};this.walletProvider=e,this._subscriptions=[]}on(e,a){if(this.walletProvider)return this.walletProvider.on(e,a);this._subscriptions.push({eventName:e,listener:a})}request(e){if(!this.walletProvider)throw new N(`A wallet request of type ${e.method} was made before setting a wallet provider.`);return Promise.race([this.walletProvider.request(e),A2()]).catch(a=>{throw B1(a)})}},M1=class extends g1{constructor(a){super(a)}},z1=class extends g1{constructor(e){super(e)}sendAsync(e,a){throw new Error("sendAsync is no longer supported by EIP-1193. Use the request method instead.")}};import{Web3Provider as e5}from"@ethersproject/providers";var x4=["metamask","coinbase_wallet","wallet_connect"];import i5 from"@coinbase/wallet-sdk";var a5=()=>{let i=`https://mainnet.infura.io/v3/${D1}`,e=1;return new i5({appName:"Privy",darkMode:!1,headlessMode:!1}).makeWeb3Provider(i,e)},E2=()=>{if(!window.ethereum)return!1;if(window.ethereum.isMetaMask)return!0;if(window.ethereum.providers){for(let i of window.ethereum.providers)if(i.isMetaMask)return!0}return!1},q1=()=>{if(!window.ethereum)return!1;if(window.ethereum.isCoinbaseWallet)return!0;if(window.ethereum.providers){for(let i of window.ethereum.providers)if(i.isCoinbaseWallet)return!0}return!1},$1=class{constructor(){this.walletType=null;this.getEthereumProvider=()=>this.ethProvider;this.createSiweMessage=(e,a,o,r,n,d,h)=>`${o} wants you to sign in with your Ethereum account:
2
2
  ${a}
3
3
 
4
4
  ${h}
@@ -9,7 +9,7 @@ Chain ID: ${e}
9
9
  Nonce: ${d}
10
10
  Issued At: ${n}
11
11
  Resources:
12
- - https://privy.io`;this.ethProvider=new g1}initialize(){let e=W.get(V1);x4.includes(e)&&(this.walletType=e,this.connect({showPrompt:!1}))}destroy(){this.walletType=null,W.del(V1),W.del(r4)}async getConnectedWallet(){let e=this.walletType;if(!e||!await this.isConnected())return null;let a=await this.address(),o=await this.chainId();return{address:a,chainId:o,chainType:"ethereum",walletType:e}}async connect(e){var a;switch(this.walletType){case"metamask":this.ethProvider.setProvider(window.ethereum),(a=window.ethereum.providers)==null||a.forEach(async r=>{r.isMetaMask&&this.ethProvider.setProvider(r)});break;case"coinbase_wallet":this.ethProvider.setProvider(a5());break;case"wallet_connect":let o=new L4({infuraId:D1});this.ethProvider.setProvider(o);break;default:throw new N(`Unsupported wallet: ${this.walletType}`)}return(!await this.isConnected()||e.showPrompt)&&await this.promptConnection(this.walletType),this.getConnectedWallet()}async isConnected(){switch(this.walletType){case"metamask":return await this.address()!==null;case"coinbase_wallet":return await this.address()!==null;case"wallet_connect":return this.ethProvider.walletProvider.connected;default:throw new N(`Unsupported wallet: ${this.walletType}`)}}async promptConnection(e){try{switch(e){case"metamask":await this.ethProvider.request({method:"wallet_requestPermissions",params:[{eth_accounts:{}}]}),await this.ethProvider.request({method:"eth_requestAccounts"});break;case"coinbase_wallet":await this.ethProvider.request({method:"eth_requestAccounts"});break;case"wallet_connect":let a=new L4({infuraId:D1});this.ethProvider.setProvider(a),await Promise.race([a.enable(),A2()]);break;default:throw new N(`Unsupported wallet: ${this.walletType}`)}W.put(V1,e)}catch(a){throw B1(a)}}async sign(e){return new e5.Web3Provider(new M1(this.getEthereumProvider())).getSigner().signMessage(e)}prepareMessage(e,a,o){let r=window.location.host,n=window.location.origin,d=`Welcome! Before continuing, ${r} needs to verify you own this wallet. Signing this message proves ownership. Please note that signing is NOT a transaction, there are NO fees, and this signature does NOT authorize any future transaction requests.`,h=new Date().toISOString();return this.createSiweMessage(e,a,r,n,h,o,d)}async chainId(){let e=await this.getEthereumProvider().request({method:"eth_chainId"}),a=Number(e);return String(a)}async address(){let e=await this.getEthereumProvider().request({method:"eth_accounts"});return Array.isArray(e)&&e.length>0?t5(e[0]):null}};var _2,K1=class{constructor(e){let a=e.apiURL||Q2,o=e.timeout||e4;this.appId=e.appId,this.connector=new $1,this.connector.initialize(),_2||(_2=new H1),this.session=_2,this.api=new G1(e.appId,this.session,{baseURL:a,timeout:o}),this.session.api=this.api}authenticate(){if(!this.authFlow)throw new C("No auth flow in progress.");return this.session.authenticate(this.authFlow)}link(){if(!this.authFlow)throw new C("No auth flow in progress.");return this.session.link(this.authFlow)}async logout(){await this.session.destroy(),this.connector.destroy(),this.authFlow=void 0}startAuthFlow(e){e.api=this.api,this.authFlow=e}async unlinkEmail(e){try{let a=await this.api.post(y4(),{address:e});return B(a.data)}catch(a){throw U(a)}}async unlinkPhone(e){try{let a=await this.api.post(v4(),{phoneNumber:e});return B(a.data)}catch(a){throw U(a)}}async unlinkWallet(e){try{let a=await this.api.post(w4(),{address:e});return B(a.data)}catch(a){throw U(a)}}async unlinkOAuth(e,a){try{let o=await this.api.post(Z4(),{provider:e,subject:a});return B(o.data)}catch(o){throw U(o)}}async getAuthenticatedUser(){return this.session.hasRefreshCredentials()?this.session.refresh():null}async getAccessToken(){if(this.session.hasActiveToken()){let{verificationKey:e,id:a}=await this.getAppSettings();return await this.session.hasValidToken(e,a,i4)?this.session.token:(await this.logout(),null)}else return this.session.hasRefreshCredentials()?(await this.session.refresh(),this.session.token):null}async getAppSettings(){try{let e=await this.api.get(`/api/v1/apps/${this.appId}`);return{id:e.data.id,name:e.data.name,verificationKey:e.data.verification_key,logoUrl:e.data.logo_url||void 0,theme:e.data.theme,accentColor:e.data.accent_color||void 0,walletAuth:e.data.wallet_auth,emailAuth:e.data.email_auth,smsAuth:e.data.sms_auth,googleOAuth:e.data.google_oauth,twitterOAuth:e.data.twitter_oauth,discordOAuth:e.data.discord_oauth,termsAndConditionsUrl:e.data.terms_and_conditions_url,privacyPolicyUrl:e.data.privacy_policy_url,createdAt:new Date(e.data.created_at*1e3),updatedAt:new Date(e.data.updated_at*1e3)}}catch(e){throw U(e)}}async forkSession(){return await this.session.forkSession()}};import{Web3Provider as K6}from"@ethersproject/providers";import{createContext as o5,useContext as r5}from"react";var u=()=>{throw new Error("You need to wrap your application with the <PrivyProvider> initialized with your app id.")};var P2=o5({ready:!1,authenticated:!1,user:null,login:u,linkEmail:u,linkPhone:u,linkWallet:u,linkGoogle:u,linkTwitter:u,linkDiscord:u,logout:u,getAccessToken:u,getEthereumProvider:u,getEthersProvider:u,getWeb3jsProvider:u,unlinkEmail:u,unlinkPhone:u,unlinkWallet:u,unlinkGoogle:u,unlinkTwitter:u,unlinkDiscord:u,forkSession:u}),S=()=>r5(P2);var _1=class{constructor(e){this.connector=e,this.meta={wallet:this.connector.walletType}}async authenticate(){if(!this.api)throw new C("Auth flow has no API instance");if(!this.connector.walletType)throw new C("Wallet must be specified");try{let{message:e,signature:a}=await this.promptConnectAndSign(this.api),o=await this.api.post(d4(),{message:e,signature:a});return{user:o.data.user,token:o.data.token,refresh_token:o.data.refresh_token}}catch(e){throw v(e)}}async link(){if(!this.api)throw new C("Auth flow has no API instance");if(!this.connector.walletType)throw new C("Wallet must be specified");try{let{message:e,signature:a}=await this.promptConnectAndSign(this.api);return(await this.api.post(c4(),{message:e,signature:a})).data}catch(e){throw v(e)}}async promptConnectAndSign(e){let a=await this.connector.connect({showPrompt:!0}),o=a.address,r=a.chainId,n=await e.post(C4(),{address:o}),d=this.connector.prepareMessage(r,o,n.data.nonce),h=await this.connector.sign(d);return{message:d,signature:h}}getEthereumProvider(){return this.connector.getEthereumProvider()}};var P1=class{constructor(e){this.meta={email:e}}async authenticate(){if(!this.api)throw new C("Auth flow has no API instance");if(!this.meta.email||!this.meta.emailCode)throw new C("Email and email code must be set prior to calling authenticate.");try{let e=h4(),a=await this.api.post(e,{email:this.meta.email,code:this.meta.emailCode});return{user:a.data.user,token:a.data.token,refresh_token:a.data.refresh_token}}catch(e){throw v(e)}}async link(){if(!this.api)throw new C("Auth flow has no API instance");if(!this.meta.email||!this.meta.emailCode)throw new C("Email and email code must be set prior to calling authenticate.");try{let e=f4();return(await this.api.post(e,{email:this.meta.email,code:this.meta.emailCode})).data}catch(e){throw v(e)}}async sendCodeEmail(e){if(!this.api)throw new C("Auth flow has no API instance");if(e&&(this.meta.email=e),!this.meta.email)throw new C("Email must be set when initialzing authentication.");try{let a=p4();return(await this.api.post(a,{email:this.meta.email})).data}catch(a){throw v(a)}}};var T1=class{constructor(e){this.meta={phoneNumber:e}}async authenticate(){if(!this.api)throw new C("Auth flow has no API instance");if(!this.meta.phoneNumber||!this.meta.smsCode)throw new C("phone number and sms code must be set prior to calling authenticate.");try{let e=m4(),a=await this.api.post(e,{phoneNumber:this.meta.phoneNumber,code:this.meta.smsCode});return{user:a.data.user,token:a.data.token,refresh_token:a.data.refresh_token}}catch(e){throw v(e)}}async link(){if(!this.api)throw new C("Auth flow has no API instance");if(!this.meta.phoneNumber||!this.meta.smsCode)throw new C("phone number and sms code must be set prior to calling authenticate.");try{let e=b4();return(await this.api.post(e,{phoneNumber:this.meta.phoneNumber,code:this.meta.smsCode})).data}catch(e){throw v(e)}}async sendSmsCode(e){if(!this.api)throw new C("Auth flow has no API instance");if(e&&(this.meta.phoneNumber=e),!this.meta.phoneNumber)throw new C("phone nNumber must be set when initialzing authentication.");try{let a=u4();return(await this.api.post(a,{phoneNumber:this.meta.phoneNumber})).data}catch(a){throw v(a)}}};var w1=class{constructor(e,a,o){this.meta={provider:e},this.meta.authorizationCode=a,this.meta.stateCode=o}isActive(){return!!(this.meta.authorizationCode&&this.meta.stateCode&&this.meta.provider)}async authenticate(){if(!this.api)throw new C("Auth flow has no API instance");if(!this.meta.authorizationCode||!this.meta.stateCode)throw new C("[OAuth AuthFlow] Authorization and state codes code must be set prior to calling authenticate.");if(this.meta.authorizationCode==="undefined")throw new C("User denied confirmation during OAuth flow");try{let e=g4(),a=await this.api.post(e,{authorization_code:this.meta.authorizationCode,state_code:this.meta.stateCode});return{user:a.data.user,token:a.data.token,refresh_token:a.data.refresh_token}}catch(e){throw v(e)}}async link(){if(!this.api)throw new C("Auth flow has no API instance");if(!this.meta.authorizationCode||!this.meta.stateCode)throw new C("[OAuth AuthFlow] Authorization and state codes code must be set prior to calling link.");if(this.meta.authorizationCode==="undefined")throw new C("User denied confirmation during OAuth flow");try{let e=M4();return(await this.api.post(e,{authorization_code:this.meta.authorizationCode,state_code:this.meta.stateCode})).data}catch(e){throw v(e)}}async getAuthorizationUrl(){if(!this.api)throw new C("Auth flow has no API instance");if(!this.meta.provider)throw new C("Provider must be set when initialzing OAuth authentication.");try{let e=k4();return(await this.api.post(e,{provider:this.meta.provider,redirect_to:window.location.href})).data}catch(e){throw v(e)}}};import"wicg-inert";import H6 from"react-dom";import K2 from"styled-components";import{createContext as n5,useContext as s5,useEffect as E4,useState as _4}from"react";import{jsx as l5}from"react/jsx-runtime";function A4(i){return l5("link",{rel:"prefetch",href:i.src})}import{jsx as C5,jsxs as d5}from"react/jsx-runtime";var P4=n5({ready:!1,app:null,options:{email:!0,sms:!1,wallet:!0,google:!1,twitter:!1,discord:!1},currentScreen:"LANDING",lastScreen:"LANDING",navigate:u,navigateBack:u}),T4=i=>{let e=i.appSettings,a=i.authenticated,o=i.visible,[r,n]=_4(null),[d,h]=_4(null);E4(()=>{a||n(null)},[a]),E4(()=>{o||(h("LANDING"),n("LANDING"))},[o]);let f={ready:!!(e!=null&&e.id),app:e,options:i.options,currentScreen:r||"LANDING",lastScreen:d||"LANDING",navigate:k=>{h(r),n(k)},navigateBack:()=>{n(d)}};return d5(P4.Provider,{value:f,children:[e&&e.logoUrl&&C5(A4,{src:e.logoUrl}),i.children]})},M=()=>s5(P4);import{useEffect as e6,useState as i6}from"react";import W1 from"styled-components";import h5 from"styled-components";import{jsx as S4}from"react/jsx-runtime";var I4=({style:i,...e})=>S4("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",style:{height:"1.5rem",width:"1.5rem",...i},...e,children:S4("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 18L18 6M6 6l12 12"})});import{jsx as R4}from"react/jsx-runtime";var W4=({style:i,...e})=>R4("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",style:{height:"1.5rem",width:"1.5rem",...i},...e,children:R4("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M10.5 19.5L3 12m0 0l7.5-7.5M3 12h18"})});import{createContext as c5,useContext as p5}from"react";var T2=c5({getAuthMeta:u,getAuthFlow:u,closePrivyModal:u,initLoginWithWallet:u,loginWithWallet:u,loginWithCode:u,loginWithEmail:u,loginWithSms:u,resendEmailCode:u,resendSmsCode:u,initLoginWithOAuth:u,loginWithOAuth:u}),x=()=>p5(T2);import{jsx as j,jsxs as k5}from"react/jsx-runtime";var f5=()=>j("div",{}),u5=({backFn:i})=>j("div",{children:j(W4,{onClick:i})}),m5=()=>{let{closePrivyModal:i}=x();return j("div",{children:j("div",{children:j(I4,{onClick:i})})})};var E=({backFn:i})=>k5(b5,{children:[i?j(u5,{backFn:i}):j(f5,{}),j(m5,{})]}),b5=h5.div`
12
+ - https://privy.io`;this.ethProvider=new g1}initialize(){let e=W.get(V1);x4.includes(e)&&(this.walletType=e,this.connect({showPrompt:!1}))}destroy(){this.walletType=null,W.del(V1),W.del(r4)}async getConnectedWallet(){let e=this.walletType;if(!e||!await this.isConnected())return null;let a=await this.address(),o=await this.chainId();return{address:a,chainId:o,chainType:"ethereum",walletType:e}}async connect(e){var a;switch(this.walletType){case"metamask":this.ethProvider.setProvider(window.ethereum),(a=window.ethereum.providers)==null||a.forEach(async r=>{r.isMetaMask&&this.ethProvider.setProvider(r)});break;case"coinbase_wallet":this.ethProvider.setProvider(a5());break;case"wallet_connect":let o=new L4({infuraId:D1});this.ethProvider.setProvider(o);break;default:throw new N(`Unsupported wallet: ${this.walletType}`)}return(!await this.isConnected()||e.showPrompt)&&await this.promptConnection(this.walletType),this.getConnectedWallet()}async isConnected(){switch(this.walletType){case"metamask":return await this.address()!==null;case"coinbase_wallet":return await this.address()!==null;case"wallet_connect":return this.ethProvider.walletProvider.connected;default:throw new N(`Unsupported wallet: ${this.walletType}`)}}async promptConnection(e){try{switch(e){case"metamask":await this.ethProvider.request({method:"wallet_requestPermissions",params:[{eth_accounts:{}}]}),await this.ethProvider.request({method:"eth_requestAccounts"});break;case"coinbase_wallet":await this.ethProvider.request({method:"eth_requestAccounts"});break;case"wallet_connect":let a=new L4({infuraId:D1});this.ethProvider.setProvider(a),await Promise.race([a.enable(),A2()]);break;default:throw new N(`Unsupported wallet: ${this.walletType}`)}W.put(V1,e)}catch(a){throw B1(a)}}async sign(e){return new e5(new M1(this.getEthereumProvider())).getSigner().signMessage(e)}prepareMessage(e,a,o){let r=window.location.host,n=window.location.origin,d=`Welcome! Before continuing, ${r} needs to verify you own this wallet. Signing this message proves ownership. Please note that signing is NOT a transaction, there are NO fees, and this signature does NOT authorize any future transaction requests.`,h=new Date().toISOString();return this.createSiweMessage(e,a,r,n,h,o,d)}async chainId(){let e=await this.getEthereumProvider().request({method:"eth_chainId"}),a=Number(e);return String(a)}async address(){let e=await this.getEthereumProvider().request({method:"eth_accounts"});return Array.isArray(e)&&e.length>0?t5(e[0]):null}};var _2,K1=class{constructor(e){let a=e.apiURL||Q2,o=e.timeout||e4;this.appId=e.appId,this.connector=new $1,this.connector.initialize(),_2||(_2=new H1),this.session=_2,this.api=new G1(e.appId,this.session,{baseURL:a,timeout:o}),this.session.api=this.api}authenticate(){if(!this.authFlow)throw new C("No auth flow in progress.");return this.session.authenticate(this.authFlow)}link(){if(!this.authFlow)throw new C("No auth flow in progress.");return this.session.link(this.authFlow)}async logout(){await this.session.destroy(),this.connector.destroy(),this.authFlow=void 0}startAuthFlow(e){e.api=this.api,this.authFlow=e}async unlinkEmail(e){try{let a=await this.api.post(y4(),{address:e});return B(a.data)}catch(a){throw U(a)}}async unlinkPhone(e){try{let a=await this.api.post(v4(),{phoneNumber:e});return B(a.data)}catch(a){throw U(a)}}async unlinkWallet(e){try{let a=await this.api.post(w4(),{address:e});return B(a.data)}catch(a){throw U(a)}}async unlinkOAuth(e,a){try{let o=await this.api.post(Z4(),{provider:e,subject:a});return B(o.data)}catch(o){throw U(o)}}async getAuthenticatedUser(){return this.session.hasRefreshCredentials()?this.session.refresh():null}async getAccessToken(){if(this.session.hasActiveToken()){let{verificationKey:e,id:a}=await this.getAppSettings();return await this.session.hasValidToken(e,a,i4)?this.session.token:(await this.logout(),null)}else return this.session.hasRefreshCredentials()?(await this.session.refresh(),this.session.token):null}async getAppSettings(){try{let e=await this.api.get(`/api/v1/apps/${this.appId}`);return{id:e.data.id,name:e.data.name,verificationKey:e.data.verification_key,logoUrl:e.data.logo_url||void 0,theme:e.data.theme,accentColor:e.data.accent_color||void 0,walletAuth:e.data.wallet_auth,emailAuth:e.data.email_auth,smsAuth:e.data.sms_auth,googleOAuth:e.data.google_oauth,twitterOAuth:e.data.twitter_oauth,discordOAuth:e.data.discord_oauth,termsAndConditionsUrl:e.data.terms_and_conditions_url,privacyPolicyUrl:e.data.privacy_policy_url,createdAt:new Date(e.data.created_at*1e3),updatedAt:new Date(e.data.updated_at*1e3)}}catch(e){throw U(e)}}async forkSession(){return await this.session.forkSession()}};import{Web3Provider as K6}from"@ethersproject/providers";import{createContext as o5,useContext as r5}from"react";var u=()=>{throw new Error("You need to wrap your application with the <PrivyProvider> initialized with your app id.")};var P2=o5({ready:!1,authenticated:!1,user:null,login:u,linkEmail:u,linkPhone:u,linkWallet:u,linkGoogle:u,linkTwitter:u,linkDiscord:u,logout:u,getAccessToken:u,getEthereumProvider:u,getEthersProvider:u,getWeb3jsProvider:u,unlinkEmail:u,unlinkPhone:u,unlinkWallet:u,unlinkGoogle:u,unlinkTwitter:u,unlinkDiscord:u,forkSession:u}),S=()=>r5(P2);var _1=class{constructor(e){this.connector=e,this.meta={wallet:this.connector.walletType}}async authenticate(){if(!this.api)throw new C("Auth flow has no API instance");if(!this.connector.walletType)throw new C("Wallet must be specified");try{let{message:e,signature:a}=await this.promptConnectAndSign(this.api),o=await this.api.post(d4(),{message:e,signature:a});return{user:o.data.user,token:o.data.token,refresh_token:o.data.refresh_token}}catch(e){throw v(e)}}async link(){if(!this.api)throw new C("Auth flow has no API instance");if(!this.connector.walletType)throw new C("Wallet must be specified");try{let{message:e,signature:a}=await this.promptConnectAndSign(this.api);return(await this.api.post(c4(),{message:e,signature:a})).data}catch(e){throw v(e)}}async promptConnectAndSign(e){let a=await this.connector.connect({showPrompt:!0}),o=a.address,r=a.chainId,n=await e.post(C4(),{address:o}),d=this.connector.prepareMessage(r,o,n.data.nonce),h=await this.connector.sign(d);return{message:d,signature:h}}getEthereumProvider(){return this.connector.getEthereumProvider()}};var P1=class{constructor(e){this.meta={email:e}}async authenticate(){if(!this.api)throw new C("Auth flow has no API instance");if(!this.meta.email||!this.meta.emailCode)throw new C("Email and email code must be set prior to calling authenticate.");try{let e=h4(),a=await this.api.post(e,{email:this.meta.email,code:this.meta.emailCode});return{user:a.data.user,token:a.data.token,refresh_token:a.data.refresh_token}}catch(e){throw v(e)}}async link(){if(!this.api)throw new C("Auth flow has no API instance");if(!this.meta.email||!this.meta.emailCode)throw new C("Email and email code must be set prior to calling authenticate.");try{let e=f4();return(await this.api.post(e,{email:this.meta.email,code:this.meta.emailCode})).data}catch(e){throw v(e)}}async sendCodeEmail(e){if(!this.api)throw new C("Auth flow has no API instance");if(e&&(this.meta.email=e),!this.meta.email)throw new C("Email must be set when initialzing authentication.");try{let a=p4();return(await this.api.post(a,{email:this.meta.email})).data}catch(a){throw v(a)}}};var T1=class{constructor(e){this.meta={phoneNumber:e}}async authenticate(){if(!this.api)throw new C("Auth flow has no API instance");if(!this.meta.phoneNumber||!this.meta.smsCode)throw new C("phone number and sms code must be set prior to calling authenticate.");try{let e=m4(),a=await this.api.post(e,{phoneNumber:this.meta.phoneNumber,code:this.meta.smsCode});return{user:a.data.user,token:a.data.token,refresh_token:a.data.refresh_token}}catch(e){throw v(e)}}async link(){if(!this.api)throw new C("Auth flow has no API instance");if(!this.meta.phoneNumber||!this.meta.smsCode)throw new C("phone number and sms code must be set prior to calling authenticate.");try{let e=b4();return(await this.api.post(e,{phoneNumber:this.meta.phoneNumber,code:this.meta.smsCode})).data}catch(e){throw v(e)}}async sendSmsCode(e){if(!this.api)throw new C("Auth flow has no API instance");if(e&&(this.meta.phoneNumber=e),!this.meta.phoneNumber)throw new C("phone nNumber must be set when initialzing authentication.");try{let a=u4();return(await this.api.post(a,{phoneNumber:this.meta.phoneNumber})).data}catch(a){throw v(a)}}};var w1=class{constructor(e,a,o){this.meta={provider:e},this.meta.authorizationCode=a,this.meta.stateCode=o}isActive(){return!!(this.meta.authorizationCode&&this.meta.stateCode&&this.meta.provider)}async authenticate(){if(!this.api)throw new C("Auth flow has no API instance");if(!this.meta.authorizationCode||!this.meta.stateCode)throw new C("[OAuth AuthFlow] Authorization and state codes code must be set prior to calling authenticate.");if(this.meta.authorizationCode==="undefined")throw new C("User denied confirmation during OAuth flow");try{let e=g4(),a=await this.api.post(e,{authorization_code:this.meta.authorizationCode,state_code:this.meta.stateCode});return{user:a.data.user,token:a.data.token,refresh_token:a.data.refresh_token}}catch(e){throw v(e)}}async link(){if(!this.api)throw new C("Auth flow has no API instance");if(!this.meta.authorizationCode||!this.meta.stateCode)throw new C("[OAuth AuthFlow] Authorization and state codes code must be set prior to calling link.");if(this.meta.authorizationCode==="undefined")throw new C("User denied confirmation during OAuth flow");try{let e=M4();return(await this.api.post(e,{authorization_code:this.meta.authorizationCode,state_code:this.meta.stateCode})).data}catch(e){throw v(e)}}async getAuthorizationUrl(){if(!this.api)throw new C("Auth flow has no API instance");if(!this.meta.provider)throw new C("Provider must be set when initialzing OAuth authentication.");try{let e=k4();return(await this.api.post(e,{provider:this.meta.provider,redirect_to:window.location.href})).data}catch(e){throw v(e)}}};import"wicg-inert";import H6 from"react-dom";import K2 from"styled-components";import{createContext as n5,useContext as s5,useEffect as E4,useState as _4}from"react";import{jsx as l5}from"react/jsx-runtime";function A4(i){return l5("link",{rel:"prefetch",href:i.src})}import{jsx as C5,jsxs as d5}from"react/jsx-runtime";var P4=n5({ready:!1,app:null,options:{email:!0,sms:!1,wallet:!0,google:!1,twitter:!1,discord:!1},currentScreen:"LANDING",lastScreen:"LANDING",navigate:u,navigateBack:u}),T4=i=>{let e=i.appSettings,a=i.authenticated,o=i.visible,[r,n]=_4(null),[d,h]=_4(null);E4(()=>{a||n(null)},[a]),E4(()=>{o||(h("LANDING"),n("LANDING"))},[o]);let f={ready:!!(e!=null&&e.id),app:e,options:i.options,currentScreen:r||"LANDING",lastScreen:d||"LANDING",navigate:k=>{h(r),n(k)},navigateBack:()=>{n(d)}};return d5(P4.Provider,{value:f,children:[e&&e.logoUrl&&C5(A4,{src:e.logoUrl}),i.children]})},M=()=>s5(P4);import{useEffect as e6,useState as i6}from"react";import W1 from"styled-components";import h5 from"styled-components";import{jsx as S4}from"react/jsx-runtime";var I4=({style:i,...e})=>S4("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",style:{height:"1.5rem",width:"1.5rem",...i},...e,children:S4("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 18L18 6M6 6l12 12"})});import{jsx as R4}from"react/jsx-runtime";var W4=({style:i,...e})=>R4("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",style:{height:"1.5rem",width:"1.5rem",...i},...e,children:R4("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M10.5 19.5L3 12m0 0l7.5-7.5M3 12h18"})});import{createContext as c5,useContext as p5}from"react";var T2=c5({getAuthMeta:u,getAuthFlow:u,closePrivyModal:u,initLoginWithWallet:u,loginWithWallet:u,loginWithCode:u,loginWithEmail:u,loginWithSms:u,resendEmailCode:u,resendSmsCode:u,initLoginWithOAuth:u,loginWithOAuth:u}),x=()=>p5(T2);import{jsx as j,jsxs as k5}from"react/jsx-runtime";var f5=()=>j("div",{}),u5=({backFn:i})=>j("div",{children:j(W4,{onClick:i})}),m5=()=>{let{closePrivyModal:i}=x();return j("div",{children:j("div",{children:j(I4,{onClick:i})})})};var E=({backFn:i})=>k5(b5,{children:[i?j(u5,{backFn:i}):j(f5,{}),j(m5,{})]}),b5=h5.div`
13
13
  height: 30px;
14
14
  display: flex;
15
15
  align-items: center;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@privy-io/react-auth",
3
- "version": "1.10.0-beta.7",
3
+ "version": "1.10.0-beta.8",
4
4
  "description": "React client for the Privy Auth API",
5
5
  "keywords": [
6
6
  "authentication",
@@ -46,12 +46,12 @@
46
46
  "dependencies": {
47
47
  "@coinbase/wallet-sdk": "^3.6.0",
48
48
  "@ethersproject/address": "^5.7.0",
49
+ "@ethersproject/logger": "^5.7.0",
49
50
  "@ethersproject/providers": "^5.7.1",
50
51
  "@walletconnect/web3-provider": "^1.8.0",
51
52
  "axios": "^1.1.2",
52
53
  "base64-js": "^1.5.1",
53
54
  "dotenv": "^16.0.3",
54
- "ethers": "^5.7.1",
55
55
  "jose": "^4.11.2",
56
56
  "libphonenumber-js": "^1.10.14",
57
57
  "md5": "^2.3.0",