@rango-dev/provider-metamask 0.63.1-next.1 → 0.63.1-next.3

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/mod.d.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  declare const versions: () => readonly [readonly ["1.0.0", import("@hub3js/core").Provider<Record<"evm", import("@hub3js/evm").EvmActions> & Record<"solana", import("@hub3js/solana").SolanaActions>>]];
2
2
  export { versions };
3
+ export { WALLET_ID } from './constants.js';
3
4
  //# sourceMappingURL=mod.d.ts.map
package/dist/mod.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAIA,QAAA,MAAM,QAAQ,kLAC8C,CAAC;AAE7D,OAAO,EAAE,QAAQ,EAAE,CAAC"}
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAIA,QAAA,MAAM,QAAQ,kLAC8C,CAAC;AAE7D,OAAO,EAAE,QAAQ,EAAE,CAAC;AACpB,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,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 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};
1
+ var x=Object.defineProperty;var a=(n,t)=>x(n,"name",{value:t,configurable:!0});import{defineVersions as bn}from"@hub3js/core/utils";import{ProviderBuilder as En}from"@hub3js/core";import{isEvmNamespace as X}from"@hub3js/evm";import{isSolanaNamespace as z}from"@hub3js/solana";import{EVM_NAMESPACE as R,SOLANA_NAMESPACE as B}from"@hub3js/namespaces";import{DefaultSignerFactory as j,TransactionType as h}from"rango-types";import{generalSolanaTransactionExecutor as L}from"@rango-dev/signer-solana";import O from"bs58";import{SignerError as c,SignerErrorCode as l}from"rango-types";async function D(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(D,"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 O.encode(r.signature)}catch(e){throw new c(l.SIGN_TX_ERROR,void 0,e)}}async signAndSendTx(t){return{hash:await D(t,this._provider)}}};async function g(n){let t=n.get(R),e=n.get(B),o=new j,{DefaultEvmSigner:r}=await import("@rango-dev/signer-evm");return t&&o.registerSigner(h.EVM,new r(t)),e&&o.registerSigner(h.SOLANA,new f(e)),o}a(g,"getSigners");import{EVM_NAMESPACE as E,SOLANA_NAMESPACE as b}from"@hub3js/namespaces";import{getWallets as F}from"@wallet-standard/app";function d(){let{ethereum:n}=window,t=G();if(!n||!V(n))return null;let e=new Map;return n&&e.set(E,n),t&&e.set(b,t),e}a(d,"metamask");function V(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(V,"isEthereumMetamaskProvider");function m(){let t=d()?.get(E);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(b);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 w(){let n=d();if(!n)throw new Error("MetaMask is not injected. Please check your wallet.");return n}a(w,"getInstanceOrThrow");function G(){return F().get().find(n=>n.name===v&&n.chains.includes(y))}a(G,"getSolanaWalletInstance");var i="metamask",v="MetaMask",y="solana:mainnet",I={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:X},{label:"Solana",value:"Solana",id:"SOLANA",isChainSupported:z}]}},{name:"signers",value:{getSigners:async()=>g(w())}}]};import{ActionBuilder as U,NamespaceBuilder as q}from"@hub3js/core";import{actions as p,builders as S,utils as J}from"@hub3js/evm";import*as T from"@hub3js/std/builders";import{connectAndUpdateStateForMultiNetworks as K,intoConnecting as Y,intoConnectionFinished as Z,standardizeAndThrowError as H}from"@hub3js/std/operators";var[Q,_]=S.changeAccountSubscriber(m).format(async(n,t)=>{let e=await n.request({method:"eth_chainId"});return J.formatAccountsToCAIP([t[0]],e)}).build(),$=new U("connect").action(p.connect(m)).and((n,t)=>({...t,accounts:[t.accounts[0]]})).and(K).before(Y).before(Q).or(_).or(H).after(Z).build(),nn=S.canEagerConnect().action(p.canEagerConnect(m)).build(),tn=T.disconnect().after(_).build(),en=S.canSwitchNetwork().action(p.canSwitchNetwork()).build(),an=S.getChainId().action(p.getChainId(m)).build(),k=new q("EVM",i).action($).action(tn).action(en).action(nn).action(an).build();import{ActionBuilder as mn,NamespaceBuilder as fn}from"@hub3js/core";import{builders as un}from"@hub3js/solana";import*as P from"@hub3js/std/builders";import{standardizeAndThrowError as pn}from"@hub3js/std/operators";import{utils as on}from"@hub3js/solana";function rn(n){return async()=>{let e=await n().features["standard:connect"].connect();return on.formatAccountsToCAIP(e.accounts.map(o=>o.address))}}a(rn,"connect");function sn(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(sn,"canEagerConnect");var A={connect:rn,canEagerConnect:sn};import{utils as cn}from"@hub3js/solana";import{ChangeAccountSubscriberBuilder as ln}from"@hub3js/std/hooks";var dn=a(n=>new ln().getInstance(n).onSwitchAccount((t,e)=>{t.payload.accounts?.length||(e.action("disconnect"),t.preventDefault())}).format(async(t,e)=>cn.formatAccountsToCAIP(e.accounts.map(o=>o.address))).addEventListener((t,e)=>{t.features["standard:events"].on("change",e)}).removeEventListener((t,e)=>{}),"changeAccountSubscriber"),M={changeAccountSubscriber:dn};var[Sn,C]=M.changeAccountSubscriber(u).build(),gn=un.connect().action(A.connect(u)).before(Sn).or(C).or(pn).build(),An=new mn("canEagerConnect").action(A.canEagerConnect(u)).build(),hn=P.disconnect().after(C).build(),W=new fn("Solana",i).action(gn).action(hn).action(An).build();var N=a(()=>new En(i).init(function(n){let[,t]=n.state();d()&&(t("installed",!0),console.debug("[metamask] instance detected.",n))}).config("metadata",I).add("evm",k).add("solana",W).build(),"buildProvider");var Et=a(()=>bn().version("1.0.0",N()).build(),"versions");export{i as WALLET_ID,Et 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 { 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": "+EAAA,OAAS,kBAAAA,OAAsB,qBCA/B,OAAS,mBAAAC,OAAuB,eCEhC,OAAS,kBAAAC,MAAsB,cAC/B,OAAS,qBAAAC,MAAyB,iBCAlC,OAAS,iBAAAC,EAAe,oBAAAC,MAAwB,qBAChD,OACE,iCAAAC,EACA,sBAAAC,MACK,4BACP,OAAS,wBAAAC,EAAsB,mBAAmBC,MAAc,cCNhE,OACE,oCAAAC,MAEK,2BACP,OAAOC,MAAY,OACnB,OAEE,eAAAC,EACA,mBAAAC,MAEK,cAEP,eAAeC,EACbC,EACAC,EACiB,CAoCjB,OAAO,MAAMC,EAAiCF,EAnCAG,EAAA,MAC5CC,GACG,CACH,GAAM,CAACC,CAAc,EAAIJ,EAAe,SACxC,GAAI,CAACI,EAAe,UAClB,MAAM,IAAIC,EACRC,EAAgB,cAChB,8DACF,EAGF,GAAIP,EAAG,OAASK,EAAe,QAC7B,MAAM,IAAIC,EACRC,EAAgB,cAChB,8IACF,EAGF,GAAI,CACF,GAAM,CAACC,CAAU,EAAI,MAAMP,EAAe,SACxC,wBACF,EAAE,gBAAgB,CAChB,QAASI,EACT,YAAaD,EAAsB,UAAU,CAC/C,CAAC,EACD,OAAOI,EAAW,iBAEpB,OAASC,EAAQ,CAEf,MAAIA,GAAK,OAAO,OAAOA,EAAG,MAAM,GAAKA,EAAE,OAAS,KACxC,IAAIH,EAAYC,EAAgB,iBAAkB,OAAWE,CAAC,EAEhE,IAAIH,EAAYC,EAAgB,cAAe,OAAWE,CAAC,CACnE,CACF,EAlC8C,sBAmCuB,CACvE,CAxCeN,EAAAJ,EAAA,4BA0CR,IAAMW,EAAN,KAAuE,CAxD9E,MAwD8E,CAAAP,EAAA,6BACpE,UAER,YAAYQ,EAAwC,CAClD,KAAK,UAAYA,CACnB,CAEA,IAAI,UAAyC,CAC3C,OAAO,KAAK,SACd,CAEA,MAAM,YAAYC,EAA8B,CAC9C,GAAI,CACF,IAAMC,EAAiB,IAAI,YAAY,EAAE,OAAOD,CAAG,EAC7C,CAACE,CAAO,EAAI,KAAK,SAAS,SAC1B,CAACN,CAAU,EAAI,MAAM,KAAK,UAAU,SACxC,oBACF,EAAE,YAAY,CACZ,QAASK,EACT,QAAAC,CACF,CAAC,EACD,OAAOC,EAAO,OAAOP,EAAW,SAAS,CAC3C,OAASQ,EAAO,CACd,MAAM,IAAIV,EAAYC,EAAgB,cAAe,OAAWS,CAAK,CACvE,CACF,CAEA,MAAM,cAAchB,EAAkD,CAEpE,MAAO,CAAE,KADI,MAAMD,EAAyBC,EAAI,KAAK,SAAS,CAChD,CAChB,CACF,ED3EA,eAAOiB,EACLC,EACwB,CACxB,IAAMC,EAAcC,EAAmBF,EAAUG,CAAa,EACxDC,EAAiBF,EAAmBF,EAAUK,CAAgB,EAE9DC,EAAU,IAAIC,EACd,CAAE,iBAAAC,CAAiB,EAAI,MAAMC,EACjC,SAAY,KAAM,QAAO,uBAAuB,CAClD,EACA,OAAAH,EAAQ,eAAeI,EAAO,IAAK,IAAIF,EAAiBP,CAAW,CAAC,EACpEK,EAAQ,eACNI,EAAO,OACP,IAAIC,EAAqBP,CAAc,CACzC,EACOE,CACT,CAhB8BM,EAAAb,EAAA,cEL9B,OAAS,iBAAAc,EAAe,oBAAAC,MAAwB,qBAChD,OAAS,cAAAC,MAAkB,uBAOpB,SAASC,GAA4B,CAC1C,GAAM,CAAE,SAAAC,CAAS,EAAI,OACfC,EAASC,EAAwB,EACvC,GAAI,CAACF,GAAY,CAACG,EAA2BH,CAAQ,EACnD,OAAO,KAGT,IAAMI,EAAsB,IAAI,IAEhC,OAAIJ,GACFI,EAAU,IAAIC,EAAeL,CAAQ,EAEnCC,GACFG,EAAU,IAAIE,EAAkBL,CAAM,EAGjCG,CACT,CAjBgBG,EAAAR,EAAA,YAkBhB,SAASI,EAA2BH,EAA2C,CAiE7E,MAhEI,GAACA,GAAU,YAOXA,EAAS,eAAiB,CAACA,EAAS,SAAW,CAACA,EAAS,QAGzDA,EAAS,cAGTA,EAAS,aAGTA,EAAS,WAGTA,EAAS,eAGTA,EAAS,UAGTA,EAAS,WAGTA,EAAS,SAGTA,EAAS,cAGTA,EAAS,aAAeA,EAAS,cAGjCA,EAAS,oBAAsBA,EAAS,wBAGxCA,EAAS,SAGTA,EAAS,UAGTA,EAAS,SAGTA,EAAS,WAGTA,EAAS,eAGTA,EAAS,YAGTA,EAAS,QAGTA,EAAS,UAGTA,EAAS,UAIf,CArESO,EAAAJ,EAAA,8BAsEF,SAASK,GAA8B,CAG5C,IAAMC,EAFYV,EAAS,GAEI,IAAIM,CAAa,EAEhD,GAAI,CAACI,EACH,MAAM,IAAI,MACR,qEACF,EAGF,OAAOA,CACT,CAZgBF,EAAAC,EAAA,eAaT,SAASE,GAA+C,CAE7D,IAAMC,EADYZ,EAAS,GACO,IAAIO,CAAgB,EACtD,GAAI,CAACK,EACH,MAAM,IAAI,MACR,kGACF,EAEF,OAAOA,CACT,CATgBJ,EAAAG,EAAA,kBAUT,SAASE,GAA+B,CAC7C,IAAMR,EAAYL,EAAS,EAE3B,GAAI,CAACK,EACH,MAAM,IAAI,MAAM,qDAAqD,EAGvE,OAAOA,CACT,CARgBG,EAAAK,EAAA,sBAShB,SAASV,GAA0B,CACjC,OAAOW,EAAW,EACf,IAAI,EACJ,KACEC,GACCA,EAAO,OAASC,GAChBD,EAAO,OAAO,SAASE,CAA8B,CACzD,CACJ,CARST,EAAAL,EAAA,2BH/HF,IAAMe,EAAY,WACZC,EAAuB,WACvBC,EAAiC,iBACjCC,EAA6B,CACxC,KAAM,WACN,KAAM,yFACN,WAAY,CACV,OACE,4FACF,MACE,4FACF,QAAS,gEACT,KAAM,uGACN,SAAU,+BACZ,EACA,WAAY,CACV,CACE,KAAM,aACN,MAAO,CACL,UAAW,WACX,KAAM,CACJ,CACE,MAAO,MACP,MAAO,MACP,GAAI,MACJ,iBAAkBC,CACpB,EACA,CACE,MAAO,SACP,MAAO,SACP,GAAI,SACJ,iBAAkBC,CACpB,CACF,CACF,CACF,EACA,CACE,KAAM,UACN,MAAO,CACL,WAAY,SAAYC,EAAWC,EAAmB,CAAC,CACzD,CACF,CACF,CACF,EIjDA,OAAS,iBAAAC,EAAe,oBAAAC,MAAwB,eAChD,OAAS,WAAAC,EAAS,YAAAC,EAAU,SAAAC,MAAa,cACzC,UAAYC,MAAoB,uBAChC,OACE,yCAAAC,EACA,kBAAAC,EACA,0BAAAC,EACA,4BAAAC,MACK,wBAKP,GAAM,CAACC,GAAyBC,CAAoB,EAAIC,EACrD,wBAAwBC,CAAW,EAKnC,OAAO,MAAOC,EAAUC,IAAa,CACpC,IAAMC,EAAU,MAAMF,EAAS,QAAQ,CAAE,OAAQ,aAAc,CAAC,EAChE,OAAOG,EAAM,qBAAqB,CAACF,EAAS,CAAC,CAAC,EAAGC,CAAO,CAC1D,CAAC,EACA,MAAM,EAEHE,GAAU,IAAIC,EAAqC,SAAS,EAC/D,OAAOC,EAAQ,QAAQP,CAAW,CAAC,EAQnC,IAAI,CAACQ,EAAGC,KAAmB,CAC1B,GAAGA,EACH,SAAU,CAACA,EAAc,SAAS,CAAC,CAAC,CACtC,EAAE,EACD,IAAIC,CAAqC,EACzC,OAAOC,CAAc,EACrB,OAAOd,EAAuB,EAC9B,GAAGC,CAAoB,EACvB,GAAGc,CAAwB,EAC3B,MAAMC,CAAsB,EAC5B,MAAM,EAEHC,GAAkBf,EACrB,gBAAgB,EAChB,OAAOQ,EAAQ,gBAAgBP,CAAW,CAAC,EAC3C,MAAM,EAEHe,GACH,aAAuB,EACvB,MAAMjB,CAAoB,EAC1B,MAAM,EAEHkB,GAAmBjB,EACtB,iBAAiB,EACjB,OAAOQ,EAAQ,iBAAiB,CAAC,EACjC,MAAM,EAEHU,GAAalB,EAChB,WAAW,EACX,OAAOQ,EAAQ,WAAWP,CAAW,CAAC,EACtC,MAAM,EAEHkB,EAAM,IAAIC,EAA6B,MAAOC,CAAS,EAC1D,OAAOf,EAAO,EACd,OAAOU,EAAU,EACjB,OAAOC,EAAgB,EACvB,OAAOF,EAAe,EACtB,OAAOG,EAAU,EACjB,MAAM,EC1ET,OAAS,iBAAAI,GAAe,oBAAAC,OAAwB,eAChD,OAAS,YAAAC,OAAoC,iBAC7C,UAAYC,MAAoB,uBAChC,OAAS,4BAAAC,OAAgC,wBCAzC,OAA6B,SAAAC,OAAa,iBAE1C,SAASC,GACPC,EACwD,CACxD,MAAO,UAAY,CAEjB,IAAMC,EAAgB,MADCD,EAAY,EACQ,SACzC,kBACF,EAAE,QAAQ,EACV,OAAOE,GAAM,qBACXD,EAAc,SAAS,IAAKE,GAAYA,EAAQ,OAAO,CACzD,CACF,CACF,CAZSC,EAAAL,GAAA,WAaT,SAASM,GAAgBL,EAAiD,CACxE,MAAO,UAAY,CACjB,IAAMM,EAAiBN,EAAY,EAEnC,GAAI,CAACM,EACH,MAAM,IAAI,MACR,mGACF,EAGF,GAAI,CAIF,MAAO,CAAC,EAHO,MAAMA,EAAe,SAAS,kBAAkB,EAAE,QAAQ,CACvE,OAAQ,EACV,CAAC,GACe,SAAS,MAC3B,MAAQ,CACN,MAAO,EACT,CACF,CACF,CAnBSF,EAAAC,GAAA,mBAoBF,IAAME,EAAgB,CAAE,QAAAR,GAAS,gBAAAM,EAAgB,ECnCxD,OAA6B,SAAAG,OAAa,iBAC1C,OAAS,kCAAAC,OAAsC,oBAG/C,IAAMC,GAA0BC,EAC9BC,GAEA,IAAIC,GAIF,EACC,YAAYD,CAAW,EACvB,gBAAgB,CAACE,EAAOC,IAAY,CAC9BD,EAAM,QAAQ,UAAU,SAC3BC,EAAQ,OAAO,YAAY,EAC3BD,EAAM,eAAe,EAEzB,CAAC,EACA,OAAO,MAAOE,EAAGF,IAChBG,GAAM,qBACJH,EAAM,SAAU,IAAKI,GAAYA,EAAQ,OAAO,CAClD,CACF,EACC,iBAAiB,CAACC,EAAUC,IAAa,CACxCD,EAAS,SAAS,iBAAiB,EAAE,GAAG,SAAUC,CAAQ,CAC5D,CAAC,EACA,oBAAoB,CAACJ,EAAGK,IAAO,CAAC,CAAC,EAvBN,2BAyBnBC,EAAiB,CAAE,wBAAAZ,EAAwB,EFtBxD,GAAM,CAACa,GAAyBC,CAAoB,EAAIC,EACrD,wBAAwBC,CAAc,EACtC,MAAM,EAEHC,GAAUC,GACb,QAAQ,EACR,OAAOC,EAAc,QAAQH,CAAc,CAAC,EAC5C,OAAOH,EAAuB,EAC9B,GAAGC,CAAoB,EACvB,GAAGM,EAAwB,EAC3B,MAAM,EAEHC,GAAkB,IAAIC,GAC1B,iBACF,EACG,OAAOH,EAAc,gBAAgBH,CAAc,CAAC,EACpD,MAAM,EAEHO,GACH,aAA0B,EAC1B,MAAMT,CAAoB,EAC1B,MAAM,EAEHU,EAAS,IAAIC,GAAgC,SAAUC,CAAS,EACnE,OAAOT,EAAO,EACd,OAAOM,EAAU,EACjB,OAAOF,EAAe,EACtB,MAAM,EN9BT,IAAMM,EAAgBC,EAAA,IACpB,IAAIC,GAAgBC,CAAS,EAC1B,KAAK,SAAUC,EAAS,CACvB,GAAM,CAAC,CAAEC,CAAQ,EAAID,EAAQ,MAAM,EAE/BE,EAAS,IACXD,EAAS,YAAa,EAAI,EAC1B,QAAQ,MAAM,gCAAiCD,CAAO,EAE1D,CAAC,EACA,OAAO,WAAYG,CAAQ,EAC3B,IAAI,MAAOC,CAAG,EACd,IAAI,SAAUC,CAAM,EACpB,MAAM,EAbW,iBDHtB,IAAMC,GAAWC,EAAA,IACfC,GAAe,EAAE,QAAQ,QAASC,EAAc,CAAC,EAAE,MAAM,EAD1C",
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"]
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 };\nexport { WALLET_ID } from './constants.js';\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 { 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 = provider.get(EVM_NAMESPACE);\n const solanaProvider = provider.get(SOLANA_NAMESPACE);\n\n const signers = new DefaultSignerFactory();\n const { DefaultEvmSigner } = await import('@rango-dev/signer-evm');\n if (!!ethProvider) {\n signers.registerSigner(TxType.EVM, new DefaultEvmSigner(ethProvider));\n }\n if (!!solanaProvider) {\n signers.registerSigner(\n TxType.SOLANA,\n new MetamaskSolanaSigner(solanaProvider)\n );\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;\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;\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", "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", "EVM_NAMESPACE", "solanaProvider", "SOLANA_NAMESPACE", "signers", "DefaultSignerFactory", "DefaultEvmSigner", "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
  }
@@ -1 +1 @@
1
- {"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../src/signer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAWjD,wBAA8B,UAAU,CACtC,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,aAAa,CAAC,CAcxB"}
1
+ {"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../src/signer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAOjD,wBAA8B,UAAU,CACtC,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,aAAa,CAAC,CAgBxB"}
package/dist/types.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import type { ProviderAPI as EvmProviderApi } from '@hub3js/evm';
2
2
  import type { EVM_NAMESPACE, SOLANA_NAMESPACE } from '@hub3js/namespaces';
3
+ import type { InstanceMap } from '@hub3js/std/types';
3
4
  import type { WalletWithFeatures as StandardWalletWithFeatures } from '@wallet-standard/base';
4
5
  import { type SolanaSignMessageFeature, type SolanaSignTransactionFeature } from '@solana/wallet-standard-features';
5
6
  import { type StandardConnectFeature, type StandardEventsFeature } from '@wallet-standard/features';
@@ -35,5 +36,5 @@ export type ProviderObject = {
35
36
  [EVM_NAMESPACE]: MetamaskEvmProviderApi;
36
37
  [SOLANA_NAMESPACE]: WalletStandardSolanaInstance;
37
38
  };
38
- export type Provider = Map<keyof ProviderObject, ProviderObject[keyof ProviderObject]>;
39
+ export type Provider = InstanceMap<ProviderObject>;
39
40
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,IAAI,cAAc,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,KAAK,EAAE,kBAAkB,IAAI,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAE9F,OAAO,EACL,KAAK,wBAAwB,EAC7B,KAAK,4BAA4B,EAClC,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC3B,MAAM,2BAA2B,CAAC;AAEnC,MAAM,MAAM,4BAA4B,GAAG,0BAA0B,CACnE,sBAAsB,GACpB,qBAAqB,GACrB,4BAA4B,GAC5B,wBAAwB,CAC3B,CAAC;AACF,MAAM,MAAM,sBAAsB,GAAG,cAAc,GAAG;IACpD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AACF,MAAM,MAAM,cAAc,GAAG;IAC3B,CAAC,aAAa,CAAC,EAAE,sBAAsB,CAAC;IACxC,CAAC,gBAAgB,CAAC,EAAE,4BAA4B,CAAC;CAClD,CAAC;AACF,MAAM,MAAM,QAAQ,GAAG,GAAG,CACxB,MAAM,cAAc,EACpB,cAAc,CAAC,MAAM,cAAc,CAAC,CACrC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,IAAI,cAAc,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,kBAAkB,IAAI,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAE9F,OAAO,EACL,KAAK,wBAAwB,EAC7B,KAAK,4BAA4B,EAClC,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC3B,MAAM,2BAA2B,CAAC;AAEnC,MAAM,MAAM,4BAA4B,GAAG,0BAA0B,CACnE,sBAAsB,GACpB,qBAAqB,GACrB,4BAA4B,GAC5B,wBAAwB,CAC3B,CAAC;AACF,MAAM,MAAM,sBAAsB,GAAG,cAAc,GAAG;IACpD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AACF,MAAM,MAAM,cAAc,GAAG;IAC3B,CAAC,aAAa,CAAC,EAAE,sBAAsB,CAAC;IACxC,CAAC,gBAAgB,CAAC,EAAE,4BAA4B,CAAC;CAClD,CAAC;AACF,MAAM,MAAM,QAAQ,GAAG,WAAW,CAAC,cAAc,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rango-dev/provider-metamask",
3
- "version": "0.63.1-next.1",
3
+ "version": "0.63.1-next.3",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "source": "./src/mod.ts",
@@ -22,14 +22,13 @@
22
22
  },
23
23
  "dependencies": {
24
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.45.0",
25
+ "@hub3js/evm": "^0.4.0",
26
+ "@hub3js/namespaces": "^0.3.0",
27
+ "@hub3js/solana": "^0.4.0",
28
+ "@hub3js/std": "^0.3.0",
29
+ "@rango-dev/signer-evm": "^0.45.1-next.0",
30
30
  "@rango-dev/signer-solana": "^0.49.0",
31
- "@rango-dev/wallets-core": "^0.61.0",
32
- "@rango-dev/wallets-shared": "^0.62.1-next.1",
31
+ "@rango-dev/wallets-core": "^0.61.1-next.0",
33
32
  "@wallet-standard/app": "^1.1.0",
34
33
  "bs58": "^5.0.0",
35
34
  "rango-types": "^0.5.0"
package/src/mod.ts CHANGED
@@ -6,3 +6,4 @@ const versions = () =>
6
6
  defineVersions().version('1.0.0', buildProvider()).build();
7
7
 
8
8
  export { versions };
9
+ export { WALLET_ID } from './constants.js';
package/src/signer.ts CHANGED
@@ -2,10 +2,6 @@ import type { Provider } from './types.js';
2
2
  import type { SignerFactory } from 'rango-types';
3
3
 
4
4
  import { EVM_NAMESPACE, SOLANA_NAMESPACE } from '@hub3js/namespaces';
5
- import {
6
- dynamicImportWithRefinedError,
7
- getNetworkInstance,
8
- } from '@rango-dev/wallets-shared';
9
5
  import { DefaultSignerFactory, TransactionType as TxType } from 'rango-types';
10
6
 
11
7
  import { MetamaskSolanaSigner } from './signers/solana.js';
@@ -13,17 +9,19 @@ import { MetamaskSolanaSigner } from './signers/solana.js';
13
9
  export default async function getSigners(
14
10
  provider: Provider
15
11
  ): Promise<SignerFactory> {
16
- const ethProvider = getNetworkInstance(provider, EVM_NAMESPACE);
17
- const solanaProvider = getNetworkInstance(provider, SOLANA_NAMESPACE);
12
+ const ethProvider = provider.get(EVM_NAMESPACE);
13
+ const solanaProvider = provider.get(SOLANA_NAMESPACE);
18
14
 
19
15
  const signers = new DefaultSignerFactory();
20
- const { DefaultEvmSigner } = await dynamicImportWithRefinedError(
21
- async () => await import('@rango-dev/signer-evm')
22
- );
23
- signers.registerSigner(TxType.EVM, new DefaultEvmSigner(ethProvider));
24
- signers.registerSigner(
25
- TxType.SOLANA,
26
- new MetamaskSolanaSigner(solanaProvider)
27
- );
16
+ const { DefaultEvmSigner } = await import('@rango-dev/signer-evm');
17
+ if (!!ethProvider) {
18
+ signers.registerSigner(TxType.EVM, new DefaultEvmSigner(ethProvider));
19
+ }
20
+ if (!!solanaProvider) {
21
+ signers.registerSigner(
22
+ TxType.SOLANA,
23
+ new MetamaskSolanaSigner(solanaProvider)
24
+ );
25
+ }
28
26
  return signers;
29
27
  }
package/src/types.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import type { ProviderAPI as EvmProviderApi } from '@hub3js/evm';
2
2
  import type { EVM_NAMESPACE, SOLANA_NAMESPACE } from '@hub3js/namespaces';
3
+ import type { InstanceMap } from '@hub3js/std/types';
3
4
  import type { WalletWithFeatures as StandardWalletWithFeatures } from '@wallet-standard/base';
4
5
 
5
6
  import {
@@ -48,7 +49,4 @@ export type ProviderObject = {
48
49
  [EVM_NAMESPACE]: MetamaskEvmProviderApi;
49
50
  [SOLANA_NAMESPACE]: WalletStandardSolanaInstance;
50
51
  };
51
- export type Provider = Map<
52
- keyof ProviderObject,
53
- ProviderObject[keyof ProviderObject]
54
- >;
52
+ export type Provider = InstanceMap<ProviderObject>;
package/src/utils.ts CHANGED
@@ -112,7 +112,7 @@ export function evmMetamask(): EvmProviderApi {
112
112
  );
113
113
  }
114
114
 
115
- return evmInstance as EvmProviderApi;
115
+ return evmInstance;
116
116
  }
117
117
  export function solanaMetamask(): WalletStandardSolanaInstance {
118
118
  const instances = metamask();
@@ -122,7 +122,7 @@ export function solanaMetamask(): WalletStandardSolanaInstance {
122
122
  'Metamask Solana instance is not available. Ensure that Solana support is enabled in your wallet.'
123
123
  );
124
124
  }
125
- return solanaInstance as WalletStandardSolanaInstance;
125
+ return solanaInstance;
126
126
  }
127
127
  export function getInstanceOrThrow(): Provider {
128
128
  const instances = metamask();