@rango-dev/provider-metamask 0.62.1-next.0 → 0.62.1-next.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAYrD,eAAO,MAAM,SAAS,aAAa,CAAC;AACpC,eAAO,MAAM,oBAAoB,aAAa,CAAC;AAC/C,eAAO,MAAM,8BAA8B,mBAAmB,CAAC;AAC/D,eAAO,MAAM,QAAQ,EAAE,gBA4CtB,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAQrD,eAAO,MAAM,SAAS,aAAa,CAAC;AACpC,eAAO,MAAM,oBAAoB,aAAa,CAAC;AAC/C,eAAO,MAAM,8BAA8B,mBAAmB,CAAC;AAC/D,eAAO,MAAM,QAAQ,EAAE,gBAwCtB,CAAC"}
package/dist/mod.js CHANGED
@@ -1,2 +1,2 @@
1
- var O=Object.defineProperty;var a=(n,t)=>O(n,"name",{value:t,configurable:!0});import{defineVersions as yn}from"@hub3js/core/utils";import{ProviderBuilder as vn}from"@hub3js/core";import{evmBlockchains as z,hyperliquidBlockchain as U,solanaBlockchain as J}from"rango-types";import{EVM_NAMESPACE as B,SOLANA_NAMESPACE as j}from"@hub3js/namespaces";import{dynamicImportWithRefinedError as F,getNetworkInstance as A}from"@rango-dev/wallets-shared";import{DefaultSignerFactory as V,TransactionType as E}from"rango-types";import{generalSolanaTransactionExecutor as L}from"@rango-dev/signer-solana";import D from"bs58";import{SignerError as c,SignerErrorCode as l}from"rango-types";async function R(n,t){return await L(n,a(async o=>{let[r]=t.accounts;if(!r.publicKey)throw new c(l.SIGN_TX_ERROR,"Please make sure the required account is connected properly.");if(n.from!==r.address)throw new c(l.SIGN_TX_ERROR,"Your connected account doesn't match with the required account. Please ensure that you are connected with the correct account and try again.");try{let[s]=await t.features["solana:signTransaction"].signTransaction({account:r,transaction:o.serialize()});return s.signedTransaction}catch(s){throw s&&Object.hasOwn(s,"code")&&s.code===4001?new c(l.REJECTED_BY_USER,void 0,s):new c(l.SIGN_TX_ERROR,void 0,s)}},"DefaultSolanaSigner"))}a(R,"executeSolanaTransaction");var u=class{static{a(this,"MetamaskSolanaSigner")}_provider;constructor(t){this._provider=t}get provider(){return this._provider}async signMessage(t){try{let e=new TextEncoder().encode(t),[o]=this.provider.accounts,[r]=await this._provider.features["solana:signMessage"].signMessage({message:e,account:o});return D.encode(r.signature)}catch(e){throw new c(l.SIGN_TX_ERROR,void 0,e)}}async signAndSendTx(t){return{hash:await R(t,this._provider)}}};async function g(n){let t=A(n,B),e=A(n,j),o=new V,{DefaultEvmSigner:r}=await F(async()=>await import("@rango-dev/signer-evm"));return o.registerSigner(E.EVM,new r(t)),o.registerSigner(E.SOLANA,new u(e)),o}a(g,"getSigners");import{EVM_NAMESPACE as b,SOLANA_NAMESPACE as w}from"@hub3js/namespaces";import{getWallets as G}from"@wallet-standard/app";function d(){let{ethereum:n}=window,t=q();if(!n||!X(n))return null;let e=new Map;return n&&e.set(b,n),t&&e.set(w,t),e}a(d,"metamask");function X(n){return!(!n?.isMetaMask||n.isBraveWallet&&!n._events&&!n._state||n.isApexWallet||n.isAvalanche||n.isBitKeep||n.isBlockWallet||n.isCoin98||n.isFordefi||n.__XDEFI||n.isMathWallet||n.isOkxWallet||n.isOKExWallet||n.isOneInchIOSWallet||n.isOneInchAndroidWallet||n.isOpera||n.isPortal||n.isRabby||n.isDefiant||n.isTokenPocket||n.isTokenary||n.isZeal||n.isZerion||n.isSafePal)}a(X,"isEthereumMetamaskProvider");function m(){let t=d()?.get(b);if(!t)throw new Error("Metamask not injected or EVM not enabled. Please check your wallet.");return t}a(m,"evmMetamask");function f(){let t=d()?.get(w);if(!t)throw new Error("Metamask Solana instance is not available. Ensure that Solana support is enabled in your wallet.");return t}a(f,"solanaMetamask");function v(){let n=d();if(!n)throw new Error("MetaMask is not injected. Please check your wallet.");return n}a(v,"getInstanceOrThrow");function q(){return G().get().find(n=>n.name===y&&n.chains.includes(I))}a(q,"getSolanaWalletInstance");var i="metamask",y="MetaMask",I="solana:mainnet",k={name:"MetaMask",icon:"https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/metamask/icon.svg",extensions:{chrome:"https://chrome.google.com/webstore/detail/metamask/nkbihfbeogaeaoehlefnkodbefgpgknn?hl=en",brave:"https://chrome.google.com/webstore/detail/metamask/nkbihfbeogaeaoehlefnkodbefgpgknn?hl=en",firefox:"https://addons.mozilla.org/en-US/firefox/addon/ether-metamask",edge:"https://microsoftedge.microsoft.com/addons/detail/metamask/ejbalbakoplchlghecdalmeeeajnimhm?hl=en-US",homepage:"https://metamask.io/download/"},properties:[{name:"namespaces",value:{selection:"multiple",data:[{label:"EVM",value:"EVM",id:"ETH",getSupportedChains:n=>[...z(n),...U(n)]},{label:"Solana",value:"Solana",id:"SOLANA",getSupportedChains:n=>J(n)}]}},{name:"signers",value:{getSigners:async()=>g(v())}}]};import{ActionBuilder as K,NamespaceBuilder as Y}from"@hub3js/core";import{actions as p,builders as S,utils as Z}from"@hub3js/evm";import*as T from"@hub3js/std/builders";import{connectAndUpdateStateForMultiNetworks as H,intoConnecting as Q,intoConnectionFinished as $,standardizeAndThrowError as nn}from"@hub3js/std/operators";var[tn,_]=S.changeAccountSubscriber(m).format(async(n,t)=>{let e=await n.request({method:"eth_chainId"});return Z.formatAccountsToCAIP([t[0]],e)}).build(),en=new K("connect").action(p.connect(m)).and((n,t)=>({...t,accounts:[t.accounts[0]]})).and(H).before(Q).before(tn).or(_).or(nn).after($).build(),an=S.canEagerConnect().action(p.canEagerConnect(m)).build(),on=T.disconnect().after(_).build(),rn=S.canSwitchNetwork().action(p.canSwitchNetwork()).build(),sn=S.getChainId().action(p.getChainId(m)).build(),M=new Y("EVM",i).action(en).action(on).action(rn).action(an).action(sn).build();import{ActionBuilder as pn,NamespaceBuilder as Sn}from"@hub3js/core";import{builders as gn}from"@hub3js/solana";import*as C from"@hub3js/std/builders";import{standardizeAndThrowError as hn}from"@hub3js/std/operators";import{utils as cn}from"@hub3js/solana";function ln(n){return async()=>{let e=await n().features["standard:connect"].connect();return cn.formatAccountsToCAIP(e.accounts.map(o=>o.address))}}a(ln,"connect");function dn(n){return async()=>{let t=n();if(!t)throw new Error("Trying to eagerly connect to your Solana wallet, but it seems that its instance is not available.");try{return!!(await t.features["standard:connect"].connect({silent:!0})).accounts.length}catch{return!1}}}a(dn,"canEagerConnect");var h={connect:ln,canEagerConnect:dn};import{utils as mn}from"@hub3js/solana";import{ChangeAccountSubscriberBuilder as un}from"@hub3js/std/hooks";var fn=a(n=>new un().getInstance(n).onSwitchAccount((t,e)=>{t.payload.accounts?.length||(e.action("disconnect"),t.preventDefault())}).format(async(t,e)=>mn.formatAccountsToCAIP(e.accounts.map(o=>o.address))).addEventListener((t,e)=>{t.features["standard:events"].on("change",e)}).removeEventListener((t,e)=>{}),"changeAccountSubscriber"),P={changeAccountSubscriber:fn};var[An,W]=P.changeAccountSubscriber(f).build(),En=gn.connect().action(h.connect(f)).before(An).or(W).or(hn).build(),bn=new pn("canEagerConnect").action(h.canEagerConnect(f)).build(),wn=C.disconnect().after(W).build(),N=new Sn("Solana",i).action(En).action(wn).action(bn).build();var x=a(()=>new vn(i).init(function(n){let[,t]=n.state();d()&&(t("installed",!0),console.debug("[metamask] instance detected.",n))}).config("metadata",k).add("evm",M).add("solana",N).build(),"buildProvider");var vt=a(()=>yn().version("1.0.0",x()).build(),"versions");export{vt as versions};
1
+ var O=Object.defineProperty;var a=(n,t)=>O(n,"name",{value:t,configurable:!0});import{defineVersions as vn}from"@hub3js/core/utils";import{ProviderBuilder as wn}from"@hub3js/core";import{isEvmNamespace as U}from"@hub3js/evm";import{isSolanaNamespace as q}from"@hub3js/solana";import{EVM_NAMESPACE as B,SOLANA_NAMESPACE as j}from"@hub3js/namespaces";import{dynamicImportWithRefinedError as F,getNetworkInstance as h}from"@rango-dev/wallets-shared";import{DefaultSignerFactory as V,TransactionType as E}from"rango-types";import{generalSolanaTransactionExecutor as L}from"@rango-dev/signer-solana";import D from"bs58";import{SignerError as c,SignerErrorCode as l}from"rango-types";async function R(n,t){return await L(n,a(async o=>{let[r]=t.accounts;if(!r.publicKey)throw new c(l.SIGN_TX_ERROR,"Please make sure the required account is connected properly.");if(n.from!==r.address)throw new c(l.SIGN_TX_ERROR,"Your connected account doesn't match with the required account. Please ensure that you are connected with the correct account and try again.");try{let[s]=await t.features["solana:signTransaction"].signTransaction({account:r,transaction:o.serialize()});return s.signedTransaction}catch(s){throw s&&Object.hasOwn(s,"code")&&s.code===4001?new c(l.REJECTED_BY_USER,void 0,s):new c(l.SIGN_TX_ERROR,void 0,s)}},"DefaultSolanaSigner"))}a(R,"executeSolanaTransaction");var f=class{static{a(this,"MetamaskSolanaSigner")}_provider;constructor(t){this._provider=t}get provider(){return this._provider}async signMessage(t){try{let e=new TextEncoder().encode(t),[o]=this.provider.accounts,[r]=await this._provider.features["solana:signMessage"].signMessage({message:e,account:o});return D.encode(r.signature)}catch(e){throw new c(l.SIGN_TX_ERROR,void 0,e)}}async signAndSendTx(t){return{hash:await R(t,this._provider)}}};async function g(n){let t=h(n,B),e=h(n,j),o=new V,{DefaultEvmSigner:r}=await F(async()=>await import("@rango-dev/signer-evm"));return o.registerSigner(E.EVM,new r(t)),o.registerSigner(E.SOLANA,new f(e)),o}a(g,"getSigners");import{EVM_NAMESPACE as b,SOLANA_NAMESPACE as w}from"@hub3js/namespaces";import{getWallets as G}from"@wallet-standard/app";function d(){let{ethereum:n}=window,t=z();if(!n||!X(n))return null;let e=new Map;return n&&e.set(b,n),t&&e.set(w,t),e}a(d,"metamask");function X(n){return!(!n?.isMetaMask||n.isBraveWallet&&!n._events&&!n._state||n.isApexWallet||n.isAvalanche||n.isBitKeep||n.isBlockWallet||n.isCoin98||n.isFordefi||n.__XDEFI||n.isMathWallet||n.isOkxWallet||n.isOKExWallet||n.isOneInchIOSWallet||n.isOneInchAndroidWallet||n.isOpera||n.isPortal||n.isRabby||n.isDefiant||n.isTokenPocket||n.isTokenary||n.isZeal||n.isZerion||n.isSafePal)}a(X,"isEthereumMetamaskProvider");function m(){let t=d()?.get(b);if(!t)throw new Error("Metamask not injected or EVM not enabled. Please check your wallet.");return t}a(m,"evmMetamask");function u(){let t=d()?.get(w);if(!t)throw new Error("Metamask Solana instance is not available. Ensure that Solana support is enabled in your wallet.");return t}a(u,"solanaMetamask");function v(){let n=d();if(!n)throw new Error("MetaMask is not injected. Please check your wallet.");return n}a(v,"getInstanceOrThrow");function z(){return G().get().find(n=>n.name===y&&n.chains.includes(I))}a(z,"getSolanaWalletInstance");var i="metamask",y="MetaMask",I="solana:mainnet",T={name:"MetaMask",icon:"https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/metamask/icon.svg",extensions:{chrome:"https://chrome.google.com/webstore/detail/metamask/nkbihfbeogaeaoehlefnkodbefgpgknn?hl=en",brave:"https://chrome.google.com/webstore/detail/metamask/nkbihfbeogaeaoehlefnkodbefgpgknn?hl=en",firefox:"https://addons.mozilla.org/en-US/firefox/addon/ether-metamask",edge:"https://microsoftedge.microsoft.com/addons/detail/metamask/ejbalbakoplchlghecdalmeeeajnimhm?hl=en-US",homepage:"https://metamask.io/download/"},properties:[{name:"namespaces",value:{selection:"multiple",data:[{label:"EVM",value:"EVM",id:"ETH",isChainSupported:U},{label:"Solana",value:"Solana",id:"SOLANA",isChainSupported:q}]}},{name:"signers",value:{getSigners:async()=>g(v())}}]};import{ActionBuilder as J,NamespaceBuilder as K}from"@hub3js/core";import{actions as p,builders as S,utils as Y}from"@hub3js/evm";import*as _ from"@hub3js/std/builders";import{connectAndUpdateStateForMultiNetworks as Z,intoConnecting as H,intoConnectionFinished as Q,standardizeAndThrowError as $}from"@hub3js/std/operators";var[nn,k]=S.changeAccountSubscriber(m).format(async(n,t)=>{let e=await n.request({method:"eth_chainId"});return Y.formatAccountsToCAIP([t[0]],e)}).build(),tn=new J("connect").action(p.connect(m)).and((n,t)=>({...t,accounts:[t.accounts[0]]})).and(Z).before(H).before(nn).or(k).or($).after(Q).build(),en=S.canEagerConnect().action(p.canEagerConnect(m)).build(),an=_.disconnect().after(k).build(),on=S.canSwitchNetwork().action(p.canSwitchNetwork()).build(),rn=S.getChainId().action(p.getChainId(m)).build(),M=new K("EVM",i).action(tn).action(an).action(on).action(en).action(rn).build();import{ActionBuilder as un,NamespaceBuilder as pn}from"@hub3js/core";import{builders as Sn}from"@hub3js/solana";import*as C from"@hub3js/std/builders";import{standardizeAndThrowError as gn}from"@hub3js/std/operators";import{utils as sn}from"@hub3js/solana";function cn(n){return async()=>{let e=await n().features["standard:connect"].connect();return sn.formatAccountsToCAIP(e.accounts.map(o=>o.address))}}a(cn,"connect");function ln(n){return async()=>{let t=n();if(!t)throw new Error("Trying to eagerly connect to your Solana wallet, but it seems that its instance is not available.");try{return!!(await t.features["standard:connect"].connect({silent:!0})).accounts.length}catch{return!1}}}a(ln,"canEagerConnect");var A={connect:cn,canEagerConnect:ln};import{utils as dn}from"@hub3js/solana";import{ChangeAccountSubscriberBuilder as mn}from"@hub3js/std/hooks";var fn=a(n=>new mn().getInstance(n).onSwitchAccount((t,e)=>{t.payload.accounts?.length||(e.action("disconnect"),t.preventDefault())}).format(async(t,e)=>dn.formatAccountsToCAIP(e.accounts.map(o=>o.address))).addEventListener((t,e)=>{t.features["standard:events"].on("change",e)}).removeEventListener((t,e)=>{}),"changeAccountSubscriber"),P={changeAccountSubscriber:fn};var[An,W]=P.changeAccountSubscriber(u).build(),hn=Sn.connect().action(A.connect(u)).before(An).or(W).or(gn).build(),En=new un("canEagerConnect").action(A.canEagerConnect(u)).build(),bn=C.disconnect().after(W).build(),N=new pn("Solana",i).action(hn).action(bn).action(En).build();var x=a(()=>new wn(i).init(function(n){let[,t]=n.state();d()&&(t("installed",!0),console.debug("[metamask] instance detected.",n))}).config("metadata",T).add("evm",M).add("solana",N).build(),"buildProvider");var vt=a(()=>vn().version("1.0.0",x()).build(),"versions");export{vt as versions};
2
2
  //# sourceMappingURL=mod.js.map
