@privy-io/react-auth 1.25.1-beta.2 → 1.25.1-beta.3
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/esm/index.js +2 -1
- package/dist/index.js +2 -1
- package/package.json +1 -1
package/dist/esm/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{Web3Provider as Rm}from"@ethersproject/providers";import{useEffect as Kr,useState as re}from"react";var C=()=>{throw new Error("You need to wrap your application with the <PrivyProvider> initialized with your app id.")};import cc from"axios";var _e=class extends Error{constructor(o,r,n){super(o);r instanceof Error&&(this.cause=r),this.privyErrorCode=n}toString(){return`${this.type}${this.privyErrorCode?`-${this.privyErrorCode}`:""}: ${this.message}${this.cause?` [cause: ${this.cause}]`:""}`}},St=class extends _e{constructor(o,r,n,i,a){super(n,i,a);this.type=o;this.status=r}},x=class extends _e{constructor(o,r,n){super(o,r,n);this.type="client_error"}};var z=class extends _e{constructor(o,r,n){super(o,r,n);this.type="connector_error"}},K=e=>{if(e instanceof _e)return e;if(!cc.isAxiosError(e))return Ce(e);if(!e.response)return new St("api_error",null,e.message,e);let{type:t,message:o,error:r,code:n}=e.response.data;return new St(t||"ApiError",e.response.status,o||r,e,n)},Ce=e=>e instanceof _e?e:e instanceof Error?new x(e.message,e):new x(`Internal error: ${e}`);var yi=()=>"/api/v1/sessions",bi=()=>"/api/v1/sessions/logout",vi=()=>"/api/v1/sessions/fork",wi=()=>"/api/v1/sessions/fork/recover",Ci=()=>"/api/v1/siwe/init",xi=()=>"/api/v1/siwe/authenticate",Ei=()=>"/api/v1/siwe/link",Pi=()=>"/api/v1/passwordless/init",Ti=()=>"/api/v1/passwordless/authenticate",Ai=()=>"/api/v1/passwordless/link",_i=()=>"/api/v1/passwordless_sms/init",Si=()=>"/api/v1/passwordless_sms/authenticate",ki=()=>"/api/v1/passwordless_sms/link",Ri=()=>"/api/v1/oauth/init",Wi=()=>"/api/v1/oauth/authenticate",Ii=()=>"/api/v1/oauth/link",Li=()=>"/api/v1/siwe/unlink",Mi=()=>"/api/v1/passwordless/unlink",Ni=()=>"/api/v1/passwordless_sms/unlink",Di=()=>"/api/v1/oauth/unlink",Oi=()=>"/api/v1/analytics_events";var ct=class{constructor(t){this.meta={email:t}}async authenticate(){if(!this.api)throw new x("Auth flow has no API instance");if(!this.meta.email||!this.meta.emailCode)throw new x("Email and email code must be set prior to calling authenticate.");try{let t=Ti(),o=await this.api.post(t,{email:this.meta.email,code:this.meta.emailCode});return{user:o.data.user,token:o.data.token,refresh_token:o.data.refresh_token,is_new_user:o.data.is_new_user}}catch(t){throw K(t)}}async link(){if(!this.api)throw new x("Auth flow has no API instance");if(!this.meta.email||!this.meta.emailCode)throw new x("Email and email code must be set prior to calling authenticate.");try{let t=Ai();return(await this.api.post(t,{email:this.meta.email,code:this.meta.emailCode})).data}catch(t){throw K(t)}}async sendCodeEmail(t){if(!this.api)throw new x("Auth flow has no API instance");if(t&&(this.meta.email=t),!this.meta.email)throw new x("Email must be set when initialzing authentication.");try{let o=Pi();return(await this.api.post(o,{email:this.meta.email})).data}catch(o){throw K(o)}}};var Xe=class{constructor(t,o,r){this.meta={provider:t},this.meta.authorizationCode=o,this.meta.stateCode=r}isActive(){return!!(this.meta.authorizationCode&&this.meta.stateCode&&this.meta.provider)}async authenticate(){if(!this.api)throw new x("Auth flow has no API instance");if(!this.meta.authorizationCode||!this.meta.stateCode)throw new x("[OAuth AuthFlow] Authorization and state codes code must be set prior to calling authenticate.");if(this.meta.authorizationCode==="undefined")throw new x("User denied confirmation during OAuth flow");try{let t=Wi(),o=await this.api.post(t,{authorization_code:this.meta.authorizationCode,state_code:this.meta.stateCode});return{user:o.data.user,token:o.data.token,refresh_token:o.data.refresh_token,is_new_user:o.data.is_new_user}}catch(t){throw K(t)}}async link(){if(!this.api)throw new x("Auth flow has no API instance");if(!this.meta.authorizationCode||!this.meta.stateCode)throw new x("[OAuth AuthFlow] Authorization and state codes code must be set prior to calling link.");if(this.meta.authorizationCode==="undefined")throw new x("User denied confirmation during OAuth flow");try{let t=Ii();return(await this.api.post(t,{authorization_code:this.meta.authorizationCode,state_code:this.meta.stateCode})).data}catch(t){throw K(t)}}async getAuthorizationUrl(){var t;if(!this.api)throw new x("Auth flow has no API instance");if(!this.meta.provider)throw new x("Provider must be set when initialzing OAuth authentication.");try{let o=Ri();return(await this.api.post(o,{provider:this.meta.provider,redirect_to:window.location.href},{baseURL:(t=this.api)==null?void 0:t.fallbackApiUrl})).data}catch(o){throw K(o)}}};var et=class{constructor(t,o,r){this._meta={walletType:o,walletId:r},this.connectors=t,this.walletConnector=this.connectors.createWalletConnector(o,null,r)}get meta(){return{...this._meta,walletName:this.walletConnector.walletBranding.name,walletIcon:this.walletConnector.walletBranding.icon}}async authenticate(){if(!this.api)throw new x("Auth flow has no API instance");try{let{message:t,signature:o}=await this.sign(),r=await this.api.post(xi(),{message:t,signature:o});return this.connectors.addWalletConnector(this.walletConnector),await this.connectors.setActiveWallet(this.walletConnector.address)||console.warn("Failed to set active wallet"),{user:r.data.user,token:r.data.token,refresh_token:r.data.refresh_token,is_new_user:r.data.is_new_user}}catch(t){throw K(t)}}async link(){if(!this.api)throw new x("Auth flow has no API instance");try{let{message:t,signature:o}=await this.sign(),r=await this.api.post(Ei(),{message:t,signature:o});return this.connectors.addWalletConnector(this.walletConnector),await this.connectors.setActiveWallet(this.walletConnector.address)||console.warn("Failed to set active wallet"),r.data}catch(t){throw K(t)}}async promptConnect(){if(!this.api)throw new x("Auth flow has no API instance");let t=await this.walletConnector.connect({showPrompt:!0});return await this.buildSiweMessage(t),t}async sign(){if(!this.api)throw new x("Auth flow has no API instance");if(!this.preparedMessage){let o=await this.walletConnector.connect({showPrompt:!1});await this.buildSiweMessage(o)}if(!this.preparedMessage)throw new x("Could not prepare SIWE message");let t=await this.walletConnector.sign(this.preparedMessage);return{message:this.preparedMessage,signature:t}}async buildSiweMessage(t){if(!this.api)throw new x("Auth flow has no API instance");let o=t.address,r=t.chainId,n=await this.api.post(Ci(),{address:o});return this.preparedMessage=this.walletConnector.prepareMessage(r,o,n.data.nonce),this.preparedMessage}};var dt=class{constructor(t){this.meta={phoneNumber:t}}async authenticate(){if(!this.api)throw new x("Auth flow has no API instance");if(!this.meta.phoneNumber||!this.meta.smsCode)throw new x("phone number and sms code must be set prior to calling authenticate.");try{let t=Si(),o=await this.api.post(t,{phoneNumber:this.meta.phoneNumber,code:this.meta.smsCode});return{user:o.data.user,token:o.data.token,refresh_token:o.data.refresh_token,is_new_user:o.data.is_new_user}}catch(t){throw K(t)}}async link(){if(!this.api)throw new x("Auth flow has no API instance");if(!this.meta.phoneNumber||!this.meta.smsCode)throw new x("phone number and sms code must be set prior to calling authenticate.");try{let t=ki();return(await this.api.post(t,{phoneNumber:this.meta.phoneNumber,code:this.meta.smsCode})).data}catch(t){throw K(t)}}async sendSmsCode(t){if(!this.api)throw new x("Auth flow has no API instance");if(t&&(this.meta.phoneNumber=t),!this.meta.phoneNumber)throw new x("phone nNumber must be set when initialzing authentication.");try{let o=_i();return(await this.api.post(o,{phoneNumber:this.meta.phoneNumber})).data}catch(o){throw K(o)}}};import{getAddress as Fc}from"@ethersproject/address";var Ui="1.25.1-beta.2";var Ie="4df5e2316331463a9130964bd6078dfa",Bo="https://auth.privy.io",Bi=1e4,xe=1400,tn=Ui;var kt="privy:token",Fo="privy:refresh_token",io="privy:session_transfer_token",Go="privy:connectors",on="walletconnect",Fi=3e4,Ee=1;var rn=class{constructor(){this._cache={}}get(t){return this._cache[t]}put(t,o){o!==void 0?this._cache[t]=o:this.del(t)}del(t){delete this._cache[t]}getKeys(){return Object.keys(this._cache)}},nn=class{get(t){let o=localStorage.getItem(t);return o===null?void 0:JSON.parse(o)}put(t,o){o!==void 0?localStorage.setItem(t,JSON.stringify(o)):this.del(t)}del(t){localStorage.removeItem(t)}getKeys(){return Object.entries(localStorage).map(([t])=>t)}};function pc(){return typeof window<"u"&&window.localStorage?new nn:new rn}var G=pc();import _c from"@coinbase/wallet-sdk";import{getAddress as Sc}from"@ethersproject/address";import{jsx as Gi,jsxs as uc}from"react/jsx-runtime";var Pe=({style:e,...t})=>uc("svg",{width:"1024",height:"1024",viewBox:"0 0 1024 1024",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:{height:"28px",width:"28px",...e},...t,children:[Gi("rect",{width:"1024",height:"1024",fill:"#0052FF",rx:100,ry:100}),Gi("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M152 512C152 710.823 313.177 872 512 872C710.823 872 872 710.823 872 512C872 313.177 710.823 152 512 152C313.177 152 152 313.177 152 512ZM420 396C406.745 396 396 406.745 396 420V604C396 617.255 406.745 628 420 628H604C617.255 628 628 617.255 628 604V420C628 406.745 617.255 396 604 396H420Z",fill:"white"})]});import{getAddress as Tc}from"@ethersproject/address";import{Web3Provider as Ac}from"@ethersproject/providers";import{isHexString as wc}from"@ethersproject/bytes";import{InfuraProvider as Cc}from"@ethersproject/providers";import{toUtf8String as xc}from"@ethersproject/strings";import Ec from"eventemitter3";var mc=["eth_sign","eth_populateTransactionRequest","eth_signTransaction","personal_sign"],Hi=e=>mc.includes(e);import{isPossiblePhoneNumber as fc}from"libphonenumber-js/min";var Vi=e=>!!String(e).toLowerCase().match(/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/),zi=e=>fc(String(e),"US"),qi=(e,t)=>{let o=e.slice(0),r=[];for(;o.length;)r.push(o.splice(0,t));return r},Se=(e,t=3,o=4)=>{if(!e)return"";let r=2,n=3;if(t+o+r+n>=e.length)return e;let i=e.slice(0,r+t),a=e.slice(e.length-o,e.length);return`${i}...${a}`},an=e=>new Promise(t=>setTimeout(t,e)),$i=(e,t={})=>{let o=t.delayMs||40,r=t.maxAttempts||1e3;return new Promise(async(n,i)=>{let a=!1,s=0;for(;!a&&s<r;)e().then(()=>{a=!0,n()},(...l)=>{a=!0,i(...l)}),s+=1,await an(o);a||i(new Error("Exceeded max attempts before resolving function"))})},Ho=(e,t,o={})=>{let r=new URL(t,e);for(let[n,i]of Object.entries(o))r.searchParams.set(n,i);return r.href},hc=(e,t)=>e.toLowerCase()===t.toLowerCase(),sn=(e,t)=>{for(let o of e)if(hc(o,t))return!0;return!1},Vo=e=>e.replace(/([\u2700-\u27BF]|[\uE000-\uF8FF]|\uD83C[\uDC00-\uDFFF]|\uD83D[\uDC00-\uDFFF]|[\u2011-\u26FF]|\uD83E[\uDD10-\uDDFF])/g,""),ao=e=>typeof e=="string"?e:"0x"+e.toString(16);import{ErrorCode as gc}from"@ethersproject/logger";var Rt=class extends z{constructor(){super("Wallet timeout");this.type="wallet_error"}},ut=class extends z{constructor(){super("User rejected connection");this.type="wallet_error"}},Te=e=>{if(e instanceof z)return e;if((e==null?void 0:e.code)&&(e==null?void 0:e.reason)){let t=new Wt(e);return e.code===gc.ACTION_REJECTED&&(t.details=pt.E4001_USER_REJECTED_REQUEST),t}return e!=null&&e.code?new Wt(e):new z("Unknown connector error",e)},ln=class extends _e{constructor(o,r,n){super(o);this.type="provider_error";this.code=r,this.data=n}},Wt=class extends ln{constructor(o){var i,a,s;let r=o;super(r.message,r.code,r.data);let n=Object.values(pt).find(l=>l.eipCode===r.code);this.details=n||pt.UNKNOWN_ERROR,r.code===-32002&&((i=r.message)!=null&&i.includes("already pending for origin")?(a=r.message)!=null&&a.includes("wallet_requestPermissions")?this.details=pt.E32002_CONNECTION_ALREADY_PENDING:this.details=pt.E32002_REQUEST_ALREADY_PENDING:(s=r.message)!=null&&s.includes("Already processing")&&r.message.includes("eth_requestAccounts")&&(this.details=pt.E32002_WALLET_LOCKED))}},yc={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},ERROR_USER_REJECTED_CONNECTION:{message:"You rejected the request",detail:"Please try connecting again.",retryable:!0}},bc={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}},vc={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}},pt={UNKNOWN_ERROR:{eipCode:0,message:"Unknown error",detail:"Unknown error",retryable:!0},...vc,...bc},mt={...yc,...pt};var Pc=12e4,cn=(e=new Rt,t=Pc)=>new Promise((o,r)=>setTimeout(()=>{r(e)},t)),ke=class{constructor(t){this.removeListener=(t,o)=>{if(this.walletProvider)return this.walletProvider.removeListener(t,o)};this.setWalletProvider=t=>{this.walletProvider=t,this._subscriptions.forEach(o=>{var r;(r=this.walletProvider)==null||r.on(o.eventName,o.listener)})};this.walletProvider=t,this._subscriptions=[]}on(t,o){if(this.walletProvider)return this.walletProvider.on(t,o);this._subscriptions.push({eventName:t,listener:o})}async request(t){if(!this.walletProvider)throw new z(`A wallet request of type ${t.method} was made before setting a wallet provider.`);return Promise.race([this.walletProvider.request(t),cn()]).catch(o=>{throw Te(o)})}},ft=class extends Error{constructor(o,r,n){super(o);this.code=r,this.data=n}},zo=class extends Ec{constructor(o,r,n=1){super();this.walletProxy=o,this.address=r,this.chainId=n,this.infuraProvider=new Cc(n,Ie)}async handleSendTransaction(o){if(!o.params||!Array.isArray(o.params))throw new ft(`Invalid params for ${o.method}`,4200);let r=o.params[0];if(!await so()||!this.address)throw new ft("Disconnected",4900);return(await Ki(r)).transactionHash}handleSwitchEthereumChain(o){if(!o.params||!Array.isArray(o.params))throw new ft(`Invalid params for ${o.method}`,4200);let r=o.params[0];this.chainId=Number(r),this.emit("chainChanged",r)}async handlePersonalSign(o){if(!o.params||!Array.isArray(o.params))throw new Error("Invalid params for eth_estimateGas");let r=o.params[0],n=wc(r)?xc(r):r;return await ji(n)}async handleEstimateGas(o){if(!o.params||!Array.isArray(o.params))throw new Error("Invalid params for eth_estimateGas");let r={...o.params[0],chainId:ao(this.chainId)};return delete r.from,this.infuraProvider.send("eth_estimateGas",[r])}async request(o){switch(console.debug("Embedded1193Provider.request() called with args",o),o.method){case"eth_accounts":return this.address?[this.address]:[];case"eth_chainId":return ao(this.chainId);case"eth_estimateGas":return this.handleEstimateGas(o);case"eth_sendTransaction":return this.handleSendTransaction(o);case"wallet_switchEthereumChain":return this.handleSwitchEthereumChain(o);case"personal_sign":return this.handlePersonalSign(o);default:break}if(Hi(o.method)){let r=await so();if(!r||!this.address)throw new ft("Disconnected",4900);try{return(await this.walletProxy.rpc({address:this.address,accessToken:r,request:{method:o.method,params:o.params}})).response.data}catch(n){throw console.error(n),new ft("Disconnected",4900)}}else return this.infuraProvider.send(o.method,o.params)}async connect(){let o=await so();if(!o||!this.address)return null;try{return(await this.walletProxy.connect({address:this.address,accessToken:o})).address}catch(r){return console.error(r),null}}},ht=class extends ke{constructor(o){super(o)}},qo=class extends ke{constructor(t){super(t)}sendAsync(t,o){throw new Error("sendAsync is no longer supported by EIP-1193. Use the request method instead.")}};var fe=class{constructor(t,o,r){this.createSiweMessage=(t,o,r,n,i,a,s)=>`${r} wants you to sign in with your Ethereum account:
|
|
1
|
+
import{Web3Provider as Rm}from"@ethersproject/providers";import{useEffect as Kr,useState as re}from"react";var C=()=>{throw new Error("You need to wrap your application with the <PrivyProvider> initialized with your app id.")};import cc from"axios";var _e=class extends Error{constructor(o,r,n){super(o);r instanceof Error&&(this.cause=r),this.privyErrorCode=n}toString(){return`${this.type}${this.privyErrorCode?`-${this.privyErrorCode}`:""}: ${this.message}${this.cause?` [cause: ${this.cause}]`:""}`}},St=class extends _e{constructor(o,r,n,i,a){super(n,i,a);this.type=o;this.status=r}},x=class extends _e{constructor(o,r,n){super(o,r,n);this.type="client_error"}};var z=class extends _e{constructor(o,r,n){super(o,r,n);this.type="connector_error"}},K=e=>{if(e instanceof _e)return e;if(!cc.isAxiosError(e))return Ce(e);if(!e.response)return new St("api_error",null,e.message,e);let{type:t,message:o,error:r,code:n}=e.response.data;return new St(t||"ApiError",e.response.status,o||r,e,n)},Ce=e=>e instanceof _e?e:e instanceof Error?new x(e.message,e):new x(`Internal error: ${e}`);var yi=()=>"/api/v1/sessions",bi=()=>"/api/v1/sessions/logout",vi=()=>"/api/v1/sessions/fork",wi=()=>"/api/v1/sessions/fork/recover",Ci=()=>"/api/v1/siwe/init",xi=()=>"/api/v1/siwe/authenticate",Ei=()=>"/api/v1/siwe/link",Pi=()=>"/api/v1/passwordless/init",Ti=()=>"/api/v1/passwordless/authenticate",Ai=()=>"/api/v1/passwordless/link",_i=()=>"/api/v1/passwordless_sms/init",Si=()=>"/api/v1/passwordless_sms/authenticate",ki=()=>"/api/v1/passwordless_sms/link",Ri=()=>"/api/v1/oauth/init",Wi=()=>"/api/v1/oauth/authenticate",Ii=()=>"/api/v1/oauth/link",Li=()=>"/api/v1/siwe/unlink",Mi=()=>"/api/v1/passwordless/unlink",Ni=()=>"/api/v1/passwordless_sms/unlink",Di=()=>"/api/v1/oauth/unlink",Oi=()=>"/api/v1/analytics_events";var ct=class{constructor(t){this.meta={email:t}}async authenticate(){if(!this.api)throw new x("Auth flow has no API instance");if(!this.meta.email||!this.meta.emailCode)throw new x("Email and email code must be set prior to calling authenticate.");try{let t=Ti(),o=await this.api.post(t,{email:this.meta.email,code:this.meta.emailCode});return{user:o.data.user,token:o.data.token,refresh_token:o.data.refresh_token,is_new_user:o.data.is_new_user}}catch(t){throw K(t)}}async link(){if(!this.api)throw new x("Auth flow has no API instance");if(!this.meta.email||!this.meta.emailCode)throw new x("Email and email code must be set prior to calling authenticate.");try{let t=Ai();return(await this.api.post(t,{email:this.meta.email,code:this.meta.emailCode})).data}catch(t){throw K(t)}}async sendCodeEmail(t){if(!this.api)throw new x("Auth flow has no API instance");if(t&&(this.meta.email=t),!this.meta.email)throw new x("Email must be set when initialzing authentication.");try{let o=Pi();return(await this.api.post(o,{email:this.meta.email})).data}catch(o){throw K(o)}}};var Xe=class{constructor(t,o,r){this.meta={provider:t},this.meta.authorizationCode=o,this.meta.stateCode=r}isActive(){return!!(this.meta.authorizationCode&&this.meta.stateCode&&this.meta.provider)}async authenticate(){if(!this.api)throw new x("Auth flow has no API instance");if(!this.meta.authorizationCode||!this.meta.stateCode)throw new x("[OAuth AuthFlow] Authorization and state codes code must be set prior to calling authenticate.");if(this.meta.authorizationCode==="undefined")throw new x("User denied confirmation during OAuth flow");try{let t=Wi(),o=await this.api.post(t,{authorization_code:this.meta.authorizationCode,state_code:this.meta.stateCode});return{user:o.data.user,token:o.data.token,refresh_token:o.data.refresh_token,is_new_user:o.data.is_new_user}}catch(t){throw K(t)}}async link(){if(!this.api)throw new x("Auth flow has no API instance");if(!this.meta.authorizationCode||!this.meta.stateCode)throw new x("[OAuth AuthFlow] Authorization and state codes code must be set prior to calling link.");if(this.meta.authorizationCode==="undefined")throw new x("User denied confirmation during OAuth flow");try{let t=Ii();return(await this.api.post(t,{authorization_code:this.meta.authorizationCode,state_code:this.meta.stateCode})).data}catch(t){throw K(t)}}async getAuthorizationUrl(){var t;if(!this.api)throw new x("Auth flow has no API instance");if(!this.meta.provider)throw new x("Provider must be set when initialzing OAuth authentication.");try{let o=Ri();return(await this.api.post(o,{provider:this.meta.provider,redirect_to:window.location.href},{baseURL:(t=this.api)==null?void 0:t.fallbackApiUrl})).data}catch(o){throw K(o)}}};var et=class{constructor(t,o,r){this._meta={walletType:o,walletId:r},this.connectors=t,this.walletConnector=this.connectors.createWalletConnector(o,null,r)}get meta(){return{...this._meta,walletName:this.walletConnector.walletBranding.name,walletIcon:this.walletConnector.walletBranding.icon}}async authenticate(){if(!this.api)throw new x("Auth flow has no API instance");try{let{message:t,signature:o}=await this.sign(),r=await this.api.post(xi(),{message:t,signature:o});return this.connectors.addWalletConnector(this.walletConnector),await this.connectors.setActiveWallet(this.walletConnector.address)||console.warn("Failed to set active wallet"),{user:r.data.user,token:r.data.token,refresh_token:r.data.refresh_token,is_new_user:r.data.is_new_user}}catch(t){throw K(t)}}async link(){if(!this.api)throw new x("Auth flow has no API instance");try{let{message:t,signature:o}=await this.sign(),r=await this.api.post(Ei(),{message:t,signature:o});return this.connectors.addWalletConnector(this.walletConnector),await this.connectors.setActiveWallet(this.walletConnector.address)||console.warn("Failed to set active wallet"),r.data}catch(t){throw K(t)}}async promptConnect(){if(!this.api)throw new x("Auth flow has no API instance");let t=await this.walletConnector.connect({showPrompt:!0});return await this.buildSiweMessage(t),t}async sign(){if(!this.api)throw new x("Auth flow has no API instance");if(!this.preparedMessage){let o=await this.walletConnector.connect({showPrompt:!1});await this.buildSiweMessage(o)}if(!this.preparedMessage)throw new x("Could not prepare SIWE message");let t=await this.walletConnector.sign(this.preparedMessage);return{message:this.preparedMessage,signature:t}}async buildSiweMessage(t){if(!this.api)throw new x("Auth flow has no API instance");let o=t.address,r=t.chainId,n=await this.api.post(Ci(),{address:o});return this.preparedMessage=this.walletConnector.prepareMessage(r,o,n.data.nonce),this.preparedMessage}};var dt=class{constructor(t){this.meta={phoneNumber:t}}async authenticate(){if(!this.api)throw new x("Auth flow has no API instance");if(!this.meta.phoneNumber||!this.meta.smsCode)throw new x("phone number and sms code must be set prior to calling authenticate.");try{let t=Si(),o=await this.api.post(t,{phoneNumber:this.meta.phoneNumber,code:this.meta.smsCode});return{user:o.data.user,token:o.data.token,refresh_token:o.data.refresh_token,is_new_user:o.data.is_new_user}}catch(t){throw K(t)}}async link(){if(!this.api)throw new x("Auth flow has no API instance");if(!this.meta.phoneNumber||!this.meta.smsCode)throw new x("phone number and sms code must be set prior to calling authenticate.");try{let t=ki();return(await this.api.post(t,{phoneNumber:this.meta.phoneNumber,code:this.meta.smsCode})).data}catch(t){throw K(t)}}async sendSmsCode(t){if(!this.api)throw new x("Auth flow has no API instance");if(t&&(this.meta.phoneNumber=t),!this.meta.phoneNumber)throw new x("phone nNumber must be set when initialzing authentication.");try{let o=_i();return(await this.api.post(o,{phoneNumber:this.meta.phoneNumber})).data}catch(o){throw K(o)}}};import{getAddress as Fc}from"@ethersproject/address";var Ui="1.25.1-beta.3";var Ie="4df5e2316331463a9130964bd6078dfa",Bo="https://auth.privy.io",Bi=1e4,xe=1400,tn=Ui;var kt="privy:token",Fo="privy:refresh_token",io="privy:session_transfer_token",Go="privy:connectors",on="walletconnect",Fi=3e4,Ee=1;var rn=class{constructor(){this._cache={}}get(t){return this._cache[t]}put(t,o){o!==void 0?this._cache[t]=o:this.del(t)}del(t){delete this._cache[t]}getKeys(){return Object.keys(this._cache)}},nn=class{get(t){let o=localStorage.getItem(t);return o===null?void 0:JSON.parse(o)}put(t,o){o!==void 0?localStorage.setItem(t,JSON.stringify(o)):this.del(t)}del(t){localStorage.removeItem(t)}getKeys(){return Object.entries(localStorage).map(([t])=>t)}};function pc(){return typeof window<"u"&&window.localStorage?new nn:new rn}var G=pc();import _c from"@coinbase/wallet-sdk";import{getAddress as Sc}from"@ethersproject/address";import{jsx as Gi,jsxs as uc}from"react/jsx-runtime";var Pe=({style:e,...t})=>uc("svg",{width:"1024",height:"1024",viewBox:"0 0 1024 1024",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:{height:"28px",width:"28px",...e},...t,children:[Gi("rect",{width:"1024",height:"1024",fill:"#0052FF",rx:100,ry:100}),Gi("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M152 512C152 710.823 313.177 872 512 872C710.823 872 872 710.823 872 512C872 313.177 710.823 152 512 152C313.177 152 152 313.177 152 512ZM420 396C406.745 396 396 406.745 396 420V604C396 617.255 406.745 628 420 628H604C617.255 628 628 617.255 628 604V420C628 406.745 617.255 396 604 396H420Z",fill:"white"})]});import{getAddress as Tc}from"@ethersproject/address";import{Web3Provider as Ac}from"@ethersproject/providers";import{isHexString as wc}from"@ethersproject/bytes";import{InfuraProvider as Cc}from"@ethersproject/providers";import{toUtf8String as xc}from"@ethersproject/strings";import Ec from"eventemitter3";var mc=["eth_sign","eth_populateTransactionRequest","eth_signTransaction","personal_sign"],Hi=e=>mc.includes(e);import{isPossiblePhoneNumber as fc}from"libphonenumber-js/min";var Vi=e=>!!String(e).toLowerCase().match(/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/),zi=e=>fc(String(e),"US"),qi=(e,t)=>{let o=e.slice(0),r=[];for(;o.length;)r.push(o.splice(0,t));return r},Se=(e,t=3,o=4)=>{if(!e)return"";let r=2,n=3;if(t+o+r+n>=e.length)return e;let i=e.slice(0,r+t),a=e.slice(e.length-o,e.length);return`${i}...${a}`},an=e=>new Promise(t=>setTimeout(t,e)),$i=(e,t={})=>{let o=t.delayMs||40,r=t.maxAttempts||1e3;return new Promise(async(n,i)=>{let a=!1,s=0;for(;!a&&s<r;)e().then(()=>{a=!0,n()},(...l)=>{a=!0,i(...l)}),s+=1,await an(o);a||i(new Error("Exceeded max attempts before resolving function"))})},Ho=(e,t,o={})=>{let r=new URL(t,e);for(let[n,i]of Object.entries(o))r.searchParams.set(n,i);return r.href},hc=(e,t)=>e.toLowerCase()===t.toLowerCase(),sn=(e,t)=>{for(let o of e)if(hc(o,t))return!0;return!1},Vo=e=>e.replace(/([\u2700-\u27BF]|[\uE000-\uF8FF]|\uD83C[\uDC00-\uDFFF]|\uD83D[\uDC00-\uDFFF]|[\u2011-\u26FF]|\uD83E[\uDD10-\uDDFF])/g,""),ao=e=>typeof e=="string"?e:"0x"+e.toString(16);import{ErrorCode as gc}from"@ethersproject/logger";var Rt=class extends z{constructor(){super("Wallet timeout");this.type="wallet_error"}},ut=class extends z{constructor(){super("User rejected connection");this.type="wallet_error"}},Te=e=>{if(e instanceof z)return e;if((e==null?void 0:e.code)&&(e==null?void 0:e.reason)){let t=new Wt(e);return e.code===gc.ACTION_REJECTED&&(t.details=pt.E4001_USER_REJECTED_REQUEST),t}return e!=null&&e.code?new Wt(e):new z("Unknown connector error",e)},ln=class extends _e{constructor(o,r,n){super(o);this.type="provider_error";this.code=r,this.data=n}},Wt=class extends ln{constructor(o){var i,a,s;let r=o;super(r.message,r.code,r.data);let n=Object.values(pt).find(l=>l.eipCode===r.code);this.details=n||pt.UNKNOWN_ERROR,r.code===-32002&&((i=r.message)!=null&&i.includes("already pending for origin")?(a=r.message)!=null&&a.includes("wallet_requestPermissions")?this.details=pt.E32002_CONNECTION_ALREADY_PENDING:this.details=pt.E32002_REQUEST_ALREADY_PENDING:(s=r.message)!=null&&s.includes("Already processing")&&r.message.includes("eth_requestAccounts")&&(this.details=pt.E32002_WALLET_LOCKED))}},yc={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},ERROR_USER_REJECTED_CONNECTION:{message:"You rejected the request",detail:"Please try connecting again.",retryable:!0}},bc={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}},vc={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}},pt={UNKNOWN_ERROR:{eipCode:0,message:"Unknown error",detail:"Unknown error",retryable:!0},...vc,...bc},mt={...yc,...pt};var Pc=12e4,cn=(e=new Rt,t=Pc)=>new Promise((o,r)=>setTimeout(()=>{r(e)},t)),ke=class{constructor(t){this.removeListener=(t,o)=>{if(this.walletProvider)return this.walletProvider.removeListener(t,o)};this.setWalletProvider=t=>{this.walletProvider=t,this._subscriptions.forEach(o=>{var r;(r=this.walletProvider)==null||r.on(o.eventName,o.listener)})};this.walletProvider=t,this._subscriptions=[]}on(t,o){if(this.walletProvider)return this.walletProvider.on(t,o);this._subscriptions.push({eventName:t,listener:o})}async request(t){if(!this.walletProvider)throw new z(`A wallet request of type ${t.method} was made before setting a wallet provider.`);return Promise.race([this.walletProvider.request(t),cn()]).catch(o=>{throw Te(o)})}},ft=class extends Error{constructor(o,r,n){super(o);this.code=r,this.data=n}},zo=class extends Ec{constructor(o,r,n=1){super();this.walletProxy=o,this.address=r,this.chainId=n,this.infuraProvider=new Cc(n,Ie)}async handleSendTransaction(o){if(!o.params||!Array.isArray(o.params))throw new ft(`Invalid params for ${o.method}`,4200);let r=o.params[0];if(!await so()||!this.address)throw new ft("Disconnected",4900);return(await Ki(r)).transactionHash}handleSwitchEthereumChain(o){if(!o.params||!Array.isArray(o.params))throw new ft(`Invalid params for ${o.method}`,4200);let r=o.params[0];this.chainId=Number(r),this.emit("chainChanged",r)}async handlePersonalSign(o){if(!o.params||!Array.isArray(o.params))throw new Error("Invalid params for eth_estimateGas");let r=o.params[0],n=wc(r)?xc(r):r;return await ji(n)}async handleEstimateGas(o){if(!o.params||!Array.isArray(o.params))throw new Error("Invalid params for eth_estimateGas");let r={...o.params[0],chainId:ao(this.chainId)};return delete r.from,this.infuraProvider.send("eth_estimateGas",[r])}async request(o){switch(console.debug("Embedded1193Provider.request() called with args",o),o.method){case"eth_accounts":return this.address?[this.address]:[];case"eth_chainId":return ao(this.chainId);case"eth_estimateGas":return this.handleEstimateGas(o);case"eth_sendTransaction":return this.handleSendTransaction(o);case"wallet_switchEthereumChain":return this.handleSwitchEthereumChain(o);case"personal_sign":return this.handlePersonalSign(o);default:break}if(Hi(o.method)){let r=await so();if(!r||!this.address)throw new ft("Disconnected",4900);try{return(await this.walletProxy.rpc({address:this.address,accessToken:r,request:{method:o.method,params:o.params}})).response.data}catch(n){throw console.error(n),new ft("Disconnected",4900)}}else return this.infuraProvider.send(o.method,o.params)}async connect(){let o=await so();if(!o||!this.address)return null;try{return(await this.walletProxy.connect({address:this.address,accessToken:o})).address}catch(r){return console.error(r),null}}},ht=class extends ke{constructor(o){super(o)}},qo=class extends ke{constructor(t){super(t)}sendAsync(t,o){throw new Error("sendAsync is no longer supported by EIP-1193. Use the request method instead.")}};var fe=class{constructor(t,o,r){this.createSiweMessage=(t,o,r,n,i,a,s)=>`${r} wants you to sign in with your Ethereum account:
|
|
2
2
|
${o}
|
|
3
3
|
|
|
4
4
|
${s}
|
|
@@ -1741,6 +1741,7 @@ Resources:
|
|
|
1741
1741
|
text-align: left;
|
|
1742
1742
|
max-height: 310px;
|
|
1743
1743
|
overflow: scroll;
|
|
1744
|
+
white-space: pre-wrap;
|
|
1744
1745
|
|
|
1745
1746
|
// hide the scrollbars
|
|
1746
1747
|
-ms-overflow-style: none; /* Internet Explorer 10+ */
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var pc=Object.create;var cr=Object.defineProperty;var uc=Object.getOwnPropertyDescriptor;var mc=Object.getOwnPropertyNames;var fc=Object.getPrototypeOf,hc=Object.prototype.hasOwnProperty;var gc=(e,t)=>{for(var o in t)cr(e,o,{get:t[o],enumerable:!0})},Ui=(e,t,o,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of mc(t))!hc.call(e,n)&&n!==o&&cr(e,n,{get:()=>t[n],enumerable:!(r=uc(t,n))||r.enumerable});return e};var x=(e,t,o)=>(o=e!=null?pc(fc(e)):{},Ui(t||!e||!e.__esModule?cr(o,"default",{value:e,enumerable:!0}):o,e)),yc=e=>Ui(cr({},"__esModule",{value:!0}),e);var _1={};gc(_1,{AsExternalProvider:()=>kt,ConnectorManager:()=>fo,PrivyClient:()=>go,PrivyProvider:()=>cc,PrivyProxyProvider:()=>Ve,VERSION:()=>pr,WalletConnector:()=>Ce,getAccessToken:()=>uo,usePrivy:()=>B});module.exports=yc(_1);var ac=require("@ethersproject/providers"),Q=require("react");var P=()=>{throw new Error("You need to wrap your application with the <PrivyProvider> initialized with your app id.")};var Bi=x(require("axios")),Ze=class extends Error{constructor(o,r,n){super(o);r instanceof Error&&(this.cause=r),this.privyErrorCode=n}toString(){return`${this.type}${this.privyErrorCode?`-${this.privyErrorCode}`:""}: ${this.message}${this.cause?` [cause: ${this.cause}]`:""}`}},so=class extends Ze{constructor(o,r,n,i,a){super(n,i,a);this.type=o;this.status=r}},T=class extends Ze{constructor(o,r,n){super(o,r,n);this.type="client_error"}};var X=class extends Ze{constructor(o,r,n){super(o,r,n);this.type="connector_error"}},ae=e=>{if(e instanceof Ze)return e;if(!Bi.default.isAxiosError(e))return Ue(e);if(!e.response)return new so("api_error",null,e.message,e);let{type:t,message:o,error:r,code:n}=e.response.data;return new so(t||"ApiError",e.response.status,o||r,e,n)},Ue=e=>e instanceof Ze?e:e instanceof Error?new T(e.message,e):new T(`Internal error: ${e}`);var Fi=()=>"/api/v1/sessions",Gi=()=>"/api/v1/sessions/logout",Hi=()=>"/api/v1/sessions/fork",Vi=()=>"/api/v1/sessions/fork/recover",zi=()=>"/api/v1/siwe/init",qi=()=>"/api/v1/siwe/authenticate",$i=()=>"/api/v1/siwe/link",ji=()=>"/api/v1/passwordless/init",Ki=()=>"/api/v1/passwordless/authenticate",Zi=()=>"/api/v1/passwordless/link",Yi=()=>"/api/v1/passwordless_sms/init",Qi=()=>"/api/v1/passwordless_sms/authenticate",Ji=()=>"/api/v1/passwordless_sms/link",Xi=()=>"/api/v1/oauth/init",ea=()=>"/api/v1/oauth/authenticate",ta=()=>"/api/v1/oauth/link",oa=()=>"/api/v1/siwe/unlink",ra=()=>"/api/v1/passwordless/unlink",na=()=>"/api/v1/passwordless_sms/unlink",ia=()=>"/api/v1/oauth/unlink",aa=()=>"/api/v1/analytics_events";var zt=class{constructor(t){this.meta={email:t}}async authenticate(){if(!this.api)throw new T("Auth flow has no API instance");if(!this.meta.email||!this.meta.emailCode)throw new T("Email and email code must be set prior to calling authenticate.");try{let t=Ki(),o=await this.api.post(t,{email:this.meta.email,code:this.meta.emailCode});return{user:o.data.user,token:o.data.token,refresh_token:o.data.refresh_token,is_new_user:o.data.is_new_user}}catch(t){throw ae(t)}}async link(){if(!this.api)throw new T("Auth flow has no API instance");if(!this.meta.email||!this.meta.emailCode)throw new T("Email and email code must be set prior to calling authenticate.");try{let t=Zi();return(await this.api.post(t,{email:this.meta.email,code:this.meta.emailCode})).data}catch(t){throw ae(t)}}async sendCodeEmail(t){if(!this.api)throw new T("Auth flow has no API instance");if(t&&(this.meta.email=t),!this.meta.email)throw new T("Email must be set when initialzing authentication.");try{let o=ji();return(await this.api.post(o,{email:this.meta.email})).data}catch(o){throw ae(o)}}};var _t=class{constructor(t,o,r){this.meta={provider:t},this.meta.authorizationCode=o,this.meta.stateCode=r}isActive(){return!!(this.meta.authorizationCode&&this.meta.stateCode&&this.meta.provider)}async authenticate(){if(!this.api)throw new T("Auth flow has no API instance");if(!this.meta.authorizationCode||!this.meta.stateCode)throw new T("[OAuth AuthFlow] Authorization and state codes code must be set prior to calling authenticate.");if(this.meta.authorizationCode==="undefined")throw new T("User denied confirmation during OAuth flow");try{let t=ea(),o=await this.api.post(t,{authorization_code:this.meta.authorizationCode,state_code:this.meta.stateCode});return{user:o.data.user,token:o.data.token,refresh_token:o.data.refresh_token,is_new_user:o.data.is_new_user}}catch(t){throw ae(t)}}async link(){if(!this.api)throw new T("Auth flow has no API instance");if(!this.meta.authorizationCode||!this.meta.stateCode)throw new T("[OAuth AuthFlow] Authorization and state codes code must be set prior to calling link.");if(this.meta.authorizationCode==="undefined")throw new T("User denied confirmation during OAuth flow");try{let t=ta();return(await this.api.post(t,{authorization_code:this.meta.authorizationCode,state_code:this.meta.stateCode})).data}catch(t){throw ae(t)}}async getAuthorizationUrl(){var t;if(!this.api)throw new T("Auth flow has no API instance");if(!this.meta.provider)throw new T("Provider must be set when initialzing OAuth authentication.");try{let o=Xi();return(await this.api.post(o,{provider:this.meta.provider,redirect_to:window.location.href},{baseURL:(t=this.api)==null?void 0:t.fallbackApiUrl})).data}catch(o){throw ae(o)}}};var St=class{constructor(t,o,r){this._meta={walletType:o,walletId:r},this.connectors=t,this.walletConnector=this.connectors.createWalletConnector(o,null,r)}get meta(){return{...this._meta,walletName:this.walletConnector.walletBranding.name,walletIcon:this.walletConnector.walletBranding.icon}}async authenticate(){if(!this.api)throw new T("Auth flow has no API instance");try{let{message:t,signature:o}=await this.sign(),r=await this.api.post(qi(),{message:t,signature:o});return this.connectors.addWalletConnector(this.walletConnector),await this.connectors.setActiveWallet(this.walletConnector.address)||console.warn("Failed to set active wallet"),{user:r.data.user,token:r.data.token,refresh_token:r.data.refresh_token,is_new_user:r.data.is_new_user}}catch(t){throw ae(t)}}async link(){if(!this.api)throw new T("Auth flow has no API instance");try{let{message:t,signature:o}=await this.sign(),r=await this.api.post($i(),{message:t,signature:o});return this.connectors.addWalletConnector(this.walletConnector),await this.connectors.setActiveWallet(this.walletConnector.address)||console.warn("Failed to set active wallet"),r.data}catch(t){throw ae(t)}}async promptConnect(){if(!this.api)throw new T("Auth flow has no API instance");let t=await this.walletConnector.connect({showPrompt:!0});return await this.buildSiweMessage(t),t}async sign(){if(!this.api)throw new T("Auth flow has no API instance");if(!this.preparedMessage){let o=await this.walletConnector.connect({showPrompt:!1});await this.buildSiweMessage(o)}if(!this.preparedMessage)throw new T("Could not prepare SIWE message");let t=await this.walletConnector.sign(this.preparedMessage);return{message:this.preparedMessage,signature:t}}async buildSiweMessage(t){if(!this.api)throw new T("Auth flow has no API instance");let o=t.address,r=t.chainId,n=await this.api.post(zi(),{address:o});return this.preparedMessage=this.walletConnector.prepareMessage(r,o,n.data.nonce),this.preparedMessage}};var qt=class{constructor(t){this.meta={phoneNumber:t}}async authenticate(){if(!this.api)throw new T("Auth flow has no API instance");if(!this.meta.phoneNumber||!this.meta.smsCode)throw new T("phone number and sms code must be set prior to calling authenticate.");try{let t=Qi(),o=await this.api.post(t,{phoneNumber:this.meta.phoneNumber,code:this.meta.smsCode});return{user:o.data.user,token:o.data.token,refresh_token:o.data.refresh_token,is_new_user:o.data.is_new_user}}catch(t){throw ae(t)}}async link(){if(!this.api)throw new T("Auth flow has no API instance");if(!this.meta.phoneNumber||!this.meta.smsCode)throw new T("phone number and sms code must be set prior to calling authenticate.");try{let t=Ji();return(await this.api.post(t,{phoneNumber:this.meta.phoneNumber,code:this.meta.smsCode})).data}catch(t){throw ae(t)}}async sendSmsCode(t){if(!this.api)throw new T("Auth flow has no API instance");if(t&&(this.meta.phoneNumber=t),!this.meta.phoneNumber)throw new T("phone nNumber must be set when initialzing authentication.");try{let o=Yi();return(await this.api.post(o,{phoneNumber:this.meta.phoneNumber})).data}catch(o){throw ae(o)}}};var Ga=require("@ethersproject/address");var sa="1.25.1-beta.2";var nt="4df5e2316331463a9130964bd6078dfa",dr="https://auth.privy.io",la=1e4,Be=1400,pr=sa;var lo="privy:token",ur="privy:refresh_token",No="privy:session_transfer_token",mr="privy:connectors",Ln="walletconnect",ca=3e4,Fe=1;var Mn=class{constructor(){this._cache={}}get(t){return this._cache[t]}put(t,o){o!==void 0?this._cache[t]=o:this.del(t)}del(t){delete this._cache[t]}getKeys(){return Object.keys(this._cache)}},Nn=class{get(t){let o=localStorage.getItem(t);return o===null?void 0:JSON.parse(o)}put(t,o){o!==void 0?localStorage.setItem(t,JSON.stringify(o)):this.del(t)}del(t){localStorage.removeItem(t)}getKeys(){return Object.entries(localStorage).map(([t])=>t)}};function vc(){return typeof window<"u"&&window.localStorage?new Nn:new Mn}var Z=vc();var Ta=x(require("@coinbase/wallet-sdk")),Aa=require("@ethersproject/address");var Do=require("react/jsx-runtime"),Ge=({style:e,...t})=>(0,Do.jsxs)("svg",{width:"1024",height:"1024",viewBox:"0 0 1024 1024",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:{height:"28px",width:"28px",...e},...t,children:[(0,Do.jsx)("rect",{width:"1024",height:"1024",fill:"#0052FF",rx:100,ry:100}),(0,Do.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M152 512C152 710.823 313.177 872 512 872C710.823 872 872 710.823 872 512C872 313.177 710.823 152 512 152C313.177 152 152 313.177 152 512ZM420 396C406.745 396 396 406.745 396 420V604C396 617.255 406.745 628 420 628H604C617.255 628 628 617.255 628 604V420C628 406.745 617.255 396 604 396H420Z",fill:"white"})]});var Ea=require("@ethersproject/address"),Pa=require("@ethersproject/providers");var ya=require("@ethersproject/bytes"),ba=require("@ethersproject/providers"),va=require("@ethersproject/strings"),wa=x(require("eventemitter3"));var wc=["eth_sign","eth_populateTransactionRequest","eth_signTransaction","personal_sign"],da=e=>wc.includes(e);var pa=require("libphonenumber-js/min");var ua=e=>!!String(e).toLowerCase().match(/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/),ma=e=>(0,pa.isPossiblePhoneNumber)(String(e),"US"),fa=(e,t)=>{let o=e.slice(0),r=[];for(;o.length;)r.push(o.splice(0,t));return r},Ye=(e,t=3,o=4)=>{if(!e)return"";let r=2,n=3;if(t+o+r+n>=e.length)return e;let i=e.slice(0,r+t),a=e.slice(e.length-o,e.length);return`${i}...${a}`},Dn=e=>new Promise(t=>setTimeout(t,e)),ha=(e,t={})=>{let o=t.delayMs||40,r=t.maxAttempts||1e3;return new Promise(async(n,i)=>{let a=!1,s=0;for(;!a&&s<r;)e().then(()=>{a=!0,n()},(...l)=>{a=!0,i(...l)}),s+=1,await Dn(o);a||i(new Error("Exceeded max attempts before resolving function"))})},fr=(e,t,o={})=>{let r=new URL(t,e);for(let[n,i]of Object.entries(o))r.searchParams.set(n,i);return r.href},Cc=(e,t)=>e.toLowerCase()===t.toLowerCase(),On=(e,t)=>{for(let o of e)if(Cc(o,t))return!0;return!1},hr=e=>e.replace(/([\u2700-\u27BF]|[\uE000-\uF8FF]|\uD83C[\uDC00-\uDFFF]|\uD83D[\uDC00-\uDFFF]|[\u2011-\u26FF]|\uD83E[\uDD10-\uDDFF])/g,""),Oo=e=>typeof e=="string"?e:"0x"+e.toString(16);var ga=require("@ethersproject/logger");var co=class extends X{constructor(){super("Wallet timeout");this.type="wallet_error"}},jt=class extends X{constructor(){super("User rejected connection");this.type="wallet_error"}},He=e=>{if(e instanceof X)return e;if((e==null?void 0:e.code)&&(e==null?void 0:e.reason)){let t=new po(e);return e.code===ga.ErrorCode.ACTION_REJECTED&&(t.details=$t.E4001_USER_REJECTED_REQUEST),t}return e!=null&&e.code?new po(e):new X("Unknown connector error",e)},Un=class extends Ze{constructor(o,r,n){super(o);this.type="provider_error";this.code=r,this.data=n}},po=class extends Un{constructor(o){var i,a,s;let r=o;super(r.message,r.code,r.data);let n=Object.values($t).find(l=>l.eipCode===r.code);this.details=n||$t.UNKNOWN_ERROR,r.code===-32002&&((i=r.message)!=null&&i.includes("already pending for origin")?(a=r.message)!=null&&a.includes("wallet_requestPermissions")?this.details=$t.E32002_CONNECTION_ALREADY_PENDING:this.details=$t.E32002_REQUEST_ALREADY_PENDING:(s=r.message)!=null&&s.includes("Already processing")&&r.message.includes("eth_requestAccounts")&&(this.details=$t.E32002_WALLET_LOCKED))}},xc={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},ERROR_USER_REJECTED_CONNECTION:{message:"You rejected the request",detail:"Please try connecting again.",retryable:!0}},Ec={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}},Pc={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}},$t={UNKNOWN_ERROR:{eipCode:0,message:"Unknown error",detail:"Unknown error",retryable:!0},...Pc,...Ec},Kt={...xc,...$t};var Tc=12e4,Bn=(e=new co,t=Tc)=>new Promise((o,r)=>setTimeout(()=>{r(e)},t)),Ve=class{constructor(t){this.removeListener=(t,o)=>{if(this.walletProvider)return this.walletProvider.removeListener(t,o)};this.setWalletProvider=t=>{this.walletProvider=t,this._subscriptions.forEach(o=>{var r;(r=this.walletProvider)==null||r.on(o.eventName,o.listener)})};this.walletProvider=t,this._subscriptions=[]}on(t,o){if(this.walletProvider)return this.walletProvider.on(t,o);this._subscriptions.push({eventName:t,listener:o})}async request(t){if(!this.walletProvider)throw new X(`A wallet request of type ${t.method} was made before setting a wallet provider.`);return Promise.race([this.walletProvider.request(t),Bn()]).catch(o=>{throw He(o)})}},Zt=class extends Error{constructor(o,r,n){super(o);this.code=r,this.data=n}},gr=class extends wa.default{constructor(o,r,n=1){super();this.walletProxy=o,this.address=r,this.chainId=n,this.infuraProvider=new ba.InfuraProvider(n,nt)}async handleSendTransaction(o){if(!o.params||!Array.isArray(o.params))throw new Zt(`Invalid params for ${o.method}`,4200);let r=o.params[0];if(!await uo()||!this.address)throw new Zt("Disconnected",4900);return(await xa(r)).transactionHash}handleSwitchEthereumChain(o){if(!o.params||!Array.isArray(o.params))throw new Zt(`Invalid params for ${o.method}`,4200);let r=o.params[0];this.chainId=Number(r),this.emit("chainChanged",r)}async handlePersonalSign(o){if(!o.params||!Array.isArray(o.params))throw new Error("Invalid params for eth_estimateGas");let r=o.params[0],n=(0,ya.isHexString)(r)?(0,va.toUtf8String)(r):r;return await Ca(n)}async handleEstimateGas(o){if(!o.params||!Array.isArray(o.params))throw new Error("Invalid params for eth_estimateGas");let r={...o.params[0],chainId:Oo(this.chainId)};return delete r.from,this.infuraProvider.send("eth_estimateGas",[r])}async request(o){switch(console.debug("Embedded1193Provider.request() called with args",o),o.method){case"eth_accounts":return this.address?[this.address]:[];case"eth_chainId":return Oo(this.chainId);case"eth_estimateGas":return this.handleEstimateGas(o);case"eth_sendTransaction":return this.handleSendTransaction(o);case"wallet_switchEthereumChain":return this.handleSwitchEthereumChain(o);case"personal_sign":return this.handlePersonalSign(o);default:break}if(da(o.method)){let r=await uo();if(!r||!this.address)throw new Zt("Disconnected",4900);try{return(await this.walletProxy.rpc({address:this.address,accessToken:r,request:{method:o.method,params:o.params}})).response.data}catch(n){throw console.error(n),new Zt("Disconnected",4900)}}else return this.infuraProvider.send(o.method,o.params)}async connect(){let o=await uo();if(!o||!this.address)return null;try{return(await this.walletProxy.connect({address:this.address,accessToken:o})).address}catch(r){return console.error(r),null}}},kt=class extends Ve{constructor(o){super(o)}},yr=class extends Ve{constructor(t){super(t)}sendAsync(t,o){throw new Error("sendAsync is no longer supported by EIP-1193. Use the request method instead.")}};var Ce=class{constructor(t,o,r){this.createSiweMessage=(t,o,r,n,i,a,s)=>`${r} wants you to sign in with your Ethereum account:
|
|
1
|
+
"use strict";var pc=Object.create;var cr=Object.defineProperty;var uc=Object.getOwnPropertyDescriptor;var mc=Object.getOwnPropertyNames;var fc=Object.getPrototypeOf,hc=Object.prototype.hasOwnProperty;var gc=(e,t)=>{for(var o in t)cr(e,o,{get:t[o],enumerable:!0})},Ui=(e,t,o,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of mc(t))!hc.call(e,n)&&n!==o&&cr(e,n,{get:()=>t[n],enumerable:!(r=uc(t,n))||r.enumerable});return e};var x=(e,t,o)=>(o=e!=null?pc(fc(e)):{},Ui(t||!e||!e.__esModule?cr(o,"default",{value:e,enumerable:!0}):o,e)),yc=e=>Ui(cr({},"__esModule",{value:!0}),e);var _1={};gc(_1,{AsExternalProvider:()=>kt,ConnectorManager:()=>fo,PrivyClient:()=>go,PrivyProvider:()=>cc,PrivyProxyProvider:()=>Ve,VERSION:()=>pr,WalletConnector:()=>Ce,getAccessToken:()=>uo,usePrivy:()=>B});module.exports=yc(_1);var ac=require("@ethersproject/providers"),Q=require("react");var P=()=>{throw new Error("You need to wrap your application with the <PrivyProvider> initialized with your app id.")};var Bi=x(require("axios")),Ze=class extends Error{constructor(o,r,n){super(o);r instanceof Error&&(this.cause=r),this.privyErrorCode=n}toString(){return`${this.type}${this.privyErrorCode?`-${this.privyErrorCode}`:""}: ${this.message}${this.cause?` [cause: ${this.cause}]`:""}`}},so=class extends Ze{constructor(o,r,n,i,a){super(n,i,a);this.type=o;this.status=r}},T=class extends Ze{constructor(o,r,n){super(o,r,n);this.type="client_error"}};var X=class extends Ze{constructor(o,r,n){super(o,r,n);this.type="connector_error"}},ae=e=>{if(e instanceof Ze)return e;if(!Bi.default.isAxiosError(e))return Ue(e);if(!e.response)return new so("api_error",null,e.message,e);let{type:t,message:o,error:r,code:n}=e.response.data;return new so(t||"ApiError",e.response.status,o||r,e,n)},Ue=e=>e instanceof Ze?e:e instanceof Error?new T(e.message,e):new T(`Internal error: ${e}`);var Fi=()=>"/api/v1/sessions",Gi=()=>"/api/v1/sessions/logout",Hi=()=>"/api/v1/sessions/fork",Vi=()=>"/api/v1/sessions/fork/recover",zi=()=>"/api/v1/siwe/init",qi=()=>"/api/v1/siwe/authenticate",$i=()=>"/api/v1/siwe/link",ji=()=>"/api/v1/passwordless/init",Ki=()=>"/api/v1/passwordless/authenticate",Zi=()=>"/api/v1/passwordless/link",Yi=()=>"/api/v1/passwordless_sms/init",Qi=()=>"/api/v1/passwordless_sms/authenticate",Ji=()=>"/api/v1/passwordless_sms/link",Xi=()=>"/api/v1/oauth/init",ea=()=>"/api/v1/oauth/authenticate",ta=()=>"/api/v1/oauth/link",oa=()=>"/api/v1/siwe/unlink",ra=()=>"/api/v1/passwordless/unlink",na=()=>"/api/v1/passwordless_sms/unlink",ia=()=>"/api/v1/oauth/unlink",aa=()=>"/api/v1/analytics_events";var zt=class{constructor(t){this.meta={email:t}}async authenticate(){if(!this.api)throw new T("Auth flow has no API instance");if(!this.meta.email||!this.meta.emailCode)throw new T("Email and email code must be set prior to calling authenticate.");try{let t=Ki(),o=await this.api.post(t,{email:this.meta.email,code:this.meta.emailCode});return{user:o.data.user,token:o.data.token,refresh_token:o.data.refresh_token,is_new_user:o.data.is_new_user}}catch(t){throw ae(t)}}async link(){if(!this.api)throw new T("Auth flow has no API instance");if(!this.meta.email||!this.meta.emailCode)throw new T("Email and email code must be set prior to calling authenticate.");try{let t=Zi();return(await this.api.post(t,{email:this.meta.email,code:this.meta.emailCode})).data}catch(t){throw ae(t)}}async sendCodeEmail(t){if(!this.api)throw new T("Auth flow has no API instance");if(t&&(this.meta.email=t),!this.meta.email)throw new T("Email must be set when initialzing authentication.");try{let o=ji();return(await this.api.post(o,{email:this.meta.email})).data}catch(o){throw ae(o)}}};var _t=class{constructor(t,o,r){this.meta={provider:t},this.meta.authorizationCode=o,this.meta.stateCode=r}isActive(){return!!(this.meta.authorizationCode&&this.meta.stateCode&&this.meta.provider)}async authenticate(){if(!this.api)throw new T("Auth flow has no API instance");if(!this.meta.authorizationCode||!this.meta.stateCode)throw new T("[OAuth AuthFlow] Authorization and state codes code must be set prior to calling authenticate.");if(this.meta.authorizationCode==="undefined")throw new T("User denied confirmation during OAuth flow");try{let t=ea(),o=await this.api.post(t,{authorization_code:this.meta.authorizationCode,state_code:this.meta.stateCode});return{user:o.data.user,token:o.data.token,refresh_token:o.data.refresh_token,is_new_user:o.data.is_new_user}}catch(t){throw ae(t)}}async link(){if(!this.api)throw new T("Auth flow has no API instance");if(!this.meta.authorizationCode||!this.meta.stateCode)throw new T("[OAuth AuthFlow] Authorization and state codes code must be set prior to calling link.");if(this.meta.authorizationCode==="undefined")throw new T("User denied confirmation during OAuth flow");try{let t=ta();return(await this.api.post(t,{authorization_code:this.meta.authorizationCode,state_code:this.meta.stateCode})).data}catch(t){throw ae(t)}}async getAuthorizationUrl(){var t;if(!this.api)throw new T("Auth flow has no API instance");if(!this.meta.provider)throw new T("Provider must be set when initialzing OAuth authentication.");try{let o=Xi();return(await this.api.post(o,{provider:this.meta.provider,redirect_to:window.location.href},{baseURL:(t=this.api)==null?void 0:t.fallbackApiUrl})).data}catch(o){throw ae(o)}}};var St=class{constructor(t,o,r){this._meta={walletType:o,walletId:r},this.connectors=t,this.walletConnector=this.connectors.createWalletConnector(o,null,r)}get meta(){return{...this._meta,walletName:this.walletConnector.walletBranding.name,walletIcon:this.walletConnector.walletBranding.icon}}async authenticate(){if(!this.api)throw new T("Auth flow has no API instance");try{let{message:t,signature:o}=await this.sign(),r=await this.api.post(qi(),{message:t,signature:o});return this.connectors.addWalletConnector(this.walletConnector),await this.connectors.setActiveWallet(this.walletConnector.address)||console.warn("Failed to set active wallet"),{user:r.data.user,token:r.data.token,refresh_token:r.data.refresh_token,is_new_user:r.data.is_new_user}}catch(t){throw ae(t)}}async link(){if(!this.api)throw new T("Auth flow has no API instance");try{let{message:t,signature:o}=await this.sign(),r=await this.api.post($i(),{message:t,signature:o});return this.connectors.addWalletConnector(this.walletConnector),await this.connectors.setActiveWallet(this.walletConnector.address)||console.warn("Failed to set active wallet"),r.data}catch(t){throw ae(t)}}async promptConnect(){if(!this.api)throw new T("Auth flow has no API instance");let t=await this.walletConnector.connect({showPrompt:!0});return await this.buildSiweMessage(t),t}async sign(){if(!this.api)throw new T("Auth flow has no API instance");if(!this.preparedMessage){let o=await this.walletConnector.connect({showPrompt:!1});await this.buildSiweMessage(o)}if(!this.preparedMessage)throw new T("Could not prepare SIWE message");let t=await this.walletConnector.sign(this.preparedMessage);return{message:this.preparedMessage,signature:t}}async buildSiweMessage(t){if(!this.api)throw new T("Auth flow has no API instance");let o=t.address,r=t.chainId,n=await this.api.post(zi(),{address:o});return this.preparedMessage=this.walletConnector.prepareMessage(r,o,n.data.nonce),this.preparedMessage}};var qt=class{constructor(t){this.meta={phoneNumber:t}}async authenticate(){if(!this.api)throw new T("Auth flow has no API instance");if(!this.meta.phoneNumber||!this.meta.smsCode)throw new T("phone number and sms code must be set prior to calling authenticate.");try{let t=Qi(),o=await this.api.post(t,{phoneNumber:this.meta.phoneNumber,code:this.meta.smsCode});return{user:o.data.user,token:o.data.token,refresh_token:o.data.refresh_token,is_new_user:o.data.is_new_user}}catch(t){throw ae(t)}}async link(){if(!this.api)throw new T("Auth flow has no API instance");if(!this.meta.phoneNumber||!this.meta.smsCode)throw new T("phone number and sms code must be set prior to calling authenticate.");try{let t=Ji();return(await this.api.post(t,{phoneNumber:this.meta.phoneNumber,code:this.meta.smsCode})).data}catch(t){throw ae(t)}}async sendSmsCode(t){if(!this.api)throw new T("Auth flow has no API instance");if(t&&(this.meta.phoneNumber=t),!this.meta.phoneNumber)throw new T("phone nNumber must be set when initialzing authentication.");try{let o=Yi();return(await this.api.post(o,{phoneNumber:this.meta.phoneNumber})).data}catch(o){throw ae(o)}}};var Ga=require("@ethersproject/address");var sa="1.25.1-beta.3";var nt="4df5e2316331463a9130964bd6078dfa",dr="https://auth.privy.io",la=1e4,Be=1400,pr=sa;var lo="privy:token",ur="privy:refresh_token",No="privy:session_transfer_token",mr="privy:connectors",Ln="walletconnect",ca=3e4,Fe=1;var Mn=class{constructor(){this._cache={}}get(t){return this._cache[t]}put(t,o){o!==void 0?this._cache[t]=o:this.del(t)}del(t){delete this._cache[t]}getKeys(){return Object.keys(this._cache)}},Nn=class{get(t){let o=localStorage.getItem(t);return o===null?void 0:JSON.parse(o)}put(t,o){o!==void 0?localStorage.setItem(t,JSON.stringify(o)):this.del(t)}del(t){localStorage.removeItem(t)}getKeys(){return Object.entries(localStorage).map(([t])=>t)}};function vc(){return typeof window<"u"&&window.localStorage?new Nn:new Mn}var Z=vc();var Ta=x(require("@coinbase/wallet-sdk")),Aa=require("@ethersproject/address");var Do=require("react/jsx-runtime"),Ge=({style:e,...t})=>(0,Do.jsxs)("svg",{width:"1024",height:"1024",viewBox:"0 0 1024 1024",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:{height:"28px",width:"28px",...e},...t,children:[(0,Do.jsx)("rect",{width:"1024",height:"1024",fill:"#0052FF",rx:100,ry:100}),(0,Do.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M152 512C152 710.823 313.177 872 512 872C710.823 872 872 710.823 872 512C872 313.177 710.823 152 512 152C313.177 152 152 313.177 152 512ZM420 396C406.745 396 396 406.745 396 420V604C396 617.255 406.745 628 420 628H604C617.255 628 628 617.255 628 604V420C628 406.745 617.255 396 604 396H420Z",fill:"white"})]});var Ea=require("@ethersproject/address"),Pa=require("@ethersproject/providers");var ya=require("@ethersproject/bytes"),ba=require("@ethersproject/providers"),va=require("@ethersproject/strings"),wa=x(require("eventemitter3"));var wc=["eth_sign","eth_populateTransactionRequest","eth_signTransaction","personal_sign"],da=e=>wc.includes(e);var pa=require("libphonenumber-js/min");var ua=e=>!!String(e).toLowerCase().match(/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/),ma=e=>(0,pa.isPossiblePhoneNumber)(String(e),"US"),fa=(e,t)=>{let o=e.slice(0),r=[];for(;o.length;)r.push(o.splice(0,t));return r},Ye=(e,t=3,o=4)=>{if(!e)return"";let r=2,n=3;if(t+o+r+n>=e.length)return e;let i=e.slice(0,r+t),a=e.slice(e.length-o,e.length);return`${i}...${a}`},Dn=e=>new Promise(t=>setTimeout(t,e)),ha=(e,t={})=>{let o=t.delayMs||40,r=t.maxAttempts||1e3;return new Promise(async(n,i)=>{let a=!1,s=0;for(;!a&&s<r;)e().then(()=>{a=!0,n()},(...l)=>{a=!0,i(...l)}),s+=1,await Dn(o);a||i(new Error("Exceeded max attempts before resolving function"))})},fr=(e,t,o={})=>{let r=new URL(t,e);for(let[n,i]of Object.entries(o))r.searchParams.set(n,i);return r.href},Cc=(e,t)=>e.toLowerCase()===t.toLowerCase(),On=(e,t)=>{for(let o of e)if(Cc(o,t))return!0;return!1},hr=e=>e.replace(/([\u2700-\u27BF]|[\uE000-\uF8FF]|\uD83C[\uDC00-\uDFFF]|\uD83D[\uDC00-\uDFFF]|[\u2011-\u26FF]|\uD83E[\uDD10-\uDDFF])/g,""),Oo=e=>typeof e=="string"?e:"0x"+e.toString(16);var ga=require("@ethersproject/logger");var co=class extends X{constructor(){super("Wallet timeout");this.type="wallet_error"}},jt=class extends X{constructor(){super("User rejected connection");this.type="wallet_error"}},He=e=>{if(e instanceof X)return e;if((e==null?void 0:e.code)&&(e==null?void 0:e.reason)){let t=new po(e);return e.code===ga.ErrorCode.ACTION_REJECTED&&(t.details=$t.E4001_USER_REJECTED_REQUEST),t}return e!=null&&e.code?new po(e):new X("Unknown connector error",e)},Un=class extends Ze{constructor(o,r,n){super(o);this.type="provider_error";this.code=r,this.data=n}},po=class extends Un{constructor(o){var i,a,s;let r=o;super(r.message,r.code,r.data);let n=Object.values($t).find(l=>l.eipCode===r.code);this.details=n||$t.UNKNOWN_ERROR,r.code===-32002&&((i=r.message)!=null&&i.includes("already pending for origin")?(a=r.message)!=null&&a.includes("wallet_requestPermissions")?this.details=$t.E32002_CONNECTION_ALREADY_PENDING:this.details=$t.E32002_REQUEST_ALREADY_PENDING:(s=r.message)!=null&&s.includes("Already processing")&&r.message.includes("eth_requestAccounts")&&(this.details=$t.E32002_WALLET_LOCKED))}},xc={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},ERROR_USER_REJECTED_CONNECTION:{message:"You rejected the request",detail:"Please try connecting again.",retryable:!0}},Ec={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}},Pc={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}},$t={UNKNOWN_ERROR:{eipCode:0,message:"Unknown error",detail:"Unknown error",retryable:!0},...Pc,...Ec},Kt={...xc,...$t};var Tc=12e4,Bn=(e=new co,t=Tc)=>new Promise((o,r)=>setTimeout(()=>{r(e)},t)),Ve=class{constructor(t){this.removeListener=(t,o)=>{if(this.walletProvider)return this.walletProvider.removeListener(t,o)};this.setWalletProvider=t=>{this.walletProvider=t,this._subscriptions.forEach(o=>{var r;(r=this.walletProvider)==null||r.on(o.eventName,o.listener)})};this.walletProvider=t,this._subscriptions=[]}on(t,o){if(this.walletProvider)return this.walletProvider.on(t,o);this._subscriptions.push({eventName:t,listener:o})}async request(t){if(!this.walletProvider)throw new X(`A wallet request of type ${t.method} was made before setting a wallet provider.`);return Promise.race([this.walletProvider.request(t),Bn()]).catch(o=>{throw He(o)})}},Zt=class extends Error{constructor(o,r,n){super(o);this.code=r,this.data=n}},gr=class extends wa.default{constructor(o,r,n=1){super();this.walletProxy=o,this.address=r,this.chainId=n,this.infuraProvider=new ba.InfuraProvider(n,nt)}async handleSendTransaction(o){if(!o.params||!Array.isArray(o.params))throw new Zt(`Invalid params for ${o.method}`,4200);let r=o.params[0];if(!await uo()||!this.address)throw new Zt("Disconnected",4900);return(await xa(r)).transactionHash}handleSwitchEthereumChain(o){if(!o.params||!Array.isArray(o.params))throw new Zt(`Invalid params for ${o.method}`,4200);let r=o.params[0];this.chainId=Number(r),this.emit("chainChanged",r)}async handlePersonalSign(o){if(!o.params||!Array.isArray(o.params))throw new Error("Invalid params for eth_estimateGas");let r=o.params[0],n=(0,ya.isHexString)(r)?(0,va.toUtf8String)(r):r;return await Ca(n)}async handleEstimateGas(o){if(!o.params||!Array.isArray(o.params))throw new Error("Invalid params for eth_estimateGas");let r={...o.params[0],chainId:Oo(this.chainId)};return delete r.from,this.infuraProvider.send("eth_estimateGas",[r])}async request(o){switch(console.debug("Embedded1193Provider.request() called with args",o),o.method){case"eth_accounts":return this.address?[this.address]:[];case"eth_chainId":return Oo(this.chainId);case"eth_estimateGas":return this.handleEstimateGas(o);case"eth_sendTransaction":return this.handleSendTransaction(o);case"wallet_switchEthereumChain":return this.handleSwitchEthereumChain(o);case"personal_sign":return this.handlePersonalSign(o);default:break}if(da(o.method)){let r=await uo();if(!r||!this.address)throw new Zt("Disconnected",4900);try{return(await this.walletProxy.rpc({address:this.address,accessToken:r,request:{method:o.method,params:o.params}})).response.data}catch(n){throw console.error(n),new Zt("Disconnected",4900)}}else return this.infuraProvider.send(o.method,o.params)}async connect(){let o=await uo();if(!o||!this.address)return null;try{return(await this.walletProxy.connect({address:this.address,accessToken:o})).address}catch(r){return console.error(r),null}}},kt=class extends Ve{constructor(o){super(o)}},yr=class extends Ve{constructor(t){super(t)}sendAsync(t,o){throw new Error("sendAsync is no longer supported by EIP-1193. Use the request method instead.")}};var Ce=class{constructor(t,o,r){this.createSiweMessage=(t,o,r,n,i,a,s)=>`${r} wants you to sign in with your Ethereum account:
|
|
2
2
|
${o}
|
|
3
3
|
|
|
4
4
|
${s}
|
|
@@ -1741,6 +1741,7 @@ Resources:
|
|
|
1741
1741
|
text-align: left;
|
|
1742
1742
|
max-height: 310px;
|
|
1743
1743
|
overflow: scroll;
|
|
1744
|
+
white-space: pre-wrap;
|
|
1744
1745
|
|
|
1745
1746
|
// hide the scrollbars
|
|
1746
1747
|
-ms-overflow-style: none; /* Internet Explorer 10+ */
|