magic-sdk 28.4.1-canary.783.10423285502.0 → 28.4.1-canary.cc3b042.0

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.
Files changed (2) hide show
  1. package/dist/magic.js +1 -1
  2. package/package.json +5 -5
package/dist/magic.js CHANGED
@@ -2,5 +2,5 @@
2
2
  - Extension \`${r.name}\` supports version(s) \`${o}\``:o||(t+=`
3
3
  - Extension \`${r.name}\` does not support ${Y.platform} environments.`)}),new _e(ve.IncompatibleExtensions,t)}function Lo(e){let t=r=>{let o=r+1,a=o%10,s=o%100;return a===1&&s!==11?`${o}st`:a===2&&s!==12?`${o}nd`:a===3&&s!==13?`${o}rd`:`${o}th`};return new _e(ve.InvalidArgument,`Invalid ${t(e.argument)} argument given to \`${e.procedure}\`.
4
4
  Expected: \`${e.expected}\`
5
- Received: \`${e.received}\``)}function en(){return new Te(ge.DuplicateIframe,"Duplicate iframes found.")}function Co(){return new Te(ge.SyncWeb3Method,"Non-async web3 methods are deprecated in web3 > 1.0 and are not supported by the Magic web3 provider. Please use an async method instead.")}function Po(){return new Te(ge.ReactNativeEndpointConfiguration,`CUSTOM DOMAINS ARE NOT SUPPORTED WHEN USING MAGIC SDK WITH REACT NATIVE! The \`endpoint\` parameter SHOULD NOT be provided. The Magic \`<iframe>\` is automatically wrapped by a WebView pointed at \`${Y.defaultEndpoint}\`. Changing this default behavior will lead to unexpected results and potentially security-threatening bugs.`)}function ze(e){let{method:t,removalVersions:r,useInstead:o}=e,a=r[Y.sdkName],s=o?` Use \`${o}\` instead.`:"",m=`\`${t}\` will be removed from \`${Y.sdkName}\` in version \`${a}\`.${s}`;return new Te(ge.DeprecationNotice,m)}function*$o(){let e=0;for(;;)e<Number.MAX_SAFE_INTEGER?yield++e:e=0}var Do=$o();function tn(){return Do.next().value}var rn=Symbol("Payload pre-processed by Magic SDK");function nn(e){return Object.defineProperty(e,rn,{value:!0,enumerable:!1}),e}function xo(e){return!!e[rn]}function mt(e){var t,r,o;return xo(e)||(e.jsonrpc=(t=e.jsonrpc)!=null?t:"2.0",e.id=tn(),e.method=(r=e.method)!=null?r:"noop",e.params=(o=e.params)!=null?o:[],nn(e)),e}function W(e,t=[]){return nn({params:t,method:e,jsonrpc:"2.0",id:tn()})}var xt=class{constructor(e){e instanceof xt?(this._jsonrpc=e.payload.jsonrpc,this._id=e.payload.id,this._result=e.payload.result,this._error=e.payload.error):Ro(e)?(this._jsonrpc=e.jsonrpc,this._id=e.id,this._result=e.result,this._error=e.error):(this._jsonrpc=e.jsonrpc,this._id=e.id,this._result=void 0,this._error=void 0)}applyError(e){return this._error=e,this}applyResult(e){return this._result=e,this}get hasError(){return typeof this._error!="undefined"&&this._error!==null}get hasResult(){return typeof this._result!="undefined"}get payload(){return{jsonrpc:this._jsonrpc,id:this._id,result:this._result,error:this._error}}},Uo=Li(Ci()),ko=class extends Uo.default{};function on(){let e=new ko;return{emitter:e,createChainingEmitterMethod:(t,r)=>(...o)=>(e[t].apply(e,o),r),createBoundEmitterMethod:t=>(...r)=>e[t].apply(e,r)}}var an=Symbol("isPromiEvent");function Ut(e){return!!e[an]}function Ze(e){let t=sn(e),{createBoundEmitterMethod:r,createChainingEmitterMethod:o}=on(),a=Symbol("Promise.then"),s=Symbol("Promise.catch"),m=Symbol("Promise.finally"),d=(y,O)=>(..._)=>{let N=O[y].apply(O,_);return g(N)},g=y=>Object.assign(y,{[an]:!0,[a]:y[a]||y.then,[s]:y[s]||y.catch,[m]:y[m]||y.finally,then:d(a,y),catch:d(s,y),finally:d(m,y),on:o("on",y),once:o("once",y),addListener:o("addListener",y),off:o("off",y),removeListener:o("removeListener",y),removeAllListeners:o("removeAllListeners",y),emit:r("emit"),eventNames:r("eventNames"),listeners:r("listeners"),listenerCount:r("listenerCount")}),v=g(t.then(y=>(v.emit("done",y),v.emit("settled"),y),y=>{throw v.emit("error",y),v.emit("settled"),y}));return v.on(ot.ClosedByUser,()=>{v.emit(it.ClosedByUser)}),v}function sn(e){return new Promise((t,r)=>{let o=e(t,r);Promise.resolve(o).catch(r)})}var Me=class{constructor(e){this.sdk=e}get overlay(){return this.sdk.overlay}request(e){let t=this.overlay.post(Ne.MAGIC_HANDLE_REQUEST,mt(e)),r=Ze((a,s)=>{t.then(m=>{if(o(),m.hasError)s(new Fe(m.payload.error));else if(m.hasResult)a(m.payload.result);else throw Oo()}).catch(m=>{o(),s(m)})}),o=this.overlay.on(me.MAGIC_HANDLE_EVENT,a=>{var s;let{response:m}=a.data;if(m.id===e.id&&((s=m.result)==null?void 0:s.event)){let{event:d,params:g=[]}=m.result;r.emit(d,...g)}});return r}createIntermediaryEvent(e,t){return r=>{let o=W(M.IntermediaryEvent,[{payloadId:t,eventType:e,args:r}]);this.request(o)}}};function Fo(e,t){let[r]=e.split(".").map(Number);return r>=t}var Je={"magic-sdk":"v18.0.0","@magic-sdk/react-native":"v14.0.0","@magic-sdk/react-native-bare":"v19.0.0","@magic-sdk/react-native-expo":"v19.0.0"},Wo=class extends Me{loginWithMagicLink(e){let t=Y.sdkName==="@magic-sdk/react-native"||Y.sdkName==="@magic-sdk/react-native-bare"||Y.sdkName==="@magic-sdk/react-native-expo";if(t&&Fo(Y.version,19))throw new Error("loginWithMagicLink() is deprecated for this package, please utlize a passcode method like loginWithSMS or loginWithEmailOTP instead.");t&&ze({method:"auth.loginWithMagicLink()",removalVersions:Je,useInstead:"auth.loginWithEmailOTP()"}).log();let{email:r,showUI:o=!0,redirectURI:a,overrides:s,lifespan:m}=e,d=W(this.sdk.testMode?M.LoginWithMagicLinkTestMode:M.LoginWithMagicLink,[{email:r,showUI:o,redirectURI:a,overrides:s,lifespan:m}]);return this.request(d)}loginWithSMS(e){let{phoneNumber:t,lifespan:r}=e,o=W(this.sdk.testMode?M.LoginWithSmsTestMode:M.LoginWithSms,[{phoneNumber:t,showUI:!0,lifespan:r}]);return this.request(o)}loginWithEmailOTP(e){let{email:t,showUI:r,deviceCheckUI:o,overrides:a,lifespan:s}=e,m=W(this.sdk.testMode?M.LoginWithEmailOTPTestMode:M.LoginWithEmailOTP,[{email:t,showUI:r,deviceCheckUI:o,overrides:a,lifespan:s}]),d=this.request(m);return!o&&d&&d.on(Ke.Retry,()=>{this.createIntermediaryEvent(Ke.Retry,m.id)()}),!r&&d&&(d.on(ye.VerifyEmailOtp,g=>{this.createIntermediaryEvent(ye.VerifyEmailOtp,m.id)(g)}),d.on(ye.VerifyMFACode,g=>{this.createIntermediaryEvent(ye.VerifyMFACode,m.id)(g)}),d.on(ye.Cancel,()=>{this.createIntermediaryEvent(ye.Cancel,m.id)()})),d}loginWithCredential(e){let{credentialOrQueryString:t,lifespan:r}=e||{},o=t!=null?t:"";if(!t&&Y.platform==="web"){o=window.location.search;let s=window.location.origin+window.location.pathname;window.history.replaceState(null,"",s)}let a=W(this.sdk.testMode?M.LoginWithCredentialTestMode:M.LoginWithCredential,[o,r]);return this.request(a)}setAuthorizationToken(e){let t=W(M.SetAuthorizationToken,[{jwt:e}]);return this.request(t)}updateEmailWithUI(e){let{email:t,showUI:r=!0}=e,o=W(this.sdk.testMode?M.UpdateEmailTestMode:M.UpdateEmail,[{email:t,showUI:r}]),a=this.request(o);return r||(a.on(he.Retry,()=>{this.createIntermediaryEvent(he.Retry,o.id)()}),a.on(he.Cancel,()=>{this.createIntermediaryEvent(he.Cancel,o.id)()}),a.on(he.VerifyEmailOtp,s=>{this.createIntermediaryEvent(he.VerifyEmailOtp,o.id)(s)}),a.on(he.VerifyMFACode,s=>{this.createIntermediaryEvent(he.VerifyMFACode,o.id)(s)}),a.on(Ee.RetryWithNewEmail,s=>{this.createIntermediaryEvent(Ee.RetryWithNewEmail,o.id)(s)}),a.on(Ee.Cancel,()=>{this.createIntermediaryEvent(Ee.Cancel,o.id)()}),a.on(Ee.VerifyEmailOtp,s=>{this.createIntermediaryEvent(Ee.VerifyEmailOtp,o.id)(s)})),a}},ln={};Ti(ln,{clear:()=>Bo,getItem:()=>se,iterate:()=>cn,key:()=>jo,keys:()=>Vo,length:()=>Go,removeItem:()=>ke,setItem:()=>pe});var ct;function Re(e){return(...t)=>X(this,null,function*(){return ct||(ct=yield Y.configureStorage()),yield ct.ready(),ct[e](...t)})}var se=Re("getItem"),pe=Re("setItem"),ke=Re("removeItem"),Bo=Re("clear"),Go=Re("length"),jo=Re("key"),Vo=Re("keys"),cn=Re("iterate");function qo(){let e=window.crypto.getRandomValues(new Uint8Array(16));e[6]=e[6]&15|64,e[8]=e[8]&191|128;let t="";return t+=e[0].toString(16),t+=e[1].toString(16),t+=e[2].toString(16),t+=e[3].toString(16),t+="-",t+=e[4].toString(16),t+=e[5].toString(16),t+="-",t+=e[6].toString(16),t+=e[7].toString(16),t+="-",t+=e[8].toString(16),t+=e[9].toString(16),t+="-",t+=e[10].toString(16),t+=e[11].toString(16),t+=e[12].toString(16),t+=e[13].toString(16),t+=e[14].toString(16),t+=e[15].toString(16),t}var un="STORE_KEY_PRIVATE_KEY",Lt="STORE_KEY_PUBLIC_JWK",fn="ECDSA",Ko="P-256",Ho={name:fn,namedCurve:Ko};function gt(){let e=typeof window!="undefined"&&!!window.crypto,t=e&&!!window.crypto.subtle;return e&&t}function Yo(){return X(this,null,function*(){let e=yield Xo();if(!e){console.info("unable to create public key or webcrypto is unsupported");return}let{subtle:t}=window.crypto,r=yield se(un);if(!r||!t){console.info("unable to find private key or webcrypto unsupported");return}let o={iat:Math.floor(new Date().getTime()/1e3),jti:qo()},a={typ:"dpop+jwt",alg:"ES256",jwk:e},s={protected:Kr(JSON.stringify(a)),claims:Kr(JSON.stringify(o))},m=Jo(`${s.protected}.${s.claims}`),d={name:fn,hash:{name:"SHA-256"}},g=Zo(new Uint8Array(yield t.sign(d,r,m)));return`${s.protected}.${s.claims}.${g}`})}function Xo(){return X(this,null,function*(){if(!gt()){console.info("webcrypto is not supported");return}return(yield se(Lt))||(yield zo()),se(Lt)})}function zo(){return X(this,null,function*(){let{subtle:e}=window.crypto,t=yield e.generateKey(Ho,!1,["sign"]),r=yield e.exportKey("jwk",t.publicKey);yield pe(un,t.privateKey),yield pe(Lt,r)})}function Kr(e){return dn(Qo(e))}function Jo(e){return new TextEncoder().encode(e)}function dn(e){return btoa(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+/g,"")}function Qo(e){return encodeURIComponent(e).replace(/%([0-9A-F]{2})/g,(t,r)=>String.fromCharCode(parseInt(r,16)))}function Zo(e){let t="";return e.forEach(r=>{t+=String.fromCharCode(r)}),dn(t)}var kt="ds",Ft="ek",Wt="iv",Bt="AES-GCM",ea=256;function Gt(){return X(this,null,function*(){let e=[];yield cn((t,r,o)=>{r.startsWith(`${kt}_`)&&e.push(r)});for(let t of e)yield ke(t)})}function hn(e){let t="",r=new Uint8Array(e),o=r.byteLength;for(let a=0;a<o;a++)t+=String.fromCharCode(r[a]);return window.btoa(t)}function mn(e){let t=window.atob(e),r=t.length,o=new Uint8Array(r);for(let a=0;a<r;a++)o[a]=t.charCodeAt(a);return o.buffer}function ta(){return X(this,null,function*(){if(!gt()){console.info("webcrypto is not supported");return}let{crypto:e}=window;return(yield se(Wt))||e.getRandomValues(new Uint8Array(12))})}function ra(){return X(this,null,function*(){if(!gt()){console.info("webcrypto is not supported");return}let{subtle:e}=window.crypto;return(yield se(Ft))||(yield e.generateKey({name:Bt,length:ea},!1,["encrypt","decrypt"]))})}function na(e,t){return X(this,null,function*(){let r=yield ta(),o=yield ra();if(!r||!o||!e)return;let a=mn(e),{subtle:s}=window.crypto,m=yield s.encrypt({name:Bt,iv:r},o,a),d=hn(m);yield pe(`${kt}_${t}`,d),yield pe(Ft,o),yield pe(Wt,r)})}function ia(e){return X(this,null,function*(){let t=yield se(`${kt}_${e}`),r=yield se(Wt),o=yield se(Ft);if(!r||!t||!o||!gt())return;let{subtle:a}=window.crypto,s=yield a.decrypt({name:Bt,iv:r},o,mn(t));return hn(s)})}function et(e,t){return t?new URL(e,t):new URL(e)}var oa=class extends Me{constructor(){super(...arguments),this.localForageKey="mc_active_wallet",this.localForageIsLoggedInKey="magic_auth_is_logged_in",this.userLoggedOutCallbacks=[]}getIdToken(e){let t=W(this.sdk.testMode?M.GetIdTokenTestMode:M.GetIdToken,[e]);return this.request(t)}generateIdToken(e){let t=W(this.sdk.testMode?M.GenerateIdTokenTestMode:M.GenerateIdToken,[e]);return this.request(t)}getInfo(){return X(this,null,function*(){let e=yield se(this.localForageKey),t=W(M.GetInfo,[{walletType:e}]);return this.request(t)})}isLoggedIn(){return Ze((e,t)=>X(this,null,function*(){try{let r=!1;this.sdk.useStorageCache&&(r=(yield se(this.localForageIsLoggedInKey))==="true",r&&e(!0));let o=W(this.sdk.testMode?M.IsLoggedInTestMode:M.IsLoggedIn),a=yield this.request(o);this.sdk.useStorageCache&&(a?pe(this.localForageIsLoggedInKey,!0):ke(this.localForageIsLoggedInKey),r&&!a&&this.emitUserLoggedOut(!0)),e(a)}catch(r){t(r)}}))}logout(){return ke(this.localForageKey),ke(this.localForageIsLoggedInKey),Gt(),Ze((e,t)=>X(this,null,function*(){try{let r=W(this.sdk.testMode?M.LogoutTestMode:M.Logout),o=yield this.request(r);this.sdk.useStorageCache&&this.emitUserLoggedOut(o),e(o)}catch(r){t(r)}}))}requestInfoWithUI(e){let t=W(M.RequestUserInfoWithUI,e?[e]:[]);return this.request(t)}showSettings(e){let t=W(this.sdk.testMode?M.UserSettingsTestMode:M.UserSettings,[e]);return this.request(t)}recoverAccount(e){let t=W(this.sdk.testMode?M.RecoverAccountTestMode:M.RecoverAccount,[e]);return this.request(t)}revealPrivateKey(){let e=W(M.RevealPK);return this.request(e)}getMetadata(){ze({method:"user.getMetadata()",removalVersions:Je,useInstead:"user.getInfo()"}).log();let e=W(this.sdk.testMode?M.GetMetadataTestMode:M.GetMetadata);return this.request(e)}onUserLoggedOut(e){this.userLoggedOutCallbacks.push(e)}enableMFA(){let e=W(M.EnableMFA);return this.request(e)}disableMFA(){let e=W(M.DisableMFA);return this.request(e)}emitUserLoggedOut(e){this.userLoggedOutCallbacks.forEach(t=>{t(e)})}},aa=class extends Me{constructor(){super(...arguments),this.localForageKey="mc_active_wallet"}connectWithUI(){let e=Ze((t,r)=>X(this,null,function*(){try{if(this.isMetaMaskBrowser()&&(yield this.isWalletEnabled(ue.MetaMask))){let d=yield this.autoConnectIfWalletBrowser(ue.MetaMask);t(d);return}if(this.isCoinbaseWalletBrowser()&&(yield this.isWalletEnabled(ue.CoinbaseWallet))){let d=yield this.autoConnectIfWalletBrowser(ue.CoinbaseWallet);t(d);return}let o=this.getUserEnv(),a=W(M.Login,[o]),s=this.request(a);s.on(De.WalletSelected,d=>this.handleWalletSelected(Pt(Ct({},d),{payloadId:a.id}))),s.on("id-token-created",d=>{e.emit("id-token-created",d)});let m=yield s;m.error&&r(m),t(m)}catch(o){r(o)}}));return e}showUI(e){return this.request(W(M.ShowUI,[e]))}showAddress(){return this.request(W(M.ShowAddress))}showSendTokensUI(){return this.request(W(M.ShowSendTokensUI))}showOnRamp(){return this.request(W(M.ShowOnRamp))}showNFTs(){return this.request(W(M.ShowNFTs))}showBalances(){return this.request(W(M.ShowBalances))}sendGaslessTransaction(e,t){return this.request(W(M.SendGaslessTransaction,[e,t]))}getInfo(){return X(this,null,function*(){ze({method:"wallet.getInfo()",removalVersions:Je,useInstead:"user.getInfo()"}).log();let e=yield se(this.localForageKey),t=W(M.GetInfo,[{walletType:e}]);return this.request(t)})}disconnect(){ze({method:"wallet.disconnect()",removalVersions:Je,useInstead:"user.logout()"}).log(),ke(this.localForageKey),Gt();let e=W(M.Disconnect);return this.request(e)}requestUserInfoWithUI(e){ze({method:"wallet.requestUserInfoWithUI()",removalVersions:Je,useInstead:"user.requestUserInfoWithUI()"}).log();let t=W(M.RequestUserInfoWithUI,e?[e]:[]);return this.request(t)}getProvider(){return X(this,null,function*(){switch(yield se(this.localForageKey)){case ue.MetaMask:return this.getMetaMaskProvider();case ue.CoinbaseWallet:return this.getCoinbaseProvider();default:return this.sdk.rpcProvider}})}isMetaMaskInstalled(){var e,t,r;return((e=window.ethereum)==null?void 0:e.isMetaMask)||!!((r=(t=window.ethereum)==null?void 0:t.providers)!=null&&r.find(o=>o==null?void 0:o.isMetaMask))}isMetaMaskBrowser(){return this.isMobile()&&this.isMetaMaskInstalled()}getMetaMaskProvider(){var e,t;return((t=(e=window.ethereum)==null?void 0:e.providers)==null?void 0:t.find(r=>r==null?void 0:r.isMetaMask))||window.ethereum}connectToMetaMask(){if(this.isMobile()&&!this.isMetaMaskInstalled()){let e=`https://metamask.app.link/dapp/${window.location.href.replace(/(^\w+:|^)\/\//,"")}`;window.location.href=e}return this.getMetaMaskProvider().request({method:"eth_requestAccounts"})}isCoinbaseWalletInstalled(){var e,t,r;return((e=window.ethereum)==null?void 0:e.isCoinbaseWallet)||!!((r=(t=window.ethereum)==null?void 0:t.providers)!=null&&r.find(o=>o==null?void 0:o.isCoinbaseWallet))}isCoinbaseWalletBrowser(){var e;return!!((e=window.ethereum)!=null&&e.isCoinbaseBrowser)}getCoinbaseProvider(){var e,t;return((t=(e=window.ethereum)==null?void 0:e.providers)==null?void 0:t.find(r=>r==null?void 0:r.isCoinbaseWallet))||window.ethereum}connectToCoinbaseWallet(){if(this.isMobile()&&!this.isCoinbaseWalletBrowser()){let e=`https://go.cb-w.com/dapp?cb_url=${encodeURIComponent(window.location.href)}`;window.location.href=e}return this.getCoinbaseProvider().request({method:"eth_requestAccounts"})}isMobile(){return/Android|webOS|iPhone|iPad|iPod|BlackBerry|BB|PlayBook|IEMobile|Windows Phone|Silk|Opera Mini/i.test(navigator.userAgent)}getUserEnv(){return{env:{isMetaMaskInstalled:this.isMetaMaskInstalled(),isCoinbaseWalletInstalled:this.isCoinbaseWalletInstalled()}}}connectToThirdPartyWallet(e){switch(e){case ue.MetaMask:return this.connectToMetaMask();case ue.CoinbaseWallet:return this.connectToCoinbaseWallet();default:throw new Error(`Invalid provider: ${e}. Must be one of "metamask" or "coinbase_wallet".`)}}isWalletEnabled(e){let t=W("mc_is_wallet_enabled",[{wallet:e}]);return this.request(t)}handleWalletSelected(e){return X(this,null,function*(){try{let t=yield this.connectToThirdPartyWallet(e.wallet);yield pe(this.localForageKey,e.wallet),this.createIntermediaryEvent(De.WalletConnected,e.payloadId)(t)}catch(t){console.error(t),this.createIntermediaryEvent(De.WalletRejected,e.payloadId)()}})}autoConnectIfWalletBrowser(e){return X(this,null,function*(){let t;e===ue.MetaMask&&(t=yield this.getMetaMaskProvider().request({method:"eth_requestAccounts"})),e===ue.CoinbaseWallet&&(t=yield this.getCoinbaseProvider().request({method:"eth_requestAccounts"})),yield pe(this.localForageKey,e);let r=W(M.AutoConnect,[{wallet:e,address:t}]);return this.request(r)})}},{createBoundEmitterMethod:ut,createChainingEmitterMethod:xe}=on(),sa=class extends Me{constructor(){super(...arguments),this.isMagic=!0,this.on=xe("on",this),this.once=xe("once",this),this.addListener=xe("addListener",this),this.off=xe("off",this),this.removeListener=xe("removeListener",this),this.removeAllListeners=xe("removeAllListeners",this),this.emit=ut("emit"),this.eventNames=ut("eventNames"),this.listeners=ut("listeners"),this.listenerCount=ut("listenerCount")}sendAsync(e,t){if(!t)throw Lo({procedure:"Magic.rpcProvider.sendAsync",argument:1,expected:"function",received:t===null?"null":typeof t});if(Array.isArray(e))this.overlay.post(Ne.MAGIC_HANDLE_REQUEST,e.map(r=>{let o=mt(r);return this.prefixPayloadMethodForTestMode(o),o})).then(r=>{t(null,r.map(o=>Pt(Ct({},o.payload),{error:o.hasError?new Fe(o.payload.error):null})))});else{let r=mt(e);this.prefixPayloadMethodForTestMode(r),this.overlay.post(Ne.MAGIC_HANDLE_REQUEST,r).then(o=>{t(o.hasError?new Fe(o.payload.error):null,o.payload)})}}send(e,t){if(typeof e=="string"){let o=W(e,Array.isArray(t)?t:[]);return this.request(o)}if(Array.isArray(e)||!!t){this.sendAsync(e,t);return}let r=Co();return r.log(),new xt(e).applyError({code:-32603,message:r.rawMessage}).payload}enable(){let e=W(M.Login);return this.request(e)}request(e){return this.prefixPayloadMethodForTestMode(e),super.request(e)}prefixPayloadMethodForTestMode(e){let t="testMode/eth/";this.sdk.testMode&&(e.method=`${t}${e.method}`)}},Hr=["request","overlay","sdk"];function la(e){let t=Object.getPrototypeOf(e),r=[t];for(;t!==Me.prototype;)t=Object.getPrototypeOf(t),r.push(t);return r}var pn=class extends Me{constructor(){super(void 0),this.__sdk_access_field_descriptors__=new Map,this.__is_initialized__=!1,this.utils={createPromiEvent:Ze,isPromiEvent:Ut,encodeJSON:Jr,decodeJSON:wo,createJsonRpcRequestPayload:W,standardizeJsonRpcRequestPayload:mt,storage:ln};let e=[this,...la(this)];Hr.forEach(t=>{let r=e.map(m=>Object.getOwnPropertyDescriptor(m,t)),o=r.findIndex(m=>!!m),a=o>0,s=r[o];s&&(this.__sdk_access_field_descriptors__.set(t,{descriptor:s,isPrototypeField:a}),Object.defineProperty(this,t,{configurable:!0,get:()=>{throw To(t)}}))})}init(e){this.__is_initialized__||(Hr.forEach(t=>{if(this.__sdk_access_field_descriptors__.has(t)){let{descriptor:r,isPrototypeField:o}=this.__sdk_access_field_descriptors__.get(t);o?delete this[t]:Object.defineProperty(this,t,r)}}),this.sdk=e,this.__is_initialized__=!0)}createDeprecationWarning(e){let{method:t,removalVersion:r,useInstead:o}=e,a=o?` Use \`${o}\` instead.`:"",s=`\`${t}\` will be removed from this Extension in version \`${r}\`.${a}`;return new ht(this,"DEPRECATION_NOTICE",s)}createWarning(e,t){return new ht(this,e,t)}createError(e,t,r){return new vt(this,e,t,r)}},ca=class extends pn{},Oe=class extends pn{};Oe.Internal=ca,Oe.Anonymous="anonymous extension";var ua=class extends Me{purchase(e){let t=W(M.NFTPurchase,[e]);return this.request(t)}checkout(e){let t=W(M.NFTCheckout,[e]);return this.request(t)}transfer(e){let t=W(M.NFTTransfer,[e]);return this.request(t)}};function Yr(e){return e.compat&&e.compat[Y.sdkName]!=null?typeof e.compat[Y.sdkName]=="string"?ho(go(Y.version),e.compat[Y.sdkName]):!!e.compat[Y.sdkName]:!0}function fa(e,t,r){return!t&&!r?`${e}_eth_mainnet`:r?`${e}_${JSON.stringify(r)}`:t?typeof t=="string"?`${e}_eth_${t}`:`${e}_${t.rpcUrl}_${t.chainId}_${t.chainType}`:`${e}_unknown`}function da(e){var t;let r=(t=e==null?void 0:e.extensions)!=null?t:[],o={},a=[];if(Array.isArray(r)?r.forEach(s=>{Yr(s)?(s.init(this),(s.name||s.name!==Oe.Anonymous)&&(this[s.name]=s),s instanceof Oe.Internal&&(dt(s.config)||(o[s.name]=s.config))):a.push(s)}):Object.keys(r).forEach(s=>{if(Yr(r[s])){r[s].init(this);let m=r[s];this[s]=m,m instanceof Oe.Internal&&(dt(m.config)||(o[r[s].name]=m.config))}else a.push(r[s])}),a.length)throw Mo(a);return o}var ft=class{constructor(e,t){this.apiKey=e;var r;if(!e)throw No();Y.platform==="react-native"&&(t==null?void 0:t.endpoint)&&Po().log();let{defaultEndpoint:o,version:a}=Y;this.testMode=!!(t!=null&&t.testMode),this.useStorageCache=!!(t!=null&&t.useStorageCache),this.endpoint=et((r=t==null?void 0:t.endpoint)!=null?r:o).origin,this.auth=new Wo(this),this.user=new oa(this),this.wallet=new aa(this),this.nft=new ua(this),this.rpcProvider=new sa(this);let s=da.call(this,t);this.parameters=Jr(Pt(Ct({API_KEY:this.apiKey,DOMAIN_ORIGIN:window.location?window.location.origin:"",ETH_NETWORK:t==null?void 0:t.network,host:et(this.endpoint).host,sdk:So[Y.sdkName],version:a,ext:dt(s)?void 0:s,locale:(t==null?void 0:t.locale)||"en_US"},Y.bundleId?{bundleId:Y.bundleId}:{}),{meta:t==null?void 0:t.meta})),this.networkHash=fa(this.apiKey,t==null?void 0:t.network,dt(s)?void 0:s),t!=null&&t.deferPreload||this.preload()}get overlay(){if(!ft.__overlays__.has(this.parameters)){let e=new Y.ViewController(this.endpoint,this.parameters,this.networkHash);e.init(),ft.__overlays__.set(this.parameters,e)}return ft.__overlays__.get(this.parameters)}preload(){return X(this,null,function*(){yield this.overlay.checkIsReadyForRequest})}},jt=ft;jt.__overlays__=new Map;function ha(e,t){return t&&Array.isArray(e)?e.find(r=>r.id===t):e}function ma(e,t){var r;let o=(r=t.data.response)==null?void 0:r.id,a=ha(e,o);if(o&&a){let s=new xt(a).applyResult(t.data.response.result).applyError(t.data.response.error);return{id:o,response:s}}return{}}function pa(e,t,r){return X(this,null,function*(){var o;let a=yield se("rt"),s;if(Y.platform==="web")try{s=(o=yield se("jwt"))!=null?o:yield Yo()}catch(g){console.error("webcrypto error",g)}let m={msgType:e,payload:t};s&&(m.jwt=s),s&&a&&(m.rt=a);let d=yield ia(r);return d&&(m.deviceShare=d),m})}function va(e){return X(this,null,function*(){!e.data.rt||(yield pe("rt",e.data.rt))})}var vn=class{constructor(e,t,r){this.endpoint=e,this.parameters=t,this.networkHash=r,this.messageHandlers=new Set,this.isConnectedToInternet=!0,this.checkIsReadyForRequest=this.waitForReady(),this.isReadyForRequest=!1,this.listen()}post(e,t){return X(this,null,function*(){return sn((r,o)=>X(this,null,function*(){if(!this.isConnectedToInternet){let v=Dt();o(v)}this.isReadyForRequest||(yield this.waitForReady());let a=[],s=Array.isArray(t)?t.map(v=>v.id):[],m=yield pa(`${e}-${this.parameters}`,t,this.networkHash);yield this._post(m);let d=v=>y=>{var O;let{id:_,response:N}=ma(t,y);if(va(y),((O=N==null?void 0:N.payload.error)==null?void 0:O.message)==="User denied account access.")Gt();else if(y.data.deviceShare){let{deviceShare:L}=y.data;na(L,this.networkHash)}_&&N&&Array.isArray(t)&&s.includes(_)?(a.push(N),a.length===t.length&&(v(),r(a))):_&&N&&!Array.isArray(t)&&_===t.id&&(v(),r(N))},g=this.on(me.MAGIC_HANDLE_RESPONSE,d(()=>g()))}))})}on(e,t){let r=t.bind(window),o=a=>{a.data.msgType===`${e}-${this.parameters}`&&r(a)};return this.messageHandlers.add(o),()=>this.messageHandlers.delete(o)}waitForReady(){return new Promise(e=>{let t=this.on(me.MAGIC_OVERLAY_READY,()=>{this.isReadyForRequest=!0,e(),t()});setTimeout(()=>{this.isReadyForRequest=!0,e(),t()},15e3)})}listen(){this.on(me.MAGIC_HIDE_OVERLAY,()=>{this.hideOverlay()}),this.on(me.MAGIC_SHOW_OVERLAY,()=>{this.showOverlay()}),this.on(me.MAGIC_SEND_PRODUCT_ANNOUNCEMENT,e=>{e.data.response.result.product_announcement&&new Te(ge.ProductAnnouncement,e.data.response.result.product_announcement).log()})}};var Vt={};gr(Vt,{AuthEventOnReceived:()=>Tr,DeepLinkPage:()=>_r,DeviceVerificationEventEmit:()=>Ke,DeviceVerificationEventOnReceived:()=>Sr,EthChainType:()=>Lr,Events:()=>De,Extension:()=>Oe,ExtensionError:()=>vt,ExtensionWarning:()=>ht,FarcasterLoginEventEmit:()=>Mr,LoginWithEmailOTPEventEmit:()=>ye,LoginWithEmailOTPEventOnReceived:()=>Ar,LoginWithMagicLinkEventEmit:()=>Ir,LoginWithMagicLinkEventOnReceived:()=>wr,LoginWithSmsOTPEventEmit:()=>br,LoginWithSmsOTPEventOnReceived:()=>Rr,MagicIncomingWindowMessage:()=>me,MagicOutgoingWindowMessage:()=>Ne,MagicPayloadMethod:()=>M,NftCheckoutIntermediaryEvents:()=>Pr,RPCError:()=>Fe,RPCErrorCode:()=>$e,RecencyCheckEventEmit:()=>he,RecencyCheckEventOnReceived:()=>Nr,RecoveryMethodType:()=>Cr,SDKError:()=>_e,SDKErrorCode:()=>ve,SDKWarning:()=>Te,SDKWarningCode:()=>ge,UpdateEmailEventEmit:()=>Ee,UpdateEmailEventOnReceived:()=>Or,UserEventsEmit:()=>it,UserEventsOnReceived:()=>ot,WalletEventOnReceived:()=>$r,Wallets:()=>ue,isPromiEvent:()=>Ut});var _t=Er(yn()),Kt=Er(_n());var ga={display:"block",visibility:"hidden",position:"fixed",top:"0",right:"0",width:"100%",height:"100%",borderRadius:"0",border:"none",zIndex:"2147483647"};function ya(e){for(let[t,r]of Object.entries(ga))e.style[t]=r}function Ea(e){let t=[].slice.call(document.querySelectorAll(".magic-iframe"));return Boolean(t.find(r=>r.src.includes(e)))}var Et=class extends vn{constructor(){super(...arguments);this.activeElement=null}init(){this.test="hello",this.iframe=new Promise(r=>{let o=()=>{if(Ea(encodeURIComponent(this.parameters)))en().log();else{let a=document.createElement("iframe");a.classList.add("magic-iframe"),a.dataset.magicIframeLabel=et(this.endpoint).host,a.title="Secure Modal",a.src=et(`/send?params=${encodeURIComponent(this.parameters)}`,this.endpoint).href,a.allow="clipboard-read; clipboard-write",ya(a),document.body.appendChild(a),r(a)}};["loaded","interactive","complete"].includes(document.readyState)?o():window.addEventListener("load",o,!1)}),window.addEventListener("message",r=>{var o;if(r.origin===this.endpoint&&r.data&&r.data.msgType&&this.messageHandlers.size){r.data.response=(o=r.data.response)!=null?o:{};for(let a of this.messageHandlers.values())a(r)}})}showOverlay(){return Pe(this,null,function*(){let r=yield this.iframe;r.style.visibility="visible",this.activeElement=document.activeElement,r.focus()})}hideOverlay(){return Pe(this,null,function*(){var o;let r=yield this.iframe;r.style.visibility="hidden",(o=this.activeElement)!=null&&o.focus&&this.activeElement.focus(),this.activeElement=null})}_post(r){return Pe(this,null,function*(){let o=yield this.iframe;if(o&&o.contentWindow)o.contentWindow.postMessage(r,this.endpoint);else throw Dt()})}};var _a=Object.assign(Zr(jt,{platform:"web",sdkName:"magic-sdk",version:"28.4.0",defaultEndpoint:"https://auth.magic.link/",ViewController:Et,configureStorage:()=>Pe(void 0,null,function*(){let e=_t.default.createInstance({name:"MagicAuthLocalStorageDB",storeName:"MagicAuthLocalStorage"});return yield e.defineDriver(Kt),yield e.setDriver([_t.default.INDEXEDDB,_t.default.LOCALSTORAGE,Kt._driver]),e})}),pr({},Vt)),Ia=_a;return _i(wa);})();
5
+ Received: \`${e.received}\``)}function en(){return new Te(ge.DuplicateIframe,"Duplicate iframes found.")}function Co(){return new Te(ge.SyncWeb3Method,"Non-async web3 methods are deprecated in web3 > 1.0 and are not supported by the Magic web3 provider. Please use an async method instead.")}function Po(){return new Te(ge.ReactNativeEndpointConfiguration,`CUSTOM DOMAINS ARE NOT SUPPORTED WHEN USING MAGIC SDK WITH REACT NATIVE! The \`endpoint\` parameter SHOULD NOT be provided. The Magic \`<iframe>\` is automatically wrapped by a WebView pointed at \`${Y.defaultEndpoint}\`. Changing this default behavior will lead to unexpected results and potentially security-threatening bugs.`)}function ze(e){let{method:t,removalVersions:r,useInstead:o}=e,a=r[Y.sdkName],s=o?` Use \`${o}\` instead.`:"",m=`\`${t}\` will be removed from \`${Y.sdkName}\` in version \`${a}\`.${s}`;return new Te(ge.DeprecationNotice,m)}function*$o(){let e=0;for(;;)e<Number.MAX_SAFE_INTEGER?yield++e:e=0}var Do=$o();function tn(){return Do.next().value}var rn=Symbol("Payload pre-processed by Magic SDK");function nn(e){return Object.defineProperty(e,rn,{value:!0,enumerable:!1}),e}function xo(e){return!!e[rn]}function mt(e){var t,r,o;return xo(e)||(e.jsonrpc=(t=e.jsonrpc)!=null?t:"2.0",e.id=tn(),e.method=(r=e.method)!=null?r:"noop",e.params=(o=e.params)!=null?o:[],nn(e)),e}function W(e,t=[]){return nn({params:t,method:e,jsonrpc:"2.0",id:tn()})}var xt=class{constructor(e){e instanceof xt?(this._jsonrpc=e.payload.jsonrpc,this._id=e.payload.id,this._result=e.payload.result,this._error=e.payload.error):Ro(e)?(this._jsonrpc=e.jsonrpc,this._id=e.id,this._result=e.result,this._error=e.error):(this._jsonrpc=e.jsonrpc,this._id=e.id,this._result=void 0,this._error=void 0)}applyError(e){return this._error=e,this}applyResult(e){return this._result=e,this}get hasError(){return typeof this._error!="undefined"&&this._error!==null}get hasResult(){return typeof this._result!="undefined"}get payload(){return{jsonrpc:this._jsonrpc,id:this._id,result:this._result,error:this._error}}},Uo=Li(Ci()),ko=class extends Uo.default{};function on(){let e=new ko;return{emitter:e,createChainingEmitterMethod:(t,r)=>(...o)=>(e[t].apply(e,o),r),createBoundEmitterMethod:t=>(...r)=>e[t].apply(e,r)}}var an=Symbol("isPromiEvent");function Ut(e){return!!e[an]}function Ze(e){let t=sn(e),{createBoundEmitterMethod:r,createChainingEmitterMethod:o}=on(),a=Symbol("Promise.then"),s=Symbol("Promise.catch"),m=Symbol("Promise.finally"),d=(y,O)=>(..._)=>{let N=O[y].apply(O,_);return g(N)},g=y=>Object.assign(y,{[an]:!0,[a]:y[a]||y.then,[s]:y[s]||y.catch,[m]:y[m]||y.finally,then:d(a,y),catch:d(s,y),finally:d(m,y),on:o("on",y),once:o("once",y),addListener:o("addListener",y),off:o("off",y),removeListener:o("removeListener",y),removeAllListeners:o("removeAllListeners",y),emit:r("emit"),eventNames:r("eventNames"),listeners:r("listeners"),listenerCount:r("listenerCount")}),v=g(t.then(y=>(v.emit("done",y),v.emit("settled"),y),y=>{throw v.emit("error",y),v.emit("settled"),y}));return v.on(ot.ClosedByUser,()=>{v.emit(it.ClosedByUser)}),v}function sn(e){return new Promise((t,r)=>{let o=e(t,r);Promise.resolve(o).catch(r)})}var Me=class{constructor(e){this.sdk=e}get overlay(){return this.sdk.overlay}request(e){let t=this.overlay.post(Ne.MAGIC_HANDLE_REQUEST,mt(e)),r=Ze((a,s)=>{t.then(m=>{if(o(),m.hasError)s(new Fe(m.payload.error));else if(m.hasResult)a(m.payload.result);else throw Oo()}).catch(m=>{o(),s(m)})}),o=this.overlay.on(me.MAGIC_HANDLE_EVENT,a=>{var s;let{response:m}=a.data;if(m.id===e.id&&((s=m.result)==null?void 0:s.event)){let{event:d,params:g=[]}=m.result;r.emit(d,...g)}});return r}createIntermediaryEvent(e,t){return r=>{let o=W(M.IntermediaryEvent,[{payloadId:t,eventType:e,args:r}]);this.request(o)}}};function Fo(e,t){let[r]=e.split(".").map(Number);return r>=t}var Je={"magic-sdk":"v18.0.0","@magic-sdk/react-native":"v14.0.0","@magic-sdk/react-native-bare":"v19.0.0","@magic-sdk/react-native-expo":"v19.0.0"},Wo=class extends Me{loginWithMagicLink(e){let t=Y.sdkName==="@magic-sdk/react-native"||Y.sdkName==="@magic-sdk/react-native-bare"||Y.sdkName==="@magic-sdk/react-native-expo";if(t&&Fo(Y.version,19))throw new Error("loginWithMagicLink() is deprecated for this package, please utlize a passcode method like loginWithSMS or loginWithEmailOTP instead.");t&&ze({method:"auth.loginWithMagicLink()",removalVersions:Je,useInstead:"auth.loginWithEmailOTP()"}).log();let{email:r,showUI:o=!0,redirectURI:a,overrides:s,lifespan:m}=e,d=W(this.sdk.testMode?M.LoginWithMagicLinkTestMode:M.LoginWithMagicLink,[{email:r,showUI:o,redirectURI:a,overrides:s,lifespan:m}]);return this.request(d)}loginWithSMS(e){let{phoneNumber:t,lifespan:r}=e,o=W(this.sdk.testMode?M.LoginWithSmsTestMode:M.LoginWithSms,[{phoneNumber:t,showUI:!0,lifespan:r}]);return this.request(o)}loginWithEmailOTP(e){let{email:t,showUI:r,deviceCheckUI:o,overrides:a,lifespan:s}=e,m=W(this.sdk.testMode?M.LoginWithEmailOTPTestMode:M.LoginWithEmailOTP,[{email:t,showUI:r,deviceCheckUI:o,overrides:a,lifespan:s}]),d=this.request(m);return!o&&d&&d.on(Ke.Retry,()=>{this.createIntermediaryEvent(Ke.Retry,m.id)()}),!r&&d&&(d.on(ye.VerifyEmailOtp,g=>{this.createIntermediaryEvent(ye.VerifyEmailOtp,m.id)(g)}),d.on(ye.VerifyMFACode,g=>{this.createIntermediaryEvent(ye.VerifyMFACode,m.id)(g)}),d.on(ye.Cancel,()=>{this.createIntermediaryEvent(ye.Cancel,m.id)()})),d}loginWithCredential(e){let{credentialOrQueryString:t,lifespan:r}=e||{},o=t!=null?t:"";if(!t&&Y.platform==="web"){o=window.location.search;let s=window.location.origin+window.location.pathname;window.history.replaceState(null,"",s)}let a=W(this.sdk.testMode?M.LoginWithCredentialTestMode:M.LoginWithCredential,[o,r]);return this.request(a)}setAuthorizationToken(e){let t=W(M.SetAuthorizationToken,[{jwt:e}]);return this.request(t)}updateEmailWithUI(e){let{email:t,showUI:r=!0}=e,o=W(this.sdk.testMode?M.UpdateEmailTestMode:M.UpdateEmail,[{email:t,showUI:r}]),a=this.request(o);return r||(a.on(he.Retry,()=>{this.createIntermediaryEvent(he.Retry,o.id)()}),a.on(he.Cancel,()=>{this.createIntermediaryEvent(he.Cancel,o.id)()}),a.on(he.VerifyEmailOtp,s=>{this.createIntermediaryEvent(he.VerifyEmailOtp,o.id)(s)}),a.on(he.VerifyMFACode,s=>{this.createIntermediaryEvent(he.VerifyMFACode,o.id)(s)}),a.on(Ee.RetryWithNewEmail,s=>{this.createIntermediaryEvent(Ee.RetryWithNewEmail,o.id)(s)}),a.on(Ee.Cancel,()=>{this.createIntermediaryEvent(Ee.Cancel,o.id)()}),a.on(Ee.VerifyEmailOtp,s=>{this.createIntermediaryEvent(Ee.VerifyEmailOtp,o.id)(s)})),a}},ln={};Ti(ln,{clear:()=>Bo,getItem:()=>se,iterate:()=>cn,key:()=>jo,keys:()=>Vo,length:()=>Go,removeItem:()=>ke,setItem:()=>pe});var ct;function Re(e){return(...t)=>X(this,null,function*(){return ct||(ct=yield Y.configureStorage()),yield ct.ready(),ct[e](...t)})}var se=Re("getItem"),pe=Re("setItem"),ke=Re("removeItem"),Bo=Re("clear"),Go=Re("length"),jo=Re("key"),Vo=Re("keys"),cn=Re("iterate");function qo(){let e=window.crypto.getRandomValues(new Uint8Array(16));e[6]=e[6]&15|64,e[8]=e[8]&191|128;let t="";return t+=e[0].toString(16),t+=e[1].toString(16),t+=e[2].toString(16),t+=e[3].toString(16),t+="-",t+=e[4].toString(16),t+=e[5].toString(16),t+="-",t+=e[6].toString(16),t+=e[7].toString(16),t+="-",t+=e[8].toString(16),t+=e[9].toString(16),t+="-",t+=e[10].toString(16),t+=e[11].toString(16),t+=e[12].toString(16),t+=e[13].toString(16),t+=e[14].toString(16),t+=e[15].toString(16),t}var un="STORE_KEY_PRIVATE_KEY",Lt="STORE_KEY_PUBLIC_JWK",fn="ECDSA",Ko="P-256",Ho={name:fn,namedCurve:Ko};function gt(){let e=typeof window!="undefined"&&!!window.crypto,t=e&&!!window.crypto.subtle;return e&&t}function Yo(){return X(this,null,function*(){let e=yield Xo();if(!e){console.info("unable to create public key or webcrypto is unsupported");return}let{subtle:t}=window.crypto,r=yield se(un);if(!r||!t){console.info("unable to find private key or webcrypto unsupported");return}let o={iat:Math.floor(new Date().getTime()/1e3),jti:qo()},a={typ:"dpop+jwt",alg:"ES256",jwk:e},s={protected:Kr(JSON.stringify(a)),claims:Kr(JSON.stringify(o))},m=Jo(`${s.protected}.${s.claims}`),d={name:fn,hash:{name:"SHA-256"}},g=Zo(new Uint8Array(yield t.sign(d,r,m)));return`${s.protected}.${s.claims}.${g}`})}function Xo(){return X(this,null,function*(){if(!gt()){console.info("webcrypto is not supported");return}return(yield se(Lt))||(yield zo()),se(Lt)})}function zo(){return X(this,null,function*(){let{subtle:e}=window.crypto,t=yield e.generateKey(Ho,!1,["sign"]),r=yield e.exportKey("jwk",t.publicKey);yield pe(un,t.privateKey),yield pe(Lt,r)})}function Kr(e){return dn(Qo(e))}function Jo(e){return new TextEncoder().encode(e)}function dn(e){return btoa(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+/g,"")}function Qo(e){return encodeURIComponent(e).replace(/%([0-9A-F]{2})/g,(t,r)=>String.fromCharCode(parseInt(r,16)))}function Zo(e){let t="";return e.forEach(r=>{t+=String.fromCharCode(r)}),dn(t)}var kt="ds",Ft="ek",Wt="iv",Bt="AES-GCM",ea=256;function Gt(){return X(this,null,function*(){let e=[];yield cn((t,r,o)=>{r.startsWith(`${kt}_`)&&e.push(r)});for(let t of e)yield ke(t)})}function hn(e){let t="",r=new Uint8Array(e),o=r.byteLength;for(let a=0;a<o;a++)t+=String.fromCharCode(r[a]);return window.btoa(t)}function mn(e){let t=window.atob(e),r=t.length,o=new Uint8Array(r);for(let a=0;a<r;a++)o[a]=t.charCodeAt(a);return o.buffer}function ta(){return X(this,null,function*(){if(!gt()){console.info("webcrypto is not supported");return}let{crypto:e}=window;return(yield se(Wt))||e.getRandomValues(new Uint8Array(12))})}function ra(){return X(this,null,function*(){if(!gt()){console.info("webcrypto is not supported");return}let{subtle:e}=window.crypto;return(yield se(Ft))||(yield e.generateKey({name:Bt,length:ea},!1,["encrypt","decrypt"]))})}function na(e,t){return X(this,null,function*(){let r=yield ta(),o=yield ra();if(!r||!o||!e)return;let a=mn(e),{subtle:s}=window.crypto,m=yield s.encrypt({name:Bt,iv:r},o,a),d=hn(m);yield pe(`${kt}_${t}`,d),yield pe(Ft,o),yield pe(Wt,r)})}function ia(e){return X(this,null,function*(){let t=yield se(`${kt}_${e}`),r=yield se(Wt),o=yield se(Ft);if(!r||!t||!o||!gt())return;let{subtle:a}=window.crypto,s=yield a.decrypt({name:Bt,iv:r},o,mn(t));return hn(s)})}function et(e,t){return t?new URL(e,t):new URL(e)}var oa=class extends Me{constructor(){super(...arguments),this.localForageKey="mc_active_wallet",this.localForageIsLoggedInKey="magic_auth_is_logged_in",this.userLoggedOutCallbacks=[]}getIdToken(e){let t=W(this.sdk.testMode?M.GetIdTokenTestMode:M.GetIdToken,[e]);return this.request(t)}generateIdToken(e){let t=W(this.sdk.testMode?M.GenerateIdTokenTestMode:M.GenerateIdToken,[e]);return this.request(t)}getInfo(){return X(this,null,function*(){let e=yield se(this.localForageKey),t=W(M.GetInfo,[{walletType:e}]);return this.request(t)})}isLoggedIn(){return Ze((e,t)=>X(this,null,function*(){try{let r=!1;this.sdk.useStorageCache&&(r=(yield se(this.localForageIsLoggedInKey))==="true",r&&e(!0));let o=W(this.sdk.testMode?M.IsLoggedInTestMode:M.IsLoggedIn),a=yield this.request(o);this.sdk.useStorageCache&&(a?pe(this.localForageIsLoggedInKey,!0):ke(this.localForageIsLoggedInKey),r&&!a&&this.emitUserLoggedOut(!0)),e(a)}catch(r){t(r)}}))}logout(){return ke(this.localForageKey),ke(this.localForageIsLoggedInKey),Gt(),Ze((e,t)=>X(this,null,function*(){try{let r=W(this.sdk.testMode?M.LogoutTestMode:M.Logout),o=yield this.request(r);this.sdk.useStorageCache&&this.emitUserLoggedOut(o),e(o)}catch(r){t(r)}}))}requestInfoWithUI(e){let t=W(M.RequestUserInfoWithUI,e?[e]:[]);return this.request(t)}showSettings(e){let t=W(this.sdk.testMode?M.UserSettingsTestMode:M.UserSettings,[e]);return this.request(t)}recoverAccount(e){let t=W(this.sdk.testMode?M.RecoverAccountTestMode:M.RecoverAccount,[e]);return this.request(t)}revealPrivateKey(){let e=W(M.RevealPK);return this.request(e)}getMetadata(){ze({method:"user.getMetadata()",removalVersions:Je,useInstead:"user.getInfo()"}).log();let e=W(this.sdk.testMode?M.GetMetadataTestMode:M.GetMetadata);return this.request(e)}onUserLoggedOut(e){this.userLoggedOutCallbacks.push(e)}enableMFA(){let e=W(M.EnableMFA);return this.request(e)}disableMFA(){let e=W(M.DisableMFA);return this.request(e)}emitUserLoggedOut(e){this.userLoggedOutCallbacks.forEach(t=>{t(e)})}},aa=class extends Me{constructor(){super(...arguments),this.localForageKey="mc_active_wallet"}connectWithUI(){let e=Ze((t,r)=>X(this,null,function*(){try{if(this.isMetaMaskBrowser()&&(yield this.isWalletEnabled(ue.MetaMask))){let d=yield this.autoConnectIfWalletBrowser(ue.MetaMask);t(d);return}if(this.isCoinbaseWalletBrowser()&&(yield this.isWalletEnabled(ue.CoinbaseWallet))){let d=yield this.autoConnectIfWalletBrowser(ue.CoinbaseWallet);t(d);return}let o=this.getUserEnv(),a=W(M.Login,[o]),s=this.request(a);s.on(De.WalletSelected,d=>this.handleWalletSelected(Pt(Ct({},d),{payloadId:a.id}))),s.on("id-token-created",d=>{e.emit("id-token-created",d)});let m=yield s;m.error&&r(m),t(m)}catch(o){r(o)}}));return e}showUI(e){return this.request(W(M.ShowUI,[e]))}showAddress(){return this.request(W(M.ShowAddress))}showSendTokensUI(){return this.request(W(M.ShowSendTokensUI))}showOnRamp(){return this.request(W(M.ShowOnRamp))}showNFTs(){return this.request(W(M.ShowNFTs))}showBalances(){return this.request(W(M.ShowBalances))}sendGaslessTransaction(e,t){return this.request(W(M.SendGaslessTransaction,[e,t]))}getInfo(){return X(this,null,function*(){ze({method:"wallet.getInfo()",removalVersions:Je,useInstead:"user.getInfo()"}).log();let e=yield se(this.localForageKey),t=W(M.GetInfo,[{walletType:e}]);return this.request(t)})}disconnect(){ze({method:"wallet.disconnect()",removalVersions:Je,useInstead:"user.logout()"}).log(),ke(this.localForageKey),Gt();let e=W(M.Disconnect);return this.request(e)}requestUserInfoWithUI(e){ze({method:"wallet.requestUserInfoWithUI()",removalVersions:Je,useInstead:"user.requestUserInfoWithUI()"}).log();let t=W(M.RequestUserInfoWithUI,e?[e]:[]);return this.request(t)}getProvider(){return X(this,null,function*(){switch(yield se(this.localForageKey)){case ue.MetaMask:return this.getMetaMaskProvider();case ue.CoinbaseWallet:return this.getCoinbaseProvider();default:return this.sdk.rpcProvider}})}isMetaMaskInstalled(){var e,t,r;return((e=window.ethereum)==null?void 0:e.isMetaMask)||!!((r=(t=window.ethereum)==null?void 0:t.providers)!=null&&r.find(o=>o==null?void 0:o.isMetaMask))}isMetaMaskBrowser(){return this.isMobile()&&this.isMetaMaskInstalled()}getMetaMaskProvider(){var e,t;return((t=(e=window.ethereum)==null?void 0:e.providers)==null?void 0:t.find(r=>r==null?void 0:r.isMetaMask))||window.ethereum}connectToMetaMask(){if(this.isMobile()&&!this.isMetaMaskInstalled()){let e=`https://metamask.app.link/dapp/${window.location.href.replace(/(^\w+:|^)\/\//,"")}`;window.location.href=e}return this.getMetaMaskProvider().request({method:"eth_requestAccounts"})}isCoinbaseWalletInstalled(){var e,t,r;return((e=window.ethereum)==null?void 0:e.isCoinbaseWallet)||!!((r=(t=window.ethereum)==null?void 0:t.providers)!=null&&r.find(o=>o==null?void 0:o.isCoinbaseWallet))}isCoinbaseWalletBrowser(){var e;return!!((e=window.ethereum)!=null&&e.isCoinbaseBrowser)}getCoinbaseProvider(){var e,t;return((t=(e=window.ethereum)==null?void 0:e.providers)==null?void 0:t.find(r=>r==null?void 0:r.isCoinbaseWallet))||window.ethereum}connectToCoinbaseWallet(){if(this.isMobile()&&!this.isCoinbaseWalletBrowser()){let e=`https://go.cb-w.com/dapp?cb_url=${encodeURIComponent(window.location.href)}`;window.location.href=e}return this.getCoinbaseProvider().request({method:"eth_requestAccounts"})}isMobile(){return/Android|webOS|iPhone|iPad|iPod|BlackBerry|BB|PlayBook|IEMobile|Windows Phone|Silk|Opera Mini/i.test(navigator.userAgent)}getUserEnv(){return{env:{isMetaMaskInstalled:this.isMetaMaskInstalled(),isCoinbaseWalletInstalled:this.isCoinbaseWalletInstalled()}}}connectToThirdPartyWallet(e){switch(e){case ue.MetaMask:return this.connectToMetaMask();case ue.CoinbaseWallet:return this.connectToCoinbaseWallet();default:throw new Error(`Invalid provider: ${e}. Must be one of "metamask" or "coinbase_wallet".`)}}isWalletEnabled(e){let t=W("mc_is_wallet_enabled",[{wallet:e}]);return this.request(t)}handleWalletSelected(e){return X(this,null,function*(){try{let t=yield this.connectToThirdPartyWallet(e.wallet);yield pe(this.localForageKey,e.wallet),this.createIntermediaryEvent(De.WalletConnected,e.payloadId)(t)}catch(t){console.error(t),this.createIntermediaryEvent(De.WalletRejected,e.payloadId)()}})}autoConnectIfWalletBrowser(e){return X(this,null,function*(){let t;e===ue.MetaMask&&(t=yield this.getMetaMaskProvider().request({method:"eth_requestAccounts"})),e===ue.CoinbaseWallet&&(t=yield this.getCoinbaseProvider().request({method:"eth_requestAccounts"})),yield pe(this.localForageKey,e);let r=W(M.AutoConnect,[{wallet:e,address:t}]);return this.request(r)})}},{createBoundEmitterMethod:ut,createChainingEmitterMethod:xe}=on(),sa=class extends Me{constructor(){super(...arguments),this.isMagic=!0,this.on=xe("on",this),this.once=xe("once",this),this.addListener=xe("addListener",this),this.off=xe("off",this),this.removeListener=xe("removeListener",this),this.removeAllListeners=xe("removeAllListeners",this),this.emit=ut("emit"),this.eventNames=ut("eventNames"),this.listeners=ut("listeners"),this.listenerCount=ut("listenerCount")}sendAsync(e,t){if(!t)throw Lo({procedure:"Magic.rpcProvider.sendAsync",argument:1,expected:"function",received:t===null?"null":typeof t});if(Array.isArray(e))this.overlay.post(Ne.MAGIC_HANDLE_REQUEST,e.map(r=>{let o=mt(r);return this.prefixPayloadMethodForTestMode(o),o})).then(r=>{t(null,r.map(o=>Pt(Ct({},o.payload),{error:o.hasError?new Fe(o.payload.error):null})))});else{let r=mt(e);this.prefixPayloadMethodForTestMode(r),this.overlay.post(Ne.MAGIC_HANDLE_REQUEST,r).then(o=>{t(o.hasError?new Fe(o.payload.error):null,o.payload)})}}send(e,t){if(typeof e=="string"){let o=W(e,Array.isArray(t)?t:[]);return this.request(o)}if(Array.isArray(e)||!!t){this.sendAsync(e,t);return}let r=Co();return r.log(),new xt(e).applyError({code:-32603,message:r.rawMessage}).payload}enable(){let e=W(M.Login);return this.request(e)}request(e){return this.prefixPayloadMethodForTestMode(e),super.request(e)}prefixPayloadMethodForTestMode(e){let t="testMode/eth/";this.sdk.testMode&&(e.method=`${t}${e.method}`)}},Hr=["request","overlay","sdk"];function la(e){let t=Object.getPrototypeOf(e),r=[t];for(;t!==Me.prototype;)t=Object.getPrototypeOf(t),r.push(t);return r}var pn=class extends Me{constructor(){super(void 0),this.__sdk_access_field_descriptors__=new Map,this.__is_initialized__=!1,this.utils={createPromiEvent:Ze,isPromiEvent:Ut,encodeJSON:Jr,decodeJSON:wo,createJsonRpcRequestPayload:W,standardizeJsonRpcRequestPayload:mt,storage:ln};let e=[this,...la(this)];Hr.forEach(t=>{let r=e.map(m=>Object.getOwnPropertyDescriptor(m,t)),o=r.findIndex(m=>!!m),a=o>0,s=r[o];s&&(this.__sdk_access_field_descriptors__.set(t,{descriptor:s,isPrototypeField:a}),Object.defineProperty(this,t,{configurable:!0,get:()=>{throw To(t)}}))})}init(e){this.__is_initialized__||(Hr.forEach(t=>{if(this.__sdk_access_field_descriptors__.has(t)){let{descriptor:r,isPrototypeField:o}=this.__sdk_access_field_descriptors__.get(t);o?delete this[t]:Object.defineProperty(this,t,r)}}),this.sdk=e,this.__is_initialized__=!0)}createDeprecationWarning(e){let{method:t,removalVersion:r,useInstead:o}=e,a=o?` Use \`${o}\` instead.`:"",s=`\`${t}\` will be removed from this Extension in version \`${r}\`.${a}`;return new ht(this,"DEPRECATION_NOTICE",s)}createWarning(e,t){return new ht(this,e,t)}createError(e,t,r){return new vt(this,e,t,r)}},ca=class extends pn{},Oe=class extends pn{};Oe.Internal=ca,Oe.Anonymous="anonymous extension";var ua=class extends Me{purchase(e){let t=W(M.NFTPurchase,[e]);return this.request(t)}checkout(e){let t=W(M.NFTCheckout,[e]);return this.request(t)}transfer(e){let t=W(M.NFTTransfer,[e]);return this.request(t)}};function Yr(e){return e.compat&&e.compat[Y.sdkName]!=null?typeof e.compat[Y.sdkName]=="string"?ho(go(Y.version),e.compat[Y.sdkName]):!!e.compat[Y.sdkName]:!0}function fa(e,t,r){return!t&&!r?`${e}_eth_mainnet`:r?`${e}_${JSON.stringify(r)}`:t?typeof t=="string"?`${e}_eth_${t}`:`${e}_${t.rpcUrl}_${t.chainId}_${t.chainType}`:`${e}_unknown`}function da(e){var t;let r=(t=e==null?void 0:e.extensions)!=null?t:[],o={},a=[];if(Array.isArray(r)?r.forEach(s=>{Yr(s)?(s.init(this),(s.name||s.name!==Oe.Anonymous)&&(this[s.name]=s),s instanceof Oe.Internal&&(dt(s.config)||(o[s.name]=s.config))):a.push(s)}):Object.keys(r).forEach(s=>{if(Yr(r[s])){r[s].init(this);let m=r[s];this[s]=m,m instanceof Oe.Internal&&(dt(m.config)||(o[r[s].name]=m.config))}else a.push(r[s])}),a.length)throw Mo(a);return o}var ft=class{constructor(e,t){this.apiKey=e;var r;if(!e)throw No();Y.platform==="react-native"&&(t==null?void 0:t.endpoint)&&Po().log();let{defaultEndpoint:o,version:a}=Y;this.testMode=!!(t!=null&&t.testMode),this.useStorageCache=!!(t!=null&&t.useStorageCache),this.endpoint=et((r=t==null?void 0:t.endpoint)!=null?r:o).origin,this.auth=new Wo(this),this.user=new oa(this),this.wallet=new aa(this),this.nft=new ua(this),this.rpcProvider=new sa(this);let s=da.call(this,t);this.parameters=Jr(Pt(Ct({API_KEY:this.apiKey,DOMAIN_ORIGIN:window.location?window.location.origin:"",ETH_NETWORK:t==null?void 0:t.network,host:et(this.endpoint).host,sdk:So[Y.sdkName],version:a,ext:dt(s)?void 0:s,locale:(t==null?void 0:t.locale)||"en_US"},Y.bundleId?{bundleId:Y.bundleId}:{}),{meta:t==null?void 0:t.meta})),this.networkHash=fa(this.apiKey,t==null?void 0:t.network,dt(s)?void 0:s),t!=null&&t.deferPreload||this.preload()}get overlay(){if(!ft.__overlays__.has(this.parameters)){let e=new Y.ViewController(this.endpoint,this.parameters,this.networkHash);e.init(),ft.__overlays__.set(this.parameters,e)}return ft.__overlays__.get(this.parameters)}preload(){return X(this,null,function*(){yield this.overlay.checkIsReadyForRequest})}},jt=ft;jt.__overlays__=new Map;function ha(e,t){return t&&Array.isArray(e)?e.find(r=>r.id===t):e}function ma(e,t){var r;let o=(r=t.data.response)==null?void 0:r.id,a=ha(e,o);if(o&&a){let s=new xt(a).applyResult(t.data.response.result).applyError(t.data.response.error);return{id:o,response:s}}return{}}function pa(e,t,r){return X(this,null,function*(){var o;let a=yield se("rt"),s;if(Y.platform==="web")try{s=(o=yield se("jwt"))!=null?o:yield Yo()}catch(g){console.error("webcrypto error",g)}let m={msgType:e,payload:t};s&&(m.jwt=s),s&&a&&(m.rt=a);let d=yield ia(r);return d&&(m.deviceShare=d),m})}function va(e){return X(this,null,function*(){!e.data.rt||(yield pe("rt",e.data.rt))})}var vn=class{constructor(e,t,r){this.endpoint=e,this.parameters=t,this.networkHash=r,this.messageHandlers=new Set,this.isConnectedToInternet=!0,this.checkIsReadyForRequest=this.waitForReady(),this.isReadyForRequest=!1,this.listen()}post(e,t){return X(this,null,function*(){return sn((r,o)=>X(this,null,function*(){if(!this.isConnectedToInternet){let v=Dt();o(v)}this.isReadyForRequest||(yield this.waitForReady());let a=[],s=Array.isArray(t)?t.map(v=>v.id):[],m=yield pa(`${e}-${this.parameters}`,t,this.networkHash);yield this._post(m);let d=v=>y=>{var O;let{id:_,response:N}=ma(t,y);if(va(y),((O=N==null?void 0:N.payload.error)==null?void 0:O.message)==="User denied account access.")Gt();else if(y.data.deviceShare){let{deviceShare:L}=y.data;na(L,this.networkHash)}_&&N&&Array.isArray(t)&&s.includes(_)?(a.push(N),a.length===t.length&&(v(),r(a))):_&&N&&!Array.isArray(t)&&_===t.id&&(v(),r(N))},g=this.on(me.MAGIC_HANDLE_RESPONSE,d(()=>g()))}))})}on(e,t){let r=t.bind(window),o=a=>{a.data.msgType===`${e}-${this.parameters}`&&r(a)};return this.messageHandlers.add(o),()=>this.messageHandlers.delete(o)}waitForReady(){return new Promise(e=>{let t=this.on(me.MAGIC_OVERLAY_READY,()=>{console.log("MAGIC_OVERLAY_READY came"),this.isReadyForRequest=!0,e(),t()});setTimeout(()=>{this.isReadyForRequest=!0,e(),t()},15e3)})}listen(){this.on(me.MAGIC_HIDE_OVERLAY,()=>{this.hideOverlay()}),this.on(me.MAGIC_SHOW_OVERLAY,()=>{this.showOverlay()}),this.on(me.MAGIC_SEND_PRODUCT_ANNOUNCEMENT,e=>{e.data.response.result.product_announcement&&new Te(ge.ProductAnnouncement,e.data.response.result.product_announcement).log()})}};var Vt={};gr(Vt,{AuthEventOnReceived:()=>Tr,DeepLinkPage:()=>_r,DeviceVerificationEventEmit:()=>Ke,DeviceVerificationEventOnReceived:()=>Sr,EthChainType:()=>Lr,Events:()=>De,Extension:()=>Oe,ExtensionError:()=>vt,ExtensionWarning:()=>ht,FarcasterLoginEventEmit:()=>Mr,LoginWithEmailOTPEventEmit:()=>ye,LoginWithEmailOTPEventOnReceived:()=>Ar,LoginWithMagicLinkEventEmit:()=>Ir,LoginWithMagicLinkEventOnReceived:()=>wr,LoginWithSmsOTPEventEmit:()=>br,LoginWithSmsOTPEventOnReceived:()=>Rr,MagicIncomingWindowMessage:()=>me,MagicOutgoingWindowMessage:()=>Ne,MagicPayloadMethod:()=>M,NftCheckoutIntermediaryEvents:()=>Pr,RPCError:()=>Fe,RPCErrorCode:()=>$e,RecencyCheckEventEmit:()=>he,RecencyCheckEventOnReceived:()=>Nr,RecoveryMethodType:()=>Cr,SDKError:()=>_e,SDKErrorCode:()=>ve,SDKWarning:()=>Te,SDKWarningCode:()=>ge,UpdateEmailEventEmit:()=>Ee,UpdateEmailEventOnReceived:()=>Or,UserEventsEmit:()=>it,UserEventsOnReceived:()=>ot,WalletEventOnReceived:()=>$r,Wallets:()=>ue,isPromiEvent:()=>Ut});var _t=Er(yn()),Kt=Er(_n());var ga={display:"block",visibility:"hidden",position:"fixed",top:"0",right:"0",width:"100%",height:"100%",borderRadius:"0",border:"none",zIndex:"2147483647"};function ya(e){for(let[t,r]of Object.entries(ga))e.style[t]=r}function Ea(e){let t=[].slice.call(document.querySelectorAll(".magic-iframe"));return Boolean(t.find(r=>r.src.includes(e)))}var Et=class extends vn{constructor(){super(...arguments);this.activeElement=null}init(){this.test="hello",this.iframe=new Promise(r=>{let o=()=>{if(Ea(encodeURIComponent(this.parameters)))en().log();else{let a=document.createElement("iframe");a.classList.add("magic-iframe"),a.dataset.magicIframeLabel=et(this.endpoint).host,a.title="Secure Modal",a.src=et(`/send?params=${encodeURIComponent(this.parameters)}`,this.endpoint).href,a.allow="clipboard-read; clipboard-write",ya(a),document.body.appendChild(a),r(a)}};["loaded","interactive","complete"].includes(document.readyState)?o():window.addEventListener("load",o,!1)}),window.addEventListener("message",r=>{var o;if(r.origin===this.endpoint&&r.data&&r.data.msgType&&this.messageHandlers.size){r.data.response=(o=r.data.response)!=null?o:{};for(let a of this.messageHandlers.values())a(r)}})}showOverlay(){return Pe(this,null,function*(){let r=yield this.iframe;r.style.visibility="visible",this.activeElement=document.activeElement,r.focus()})}hideOverlay(){return Pe(this,null,function*(){var o;let r=yield this.iframe;r.style.visibility="hidden",(o=this.activeElement)!=null&&o.focus&&this.activeElement.focus(),this.activeElement=null})}_post(r){return Pe(this,null,function*(){let o=yield this.iframe;if(o&&o.contentWindow)o.contentWindow.postMessage(r,this.endpoint);else throw Dt()})}};var _a=Object.assign(Zr(jt,{platform:"web",sdkName:"magic-sdk",version:"28.4.0",defaultEndpoint:"https://auth.magic.link/",ViewController:Et,configureStorage:()=>Pe(void 0,null,function*(){let e=_t.default.createInstance({name:"MagicAuthLocalStorageDB",storeName:"MagicAuthLocalStorage"});return yield e.defineDriver(Kt),yield e.setDriver([_t.default.INDEXEDDB,_t.default.LOCALSTORAGE,Kt._driver]),e})}),pr({},Vt)),Ia=_a;return _i(wa);})();
6
6
  if (Magic && Magic.default != null) { Magic = Object.assign(Magic.default, Magic); delete Magic.default; }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "magic-sdk",