package/dist/mod.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/mod.ts", "../src/provider.ts", "../src/constants.ts", "../src/signer.ts", "../src/signers/solana.ts", "../src/utils.ts", "../src/namespaces/evm.ts", "../src/namespaces/solana.ts", "../src/actions/solana.ts", "../src/builders/solana.ts"],
4
- "sourcesContent": ["import { defineVersions } from '@hub3js/core/utils';\n\nimport { buildProvider } from './provider.js';\n\nconst versions = () =>\n defineVersions().version('1.0.0', buildProvider()).build();\n\nexport { versions };\n", "import { ProviderBuilder } from '@hub3js/core';\n\nimport { metadata, WALLET_ID } from './constants.js';\nimport { evm } from './namespaces/evm.js';\nimport { solana } from './namespaces/solana.js';\nimport { metamask as metamask } from './utils.js';\n\nconst buildProvider = () =>\n new ProviderBuilder(WALLET_ID)\n .init(function (context) {\n const [, setState] = context.state();\n\n if (metamask()) {\n setState('installed', true);\n console.debug('[metamask] instance detected.', context);\n }\n })\n .config('metadata', metadata)\n .add('evm', evm)\n .add('solana', solana)\n .build();\n\nexport { buildProvider };\n", "import type { ProviderMetadata } from '@hub3js/core';\n\nimport {\n type BlockchainMeta,\n evmBlockchains,\n hyperliquidBlockchain,\n solanaBlockchain,\n} from 'rango-types';\n\nimport getSigners from './signer.js';\nimport { getInstanceOrThrow } from './utils.js';\n\nexport const WALLET_ID = 'metamask';\nexport const WALLET_STANDARD_NAME = 'MetaMask';\nexport const SOLANA_WALLET_STANDARD_MAINNET = 'solana:mainnet';\nexport const metadata: ProviderMetadata = {\n name: 'MetaMask',\n icon: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/metamask/icon.svg',\n extensions: {\n chrome:\n 'https://chrome.google.com/webstore/detail/metamask/nkbihfbeogaeaoehlefnkodbefgpgknn?hl=en',\n brave:\n 'https://chrome.google.com/webstore/detail/metamask/nkbihfbeogaeaoehlefnkodbefgpgknn?hl=en',\n firefox: 'https://addons.mozilla.org/en-US/firefox/addon/ether-metamask',\n edge: 'https://microsoftedge.microsoft.com/addons/detail/metamask/ejbalbakoplchlghecdalmeeeajnimhm?hl=en-US',\n homepage: 'https://metamask.io/download/',\n },\n properties: [\n {\n name: 'namespaces',\n value: {\n selection: 'multiple',\n data: [\n {\n label: 'EVM',\n value: 'EVM',\n id: 'ETH',\n getSupportedChains: (allBlockchains: BlockchainMeta[]) => [\n ...evmBlockchains(allBlockchains),\n ...hyperliquidBlockchain(allBlockchains),\n ],\n },\n {\n label: 'Solana',\n value: 'Solana',\n id: 'SOLANA',\n getSupportedChains: (allBlockchains: BlockchainMeta[]) =>\n solanaBlockchain(allBlockchains),\n },\n ],\n },\n },\n {\n name: 'signers',\n value: {\n getSigners: async () => getSigners(getInstanceOrThrow()),\n },\n },\n ],\n};\n", "import type { Provider } from './types.js';\nimport type { SignerFactory } from 'rango-types';\n\nimport { EVM_NAMESPACE, SOLANA_NAMESPACE } from '@hub3js/namespaces';\nimport {\n dynamicImportWithRefinedError,\n getNetworkInstance,\n} from '@rango-dev/wallets-shared';\nimport { DefaultSignerFactory, TransactionType as TxType } from 'rango-types';\n\nimport { MetamaskSolanaSigner } from './signers/solana.js';\n\nexport default async function getSigners(\n provider: Provider\n): Promise<SignerFactory> {\n const ethProvider = getNetworkInstance(provider, EVM_NAMESPACE);\n const solanaProvider = getNetworkInstance(provider, SOLANA_NAMESPACE);\n\n const signers = new DefaultSignerFactory();\n const { DefaultEvmSigner } = await dynamicImportWithRefinedError(\n async () => await import('@rango-dev/signer-evm')\n );\n signers.registerSigner(TxType.EVM, new DefaultEvmSigner(ethProvider));\n signers.registerSigner(\n TxType.SOLANA,\n new MetamaskSolanaSigner(solanaProvider)\n );\n return signers;\n}\n", "import type { WalletStandardSolanaInstance } from '../types.js';\n\nimport {\n generalSolanaTransactionExecutor,\n type SolanaWeb3Signer,\n} from '@rango-dev/signer-solana';\nimport base58 from 'bs58';\nimport {\n type GenericSigner,\n SignerError,\n SignerErrorCode,\n type SolanaTransaction,\n} from 'rango-types';\n\nasync function executeSolanaTransaction(\n tx: SolanaTransaction,\n solanaProvider: WalletStandardSolanaInstance\n): Promise<string> {\n const DefaultSolanaSigner: SolanaWeb3Signer = async (\n solanaWeb3Transaction\n ) => {\n const [currentAccount] = solanaProvider.accounts;\n if (!currentAccount.publicKey) {\n throw new SignerError(\n SignerErrorCode.SIGN_TX_ERROR,\n 'Please make sure the required account is connected properly.'\n );\n }\n\n if (tx.from !== currentAccount.address) {\n throw new SignerError(\n SignerErrorCode.SIGN_TX_ERROR,\n `Your connected account doesn't match with the required account. Please ensure that you are connected with the correct account and try again.`\n );\n }\n\n try {\n const [signOutput] = await solanaProvider.features[\n 'solana:signTransaction'\n ].signTransaction({\n account: currentAccount,\n transaction: solanaWeb3Transaction.serialize(),\n });\n return signOutput.signedTransaction;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (e: any) {\n const REJECTION_CODE = 4001;\n if (e && Object.hasOwn(e, 'code') && e.code === REJECTION_CODE) {\n throw new SignerError(SignerErrorCode.REJECTED_BY_USER, undefined, e);\n }\n throw new SignerError(SignerErrorCode.SIGN_TX_ERROR, undefined, e);\n }\n };\n return await generalSolanaTransactionExecutor(tx, DefaultSolanaSigner);\n}\n\nexport class MetamaskSolanaSigner implements GenericSigner<SolanaTransaction> {\n private _provider: WalletStandardSolanaInstance;\n\n constructor(provider: WalletStandardSolanaInstance) {\n this._provider = provider;\n }\n\n get provider(): WalletStandardSolanaInstance {\n return this._provider;\n }\n\n async signMessage(msg: string): Promise<string> {\n try {\n const encodedMessage = new TextEncoder().encode(msg);\n const [account] = this.provider.accounts;\n const [signOutput] = await this._provider.features[\n 'solana:signMessage'\n ].signMessage({\n message: encodedMessage,\n account,\n });\n return base58.encode(signOutput.signature);\n } catch (error) {\n throw new SignerError(SignerErrorCode.SIGN_TX_ERROR, undefined, error);\n }\n }\n\n async signAndSendTx(tx: SolanaTransaction): Promise<{ hash: string }> {\n const hash = await executeSolanaTransaction(tx, this._provider);\n return { hash };\n }\n}\n", "import type {\n MetamaskEvmProviderApi,\n Provider,\n WalletStandardSolanaInstance,\n} from './types.js';\nimport type { ProviderAPI as EvmProviderApi } from '@hub3js/evm';\n\nimport { EVM_NAMESPACE, SOLANA_NAMESPACE } from '@hub3js/namespaces';\nimport { getWallets } from '@wallet-standard/app';\n\nimport {\n SOLANA_WALLET_STANDARD_MAINNET,\n WALLET_STANDARD_NAME,\n} from './constants.js';\n\nexport function metamask(): Provider | null {\n const { ethereum } = window;\n const solana = getSolanaWalletInstance();\n if (!ethereum || !isEthereumMetamaskProvider(ethereum)) {\n return null;\n }\n\n const instances: Provider = new Map();\n\n if (ethereum) {\n instances.set(EVM_NAMESPACE, ethereum);\n }\n if (solana) {\n instances.set(SOLANA_NAMESPACE, solana);\n }\n\n return instances;\n}\nfunction isEthereumMetamaskProvider(ethereum: MetamaskEvmProviderApi): boolean {\n if (!ethereum?.isMetaMask) {\n return false;\n }\n /*\n * Brave tries to make itself look like MetaMask\n * Could also try RPC `web3_clientVersion` if following is unreliable\n */\n if (ethereum.isBraveWallet && !ethereum._events && !ethereum._state) {\n return false;\n }\n if (ethereum.isApexWallet) {\n return false;\n }\n if (ethereum.isAvalanche) {\n return false;\n }\n if (ethereum.isBitKeep) {\n return false;\n }\n if (ethereum.isBlockWallet) {\n return false;\n }\n if (ethereum.isCoin98) {\n return false;\n }\n if (ethereum.isFordefi) {\n return false;\n }\n if (ethereum.__XDEFI) {\n return false;\n }\n if (ethereum.isMathWallet) {\n return false;\n }\n if (ethereum.isOkxWallet || ethereum.isOKExWallet) {\n return false;\n }\n if (ethereum.isOneInchIOSWallet || ethereum.isOneInchAndroidWallet) {\n return false;\n }\n if (ethereum.isOpera) {\n return false;\n }\n if (ethereum.isPortal) {\n return false;\n }\n if (ethereum.isRabby) {\n return false;\n }\n if (ethereum.isDefiant) {\n return false;\n }\n if (ethereum.isTokenPocket) {\n return false;\n }\n if (ethereum.isTokenary) {\n return false;\n }\n if (ethereum.isZeal) {\n return false;\n }\n if (ethereum.isZerion) {\n return false;\n }\n if (ethereum.isSafePal) {\n return false;\n }\n return true;\n}\nexport function evmMetamask(): EvmProviderApi {\n const instances = metamask();\n\n const evmInstance = instances?.get(EVM_NAMESPACE);\n\n if (!evmInstance) {\n throw new Error(\n 'Metamask not injected or EVM not enabled. Please check your wallet.'\n );\n }\n\n return evmInstance as EvmProviderApi;\n}\nexport function solanaMetamask(): WalletStandardSolanaInstance {\n const instances = metamask();\n const solanaInstance = instances?.get(SOLANA_NAMESPACE);\n if (!solanaInstance) {\n throw new Error(\n 'Metamask Solana instance is not available. Ensure that Solana support is enabled in your wallet.'\n );\n }\n return solanaInstance as WalletStandardSolanaInstance;\n}\nexport function getInstanceOrThrow(): Provider {\n const instances = metamask();\n\n if (!instances) {\n throw new Error('MetaMask is not injected. Please check your wallet.');\n }\n\n return instances;\n}\nfunction getSolanaWalletInstance() {\n return getWallets()\n .get()\n .find(\n (wallet) =>\n wallet.name === WALLET_STANDARD_NAME &&\n wallet.chains.includes(SOLANA_WALLET_STANDARD_MAINNET)\n ) as WalletStandardSolanaInstance;\n}\n", "import type { EvmActions } from '@hub3js/evm';\n\nimport { ActionBuilder, NamespaceBuilder } from '@hub3js/core';\nimport { actions, builders, utils } from '@hub3js/evm';\nimport * as commonBuilders from '@hub3js/std/builders';\nimport {\n connectAndUpdateStateForMultiNetworks,\n intoConnecting,\n intoConnectionFinished,\n standardizeAndThrowError,\n} from '@hub3js/std/operators';\n\nimport { WALLET_ID } from '../constants.js';\nimport { evmMetamask } from '../utils.js';\n\nconst [changeAccountSubscriber, changeAccountCleanup] = builders\n .changeAccountSubscriber(evmMetamask)\n /*\n * Metamask returns an array of connected accounts with the active one first.\n * Since we only need the active account, we take the first element as a workaround.\n */\n .format(async (instance, accounts) => {\n const chainId = await instance.request({ method: 'eth_chainId' });\n return utils.formatAccountsToCAIP([accounts[0]], chainId);\n })\n .build();\n\nconst connect = new ActionBuilder<EvmActions, 'connect'>('connect')\n .action(actions.connect(evmMetamask))\n /*\n * Metamask Wallet's `connect` returns a list where the currently selected account\n * is always the first item. We're directly taking this first item as the active account.\n *\n * ***NOTE***: Please keep it synced with `wallets/core/src/namespaces/solana/builders.ts`.\n *\n */\n .and((_, connectResult) => ({\n ...connectResult,\n accounts: [connectResult.accounts[0]],\n }))\n .and(connectAndUpdateStateForMultiNetworks)\n .before(intoConnecting)\n .before(changeAccountSubscriber)\n .or(changeAccountCleanup)\n .or(standardizeAndThrowError)\n .after(intoConnectionFinished)\n .build();\n\nconst canEagerConnect = builders\n .canEagerConnect()\n .action(actions.canEagerConnect(evmMetamask))\n .build();\n\nconst disconnect = commonBuilders\n .disconnect<EvmActions>()\n .after(changeAccountCleanup)\n .build();\n\nconst canSwitchNetwork = builders\n .canSwitchNetwork()\n .action(actions.canSwitchNetwork())\n .build();\n\nconst getChainId = builders\n .getChainId()\n .action(actions.getChainId(evmMetamask))\n .build();\n\nconst evm = new NamespaceBuilder<EvmActions>('EVM', WALLET_ID)\n .action(connect)\n .action(disconnect)\n .action(canSwitchNetwork)\n .action(canEagerConnect)\n .action(getChainId)\n .build();\n\nexport { evm };\n", "import { ActionBuilder, NamespaceBuilder } from '@hub3js/core';\nimport { builders, type SolanaActions } from '@hub3js/solana';\nimport * as commonBuilders from '@hub3js/std/builders';\nimport { standardizeAndThrowError } from '@hub3js/std/operators';\n\nimport { solanaActions } from '../actions/solana.js';\nimport { solanaBuilders } from '../builders/solana.js';\nimport { WALLET_ID } from '../constants.js';\nimport { solanaMetamask } from '../utils.js';\n\nconst [changeAccountSubscriber, changeAccountCleanup] = solanaBuilders\n .changeAccountSubscriber(solanaMetamask)\n .build();\n\nconst connect = builders\n .connect()\n .action(solanaActions.connect(solanaMetamask))\n .before(changeAccountSubscriber)\n .or(changeAccountCleanup)\n .or(standardizeAndThrowError)\n .build();\n\nconst canEagerConnect = new ActionBuilder<SolanaActions, 'canEagerConnect'>(\n 'canEagerConnect'\n)\n .action(solanaActions.canEagerConnect(solanaMetamask))\n .build();\n\nconst disconnect = commonBuilders\n .disconnect<SolanaActions>()\n .after(changeAccountCleanup)\n .build();\n\nconst solana = new NamespaceBuilder<SolanaActions>('Solana', WALLET_ID)\n .action(connect)\n .action(disconnect)\n .action(canEagerConnect)\n .build();\n\nexport { solana };\n", "import type { WalletStandardSolanaInstance } from '../types.js';\nimport type { Context, FunctionWithContext } from '@hub3js/core';\n\nimport { type SolanaActions, utils } from '@hub3js/solana';\n\nfunction connect(\n getInstance: () => WalletStandardSolanaInstance\n): FunctionWithContext<SolanaActions['connect'], Context> {\n return async () => {\n const solanaInstance = getInstance();\n const connectResult = await solanaInstance.features[\n 'standard:connect'\n ].connect();\n return utils.formatAccountsToCAIP(\n connectResult.accounts.map((account) => account.address)\n );\n };\n}\nfunction canEagerConnect(getInstance: () => WalletStandardSolanaInstance) {\n return async () => {\n const solanaInstance = getInstance();\n\n if (!solanaInstance) {\n throw new Error(\n 'Trying to eagerly connect to your Solana wallet, but it seems that its instance is not available.'\n );\n }\n\n try {\n const result = await solanaInstance.features['standard:connect'].connect({\n silent: true,\n });\n return !!result.accounts.length;\n } catch {\n return false;\n }\n };\n}\nexport const solanaActions = { connect, canEagerConnect };\n", "import type { WalletStandardSolanaInstance } from '../types.js';\nimport type { StandardEventsChangeProperties } from '@wallet-standard/features';\n\nimport { type SolanaActions, utils } from '@hub3js/solana';\nimport { ChangeAccountSubscriberBuilder } from '@hub3js/std/hooks';\n\n// Hooks\nconst changeAccountSubscriber = (\n getInstance: () => WalletStandardSolanaInstance\n) =>\n new ChangeAccountSubscriberBuilder<\n StandardEventsChangeProperties,\n WalletStandardSolanaInstance,\n SolanaActions\n >()\n .getInstance(getInstance)\n .onSwitchAccount((event, context) => {\n if (!event.payload.accounts?.length) {\n context.action('disconnect');\n event.preventDefault();\n }\n })\n .format(async (_, event) =>\n utils.formatAccountsToCAIP(\n event.accounts!.map((account) => account.address)\n )\n )\n .addEventListener((instance, callback) => {\n instance.features['standard:events'].on('change', callback);\n })\n .removeEventListener((_, __) => {});\n\nexport const solanaBuilders = { changeAccountSubscriber };\n"],
5
- "mappings": "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",
6
- "names": ["defineVersions", "ProviderBuilder", "evmBlockchains", "hyperliquidBlockchain", "solanaBlockchain", "EVM_NAMESPACE", "SOLANA_NAMESPACE", "dynamicImportWithRefinedError", "getNetworkInstance", "DefaultSignerFactory", "TxType", "generalSolanaTransactionExecutor", "base58", "SignerError", "SignerErrorCode", "executeSolanaTransaction", "tx", "solanaProvider", "generalSolanaTransactionExecutor", "__name", "solanaWeb3Transaction", "currentAccount", "SignerError", "SignerErrorCode", "signOutput", "e", "MetamaskSolanaSigner", "provider", "msg", "encodedMessage", "account", "base58", "error", "getSigners", "provider", "ethProvider", "getNetworkInstance", "EVM_NAMESPACE", "solanaProvider", "SOLANA_NAMESPACE", "signers", "DefaultSignerFactory", "DefaultEvmSigner", "dynamicImportWithRefinedError", "TxType", "MetamaskSolanaSigner", "__name", "EVM_NAMESPACE", "SOLANA_NAMESPACE", "getWallets", "metamask", "ethereum", "solana", "getSolanaWalletInstance", "isEthereumMetamaskProvider", "instances", "EVM_NAMESPACE", "SOLANA_NAMESPACE", "__name", "evmMetamask", "evmInstance", "solanaMetamask", "solanaInstance", "getInstanceOrThrow", "getWallets", "wallet", "WALLET_STANDARD_NAME", "SOLANA_WALLET_STANDARD_MAINNET", "WALLET_ID", "WALLET_STANDARD_NAME", "SOLANA_WALLET_STANDARD_MAINNET", "metadata", "allBlockchains", "evmBlockchains", "hyperliquidBlockchain", "solanaBlockchain", "getSigners", "getInstanceOrThrow", "ActionBuilder", "NamespaceBuilder", "actions", "builders", "utils", "commonBuilders", "connectAndUpdateStateForMultiNetworks", "intoConnecting", "intoConnectionFinished", "standardizeAndThrowError", "changeAccountSubscriber", "changeAccountCleanup", "builders", "evmMetamask", "instance", "accounts", "chainId", "utils", "connect", "ActionBuilder", "actions", "_", "connectResult", "connectAndUpdateStateForMultiNetworks", "intoConnecting", "standardizeAndThrowError", "intoConnectionFinished", "canEagerConnect", "disconnect", "canSwitchNetwork", "getChainId", "evm", "NamespaceBuilder", "WALLET_ID", "ActionBuilder", "NamespaceBuilder", "builders", "commonBuilders", "standardizeAndThrowError", "utils", "connect", "getInstance", "connectResult", "utils", "account", "__name", "canEagerConnect", "solanaInstance", "solanaActions", "utils", "ChangeAccountSubscriberBuilder", "changeAccountSubscriber", "__name", "getInstance", "ChangeAccountSubscriberBuilder", "event", "context", "_", "utils", "account", "instance", "callback", "__", "solanaBuilders", "changeAccountSubscriber", "changeAccountCleanup", "solanaBuilders", "solanaMetamask", "connect", "builders", "solanaActions", "standardizeAndThrowError", "canEagerConnect", "ActionBuilder", "disconnect", "solana", "NamespaceBuilder", "WALLET_ID", "buildProvider", "__name", "ProviderBuilder", "WALLET_ID", "context", "setState", "metamask", "metadata", "evm", "solana", "versions", "__name", "defineVersions", "buildProvider"]
4
+ "sourcesContent": ["import { defineVersions } from '@hub3js/core/utils';\n\nimport { buildProvider } from './provider.js';\n\nconst versions = () =>\n defineVersions().version('1.0.0', buildProvider()).build();\n\nexport { versions };\n", "import { ProviderBuilder } from '@hub3js/core';\n\nimport { metadata, WALLET_ID } from './constants.js';\nimport { evm } from './namespaces/evm.js';\nimport { solana } from './namespaces/solana.js';\nimport { metamask as metamask } from './utils.js';\n\nconst buildProvider = () =>\n new ProviderBuilder(WALLET_ID)\n .init(function (context) {\n const [, setState] = context.state();\n\n if (metamask()) {\n setState('installed', true);\n console.debug('[metamask] instance detected.', context);\n }\n })\n .config('metadata', metadata)\n .add('evm', evm)\n .add('solana', solana)\n .build();\n\nexport { buildProvider };\n", "import type { ProviderMetadata } from '@hub3js/core';\n\nimport { isEvmNamespace } from '@hub3js/evm';\nimport { isSolanaNamespace } from '@hub3js/solana';\n\nimport getSigners from './signer.js';\nimport { getInstanceOrThrow } from './utils.js';\n\nexport const WALLET_ID = 'metamask';\nexport const WALLET_STANDARD_NAME = 'MetaMask';\nexport const SOLANA_WALLET_STANDARD_MAINNET = 'solana:mainnet';\nexport const metadata: ProviderMetadata = {\n name: 'MetaMask',\n icon: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/metamask/icon.svg',\n extensions: {\n chrome:\n 'https://chrome.google.com/webstore/detail/metamask/nkbihfbeogaeaoehlefnkodbefgpgknn?hl=en',\n brave:\n 'https://chrome.google.com/webstore/detail/metamask/nkbihfbeogaeaoehlefnkodbefgpgknn?hl=en',\n firefox: 'https://addons.mozilla.org/en-US/firefox/addon/ether-metamask',\n edge: 'https://microsoftedge.microsoft.com/addons/detail/metamask/ejbalbakoplchlghecdalmeeeajnimhm?hl=en-US',\n homepage: 'https://metamask.io/download/',\n },\n properties: [\n {\n name: 'namespaces',\n value: {\n selection: 'multiple',\n data: [\n {\n label: 'EVM',\n value: 'EVM',\n id: 'ETH',\n isChainSupported: isEvmNamespace,\n },\n {\n label: 'Solana',\n value: 'Solana',\n id: 'SOLANA',\n isChainSupported: isSolanaNamespace,\n },\n ],\n },\n },\n {\n name: 'signers',\n value: {\n getSigners: async () => getSigners(getInstanceOrThrow()),\n },\n },\n ],\n};\n", "import type { Provider } from './types.js';\nimport type { SignerFactory } from 'rango-types';\n\nimport { EVM_NAMESPACE, SOLANA_NAMESPACE } from '@hub3js/namespaces';\nimport {\n dynamicImportWithRefinedError,\n getNetworkInstance,\n} from '@rango-dev/wallets-shared';\nimport { DefaultSignerFactory, TransactionType as TxType } from 'rango-types';\n\nimport { MetamaskSolanaSigner } from './signers/solana.js';\n\nexport default async function getSigners(\n provider: Provider\n): Promise<SignerFactory> {\n const ethProvider = getNetworkInstance(provider, EVM_NAMESPACE);\n const solanaProvider = getNetworkInstance(provider, SOLANA_NAMESPACE);\n\n const signers = new DefaultSignerFactory();\n const { DefaultEvmSigner } = await dynamicImportWithRefinedError(\n async () => await import('@rango-dev/signer-evm')\n );\n signers.registerSigner(TxType.EVM, new DefaultEvmSigner(ethProvider));\n signers.registerSigner(\n TxType.SOLANA,\n new MetamaskSolanaSigner(solanaProvider)\n );\n return signers;\n}\n", "import type { WalletStandardSolanaInstance } from '../types.js';\n\nimport {\n generalSolanaTransactionExecutor,\n type SolanaWeb3Signer,\n} from '@rango-dev/signer-solana';\nimport base58 from 'bs58';\nimport {\n type GenericSigner,\n SignerError,\n SignerErrorCode,\n type SolanaTransaction,\n} from 'rango-types';\n\nasync function executeSolanaTransaction(\n tx: SolanaTransaction,\n solanaProvider: WalletStandardSolanaInstance\n): Promise<string> {\n const DefaultSolanaSigner: SolanaWeb3Signer = async (\n solanaWeb3Transaction\n ) => {\n const [currentAccount] = solanaProvider.accounts;\n if (!currentAccount.publicKey) {\n throw new SignerError(\n SignerErrorCode.SIGN_TX_ERROR,\n 'Please make sure the required account is connected properly.'\n );\n }\n\n if (tx.from !== currentAccount.address) {\n throw new SignerError(\n SignerErrorCode.SIGN_TX_ERROR,\n `Your connected account doesn't match with the required account. Please ensure that you are connected with the correct account and try again.`\n );\n }\n\n try {\n const [signOutput] = await solanaProvider.features[\n 'solana:signTransaction'\n ].signTransaction({\n account: currentAccount,\n transaction: solanaWeb3Transaction.serialize(),\n });\n return signOutput.signedTransaction;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (e: any) {\n const REJECTION_CODE = 4001;\n if (e && Object.hasOwn(e, 'code') && e.code === REJECTION_CODE) {\n throw new SignerError(SignerErrorCode.REJECTED_BY_USER, undefined, e);\n }\n throw new SignerError(SignerErrorCode.SIGN_TX_ERROR, undefined, e);\n }\n };\n return await generalSolanaTransactionExecutor(tx, DefaultSolanaSigner);\n}\n\nexport class MetamaskSolanaSigner implements GenericSigner<SolanaTransaction> {\n private _provider: WalletStandardSolanaInstance;\n\n constructor(provider: WalletStandardSolanaInstance) {\n this._provider = provider;\n }\n\n get provider(): WalletStandardSolanaInstance {\n return this._provider;\n }\n\n async signMessage(msg: string): Promise<string> {\n try {\n const encodedMessage = new TextEncoder().encode(msg);\n const [account] = this.provider.accounts;\n const [signOutput] = await this._provider.features[\n 'solana:signMessage'\n ].signMessage({\n message: encodedMessage,\n account,\n });\n return base58.encode(signOutput.signature);\n } catch (error) {\n throw new SignerError(SignerErrorCode.SIGN_TX_ERROR, undefined, error);\n }\n }\n\n async signAndSendTx(tx: SolanaTransaction): Promise<{ hash: string }> {\n const hash = await executeSolanaTransaction(tx, this._provider);\n return { hash };\n }\n}\n", "import type {\n MetamaskEvmProviderApi,\n Provider,\n WalletStandardSolanaInstance,\n} from './types.js';\nimport type { ProviderAPI as EvmProviderApi } from '@hub3js/evm';\n\nimport { EVM_NAMESPACE, SOLANA_NAMESPACE } from '@hub3js/namespaces';\nimport { getWallets } from '@wallet-standard/app';\n\nimport {\n SOLANA_WALLET_STANDARD_MAINNET,\n WALLET_STANDARD_NAME,\n} from './constants.js';\n\nexport function metamask(): Provider | null {\n const { ethereum } = window;\n const solana = getSolanaWalletInstance();\n if (!ethereum || !isEthereumMetamaskProvider(ethereum)) {\n return null;\n }\n\n const instances: Provider = new Map();\n\n if (ethereum) {\n instances.set(EVM_NAMESPACE, ethereum);\n }\n if (solana) {\n instances.set(SOLANA_NAMESPACE, solana);\n }\n\n return instances;\n}\nfunction isEthereumMetamaskProvider(ethereum: MetamaskEvmProviderApi): boolean {\n if (!ethereum?.isMetaMask) {\n return false;\n }\n /*\n * Brave tries to make itself look like MetaMask\n * Could also try RPC `web3_clientVersion` if following is unreliable\n */\n if (ethereum.isBraveWallet && !ethereum._events && !ethereum._state) {\n return false;\n }\n if (ethereum.isApexWallet) {\n return false;\n }\n if (ethereum.isAvalanche) {\n return false;\n }\n if (ethereum.isBitKeep) {\n return false;\n }\n if (ethereum.isBlockWallet) {\n return false;\n }\n if (ethereum.isCoin98) {\n return false;\n }\n if (ethereum.isFordefi) {\n return false;\n }\n if (ethereum.__XDEFI) {\n return false;\n }\n if (ethereum.isMathWallet) {\n return false;\n }\n if (ethereum.isOkxWallet || ethereum.isOKExWallet) {\n return false;\n }\n if (ethereum.isOneInchIOSWallet || ethereum.isOneInchAndroidWallet) {\n return false;\n }\n if (ethereum.isOpera) {\n return false;\n }\n if (ethereum.isPortal) {\n return false;\n }\n if (ethereum.isRabby) {\n return false;\n }\n if (ethereum.isDefiant) {\n return false;\n }\n if (ethereum.isTokenPocket) {\n return false;\n }\n if (ethereum.isTokenary) {\n return false;\n }\n if (ethereum.isZeal) {\n return false;\n }\n if (ethereum.isZerion) {\n return false;\n }\n if (ethereum.isSafePal) {\n return false;\n }\n return true;\n}\nexport function evmMetamask(): EvmProviderApi {\n const instances = metamask();\n\n const evmInstance = instances?.get(EVM_NAMESPACE);\n\n if (!evmInstance) {\n throw new Error(\n 'Metamask not injected or EVM not enabled. Please check your wallet.'\n );\n }\n\n return evmInstance as EvmProviderApi;\n}\nexport function solanaMetamask(): WalletStandardSolanaInstance {\n const instances = metamask();\n const solanaInstance = instances?.get(SOLANA_NAMESPACE);\n if (!solanaInstance) {\n throw new Error(\n 'Metamask Solana instance is not available. Ensure that Solana support is enabled in your wallet.'\n );\n }\n return solanaInstance as WalletStandardSolanaInstance;\n}\nexport function getInstanceOrThrow(): Provider {\n const instances = metamask();\n\n if (!instances) {\n throw new Error('MetaMask is not injected. Please check your wallet.');\n }\n\n return instances;\n}\nfunction getSolanaWalletInstance() {\n return getWallets()\n .get()\n .find(\n (wallet) =>\n wallet.name === WALLET_STANDARD_NAME &&\n wallet.chains.includes(SOLANA_WALLET_STANDARD_MAINNET)\n ) as WalletStandardSolanaInstance;\n}\n", "import type { EvmActions } from '@hub3js/evm';\n\nimport { ActionBuilder, NamespaceBuilder } from '@hub3js/core';\nimport { actions, builders, utils } from '@hub3js/evm';\nimport * as commonBuilders from '@hub3js/std/builders';\nimport {\n connectAndUpdateStateForMultiNetworks,\n intoConnecting,\n intoConnectionFinished,\n standardizeAndThrowError,\n} from '@hub3js/std/operators';\n\nimport { WALLET_ID } from '../constants.js';\nimport { evmMetamask } from '../utils.js';\n\nconst [changeAccountSubscriber, changeAccountCleanup] = builders\n .changeAccountSubscriber(evmMetamask)\n /*\n * Metamask returns an array of connected accounts with the active one first.\n * Since we only need the active account, we take the first element as a workaround.\n */\n .format(async (instance, accounts) => {\n const chainId = await instance.request({ method: 'eth_chainId' });\n return utils.formatAccountsToCAIP([accounts[0]], chainId);\n })\n .build();\n\nconst connect = new ActionBuilder<EvmActions, 'connect'>('connect')\n .action(actions.connect(evmMetamask))\n /*\n * Metamask Wallet's `connect` returns a list where the currently selected account\n * is always the first item. We're directly taking this first item as the active account.\n *\n * ***NOTE***: Please keep it synced with `wallets/core/src/namespaces/solana/builders.ts`.\n *\n */\n .and((_, connectResult) => ({\n ...connectResult,\n accounts: [connectResult.accounts[0]],\n }))\n .and(connectAndUpdateStateForMultiNetworks)\n .before(intoConnecting)\n .before(changeAccountSubscriber)\n .or(changeAccountCleanup)\n .or(standardizeAndThrowError)\n .after(intoConnectionFinished)\n .build();\n\nconst canEagerConnect = builders\n .canEagerConnect()\n .action(actions.canEagerConnect(evmMetamask))\n .build();\n\nconst disconnect = commonBuilders\n .disconnect<EvmActions>()\n .after(changeAccountCleanup)\n .build();\n\nconst canSwitchNetwork = builders\n .canSwitchNetwork()\n .action(actions.canSwitchNetwork())\n .build();\n\nconst getChainId = builders\n .getChainId()\n .action(actions.getChainId(evmMetamask))\n .build();\n\nconst evm = new NamespaceBuilder<EvmActions>('EVM', WALLET_ID)\n .action(connect)\n .action(disconnect)\n .action(canSwitchNetwork)\n .action(canEagerConnect)\n .action(getChainId)\n .build();\n\nexport { evm };\n", "import { ActionBuilder, NamespaceBuilder } from '@hub3js/core';\nimport { builders, type SolanaActions } from '@hub3js/solana';\nimport * as commonBuilders from '@hub3js/std/builders';\nimport { standardizeAndThrowError } from '@hub3js/std/operators';\n\nimport { solanaActions } from '../actions/solana.js';\nimport { solanaBuilders } from '../builders/solana.js';\nimport { WALLET_ID } from '../constants.js';\nimport { solanaMetamask } from '../utils.js';\n\nconst [changeAccountSubscriber, changeAccountCleanup] = solanaBuilders\n .changeAccountSubscriber(solanaMetamask)\n .build();\n\nconst connect = builders\n .connect()\n .action(solanaActions.connect(solanaMetamask))\n .before(changeAccountSubscriber)\n .or(changeAccountCleanup)\n .or(standardizeAndThrowError)\n .build();\n\nconst canEagerConnect = new ActionBuilder<SolanaActions, 'canEagerConnect'>(\n 'canEagerConnect'\n)\n .action(solanaActions.canEagerConnect(solanaMetamask))\n .build();\n\nconst disconnect = commonBuilders\n .disconnect<SolanaActions>()\n .after(changeAccountCleanup)\n .build();\n\nconst solana = new NamespaceBuilder<SolanaActions>('Solana', WALLET_ID)\n .action(connect)\n .action(disconnect)\n .action(canEagerConnect)\n .build();\n\nexport { solana };\n", "import type { WalletStandardSolanaInstance } from '../types.js';\nimport type { Context, FunctionWithContext } from '@hub3js/core';\n\nimport { type SolanaActions, utils } from '@hub3js/solana';\n\nfunction connect(\n getInstance: () => WalletStandardSolanaInstance\n): FunctionWithContext<SolanaActions['connect'], Context> {\n return async () => {\n const solanaInstance = getInstance();\n const connectResult = await solanaInstance.features[\n 'standard:connect'\n ].connect();\n return utils.formatAccountsToCAIP(\n connectResult.accounts.map((account) => account.address)\n );\n };\n}\nfunction canEagerConnect(getInstance: () => WalletStandardSolanaInstance) {\n return async () => {\n const solanaInstance = getInstance();\n\n if (!solanaInstance) {\n throw new Error(\n 'Trying to eagerly connect to your Solana wallet, but it seems that its instance is not available.'\n );\n }\n\n try {\n const result = await solanaInstance.features['standard:connect'].connect({\n silent: true,\n });\n return !!result.accounts.length;\n } catch {\n return false;\n }\n };\n}\nexport const solanaActions = { connect, canEagerConnect };\n", "import type { WalletStandardSolanaInstance } from '../types.js';\nimport type { StandardEventsChangeProperties } from '@wallet-standard/features';\n\nimport { type SolanaActions, utils } from '@hub3js/solana';\nimport { ChangeAccountSubscriberBuilder } from '@hub3js/std/hooks';\n\n// Hooks\nconst changeAccountSubscriber = (\n getInstance: () => WalletStandardSolanaInstance\n) =>\n new ChangeAccountSubscriberBuilder<\n StandardEventsChangeProperties,\n WalletStandardSolanaInstance,\n SolanaActions\n >()\n .getInstance(getInstance)\n .onSwitchAccount((event, context) => {\n if (!event.payload.accounts?.length) {\n context.action('disconnect');\n event.preventDefault();\n }\n })\n .format(async (_, event) =>\n utils.formatAccountsToCAIP(\n event.accounts!.map((account) => account.address)\n )\n )\n .addEventListener((instance, callback) => {\n instance.features['standard:events'].on('change', callback);\n })\n .removeEventListener((_, __) => {});\n\nexport const solanaBuilders = { changeAccountSubscriber };\n"],
5
+ "mappings": "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",
6
+ "names": ["defineVersions", "ProviderBuilder", "isEvmNamespace", "isSolanaNamespace", "EVM_NAMESPACE", "SOLANA_NAMESPACE", "dynamicImportWithRefinedError", "getNetworkInstance", "DefaultSignerFactory", "TxType", "generalSolanaTransactionExecutor", "base58", "SignerError", "SignerErrorCode", "executeSolanaTransaction", "tx", "solanaProvider", "generalSolanaTransactionExecutor", "__name", "solanaWeb3Transaction", "currentAccount", "SignerError", "SignerErrorCode", "signOutput", "e", "MetamaskSolanaSigner", "provider", "msg", "encodedMessage", "account", "base58", "error", "getSigners", "provider", "ethProvider", "getNetworkInstance", "EVM_NAMESPACE", "solanaProvider", "SOLANA_NAMESPACE", "signers", "DefaultSignerFactory", "DefaultEvmSigner", "dynamicImportWithRefinedError", "TxType", "MetamaskSolanaSigner", "__name", "EVM_NAMESPACE", "SOLANA_NAMESPACE", "getWallets", "metamask", "ethereum", "solana", "getSolanaWalletInstance", "isEthereumMetamaskProvider", "instances", "EVM_NAMESPACE", "SOLANA_NAMESPACE", "__name", "evmMetamask", "evmInstance", "solanaMetamask", "solanaInstance", "getInstanceOrThrow", "getWallets", "wallet", "WALLET_STANDARD_NAME", "SOLANA_WALLET_STANDARD_MAINNET", "WALLET_ID", "WALLET_STANDARD_NAME", "SOLANA_WALLET_STANDARD_MAINNET", "metadata", "isEvmNamespace", "isSolanaNamespace", "getSigners", "getInstanceOrThrow", "ActionBuilder", "NamespaceBuilder", "actions", "builders", "utils", "commonBuilders", "connectAndUpdateStateForMultiNetworks", "intoConnecting", "intoConnectionFinished", "standardizeAndThrowError", "changeAccountSubscriber", "changeAccountCleanup", "builders", "evmMetamask", "instance", "accounts", "chainId", "utils", "connect", "ActionBuilder", "actions", "_", "connectResult", "connectAndUpdateStateForMultiNetworks", "intoConnecting", "standardizeAndThrowError", "intoConnectionFinished", "canEagerConnect", "disconnect", "canSwitchNetwork", "getChainId", "evm", "NamespaceBuilder", "WALLET_ID", "ActionBuilder", "NamespaceBuilder", "builders", "commonBuilders", "standardizeAndThrowError", "utils", "connect", "getInstance", "connectResult", "utils", "account", "__name", "canEagerConnect", "solanaInstance", "solanaActions", "utils", "ChangeAccountSubscriberBuilder", "changeAccountSubscriber", "__name", "getInstance", "ChangeAccountSubscriberBuilder", "event", "context", "_", "utils", "account", "instance", "callback", "__", "solanaBuilders", "changeAccountSubscriber", "changeAccountCleanup", "solanaBuilders", "solanaMetamask", "connect", "builders", "solanaActions", "standardizeAndThrowError", "canEagerConnect", "ActionBuilder", "disconnect", "solana", "NamespaceBuilder", "WALLET_ID", "buildProvider", "__name", "ProviderBuilder", "WALLET_ID", "context", "setState", "metamask", "metadata", "evm", "solana", "versions", "__name", "defineVersions", "buildProvider"]
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rango-dev/provider-metamask",
3
- "version": "0.62.1-next.0",
3
+ "version": "0.62.1-next.2",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "source": "./src/mod.ts",
@@ -14,22 +14,22 @@
14
14
  "src"
