diff --git a/Web/index.js b/Web/index.js index c6cb55d5..9cae1d47 100644 --- a/Web/index.js +++ b/Web/index.js @@ -1,4 +1,4 @@ -!function(e,t,r,i,n){var a="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},s="function"==typeof a[i]&&a[i],o=s.cache||{},f="undefined"!=typeof module&&"function"==typeof module.require&&module.require.bind(module);function c(t,r){if(!o[t]){if(!e[t]){var n="function"==typeof a[i]&&a[i];if(!r&&n)return n(t,!0);if(s)return s(t,!0);if(f&&"string"==typeof t)return f(t);var d=Error("Cannot find module '"+t+"'");throw d.code="MODULE_NOT_FOUND",d}l.resolve=function(r){var i=e[t][1][r];return null!=i?i:r},l.cache={};var u=o[t]=new c.Module(t);e[t][0].call(u.exports,l,u,u.exports,this)}return o[t].exports;function l(e){var t=l.resolve(e);return!1===t?{}:c(t)}}c.isParcelRequire=!0,c.Module=function(e){this.id=e,this.bundle=c,this.exports={}},c.modules=e,c.cache=o,c.parent=s,c.register=function(t,r){e[t]=[function(e,t){t.exports=r},{}]},Object.defineProperty(c,"root",{get:function(){return a[i]}}),a[i]=c;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("undefined"!==window.Unity)window.Unity.call(t);else{let e="No available game callbacks to call from ImmutableSDK game-bridge";throw console.error(e),Error(e)}},w=()=>{if(null==i)throw Error("No Passport client");return i},_=e=>null!=e?(n=e,console.log("IMX provider set"),!0):(console.log("No IMX provider"),!1),M=()=>{if(null==n)throw Error("No IMX provider");return n},E=e=>null!=e?(a=e,console.log("zkEvm provider set"),!0):(console.log("No zkEvm provider"),!1),A=()=>{if(null==a)throw Error("No zkEvm provider");return a},S=e=>Date.now()-e;(0,u.track)(m,"loadedGameBridge",{sdkVersionTag:g}),window.callFunction=async e=>{console.log(`Call function ${e}`);let t=null,r=null,o=Date.now();try{let x=JSON.parse(e);t=x.fxName,r=x.requestId;let I=x.data;switch(t){case y.init:{let e=JSON.parse(I),n=e?.redirectUri,a=e?.isSilentLogout===!0?"silent":"redirect";if(!i){let t;console.log(`Connecting to ${e.environment} environment`);let r="production"===e.environment?c.Environment.PRODUCTION:c.Environment.SANDBOX,s=new c.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:a,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:a},i=new f.Passport(t),(0,u.trackDuration)(m,"initialisedPassport",S(o))}v({responseFor:t,requestId:r,success:!0,error:null});let{engineVersion:l}=e;s={gameBridgeTag:g,gameBridgeSha:"f8a71343c524195366c3db6439b8e0f01dae3626",engine:l.engine,engineVersion:l.engineVersion,engineSdkVersion:l.engineSdkVersion??"",platform:l.platform,platformVersion:l.platformVersion,deviceModel:l.deviceModel??"N/A"},console.log(`Version check: ${JSON.stringify(s)}`),(0,u.trackDuration)(m,"completedInitGameBridge",S(o),{...s});break}case y.initDeviceFlow:{let e=await w().loginWithDeviceFlow();(0,u.trackDuration)(m,"performedInitDeviceFlow",S(o)),v({responseFor:t,requestId:r,success:!0,error:null,code:e.code,deviceCode:e.deviceCode,url:e.url,interval:e.interval});break}case y.relogin:{let e=await w().login({useCachedSession:!0}),i=null!==e;if(!i)throw Error("Failed to re-login");(0,u.identify)({passportId:e?.sub}),(0,u.trackDuration)(m,"performedRelogin",S(o),{succeeded:i}),v({responseFor:t,requestId:r,success:null!==e,error:null});break}case y.reconnect:{let e=!1,i=await w().login({useCachedSession:!0});if(i){let t=await w().connectImx();e=_(t),(0,u.identify)({passportId:i?.sub})}if(!e)throw Error("Failed to reconnect");(0,u.trackDuration)(m,"performedReconnect",S(o),{succeeded:null!==i}),v({responseFor:t,requestId:r,success:e,error:null});break}case y.getPKCEAuthUrl:{let e=w().loginWithPKCEFlow();(0,u.trackDuration)(m,"performedGetPkceAuthUrl",S(o)),v({responseFor:t,requestId:r,success:!0,error:null,result:e});break}case y.loginPKCE:{let e=JSON.parse(I),i=await w().loginWithPKCEFlowCallback(e.authorizationCode,e.state);(0,u.identify)({passportId:i.sub}),(0,u.trackDuration)(m,"performedLoginPkce",S(o)),v({responseFor:t,requestId:r,success:!0,error:null});break}case y.connectPKCE:{let e=JSON.parse(I),i=await w().loginWithPKCEFlowCallback(e.authorizationCode,e.state),n=await w().connectImx(),a=_(n);if(!a)throw Error("Failed to connect via PKCE");(0,u.identify)({passportId:i.sub}),(0,u.trackDuration)(m,"performedConnectPkce",S(o),{succeeded:a}),v({responseFor:t,requestId:r,success:a,error:null});break}case y.loginConfirmCode:{let e=JSON.parse(I),i=await w().loginWithDeviceFlowCallback(e.deviceCode,e.interval,e.timeoutMs??null);(0,u.identify)({passportId:i.sub}),(0,u.trackDuration)(m,"performedLoginConfirmCode",S(o)),v({responseFor:t,requestId:r,success:!0,error:null});break}case y.connectConfirmCode:{let e=JSON.parse(I),i=await w().loginWithDeviceFlowCallback(e.deviceCode,e.interval,e.timeoutMs??null),n=await w().connectImx(),a=_(n);if(!a)throw Error("Failed to connect via confirm code");(0,u.identify)({passportId:i.sub}),(0,u.trackDuration)(m,"performedConnectConfirmCode",S(o),{succeeded:a}),v({responseFor:t,requestId:r,success:a,error:null});break}case y.logout:{let e=await w().logoutDeviceFlow();n=null,a=null,(0,u.trackDuration)(m,"performedGetLogoutUrl",S(o)),v({responseFor:t,requestId:r,success:!0,error:null,result:e});break}case y.getAccessToken:{let e=await w().getAccessToken(),i=void 0!==e;if(!i)throw Error("No access token");(0,u.trackDuration)(m,"performedGetAccessToken",S(o)),v({responseFor:t,requestId:r,success:i,error:null,result:e});break}case y.getIdToken:{let e=await w().getIdToken(),i=void 0!==e;if(!i)throw Error("No ID token");(0,u.trackDuration)(m,"performedGetIdToken",S(o)),v({responseFor:t,requestId:r,success:i,error:null,result:e});break}case y.getEmail:{let e=await w().getUserInfo(),i=e?.email!==void 0;if(!i)throw Error("No email");(0,u.trackDuration)(m,"performedGetEmail",S(o)),v({responseFor:t,requestId:r,success:i,error:null,result:e?.email});break}case y.getPassportId:{let e=await w().getUserInfo(),i=e?.sub!==void 0;if(!i)throw Error("No Passport ID");(0,u.trackDuration)(m,"performedGetPassportId",S(o)),v({responseFor:t,requestId:r,success:i,error:null,result:e?.sub});break}case y.getLinkedAddresses:{let e=await w().getLinkedAddresses();(0,u.trackDuration)(m,"performedGetLinkedAddresses",S(o)),v({responseFor:t,requestId:r,success:!0,error:null,result:e});break}case y.imx.getAddress:{let e=await M().getAddress();(0,u.trackDuration)(m,"performedImxGetAddress",S(o)),v({responseFor:t,requestId:r,success:!0,error:null,result:e});break}case y.imx.isRegisteredOffchain:{let e=await M().isRegisteredOffchain();(0,u.trackDuration)(m,"performedImxIsRegisteredOffchain",S(o)),v({responseFor:t,requestId:r,success:!0,error:null,result:e});break}case y.imx.registerOffchain:{let e=await M().registerOffchain();(0,u.trackDuration)(m,"performedImxRegisterOffchain",S(o)),v({responseFor:t,requestId:r,success:!0,error:null,...e});break}case y.imx.transfer:{let e=JSON.parse(I),i=await M().transfer(e);(0,u.trackDuration)(m,"performedImxTransfer",S(o),{requestId:r,transferRequest:JSON.stringify(e),transferResponse:JSON.stringify(i)}),v({responseFor:t,requestId:r,success:!0,error:null,...i});break}case y.imx.batchNftTransfer:{let e=JSON.parse(I),i=await M().batchNftTransfer(e);(0,u.trackDuration)(m,"performedImxBatchNftTransfer",S(o),{requestId:r,transferRequest:JSON.stringify(e),transferResponse:JSON.stringify(i)}),v({responseFor:t,requestId:r,success:!0,error:null,...i});break}case y.zkEvm.connectEvm:{let e=w().connectEvm(),i=E(e);if(!i)throw Error("Failed to connect to EVM");(0,u.trackDuration)(m,"performedZkevmConnectEvm",S(o),{succeeded:i}),v({responseFor:t,requestId:r,success:i,error:null});break}case y.zkEvm.sendTransaction:{let e=JSON.parse(I),i=await A().request({method:"eth_sendTransaction",params:[e]}),n=null!=i;if(!n)throw Error("Failed to send transaction");(0,u.trackDuration)(m,"performedZkevmSendTransaction",S(o),{requestId:r,transactionRequest:JSON.stringify(e),transactionResponse:i}),v({responseFor:t,requestId:r,success:n,error:null,result:i});break}case y.zkEvm.sendTransactionWithConfirmation:{let e=JSON.parse(I),i=A(),n=new l.providers.Web3Provider(i),a=n.getSigner(),s=await a.sendTransaction(e),f=await s.wait();(0,u.trackDuration)(m,"performedZkevmSendTransactionWithConfirmation",S(o),{requestId:r,transactionRequest:JSON.stringify(e),transactionResponse:JSON.stringify(f)}),v({responseFor:t,requestId:r,success:!0,error:null,...f});break}case y.zkEvm.signTypedDataV4:{let e=JSON.parse(I),[i]=await A().request({method:"eth_requestAccounts"}),n=await A().request({method:"eth_signTypedData_v4",params:[i,e]}),a=null!=n;if(!a)throw Error("Failed to sign payload");(0,u.trackDuration)(m,"performedZkevmSignTypedDataV4",S(o),{requestId:r}),v({responseFor:t,requestId:r,success:a,error:null,result:n});break}case y.zkEvm.requestAccounts:{let e=await A().request({method:"eth_requestAccounts"}),i=null!=e;if(!i)throw Error("Failed to request accounts");(0,u.trackDuration)(m,"performedZkevmRequestAccounts",S(o)),v({responseFor:t,requestId:r,success:i,error:null,accounts:e});break}case y.zkEvm.getBalance:{let e=JSON.parse(I),i=await A().request({method:"eth_getBalance",params:[e.address,e.blockNumberOrTag]}),n=null!=i;if(!n)throw Error("Failed to get balance");(0,u.trackDuration)(m,"performedZkevmGetBalance",S(o)),v({responseFor:t,requestId:r,success:n,error:null,result:i});break}case y.zkEvm.getTransactionReceipt:{let e=JSON.parse(I),i=await A().request({method:"eth_getTransactionReceipt",params:[e.txHash]}),n=void 0!==i;if(!n)throw Error("Failed to get transaction receipt");(0,u.trackDuration)(m,"performedZkevmGetTransactionReceipt",S(o)),v({responseFor:t,requestId:r,success:n,error:null,...i});break}case"track":{let e=JSON.parse(I),i=e.properties?JSON.parse(e.properties):{};(0,u.track)(e.moduleName,e.eventName,i),v({responseFor:t,requestId:r,success:!0,error:null});break}default:{let e=JSON.parse(I),i=e.properties?JSON.parse(e.properties):{};i.fxName=t,(0,u.track)(m,"callFunctionDefaultCaseCalled",i),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 i=n instanceof f.PassportError?n?.type:void 0;(0,u.trackError)(m,t,e,{fxName:t,requestId:r,errorType:i,...s}),(0,u.trackDuration)(m,"failedCallFunction",S(o),{fxName:t,requestId:r,error:e.message}),console.log("callFunction error",e),console.log("callFunction errorType",i),v({responseFor:t,requestId:r,success:!1,error:n?.message!==null&&n?.message!==void 0?n.message:"Error",errorType:n instanceof f.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":"iPtWy","@imtbl/config":"ed8SG","@imtbl/x-client":"hV3j7","@imtbl/metrics":"dO0KB",ethers:"8wpcu"}],iPtWy:[function(e,t,r){let i;var n,a,s,o,f,c,d,u,l,h,p,b,m,g,y=e("@parcel/transformer-js/src/esmodule-helpers.js");y.defineInteropFlag(r),y.export(r,"JsonRpcError",()=>e3),y.export(r,"Passport",()=>tN),y.export(r,"PassportError",()=>z),y.export(r,"ProviderErrorCode",()=>m),y.export(r,"ProviderEvent",()=>b),y.export(r,"RpcErrorCode",()=>g);var v=e("axios"),w=y.interopDefault(v),_=e("@imtbl/generated-clients"),M=e("@imtbl/x-client"),E=e("@imtbl/config"),A=e("@imtbl/metrics"),S=e("oidc-client-ts"),x=e("crypto"),I=e("jwt-decode"),k=y.interopDefault(I),T=e("localforage"),R=y.interopDefault(T),C=e("magic-sdk"),P=e("@magic-ext/oidc"),N=e("@ethersproject/providers"),O=e("@imtbl/toolkit"),j=e("ethers"),B=e("events"),L=e("@0xsequence/abi"),D=e("@0xsequence/core"),F=e("uuid"),U=e("a7402fb880ab41a1");function q(e){return"code"in e&&"message"in e}(n=d||(d={})).AUTHENTICATION_ERROR="AUTHENTICATION_ERROR",n.INVALID_CONFIGURATION="INVALID_CONFIGURATION",n.WALLET_CONNECTION_ERROR="WALLET_CONNECTION_ERROR",n.NOT_LOGGED_IN_ERROR="NOT_LOGGED_IN_ERROR",n.SILENT_LOGIN_ERROR="SILENT_LOGIN_ERROR",n.REFRESH_TOKEN_ERROR="REFRESH_TOKEN_ERROR",n.USER_REGISTRATION_ERROR="USER_REGISTRATION_ERROR",n.USER_NOT_REGISTERED_ERROR="USER_NOT_REGISTERED_ERROR",n.LOGOUT_ERROR="LOGOUT_ERROR",n.TRANSFER_ERROR="TRANSFER_ERROR",n.CREATE_ORDER_ERROR="CREATE_ORDER_ERROR",n.CANCEL_ORDER_ERROR="CANCEL_ORDER_ERROR",n.EXCHANGE_TRANSFER_ERROR="EXCHANGE_TRANSFER_ERROR",n.CREATE_TRADE_ERROR="CREATE_TRADE_ERROR",n.OPERATION_NOT_SUPPORTED_ERROR="OPERATION_NOT_SUPPORTED_ERROR",n.LINK_WALLET_ALREADY_LINKED_ERROR="LINK_WALLET_ALREADY_LINKED_ERROR",n.LINK_WALLET_MAX_WALLETS_LINKED_ERROR="LINK_WALLET_MAX_WALLETS_LINKED_ERROR",n.LINK_WALLET_VALIDATION_ERROR="LINK_WALLET_VALIDATION_ERROR",n.LINK_WALLET_DUPLICATE_NONCE_ERROR="LINK_WALLET_DUPLICATE_NONCE_ERROR",n.LINK_WALLET_GENERIC_ERROR="LINK_WALLET_GENERIC_ERROR";class z extends Error{type;constructor(e,t){super(e),this.type=t}}let K=async(e,t)=>{try{return await e()}catch(r){let e;throw e=(0,v.isAxiosError)(r)&&r.response?.data&&q(r.response.data)?r.response.data.message:r.message,new z(e,t)}},H="pkce_state",W="pkce_verifier";class V{areValid(e){if(e){let t=this.isTokenValid(e.access_token),r=this.isTokenValid(e.id_token);return t&&r}return!1}isTokenValid(e){try{let t=(0,k.default)(e),r=t.exp??0,i=Date.now()/1e3+3600;return r>i}catch(e){return!1}}savePKCEData(e){localStorage.setItem(H,e.state),localStorage.setItem(W,e.verifier)}getPKCEData(){let e=localStorage.getItem(H),t=localStorage.getItem(W);return e&&t?{state:e,verifier:t}:null}}var G={warn:(...e)=>{if(void 0===U)return;let t=U?.env?.JEST_WORKER_ID===void 0;t&&console.warn(...e)}};(a=u||(u={})).LOGGED_OUT="loggedOut",a.LOGGED_IN="loggedIn",a.ACCOUNTS_REQUESTED="accountsRequested";let J=e=>!!e.zkEvm,Z=e=>!!e.imx,X="passport-overlay",$=`${X}-close`,Y=`${X}-try-again`,Q=` +!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||{},f="undefined"!=typeof module&&"function"==typeof module.require&&module.require.bind(module);function c(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(f&&"string"==typeof t)return f(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 c.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?{}:c(t)}}c.isParcelRequire=!0,c.Module=function(e){this.id=e,this.bundle=c,this.exports={}},c.modules=e,c.cache=o,c.parent=s,c.register=function(t,r){e[t]=[function(e,t){t.exports=r},{}]},Object.defineProperty(c,"root",{get:function(){return i[n]}}),i[n]=c;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==n)throw Error("No Passport client");return n},x=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=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},T=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 S=JSON.parse(e);t=S.fxName,r=S.requestId;let I=S.data;switch(t){case y.init:{let e=JSON.parse(I),a=e?.redirectUri,i=e?.isSilentLogout===!0?"silent":"redirect";if(!n){let t;console.log(`Connecting to ${e.environment} environment`);let r="production"===e.environment?c.Environment.PRODUCTION:c.Environment.SANDBOX,s=new c.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 f.Passport(t),(0,l.trackDuration)(g,"initialisedPassport",T(o))}v({responseFor:t,requestId:r,success:!0,error:null});let{engineVersion:u}=e;s={gameBridgeTag:m,gameBridgeSha:"c7069e270e9da785649af51160952663eb34c792",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",T(o),{...s});break}case y.initDeviceFlow:{let e=await w().loginWithDeviceFlow();(0,l.trackDuration)(g,"performedInitDeviceFlow",T(o)),v({responseFor:t,requestId:r,success:!0,error:null,code:e.code,deviceCode:e.deviceCode,url:e.url,interval:e.interval});break}case y.relogin:{let e=await w().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",T(o),{succeeded:n}),v({responseFor:t,requestId:r,success:null!==e,error:null});break}case y.reconnect:{let e=!1,n=await w().login({useCachedSession:!0});if(n){let t=await w().connectImx();e=x(t),(0,l.identify)({passportId:n?.sub})}if(!e)throw Error("Failed to reconnect");(0,l.trackDuration)(g,"performedReconnect",T(o),{succeeded:null!==n}),v({responseFor:t,requestId:r,success:e,error:null});break}case y.getPKCEAuthUrl:{let e=await w().loginWithPKCEFlow();(0,l.trackDuration)(g,"performedGetPkceAuthUrl",T(o)),v({responseFor:t,requestId:r,success:!0,error:null,result:e});break}case y.loginPKCE:{let e=JSON.parse(I),n=await w().loginWithPKCEFlowCallback(e.authorizationCode,e.state);(0,l.identify)({passportId:n.sub}),(0,l.trackDuration)(g,"performedLoginPkce",T(o)),v({responseFor:t,requestId:r,success:!0,error:null});break}case y.connectPKCE:{let e=JSON.parse(I),n=await w().loginWithPKCEFlowCallback(e.authorizationCode,e.state),a=await w().connectImx(),i=x(a);if(!i)throw Error("Failed to connect via PKCE");(0,l.identify)({passportId:n.sub}),(0,l.trackDuration)(g,"performedConnectPkce",T(o),{succeeded:i}),v({responseFor:t,requestId:r,success:i,error:null});break}case y.loginConfirmCode:{let e=JSON.parse(I),n=await w().loginWithDeviceFlowCallback(e.deviceCode,e.interval,e.timeoutMs??null);(0,l.identify)({passportId:n.sub}),(0,l.trackDuration)(g,"performedLoginConfirmCode",T(o)),v({responseFor:t,requestId:r,success:!0,error:null});break}case y.connectConfirmCode:{let e=JSON.parse(I),n=await w().loginWithDeviceFlowCallback(e.deviceCode,e.interval,e.timeoutMs??null),a=await w().connectImx(),i=x(a);if(!i)throw Error("Failed to connect via confirm code");(0,l.identify)({passportId:n.sub}),(0,l.trackDuration)(g,"performedConnectConfirmCode",T(o),{succeeded:i}),v({responseFor:t,requestId:r,success:i,error:null});break}case y.logout:{let e=await w().logoutDeviceFlow();a=null,i=null,(0,l.trackDuration)(g,"performedGetLogoutUrl",T(o)),v({responseFor:t,requestId:r,success:!0,error:null,result:e});break}case y.getAccessToken:{let e=await w().getAccessToken(),n=void 0!==e;if(!n)throw Error("No access token");(0,l.trackDuration)(g,"performedGetAccessToken",T(o)),v({responseFor:t,requestId:r,success:n,error:null,result:e});break}case y.getIdToken:{let e=await w().getIdToken(),n=void 0!==e;if(!n)throw Error("No ID token");(0,l.trackDuration)(g,"performedGetIdToken",T(o)),v({responseFor:t,requestId:r,success:n,error:null,result:e});break}case y.getEmail:{let e=await w().getUserInfo(),n=e?.email!==void 0;if(!n)throw Error("No email");(0,l.trackDuration)(g,"performedGetEmail",T(o)),v({responseFor:t,requestId:r,success:n,error:null,result:e?.email});break}case y.getPassportId:{let e=await w().getUserInfo(),n=e?.sub!==void 0;if(!n)throw Error("No Passport ID");(0,l.trackDuration)(g,"performedGetPassportId",T(o)),v({responseFor:t,requestId:r,success:n,error:null,result:e?.sub});break}case y.getLinkedAddresses:{let e=await w().getLinkedAddresses();(0,l.trackDuration)(g,"performedGetLinkedAddresses",T(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",T(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",T(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",T(o)),v({responseFor:t,requestId:r,success:!0,error:null,...e});break}case y.imx.transfer:{let e=JSON.parse(I),n=await A().transfer(e);(0,l.trackDuration)(g,"performedImxTransfer",T(o),{requestId:r,transferRequest:JSON.stringify(e),transferResponse:JSON.stringify(n)}),v({responseFor:t,requestId:r,success:!0,error:null,...n});break}case y.imx.batchNftTransfer:{let e=JSON.parse(I),n=await A().batchNftTransfer(e);(0,l.trackDuration)(g,"performedImxBatchNftTransfer",T(o),{requestId:r,transferRequest:JSON.stringify(e),transferResponse:JSON.stringify(n)}),v({responseFor:t,requestId:r,success:!0,error:null,...n});break}case y.zkEvm.connectEvm:{let e=await w().connectEvm(),n=E(e);if(!n)throw Error("Failed to connect to EVM");(0,l.trackDuration)(g,"performedZkevmConnectEvm",T(o),{succeeded:n}),v({responseFor:t,requestId:r,success:n,error:null});break}case y.zkEvm.sendTransaction:{let e=JSON.parse(I),n=await _().request({method:"eth_sendTransaction",params:[e]}),a=null!=n;if(!a)throw Error("Failed to send transaction");(0,l.trackDuration)(g,"performedZkevmSendTransaction",T(o),{requestId:r,transactionRequest:JSON.stringify(e),transactionResponse:n}),v({responseFor:t,requestId:r,success:a,error:null,result:n});break}case y.zkEvm.sendTransactionWithConfirmation:{let e=JSON.parse(I),n=_(),a=new u.BrowserProvider(n),i=await a.getSigner(),s=await i.sendTransaction(e),f=await s.wait();(0,l.trackDuration)(g,"performedZkevmSendTransactionWithConfirmation",T(o),{requestId:r,transactionRequest:JSON.stringify(e),transactionResponse:JSON.stringify(f?.toJSON())}),v({responseFor:t,requestId:r,success:!0,error:null,...f?.toJSON()});break}case y.zkEvm.signTypedDataV4:{let e=JSON.parse(I),[n]=await _().request({method:"eth_requestAccounts"}),a=await _().request({method:"eth_signTypedData_v4",params:[n,e]}),i=null!=a;if(!i)throw Error("Failed to sign payload");(0,l.trackDuration)(g,"performedZkevmSignTypedDataV4",T(o),{requestId:r}),v({responseFor:t,requestId:r,success:i,error:null,result:a});break}case y.zkEvm.requestAccounts:{let e=await _().request({method:"eth_requestAccounts"}),n=null!=e;if(!n)throw Error("Failed to request accounts");(0,l.trackDuration)(g,"performedZkevmRequestAccounts",T(o)),v({responseFor:t,requestId:r,success:n,error:null,accounts:e});break}case y.zkEvm.getBalance:{let e=JSON.parse(I),n=await _().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",T(o)),v({responseFor:t,requestId:r,success:a,error:null,result:n});break}case y.zkEvm.getTransactionReceipt:{let e=JSON.parse(I),n=await _().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",T(o)),v({responseFor:t,requestId:r,success:a,error:null,...n});break}case"track":{let e=JSON.parse(I),n=e.properties?JSON.parse(e.properties):{};(0,l.track)(e.moduleName,e.eventName,n),v({responseFor:t,requestId:r,success:!0,error:null});break}default:{let e=JSON.parse(I),n=e.properties?JSON.parse(e.properties):{};n.fxName=t,(0,l.track)(g,"callFunctionDefaultCaseCalled",n),v({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 f.PassportError?a?.type:void 0;(0,l.trackError)(g,t,e,{fxName:t,requestId:r,errorType:n,...s}),(0,l.trackDuration)(g,"failedCallFunction",T(o),{fxName:t,requestId:r,error:e.message}),console.log("callFunction error",e),console.log("callFunction errorType",n),v({responseFor:t,requestId:r,success:!1,error:a?.message!==null&&a?.message!==void 0?a.message:"Error",errorType:a instanceof f.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(){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 n,a,i;var s=e("@parcel/transformer-js/src/esmodule-helpers.js");s.defineInteropFlag(r),s.export(r,"JsonRpcError",()=>e7),s.export(r,"Passport",()=>tG),s.export(r,"PassportError",()=>V),s.export(r,"ProviderErrorCode",()=>e4),s.export(r,"ProviderEvent",()=>ez),s.export(r,"RpcErrorCode",()=>e9);var o=e("axios"),f=s.interopDefault(o),c=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"),A=e("events"),E=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,M=-1;function R(){C&&I&&(C=!1,I.length?k=I.concat(k):M=-1,k.length&&B())}function B(){if(!C){var e=setTimeout(R,0);C=!0;for(var t=k.length;t;){for(I=k,k=[];++Mtypeof 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&&(tt=Date.now(),U.timing&&U.timing.navigationStart&&(tt=U.timing.navigationStart),U.now=()=>Date.now()-tt),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 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{areValid(e){if(e){let t=this.isTokenValid(e.access_token),r=this.isTokenValid(e.id_token);return t&&r}return!1}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=` `,er=()=>` - `,ei=()=>` + `,en=()=>`
Secure pop-up not showing?
We'll help you re-launch

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