3
- "version": "28.4.1-canary.783.10423285502.0",
3
+ "version": "28.4.1-canary.cc3b042.0",
4
4
  "description": "Passwordless authentication for the web.",
5
5
  "author": "Magic Labs <team@magic.link> (https://magic.link/)",
6
6
  "license": "MIT",
@@ -29,9 +29,9 @@
29
29
  ]
30
30
  },
31
31
  "dependencies": {
32
- "@magic-sdk/commons": "24.4.1-canary.783.10423285502.0",
33
- "@magic-sdk/provider": "28.4.1-canary.783.10423285502.0",
34
- "@magic-sdk/types": "24.2.1-canary.783.10423285502.0",
32
+ "@magic-sdk/commons": "24.4.1-canary.cc3b042.0",
33
+ "@magic-sdk/provider": "28.4.1-canary.cc3b042.0",
34
+ "@magic-sdk/types": "24.2.1-canary.cc3b042.0",
35
35
  "localforage": "^1.7.4"
36
36
  },
37
37
  "devDependencies": {
@@ -40,5 +40,5 @@
40
40
  "@babel/runtime": "^7.9.6",
41
41
  "localforage-driver-memory": "^1.0.5"
42
42
  },
43
- "gitHead": "c4900efe94d26a126dc3bc813abf8bd1a14625d2"
43
+ "gitHead": "cc3b042e998133aa9c0f38c7fcaa40fc0b2e28e0"
44
44
  }