15
15
  ],
16
16
  "scripts": {
17
- "build": "node ../../scripts/build/command.mjs --path wallets/provider-metamask --inputs src/mod.ts",
17
+ "build": "yarn run rangutopia library build",
18
18
  "ts-check": "tsc --declaration --emitDeclarationOnly -p ./tsconfig.json",
19
19
  "clean": "rimraf dist",
20
20
  "format": "prettier --write '{.,src}/**/*.{ts,tsx}'",
21
21
  "lint": "eslint \"**/*.{ts,tsx}\""
22
22
  },
23
23
  "dependencies": {
24
- "@hub3js/core": "^0.61.0",
25
- "@hub3js/evm": "^0.3.0",
26
- "@hub3js/namespaces": "^0.2.2",
27
- "@hub3js/solana": "^0.3.0",
28
- "@hub3js/std": "^0.2.0",
29
- "@rango-dev/signer-evm": "^0.44.0",
30
- "@rango-dev/signer-solana": "^0.48.0",
31
- "@rango-dev/wallets-core": "^0.60.1-next.2",
32
- "@rango-dev/wallets-shared": "^0.61.1-next.3",
24
+ "@hub3js/core": "^0.61.1",
25
+ "@hub3js/evm": "^0.3.3",
26
+ "@hub3js/namespaces": "^0.2.5",
27
+ "@hub3js/solana": "^0.3.3",
28
+ "@hub3js/std": "^0.2.3",
29
+ "@rango-dev/signer-evm": "^0.44.1-next.0",
30
+ "@rango-dev/signer-solana": "^0.48.1-next.0",
31
+ "@rango-dev/wallets-core": "^0.60.1-next.4",
32
+ "@rango-dev/wallets-shared": "^0.61.1-next.5",
33
33
  "@wallet-standard/app": "^1.1.0",
34
34
  "bs58": "^5.0.0",
35
35
  "rango-types": "^0.5.0"
package/src/constants.ts CHANGED
@@ -1,11 +1,7 @@
1
1
  import type { ProviderMetadata } from '@hub3js/core';
2
2
 
3
- import {
4
- type BlockchainMeta,
5
- evmBlockchains,
6
- hyperliquidBlockchain,
7
- solanaBlockchain,
8
- } from 'rango-types';
3
+ import { isEvmNamespace } from '@hub3js/evm';
4
+ import { isSolanaNamespace } from '@hub3js/solana';
9
5
 
10
6
  import getSigners from './signer.js';
11
7
  import { getInstanceOrThrow } from './utils.js';
@@ -35,17 +31,13 @@ export const metadata: ProviderMetadata = {
35
31
  label: 'EVM',
36
32
  value: 'EVM',
37
33
  id: 'ETH',
38
- getSupportedChains: (allBlockchains: BlockchainMeta[]) => [
39
- ...evmBlockchains(allBlockchains),
40
- ...hyperliquidBlockchain(allBlockchains),
41
- ],
34
+ isChainSupported: isEvmNamespace,
42
35
  },
43
36
  {
44
37
  label: 'Solana',
45
38
  value: 'Solana',
46
39
  id: 'SOLANA',
47
- getSupportedChains: (allBlockchains: BlockchainMeta[]) =>
48
- solanaBlockchain(allBlockchains),
40
+ isChainSupported: isSolanaNamespace,
49
41
  },
50
42
  ],
