@privy-io/react-auth 1.6.0-beta.14 → 1.6.0-beta.15
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 +1 -1
- package/dist/index.esm.js +1 -1
- package/package.json +1 -1
package/dist/index.cjs.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var K3=Object.create;var Y1=Object.defineProperty;var Y3=Object.getOwnPropertyDescriptor;var J3=Object.getOwnPropertyNames;var X3=Object.getPrototypeOf,Q3=Object.prototype.hasOwnProperty;var t5=(i,e)=>{for(var a in e)Y1(i,a,{get:e[a],enumerable:!0})},p4=(i,e,a,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let l of J3(e))!Q3.call(i,l)&&l!==a&&Y1(i,l,{get:()=>e[l],enumerable:!(o=Y3(e,l))||o.enumerable});return i};var k=(i,e,a)=>(a=i!=null?K3(X3(i)):{},p4(e||!i||!i.__esModule?Y1(a,"default",{value:i,enumerable:!0}):a,i)),e5=i=>p4(Y1({},"__esModule",{value:!0}),i);var f6={};t5(f6,{PrivyProvider:()=>$3,VERSION:()=>X1,usePrivy:()=>Z});module.exports=e5(f6);var j=require("react");var Q1=k(require("axios"));var h4=k(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}]`:""}`}},J1=class extends K{constructor(a,o,l,s){super(l,s);this.type=a;this.status=o}},m=class extends K{constructor(a,o){super(a,o);this.type="client_error"}};var $=class extends K{constructor(a,o){super(a,o);this.type="connector_error"}},R=i=>{if(i instanceof K)return i;if(!h4.default.isAxiosError(i))return Y(i);if(!i.response)return new J1("api_error",null,i.message,i);let{type:e,message:a,error:o}=i.response.data;return new J1(e||"ApiError",i.response.status,a||o,i)},Y=i=>i instanceof K?i:i instanceof Error?new m(i.message,i):new m(`Internal error: ${i}`);var f4="1.6.0-beta.14";var u4="https://api.privy.io/v0",m4=process.env.NEXT_PUBLIC_PRIVY_AUTH_URL||"https://auth.privy.io",A2="70f97dc579834350a5baec117b3c5ae3",b4=1e4,t1=1200,X1=f4;var t2=class{constructor(e,a,o){this.appId=e,this.sdkVersion=X1,this.session=a,this.defaults=o}async get(e,a){try{return await Q1.default.get(e,this.buildConfig({headers:{"Cache-Control":"no-cache"},...a}))}catch(o){throw R(o)}}async post(e,a,o){try{return await Q1.default.post(e,a,this.buildConfig(o))}catch(l){throw R(l)}}async delete(e,a){try{return await Q1.default.delete(e,this.buildConfig(a))}catch(o){throw R(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 k4=k(require("jwt-decode")),x1=class{static parse(e){try{return new x1(e)}catch{return null}}constructor(e){this.value=e,this._decoded=(0,k4.default)(e)}get subject(){return this._decoded.sub}get expiration(){return this._decoded.exp}isExpired(e=0){let a=Date.now(),o=(this.expiration-e)*1e3;return a>=o}};var E1=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 P2=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]}},_2=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 a5(){return typeof window<"u"&&window.localStorage?new _2:new P2}var J=a5();var o5=i=>{var e;return(e=i.map(a=>{if(a.type==="wallet")return{address:a.address,type:a.type,verifiedAt:new Date(a.verified_at*1e3),chainType:a.chain_type}}).filter(a=>a))==null?void 0:e[0]},l5=i=>{var e;return(e=i.map(a=>{if(a.type==="email")return{address:a.address,type:a.type,verifiedAt:new Date(a.verified_at*1e3)}}).filter(a=>a))==null?void 0:e[0]},r5=i=>{var e;return(e=i.map(a=>{if(a.type==="phone")return{number:a.phoneNumber,type:a.type,verifiedAt:new Date(a.verified_at*1e3)}}).filter(a=>a))==null?void 0:e[0]},n5=i=>{var e;return(e=i.map(a=>{if(a.type==="google_oauth")return{subject:a.subject,email:a.email,name:a.name,type:a.type,verifiedAt:new Date(a.verified_at*1e3)}}).filter(a=>a))==null?void 0:e[0]},s5=i=>{var e;return(e=i.map(a=>{if(a.type==="twitter_oauth")return{subject:a.subject,username:a.username,name:a.name,type:a.type,verifiedAt:new Date(a.verified_at*1e3)}}).filter(a=>a))==null?void 0:e[0]},C5=i=>{var e;return(e=i.map(a=>{if(a.type==="discord_oauth")return{subject:a.subject,username:a.username,email:a.email,type:a.type,verifiedAt:new Date(a.verified_at*1e3)}}).filter(a=>a))==null?void 0:e[0]};function f1(i){if(!i)return null;let e=l5(i.linked_accounts),a=r5(i.linked_accounts),o=o5(i.linked_accounts),l=n5(i.linked_accounts),s=s5(i.linked_accounts),c=C5(i.linked_accounts);return{id:i.id,createdAt:new Date(i.created_at*1e3),linkedAccounts:[...o?[o]:[],...e?[e]:[],...a?[a]:[],...l?[l]:[],...s?[s]:[],...c?[c]:[]],email:e&&{address:e==null?void 0:e.address},phone:a&&{number:a==null?void 0:a.number},wallet:o&&{address:o.address,chainType:o.chainType,chainId:o.chainId,walletType:o.walletType},google:l&&{subject:l.subject,email:l.email,name:l.name},twitter:s&&{subject:s.subject,username:s.username,name:s.name},discord:c&&{subject:c.subject,username:c.username,email:c.email}}}var M4=()=>"/api/v1/sessions",g4=()=>"/api/v1/sessions/logout",w4=()=>"/api/v1/siwe/init",y4=()=>"/api/v1/siwe/authenticate",v4=()=>"/api/v1/passwordless/init",Z4=()=>"/api/v1/passwordless/authenticate",L4=()=>"/api/v1/passwordless_sms/init",x4=()=>"/api/v1/passwordless_sms/authenticate",E4=()=>"/api/v1/oauth/init",A4=()=>"/api/v1/oauth/authenticate",P4=()=>"/api/v1/siwe/unlink",_4=()=>"/api/v1/passwordless/unlink",T4=()=>"/api/v1/passwordless_sms/unlink",S4=()=>"/api/v1/oauth/unlink";var d5=30,T2="privy:token",S2="privy:refresh_token",e2=class{constructor(){this.authenticateOnce=new E1(async e=>this._authenticate(e)),this.refreshOnce=new E1(this._refresh.bind(this)),this.destroyOnce=new E1(this._destroy.bind(this))}get token(){let e=J.get(T2);return typeof e=="string"?e:null}get refreshToken(){let e=J.get(S2);return typeof e=="string"?e:null}hasRefreshCredentials(){return typeof this.token=="string"&&typeof this.refreshToken=="string"}hasActiveToken(){let e=x1.parse(this.token);return e!==null&&!e.isExpired(d5)}authenticate(e){return this.authenticateOnce.execute(e)}refresh(){return this.refreshOnce.execute()}destroy(){return this.destroyOnce.execute()}async _authenticate(e){try{let{token:a,refresh_token:o,user:l}=await e.authenticate();return a&&this.storeToken(a),o&&this.storeRefreshToken(o),f1(l)}catch(a){throw console.warn("Error authenticating session"),Y(a)}}async _refresh(){if(!this.api)throw new m("Session has no API instance");let e=this.token,a=this.refreshToken;if(!e||!a)return null;try{let o=await this.api.post(M4(),{refresh_token:a});return this.storeToken(o.data.token),this.storeRefreshToken(o.data.refresh_token),f1(o.data.user)}catch(o){throw Y(o)}}async _destroy(){var e;try{await((e=this.api)==null?void 0:e.post(g4(),{})),this.destroyLocalState()}catch(a){throw console.warn("Error destroying session"),Y(a)}}destroyLocalState(){this.storeToken(null),this.storeRefreshToken(null)}storeToken(e){typeof e=="string"?J.put(T2,e):J.del(T2)}storeRefreshToken(e){typeof e=="string"?J.put(S2,e):J.del(S2)}};var N4=require("@ethersproject/address"),W2=k(require("@walletconnect/web3-provider"));var I4=require("ethers");var A1=class extends ${constructor(){super("Wallet timeout");this.type="wallet_error"}},i2=i=>{if(i instanceof $)return i;if((i==null?void 0:i.code)&&(i==null?void 0:i.reason)){let e=new P1(i);return i.code===I4.ethers.errors.ACTION_REJECTED&&(e.details=M1.E4001_USER_REJECTED_REQUEST),e}return i!=null&&i.code?new P1(i):new $("Unknown connector error",i)},I2=class extends K{constructor(a,o,l){super(a);this.type="provider_error";this.code=o,this.data=l}},P1=class extends I2{constructor(a){var s,c,b;let o=a;super(o.message,o.code,o.data);let l=Object.values(M1).find(g=>g.eipCode===o.code);this.details=l||M1.UNKNOWN_ERROR,o.code===-32002&&((s=o.message)!=null&&s.includes("already pending for origin")?(c=o.message)!=null&&c.includes("wallet_requestPermissions")?this.details=M1.E32002_CONNECTION_ALREADY_PENDING:this.details=M1.E32002_REQUEST_ALREADY_PENDING:(b=o.message)!=null&&b.includes("Already processing")&&o.message.includes("eth_requestAccounts")&&(this.details=M1.E32002_WALLET_LOCKED))}},c5={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}},p5={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}},h5={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}},M1={UNKNOWN_ERROR:{eipCode:0,message:"Unknown error",detail:"Unknown error",retryable:!0},...h5,...p5},a2={...c5,...M1};var f5=3e4,R2=(i=new A1,e=f5)=>new Promise((a,o)=>setTimeout(()=>{o(i)},e)),_1=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 $(`A wallet request of type ${e.method} was made to a disconnected wallet: `);return Promise.race([this.walletProvider.request(e),R2()]).catch(a=>{throw console.log("throwing timeout"),i2(a)})}},T1=class extends _1{constructor(a){super(a)}},o2=class extends _1{constructor(e){super(e)}sendAsync(e,a){throw new Error("sendAsync is no longer supported by EIP-1193. Use the request method instead.")}};var W4=require("ethers");var R4=["metamask","coinbase_wallet","wallet_connect"];var N2="privy:wallet_type",O2=()=>{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},l2=class{constructor(){this.walletType=null;this.getEthereumProvider=()=>this.ethProvider;this.createSiweMessage=(e,a,o,l,s,c,b)=>`${o} wants you to sign in with your Ethereum account:
|
|
1
|
+
"use strict";var K3=Object.create;var Y1=Object.defineProperty;var Y3=Object.getOwnPropertyDescriptor;var J3=Object.getOwnPropertyNames;var X3=Object.getPrototypeOf,Q3=Object.prototype.hasOwnProperty;var t5=(i,e)=>{for(var a in e)Y1(i,a,{get:e[a],enumerable:!0})},p4=(i,e,a,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let l of J3(e))!Q3.call(i,l)&&l!==a&&Y1(i,l,{get:()=>e[l],enumerable:!(o=Y3(e,l))||o.enumerable});return i};var k=(i,e,a)=>(a=i!=null?K3(X3(i)):{},p4(e||!i||!i.__esModule?Y1(a,"default",{value:i,enumerable:!0}):a,i)),e5=i=>p4(Y1({},"__esModule",{value:!0}),i);var f6={};t5(f6,{PrivyProvider:()=>$3,VERSION:()=>X1,usePrivy:()=>Z});module.exports=e5(f6);var j=require("react");var Q1=k(require("axios"));var h4=k(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}]`:""}`}},J1=class extends K{constructor(a,o,l,s){super(l,s);this.type=a;this.status=o}},m=class extends K{constructor(a,o){super(a,o);this.type="client_error"}};var $=class extends K{constructor(a,o){super(a,o);this.type="connector_error"}},R=i=>{if(i instanceof K)return i;if(!h4.default.isAxiosError(i))return Y(i);if(!i.response)return new J1("api_error",null,i.message,i);let{type:e,message:a,error:o}=i.response.data;return new J1(e||"ApiError",i.response.status,a||o,i)},Y=i=>i instanceof K?i:i instanceof Error?new m(i.message,i):new m(`Internal error: ${i}`);var f4="1.6.0-beta.15";var u4="https://api.privy.io/v0",m4=process.env.NEXT_PUBLIC_PRIVY_AUTH_URL||"https://auth.privy.io",A2="70f97dc579834350a5baec117b3c5ae3",b4=1e4,t1=1200,X1=f4;var t2=class{constructor(e,a,o){this.appId=e,this.sdkVersion=X1,this.session=a,this.defaults=o}async get(e,a){try{return await Q1.default.get(e,this.buildConfig({headers:{"Cache-Control":"no-cache"},...a}))}catch(o){throw R(o)}}async post(e,a,o){try{return await Q1.default.post(e,a,this.buildConfig(o))}catch(l){throw R(l)}}async delete(e,a){try{return await Q1.default.delete(e,this.buildConfig(a))}catch(o){throw R(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 k4=k(require("jwt-decode")),x1=class{static parse(e){try{return new x1(e)}catch{return null}}constructor(e){this.value=e,this._decoded=(0,k4.default)(e)}get subject(){return this._decoded.sub}get expiration(){return this._decoded.exp}isExpired(e=0){let a=Date.now(),o=(this.expiration-e)*1e3;return a>=o}};var E1=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 P2=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]}},_2=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 a5(){return typeof window<"u"&&window.localStorage?new _2:new P2}var J=a5();var o5=i=>{var e;return(e=i.map(a=>{if(a.type==="wallet")return{address:a.address,type:a.type,verifiedAt:new Date(a.verified_at*1e3),chainType:a.chain_type}}).filter(a=>a))==null?void 0:e[0]},l5=i=>{var e;return(e=i.map(a=>{if(a.type==="email")return{address:a.address,type:a.type,verifiedAt:new Date(a.verified_at*1e3)}}).filter(a=>a))==null?void 0:e[0]},r5=i=>{var e;return(e=i.map(a=>{if(a.type==="phone")return{number:a.phoneNumber,type:a.type,verifiedAt:new Date(a.verified_at*1e3)}}).filter(a=>a))==null?void 0:e[0]},n5=i=>{var e;return(e=i.map(a=>{if(a.type==="google_oauth")return{subject:a.subject,email:a.email,name:a.name,type:a.type,verifiedAt:new Date(a.verified_at*1e3)}}).filter(a=>a))==null?void 0:e[0]},s5=i=>{var e;return(e=i.map(a=>{if(a.type==="twitter_oauth")return{subject:a.subject,username:a.username,name:a.name,type:a.type,verifiedAt:new Date(a.verified_at*1e3)}}).filter(a=>a))==null?void 0:e[0]},C5=i=>{var e;return(e=i.map(a=>{if(a.type==="discord_oauth")return{subject:a.subject,username:a.username,email:a.email,type:a.type,verifiedAt:new Date(a.verified_at*1e3)}}).filter(a=>a))==null?void 0:e[0]};function f1(i){if(!i)return null;let e=l5(i.linked_accounts),a=r5(i.linked_accounts),o=o5(i.linked_accounts),l=n5(i.linked_accounts),s=s5(i.linked_accounts),c=C5(i.linked_accounts);return{id:i.id,createdAt:new Date(i.created_at*1e3),linkedAccounts:[...o?[o]:[],...e?[e]:[],...a?[a]:[],...l?[l]:[],...s?[s]:[],...c?[c]:[]],email:e&&{address:e==null?void 0:e.address},phone:a&&{number:a==null?void 0:a.number},wallet:o&&{address:o.address,chainType:o.chainType,chainId:o.chainId,walletType:o.walletType},google:l&&{subject:l.subject,email:l.email,name:l.name},twitter:s&&{subject:s.subject,username:s.username,name:s.name},discord:c&&{subject:c.subject,username:c.username,email:c.email}}}var M4=()=>"/api/v1/sessions",g4=()=>"/api/v1/sessions/logout",w4=()=>"/api/v1/siwe/init",y4=()=>"/api/v1/siwe/authenticate",v4=()=>"/api/v1/passwordless/init",Z4=()=>"/api/v1/passwordless/authenticate",L4=()=>"/api/v1/passwordless_sms/init",x4=()=>"/api/v1/passwordless_sms/authenticate",E4=()=>"/api/v1/oauth/init",A4=()=>"/api/v1/oauth/authenticate",P4=()=>"/api/v1/siwe/unlink",_4=()=>"/api/v1/passwordless/unlink",T4=()=>"/api/v1/passwordless_sms/unlink",S4=()=>"/api/v1/oauth/unlink";var d5=30,T2="privy:token",S2="privy:refresh_token",e2=class{constructor(){this.authenticateOnce=new E1(async e=>this._authenticate(e)),this.refreshOnce=new E1(this._refresh.bind(this)),this.destroyOnce=new E1(this._destroy.bind(this))}get token(){let e=J.get(T2);return typeof e=="string"?e:null}get refreshToken(){let e=J.get(S2);return typeof e=="string"?e:null}hasRefreshCredentials(){return typeof this.token=="string"&&typeof this.refreshToken=="string"}hasActiveToken(){let e=x1.parse(this.token);return e!==null&&!e.isExpired(d5)}authenticate(e){return this.authenticateOnce.execute(e)}refresh(){return this.refreshOnce.execute()}destroy(){return this.destroyOnce.execute()}async _authenticate(e){try{let{token:a,refresh_token:o,user:l}=await e.authenticate();return a&&this.storeToken(a),o&&this.storeRefreshToken(o),f1(l)}catch(a){throw console.warn("Error authenticating session"),Y(a)}}async _refresh(){if(!this.api)throw new m("Session has no API instance");let e=this.token,a=this.refreshToken;if(!e||!a)return null;try{let o=await this.api.post(M4(),{refresh_token:a});return this.storeToken(o.data.token),this.storeRefreshToken(o.data.refresh_token),f1(o.data.user)}catch(o){throw Y(o)}}async _destroy(){var e;try{await((e=this.api)==null?void 0:e.post(g4(),{})),this.destroyLocalState()}catch(a){throw console.warn("Error destroying session"),Y(a)}}destroyLocalState(){this.storeToken(null),this.storeRefreshToken(null)}storeToken(e){typeof e=="string"?J.put(T2,e):J.del(T2)}storeRefreshToken(e){typeof e=="string"?J.put(S2,e):J.del(S2)}};var N4=require("@ethersproject/address"),W2=k(require("@walletconnect/web3-provider"));var I4=require("ethers");var A1=class extends ${constructor(){super("Wallet timeout");this.type="wallet_error"}},i2=i=>{if(i instanceof $)return i;if((i==null?void 0:i.code)&&(i==null?void 0:i.reason)){let e=new P1(i);return i.code===I4.ethers.errors.ACTION_REJECTED&&(e.details=M1.E4001_USER_REJECTED_REQUEST),e}return i!=null&&i.code?new P1(i):new $("Unknown connector error",i)},I2=class extends K{constructor(a,o,l){super(a);this.type="provider_error";this.code=o,this.data=l}},P1=class extends I2{constructor(a){var s,c,b;let o=a;super(o.message,o.code,o.data);let l=Object.values(M1).find(g=>g.eipCode===o.code);this.details=l||M1.UNKNOWN_ERROR,o.code===-32002&&((s=o.message)!=null&&s.includes("already pending for origin")?(c=o.message)!=null&&c.includes("wallet_requestPermissions")?this.details=M1.E32002_CONNECTION_ALREADY_PENDING:this.details=M1.E32002_REQUEST_ALREADY_PENDING:(b=o.message)!=null&&b.includes("Already processing")&&o.message.includes("eth_requestAccounts")&&(this.details=M1.E32002_WALLET_LOCKED))}},c5={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}},p5={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}},h5={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}},M1={UNKNOWN_ERROR:{eipCode:0,message:"Unknown error",detail:"Unknown error",retryable:!0},...h5,...p5},a2={...c5,...M1};var f5=3e4,R2=(i=new A1,e=f5)=>new Promise((a,o)=>setTimeout(()=>{o(i)},e)),_1=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 $(`A wallet request of type ${e.method} was made to a disconnected wallet: `);return Promise.race([this.walletProvider.request(e),R2()]).catch(a=>{throw console.log("throwing timeout"),i2(a)})}},T1=class extends _1{constructor(a){super(a)}},o2=class extends _1{constructor(e){super(e)}sendAsync(e,a){throw new Error("sendAsync is no longer supported by EIP-1193. Use the request method instead.")}};var W4=require("ethers");var R4=["metamask","coinbase_wallet","wallet_connect"];var N2="privy:wallet_type",O2=()=>{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},l2=class{constructor(){this.walletType=null;this.getEthereumProvider=()=>this.ethProvider;this.createSiweMessage=(e,a,o,l,s,c,b)=>`${o} wants you to sign in with your Ethereum account:
|
|
2
2
|
${a}
|
|
3
3
|
|
|
4
4
|
${b}
|
package/dist/index.esm.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{useEffect as u2,useState as d1}from"react";import w2 from"axios";import U3 from"axios";var F=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}]`:""}`}},O1=class extends F{constructor(a,o,l,n){super(l,n);this.type=a;this.status=o}},u=class extends F{constructor(a,o){super(a,o);this.type="client_error"}};var D=class extends F{constructor(a,o){super(a,o);this.type="connector_error"}},T=i=>{if(i instanceof F)return i;if(!U3.isAxiosError(i))return V(i);if(!i.response)return new O1("api_error",null,i.message,i);let{type:e,message:a,error:o}=i.response.data;return new O1(e||"ApiError",i.response.status,a||o,i)},V=i=>i instanceof F?i:i instanceof Error?new u(i.message,i):new u(`Internal error: ${i}`);var i4="1.6.0-beta.14";var a4="https://api.privy.io/v0",o4=process.env.NEXT_PUBLIC_PRIVY_AUTH_URL||"https://auth.privy.io",M2="70f97dc579834350a5baec117b3c5ae3",l4=1e4,z=1200,g2=i4;var D1=class{constructor(e,a,o){this.appId=e,this.sdkVersion=g2,this.session=a,this.defaults=o}async get(e,a){try{return await w2.get(e,this.buildConfig({headers:{"Cache-Control":"no-cache"},...a}))}catch(o){throw T(o)}}async post(e,a,o){try{return await w2.post(e,a,this.buildConfig(o))}catch(l){throw T(l)}}async delete(e,a){try{return await w2.delete(e,this.buildConfig(a))}catch(o){throw T(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 V3 from"jwt-decode";var p1=class{static parse(e){try{return new p1(e)}catch{return null}}constructor(e){this.value=e,this._decoded=V3(e)}get subject(){return this._decoded.sub}get expiration(){return this._decoded.exp}isExpired(e=0){let a=Date.now(),o=(this.expiration-e)*1e3;return a>=o}};var h1=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 y2=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]}},v2=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 H3(){return typeof window<"u"&&window.localStorage?new v2:new y2}var H=H3();var B3=i=>{var e;return(e=i.map(a=>{if(a.type==="wallet")return{address:a.address,type:a.type,verifiedAt:new Date(a.verified_at*1e3),chainType:a.chain_type}}).filter(a=>a))==null?void 0:e[0]},G3=i=>{var e;return(e=i.map(a=>{if(a.type==="email")return{address:a.address,type:a.type,verifiedAt:new Date(a.verified_at*1e3)}}).filter(a=>a))==null?void 0:e[0]},j3=i=>{var e;return(e=i.map(a=>{if(a.type==="phone")return{number:a.phoneNumber,type:a.type,verifiedAt:new Date(a.verified_at*1e3)}}).filter(a=>a))==null?void 0:e[0]},z3=i=>{var e;return(e=i.map(a=>{if(a.type==="google_oauth")return{subject:a.subject,email:a.email,name:a.name,type:a.type,verifiedAt:new Date(a.verified_at*1e3)}}).filter(a=>a))==null?void 0:e[0]},$3=i=>{var e;return(e=i.map(a=>{if(a.type==="twitter_oauth")return{subject:a.subject,username:a.username,name:a.name,type:a.type,verifiedAt:new Date(a.verified_at*1e3)}}).filter(a=>a))==null?void 0:e[0]},q3=i=>{var e;return(e=i.map(a=>{if(a.type==="discord_oauth")return{subject:a.subject,username:a.username,email:a.email,type:a.type,verifiedAt:new Date(a.verified_at*1e3)}}).filter(a=>a))==null?void 0:e[0]};function Q(i){if(!i)return null;let e=G3(i.linked_accounts),a=j3(i.linked_accounts),o=B3(i.linked_accounts),l=z3(i.linked_accounts),n=$3(i.linked_accounts),d=q3(i.linked_accounts);return{id:i.id,createdAt:new Date(i.created_at*1e3),linkedAccounts:[...o?[o]:[],...e?[e]:[],...a?[a]:[],...l?[l]:[],...n?[n]:[],...d?[d]:[]],email:e&&{address:e==null?void 0:e.address},phone:a&&{number:a==null?void 0:a.number},wallet:o&&{address:o.address,chainType:o.chainType,chainId:o.chainId,walletType:o.walletType},google:l&&{subject:l.subject,email:l.email,name:l.name},twitter:n&&{subject:n.subject,username:n.username,name:n.name},discord:d&&{subject:d.subject,username:d.username,email:d.email}}}var r4=()=>"/api/v1/sessions",n4=()=>"/api/v1/sessions/logout",s4=()=>"/api/v1/siwe/init",C4=()=>"/api/v1/siwe/authenticate",d4=()=>"/api/v1/passwordless/init",c4=()=>"/api/v1/passwordless/authenticate",p4=()=>"/api/v1/passwordless_sms/init",h4=()=>"/api/v1/passwordless_sms/authenticate",f4=()=>"/api/v1/oauth/init",u4=()=>"/api/v1/oauth/authenticate",m4=()=>"/api/v1/siwe/unlink",b4=()=>"/api/v1/passwordless/unlink",k4=()=>"/api/v1/passwordless_sms/unlink",M4=()=>"/api/v1/oauth/unlink";var K3=30,Z2="privy:token",L2="privy:refresh_token",U1=class{constructor(){this.authenticateOnce=new h1(async e=>this._authenticate(e)),this.refreshOnce=new h1(this._refresh.bind(this)),this.destroyOnce=new h1(this._destroy.bind(this))}get token(){let e=H.get(Z2);return typeof e=="string"?e:null}get refreshToken(){let e=H.get(L2);return typeof e=="string"?e:null}hasRefreshCredentials(){return typeof this.token=="string"&&typeof this.refreshToken=="string"}hasActiveToken(){let e=p1.parse(this.token);return e!==null&&!e.isExpired(K3)}authenticate(e){return this.authenticateOnce.execute(e)}refresh(){return this.refreshOnce.execute()}destroy(){return this.destroyOnce.execute()}async _authenticate(e){try{let{token:a,refresh_token:o,user:l}=await e.authenticate();return a&&this.storeToken(a),o&&this.storeRefreshToken(o),Q(l)}catch(a){throw console.warn("Error authenticating session"),V(a)}}async _refresh(){if(!this.api)throw new u("Session has no API instance");let e=this.token,a=this.refreshToken;if(!e||!a)return null;try{let o=await this.api.post(r4(),{refresh_token:a});return this.storeToken(o.data.token),this.storeRefreshToken(o.data.refresh_token),Q(o.data.user)}catch(o){throw V(o)}}async _destroy(){var e;try{await((e=this.api)==null?void 0:e.post(n4(),{})),this.destroyLocalState()}catch(a){throw console.warn("Error destroying session"),V(a)}}destroyLocalState(){this.storeToken(null),this.storeRefreshToken(null)}storeToken(e){typeof e=="string"?H.put(Z2,e):H.del(Z2)}storeRefreshToken(e){typeof e=="string"?H.put(L2,e):H.del(L2)}};import{getAddress as e5}from"@ethersproject/address";import w4 from"@walletconnect/web3-provider";import{ethers as Y3}from"ethers";var f1=class extends D{constructor(){super("Wallet timeout");this.type="wallet_error"}},F1=i=>{if(i instanceof D)return i;if((i==null?void 0:i.code)&&(i==null?void 0:i.reason)){let e=new u1(i);return i.code===Y3.errors.ACTION_REJECTED&&(e.details=a1.E4001_USER_REJECTED_REQUEST),e}return i!=null&&i.code?new u1(i):new D("Unknown connector error",i)},x2=class extends F{constructor(a,o,l){super(a);this.type="provider_error";this.code=o,this.data=l}},u1=class extends x2{constructor(a){var n,d,m;let o=a;super(o.message,o.code,o.data);let l=Object.values(a1).find(k=>k.eipCode===o.code);this.details=l||a1.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=a1.E32002_CONNECTION_ALREADY_PENDING:this.details=a1.E32002_REQUEST_ALREADY_PENDING:(m=o.message)!=null&&m.includes("Already processing")&&o.message.includes("eth_requestAccounts")&&(this.details=a1.E32002_WALLET_LOCKED))}},J3={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}},X3={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}},Q3={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}},a1={UNKNOWN_ERROR:{eipCode:0,message:"Unknown error",detail:"Unknown error",retryable:!0},...Q3,...X3},V1={...J3,...a1};var t5=3e4,E2=(i=new f1,e=t5)=>new Promise((a,o)=>setTimeout(()=>{o(i)},e)),m1=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 D(`A wallet request of type ${e.method} was made to a disconnected wallet: `);return Promise.race([this.walletProvider.request(e),E2()]).catch(a=>{throw console.log("throwing timeout"),F1(a)})}},b1=class extends m1{constructor(a){super(a)}},H1=class extends m1{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 i5}from"ethers";var g4=["metamask","coinbase_wallet","wallet_connect"];var A2="privy:wallet_type",P2=()=>{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},_2=()=>{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},B1=class{constructor(){this.walletType=null;this.getEthereumProvider=()=>this.ethProvider;this.createSiweMessage=(e,a,o,l,n,d,m)=>`${o} wants you to sign in with your Ethereum account:
|
|
1
|
+
import{useEffect as u2,useState as d1}from"react";import w2 from"axios";import U3 from"axios";var F=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}]`:""}`}},O1=class extends F{constructor(a,o,l,n){super(l,n);this.type=a;this.status=o}},u=class extends F{constructor(a,o){super(a,o);this.type="client_error"}};var D=class extends F{constructor(a,o){super(a,o);this.type="connector_error"}},T=i=>{if(i instanceof F)return i;if(!U3.isAxiosError(i))return V(i);if(!i.response)return new O1("api_error",null,i.message,i);let{type:e,message:a,error:o}=i.response.data;return new O1(e||"ApiError",i.response.status,a||o,i)},V=i=>i instanceof F?i:i instanceof Error?new u(i.message,i):new u(`Internal error: ${i}`);var i4="1.6.0-beta.15";var a4="https://api.privy.io/v0",o4=process.env.NEXT_PUBLIC_PRIVY_AUTH_URL||"https://auth.privy.io",M2="70f97dc579834350a5baec117b3c5ae3",l4=1e4,z=1200,g2=i4;var D1=class{constructor(e,a,o){this.appId=e,this.sdkVersion=g2,this.session=a,this.defaults=o}async get(e,a){try{return await w2.get(e,this.buildConfig({headers:{"Cache-Control":"no-cache"},...a}))}catch(o){throw T(o)}}async post(e,a,o){try{return await w2.post(e,a,this.buildConfig(o))}catch(l){throw T(l)}}async delete(e,a){try{return await w2.delete(e,this.buildConfig(a))}catch(o){throw T(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 V3 from"jwt-decode";var p1=class{static parse(e){try{return new p1(e)}catch{return null}}constructor(e){this.value=e,this._decoded=V3(e)}get subject(){return this._decoded.sub}get expiration(){return this._decoded.exp}isExpired(e=0){let a=Date.now(),o=(this.expiration-e)*1e3;return a>=o}};var h1=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 y2=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]}},v2=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 H3(){return typeof window<"u"&&window.localStorage?new v2:new y2}var H=H3();var B3=i=>{var e;return(e=i.map(a=>{if(a.type==="wallet")return{address:a.address,type:a.type,verifiedAt:new Date(a.verified_at*1e3),chainType:a.chain_type}}).filter(a=>a))==null?void 0:e[0]},G3=i=>{var e;return(e=i.map(a=>{if(a.type==="email")return{address:a.address,type:a.type,verifiedAt:new Date(a.verified_at*1e3)}}).filter(a=>a))==null?void 0:e[0]},j3=i=>{var e;return(e=i.map(a=>{if(a.type==="phone")return{number:a.phoneNumber,type:a.type,verifiedAt:new Date(a.verified_at*1e3)}}).filter(a=>a))==null?void 0:e[0]},z3=i=>{var e;return(e=i.map(a=>{if(a.type==="google_oauth")return{subject:a.subject,email:a.email,name:a.name,type:a.type,verifiedAt:new Date(a.verified_at*1e3)}}).filter(a=>a))==null?void 0:e[0]},$3=i=>{var e;return(e=i.map(a=>{if(a.type==="twitter_oauth")return{subject:a.subject,username:a.username,name:a.name,type:a.type,verifiedAt:new Date(a.verified_at*1e3)}}).filter(a=>a))==null?void 0:e[0]},q3=i=>{var e;return(e=i.map(a=>{if(a.type==="discord_oauth")return{subject:a.subject,username:a.username,email:a.email,type:a.type,verifiedAt:new Date(a.verified_at*1e3)}}).filter(a=>a))==null?void 0:e[0]};function Q(i){if(!i)return null;let e=G3(i.linked_accounts),a=j3(i.linked_accounts),o=B3(i.linked_accounts),l=z3(i.linked_accounts),n=$3(i.linked_accounts),d=q3(i.linked_accounts);return{id:i.id,createdAt:new Date(i.created_at*1e3),linkedAccounts:[...o?[o]:[],...e?[e]:[],...a?[a]:[],...l?[l]:[],...n?[n]:[],...d?[d]:[]],email:e&&{address:e==null?void 0:e.address},phone:a&&{number:a==null?void 0:a.number},wallet:o&&{address:o.address,chainType:o.chainType,chainId:o.chainId,walletType:o.walletType},google:l&&{subject:l.subject,email:l.email,name:l.name},twitter:n&&{subject:n.subject,username:n.username,name:n.name},discord:d&&{subject:d.subject,username:d.username,email:d.email}}}var r4=()=>"/api/v1/sessions",n4=()=>"/api/v1/sessions/logout",s4=()=>"/api/v1/siwe/init",C4=()=>"/api/v1/siwe/authenticate",d4=()=>"/api/v1/passwordless/init",c4=()=>"/api/v1/passwordless/authenticate",p4=()=>"/api/v1/passwordless_sms/init",h4=()=>"/api/v1/passwordless_sms/authenticate",f4=()=>"/api/v1/oauth/init",u4=()=>"/api/v1/oauth/authenticate",m4=()=>"/api/v1/siwe/unlink",b4=()=>"/api/v1/passwordless/unlink",k4=()=>"/api/v1/passwordless_sms/unlink",M4=()=>"/api/v1/oauth/unlink";var K3=30,Z2="privy:token",L2="privy:refresh_token",U1=class{constructor(){this.authenticateOnce=new h1(async e=>this._authenticate(e)),this.refreshOnce=new h1(this._refresh.bind(this)),this.destroyOnce=new h1(this._destroy.bind(this))}get token(){let e=H.get(Z2);return typeof e=="string"?e:null}get refreshToken(){let e=H.get(L2);return typeof e=="string"?e:null}hasRefreshCredentials(){return typeof this.token=="string"&&typeof this.refreshToken=="string"}hasActiveToken(){let e=p1.parse(this.token);return e!==null&&!e.isExpired(K3)}authenticate(e){return this.authenticateOnce.execute(e)}refresh(){return this.refreshOnce.execute()}destroy(){return this.destroyOnce.execute()}async _authenticate(e){try{let{token:a,refresh_token:o,user:l}=await e.authenticate();return a&&this.storeToken(a),o&&this.storeRefreshToken(o),Q(l)}catch(a){throw console.warn("Error authenticating session"),V(a)}}async _refresh(){if(!this.api)throw new u("Session has no API instance");let e=this.token,a=this.refreshToken;if(!e||!a)return null;try{let o=await this.api.post(r4(),{refresh_token:a});return this.storeToken(o.data.token),this.storeRefreshToken(o.data.refresh_token),Q(o.data.user)}catch(o){throw V(o)}}async _destroy(){var e;try{await((e=this.api)==null?void 0:e.post(n4(),{})),this.destroyLocalState()}catch(a){throw console.warn("Error destroying session"),V(a)}}destroyLocalState(){this.storeToken(null),this.storeRefreshToken(null)}storeToken(e){typeof e=="string"?H.put(Z2,e):H.del(Z2)}storeRefreshToken(e){typeof e=="string"?H.put(L2,e):H.del(L2)}};import{getAddress as e5}from"@ethersproject/address";import w4 from"@walletconnect/web3-provider";import{ethers as Y3}from"ethers";var f1=class extends D{constructor(){super("Wallet timeout");this.type="wallet_error"}},F1=i=>{if(i instanceof D)return i;if((i==null?void 0:i.code)&&(i==null?void 0:i.reason)){let e=new u1(i);return i.code===Y3.errors.ACTION_REJECTED&&(e.details=a1.E4001_USER_REJECTED_REQUEST),e}return i!=null&&i.code?new u1(i):new D("Unknown connector error",i)},x2=class extends F{constructor(a,o,l){super(a);this.type="provider_error";this.code=o,this.data=l}},u1=class extends x2{constructor(a){var n,d,m;let o=a;super(o.message,o.code,o.data);let l=Object.values(a1).find(k=>k.eipCode===o.code);this.details=l||a1.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=a1.E32002_CONNECTION_ALREADY_PENDING:this.details=a1.E32002_REQUEST_ALREADY_PENDING:(m=o.message)!=null&&m.includes("Already processing")&&o.message.includes("eth_requestAccounts")&&(this.details=a1.E32002_WALLET_LOCKED))}},J3={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}},X3={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}},Q3={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}},a1={UNKNOWN_ERROR:{eipCode:0,message:"Unknown error",detail:"Unknown error",retryable:!0},...Q3,...X3},V1={...J3,...a1};var t5=3e4,E2=(i=new f1,e=t5)=>new Promise((a,o)=>setTimeout(()=>{o(i)},e)),m1=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 D(`A wallet request of type ${e.method} was made to a disconnected wallet: `);return Promise.race([this.walletProvider.request(e),E2()]).catch(a=>{throw console.log("throwing timeout"),F1(a)})}},b1=class extends m1{constructor(a){super(a)}},H1=class extends m1{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 i5}from"ethers";var g4=["metamask","coinbase_wallet","wallet_connect"];var A2="privy:wallet_type",P2=()=>{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},_2=()=>{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},B1=class{constructor(){this.walletType=null;this.getEthereumProvider=()=>this.ethProvider;this.createSiweMessage=(e,a,o,l,n,d,m)=>`${o} wants you to sign in with your Ethereum account:
|
|
2
2
|
${a}
|
|
3
3
|
|
|
4
4
|
${m}
|