@privy-io/react-auth 1.10.1 → 1.10.2-beta.1
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 +2 -2
- package/dist/index.esm.js +2 -2
- package/package.json +1 -1
package/dist/index.cjs.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var c5=Object.create;var l2=Object.defineProperty;var p5=Object.getOwnPropertyDescriptor;var h5=Object.getOwnPropertyNames;var f5=Object.getPrototypeOf,u5=Object.prototype.hasOwnProperty;var m5=(i,e)=>{for(var o in e)l2(i,o,{get:e[o],enumerable:!0})},L4=(i,e,o,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of h5(e))!u5.call(i,r)&&r!==o&&l2(i,r,{get:()=>e[r],enumerable:!(a=p5(e,r))||a.enumerable});return i};var y=(i,e,o)=>(o=i!=null?c5(f5(i)):{},L4(e||!i||!i.__esModule?l2(o,"default",{value:i,enumerable:!0}):o,i)),b5=i=>L4(l2({},"__esModule",{value:!0}),i);var I6={};m5(I6,{PrivyProvider:()=>C5,VERSION:()=>C2,getAccessToken:()=>s5,usePrivy:()=>R});module.exports=b5(I6);var G=require("react");var p2=y(require("axios"));var A4=y(require("axios")),q=class extends Error{constructor(o,a){super(o);a instanceof Error&&(this.cause=a)}toString(){return`${this.type}: ${this.message}${this.cause?` [cause: ${this.cause}]`:""}`}},n2=class extends q{constructor(o,a,r,n){super(r,n);this.type=o;this.status=a}},d=class extends q{constructor(o,a){super(o,a);this.type="client_error"}};var B=class extends q{constructor(o,a){super(o,a);this.type="connector_error"}},P=i=>{if(i instanceof q)return i;if(!A4.default.isAxiosError(i))return j(i);if(!i.response)return new n2("api_error",null,i.message,i);let{type:e,message:o,error:a}=i.response.data;return new n2(e||"ApiError",i.response.status,o||a,i)},j=i=>i instanceof q?i:i instanceof Error?new d(i.message,i):new d(`Internal error: ${i}`);var E4="1.10.1";var _4="https://api.privy.io/v0",P4=process.env.NEXT_PUBLIC_PRIVY_AUTH_URL||"https://auth.privy.io",s2="4df5e2316331463a9130964bd6078dfa",S4=1e4,I1=1200,T4=365*24*60*60,C2=E4,I4="ES256",R4="privy.io",R1="privy:token",d2="privy:refresh_token",e1="privy:active_wallet",c2="privy:wallet_type",W4="walletconnect";var h2=class{constructor(e,o,a){this.appId=e,this.sdkVersion=C2,this.session=o,this.defaults=a}async get(e,o){try{return await p2.default.get(e,this.buildConfig({headers:{"Cache-Control":"no-cache"},...o}))}catch(a){throw P(a)}}async post(e,o,a){try{return await p2.default.post(e,o,this.buildConfig(a))}catch(r){throw P(r)}}async delete(e,o){try{return await p2.default.delete(e,this.buildConfig(o))}catch(a){throw P(a)}}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 W1=y(require("jose"));var f1=class{static parse(e){try{return new f1(e)}catch{return null}}constructor(e){this.value=e,this._decoded=W1.decodeJwt(e)}get subject(){return this._decoded.sub}get expiration(){return this._decoded.exp}get issuer(){return this._decoded.iss}get audience(){return this._decoded.aud}isExpired(e=0){let o=Date.now(),a=(this.expiration-e)*1e3;return o>=a}async isValid(e,o,a=0){let r=await W1.importSPKI(e,I4);try{return await W1.jwtVerify(this.value,r,{issuer:R4,audience:o,clockTolerance:a}),!0}catch{return!1}}};var u1=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 $2=class{constructor(){this._cache={}}get(e){return this._cache[e]}put(e,o){o!==void 0?this._cache[e]=o:this.del(e)}del(e){delete this._cache[e]}},K2=class{get(e){let o=localStorage.getItem(e);return o===null?void 0:JSON.parse(o)}put(e,o){o!==void 0?localStorage.setItem(e,JSON.stringify(o)):this.del(e)}del(e){localStorage.removeItem(e)}};function g5(){return typeof window<"u"&&window.localStorage?new K2:new $2}var Z=g5();function v1(i){return new Date(i*1e3)}function w5(i){return i.map(e=>{switch(e.type){case"wallet":return{address:e.address,type:e.type,verifiedAt:v1(e.verified_at),chainType:e.chain_type};case"email":return{address:e.address,type:e.type,verifiedAt:v1(e.verified_at)};case"phone":return{number:e.phoneNumber,type:e.type,verifiedAt:v1(e.verified_at)};case"google_oauth":return{subject:e.subject,email:e.email,name:e.name,type:e.type,verifiedAt:v1(e.verified_at)};case"twitter_oauth":return{subject:e.subject,username:e.username,name:e.name,type:e.type,verifiedAt:v1(e.verified_at)};case"discord_oauth":return{subject:e.subject,username:e.username,email:e.email,type:e.type,verifiedAt:v1(e.verified_at)};default:throw new d("Unrecognized account type")}})}function M5(i,e){return e.find(o=>o.type==="wallet"&&o.address===i)}function x1(i,e){return i.sort((o,a)=>a.verifiedAt.getTime()-o.verifiedAt.getTime()),i.find(o=>o.type===e)}function q1(i){let e=i.linkedAccounts.map(C=>C.type==="wallet"?C.address:null),a=Z.get(e1);if(!a||!e.includes(a)){Z.del(e1);let C=x1(i.linkedAccounts,"wallet");C&&(a=C.address,Z.put(e1,a))}let r=M5(a,i.linkedAccounts),n=Object.assign({},i);return n.wallet=r&&{address:r.address,chainType:r.chainType,chainId:r.chainId,walletType:r.walletType},n}function n1(i){if(!i)return null;let e=w5(i.linked_accounts),o=x1(e,"wallet"),a=x1(e,"email"),r=x1(e,"phone"),n=x1(e,"google_oauth"),C=x1(e,"twitter_oauth"),u=x1(e,"discord_oauth"),f={id:i.id,createdAt:v1(i.created_at),linkedAccounts:e,email:a&&{address:a==null?void 0:a.address},phone:r&&{number:r==null?void 0:r.number},wallet:o&&{address:o.address,chainType:o.chainType,chainId:o.chainId,walletType:o.walletType},google:n&&{subject:n.subject,email:n.email,name:n.name},twitter:C&&{subject:C.subject,username:C.username,name:C.name},discord:u&&{subject:u.subject,username:u.username,email:u.email}};return q1(f)}var O4=()=>"/api/v1/sessions",N4=()=>"/api/v1/sessions/logout",U4=()=>"/api/v1/sessions/fork",D4=()=>"/api/v1/siwe/init",F4=()=>"/api/v1/siwe/authenticate",V4=()=>"/api/v1/siwe/link",H4=()=>"/api/v1/passwordless/init",G4=()=>"/api/v1/passwordless/authenticate",B4=()=>"/api/v1/passwordless/link",j4=()=>"/api/v1/passwordless_sms/init",z4=()=>"/api/v1/passwordless_sms/authenticate",$4=()=>"/api/v1/passwordless_sms/link",K4=()=>"/api/v1/oauth/init",q4=()=>"/api/v1/oauth/authenticate",Y4=()=>"/api/v1/oauth/link",J4=()=>"/api/v1/siwe/unlink",X4=()=>"/api/v1/passwordless/unlink",Q4=()=>"/api/v1/passwordless_sms/unlink",t3=()=>"/api/v1/oauth/unlink";var y5=30,f2=class{constructor(){this.authenticateOnce=new u1(async e=>this._authenticate(e)),this.linkOnce=new u1(async e=>this._link(e)),this.refreshOnce=new u1(this._refresh.bind(this)),this.destroyOnce=new u1(this._destroy.bind(this)),this.forkSessionOnce=new u1(this._forkSession.bind(this))}get token(){try{let e=Z.get(R1);return typeof e=="string"?new f1(e).value:null}catch(e){return console.error(e),this.destroyLocalState(),null}}get refreshToken(){try{let e=Z.get(d2);return typeof e=="string"?e:null}catch(e){return console.error(e),this.destroyLocalState(),null}}hasRefreshCredentials(){return typeof this.token=="string"&&typeof this.refreshToken=="string"}hasActiveToken(){let e=f1.parse(this.token);return e!==null&&!e.isExpired(y5)}async hasValidToken(e,o,a=0){let r=f1.parse(this.token);return r!==null&&await r.isValid(e,o,a)}authenticate(e){return this.authenticateOnce.execute(e)}link(e){return this.linkOnce.execute(e)}refresh(){return this.refreshOnce.execute()}forkSession(){return this.forkSessionOnce.execute()}destroy(){return this.destroyOnce.execute()}async _authenticate(e){try{let{token:o,refresh_token:a,user:r}=await e.authenticate();return this.storeToken(o),this.storeRefreshToken(a),n1(r)}catch(o){throw console.warn("Error authenticating session"),j(o)}}async _link(e){try{let o=await e.link();return n1(o)}catch(o){throw console.warn("Error linking account"),j(o)}}async _refresh(){if(!this.api)throw new d("Session has no API instance");let e=this.token,o=this.refreshToken;if(!e||!o)return null;try{let a=await this.api.post(O4(),{refresh_token:o});return this.storeToken(a.data.token),this.storeRefreshToken(a.data.refresh_token),n1(a.data.user)}catch(a){throw j(a)}}async _destroy(){var e;try{await((e=this.api)==null?void 0:e.post(N4(),{refresh_token:this.refreshToken}))}catch{console.warn("Error destroying session")}this.destroyLocalState()}async _forkSession(){if(!this.api)throw new d("Session has no API instance");let e=this.refreshToken;try{let o=await this.api.post(U4(),{refresh_token:e});return this.storeToken(o.data.token),this.storeRefreshToken(o.data.refresh_token),o.data.new_session_refresh_token}catch(o){throw j(o)}}destroyLocalState(){this.storeToken(null),this.storeRefreshToken(null),Z.del(e1)}storeToken(e){typeof e=="string"?Z.put(R1,e):Z.del(R1)}storeRefreshToken(e){typeof e=="string"?Z.put(d2,e):Z.del(d2)}};var o3=require("@ethersproject/address"),J2=y(require("@walletconnect/web3-provider"));var e3=require("@ethersproject/logger");var O1=class extends B{constructor(){super("Wallet timeout");this.type="wallet_error"}},u2=i=>{if(i instanceof B)return i;if((i==null?void 0:i.code)&&(i==null?void 0:i.reason)){let e=new N1(i);return i.code===e3.ErrorCode.ACTION_REJECTED&&(e.details=Z1.E4001_USER_REJECTED_REQUEST),e}return i!=null&&i.code?new N1(i):new B("Unknown connector error",i)},q2=class extends q{constructor(o,a,r){super(o);this.type="provider_error";this.code=a,this.data=r}},N1=class extends q2{constructor(o){var n,C,u;let a=o;super(a.message,a.code,a.data);let r=Object.values(Z1).find(f=>f.eipCode===a.code);this.details=r||Z1.UNKNOWN_ERROR,a.code===-32002&&((n=a.message)!=null&&n.includes("already pending for origin")?(C=a.message)!=null&&C.includes("wallet_requestPermissions")?this.details=Z1.E32002_CONNECTION_ALREADY_PENDING:this.details=Z1.E32002_REQUEST_ALREADY_PENDING:(u=a.message)!=null&&u.includes("Already processing")&&a.message.includes("eth_requestAccounts")&&(this.details=Z1.E32002_WALLET_LOCKED))}},v5={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}},x5={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}},Z5={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}},Z1={UNKNOWN_ERROR:{eipCode:0,message:"Unknown error",detail:"Unknown error",retryable:!0},...Z5,...x5},m2={...v5,...Z1};var L5=12e4,Y2=(i=new O1,e=L5)=>new Promise((o,a)=>setTimeout(()=>{a(i)},e)),U1=class{constructor(e){this.removeListener=(e,o)=>{if(this.walletProvider)return this.walletProvider.removeListener(e,o)};this.setProvider=e=>{this.walletProvider=e,this._subscriptions.forEach(o=>{var a;(a=this.walletProvider)==null||a.on(o.eventName,o.listener)})};this.walletProvider=e,this._subscriptions=[]}on(e,o){if(this.walletProvider)return this.walletProvider.on(e,o);this._subscriptions.push({eventName:e,listener:o})}request(e){if(!this.walletProvider)throw new B(`A wallet request of type ${e.method} was made before setting a wallet provider.`);return Promise.race([this.walletProvider.request(e),Y2()]).catch(o=>{throw u2(o)})}},D1=class extends U1{constructor(o){super(o)}},b2=class extends U1{constructor(e){super(e)}sendAsync(e,o){throw new Error("sendAsync is no longer supported by EIP-1193. Use the request method instead.")}};var a3=require("@ethersproject/providers");var i3=["metamask","coinbase_wallet","wallet_connect"];var r3=y(require("@coinbase/wallet-sdk")),A5=()=>{let i=`https://mainnet.infura.io/v3/${s2}`,e=1;return new r3.default({appName:"Privy",darkMode:!1,headlessMode:!1}).makeWeb3Provider(i,e)},X2=()=>{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},g2=()=>{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},k2=class{constructor(){this.walletType=null;this.getEthereumProvider=()=>this.ethProvider;this.createSiweMessage=(e,o,a,r,n,C,u)=>`${a} wants you to sign in with your Ethereum account:
|
|
1
|
+
"use strict";var c5=Object.create;var l2=Object.defineProperty;var p5=Object.getOwnPropertyDescriptor;var h5=Object.getOwnPropertyNames;var f5=Object.getPrototypeOf,u5=Object.prototype.hasOwnProperty;var m5=(i,e)=>{for(var o in e)l2(i,o,{get:e[o],enumerable:!0})},L4=(i,e,o,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of h5(e))!u5.call(i,r)&&r!==o&&l2(i,r,{get:()=>e[r],enumerable:!(a=p5(e,r))||a.enumerable});return i};var y=(i,e,o)=>(o=i!=null?c5(f5(i)):{},L4(e||!i||!i.__esModule?l2(o,"default",{value:i,enumerable:!0}):o,i)),b5=i=>L4(l2({},"__esModule",{value:!0}),i);var I6={};m5(I6,{PrivyProvider:()=>C5,VERSION:()=>C2,getAccessToken:()=>s5,usePrivy:()=>R});module.exports=b5(I6);var G=require("react");var p2=y(require("axios"));var A4=y(require("axios")),q=class extends Error{constructor(o,a){super(o);a instanceof Error&&(this.cause=a)}toString(){return`${this.type}: ${this.message}${this.cause?` [cause: ${this.cause}]`:""}`}},n2=class extends q{constructor(o,a,r,n){super(r,n);this.type=o;this.status=a}},d=class extends q{constructor(o,a){super(o,a);this.type="client_error"}};var B=class extends q{constructor(o,a){super(o,a);this.type="connector_error"}},P=i=>{if(i instanceof q)return i;if(!A4.default.isAxiosError(i))return j(i);if(!i.response)return new n2("api_error",null,i.message,i);let{type:e,message:o,error:a}=i.response.data;return new n2(e||"ApiError",i.response.status,o||a,i)},j=i=>i instanceof q?i:i instanceof Error?new d(i.message,i):new d(`Internal error: ${i}`);var E4="1.10.2-beta.1";var _4="https://api.privy.io/v0",P4=process.env.NEXT_PUBLIC_PRIVY_AUTH_URL||"https://auth.privy.io",s2="4df5e2316331463a9130964bd6078dfa",S4=1e4,I1=1200,T4=365*24*60*60,C2=E4,I4="ES256",R4="privy.io",R1="privy:token",d2="privy:refresh_token",e1="privy:active_wallet",c2="privy:wallet_type",W4="walletconnect";var h2=class{constructor(e,o,a){this.appId=e,this.sdkVersion=C2,this.session=o,this.defaults=a}async get(e,o){try{return await p2.default.get(e,this.buildConfig({headers:{"Cache-Control":"no-cache"},...o}))}catch(a){throw P(a)}}async post(e,o,a){try{return await p2.default.post(e,o,this.buildConfig(a))}catch(r){throw P(r)}}async delete(e,o){try{return await p2.default.delete(e,this.buildConfig(o))}catch(a){throw P(a)}}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 W1=y(require("jose"));var f1=class{static parse(e){try{return new f1(e)}catch{return null}}constructor(e){this.value=e,this._decoded=W1.decodeJwt(e)}get subject(){return this._decoded.sub}get expiration(){return this._decoded.exp}get issuer(){return this._decoded.iss}get audience(){return this._decoded.aud}isExpired(e=0){let o=Date.now(),a=(this.expiration-e)*1e3;return o>=a}async isValid(e,o,a=0){let r=await W1.importSPKI(e,I4);try{return await W1.jwtVerify(this.value,r,{issuer:R4,audience:o,clockTolerance:a}),!0}catch{return!1}}};var u1=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 $2=class{constructor(){this._cache={}}get(e){return this._cache[e]}put(e,o){o!==void 0?this._cache[e]=o:this.del(e)}del(e){delete this._cache[e]}},K2=class{get(e){let o=localStorage.getItem(e);return o===null?void 0:JSON.parse(o)}put(e,o){o!==void 0?localStorage.setItem(e,JSON.stringify(o)):this.del(e)}del(e){localStorage.removeItem(e)}};function g5(){return typeof window<"u"&&window.localStorage?new K2:new $2}var Z=g5();function v1(i){return new Date(i*1e3)}function w5(i){return i.map(e=>{switch(e.type){case"wallet":return{address:e.address,type:e.type,verifiedAt:v1(e.verified_at),chainType:e.chain_type};case"email":return{address:e.address,type:e.type,verifiedAt:v1(e.verified_at)};case"phone":return{number:e.phoneNumber,type:e.type,verifiedAt:v1(e.verified_at)};case"google_oauth":return{subject:e.subject,email:e.email,name:e.name,type:e.type,verifiedAt:v1(e.verified_at)};case"twitter_oauth":return{subject:e.subject,username:e.username,name:e.name,type:e.type,verifiedAt:v1(e.verified_at)};case"discord_oauth":return{subject:e.subject,username:e.username,email:e.email,type:e.type,verifiedAt:v1(e.verified_at)};default:throw new d("Unrecognized account type")}})}function M5(i,e){return e.find(o=>o.type==="wallet"&&o.address===i)}function x1(i,e){return i.sort((o,a)=>a.verifiedAt.getTime()-o.verifiedAt.getTime()),i.find(o=>o.type===e)}function q1(i){let e=i.linkedAccounts.map(C=>C.type==="wallet"?C.address:null),a=Z.get(e1);if(!a||!e.includes(a)){Z.del(e1);let C=x1(i.linkedAccounts,"wallet");C&&(a=C.address,Z.put(e1,a))}let r=M5(a,i.linkedAccounts),n=Object.assign({},i);return n.wallet=r&&{address:r.address,chainType:r.chainType,chainId:r.chainId,walletType:r.walletType},n}function n1(i){if(!i)return null;let e=w5(i.linked_accounts),o=x1(e,"wallet"),a=x1(e,"email"),r=x1(e,"phone"),n=x1(e,"google_oauth"),C=x1(e,"twitter_oauth"),u=x1(e,"discord_oauth"),f={id:i.id,createdAt:v1(i.created_at),linkedAccounts:e,email:a&&{address:a==null?void 0:a.address},phone:r&&{number:r==null?void 0:r.number},wallet:o&&{address:o.address,chainType:o.chainType,chainId:o.chainId,walletType:o.walletType},google:n&&{subject:n.subject,email:n.email,name:n.name},twitter:C&&{subject:C.subject,username:C.username,name:C.name},discord:u&&{subject:u.subject,username:u.username,email:u.email}};return q1(f)}var O4=()=>"/api/v1/sessions",N4=()=>"/api/v1/sessions/logout",U4=()=>"/api/v1/sessions/fork",D4=()=>"/api/v1/siwe/init",F4=()=>"/api/v1/siwe/authenticate",V4=()=>"/api/v1/siwe/link",H4=()=>"/api/v1/passwordless/init",G4=()=>"/api/v1/passwordless/authenticate",B4=()=>"/api/v1/passwordless/link",j4=()=>"/api/v1/passwordless_sms/init",z4=()=>"/api/v1/passwordless_sms/authenticate",$4=()=>"/api/v1/passwordless_sms/link",K4=()=>"/api/v1/oauth/init",q4=()=>"/api/v1/oauth/authenticate",Y4=()=>"/api/v1/oauth/link",J4=()=>"/api/v1/siwe/unlink",X4=()=>"/api/v1/passwordless/unlink",Q4=()=>"/api/v1/passwordless_sms/unlink",t3=()=>"/api/v1/oauth/unlink";var y5=30,f2=class{constructor(){this.authenticateOnce=new u1(async e=>this._authenticate(e)),this.linkOnce=new u1(async e=>this._link(e)),this.refreshOnce=new u1(this._refresh.bind(this)),this.destroyOnce=new u1(this._destroy.bind(this)),this.forkSessionOnce=new u1(this._forkSession.bind(this))}get token(){try{let e=Z.get(R1);return typeof e=="string"?new f1(e).value:null}catch(e){return console.error(e),this.destroyLocalState(),null}}get refreshToken(){try{let e=Z.get(d2);return typeof e=="string"?e:null}catch(e){return console.error(e),this.destroyLocalState(),null}}hasRefreshCredentials(){return typeof this.token=="string"&&typeof this.refreshToken=="string"}hasActiveToken(){let e=f1.parse(this.token);return e!==null&&!e.isExpired(y5)}async hasValidToken(e,o,a=0){let r=f1.parse(this.token);return r!==null&&await r.isValid(e,o,a)}authenticate(e){return this.authenticateOnce.execute(e)}link(e){return this.linkOnce.execute(e)}refresh(){return this.refreshOnce.execute()}forkSession(){return this.forkSessionOnce.execute()}destroy(){return this.destroyOnce.execute()}async _authenticate(e){try{let{token:o,refresh_token:a,user:r}=await e.authenticate();return this.storeToken(o),this.storeRefreshToken(a),n1(r)}catch(o){throw console.warn("Error authenticating session"),j(o)}}async _link(e){try{let o=await e.link();return n1(o)}catch(o){throw console.warn("Error linking account"),j(o)}}async _refresh(){if(!this.api)throw new d("Session has no API instance");let e=this.token,o=this.refreshToken;if(!e||!o)return null;try{let a=await this.api.post(O4(),{refresh_token:o});return this.storeToken(a.data.token),this.storeRefreshToken(a.data.refresh_token),n1(a.data.user)}catch(a){throw j(a)}}async _destroy(){var e;try{await((e=this.api)==null?void 0:e.post(N4(),{refresh_token:this.refreshToken}))}catch{console.warn("Error destroying session")}this.destroyLocalState()}async _forkSession(){if(!this.api)throw new d("Session has no API instance");let e=this.refreshToken;try{let o=await this.api.post(U4(),{refresh_token:e});return this.storeToken(o.data.token),this.storeRefreshToken(o.data.refresh_token),o.data.new_session_refresh_token}catch(o){throw j(o)}}destroyLocalState(){this.storeToken(null),this.storeRefreshToken(null),Z.del(e1)}storeToken(e){typeof e=="string"?Z.put(R1,e):Z.del(R1)}storeRefreshToken(e){typeof e=="string"?Z.put(d2,e):Z.del(d2)}};var o3=require("@ethersproject/address"),J2=y(require("@walletconnect/web3-provider"));var e3=require("@ethersproject/logger");var O1=class extends B{constructor(){super("Wallet timeout");this.type="wallet_error"}},u2=i=>{if(i instanceof B)return i;if((i==null?void 0:i.code)&&(i==null?void 0:i.reason)){let e=new N1(i);return i.code===e3.ErrorCode.ACTION_REJECTED&&(e.details=Z1.E4001_USER_REJECTED_REQUEST),e}return i!=null&&i.code?new N1(i):new B("Unknown connector error",i)},q2=class extends q{constructor(o,a,r){super(o);this.type="provider_error";this.code=a,this.data=r}},N1=class extends q2{constructor(o){var n,C,u;let a=o;super(a.message,a.code,a.data);let r=Object.values(Z1).find(f=>f.eipCode===a.code);this.details=r||Z1.UNKNOWN_ERROR,a.code===-32002&&((n=a.message)!=null&&n.includes("already pending for origin")?(C=a.message)!=null&&C.includes("wallet_requestPermissions")?this.details=Z1.E32002_CONNECTION_ALREADY_PENDING:this.details=Z1.E32002_REQUEST_ALREADY_PENDING:(u=a.message)!=null&&u.includes("Already processing")&&a.message.includes("eth_requestAccounts")&&(this.details=Z1.E32002_WALLET_LOCKED))}},v5={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}},x5={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}},Z5={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}},Z1={UNKNOWN_ERROR:{eipCode:0,message:"Unknown error",detail:"Unknown error",retryable:!0},...Z5,...x5},m2={...v5,...Z1};var L5=12e4,Y2=(i=new O1,e=L5)=>new Promise((o,a)=>setTimeout(()=>{a(i)},e)),U1=class{constructor(e){this.removeListener=(e,o)=>{if(this.walletProvider)return this.walletProvider.removeListener(e,o)};this.setProvider=e=>{this.walletProvider=e,this._subscriptions.forEach(o=>{var a;(a=this.walletProvider)==null||a.on(o.eventName,o.listener)})};this.walletProvider=e,this._subscriptions=[]}on(e,o){if(this.walletProvider)return this.walletProvider.on(e,o);this._subscriptions.push({eventName:e,listener:o})}request(e){if(!this.walletProvider)throw new B(`A wallet request of type ${e.method} was made before setting a wallet provider.`);return Promise.race([this.walletProvider.request(e),Y2()]).catch(o=>{throw u2(o)})}},D1=class extends U1{constructor(o){super(o)}},b2=class extends U1{constructor(e){super(e)}sendAsync(e,o){throw new Error("sendAsync is no longer supported by EIP-1193. Use the request method instead.")}};var a3=require("@ethersproject/providers");var i3=["metamask","coinbase_wallet","wallet_connect"];var r3=y(require("@coinbase/wallet-sdk")),A5=()=>{let i=`https://mainnet.infura.io/v3/${s2}`,e=1;return new r3.default({appName:"Privy",darkMode:!1,headlessMode:!1}).makeWeb3Provider(i,e)},X2=()=>{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},g2=()=>{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},k2=class{constructor(){this.walletType=null;this.getEthereumProvider=()=>this.ethProvider;this.createSiweMessage=(e,o,a,r,n,C,u)=>`${a} wants you to sign in with your Ethereum account:
|
|
2
2
|
${o}
|
|
3
3
|
|
|
4
4
|
${u}
|
|
@@ -177,7 +177,7 @@ Resources:
|
|
|
177
177
|
&& > a {
|
|
178
178
|
color: var(--primary-color);
|
|
179
179
|
}
|
|
180
|
-
`;function m3(i){let{privacyPolicyUrl:e,termsAndConditionsUrl:o}=i.app,a
|
|
180
|
+
`;function m3(i){let{privacyPolicyUrl:e,termsAndConditionsUrl:o}=i.app,a=!!e,r=!!o,n=a&&r;return!a&&!r?null:(0,$.jsxs)(R5,{children:["By logging in I agree to the"," ",r&&(0,$.jsx)("a",{href:o,target:"_blank",children:n?"Terms":"Terms of Service"}),n&&" & ",a&&(0,$.jsx)("a",{href:e,target:"_blank",children:"Privacy Policy"})]})}var o1=({protectedByPrivy:i})=>(0,$.jsx)(C1,{hideOnMobile:i,children:i?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(u3,{}),(0,$.jsx)("span",{children:(0,$.jsx)("a",{href:"https://www.privy.io/",target:"_blank",children:"Protected by Privy"})})]}):null}),C1=d4.default.div`
|
|
181
181
|
height: 20px;
|
|
182
182
|
font-size: 12px;
|
|
183
183
|
display: flex;
|
package/dist/index.esm.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{useEffect as S2,useState as n1}from"react";import N2 from"axios";import n5 from"axios";var F=class extends Error{constructor(o,a){super(o);a instanceof Error&&(this.cause=a)}toString(){return`${this.type}: ${this.message}${this.cause?` [cause: ${this.cause}]`:""}`}},$1=class extends F{constructor(o,a,r,l){super(r,l);this.type=o;this.status=a}},C=class extends F{constructor(o,a){super(o,a);this.type="client_error"}};var N=class extends F{constructor(o,a){super(o,a);this.type="connector_error"}},L=i=>{if(i instanceof F)return i;if(!n5.isAxiosError(i))return U(i);if(!i.response)return new $1("api_error",null,i.message,i);let{type:e,message:o,error:a}=i.response.data;return new $1(e||"ApiError",i.response.status,o||a,i)},U=i=>i instanceof F?i:i instanceof Error?new C(i.message,i):new C(`Internal error: ${i}`);var h4="1.10.1";var f4="https://api.privy.io/v0",u4=process.env.NEXT_PUBLIC_PRIVY_AUTH_URL||"https://auth.privy.io",K1="4df5e2316331463a9130964bd6078dfa",m4=1e4,k1=1200,b4=365*24*60*60,O2=h4,k4="ES256",g4="privy.io",g1="privy:token",q1="privy:refresh_token",B="privy:active_wallet",Y1="privy:wallet_type",w4="walletconnect";var J1=class{constructor(e,o,a){this.appId=e,this.sdkVersion=O2,this.session=o,this.defaults=a}async get(e,o){try{return await N2.get(e,this.buildConfig({headers:{"Cache-Control":"no-cache"},...o}))}catch(a){throw L(a)}}async post(e,o,a){try{return await N2.post(e,o,this.buildConfig(a))}catch(r){throw L(r)}}async delete(e,o){try{return await N2.delete(e,this.buildConfig(o))}catch(a){throw L(a)}}buildConfig(e){return e=e||{},e.headers=e.headers||{},e.headers["privy-app-id"]=this.appId,e.headers["privy-client"]=`react-auth:${this.sdkVersion}`,this.session.token!==null&&(e.headers.authorization=`Bearer ${this.session.token}`),{...this.defaults,...e}}};import*as w1 from"jose";var t1=class{static parse(e){try{return new t1(e)}catch{return null}}constructor(e){this.value=e,this._decoded=w1.decodeJwt(e)}get subject(){return this._decoded.sub}get expiration(){return this._decoded.exp}get issuer(){return this._decoded.iss}get audience(){return this._decoded.aud}isExpired(e=0){let o=Date.now(),a=(this.expiration-e)*1e3;return o>=a}async isValid(e,o,a=0){let r=await w1.importSPKI(e,k4);try{return await w1.jwtVerify(this.value,r,{issuer:g4,audience:o,clockTolerance:a}),!0}catch{return!1}}};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 U2=class{constructor(){this._cache={}}get(e){return this._cache[e]}put(e,o){o!==void 0?this._cache[e]=o:this.del(e)}del(e){delete this._cache[e]}},D2=class{get(e){let o=localStorage.getItem(e);return o===null?void 0:JSON.parse(o)}put(e,o){o!==void 0?localStorage.setItem(e,JSON.stringify(o)):this.del(e)}del(e){localStorage.removeItem(e)}};function C5(){return typeof window<"u"&&window.localStorage?new D2:new U2}var y=C5();function s1(i){return new Date(i*1e3)}function d5(i){return i.map(e=>{switch(e.type){case"wallet":return{address:e.address,type:e.type,verifiedAt:s1(e.verified_at),chainType:e.chain_type};case"email":return{address:e.address,type:e.type,verifiedAt:s1(e.verified_at)};case"phone":return{number:e.phoneNumber,type:e.type,verifiedAt:s1(e.verified_at)};case"google_oauth":return{subject:e.subject,email:e.email,name:e.name,type:e.type,verifiedAt:s1(e.verified_at)};case"twitter_oauth":return{subject:e.subject,username:e.username,name:e.name,type:e.type,verifiedAt:s1(e.verified_at)};case"discord_oauth":return{subject:e.subject,username:e.username,email:e.email,type:e.type,verifiedAt:s1(e.verified_at)};default:throw new C("Unrecognized account type")}})}function c5(i,e){return e.find(o=>o.type==="wallet"&&o.address===i)}function C1(i,e){return i.sort((o,a)=>a.verifiedAt.getTime()-o.verifiedAt.getTime()),i.find(o=>o.type===e)}function N1(i){let e=i.linkedAccounts.map(s=>s.type==="wallet"?s.address:null),a=y.get(B);if(!a||!e.includes(a)){y.del(B);let s=C1(i.linkedAccounts,"wallet");s&&(a=s.address,y.put(B,a))}let r=c5(a,i.linkedAccounts),l=Object.assign({},i);return l.wallet=r&&{address:r.address,chainType:r.chainType,chainId:r.chainId,walletType:r.walletType},l}function z(i){if(!i)return null;let e=d5(i.linked_accounts),o=C1(e,"wallet"),a=C1(e,"email"),r=C1(e,"phone"),l=C1(e,"google_oauth"),s=C1(e,"twitter_oauth"),f=C1(e,"discord_oauth"),h={id:i.id,createdAt:s1(i.created_at),linkedAccounts:e,email:a&&{address:a==null?void 0:a.address},phone:r&&{number:r==null?void 0:r.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:f&&{subject:f.subject,username:f.username,email:f.email}};return N1(h)}var M4=()=>"/api/v1/sessions",y4=()=>"/api/v1/sessions/logout",v4=()=>"/api/v1/sessions/fork",x4=()=>"/api/v1/siwe/init",Z4=()=>"/api/v1/siwe/authenticate",L4=()=>"/api/v1/siwe/link",A4=()=>"/api/v1/passwordless/init",E4=()=>"/api/v1/passwordless/authenticate",_4=()=>"/api/v1/passwordless/link",P4=()=>"/api/v1/passwordless_sms/init",S4=()=>"/api/v1/passwordless_sms/authenticate",T4=()=>"/api/v1/passwordless_sms/link",I4=()=>"/api/v1/oauth/init",R4=()=>"/api/v1/oauth/authenticate",W4=()=>"/api/v1/oauth/link",O4=()=>"/api/v1/siwe/unlink",N4=()=>"/api/v1/passwordless/unlink",U4=()=>"/api/v1/passwordless_sms/unlink",D4=()=>"/api/v1/oauth/unlink";var p5=30,X1=class{constructor(){this.authenticateOnce=new e1(async e=>this._authenticate(e)),this.linkOnce=new e1(async e=>this._link(e)),this.refreshOnce=new e1(this._refresh.bind(this)),this.destroyOnce=new e1(this._destroy.bind(this)),this.forkSessionOnce=new e1(this._forkSession.bind(this))}get token(){try{let e=y.get(g1);return typeof e=="string"?new t1(e).value:null}catch(e){return console.error(e),this.destroyLocalState(),null}}get refreshToken(){try{let e=y.get(q1);return typeof e=="string"?e:null}catch(e){return console.error(e),this.destroyLocalState(),null}}hasRefreshCredentials(){return typeof this.token=="string"&&typeof this.refreshToken=="string"}hasActiveToken(){let e=t1.parse(this.token);return e!==null&&!e.isExpired(p5)}async hasValidToken(e,o,a=0){let r=t1.parse(this.token);return r!==null&&await r.isValid(e,o,a)}authenticate(e){return this.authenticateOnce.execute(e)}link(e){return this.linkOnce.execute(e)}refresh(){return this.refreshOnce.execute()}forkSession(){return this.forkSessionOnce.execute()}destroy(){return this.destroyOnce.execute()}async _authenticate(e){try{let{token:o,refresh_token:a,user:r}=await e.authenticate();return this.storeToken(o),this.storeRefreshToken(a),z(r)}catch(o){throw console.warn("Error authenticating session"),U(o)}}async _link(e){try{let o=await e.link();return z(o)}catch(o){throw console.warn("Error linking account"),U(o)}}async _refresh(){if(!this.api)throw new C("Session has no API instance");let e=this.token,o=this.refreshToken;if(!e||!o)return null;try{let a=await this.api.post(M4(),{refresh_token:o});return this.storeToken(a.data.token),this.storeRefreshToken(a.data.refresh_token),z(a.data.user)}catch(a){throw U(a)}}async _destroy(){var e;try{await((e=this.api)==null?void 0:e.post(y4(),{refresh_token:this.refreshToken}))}catch{console.warn("Error destroying session")}this.destroyLocalState()}async _forkSession(){if(!this.api)throw new C("Session has no API instance");let e=this.refreshToken;try{let o=await this.api.post(v4(),{refresh_token:e});return this.storeToken(o.data.token),this.storeRefreshToken(o.data.refresh_token),o.data.new_session_refresh_token}catch(o){throw U(o)}}destroyLocalState(){this.storeToken(null),this.storeRefreshToken(null),y.del(B)}storeToken(e){typeof e=="string"?y.put(g1,e):y.del(g1)}storeRefreshToken(e){typeof e=="string"?y.put(q1,e):y.del(q1)}};import{getAddress as k5}from"@ethersproject/address";import V4 from"@walletconnect/web3-provider";import{ErrorCode as h5}from"@ethersproject/logger";var M1=class extends N{constructor(){super("Wallet timeout");this.type="wallet_error"}},Q1=i=>{if(i instanceof N)return i;if((i==null?void 0:i.code)&&(i==null?void 0:i.reason)){let e=new y1(i);return i.code===h5.ACTION_REJECTED&&(e.details=d1.E4001_USER_REJECTED_REQUEST),e}return i!=null&&i.code?new y1(i):new N("Unknown connector error",i)},F2=class extends F{constructor(o,a,r){super(o);this.type="provider_error";this.code=a,this.data=r}},y1=class extends F2{constructor(o){var l,s,f;let a=o;super(a.message,a.code,a.data);let r=Object.values(d1).find(h=>h.eipCode===a.code);this.details=r||d1.UNKNOWN_ERROR,a.code===-32002&&((l=a.message)!=null&&l.includes("already pending for origin")?(s=a.message)!=null&&s.includes("wallet_requestPermissions")?this.details=d1.E32002_CONNECTION_ALREADY_PENDING:this.details=d1.E32002_REQUEST_ALREADY_PENDING:(f=a.message)!=null&&f.includes("Already processing")&&a.message.includes("eth_requestAccounts")&&(this.details=d1.E32002_WALLET_LOCKED))}},f5={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}},u5={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}},m5={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}},d1={UNKNOWN_ERROR:{eipCode:0,message:"Unknown error",detail:"Unknown error",retryable:!0},...m5,...u5},t2={...f5,...d1};var b5=12e4,V2=(i=new M1,e=b5)=>new Promise((o,a)=>setTimeout(()=>{a(i)},e)),v1=class{constructor(e){this.removeListener=(e,o)=>{if(this.walletProvider)return this.walletProvider.removeListener(e,o)};this.setProvider=e=>{this.walletProvider=e,this._subscriptions.forEach(o=>{var a;(a=this.walletProvider)==null||a.on(o.eventName,o.listener)})};this.walletProvider=e,this._subscriptions=[]}on(e,o){if(this.walletProvider)return this.walletProvider.on(e,o);this._subscriptions.push({eventName:e,listener:o})}request(e){if(!this.walletProvider)throw new N(`A wallet request of type ${e.method} was made before setting a wallet provider.`);return Promise.race([this.walletProvider.request(e),V2()]).catch(o=>{throw Q1(o)})}},x1=class extends v1{constructor(o){super(o)}},e2=class extends v1{constructor(e){super(e)}sendAsync(e,o){throw new Error("sendAsync is no longer supported by EIP-1193. Use the request method instead.")}};import{Web3Provider as g5}from"@ethersproject/providers";var F4=["metamask","coinbase_wallet","wallet_connect"];import w5 from"@coinbase/wallet-sdk";var M5=()=>{let i=`https://mainnet.infura.io/v3/${K1}`,e=1;return new w5({appName:"Privy",darkMode:!1,headlessMode:!1}).makeWeb3Provider(i,e)},H2=()=>{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},o2=()=>{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},i2=class{constructor(){this.walletType=null;this.getEthereumProvider=()=>this.ethProvider;this.createSiweMessage=(e,o,a,r,l,s,f)=>`${a} wants you to sign in with your Ethereum account:
|
|
1
|
+
import{useEffect as S2,useState as n1}from"react";import N2 from"axios";import n5 from"axios";var F=class extends Error{constructor(o,a){super(o);a instanceof Error&&(this.cause=a)}toString(){return`${this.type}: ${this.message}${this.cause?` [cause: ${this.cause}]`:""}`}},$1=class extends F{constructor(o,a,r,l){super(r,l);this.type=o;this.status=a}},C=class extends F{constructor(o,a){super(o,a);this.type="client_error"}};var N=class extends F{constructor(o,a){super(o,a);this.type="connector_error"}},L=i=>{if(i instanceof F)return i;if(!n5.isAxiosError(i))return U(i);if(!i.response)return new $1("api_error",null,i.message,i);let{type:e,message:o,error:a}=i.response.data;return new $1(e||"ApiError",i.response.status,o||a,i)},U=i=>i instanceof F?i:i instanceof Error?new C(i.message,i):new C(`Internal error: ${i}`);var h4="1.10.2-beta.1";var f4="https://api.privy.io/v0",u4=process.env.NEXT_PUBLIC_PRIVY_AUTH_URL||"https://auth.privy.io",K1="4df5e2316331463a9130964bd6078dfa",m4=1e4,k1=1200,b4=365*24*60*60,O2=h4,k4="ES256",g4="privy.io",g1="privy:token",q1="privy:refresh_token",B="privy:active_wallet",Y1="privy:wallet_type",w4="walletconnect";var J1=class{constructor(e,o,a){this.appId=e,this.sdkVersion=O2,this.session=o,this.defaults=a}async get(e,o){try{return await N2.get(e,this.buildConfig({headers:{"Cache-Control":"no-cache"},...o}))}catch(a){throw L(a)}}async post(e,o,a){try{return await N2.post(e,o,this.buildConfig(a))}catch(r){throw L(r)}}async delete(e,o){try{return await N2.delete(e,this.buildConfig(o))}catch(a){throw L(a)}}buildConfig(e){return e=e||{},e.headers=e.headers||{},e.headers["privy-app-id"]=this.appId,e.headers["privy-client"]=`react-auth:${this.sdkVersion}`,this.session.token!==null&&(e.headers.authorization=`Bearer ${this.session.token}`),{...this.defaults,...e}}};import*as w1 from"jose";var t1=class{static parse(e){try{return new t1(e)}catch{return null}}constructor(e){this.value=e,this._decoded=w1.decodeJwt(e)}get subject(){return this._decoded.sub}get expiration(){return this._decoded.exp}get issuer(){return this._decoded.iss}get audience(){return this._decoded.aud}isExpired(e=0){let o=Date.now(),a=(this.expiration-e)*1e3;return o>=a}async isValid(e,o,a=0){let r=await w1.importSPKI(e,k4);try{return await w1.jwtVerify(this.value,r,{issuer:g4,audience:o,clockTolerance:a}),!0}catch{return!1}}};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 U2=class{constructor(){this._cache={}}get(e){return this._cache[e]}put(e,o){o!==void 0?this._cache[e]=o:this.del(e)}del(e){delete this._cache[e]}},D2=class{get(e){let o=localStorage.getItem(e);return o===null?void 0:JSON.parse(o)}put(e,o){o!==void 0?localStorage.setItem(e,JSON.stringify(o)):this.del(e)}del(e){localStorage.removeItem(e)}};function C5(){return typeof window<"u"&&window.localStorage?new D2:new U2}var y=C5();function s1(i){return new Date(i*1e3)}function d5(i){return i.map(e=>{switch(e.type){case"wallet":return{address:e.address,type:e.type,verifiedAt:s1(e.verified_at),chainType:e.chain_type};case"email":return{address:e.address,type:e.type,verifiedAt:s1(e.verified_at)};case"phone":return{number:e.phoneNumber,type:e.type,verifiedAt:s1(e.verified_at)};case"google_oauth":return{subject:e.subject,email:e.email,name:e.name,type:e.type,verifiedAt:s1(e.verified_at)};case"twitter_oauth":return{subject:e.subject,username:e.username,name:e.name,type:e.type,verifiedAt:s1(e.verified_at)};case"discord_oauth":return{subject:e.subject,username:e.username,email:e.email,type:e.type,verifiedAt:s1(e.verified_at)};default:throw new C("Unrecognized account type")}})}function c5(i,e){return e.find(o=>o.type==="wallet"&&o.address===i)}function C1(i,e){return i.sort((o,a)=>a.verifiedAt.getTime()-o.verifiedAt.getTime()),i.find(o=>o.type===e)}function N1(i){let e=i.linkedAccounts.map(s=>s.type==="wallet"?s.address:null),a=y.get(B);if(!a||!e.includes(a)){y.del(B);let s=C1(i.linkedAccounts,"wallet");s&&(a=s.address,y.put(B,a))}let r=c5(a,i.linkedAccounts),l=Object.assign({},i);return l.wallet=r&&{address:r.address,chainType:r.chainType,chainId:r.chainId,walletType:r.walletType},l}function z(i){if(!i)return null;let e=d5(i.linked_accounts),o=C1(e,"wallet"),a=C1(e,"email"),r=C1(e,"phone"),l=C1(e,"google_oauth"),s=C1(e,"twitter_oauth"),f=C1(e,"discord_oauth"),h={id:i.id,createdAt:s1(i.created_at),linkedAccounts:e,email:a&&{address:a==null?void 0:a.address},phone:r&&{number:r==null?void 0:r.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:f&&{subject:f.subject,username:f.username,email:f.email}};return N1(h)}var M4=()=>"/api/v1/sessions",y4=()=>"/api/v1/sessions/logout",v4=()=>"/api/v1/sessions/fork",x4=()=>"/api/v1/siwe/init",Z4=()=>"/api/v1/siwe/authenticate",L4=()=>"/api/v1/siwe/link",A4=()=>"/api/v1/passwordless/init",E4=()=>"/api/v1/passwordless/authenticate",_4=()=>"/api/v1/passwordless/link",P4=()=>"/api/v1/passwordless_sms/init",S4=()=>"/api/v1/passwordless_sms/authenticate",T4=()=>"/api/v1/passwordless_sms/link",I4=()=>"/api/v1/oauth/init",R4=()=>"/api/v1/oauth/authenticate",W4=()=>"/api/v1/oauth/link",O4=()=>"/api/v1/siwe/unlink",N4=()=>"/api/v1/passwordless/unlink",U4=()=>"/api/v1/passwordless_sms/unlink",D4=()=>"/api/v1/oauth/unlink";var p5=30,X1=class{constructor(){this.authenticateOnce=new e1(async e=>this._authenticate(e)),this.linkOnce=new e1(async e=>this._link(e)),this.refreshOnce=new e1(this._refresh.bind(this)),this.destroyOnce=new e1(this._destroy.bind(this)),this.forkSessionOnce=new e1(this._forkSession.bind(this))}get token(){try{let e=y.get(g1);return typeof e=="string"?new t1(e).value:null}catch(e){return console.error(e),this.destroyLocalState(),null}}get refreshToken(){try{let e=y.get(q1);return typeof e=="string"?e:null}catch(e){return console.error(e),this.destroyLocalState(),null}}hasRefreshCredentials(){return typeof this.token=="string"&&typeof this.refreshToken=="string"}hasActiveToken(){let e=t1.parse(this.token);return e!==null&&!e.isExpired(p5)}async hasValidToken(e,o,a=0){let r=t1.parse(this.token);return r!==null&&await r.isValid(e,o,a)}authenticate(e){return this.authenticateOnce.execute(e)}link(e){return this.linkOnce.execute(e)}refresh(){return this.refreshOnce.execute()}forkSession(){return this.forkSessionOnce.execute()}destroy(){return this.destroyOnce.execute()}async _authenticate(e){try{let{token:o,refresh_token:a,user:r}=await e.authenticate();return this.storeToken(o),this.storeRefreshToken(a),z(r)}catch(o){throw console.warn("Error authenticating session"),U(o)}}async _link(e){try{let o=await e.link();return z(o)}catch(o){throw console.warn("Error linking account"),U(o)}}async _refresh(){if(!this.api)throw new C("Session has no API instance");let e=this.token,o=this.refreshToken;if(!e||!o)return null;try{let a=await this.api.post(M4(),{refresh_token:o});return this.storeToken(a.data.token),this.storeRefreshToken(a.data.refresh_token),z(a.data.user)}catch(a){throw U(a)}}async _destroy(){var e;try{await((e=this.api)==null?void 0:e.post(y4(),{refresh_token:this.refreshToken}))}catch{console.warn("Error destroying session")}this.destroyLocalState()}async _forkSession(){if(!this.api)throw new C("Session has no API instance");let e=this.refreshToken;try{let o=await this.api.post(v4(),{refresh_token:e});return this.storeToken(o.data.token),this.storeRefreshToken(o.data.refresh_token),o.data.new_session_refresh_token}catch(o){throw U(o)}}destroyLocalState(){this.storeToken(null),this.storeRefreshToken(null),y.del(B)}storeToken(e){typeof e=="string"?y.put(g1,e):y.del(g1)}storeRefreshToken(e){typeof e=="string"?y.put(q1,e):y.del(q1)}};import{getAddress as k5}from"@ethersproject/address";import V4 from"@walletconnect/web3-provider";import{ErrorCode as h5}from"@ethersproject/logger";var M1=class extends N{constructor(){super("Wallet timeout");this.type="wallet_error"}},Q1=i=>{if(i instanceof N)return i;if((i==null?void 0:i.code)&&(i==null?void 0:i.reason)){let e=new y1(i);return i.code===h5.ACTION_REJECTED&&(e.details=d1.E4001_USER_REJECTED_REQUEST),e}return i!=null&&i.code?new y1(i):new N("Unknown connector error",i)},F2=class extends F{constructor(o,a,r){super(o);this.type="provider_error";this.code=a,this.data=r}},y1=class extends F2{constructor(o){var l,s,f;let a=o;super(a.message,a.code,a.data);let r=Object.values(d1).find(h=>h.eipCode===a.code);this.details=r||d1.UNKNOWN_ERROR,a.code===-32002&&((l=a.message)!=null&&l.includes("already pending for origin")?(s=a.message)!=null&&s.includes("wallet_requestPermissions")?this.details=d1.E32002_CONNECTION_ALREADY_PENDING:this.details=d1.E32002_REQUEST_ALREADY_PENDING:(f=a.message)!=null&&f.includes("Already processing")&&a.message.includes("eth_requestAccounts")&&(this.details=d1.E32002_WALLET_LOCKED))}},f5={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}},u5={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}},m5={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}},d1={UNKNOWN_ERROR:{eipCode:0,message:"Unknown error",detail:"Unknown error",retryable:!0},...m5,...u5},t2={...f5,...d1};var b5=12e4,V2=(i=new M1,e=b5)=>new Promise((o,a)=>setTimeout(()=>{a(i)},e)),v1=class{constructor(e){this.removeListener=(e,o)=>{if(this.walletProvider)return this.walletProvider.removeListener(e,o)};this.setProvider=e=>{this.walletProvider=e,this._subscriptions.forEach(o=>{var a;(a=this.walletProvider)==null||a.on(o.eventName,o.listener)})};this.walletProvider=e,this._subscriptions=[]}on(e,o){if(this.walletProvider)return this.walletProvider.on(e,o);this._subscriptions.push({eventName:e,listener:o})}request(e){if(!this.walletProvider)throw new N(`A wallet request of type ${e.method} was made before setting a wallet provider.`);return Promise.race([this.walletProvider.request(e),V2()]).catch(o=>{throw Q1(o)})}},x1=class extends v1{constructor(o){super(o)}},e2=class extends v1{constructor(e){super(e)}sendAsync(e,o){throw new Error("sendAsync is no longer supported by EIP-1193. Use the request method instead.")}};import{Web3Provider as g5}from"@ethersproject/providers";var F4=["metamask","coinbase_wallet","wallet_connect"];import w5 from"@coinbase/wallet-sdk";var M5=()=>{let i=`https://mainnet.infura.io/v3/${K1}`,e=1;return new w5({appName:"Privy",darkMode:!1,headlessMode:!1}).makeWeb3Provider(i,e)},H2=()=>{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},o2=()=>{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},i2=class{constructor(){this.walletType=null;this.getEthereumProvider=()=>this.ethProvider;this.createSiweMessage=(e,o,a,r,l,s,f)=>`${a} wants you to sign in with your Ethereum account:
|
|
2
2
|
${o}
|
|
3
3
|
|
|
4
4
|
${f}
|
|
@@ -177,7 +177,7 @@ Resources:
|
|
|
177
177
|
&& > a {
|
|
178
178
|
color: var(--primary-color);
|
|
179
179
|
}
|
|
180
|
-
`;function l3(i){let{privacyPolicyUrl:e,termsAndConditionsUrl:o}=i.app,a
|
|
180
|
+
`;function l3(i){let{privacyPolicyUrl:e,termsAndConditionsUrl:o}=i.app,a=!!e,r=!!o,l=a&&r;return!a&&!r?null:n3(z5,{children:["By logging in I agree to the"," ",r&&E1("a",{href:o,target:"_blank",children:l?"Terms":"Terms of Service"}),l&&" & ",a&&E1("a",{href:e,target:"_blank",children:"Privacy Policy"})]})}var j=({protectedByPrivy:i})=>E1(q,{hideOnMobile:i,children:i?n3($5,{children:[E1(a3,{}),E1("span",{children:E1("a",{href:"https://www.privy.io/",target:"_blank",children:"Protected by Privy"})})]}):null}),q=r3.div`
|
|
181
181
|
height: 20px;
|
|
182
182
|
font-size: 12px;
|
|
183
183
|
display: flex;
|