@imtbl/passport 2.22.1-alpha.0 → 2.23.1-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.
- package/dist/browser/index.js +1 -11
- package/dist/node/index.cjs +1 -32
- package/dist/node/index.js +1 -11
- package/dist/types/utils/logger.d.ts +2 -1
- package/package.json +21 -25
- package/dist/types/Passport.test.d.ts +0 -1
- package/dist/types/config/config.test.d.ts +0 -1
- package/dist/types/errors/passportError.test.d.ts +0 -1
- package/dist/types/utils/lazyLoad.test.d.ts +0 -1
package/dist/browser/index.js
CHANGED
|
@@ -1,11 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
export { PassportError } from '@imtbl/auth';
|
|
3
|
-
import { MultiRollupApiClients, createConfig, multiRollupConfig } from '@imtbl/generated-clients';
|
|
4
|
-
import { Environment } from '@imtbl/config';
|
|
5
|
-
import { setPassportClientId, trackFlow, trackError } from '@imtbl/metrics';
|
|
6
|
-
import { connectWallet } from '@imtbl/wallet';
|
|
7
|
-
export { JsonRpcError, ProviderErrorCode, ProviderEvent, RpcErrorCode } from '@imtbl/wallet';
|
|
8
|
-
|
|
9
|
-
var b=(o,e,t)=>{let i=e.map(r=>!o[r]&&r).filter(r=>r).join(", ");if(i!==""){let r=t?`${t} - ${i} cannot be null`:`${i} cannot be null`;throw new PassportError(r,PassportErrorType.INVALID_CONFIGURATION)}},d=class{authenticationDomain;passportDomain;magicPublishableApiKey;magicProviderId;magicTeeBasePath="https://tee.express.magiclabs.com";magicTeeTimeout=1e4;oidcConfiguration;baseConfig;zkEvmRpcUrl;relayerUrl;multiRollupConfig;crossSdkBridgeEnabled;forceScwDeployBeforeMessageSignature;jsonRpcReferrer;popupOverlayOptions;overrides;constructor({baseConfig:e,overrides:t,crossSdkBridgeEnabled:i,jsonRpcReferrer:r,forceScwDeployBeforeMessageSignature:s,popupOverlayOptions:l,...u}){if(b(u,["clientId","redirectUri"]),this.oidcConfiguration=u,this.baseConfig=e,this.overrides=t,this.crossSdkBridgeEnabled=i||!1,this.forceScwDeployBeforeMessageSignature=s||!1,this.jsonRpcReferrer=r,this.popupOverlayOptions=l||{disableGenericPopupOverlay:!1,disableBlockedPopupOverlay:!1,disableHeadlessLoginPromptOverlay:!1},t)b(t,["authenticationDomain","passportDomain","magicPublishableApiKey","magicProviderId","zkEvmRpcUrl","relayerUrl","indexerMrBasePath","orderBookMrBasePath","passportMrBasePath"],"overrides"),this.authenticationDomain=t.authenticationDomain,this.passportDomain=t.passportDomain,this.magicPublishableApiKey=t.magicPublishableApiKey,this.magicProviderId=t.magicProviderId,this.zkEvmRpcUrl=t.zkEvmRpcUrl,this.relayerUrl=t.relayerUrl,this.multiRollupConfig={indexer:createConfig({basePath:t.indexerMrBasePath}),orderBook:createConfig({basePath:t.orderBookMrBasePath}),passport:createConfig({basePath:t.passportMrBasePath})};else switch(e.environment){case Environment.PRODUCTION:{this.authenticationDomain="https://auth.immutable.com",this.magicPublishableApiKey="pk_live_10F423798A540ED7",this.magicProviderId="aa80b860-8869-4f13-9000-6a6ad3d20017",this.passportDomain="https://passport.immutable.com",this.zkEvmRpcUrl="https://rpc.immutable.com",this.relayerUrl="https://api.immutable.com/relayer-mr",this.multiRollupConfig=multiRollupConfig.getProduction();break}case Environment.SANDBOX:default:{this.authenticationDomain="https://auth.immutable.com",this.magicPublishableApiKey="pk_live_10F423798A540ED7",this.magicProviderId="aa80b860-8869-4f13-9000-6a6ad3d20017",this.passportDomain="https://passport.sandbox.immutable.com",this.zkEvmRpcUrl="https://rpc.testnet.immutable.com",this.relayerUrl="https://api.sandbox.immutable.com/relayer-mr",this.multiRollupConfig=multiRollupConfig.getSandbox();break}}}};var g=async(o,e,t=!0,i=!0)=>{let r=trackFlow("passport",e,t);try{return await o(r)}catch(s){throw s instanceof Error?trackError("passport",e,s,{flowId:r.details.flowId}):r.addEvent("errored"),s}finally{i&&r.addEvent("End");}};var y=o=>{if(typeof o=="object"&&o!==null&&"response"in o){let{response:e}=o;if(e&&typeof e=="object")return e}};var T=o=>{let e=new d(o),t=new Auth({...o,authenticationDomain:e.authenticationDomain,crossSdkBridgeEnabled:o.crossSdkBridgeEnabled,popupOverlayOptions:o.popupOverlayOptions,passportDomain:e.passportDomain});return {passportConfig:e,auth:t,environment:o.baseConfig.environment}},f=class{auth;multiRollupApiClients;environment;passportConfig;constructor(e){let t=T(e);this.auth=t.auth,this.passportConfig=t.passportConfig,this.multiRollupApiClients=new MultiRollupApiClients(this.passportConfig.multiRollupConfig),this.environment=t.environment,setPassportClientId(e.clientId);}async connectEvm(e={announceProvider:!0}){return g(async()=>{let t=this.passportConfig.overrides,i;return t?.zkEvmChainId?i={chainId:t.zkEvmChainId,name:t.zkEvmChainName||"Dev Chain",rpcUrl:this.passportConfig.zkEvmRpcUrl,relayerUrl:this.passportConfig.relayerUrl,apiUrl:this.passportConfig.multiRollupConfig.indexer.basePath||this.passportConfig.passportDomain,passportDomain:this.passportConfig.passportDomain,magicPublishableApiKey:this.passportConfig.magicPublishableApiKey,magicProviderId:this.passportConfig.magicProviderId,magicTeeBasePath:t.magicTeeBasePath||this.passportConfig.magicTeeBasePath}:this.environment===Environment.PRODUCTION?i={chainId:13371,name:"Immutable zkEVM",rpcUrl:this.passportConfig.zkEvmRpcUrl,relayerUrl:this.passportConfig.relayerUrl,apiUrl:this.passportConfig.multiRollupConfig.indexer.basePath||this.passportConfig.passportDomain,passportDomain:this.passportConfig.passportDomain,magicPublishableApiKey:this.passportConfig.magicPublishableApiKey,magicProviderId:this.passportConfig.magicProviderId,magicTeeBasePath:this.passportConfig.magicTeeBasePath}:i={chainId:13473,name:"Immutable zkEVM Testnet",rpcUrl:this.passportConfig.zkEvmRpcUrl,relayerUrl:this.passportConfig.relayerUrl,apiUrl:this.passportConfig.multiRollupConfig.indexer.basePath||this.passportConfig.passportDomain,passportDomain:this.passportConfig.passportDomain,magicPublishableApiKey:this.passportConfig.magicPublishableApiKey,magicProviderId:this.passportConfig.magicProviderId,magicTeeBasePath:this.passportConfig.magicTeeBasePath},await connectWallet({getUser:(s,l)=>s?this.auth.forceUserRefresh():l?.silent?this.auth.getUser():this.auth.getUserOrLogin(),clientId:this.passportConfig.oidcConfiguration.clientId,chains:[i],crossSdkBridgeEnabled:this.passportConfig.crossSdkBridgeEnabled,jsonRpcReferrer:this.passportConfig.jsonRpcReferrer,forceScwDeployBeforeMessageSignature:this.passportConfig.forceScwDeployBeforeMessageSignature,passportEventEmitter:this.auth.eventEmitter,feeTokenSymbol:"IMX",announceProvider:e?.announceProvider??!0})},"connectEvm",!1)}async login(e){let t=e?{useCachedSession:e.useCachedSession,useSilentLogin:e.useSilentLogin,useRedirectFlow:e.useRedirectFlow,directLoginOptions:e.directLoginOptions}:void 0,i=await this.auth.login(t);return i?i.profile:null}async loginCallback(){await this.auth.loginCallback();}async logout(){await this.auth.logout();}async getUserInfo(){return g(async()=>(await this.auth.getUser())?.profile,"getUserInfo",!1)}async getIdToken(){return (await this.auth.getUser())?.idToken}async getAccessToken(){return (await this.auth.getUser())?.accessToken}async loginWithPKCEFlow(e,t){return this.auth.loginWithPKCEFlow(e,t)}async loginWithPKCEFlowCallback(e,t){return (await this.auth.loginWithPKCEFlowCallback(e,t)).profile}async storeTokens(e){return (await this.auth.storeTokens(e)).profile}async getLogoutUrl(){return await this.auth.getLogoutUrl()}async logoutSilentCallback(e){return this.auth.logoutSilentCallback(e)}async getLinkedAddresses(){return g(async()=>{let e=await this.auth.getUser();if(!e?.profile.sub)return [];let t={Authorization:`Bearer ${e.accessToken}`};return (await this.multiRollupApiClients.passportProfileApi.getUserInfo({headers:t})).data.linked_addresses},"getLinkedAddresses",!1)}async linkExternalWallet(e){let t=r=>typeof r=="object"&&r!==null&&"code"in r&&"message"in r,i=trackFlow("passport","linkExternalWallet",!1);try{let r=await this.auth.getUser();if(!r)throw new PassportError("User is not logged in",PassportErrorType.NOT_LOGGED_IN_ERROR);if(!isUserZkEvm(r))throw new PassportError("User has not been registered",PassportErrorType.USER_NOT_REGISTERED_ERROR);let s={Authorization:`Bearer ${r.accessToken}`},l={type:e.type,wallet_address:e.walletAddress,signature:e.signature,nonce:e.nonce};return {...(await this.multiRollupApiClients.passportProfileApi.linkWalletV2({linkWalletV2Request:l},{headers:s})).data}}catch(r){if(r instanceof Error?trackError("passport","linkExternalWallet",r):i.addEvent("errored"),r instanceof PassportError)throw r;let s=y(r);if(s){if(s.data&&t(s.data)){let{code:u,message:m}=s.data;switch(u){case"ALREADY_LINKED":throw new PassportError(m,PassportErrorType.LINK_WALLET_ALREADY_LINKED_ERROR);case"MAX_WALLETS_LINKED":throw new PassportError(m,PassportErrorType.LINK_WALLET_MAX_WALLETS_LINKED_ERROR);case"DUPLICATE_NONCE":throw new PassportError(m,PassportErrorType.LINK_WALLET_DUPLICATE_NONCE_ERROR);case"VALIDATION_ERROR":throw new PassportError(m,PassportErrorType.LINK_WALLET_VALIDATION_ERROR);default:throw new PassportError(m,PassportErrorType.LINK_WALLET_GENERIC_ERROR)}}else if(s.status)throw new PassportError(`Link wallet request failed with status code ${s.status}`,PassportErrorType.LINK_WALLET_GENERIC_ERROR)}let l="Link wallet request failed";throw r instanceof Error&&(l+=`: ${r.message}`),new PassportError(l,PassportErrorType.LINK_WALLET_GENERIC_ERROR)}finally{i.addEvent("End");}}};var C=(i=>(i.OptedIn="opted_in",i.Unsubscribed="unsubscribed",i.Subscribed="subscribed",i))(C||{});
|
|
10
|
-
|
|
11
|
-
export { C as MarketingConsentStatus, f as Passport };
|
|
1
|
+
import{Auth as e,PassportError as t,PassportErrorType as n,isUserZkEvm as r}from"@imtbl/auth";import{MultiRollupApiClients as i,createConfig as a,multiRollupConfig as o}from"@imtbl/generated-clients";import{Environment as s}from"@imtbl/config";import{setPassportClientId as c,trackError as l,trackFlow as u}from"@imtbl/metrics";import{JsonRpcError as d,ProviderErrorCode as f,ProviderEvent as p,RpcErrorCode as m,connectWallet as h}from"@imtbl/wallet";const g=(e,r,i)=>{let a=r.map(t=>!e[t]&&t).filter(e=>e).join(`, `);if(a!==``)throw new t(i?`${i} - ${a} cannot be null`:`${a} cannot be null`,n.INVALID_CONFIGURATION)};var _=class{authenticationDomain;passportDomain;magicPublishableApiKey;magicProviderId;magicTeeBasePath=`https://tee.express.magiclabs.com`;magicTeeTimeout=1e4;oidcConfiguration;baseConfig;zkEvmRpcUrl;relayerUrl;multiRollupConfig;crossSdkBridgeEnabled;forceScwDeployBeforeMessageSignature;jsonRpcReferrer;popupOverlayOptions;overrides;constructor({baseConfig:e,overrides:t,crossSdkBridgeEnabled:n,jsonRpcReferrer:r,forceScwDeployBeforeMessageSignature:i,popupOverlayOptions:c,...l}){if(g(l,[`clientId`,`redirectUri`]),this.oidcConfiguration=l,this.baseConfig=e,this.overrides=t,this.crossSdkBridgeEnabled=n||!1,this.forceScwDeployBeforeMessageSignature=i||!1,this.jsonRpcReferrer=r,this.popupOverlayOptions=c||{disableGenericPopupOverlay:!1,disableBlockedPopupOverlay:!1,disableHeadlessLoginPromptOverlay:!1},t)g(t,[`authenticationDomain`,`passportDomain`,`magicPublishableApiKey`,`magicProviderId`,`zkEvmRpcUrl`,`relayerUrl`,`indexerMrBasePath`,`orderBookMrBasePath`,`passportMrBasePath`],`overrides`),this.authenticationDomain=t.authenticationDomain,this.passportDomain=t.passportDomain,this.magicPublishableApiKey=t.magicPublishableApiKey,this.magicProviderId=t.magicProviderId,this.zkEvmRpcUrl=t.zkEvmRpcUrl,this.relayerUrl=t.relayerUrl,this.multiRollupConfig={indexer:a({basePath:t.indexerMrBasePath}),orderBook:a({basePath:t.orderBookMrBasePath}),passport:a({basePath:t.passportMrBasePath})};else switch(e.environment){case s.PRODUCTION:this.authenticationDomain=`https://auth.immutable.com`,this.magicPublishableApiKey=`pk_live_10F423798A540ED7`,this.magicProviderId=`aa80b860-8869-4f13-9000-6a6ad3d20017`,this.passportDomain=`https://passport.immutable.com`,this.zkEvmRpcUrl=`https://rpc.immutable.com`,this.relayerUrl=`https://api.immutable.com/relayer-mr`,this.multiRollupConfig=o.getProduction();break;case s.SANDBOX:default:this.authenticationDomain=`https://auth.immutable.com`,this.magicPublishableApiKey=`pk_live_10F423798A540ED7`,this.magicProviderId=`aa80b860-8869-4f13-9000-6a6ad3d20017`,this.passportDomain=`https://passport.sandbox.immutable.com`,this.zkEvmRpcUrl=`https://rpc.testnet.immutable.com`,this.relayerUrl=`https://api.sandbox.immutable.com/relayer-mr`,this.multiRollupConfig=o.getSandbox();break}}};const v=async(e,t,n=!0,r=!0)=>{let i=u(`passport`,t,n);try{return await e(i)}catch(e){throw e instanceof Error?l(`passport`,t,e,{flowId:i.details.flowId}):i.addEvent(`errored`),e}finally{r&&i.addEvent(`End`)}},y=e=>{if(typeof e==`object`&&e&&`response`in e){let{response:t}=e;if(t&&typeof t==`object`)return t}},b=t=>{let n=new _(t);return{passportConfig:n,auth:new e({...t,authenticationDomain:n.authenticationDomain,crossSdkBridgeEnabled:t.crossSdkBridgeEnabled,popupOverlayOptions:t.popupOverlayOptions,passportDomain:n.passportDomain}),environment:t.baseConfig.environment}};var x=class{auth;multiRollupApiClients;environment;passportConfig;constructor(e){let t=b(e);this.auth=t.auth,this.passportConfig=t.passportConfig,this.multiRollupApiClients=new i(this.passportConfig.multiRollupConfig),this.environment=t.environment,c(e.clientId)}async connectEvm(e={announceProvider:!0}){return v(async()=>{let t=this.passportConfig.overrides,n;return n=t?.zkEvmChainId?{chainId:t.zkEvmChainId,name:t.zkEvmChainName||`Dev Chain`,rpcUrl:this.passportConfig.zkEvmRpcUrl,relayerUrl:this.passportConfig.relayerUrl,apiUrl:this.passportConfig.multiRollupConfig.indexer.basePath||this.passportConfig.passportDomain,passportDomain:this.passportConfig.passportDomain,magicPublishableApiKey:this.passportConfig.magicPublishableApiKey,magicProviderId:this.passportConfig.magicProviderId,magicTeeBasePath:t.magicTeeBasePath||this.passportConfig.magicTeeBasePath}:this.environment===s.PRODUCTION?{chainId:13371,name:`Immutable zkEVM`,rpcUrl:this.passportConfig.zkEvmRpcUrl,relayerUrl:this.passportConfig.relayerUrl,apiUrl:this.passportConfig.multiRollupConfig.indexer.basePath||this.passportConfig.passportDomain,passportDomain:this.passportConfig.passportDomain,magicPublishableApiKey:this.passportConfig.magicPublishableApiKey,magicProviderId:this.passportConfig.magicProviderId,magicTeeBasePath:this.passportConfig.magicTeeBasePath}:{chainId:13473,name:`Immutable zkEVM Testnet`,rpcUrl:this.passportConfig.zkEvmRpcUrl,relayerUrl:this.passportConfig.relayerUrl,apiUrl:this.passportConfig.multiRollupConfig.indexer.basePath||this.passportConfig.passportDomain,passportDomain:this.passportConfig.passportDomain,magicPublishableApiKey:this.passportConfig.magicPublishableApiKey,magicProviderId:this.passportConfig.magicProviderId,magicTeeBasePath:this.passportConfig.magicTeeBasePath},await h({getUser:(e,t)=>e?this.auth.forceUserRefresh():t?.silent?this.auth.getUser():this.auth.getUserOrLogin(),clientId:this.passportConfig.oidcConfiguration.clientId,chains:[n],crossSdkBridgeEnabled:this.passportConfig.crossSdkBridgeEnabled,jsonRpcReferrer:this.passportConfig.jsonRpcReferrer,forceScwDeployBeforeMessageSignature:this.passportConfig.forceScwDeployBeforeMessageSignature,passportEventEmitter:this.auth.eventEmitter,feeTokenSymbol:`IMX`,announceProvider:e?.announceProvider??!0})},`connectEvm`,!1)}async login(e){let t=e?{useCachedSession:e.useCachedSession,useSilentLogin:e.useSilentLogin,useRedirectFlow:e.useRedirectFlow,directLoginOptions:e.directLoginOptions}:void 0,n=await this.auth.login(t);return n?n.profile:null}async loginCallback(){await this.auth.loginCallback()}async logout(){await this.auth.logout()}async getUserInfo(){return v(async()=>(await this.auth.getUser())?.profile,`getUserInfo`,!1)}async getIdToken(){return(await this.auth.getUser())?.idToken}async getAccessToken(){return(await this.auth.getUser())?.accessToken}async loginWithPKCEFlow(e,t){return this.auth.loginWithPKCEFlow(e,t)}async loginWithPKCEFlowCallback(e,t){return(await this.auth.loginWithPKCEFlowCallback(e,t)).profile}async storeTokens(e){return(await this.auth.storeTokens(e)).profile}async getLogoutUrl(){return await this.auth.getLogoutUrl()}async logoutSilentCallback(e){return this.auth.logoutSilentCallback(e)}async getLinkedAddresses(){return v(async()=>{let e=await this.auth.getUser();if(!e?.profile.sub)return[];let t={Authorization:`Bearer ${e.accessToken}`};return(await this.multiRollupApiClients.passportProfileApi.getUserInfo({headers:t})).data.linked_addresses},`getLinkedAddresses`,!1)}async linkExternalWallet(e){let i=e=>typeof e==`object`&&!!e&&`code`in e&&`message`in e,a=u(`passport`,`linkExternalWallet`,!1);try{let i=await this.auth.getUser();if(!i)throw new t(`User is not logged in`,n.NOT_LOGGED_IN_ERROR);if(!r(i))throw new t(`User has not been registered`,n.USER_NOT_REGISTERED_ERROR);let a={Authorization:`Bearer ${i.accessToken}`},o={type:e.type,wallet_address:e.walletAddress,signature:e.signature,nonce:e.nonce};return{...(await this.multiRollupApiClients.passportProfileApi.linkWalletV2({linkWalletV2Request:o},{headers:a})).data}}catch(e){if(e instanceof Error?l(`passport`,`linkExternalWallet`,e):a.addEvent(`errored`),e instanceof t)throw e;let r=y(e);if(r){if(r.data&&i(r.data)){let{code:e,message:i}=r.data;switch(e){case`ALREADY_LINKED`:throw new t(i,n.LINK_WALLET_ALREADY_LINKED_ERROR);case`MAX_WALLETS_LINKED`:throw new t(i,n.LINK_WALLET_MAX_WALLETS_LINKED_ERROR);case`DUPLICATE_NONCE`:throw new t(i,n.LINK_WALLET_DUPLICATE_NONCE_ERROR);case`VALIDATION_ERROR`:throw new t(i,n.LINK_WALLET_VALIDATION_ERROR);default:throw new t(i,n.LINK_WALLET_GENERIC_ERROR)}}else if(r.status)throw new t(`Link wallet request failed with status code ${r.status}`,n.LINK_WALLET_GENERIC_ERROR)}let o=`Link wallet request failed`;throw e instanceof Error&&(o+=`: ${e.message}`),new t(o,n.LINK_WALLET_GENERIC_ERROR)}finally{a.addEvent(`End`)}}};let S=function(e){return e.OptedIn=`opted_in`,e.Unsubscribed=`unsubscribed`,e.Subscribed=`subscribed`,e}({});export{d as JsonRpcError,S as MarketingConsentStatus,x as Passport,t as PassportError,f as ProviderErrorCode,p as ProviderEvent,m as RpcErrorCode};
|
package/dist/node/index.cjs
CHANGED
|
@@ -1,32 +1 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
var auth = require('@imtbl/auth');
|
|
4
|
-
var generatedClients = require('@imtbl/generated-clients');
|
|
5
|
-
var config = require('@imtbl/config');
|
|
6
|
-
var metrics = require('@imtbl/metrics');
|
|
7
|
-
var wallet = require('@imtbl/wallet');
|
|
8
|
-
|
|
9
|
-
var P=(o,e,t)=>{let i=e.map(r=>!o[r]&&r).filter(r=>r).join(", ");if(i!==""){let r=t?`${t} - ${i} cannot be null`:`${i} cannot be null`;throw new auth.PassportError(r,auth.PassportErrorType.INVALID_CONFIGURATION)}},u=class{authenticationDomain;passportDomain;magicPublishableApiKey;magicProviderId;magicTeeBasePath="https://tee.express.magiclabs.com";magicTeeTimeout=1e4;oidcConfiguration;baseConfig;zkEvmRpcUrl;relayerUrl;multiRollupConfig;crossSdkBridgeEnabled;forceScwDeployBeforeMessageSignature;jsonRpcReferrer;popupOverlayOptions;overrides;constructor({baseConfig:e,overrides:t,crossSdkBridgeEnabled:i,jsonRpcReferrer:r,forceScwDeployBeforeMessageSignature:s,popupOverlayOptions:l,...p}){if(P(p,["clientId","redirectUri"]),this.oidcConfiguration=p,this.baseConfig=e,this.overrides=t,this.crossSdkBridgeEnabled=i||!1,this.forceScwDeployBeforeMessageSignature=s||!1,this.jsonRpcReferrer=r,this.popupOverlayOptions=l||{disableGenericPopupOverlay:!1,disableBlockedPopupOverlay:!1,disableHeadlessLoginPromptOverlay:!1},t)P(t,["authenticationDomain","passportDomain","magicPublishableApiKey","magicProviderId","zkEvmRpcUrl","relayerUrl","indexerMrBasePath","orderBookMrBasePath","passportMrBasePath"],"overrides"),this.authenticationDomain=t.authenticationDomain,this.passportDomain=t.passportDomain,this.magicPublishableApiKey=t.magicPublishableApiKey,this.magicProviderId=t.magicProviderId,this.zkEvmRpcUrl=t.zkEvmRpcUrl,this.relayerUrl=t.relayerUrl,this.multiRollupConfig={indexer:generatedClients.createConfig({basePath:t.indexerMrBasePath}),orderBook:generatedClients.createConfig({basePath:t.orderBookMrBasePath}),passport:generatedClients.createConfig({basePath:t.passportMrBasePath})};else switch(e.environment){case config.Environment.PRODUCTION:{this.authenticationDomain="https://auth.immutable.com",this.magicPublishableApiKey="pk_live_10F423798A540ED7",this.magicProviderId="aa80b860-8869-4f13-9000-6a6ad3d20017",this.passportDomain="https://passport.immutable.com",this.zkEvmRpcUrl="https://rpc.immutable.com",this.relayerUrl="https://api.immutable.com/relayer-mr",this.multiRollupConfig=generatedClients.multiRollupConfig.getProduction();break}case config.Environment.SANDBOX:default:{this.authenticationDomain="https://auth.immutable.com",this.magicPublishableApiKey="pk_live_10F423798A540ED7",this.magicProviderId="aa80b860-8869-4f13-9000-6a6ad3d20017",this.passportDomain="https://passport.sandbox.immutable.com",this.zkEvmRpcUrl="https://rpc.testnet.immutable.com",this.relayerUrl="https://api.sandbox.immutable.com/relayer-mr",this.multiRollupConfig=generatedClients.multiRollupConfig.getSandbox();break}}}};var m=async(o,e,t=!0,i=!0)=>{let r=metrics.trackFlow("passport",e,t);try{return await o(r)}catch(s){throw s instanceof Error?metrics.trackError("passport",e,s,{flowId:r.details.flowId}):r.addEvent("errored"),s}finally{i&&r.addEvent("End");}};var E=o=>{if(typeof o=="object"&&o!==null&&"response"in o){let{response:e}=o;if(e&&typeof e=="object")return e}};var U=o=>{let e=new u(o),t=new auth.Auth({...o,authenticationDomain:e.authenticationDomain,crossSdkBridgeEnabled:o.crossSdkBridgeEnabled,popupOverlayOptions:o.popupOverlayOptions,passportDomain:e.passportDomain});return {passportConfig:e,auth:t,environment:o.baseConfig.environment}},g=class{auth;multiRollupApiClients;environment;passportConfig;constructor(e){let t=U(e);this.auth=t.auth,this.passportConfig=t.passportConfig,this.multiRollupApiClients=new generatedClients.MultiRollupApiClients(this.passportConfig.multiRollupConfig),this.environment=t.environment,metrics.setPassportClientId(e.clientId);}async connectEvm(e={announceProvider:!0}){return m(async()=>{let t=this.passportConfig.overrides,i;return t?.zkEvmChainId?i={chainId:t.zkEvmChainId,name:t.zkEvmChainName||"Dev Chain",rpcUrl:this.passportConfig.zkEvmRpcUrl,relayerUrl:this.passportConfig.relayerUrl,apiUrl:this.passportConfig.multiRollupConfig.indexer.basePath||this.passportConfig.passportDomain,passportDomain:this.passportConfig.passportDomain,magicPublishableApiKey:this.passportConfig.magicPublishableApiKey,magicProviderId:this.passportConfig.magicProviderId,magicTeeBasePath:t.magicTeeBasePath||this.passportConfig.magicTeeBasePath}:this.environment===config.Environment.PRODUCTION?i={chainId:13371,name:"Immutable zkEVM",rpcUrl:this.passportConfig.zkEvmRpcUrl,relayerUrl:this.passportConfig.relayerUrl,apiUrl:this.passportConfig.multiRollupConfig.indexer.basePath||this.passportConfig.passportDomain,passportDomain:this.passportConfig.passportDomain,magicPublishableApiKey:this.passportConfig.magicPublishableApiKey,magicProviderId:this.passportConfig.magicProviderId,magicTeeBasePath:this.passportConfig.magicTeeBasePath}:i={chainId:13473,name:"Immutable zkEVM Testnet",rpcUrl:this.passportConfig.zkEvmRpcUrl,relayerUrl:this.passportConfig.relayerUrl,apiUrl:this.passportConfig.multiRollupConfig.indexer.basePath||this.passportConfig.passportDomain,passportDomain:this.passportConfig.passportDomain,magicPublishableApiKey:this.passportConfig.magicPublishableApiKey,magicProviderId:this.passportConfig.magicProviderId,magicTeeBasePath:this.passportConfig.magicTeeBasePath},await wallet.connectWallet({getUser:(s,l)=>s?this.auth.forceUserRefresh():l?.silent?this.auth.getUser():this.auth.getUserOrLogin(),clientId:this.passportConfig.oidcConfiguration.clientId,chains:[i],crossSdkBridgeEnabled:this.passportConfig.crossSdkBridgeEnabled,jsonRpcReferrer:this.passportConfig.jsonRpcReferrer,forceScwDeployBeforeMessageSignature:this.passportConfig.forceScwDeployBeforeMessageSignature,passportEventEmitter:this.auth.eventEmitter,feeTokenSymbol:"IMX",announceProvider:e?.announceProvider??!0})},"connectEvm",!1)}async login(e){let t=e?{useCachedSession:e.useCachedSession,useSilentLogin:e.useSilentLogin,useRedirectFlow:e.useRedirectFlow,directLoginOptions:e.directLoginOptions}:void 0,i=await this.auth.login(t);return i?i.profile:null}async loginCallback(){await this.auth.loginCallback();}async logout(){await this.auth.logout();}async getUserInfo(){return m(async()=>(await this.auth.getUser())?.profile,"getUserInfo",!1)}async getIdToken(){return (await this.auth.getUser())?.idToken}async getAccessToken(){return (await this.auth.getUser())?.accessToken}async loginWithPKCEFlow(e,t){return this.auth.loginWithPKCEFlow(e,t)}async loginWithPKCEFlowCallback(e,t){return (await this.auth.loginWithPKCEFlowCallback(e,t)).profile}async storeTokens(e){return (await this.auth.storeTokens(e)).profile}async getLogoutUrl(){return await this.auth.getLogoutUrl()}async logoutSilentCallback(e){return this.auth.logoutSilentCallback(e)}async getLinkedAddresses(){return m(async()=>{let e=await this.auth.getUser();if(!e?.profile.sub)return [];let t={Authorization:`Bearer ${e.accessToken}`};return (await this.multiRollupApiClients.passportProfileApi.getUserInfo({headers:t})).data.linked_addresses},"getLinkedAddresses",!1)}async linkExternalWallet(e){let t=r=>typeof r=="object"&&r!==null&&"code"in r&&"message"in r,i=metrics.trackFlow("passport","linkExternalWallet",!1);try{let r=await this.auth.getUser();if(!r)throw new auth.PassportError("User is not logged in",auth.PassportErrorType.NOT_LOGGED_IN_ERROR);if(!auth.isUserZkEvm(r))throw new auth.PassportError("User has not been registered",auth.PassportErrorType.USER_NOT_REGISTERED_ERROR);let s={Authorization:`Bearer ${r.accessToken}`},l={type:e.type,wallet_address:e.walletAddress,signature:e.signature,nonce:e.nonce};return {...(await this.multiRollupApiClients.passportProfileApi.linkWalletV2({linkWalletV2Request:l},{headers:s})).data}}catch(r){if(r instanceof Error?metrics.trackError("passport","linkExternalWallet",r):i.addEvent("errored"),r instanceof auth.PassportError)throw r;let s=E(r);if(s){if(s.data&&t(s.data)){let{code:p,message:c}=s.data;switch(p){case"ALREADY_LINKED":throw new auth.PassportError(c,auth.PassportErrorType.LINK_WALLET_ALREADY_LINKED_ERROR);case"MAX_WALLETS_LINKED":throw new auth.PassportError(c,auth.PassportErrorType.LINK_WALLET_MAX_WALLETS_LINKED_ERROR);case"DUPLICATE_NONCE":throw new auth.PassportError(c,auth.PassportErrorType.LINK_WALLET_DUPLICATE_NONCE_ERROR);case"VALIDATION_ERROR":throw new auth.PassportError(c,auth.PassportErrorType.LINK_WALLET_VALIDATION_ERROR);default:throw new auth.PassportError(c,auth.PassportErrorType.LINK_WALLET_GENERIC_ERROR)}}else if(s.status)throw new auth.PassportError(`Link wallet request failed with status code ${s.status}`,auth.PassportErrorType.LINK_WALLET_GENERIC_ERROR)}let l="Link wallet request failed";throw r instanceof Error&&(l+=`: ${r.message}`),new auth.PassportError(l,auth.PassportErrorType.LINK_WALLET_GENERIC_ERROR)}finally{i.addEvent("End");}}};var b=(i=>(i.OptedIn="opted_in",i.Unsubscribed="unsubscribed",i.Subscribed="subscribed",i))(b||{});
|
|
10
|
-
|
|
11
|
-
Object.defineProperty(exports, "PassportError", {
|
|
12
|
-
enumerable: true,
|
|
13
|
-
get: function () { return auth.PassportError; }
|
|
14
|
-
});
|
|
15
|
-
Object.defineProperty(exports, "JsonRpcError", {
|
|
16
|
-
enumerable: true,
|
|
17
|
-
get: function () { return wallet.JsonRpcError; }
|
|
18
|
-
});
|
|
19
|
-
Object.defineProperty(exports, "ProviderErrorCode", {
|
|
20
|
-
enumerable: true,
|
|
21
|
-
get: function () { return wallet.ProviderErrorCode; }
|
|
22
|
-
});
|
|
23
|
-
Object.defineProperty(exports, "ProviderEvent", {
|
|
24
|
-
enumerable: true,
|
|
25
|
-
get: function () { return wallet.ProviderEvent; }
|
|
26
|
-
});
|
|
27
|
-
Object.defineProperty(exports, "RpcErrorCode", {
|
|
28
|
-
enumerable: true,
|
|
29
|
-
get: function () { return wallet.RpcErrorCode; }
|
|
30
|
-
});
|
|
31
|
-
exports.MarketingConsentStatus = b;
|
|
32
|
-
exports.Passport = g;
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require("@imtbl/auth"),t=require("@imtbl/generated-clients"),n=require("@imtbl/config"),r=require("@imtbl/metrics"),i=require("@imtbl/wallet");const a=(t,n,r)=>{let i=n.map(e=>!t[e]&&e).filter(e=>e).join(`, `);if(i!==``)throw new e.PassportError(r?`${r} - ${i} cannot be null`:`${i} cannot be null`,e.PassportErrorType.INVALID_CONFIGURATION)};var o=class{authenticationDomain;passportDomain;magicPublishableApiKey;magicProviderId;magicTeeBasePath=`https://tee.express.magiclabs.com`;magicTeeTimeout=1e4;oidcConfiguration;baseConfig;zkEvmRpcUrl;relayerUrl;multiRollupConfig;crossSdkBridgeEnabled;forceScwDeployBeforeMessageSignature;jsonRpcReferrer;popupOverlayOptions;overrides;constructor({baseConfig:e,overrides:r,crossSdkBridgeEnabled:i,jsonRpcReferrer:o,forceScwDeployBeforeMessageSignature:s,popupOverlayOptions:c,...l}){if(a(l,[`clientId`,`redirectUri`]),this.oidcConfiguration=l,this.baseConfig=e,this.overrides=r,this.crossSdkBridgeEnabled=i||!1,this.forceScwDeployBeforeMessageSignature=s||!1,this.jsonRpcReferrer=o,this.popupOverlayOptions=c||{disableGenericPopupOverlay:!1,disableBlockedPopupOverlay:!1,disableHeadlessLoginPromptOverlay:!1},r)a(r,[`authenticationDomain`,`passportDomain`,`magicPublishableApiKey`,`magicProviderId`,`zkEvmRpcUrl`,`relayerUrl`,`indexerMrBasePath`,`orderBookMrBasePath`,`passportMrBasePath`],`overrides`),this.authenticationDomain=r.authenticationDomain,this.passportDomain=r.passportDomain,this.magicPublishableApiKey=r.magicPublishableApiKey,this.magicProviderId=r.magicProviderId,this.zkEvmRpcUrl=r.zkEvmRpcUrl,this.relayerUrl=r.relayerUrl,this.multiRollupConfig={indexer:(0,t.createConfig)({basePath:r.indexerMrBasePath}),orderBook:(0,t.createConfig)({basePath:r.orderBookMrBasePath}),passport:(0,t.createConfig)({basePath:r.passportMrBasePath})};else switch(e.environment){case n.Environment.PRODUCTION:this.authenticationDomain=`https://auth.immutable.com`,this.magicPublishableApiKey=`pk_live_10F423798A540ED7`,this.magicProviderId=`aa80b860-8869-4f13-9000-6a6ad3d20017`,this.passportDomain=`https://passport.immutable.com`,this.zkEvmRpcUrl=`https://rpc.immutable.com`,this.relayerUrl=`https://api.immutable.com/relayer-mr`,this.multiRollupConfig=t.multiRollupConfig.getProduction();break;case n.Environment.SANDBOX:default:this.authenticationDomain=`https://auth.immutable.com`,this.magicPublishableApiKey=`pk_live_10F423798A540ED7`,this.magicProviderId=`aa80b860-8869-4f13-9000-6a6ad3d20017`,this.passportDomain=`https://passport.sandbox.immutable.com`,this.zkEvmRpcUrl=`https://rpc.testnet.immutable.com`,this.relayerUrl=`https://api.sandbox.immutable.com/relayer-mr`,this.multiRollupConfig=t.multiRollupConfig.getSandbox();break}}};const s=async(e,t,n=!0,i=!0)=>{let a=(0,r.trackFlow)(`passport`,t,n);try{return await e(a)}catch(e){throw e instanceof Error?(0,r.trackError)(`passport`,t,e,{flowId:a.details.flowId}):a.addEvent(`errored`),e}finally{i&&a.addEvent(`End`)}},c=e=>{if(typeof e==`object`&&e&&`response`in e){let{response:t}=e;if(t&&typeof t==`object`)return t}},l=t=>{let n=new o(t);return{passportConfig:n,auth:new e.Auth({...t,authenticationDomain:n.authenticationDomain,crossSdkBridgeEnabled:t.crossSdkBridgeEnabled,popupOverlayOptions:t.popupOverlayOptions,passportDomain:n.passportDomain}),environment:t.baseConfig.environment}};var u=class{auth;multiRollupApiClients;environment;passportConfig;constructor(e){let n=l(e);this.auth=n.auth,this.passportConfig=n.passportConfig,this.multiRollupApiClients=new t.MultiRollupApiClients(this.passportConfig.multiRollupConfig),this.environment=n.environment,(0,r.setPassportClientId)(e.clientId)}async connectEvm(e={announceProvider:!0}){return s(async()=>{let t=this.passportConfig.overrides,r;return r=t?.zkEvmChainId?{chainId:t.zkEvmChainId,name:t.zkEvmChainName||`Dev Chain`,rpcUrl:this.passportConfig.zkEvmRpcUrl,relayerUrl:this.passportConfig.relayerUrl,apiUrl:this.passportConfig.multiRollupConfig.indexer.basePath||this.passportConfig.passportDomain,passportDomain:this.passportConfig.passportDomain,magicPublishableApiKey:this.passportConfig.magicPublishableApiKey,magicProviderId:this.passportConfig.magicProviderId,magicTeeBasePath:t.magicTeeBasePath||this.passportConfig.magicTeeBasePath}:this.environment===n.Environment.PRODUCTION?{chainId:13371,name:`Immutable zkEVM`,rpcUrl:this.passportConfig.zkEvmRpcUrl,relayerUrl:this.passportConfig.relayerUrl,apiUrl:this.passportConfig.multiRollupConfig.indexer.basePath||this.passportConfig.passportDomain,passportDomain:this.passportConfig.passportDomain,magicPublishableApiKey:this.passportConfig.magicPublishableApiKey,magicProviderId:this.passportConfig.magicProviderId,magicTeeBasePath:this.passportConfig.magicTeeBasePath}:{chainId:13473,name:`Immutable zkEVM Testnet`,rpcUrl:this.passportConfig.zkEvmRpcUrl,relayerUrl:this.passportConfig.relayerUrl,apiUrl:this.passportConfig.multiRollupConfig.indexer.basePath||this.passportConfig.passportDomain,passportDomain:this.passportConfig.passportDomain,magicPublishableApiKey:this.passportConfig.magicPublishableApiKey,magicProviderId:this.passportConfig.magicProviderId,magicTeeBasePath:this.passportConfig.magicTeeBasePath},await(0,i.connectWallet)({getUser:(e,t)=>e?this.auth.forceUserRefresh():t?.silent?this.auth.getUser():this.auth.getUserOrLogin(),clientId:this.passportConfig.oidcConfiguration.clientId,chains:[r],crossSdkBridgeEnabled:this.passportConfig.crossSdkBridgeEnabled,jsonRpcReferrer:this.passportConfig.jsonRpcReferrer,forceScwDeployBeforeMessageSignature:this.passportConfig.forceScwDeployBeforeMessageSignature,passportEventEmitter:this.auth.eventEmitter,feeTokenSymbol:`IMX`,announceProvider:e?.announceProvider??!0})},`connectEvm`,!1)}async login(e){let t=e?{useCachedSession:e.useCachedSession,useSilentLogin:e.useSilentLogin,useRedirectFlow:e.useRedirectFlow,directLoginOptions:e.directLoginOptions}:void 0,n=await this.auth.login(t);return n?n.profile:null}async loginCallback(){await this.auth.loginCallback()}async logout(){await this.auth.logout()}async getUserInfo(){return s(async()=>(await this.auth.getUser())?.profile,`getUserInfo`,!1)}async getIdToken(){return(await this.auth.getUser())?.idToken}async getAccessToken(){return(await this.auth.getUser())?.accessToken}async loginWithPKCEFlow(e,t){return this.auth.loginWithPKCEFlow(e,t)}async loginWithPKCEFlowCallback(e,t){return(await this.auth.loginWithPKCEFlowCallback(e,t)).profile}async storeTokens(e){return(await this.auth.storeTokens(e)).profile}async getLogoutUrl(){return await this.auth.getLogoutUrl()}async logoutSilentCallback(e){return this.auth.logoutSilentCallback(e)}async getLinkedAddresses(){return s(async()=>{let e=await this.auth.getUser();if(!e?.profile.sub)return[];let t={Authorization:`Bearer ${e.accessToken}`};return(await this.multiRollupApiClients.passportProfileApi.getUserInfo({headers:t})).data.linked_addresses},`getLinkedAddresses`,!1)}async linkExternalWallet(t){let n=e=>typeof e==`object`&&!!e&&`code`in e&&`message`in e,i=(0,r.trackFlow)(`passport`,`linkExternalWallet`,!1);try{let n=await this.auth.getUser();if(!n)throw new e.PassportError(`User is not logged in`,e.PassportErrorType.NOT_LOGGED_IN_ERROR);if(!(0,e.isUserZkEvm)(n))throw new e.PassportError(`User has not been registered`,e.PassportErrorType.USER_NOT_REGISTERED_ERROR);let r={Authorization:`Bearer ${n.accessToken}`},i={type:t.type,wallet_address:t.walletAddress,signature:t.signature,nonce:t.nonce};return{...(await this.multiRollupApiClients.passportProfileApi.linkWalletV2({linkWalletV2Request:i},{headers:r})).data}}catch(t){if(t instanceof Error?(0,r.trackError)(`passport`,`linkExternalWallet`,t):i.addEvent(`errored`),t instanceof e.PassportError)throw t;let a=c(t);if(a){if(a.data&&n(a.data)){let{code:t,message:n}=a.data;switch(t){case`ALREADY_LINKED`:throw new e.PassportError(n,e.PassportErrorType.LINK_WALLET_ALREADY_LINKED_ERROR);case`MAX_WALLETS_LINKED`:throw new e.PassportError(n,e.PassportErrorType.LINK_WALLET_MAX_WALLETS_LINKED_ERROR);case`DUPLICATE_NONCE`:throw new e.PassportError(n,e.PassportErrorType.LINK_WALLET_DUPLICATE_NONCE_ERROR);case`VALIDATION_ERROR`:throw new e.PassportError(n,e.PassportErrorType.LINK_WALLET_VALIDATION_ERROR);default:throw new e.PassportError(n,e.PassportErrorType.LINK_WALLET_GENERIC_ERROR)}}else if(a.status)throw new e.PassportError(`Link wallet request failed with status code ${a.status}`,e.PassportErrorType.LINK_WALLET_GENERIC_ERROR)}let o=`Link wallet request failed`;throw t instanceof Error&&(o+=`: ${t.message}`),new e.PassportError(o,e.PassportErrorType.LINK_WALLET_GENERIC_ERROR)}finally{i.addEvent(`End`)}}};let d=function(e){return e.OptedIn=`opted_in`,e.Unsubscribed=`unsubscribed`,e.Subscribed=`subscribed`,e}({});Object.defineProperty(exports,"JsonRpcError",{enumerable:!0,get:function(){return i.JsonRpcError}}),exports.MarketingConsentStatus=d,exports.Passport=u,Object.defineProperty(exports,"PassportError",{enumerable:!0,get:function(){return e.PassportError}}),Object.defineProperty(exports,"ProviderErrorCode",{enumerable:!0,get:function(){return i.ProviderErrorCode}}),Object.defineProperty(exports,"ProviderEvent",{enumerable:!0,get:function(){return i.ProviderEvent}}),Object.defineProperty(exports,"RpcErrorCode",{enumerable:!0,get:function(){return i.RpcErrorCode}});
|
package/dist/node/index.js
CHANGED
|
@@ -1,11 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
export { PassportError } from '@imtbl/auth';
|
|
3
|
-
import { MultiRollupApiClients, createConfig, multiRollupConfig } from '@imtbl/generated-clients';
|
|
4
|
-
import { Environment } from '@imtbl/config';
|
|
5
|
-
import { setPassportClientId, trackFlow, trackError } from '@imtbl/metrics';
|
|
6
|
-
import { connectWallet } from '@imtbl/wallet';
|
|
7
|
-
export { JsonRpcError, ProviderErrorCode, ProviderEvent, RpcErrorCode } from '@imtbl/wallet';
|
|
8
|
-
|
|
9
|
-
var P=(o,e,t)=>{let i=e.map(r=>!o[r]&&r).filter(r=>r).join(", ");if(i!==""){let r=t?`${t} - ${i} cannot be null`:`${i} cannot be null`;throw new PassportError(r,PassportErrorType.INVALID_CONFIGURATION)}},u=class{authenticationDomain;passportDomain;magicPublishableApiKey;magicProviderId;magicTeeBasePath="https://tee.express.magiclabs.com";magicTeeTimeout=1e4;oidcConfiguration;baseConfig;zkEvmRpcUrl;relayerUrl;multiRollupConfig;crossSdkBridgeEnabled;forceScwDeployBeforeMessageSignature;jsonRpcReferrer;popupOverlayOptions;overrides;constructor({baseConfig:e,overrides:t,crossSdkBridgeEnabled:i,jsonRpcReferrer:r,forceScwDeployBeforeMessageSignature:s,popupOverlayOptions:l,...p}){if(P(p,["clientId","redirectUri"]),this.oidcConfiguration=p,this.baseConfig=e,this.overrides=t,this.crossSdkBridgeEnabled=i||!1,this.forceScwDeployBeforeMessageSignature=s||!1,this.jsonRpcReferrer=r,this.popupOverlayOptions=l||{disableGenericPopupOverlay:!1,disableBlockedPopupOverlay:!1,disableHeadlessLoginPromptOverlay:!1},t)P(t,["authenticationDomain","passportDomain","magicPublishableApiKey","magicProviderId","zkEvmRpcUrl","relayerUrl","indexerMrBasePath","orderBookMrBasePath","passportMrBasePath"],"overrides"),this.authenticationDomain=t.authenticationDomain,this.passportDomain=t.passportDomain,this.magicPublishableApiKey=t.magicPublishableApiKey,this.magicProviderId=t.magicProviderId,this.zkEvmRpcUrl=t.zkEvmRpcUrl,this.relayerUrl=t.relayerUrl,this.multiRollupConfig={indexer:createConfig({basePath:t.indexerMrBasePath}),orderBook:createConfig({basePath:t.orderBookMrBasePath}),passport:createConfig({basePath:t.passportMrBasePath})};else switch(e.environment){case Environment.PRODUCTION:{this.authenticationDomain="https://auth.immutable.com",this.magicPublishableApiKey="pk_live_10F423798A540ED7",this.magicProviderId="aa80b860-8869-4f13-9000-6a6ad3d20017",this.passportDomain="https://passport.immutable.com",this.zkEvmRpcUrl="https://rpc.immutable.com",this.relayerUrl="https://api.immutable.com/relayer-mr",this.multiRollupConfig=multiRollupConfig.getProduction();break}case Environment.SANDBOX:default:{this.authenticationDomain="https://auth.immutable.com",this.magicPublishableApiKey="pk_live_10F423798A540ED7",this.magicProviderId="aa80b860-8869-4f13-9000-6a6ad3d20017",this.passportDomain="https://passport.sandbox.immutable.com",this.zkEvmRpcUrl="https://rpc.testnet.immutable.com",this.relayerUrl="https://api.sandbox.immutable.com/relayer-mr",this.multiRollupConfig=multiRollupConfig.getSandbox();break}}}};var m=async(o,e,t=!0,i=!0)=>{let r=trackFlow("passport",e,t);try{return await o(r)}catch(s){throw s instanceof Error?trackError("passport",e,s,{flowId:r.details.flowId}):r.addEvent("errored"),s}finally{i&&r.addEvent("End");}};var E=o=>{if(typeof o=="object"&&o!==null&&"response"in o){let{response:e}=o;if(e&&typeof e=="object")return e}};var U=o=>{let e=new u(o),t=new Auth({...o,authenticationDomain:e.authenticationDomain,crossSdkBridgeEnabled:o.crossSdkBridgeEnabled,popupOverlayOptions:o.popupOverlayOptions,passportDomain:e.passportDomain});return {passportConfig:e,auth:t,environment:o.baseConfig.environment}},g=class{auth;multiRollupApiClients;environment;passportConfig;constructor(e){let t=U(e);this.auth=t.auth,this.passportConfig=t.passportConfig,this.multiRollupApiClients=new MultiRollupApiClients(this.passportConfig.multiRollupConfig),this.environment=t.environment,setPassportClientId(e.clientId);}async connectEvm(e={announceProvider:!0}){return m(async()=>{let t=this.passportConfig.overrides,i;return t?.zkEvmChainId?i={chainId:t.zkEvmChainId,name:t.zkEvmChainName||"Dev Chain",rpcUrl:this.passportConfig.zkEvmRpcUrl,relayerUrl:this.passportConfig.relayerUrl,apiUrl:this.passportConfig.multiRollupConfig.indexer.basePath||this.passportConfig.passportDomain,passportDomain:this.passportConfig.passportDomain,magicPublishableApiKey:this.passportConfig.magicPublishableApiKey,magicProviderId:this.passportConfig.magicProviderId,magicTeeBasePath:t.magicTeeBasePath||this.passportConfig.magicTeeBasePath}:this.environment===Environment.PRODUCTION?i={chainId:13371,name:"Immutable zkEVM",rpcUrl:this.passportConfig.zkEvmRpcUrl,relayerUrl:this.passportConfig.relayerUrl,apiUrl:this.passportConfig.multiRollupConfig.indexer.basePath||this.passportConfig.passportDomain,passportDomain:this.passportConfig.passportDomain,magicPublishableApiKey:this.passportConfig.magicPublishableApiKey,magicProviderId:this.passportConfig.magicProviderId,magicTeeBasePath:this.passportConfig.magicTeeBasePath}:i={chainId:13473,name:"Immutable zkEVM Testnet",rpcUrl:this.passportConfig.zkEvmRpcUrl,relayerUrl:this.passportConfig.relayerUrl,apiUrl:this.passportConfig.multiRollupConfig.indexer.basePath||this.passportConfig.passportDomain,passportDomain:this.passportConfig.passportDomain,magicPublishableApiKey:this.passportConfig.magicPublishableApiKey,magicProviderId:this.passportConfig.magicProviderId,magicTeeBasePath:this.passportConfig.magicTeeBasePath},await connectWallet({getUser:(s,l)=>s?this.auth.forceUserRefresh():l?.silent?this.auth.getUser():this.auth.getUserOrLogin(),clientId:this.passportConfig.oidcConfiguration.clientId,chains:[i],crossSdkBridgeEnabled:this.passportConfig.crossSdkBridgeEnabled,jsonRpcReferrer:this.passportConfig.jsonRpcReferrer,forceScwDeployBeforeMessageSignature:this.passportConfig.forceScwDeployBeforeMessageSignature,passportEventEmitter:this.auth.eventEmitter,feeTokenSymbol:"IMX",announceProvider:e?.announceProvider??!0})},"connectEvm",!1)}async login(e){let t=e?{useCachedSession:e.useCachedSession,useSilentLogin:e.useSilentLogin,useRedirectFlow:e.useRedirectFlow,directLoginOptions:e.directLoginOptions}:void 0,i=await this.auth.login(t);return i?i.profile:null}async loginCallback(){await this.auth.loginCallback();}async logout(){await this.auth.logout();}async getUserInfo(){return m(async()=>(await this.auth.getUser())?.profile,"getUserInfo",!1)}async getIdToken(){return (await this.auth.getUser())?.idToken}async getAccessToken(){return (await this.auth.getUser())?.accessToken}async loginWithPKCEFlow(e,t){return this.auth.loginWithPKCEFlow(e,t)}async loginWithPKCEFlowCallback(e,t){return (await this.auth.loginWithPKCEFlowCallback(e,t)).profile}async storeTokens(e){return (await this.auth.storeTokens(e)).profile}async getLogoutUrl(){return await this.auth.getLogoutUrl()}async logoutSilentCallback(e){return this.auth.logoutSilentCallback(e)}async getLinkedAddresses(){return m(async()=>{let e=await this.auth.getUser();if(!e?.profile.sub)return [];let t={Authorization:`Bearer ${e.accessToken}`};return (await this.multiRollupApiClients.passportProfileApi.getUserInfo({headers:t})).data.linked_addresses},"getLinkedAddresses",!1)}async linkExternalWallet(e){let t=r=>typeof r=="object"&&r!==null&&"code"in r&&"message"in r,i=trackFlow("passport","linkExternalWallet",!1);try{let r=await this.auth.getUser();if(!r)throw new PassportError("User is not logged in",PassportErrorType.NOT_LOGGED_IN_ERROR);if(!isUserZkEvm(r))throw new PassportError("User has not been registered",PassportErrorType.USER_NOT_REGISTERED_ERROR);let s={Authorization:`Bearer ${r.accessToken}`},l={type:e.type,wallet_address:e.walletAddress,signature:e.signature,nonce:e.nonce};return {...(await this.multiRollupApiClients.passportProfileApi.linkWalletV2({linkWalletV2Request:l},{headers:s})).data}}catch(r){if(r instanceof Error?trackError("passport","linkExternalWallet",r):i.addEvent("errored"),r instanceof PassportError)throw r;let s=E(r);if(s){if(s.data&&t(s.data)){let{code:p,message:c}=s.data;switch(p){case"ALREADY_LINKED":throw new PassportError(c,PassportErrorType.LINK_WALLET_ALREADY_LINKED_ERROR);case"MAX_WALLETS_LINKED":throw new PassportError(c,PassportErrorType.LINK_WALLET_MAX_WALLETS_LINKED_ERROR);case"DUPLICATE_NONCE":throw new PassportError(c,PassportErrorType.LINK_WALLET_DUPLICATE_NONCE_ERROR);case"VALIDATION_ERROR":throw new PassportError(c,PassportErrorType.LINK_WALLET_VALIDATION_ERROR);default:throw new PassportError(c,PassportErrorType.LINK_WALLET_GENERIC_ERROR)}}else if(s.status)throw new PassportError(`Link wallet request failed with status code ${s.status}`,PassportErrorType.LINK_WALLET_GENERIC_ERROR)}let l="Link wallet request failed";throw r instanceof Error&&(l+=`: ${r.message}`),new PassportError(l,PassportErrorType.LINK_WALLET_GENERIC_ERROR)}finally{i.addEvent("End");}}};var b=(i=>(i.OptedIn="opted_in",i.Unsubscribed="unsubscribed",i.Subscribed="subscribed",i))(b||{});
|
|
10
|
-
|
|
11
|
-
export { b as MarketingConsentStatus, g as Passport };
|
|
1
|
+
import{Auth as e,PassportError as t,PassportErrorType as n,isUserZkEvm as r}from"@imtbl/auth";import{MultiRollupApiClients as i,createConfig as a,multiRollupConfig as o}from"@imtbl/generated-clients";import{Environment as s}from"@imtbl/config";import{setPassportClientId as c,trackError as l,trackFlow as u}from"@imtbl/metrics";import{JsonRpcError as d,ProviderErrorCode as f,ProviderEvent as p,RpcErrorCode as m,connectWallet as h}from"@imtbl/wallet";const g=(e,r,i)=>{let a=r.map(t=>!e[t]&&t).filter(e=>e).join(`, `);if(a!==``)throw new t(i?`${i} - ${a} cannot be null`:`${a} cannot be null`,n.INVALID_CONFIGURATION)};var _=class{authenticationDomain;passportDomain;magicPublishableApiKey;magicProviderId;magicTeeBasePath=`https://tee.express.magiclabs.com`;magicTeeTimeout=1e4;oidcConfiguration;baseConfig;zkEvmRpcUrl;relayerUrl;multiRollupConfig;crossSdkBridgeEnabled;forceScwDeployBeforeMessageSignature;jsonRpcReferrer;popupOverlayOptions;overrides;constructor({baseConfig:e,overrides:t,crossSdkBridgeEnabled:n,jsonRpcReferrer:r,forceScwDeployBeforeMessageSignature:i,popupOverlayOptions:c,...l}){if(g(l,[`clientId`,`redirectUri`]),this.oidcConfiguration=l,this.baseConfig=e,this.overrides=t,this.crossSdkBridgeEnabled=n||!1,this.forceScwDeployBeforeMessageSignature=i||!1,this.jsonRpcReferrer=r,this.popupOverlayOptions=c||{disableGenericPopupOverlay:!1,disableBlockedPopupOverlay:!1,disableHeadlessLoginPromptOverlay:!1},t)g(t,[`authenticationDomain`,`passportDomain`,`magicPublishableApiKey`,`magicProviderId`,`zkEvmRpcUrl`,`relayerUrl`,`indexerMrBasePath`,`orderBookMrBasePath`,`passportMrBasePath`],`overrides`),this.authenticationDomain=t.authenticationDomain,this.passportDomain=t.passportDomain,this.magicPublishableApiKey=t.magicPublishableApiKey,this.magicProviderId=t.magicProviderId,this.zkEvmRpcUrl=t.zkEvmRpcUrl,this.relayerUrl=t.relayerUrl,this.multiRollupConfig={indexer:a({basePath:t.indexerMrBasePath}),orderBook:a({basePath:t.orderBookMrBasePath}),passport:a({basePath:t.passportMrBasePath})};else switch(e.environment){case s.PRODUCTION:this.authenticationDomain=`https://auth.immutable.com`,this.magicPublishableApiKey=`pk_live_10F423798A540ED7`,this.magicProviderId=`aa80b860-8869-4f13-9000-6a6ad3d20017`,this.passportDomain=`https://passport.immutable.com`,this.zkEvmRpcUrl=`https://rpc.immutable.com`,this.relayerUrl=`https://api.immutable.com/relayer-mr`,this.multiRollupConfig=o.getProduction();break;case s.SANDBOX:default:this.authenticationDomain=`https://auth.immutable.com`,this.magicPublishableApiKey=`pk_live_10F423798A540ED7`,this.magicProviderId=`aa80b860-8869-4f13-9000-6a6ad3d20017`,this.passportDomain=`https://passport.sandbox.immutable.com`,this.zkEvmRpcUrl=`https://rpc.testnet.immutable.com`,this.relayerUrl=`https://api.sandbox.immutable.com/relayer-mr`,this.multiRollupConfig=o.getSandbox();break}}};const v=async(e,t,n=!0,r=!0)=>{let i=u(`passport`,t,n);try{return await e(i)}catch(e){throw e instanceof Error?l(`passport`,t,e,{flowId:i.details.flowId}):i.addEvent(`errored`),e}finally{r&&i.addEvent(`End`)}},y=e=>{if(typeof e==`object`&&e&&`response`in e){let{response:t}=e;if(t&&typeof t==`object`)return t}},b=t=>{let n=new _(t);return{passportConfig:n,auth:new e({...t,authenticationDomain:n.authenticationDomain,crossSdkBridgeEnabled:t.crossSdkBridgeEnabled,popupOverlayOptions:t.popupOverlayOptions,passportDomain:n.passportDomain}),environment:t.baseConfig.environment}};var x=class{auth;multiRollupApiClients;environment;passportConfig;constructor(e){let t=b(e);this.auth=t.auth,this.passportConfig=t.passportConfig,this.multiRollupApiClients=new i(this.passportConfig.multiRollupConfig),this.environment=t.environment,c(e.clientId)}async connectEvm(e={announceProvider:!0}){return v(async()=>{let t=this.passportConfig.overrides,n;return n=t?.zkEvmChainId?{chainId:t.zkEvmChainId,name:t.zkEvmChainName||`Dev Chain`,rpcUrl:this.passportConfig.zkEvmRpcUrl,relayerUrl:this.passportConfig.relayerUrl,apiUrl:this.passportConfig.multiRollupConfig.indexer.basePath||this.passportConfig.passportDomain,passportDomain:this.passportConfig.passportDomain,magicPublishableApiKey:this.passportConfig.magicPublishableApiKey,magicProviderId:this.passportConfig.magicProviderId,magicTeeBasePath:t.magicTeeBasePath||this.passportConfig.magicTeeBasePath}:this.environment===s.PRODUCTION?{chainId:13371,name:`Immutable zkEVM`,rpcUrl:this.passportConfig.zkEvmRpcUrl,relayerUrl:this.passportConfig.relayerUrl,apiUrl:this.passportConfig.multiRollupConfig.indexer.basePath||this.passportConfig.passportDomain,passportDomain:this.passportConfig.passportDomain,magicPublishableApiKey:this.passportConfig.magicPublishableApiKey,magicProviderId:this.passportConfig.magicProviderId,magicTeeBasePath:this.passportConfig.magicTeeBasePath}:{chainId:13473,name:`Immutable zkEVM Testnet`,rpcUrl:this.passportConfig.zkEvmRpcUrl,relayerUrl:this.passportConfig.relayerUrl,apiUrl:this.passportConfig.multiRollupConfig.indexer.basePath||this.passportConfig.passportDomain,passportDomain:this.passportConfig.passportDomain,magicPublishableApiKey:this.passportConfig.magicPublishableApiKey,magicProviderId:this.passportConfig.magicProviderId,magicTeeBasePath:this.passportConfig.magicTeeBasePath},await h({getUser:(e,t)=>e?this.auth.forceUserRefresh():t?.silent?this.auth.getUser():this.auth.getUserOrLogin(),clientId:this.passportConfig.oidcConfiguration.clientId,chains:[n],crossSdkBridgeEnabled:this.passportConfig.crossSdkBridgeEnabled,jsonRpcReferrer:this.passportConfig.jsonRpcReferrer,forceScwDeployBeforeMessageSignature:this.passportConfig.forceScwDeployBeforeMessageSignature,passportEventEmitter:this.auth.eventEmitter,feeTokenSymbol:`IMX`,announceProvider:e?.announceProvider??!0})},`connectEvm`,!1)}async login(e){let t=e?{useCachedSession:e.useCachedSession,useSilentLogin:e.useSilentLogin,useRedirectFlow:e.useRedirectFlow,directLoginOptions:e.directLoginOptions}:void 0,n=await this.auth.login(t);return n?n.profile:null}async loginCallback(){await this.auth.loginCallback()}async logout(){await this.auth.logout()}async getUserInfo(){return v(async()=>(await this.auth.getUser())?.profile,`getUserInfo`,!1)}async getIdToken(){return(await this.auth.getUser())?.idToken}async getAccessToken(){return(await this.auth.getUser())?.accessToken}async loginWithPKCEFlow(e,t){return this.auth.loginWithPKCEFlow(e,t)}async loginWithPKCEFlowCallback(e,t){return(await this.auth.loginWithPKCEFlowCallback(e,t)).profile}async storeTokens(e){return(await this.auth.storeTokens(e)).profile}async getLogoutUrl(){return await this.auth.getLogoutUrl()}async logoutSilentCallback(e){return this.auth.logoutSilentCallback(e)}async getLinkedAddresses(){return v(async()=>{let e=await this.auth.getUser();if(!e?.profile.sub)return[];let t={Authorization:`Bearer ${e.accessToken}`};return(await this.multiRollupApiClients.passportProfileApi.getUserInfo({headers:t})).data.linked_addresses},`getLinkedAddresses`,!1)}async linkExternalWallet(e){let i=e=>typeof e==`object`&&!!e&&`code`in e&&`message`in e,a=u(`passport`,`linkExternalWallet`,!1);try{let i=await this.auth.getUser();if(!i)throw new t(`User is not logged in`,n.NOT_LOGGED_IN_ERROR);if(!r(i))throw new t(`User has not been registered`,n.USER_NOT_REGISTERED_ERROR);let a={Authorization:`Bearer ${i.accessToken}`},o={type:e.type,wallet_address:e.walletAddress,signature:e.signature,nonce:e.nonce};return{...(await this.multiRollupApiClients.passportProfileApi.linkWalletV2({linkWalletV2Request:o},{headers:a})).data}}catch(e){if(e instanceof Error?l(`passport`,`linkExternalWallet`,e):a.addEvent(`errored`),e instanceof t)throw e;let r=y(e);if(r){if(r.data&&i(r.data)){let{code:e,message:i}=r.data;switch(e){case`ALREADY_LINKED`:throw new t(i,n.LINK_WALLET_ALREADY_LINKED_ERROR);case`MAX_WALLETS_LINKED`:throw new t(i,n.LINK_WALLET_MAX_WALLETS_LINKED_ERROR);case`DUPLICATE_NONCE`:throw new t(i,n.LINK_WALLET_DUPLICATE_NONCE_ERROR);case`VALIDATION_ERROR`:throw new t(i,n.LINK_WALLET_VALIDATION_ERROR);default:throw new t(i,n.LINK_WALLET_GENERIC_ERROR)}}else if(r.status)throw new t(`Link wallet request failed with status code ${r.status}`,n.LINK_WALLET_GENERIC_ERROR)}let o=`Link wallet request failed`;throw e instanceof Error&&(o+=`: ${e.message}`),new t(o,n.LINK_WALLET_GENERIC_ERROR)}finally{a.addEvent(`End`)}}};let S=function(e){return e.OptedIn=`opted_in`,e.Unsubscribed=`unsubscribed`,e.Subscribed=`subscribed`,e}({});export{d as JsonRpcError,S as MarketingConsentStatus,x as Passport,t as PassportError,f as ProviderErrorCode,p as ProviderEvent,m as RpcErrorCode};
|
package/package.json
CHANGED
|
@@ -1,39 +1,34 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@imtbl/passport",
|
|
3
3
|
"description": "Passport module for Immutable SDK",
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.23.1-0",
|
|
5
5
|
"author": "Immutable",
|
|
6
|
+
"browser": "dist/browser/index.js",
|
|
6
7
|
"bugs": "https://github.com/immutable/ts-immutable-sdk/issues",
|
|
7
8
|
"dependencies": {
|
|
8
|
-
"@imtbl/auth": "2.
|
|
9
|
-
"@imtbl/
|
|
10
|
-
"@imtbl/config": "2.
|
|
11
|
-
"@imtbl/
|
|
12
|
-
"@imtbl/metrics": "2.
|
|
9
|
+
"@imtbl/auth": "2.23.1-0",
|
|
10
|
+
"@imtbl/generated-clients": "2.23.1-0",
|
|
11
|
+
"@imtbl/config": "2.23.1-0",
|
|
12
|
+
"@imtbl/wallet": "2.23.1-0",
|
|
13
|
+
"@imtbl/metrics": "2.23.1-0"
|
|
13
14
|
},
|
|
14
15
|
"devDependencies": {
|
|
15
|
-
"@swc/core": "^1.
|
|
16
|
+
"@swc/core": "^1.15.46",
|
|
16
17
|
"@swc/jest": "^0.2.37",
|
|
17
18
|
"@types/jest": "^29.5.12",
|
|
18
19
|
"@types/jwt-encode": "^1.0.1",
|
|
19
|
-
"@types/react": "^18.3.
|
|
20
|
-
"@types/react-dom": "^18.3.
|
|
21
|
-
"@typescript
|
|
22
|
-
"@typescript-eslint/parser": "^5.57.1",
|
|
20
|
+
"@types/react": "^18.3.18",
|
|
21
|
+
"@types/react-dom": "^18.3.5",
|
|
22
|
+
"@typescript/native": "npm:typescript@^7.0.2",
|
|
23
23
|
"cross-fetch": "^3.1.6",
|
|
24
|
-
"eslint": "^8.56.0",
|
|
25
24
|
"jest": "^29.7.0",
|
|
26
|
-
"jest-environment-jsdom": "^29.
|
|
25
|
+
"jest-environment-jsdom": "^29.7.0",
|
|
27
26
|
"jwt-encode": "^1.0.1",
|
|
28
27
|
"msw": "^1.2.2",
|
|
29
|
-
"
|
|
30
|
-
"ts-node": "^10.9.1",
|
|
31
|
-
"tsup": "^8.3.0",
|
|
32
|
-
"typescript": "^5.6.2",
|
|
33
|
-
"@jest/test-sequencer": "^29.7.0"
|
|
28
|
+
"typescript": "npm:@typescript/typescript6@^6.0.2"
|
|
34
29
|
},
|
|
35
30
|
"engines": {
|
|
36
|
-
"node": ">=
|
|
31
|
+
"node": ">=24"
|
|
37
32
|
},
|
|
38
33
|
"exports": {
|
|
39
34
|
"development": {
|
|
@@ -56,21 +51,22 @@
|
|
|
56
51
|
"license": "Apache-2.0",
|
|
57
52
|
"main": "dist/node/index.cjs",
|
|
58
53
|
"module": "dist/node/index.js",
|
|
59
|
-
"browser": "dist/browser/index.js",
|
|
60
54
|
"publishConfig": {
|
|
61
55
|
"access": "public"
|
|
62
56
|
},
|
|
63
|
-
"repository":
|
|
57
|
+
"repository": {
|
|
58
|
+
"type": "git",
|
|
59
|
+
"url": "immutable/ts-immutable-sdk.git"
|
|
60
|
+
},
|
|
64
61
|
"type": "module",
|
|
65
62
|
"types": "./dist/types/index.d.ts",
|
|
66
63
|
"scripts": {
|
|
67
64
|
"build": "pnpm transpile && pnpm typegen",
|
|
68
|
-
"transpile": "tsup src/index.ts --config ../../../tsup.config.js",
|
|
69
|
-
"typegen": "tsc --customConditions default --emitDeclarationOnly --outDir dist/types",
|
|
70
65
|
"pack:root": "pnpm pack --pack-destination $(dirname $(pnpm root -w))",
|
|
71
|
-
"lint": "eslint ./src --ext .ts,.jsx,.tsx --max-warnings=0",
|
|
72
66
|
"test": "jest",
|
|
73
67
|
"test:watch": "jest --watch",
|
|
74
|
-
"
|
|
68
|
+
"transpile": "tsdown",
|
|
69
|
+
"typecheck": "tsc --customConditions default --noEmit --jsx preserve",
|
|
70
|
+
"typegen": "tsc --customConditions default --emitDeclarationOnly --outDir dist/types"
|
|
75
71
|
}
|
|
76
72
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|