diff --git a/Web/index.js b/Web/index.js index b56a565..9298a68 100644 --- a/Web/index.js +++ b/Web/index.js @@ -1,4 +1,4 @@ -!function(e,t,r,n,a){var i="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},s="function"==typeof i[n]&&i[n],o=s.cache||{},c="undefined"!=typeof module&&"function"==typeof module.require&&module.require.bind(module);function f(t,r){if(!o[t]){if(!e[t]){var a="function"==typeof i[n]&&i[n];if(!r&&a)return a(t,!0);if(s)return s(t,!0);if(c&&"string"==typeof t)return c(t);var d=Error("Cannot find module '"+t+"'");throw d.code="MODULE_NOT_FOUND",d}u.resolve=function(r){var n=e[t][1][r];return null!=n?n:r},u.cache={};var l=o[t]=new f.Module(t);e[t][0].call(l.exports,u,l,l.exports,this)}return o[t].exports;function u(e){var t=u.resolve(e);return!1===t?{}:f(t)}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.exports={}},f.modules=e,f.cache=o,f.parent=s,f.register=function(t,r){e[t]=[function(e,t){t.exports=r},{}]},Object.defineProperty(f,"root",{get:function(){return i[n]}}),i[n]=f;for(var d=0;d{let t=JSON.stringify(e);if(console.log(`callbackToGame: ${t}`),void 0!==window.ue){if(void 0===window.ue.jsconnector){let e="Unreal JSConnector not defined";throw console.error(e),Error(e)}window.ue.jsconnector.sendtogame(t)}else if("undefined"!=typeof blu_event)blu_event("sendtogame",t);else if("undefined"!=typeof UnityPostMessage)UnityPostMessage(t);else if(void 0!==window.Unity)window.Unity.call(t);else if(void 0!==window.uwb)window.uwb.ExecuteJsMethod("callback",t);else{let e="No available game callbacks to call from ImmutableSDK game-bridge";throw console.error(e),Error(e)}},x=()=>{if(null==n)throw Error("No Passport client");return n},E=e=>null!=e?(a=e,console.log("IMX provider set"),!0):(console.log("No IMX provider"),!1),A=()=>{if(null==a)throw Error("No IMX provider");return a},_=e=>null!=e?(i=e,console.log("zkEvm provider set"),!0):(console.log("No zkEvm provider"),!1),T=()=>{if(null==i)throw Error("No zkEvm provider");return i},S=e=>Date.now()-e;(0,l.track)(g,"loadedGameBridge",{sdkVersionTag:m}),window.callFunction=async e=>{console.log(`Call function ${e}`);let t=null,r=null,o=Date.now();try{let I=JSON.parse(e);t=I.fxName,r=I.requestId;let k=I.data;switch(t){case y.init:{let e=JSON.parse(k),a=e?.redirectUri,i=e?.isSilentLogout===!0?"silent":"redirect";if(!n||v!==k){let t;v=k,console.log(`Connecting to ${e.environment} environment`);let r="production"===e.environment?f.Environment.PRODUCTION:f.Environment.SANDBOX,s=new f.ImmutableConfiguration({environment:r});t="dev"===e.environment||"development"===e.environment?{baseConfig:s,clientId:e.clientId,redirectUri:a??b,logoutRedirectUri:e?.logoutRedirectUri,audience:p,scope:h,crossSdkBridgeEnabled:!0,logoutMode:i,overrides:{authenticationDomain:"https://auth.dev.immutable.com",magicPublishableApiKey:"pk_live_4058236363130CA9",magicProviderId:"C9odf7hU4EQ5EufcfgYfcBaT5V6LhocXyiPRhIjw2EY=",passportDomain:"https://passport.dev.immutable.com",imxPublicApiDomain:"https://api.dev.immutable.com",immutableXClient:new d.IMXClient({baseConfig:s,overrides:{immutableXConfig:d.createConfig({basePath:"https://api.dev.x.immutable.com",chainID:5,coreContractAddress:"0xd05323731807A35599BF9798a1DE15e89d6D6eF1",registrationContractAddress:"0x7EB840223a3b1E0e8D54bF8A6cd83df5AFfC88B2"})}}),zkEvmRpcUrl:"https://rpc.dev.immutable.com",relayerUrl:"https://api.dev.immutable.com/relayer-mr",indexerMrBasePath:"https://api.dev.immutable.com",orderBookMrBasePath:"https://api.dev.immutable.com",passportMrBasePath:"https://api.dev.immutable.com"}}:{baseConfig:s,clientId:e.clientId,audience:p,scope:h,redirectUri:a??b,logoutRedirectUri:e?.logoutRedirectUri,crossSdkBridgeEnabled:!0,jsonRpcReferrer:"http://imtblgamesdk.local",logoutMode:i},n=new c.Passport(t),(0,l.trackDuration)(g,"initialisedPassport",S(o))}w({responseFor:t,requestId:r,success:!0,error:null});let{engineVersion:u}=e;s={gameBridgeTag:m,gameBridgeSha:"710165666b02418caf918544f3ab549d755d7315",engine:u.engine,engineVersion:u.engineVersion,engineSdkVersion:u.engineSdkVersion??"",platform:u.platform,platformVersion:u.platformVersion,deviceModel:u.deviceModel??"N/A"},console.log(`Version check: ${JSON.stringify(s)}`),(0,l.trackDuration)(g,"completedInitGameBridge",S(o),{...s});break}case y.relogin:{let e=await x().login({useCachedSession:!0}),n=null!==e;if(!n)throw Error("Failed to re-login");(0,l.identify)({passportId:e?.sub}),(0,l.trackDuration)(g,"performedRelogin",S(o),{succeeded:n}),w({responseFor:t,requestId:r,success:null!==e,error:null});break}case y.reconnect:{let e=!1,n=await x().login({useCachedSession:!0});if(n){let t=await x().connectImx();e=E(t),(0,l.identify)({passportId:n?.sub})}if(!e)throw Error("Failed to reconnect");(0,l.trackDuration)(g,"performedReconnect",S(o),{succeeded:null!==n}),w({responseFor:t,requestId:r,success:e,error:null});break}case y.getPKCEAuthUrl:{let e=k?JSON.parse(k):{},n=e?.directLoginMethod,a=await x().loginWithPKCEFlow(n);(0,l.trackDuration)(g,"performedGetPkceAuthUrl",S(o)),w({responseFor:t,requestId:r,success:!0,error:null,result:a});break}case y.loginPKCE:{let e=JSON.parse(k),n=await x().loginWithPKCEFlowCallback(e.authorizationCode,e.state);(0,l.identify)({passportId:n.sub}),(0,l.trackDuration)(g,"performedLoginPkce",S(o)),w({responseFor:t,requestId:r,success:!0,error:null});break}case y.connectPKCE:{let e=JSON.parse(k),n=await x().loginWithPKCEFlowCallback(e.authorizationCode,e.state),a=await x().connectImx(),i=E(a);if(!i)throw Error("Failed to connect via PKCE");(0,l.identify)({passportId:n.sub}),(0,l.trackDuration)(g,"performedConnectPkce",S(o),{succeeded:i}),w({responseFor:t,requestId:r,success:i,error:null});break}case y.logout:{let e=await x().getLogoutUrl();a=null,i=null,(0,l.trackDuration)(g,"performedGetLogoutUrl",S(o)),w({responseFor:t,requestId:r,success:!0,error:null,result:e});break}case y.getAccessToken:{let e=await x().getAccessToken(),n=void 0!==e;if(!n)throw Error("No access token");(0,l.trackDuration)(g,"performedGetAccessToken",S(o)),w({responseFor:t,requestId:r,success:n,error:null,result:e});break}case y.getIdToken:{let e=await x().getIdToken(),n=void 0!==e;if(!n)throw Error("No ID token");(0,l.trackDuration)(g,"performedGetIdToken",S(o)),w({responseFor:t,requestId:r,success:n,error:null,result:e});break}case y.getEmail:{let e=await x().getUserInfo(),n=e?.email!==void 0;if(!n)throw Error("No email");(0,l.trackDuration)(g,"performedGetEmail",S(o)),w({responseFor:t,requestId:r,success:n,error:null,result:e?.email});break}case y.getPassportId:{let e=await x().getUserInfo(),n=e?.sub!==void 0;if(!n)throw Error("No Passport ID");(0,l.trackDuration)(g,"performedGetPassportId",S(o)),w({responseFor:t,requestId:r,success:n,error:null,result:e?.sub});break}case y.getLinkedAddresses:{let e=await x().getLinkedAddresses();(0,l.trackDuration)(g,"performedGetLinkedAddresses",S(o)),w({responseFor:t,requestId:r,success:!0,error:null,result:e});break}case y.imx.getAddress:{let e=await A().getAddress();(0,l.trackDuration)(g,"performedImxGetAddress",S(o)),w({responseFor:t,requestId:r,success:!0,error:null,result:e});break}case y.imx.isRegisteredOffchain:{let e=await A().isRegisteredOffchain();(0,l.trackDuration)(g,"performedImxIsRegisteredOffchain",S(o)),w({responseFor:t,requestId:r,success:!0,error:null,result:e});break}case y.imx.registerOffchain:{let e=await A().registerOffchain();(0,l.trackDuration)(g,"performedImxRegisterOffchain",S(o)),w({responseFor:t,requestId:r,success:!0,error:null,...e});break}case y.imx.transfer:{let e=JSON.parse(k),n=await A().transfer(e);(0,l.trackDuration)(g,"performedImxTransfer",S(o),{requestId:r,transferRequest:JSON.stringify(e),transferResponse:JSON.stringify(n)}),w({responseFor:t,requestId:r,success:!0,error:null,...n});break}case y.imx.batchNftTransfer:{let e=JSON.parse(k),n=await A().batchNftTransfer(e);(0,l.trackDuration)(g,"performedImxBatchNftTransfer",S(o),{requestId:r,transferRequest:JSON.stringify(e),transferResponse:JSON.stringify(n)}),w({responseFor:t,requestId:r,success:!0,error:null,...n});break}case y.zkEvm.connectEvm:{let e=await x().connectEvm(),n=_(e);if(!n)throw Error("Failed to connect to EVM");(0,l.trackDuration)(g,"performedZkevmConnectEvm",S(o),{succeeded:n}),w({responseFor:t,requestId:r,success:n,error:null});break}case y.zkEvm.sendTransaction:{let e=JSON.parse(k),n=await T().request({method:"eth_sendTransaction",params:[e]}),a=null!=n;if(!a)throw Error("Failed to send transaction");(0,l.trackDuration)(g,"performedZkevmSendTransaction",S(o),{requestId:r,transactionRequest:JSON.stringify(e),transactionResponse:n}),w({responseFor:t,requestId:r,success:a,error:null,result:n});break}case y.zkEvm.sendTransactionWithConfirmation:{let e=JSON.parse(k),n=T(),a=new u.BrowserProvider(n),i=await a.getSigner(),s=await i.sendTransaction(e),c=await s.wait();(0,l.trackDuration)(g,"performedZkevmSendTransactionWithConfirmation",S(o),{requestId:r,transactionRequest:JSON.stringify(e),transactionResponse:JSON.stringify(c?.toJSON())}),w({responseFor:t,requestId:r,success:!0,error:null,...c?.toJSON()});break}case y.zkEvm.signTypedDataV4:{let e=JSON.parse(k),[n]=await T().request({method:"eth_requestAccounts"}),a=await T().request({method:"eth_signTypedData_v4",params:[n,e]}),i=null!=a;if(!i)throw Error("Failed to sign payload");(0,l.trackDuration)(g,"performedZkevmSignTypedDataV4",S(o),{requestId:r}),w({responseFor:t,requestId:r,success:i,error:null,result:a});break}case y.zkEvm.requestAccounts:{let e=await T().request({method:"eth_requestAccounts"}),n=null!=e;if(!n)throw Error("Failed to request accounts");(0,l.trackDuration)(g,"performedZkevmRequestAccounts",S(o)),w({responseFor:t,requestId:r,success:n,error:null,accounts:e});break}case y.zkEvm.getBalance:{let e=JSON.parse(k),n=await T().request({method:"eth_getBalance",params:[e.address,e.blockNumberOrTag]}),a=null!=n;if(!a)throw Error("Failed to get balance");(0,l.trackDuration)(g,"performedZkevmGetBalance",S(o)),w({responseFor:t,requestId:r,success:a,error:null,result:n});break}case y.zkEvm.getTransactionReceipt:{let e=JSON.parse(k),n=await T().request({method:"eth_getTransactionReceipt",params:[e.txHash]}),a=void 0!==n;if(!a)throw Error("Failed to get transaction receipt");(0,l.trackDuration)(g,"performedZkevmGetTransactionReceipt",S(o)),w({responseFor:t,requestId:r,success:a,error:null,...n});break}case"track":{let e=JSON.parse(k),n=e.properties?JSON.parse(e.properties):{};(0,l.track)(e.moduleName,e.eventName,n),w({responseFor:t,requestId:r,success:!0,error:null});break}default:{let e=JSON.parse(k),n=e.properties?JSON.parse(e.properties):{};n.fxName=t,(0,l.track)(g,"callFunctionDefaultCaseCalled",n),w({responseFor:t,requestId:r,success:!1,error:`Invalid game bridge function: ${t}`})}}}catch(a){let e;console.log(`Error in callFunction: ${a}`),e=a instanceof Error?a:Error(a);let n=a instanceof c.PassportError?a?.type:void 0;(0,l.trackError)(g,t,e,{fxName:t,requestId:r,errorType:n,...s}),(0,l.trackDuration)(g,"failedCallFunction",S(o),{fxName:t,requestId:r,error:e.message}),console.log("callFunction error",e),console.log("callFunction errorType",n),w({responseFor:t,requestId:r,success:!1,error:a?.message!==null&&a?.message!==void 0?a.message:"Error",errorType:a instanceof c.PassportError?a?.type:null})}},window.addEventListener("offline",()=>{console.log("gameBridge offline")}),window.addEventListener("online",()=>{console.log("gameBridge online")}),console.log("index.ts loaded"),o=function(){w({responseFor:"init",requestId:"1",success:!0,error:null})},"complete"===document.readyState?o():window.addEventListener("load",o)},{"@imtbl/passport":"i7Tp1","@imtbl/config":"ifUQV","@imtbl/x-client":"lqVsJ","@imtbl/metrics":"7Q1ml",ethers:"jZqA6"}],i7Tp1:[function(e,t,r){let n,a,i;var s=e("@parcel/transformer-js/src/esmodule-helpers.js");s.defineInteropFlag(r),s.export(r,"JsonRpcError",()=>e4),s.export(r,"Passport",()=>tz),s.export(r,"PassportError",()=>V),s.export(r,"ProviderErrorCode",()=>e8),s.export(r,"ProviderEvent",()=>eV),s.export(r,"RpcErrorCode",()=>e3);var o=e("axios"),c=s.interopDefault(o),f=e("@imtbl/generated-clients"),d=e("@imtbl/x-client"),l=e("@imtbl/config"),u=e("@imtbl/metrics"),h=e("oidc-client-ts"),p=e("jwt-decode"),b=s.interopDefault(p),g=e("localforage"),m=s.interopDefault(g),y=e("magic-sdk"),v=e("@magic-ext/oidc"),w=e("ethers"),x=e("@imtbl/toolkit"),E=e("events"),A=e("@0xsequence/abi"),_=e("@0xsequence/core"),T=e("uuid");function S(e){throw Error("Node.js process "+e+" is not supported by JSPM core outside of Node.js")}var I,k=[],C=!1,R=-1;function M(){C&&I&&(C=!1,I.length?k=I.concat(k):R=-1,k.length&&P())}function P(){if(!C){var e=setTimeout(M,0);C=!0;for(var t=k.length;t;){for(I=k,k=[];++Rtypeof performance?performance.now.bind(performance):void 0,timing:"u">typeof performance?performance.timing:void 0};function L(e){var t=Math.floor((Date.now()-U.now())*.001),r=.001*U.now(),n=Math.floor(r)+t,a=Math.floor(r%1*1e9);return e&&(n-=e[0],(a-=e[1])<0&&(n--,a+=1e9)),[n,a]}function D(){return F}void 0===U.now&&(e7=Date.now(),U.timing&&U.timing.navigationStart&&(e7=U.timing.navigationStart),U.now=()=>Date.now()-e7),L.bigint=function(e){var t=L(e);return typeof BigInt>"u"?1e9*t[0]+t[1]:BigInt(1e9*t[0])+BigInt(t[1])};var F={version:"v16.8.0",versions:{},arch:"x64",platform:"browser",release:{name:"node",sourceUrl:"",headersUrl:"",libUrl:""},_rawDebug:j,moduleLoadList:[],binding:function(e){S("binding")},_linkedBinding:function(e){S("_linkedBinding")},_events:{},_eventsCount:0,_maxListeners:10,on:D,addListener:D,once:D,off:D,removeListener:D,removeAllListeners:D,emit:j,prependListener:D,prependOnceListener:D,listeners:function(e){return[]},domain:{},_exiting:!1,config:{},dlopen:function(e){S("dlopen")},uptime:function(){return U.now()/1e3},_getActiveRequests:function(){return[]},_getActiveHandles:function(){return[]},reallyExit:j,_kill:j,cpuUsage:N,resourceUsage:N,memoryUsage:N,kill:j,exit:j,openStdin:j,allowedNodeEnvironmentFlags:{},assert:function(e,t){if(!e)throw Error(t||"assertion error")},features:{inspector:!1,debug:!1,uv:!1,ipv6:!1,tls_alpn:!1,tls_sni:!1,tls_ocsp:!1,tls:!1,cached_builtins:!0},_fatalExceptions:j,setUncaughtExceptionCaptureCallback:j,hasUncaughtExceptionCaptureCallback:function(){return!1},emitWarning:function(e,t){console.warn((t?t+": ":"")+e)},nextTick:function(e){var t=Array(arguments.length-1);if(arguments.length>1)for(var r=1;r{try{return await e()}catch(e){throw e instanceof V&&"SERVICE_UNAVAILABLE_ERROR"===e.type?new V(e.message,e.type):new V((0,o.isAxiosError)(e)&&e.response?.data&&H(e.response.data)?e.response.data.message:e.message,t)}},z="pkce_state",G="pkce_verifier",K=class{isTokenValid(e){try{let t=(0,b.default)(e).exp??0,r=Date.now()/1e3+3600;return t>r}catch{return!1}}savePKCEData(e){localStorage.setItem(z,e.state),localStorage.setItem(G,e.verifier)}getPKCEData(){let e=localStorage.getItem(z),t=localStorage.getItem(G);return e&&t?{state:e,verifier:t}:null}},W={warn:(...e)=>{typeof F>"u"||F?.env?.JEST_WORKER_ID!==void 0||console.warn(...e)}},$=e=>!!e.zkEvm,J=e=>!!e.imx,Q="passport-overlay",Z=`${Q}-close`,X=`${Q}-try-again`,Y=` +!function(e,t,r,a,n){var i="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},s="function"==typeof i[a]&&i[a],o=s.cache||{},c="undefined"!=typeof module&&"function"==typeof module.require&&module.require.bind(module);function f(t,r){if(!o[t]){if(!e[t]){var n="function"==typeof i[a]&&i[a];if(!r&&n)return n(t,!0);if(s)return s(t,!0);if(c&&"string"==typeof t)return c(t);var d=Error("Cannot find module '"+t+"'");throw d.code="MODULE_NOT_FOUND",d}u.resolve=function(r){var a=e[t][1][r];return null!=a?a:r},u.cache={};var l=o[t]=new f.Module(t);e[t][0].call(l.exports,u,l,l.exports,this)}return o[t].exports;function u(e){var t=u.resolve(e);return!1===t?{}:f(t)}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.exports={}},f.modules=e,f.cache=o,f.parent=s,f.register=function(t,r){e[t]=[function(e,t){t.exports=r},{}]},Object.defineProperty(f,"root",{get:function(){return i[a]}}),i[a]=f;for(var d=0;d{let t=JSON.stringify(e);if(console.log(`callbackToGame: ${t}`),void 0!==window.ue){if(void 0===window.ue.jsconnector){let e="Unreal JSConnector not defined";throw console.error(e),Error(e)}window.ue.jsconnector.sendtogame(t)}else if("undefined"!=typeof blu_event)blu_event("sendtogame",t);else if("undefined"!=typeof UnityPostMessage)UnityPostMessage(t);else if(void 0!==window.Unity)window.Unity.call(t);else if(void 0!==window.uwb)window.uwb.ExecuteJsMethod("callback",t);else{let e="No available game callbacks to call from ImmutableSDK game-bridge";throw console.error(e),Error(e)}},w=()=>{if(null==a)throw Error("No Passport client");return a},E=e=>null!=e?(n=e,console.log("IMX provider set"),!0):(console.log("No IMX provider"),!1),A=()=>{if(null==n)throw Error("No IMX provider");return n},T=e=>null!=e?(i=e,console.log("zkEvm provider set"),!0):(console.log("No zkEvm provider"),!1),_=()=>{if(null==i)throw Error("No zkEvm provider");return i},S=e=>Date.now()-e;(0,l.track)(g,"loadedGameBridge",{sdkVersionTag:m}),window.callFunction=async e=>{console.log(`Call function ${e}`);let t=null,r=null,o=Date.now();try{let I=JSON.parse(e);t=I.fxName,r=I.requestId;let k=I.data;switch(t){case y.init:{let e=JSON.parse(k),n=e?.redirectUri,i=e?.isSilentLogout===!0?"silent":"redirect";if(!a||x!==k){let t;x=k,console.log(`Connecting to ${e.environment} environment`);let r="production"===e.environment?f.Environment.PRODUCTION:f.Environment.SANDBOX,s=new f.ImmutableConfiguration({environment:r});t="dev"===e.environment||"development"===e.environment?{baseConfig:s,clientId:e.clientId,redirectUri:n??b,logoutRedirectUri:e?.logoutRedirectUri,audience:p,scope:h,crossSdkBridgeEnabled:!0,logoutMode:i,overrides:{authenticationDomain:"https://auth.dev.immutable.com",magicPublishableApiKey:"pk_live_4058236363130CA9",magicProviderId:"C9odf7hU4EQ5EufcfgYfcBaT5V6LhocXyiPRhIjw2EY=",passportDomain:"https://passport.dev.immutable.com",imxPublicApiDomain:"https://api.dev.immutable.com",immutableXClient:new d.IMXClient({baseConfig:s,overrides:{immutableXConfig:d.createConfig({basePath:"https://api.dev.x.immutable.com",chainID:5,coreContractAddress:"0xd05323731807A35599BF9798a1DE15e89d6D6eF1",registrationContractAddress:"0x7EB840223a3b1E0e8D54bF8A6cd83df5AFfC88B2"})}}),zkEvmRpcUrl:"https://rpc.dev.immutable.com",relayerUrl:"https://api.dev.immutable.com/relayer-mr",indexerMrBasePath:"https://api.dev.immutable.com",orderBookMrBasePath:"https://api.dev.immutable.com",passportMrBasePath:"https://api.dev.immutable.com"}}:{baseConfig:s,clientId:e.clientId,audience:p,scope:h,redirectUri:n??b,logoutRedirectUri:e?.logoutRedirectUri,crossSdkBridgeEnabled:!0,jsonRpcReferrer:"http://imtblgamesdk.local",logoutMode:i},a=new c.Passport(t),(0,l.trackDuration)(g,"initialisedPassport",S(o))}v({responseFor:t,requestId:r,success:!0,error:null});let{engineVersion:u}=e;s={gameBridgeTag:m,gameBridgeSha:"0139d12be2484437fd13f5a6f0154b1e6767872b",engine:u.engine,engineVersion:u.engineVersion,engineSdkVersion:u.engineSdkVersion??"",platform:u.platform,platformVersion:u.platformVersion,deviceModel:u.deviceModel??"N/A"},console.log(`Version check: ${JSON.stringify(s)}`),(0,l.trackDuration)(g,"completedInitGameBridge",S(o),{...s});break}case y.relogin:{let e=await w().login({useCachedSession:!0}),a=null!==e;if(!a)throw Error("Failed to re-login");(0,l.identify)({passportId:e?.sub}),(0,l.trackDuration)(g,"performedRelogin",S(o),{succeeded:a}),v({responseFor:t,requestId:r,success:null!==e,error:null});break}case y.reconnect:{let e=!1,a=await w().login({useCachedSession:!0});if(a){let t=await w().connectImx();e=E(t),(0,l.identify)({passportId:a?.sub})}if(!e)throw Error("Failed to reconnect");(0,l.trackDuration)(g,"performedReconnect",S(o),{succeeded:null!==a}),v({responseFor:t,requestId:r,success:e,error:null});break}case y.getPKCEAuthUrl:{let e=k?JSON.parse(k):{},a=e?.directLoginMethod,n=await w().loginWithPKCEFlow(a);(0,l.trackDuration)(g,"performedGetPkceAuthUrl",S(o)),v({responseFor:t,requestId:r,success:!0,error:null,result:n});break}case y.loginPKCE:{let e=JSON.parse(k),a=await w().loginWithPKCEFlowCallback(e.authorizationCode,e.state);(0,l.identify)({passportId:a.sub}),(0,l.trackDuration)(g,"performedLoginPkce",S(o)),v({responseFor:t,requestId:r,success:!0,error:null});break}case y.connectPKCE:{let e=JSON.parse(k),a=await w().loginWithPKCEFlowCallback(e.authorizationCode,e.state),n=await w().connectImx(),i=E(n);if(!i)throw Error("Failed to connect via PKCE");(0,l.identify)({passportId:a.sub}),(0,l.trackDuration)(g,"performedConnectPkce",S(o),{succeeded:i}),v({responseFor:t,requestId:r,success:i,error:null});break}case y.logout:{let e=await w().getLogoutUrl();n=null,i=null,(0,l.trackDuration)(g,"performedGetLogoutUrl",S(o)),v({responseFor:t,requestId:r,success:!0,error:null,result:e});break}case y.getAccessToken:{let e=await w().getAccessToken(),a=void 0!==e;if(!a)throw Error("No access token");(0,l.trackDuration)(g,"performedGetAccessToken",S(o)),v({responseFor:t,requestId:r,success:a,error:null,result:e});break}case y.getIdToken:{let e=await w().getIdToken(),a=void 0!==e;if(!a)throw Error("No ID token");(0,l.trackDuration)(g,"performedGetIdToken",S(o)),v({responseFor:t,requestId:r,success:a,error:null,result:e});break}case y.getEmail:{let e=await w().getUserInfo(),a=e?.email!==void 0;if(!a)throw Error("No email");(0,l.trackDuration)(g,"performedGetEmail",S(o)),v({responseFor:t,requestId:r,success:a,error:null,result:e?.email});break}case y.getPassportId:{let e=await w().getUserInfo(),a=e?.sub!==void 0;if(!a)throw Error("No Passport ID");(0,l.trackDuration)(g,"performedGetPassportId",S(o)),v({responseFor:t,requestId:r,success:a,error:null,result:e?.sub});break}case y.getLinkedAddresses:{let e=await w().getLinkedAddresses();(0,l.trackDuration)(g,"performedGetLinkedAddresses",S(o)),v({responseFor:t,requestId:r,success:!0,error:null,result:e});break}case y.imx.getAddress:{let e=await A().getAddress();(0,l.trackDuration)(g,"performedImxGetAddress",S(o)),v({responseFor:t,requestId:r,success:!0,error:null,result:e});break}case y.imx.isRegisteredOffchain:{let e=await A().isRegisteredOffchain();(0,l.trackDuration)(g,"performedImxIsRegisteredOffchain",S(o)),v({responseFor:t,requestId:r,success:!0,error:null,result:e});break}case y.imx.registerOffchain:{let e=await A().registerOffchain();(0,l.trackDuration)(g,"performedImxRegisterOffchain",S(o)),v({responseFor:t,requestId:r,success:!0,error:null,...e});break}case y.imx.transfer:{let e=JSON.parse(k),a=await A().transfer(e);(0,l.trackDuration)(g,"performedImxTransfer",S(o),{requestId:r,transferRequest:JSON.stringify(e),transferResponse:JSON.stringify(a)}),v({responseFor:t,requestId:r,success:!0,error:null,...a});break}case y.imx.batchNftTransfer:{let e=JSON.parse(k),a=await A().batchNftTransfer(e);(0,l.trackDuration)(g,"performedImxBatchNftTransfer",S(o),{requestId:r,transferRequest:JSON.stringify(e),transferResponse:JSON.stringify(a)}),v({responseFor:t,requestId:r,success:!0,error:null,...a});break}case y.zkEvm.connectEvm:{let e=await w().connectEvm(),a=T(e);if(!a)throw Error("Failed to connect to EVM");(0,l.trackDuration)(g,"performedZkevmConnectEvm",S(o),{succeeded:a}),v({responseFor:t,requestId:r,success:a,error:null});break}case y.zkEvm.sendTransaction:{let e=JSON.parse(k),a=await _().request({method:"eth_sendTransaction",params:[e]}),n=null!=a;if(!n)throw Error("Failed to send transaction");(0,l.trackDuration)(g,"performedZkevmSendTransaction",S(o),{requestId:r,transactionRequest:JSON.stringify(e),transactionResponse:a}),v({responseFor:t,requestId:r,success:n,error:null,result:a});break}case y.zkEvm.sendTransactionWithConfirmation:{let e=JSON.parse(k),a=_(),n=new u.BrowserProvider(a),i=await n.getSigner(),s=await i.sendTransaction(e),c=await s.wait();(0,l.trackDuration)(g,"performedZkevmSendTransactionWithConfirmation",S(o),{requestId:r,transactionRequest:JSON.stringify(e),transactionResponse:JSON.stringify(c?.toJSON())}),v({responseFor:t,requestId:r,success:!0,error:null,...c?.toJSON()});break}case y.zkEvm.signTypedDataV4:{let e=JSON.parse(k),[a]=await _().request({method:"eth_requestAccounts"}),n=await _().request({method:"eth_signTypedData_v4",params:[a,e]}),i=null!=n;if(!i)throw Error("Failed to sign payload");(0,l.trackDuration)(g,"performedZkevmSignTypedDataV4",S(o),{requestId:r}),v({responseFor:t,requestId:r,success:i,error:null,result:n});break}case y.zkEvm.requestAccounts:{let e=await _().request({method:"eth_requestAccounts"}),a=null!=e;if(!a)throw Error("Failed to request accounts");(0,l.trackDuration)(g,"performedZkevmRequestAccounts",S(o)),v({responseFor:t,requestId:r,success:a,error:null,accounts:e});break}case y.zkEvm.getBalance:{let e=JSON.parse(k),a=await _().request({method:"eth_getBalance",params:[e.address,e.blockNumberOrTag]}),n=null!=a;if(!n)throw Error("Failed to get balance");(0,l.trackDuration)(g,"performedZkevmGetBalance",S(o)),v({responseFor:t,requestId:r,success:n,error:null,result:a});break}case y.zkEvm.getTransactionReceipt:{let e=JSON.parse(k),a=await _().request({method:"eth_getTransactionReceipt",params:[e.txHash]}),n=void 0!==a;if(!n)throw Error("Failed to get transaction receipt");(0,l.trackDuration)(g,"performedZkevmGetTransactionReceipt",S(o)),v({responseFor:t,requestId:r,success:n,error:null,...a});break}case"track":{let e=JSON.parse(k),a=e.properties?JSON.parse(e.properties):{};(0,l.track)(e.moduleName,e.eventName,a),v({responseFor:t,requestId:r,success:!0,error:null});break}default:{let e=JSON.parse(k),a=e.properties?JSON.parse(e.properties):{};a.fxName=t,(0,l.track)(g,"callFunctionDefaultCaseCalled",a),v({responseFor:t,requestId:r,success:!1,error:`Invalid game bridge function: ${t}`})}}}catch(n){let e;console.log(`Error in callFunction: ${n}`),e=n instanceof Error?n:Error(n);let a=n instanceof c.PassportError?n?.type:void 0;(0,l.trackError)(g,t,e,{fxName:t,requestId:r,errorType:a,...s}),(0,l.trackDuration)(g,"failedCallFunction",S(o),{fxName:t,requestId:r,error:e.message}),console.log("callFunction error",e),console.log("callFunction errorType",a),v({responseFor:t,requestId:r,success:!1,error:n?.message!==null&&n?.message!==void 0?n.message:"Error",errorType:n instanceof c.PassportError?n?.type:null})}},window.addEventListener("offline",()=>{console.log("gameBridge offline")}),window.addEventListener("online",()=>{console.log("gameBridge online")}),console.log("index.ts loaded"),o=function(){v({responseFor:"init",requestId:"1",success:!0,error:null})},"complete"===document.readyState?o():window.addEventListener("load",o)},{"@imtbl/passport":"i7Tp1","@imtbl/config":"ifUQV","@imtbl/x-client":"lqVsJ","@imtbl/metrics":"7Q1ml",ethers:"jZqA6"}],i7Tp1:[function(e,t,r){let a,n,i;var s=e("@parcel/transformer-js/src/esmodule-helpers.js");s.defineInteropFlag(r),s.export(r,"JsonRpcError",()=>e9),s.export(r,"Passport",()=>tK),s.export(r,"PassportError",()=>H),s.export(r,"ProviderErrorCode",()=>e3),s.export(r,"ProviderEvent",()=>eq),s.export(r,"RpcErrorCode",()=>e4);var o=e("axios"),c=s.interopDefault(o),f=e("@imtbl/generated-clients"),d=e("@imtbl/x-client"),l=e("@imtbl/config"),u=e("@imtbl/metrics"),h=e("oidc-client-ts"),p=e("jwt-decode"),b=s.interopDefault(p),g=e("localforage"),m=s.interopDefault(g),y=e("magic-sdk"),x=e("@magic-ext/oidc"),v=e("ethers"),w=e("@imtbl/toolkit"),E=e("events"),A=e("@0xsequence/abi"),T=e("@0xsequence/core"),_=e("uuid");function S(e){throw Error("Node.js process "+e+" is not supported by JSPM core outside of Node.js")}var I,k=[],C=!1,R=-1;function M(){C&&I&&(C=!1,I.length?k=I.concat(k):R=-1,k.length&&P())}function P(){if(!C){var e=setTimeout(M,0);C=!0;for(var t=k.length;t;){for(I=k,k=[];++Rtypeof performance?performance.now.bind(performance):void 0,timing:"u">typeof performance?performance.timing:void 0};function L(e){var t=Math.floor((Date.now()-U.now())*.001),r=.001*U.now(),a=Math.floor(r)+t,n=Math.floor(r%1*1e9);return e&&(a-=e[0],(n-=e[1])<0&&(a--,n+=1e9)),[a,n]}function D(){return F}void 0===U.now&&(te=Date.now(),U.timing&&U.timing.navigationStart&&(te=U.timing.navigationStart),U.now=()=>Date.now()-te),L.bigint=function(e){var t=L(e);return typeof BigInt>"u"?1e9*t[0]+t[1]:BigInt(1e9*t[0])+BigInt(t[1])};var F={version:"v16.8.0",versions:{},arch:"x64",platform:"browser",release:{name:"node",sourceUrl:"",headersUrl:"",libUrl:""},_rawDebug:O,moduleLoadList:[],binding:function(e){S("binding")},_linkedBinding:function(e){S("_linkedBinding")},_events:{},_eventsCount:0,_maxListeners:10,on:D,addListener:D,once:D,off:D,removeListener:D,removeAllListeners:D,emit:O,prependListener:D,prependOnceListener:D,listeners:function(e){return[]},domain:{},_exiting:!1,config:{},dlopen:function(e){S("dlopen")},uptime:function(){return U.now()/1e3},_getActiveRequests:function(){return[]},_getActiveHandles:function(){return[]},reallyExit:O,_kill:O,cpuUsage:N,resourceUsage:N,memoryUsage:N,kill:O,exit:O,openStdin:O,allowedNodeEnvironmentFlags:{},assert:function(e,t){if(!e)throw Error(t||"assertion error")},features:{inspector:!1,debug:!1,uv:!1,ipv6:!1,tls_alpn:!1,tls_sni:!1,tls_ocsp:!1,tls:!1,cached_builtins:!0},_fatalExceptions:O,setUncaughtExceptionCaptureCallback:O,hasUncaughtExceptionCaptureCallback:function(){return!1},emitWarning:function(e,t){console.warn((t?t+": ":"")+e)},nextTick:function(e){var t=Array(arguments.length-1);if(arguments.length>1)for(var r=1;r{try{return await e()}catch(e){throw e instanceof H&&"SERVICE_UNAVAILABLE_ERROR"===e.type?new H(e.message,e.type):new H((0,o.isAxiosError)(e)&&e.response?.data&&V(e.response.data)?e.response.data.message:e.message,t)}},z="pkce_state",K="pkce_verifier",G=class{isTokenValid(e){try{let t=(0,b.default)(e).exp??0,r=Date.now()/1e3+3600;return t>r}catch{return!1}}savePKCEData(e){localStorage.setItem(z,e.state),localStorage.setItem(K,e.verifier)}getPKCEData(){let e=localStorage.getItem(z),t=localStorage.getItem(K);return e&&t?{state:e,verifier:t}:null}},W={warn:(...e)=>{typeof F>"u"||F?.env?.JEST_WORKER_ID!==void 0||console.warn(...e)}};function $(e){try{let t=(0,b.default)(e),r=Math.floor(Date.now()/1e3);return!t.exp||t.exp<=r+30}catch{return!0}}var J=e=>!!e.zkEvm,Q=e=>!!e.imx,Z="passport-overlay",X=`${Z}-close`,Y=`${Z}-try-again`,ee=` -`,ee=` +`,et=` -`,et=` +`,er=` - ${Y} + ${ee} `,en=()=>`
- ${ee} + ${et} Pop-up blocked

Secure pop-up not showing?
We'll help you re-launch

- `,ei=()=>` + `,es=()=>`