51
43
  },
@@ -1 +0,0 @@
1
- {"inputs":{"src/signers/solana.ts":{"bytes":2756,"imports":[{"path":"@rango-dev/signer-solana","kind":"import-statement","external":true},{"path":"bs58","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/signer.ts":{"bytes":999,"imports":[{"path":"@hub3js/namespaces","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"src/signers/solana.ts","kind":"import-statement","original":"./signers/solana.js"},{"path":"@rango-dev/signer-evm","kind":"dynamic-import","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/utils.ts":{"bytes":3333,"imports":[{"path":"@hub3js/namespaces","kind":"import-statement","external":true},{"path":"@wallet-standard/app","kind":"import-statement","external":true},{"path":"src/constants.ts","kind":"import-statement","original":"./constants.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/constants.ts":{"bytes":1843,"imports":[{"path":"rango-types","kind":"import-statement","external":true},{"path":"src/signer.ts","kind":"import-statement","original":"./signer.js"},{"path":"src/utils.ts","kind":"import-statement","original":"./utils.js"}],"format":"esm"},"src/namespaces/evm.ts":{"bytes":2299,"imports":[{"path":"@hub3js/core","kind":"import-statement","external":true},{"path":"@hub3js/evm","kind":"import-statement","external":true},{"path":"@hub3js/std/builders","kind":"import-statement","external":true},{"path":"@hub3js/std/operators","kind":"import-statement","external":true},{"path":"src/constants.ts","kind":"import-statement","original":"../constants.js"},{"path":"src/utils.ts","kind":"import-statement","original":"../utils.js"}],"format":"esm"},"src/actions/solana.ts":{"bytes":1185,"imports":[{"path":"@hub3js/solana","kind":"import-statement","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/builders/solana.ts":{"bytes":1070,"imports":[{"path":"@hub3js/solana","kind":"import-statement","external":true},{"path":"@hub3js/std/hooks","kind":"import-statement","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/namespaces/solana.ts":{"bytes":1224,"imports":[{"path":"@hub3js/core","kind":"import-statement","external":true},{"path":"@hub3js/solana","kind":"import-statement","external":true},{"path":"@hub3js/std/builders","kind":"import-statement","external":true},{"path":"@hub3js/std/operators","kind":"import-statement","external":true},{"path":"src/actions/solana.ts","kind":"import-statement","original":"../actions/solana.js"},{"path":"src/builders/solana.ts","kind":"import-statement","original":"../builders/solana.js"},{"path":"src/constants.ts","kind":"import-statement","original":"../constants.js"},{"path":"src/utils.ts","kind":"import-statement","original":"../utils.js"}],"format":"esm"},"src/provider.ts":{"bytes":648,"imports":[{"path":"@hub3js/core","kind":"import-statement","external":true},{"path":"src/constants.ts","kind":"import-statement","original":"./constants.js"},{"path":"src/namespaces/evm.ts","kind":"import-statement","original":"./namespaces/evm.js"},{"path":"src/namespaces/solana.ts","kind":"import-statement","original":"./namespaces/solana.js"},{"path":"src/utils.ts","kind":"import-statement","original":"./utils.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/mod.ts":{"bytes":209,"imports":[{"path":"@hub3js/core/utils","kind":"import-statement","external":true},{"path":"src/provider.ts","kind":"import-statement","original":"./provider.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"}},"outputs":{"dist/mod.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":25576},"dist/mod.js":{"imports":[{"path":"@hub3js/core/utils","kind":"import-statement","external":true},{"path":"@hub3js/core","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"@hub3js/namespaces","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"@rango-dev/signer-solana","kind":"import-statement","external":true},{"path":"bs58","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"@rango-dev/signer-evm","kind":"dynamic-import","external":true},{"path":"@hub3js/namespaces","kind":"import-statement","external":true},{"path":"@wallet-standard/app","kind":"import-statement","external":true},{"path":"@hub3js/core","kind":"import-statement","external":true},{"path":"@hub3js/evm","kind":"import-statement","external":true},{"path":"@hub3js/std/builders","kind":"import-statement","external":true},{"path":"@hub3js/std/operators","kind":"import-statement","external":true},{"path":"@hub3js/core","kind":"import-statement","external":true},{"path":"@hub3js/solana","kind":"import-statement","external":true},{"path":"@hub3js/std/builders","kind":"import-statement","external":true},{"path":"@hub3js/std/operators","kind":"import-statement","external":true},{"path":"@hub3js/solana","kind":"import-statement","external":true},{"path":"@hub3js/solana","kind":"import-statement","external":true},{"path":"@hub3js/std/hooks","kind":"import-statement","external":true}],"exports":["versions"],"entryPoint":"src/mod.ts","inputs":{"src/mod.ts":{"bytesInOutput":112},"src/provider.ts":{"bytesInOutput":256},"src/constants.ts":{"bytesInOutput":955},"src/signer.ts":{"bytesInOutput":466},"src/signers/solana.ts":{"bytesInOutput":1295},"src/utils.ts":{"bytesInOutput":1248},"src/namespaces/evm.ts":{"bytesInOutput":912},"src/namespaces/solana.ts":{"bytesInOutput":496},"src/actions/solana.ts":{"bytesInOutput":537},"src/builders/solana.ts":{"bytesInOutput":477}},"bytes":6889}}}