@rango-dev/provider-binance 0.6.1-next.1 → 0.6.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.
package/dist/mod.js CHANGED
@@ -1,2 +1,2 @@
1
- var g=Object.defineProperty;var o=(e,t)=>g(e,"name",{value:t,configurable:!0});import{defineVersions as $}from"@hub3js/core/utils";import{ProviderBuilder as Y}from"@hub3js/core";import{CAIP_ARBITRUM_CHAIN_ID as v,CAIP_AVAX_CHAIN_ID as N,CAIP_BASE_CHAIN_ID as S,CAIP_BERACHAIN_CHAIN_ID as D,CAIP_BLAST_CHAIN_ID as y,CAIP_BSC_CHAIN_ID as H,CAIP_CELO_CHAIN_ID as M,CAIP_ETHEREUM_CHAIN_ID as T,CAIP_FANTOM_CHAIN_ID as j,CAIP_LINEA_CHAIN_ID as B,CAIP_METIS_CHAIN_ID as x,CAIP_MONAD_CHAIN_ID as k,CAIP_OPTIMISM_CHAIN_ID as L,CAIP_SCROLL_CHAIN_ID as V,CAIP_SONIC_CHAIN_ID as O,CAIP_ZETA_CHAIN_ID as R,isEvmNamespace as W}from"@hub3js/evm";import{getChainIdFromCaip2ChainId as F}from"@hub3js/std/utils";import{EVM_NAMESPACE as h}from"@hub3js/namespaces";import{dynamicImportWithRefinedError as b,getNetworkInstance as w}from"@rango-dev/wallets-shared";import{DefaultSignerFactory as P,TransactionType as E}from"rango-types";async function s(e){let t=w(e,h),n=new P,{DefaultEvmSigner:C}=await b(async()=>await import("@rango-dev/signer-evm"));return n.registerSigner(E.EVM,new C(t)),n}o(s,"getSigners");import"@hub3js/evm";import{EVM_NAMESPACE as I}from"@hub3js/namespaces";function r(){let{binancew3w:e}=window;if(!e)return null;let t=new Map;return e.ethereum&&t.set(I,e.ethereum),t.size===0?null:t}o(r,"binance");function d(){let e=r();if(!e)throw new Error("Binance Wallet is not injected. Please check your wallet.");return e}o(d,"getInstanceOrThrow");function i(){let t=r()?.get(I);if(!t)throw new Error("Binance not injected or EVM not enabled. Please check your wallet.");return t}o(i,"evmBinance");async function p(e){let[t]=await e.request({method:"eth_requestAccounts"}),n=await e.request({method:"eth_chainId"});return{accounts:[t],chainId:n}}o(p,"getEvmAccounts");var c="binance",q=[T,L,B,x,y,M,j,k,O,D,S,R,v,H,V,N],u={name:"Binance Wallet",icon:"https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/binance/icon.svg",extensions:{chrome:"https://chromewebstore.google.com/detail/binance-wallet/cadiboklkpojfamcoggejbbdjcoiljjk",brave:"https://chromewebstore.google.com/detail/binance-wallet/cadiboklkpojfamcoggejbbdjcoiljjk",homepage:"https://www.binance.com/binancewallet"},properties:[{name:"namespaces",value:{selection:"multiple",data:[{label:"EVM",value:"EVM",id:"ETH",isChainSupported:e=>W(e)&&q.includes(F(e))}]}},{name:"signers",value:{getSigners:async()=>s(d())}}]};import{NamespaceBuilder as U}from"@hub3js/core";import{actions as m,builders as a,utils as z}from"@hub3js/evm";import*as A from"@hub3js/std/builders";import{standardizeAndThrowError as X}from"@hub3js/std/operators";var[Z,l]=a.changeAccountSubscriber(i).format(async(e,t)=>{let n=await e.request({method:"eth_chainId"});return z.formatAccountsToCAIP([t[0]],n)}).build(),G=a.connect().action(m.connect(i,{getAccounts:p})).before(Z).or(l).or(X).build(),J=A.disconnect().after(l).build(),K=a.canSwitchNetwork().action(m.canSwitchNetwork()).build(),Q=a.getChainId().action(m.getChainId(i)).build(),_=new U("EVM",c).action(G).action(J).action(K).action(Q).build();var f=o(()=>new Y(c).init(function(e){let[,t]=e.state();r()&&(t("installed",!0),console.debug("[binance-wallet] instance detected.",e))}).config("metadata",u).add("evm",_).build(),"buildProvider");var ye=o(()=>$().version("1.0.0",f()).build(),"versions");export{ye as versions};
1
+ var g=Object.defineProperty;var o=(e,t)=>g(e,"name",{value:t,configurable:!0});import{defineVersions as Y}from"@hub3js/core/utils";import{ProviderBuilder as Q}from"@hub3js/core";import{CAIP_ARBITRUM_CHAIN_ID as v,CAIP_AVAX_CHAIN_ID as E,CAIP_BASE_CHAIN_ID as N,CAIP_BERACHAIN_CHAIN_ID as S,CAIP_BLAST_CHAIN_ID as D,CAIP_BSC_CHAIN_ID as y,CAIP_CELO_CHAIN_ID as H,CAIP_ETHEREUM_CHAIN_ID as M,CAIP_FANTOM_CHAIN_ID as T,CAIP_LINEA_CHAIN_ID as j,CAIP_METIS_CHAIN_ID as B,CAIP_MONAD_CHAIN_ID as x,CAIP_OPTIMISM_CHAIN_ID as k,CAIP_SCROLL_CHAIN_ID as L,CAIP_SONIC_CHAIN_ID as V,CAIP_ZETA_CHAIN_ID as O,isEvmNamespace as R}from"@hub3js/evm";import{getChainIdFromCaip2ChainId as F}from"@hub3js/std/utils";import{EVM_NAMESPACE as b}from"@hub3js/namespaces";import{getNetworkInstance as h}from"@rango-dev/wallets-shared";import{DefaultSignerFactory as P,TransactionType as w}from"rango-types";async function s(e){let t=h(e,b),n=new P,{DefaultEvmSigner:C}=await import("@rango-dev/signer-evm");return n.registerSigner(w.EVM,new C(t)),n}o(s,"getSigners");import"@hub3js/evm";import{EVM_NAMESPACE as I}from"@hub3js/namespaces";function r(){let{binancew3w:e}=window;if(!e)return null;let t=new Map;return e.ethereum&&t.set(I,e.ethereum),t.size===0?null:t}o(r,"binance");function d(){let e=r();if(!e)throw new Error("Binance Wallet is not injected. Please check your wallet.");return e}o(d,"getInstanceOrThrow");function i(){let t=r()?.get(I);if(!t)throw new Error("Binance not injected or EVM not enabled. Please check your wallet.");return t}o(i,"evmBinance");async function p(e){let[t]=await e.request({method:"eth_requestAccounts"}),n=await e.request({method:"eth_chainId"});return{accounts:[t],chainId:n}}o(p,"getEvmAccounts");var c="binance",W=[M,k,j,B,D,H,T,x,V,S,N,O,v,y,L,E],u={name:"Binance Wallet",icon:"https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/binance/icon.svg",extensions:{chrome:"https://chromewebstore.google.com/detail/binance-wallet/cadiboklkpojfamcoggejbbdjcoiljjk",brave:"https://chromewebstore.google.com/detail/binance-wallet/cadiboklkpojfamcoggejbbdjcoiljjk",homepage:"https://www.binance.com/binancewallet"},properties:[{name:"namespaces",value:{selection:"multiple",data:[{label:"EVM",value:"EVM",id:"ETH",isChainSupported:e=>R(e)&&W.includes(F(e))}]}},{name:"signers",value:{getSigners:async()=>s(d())}}]};import{NamespaceBuilder as q}from"@hub3js/core";import{actions as m,builders as a,utils as U}from"@hub3js/evm";import*as A from"@hub3js/std/builders";import{standardizeAndThrowError as z}from"@hub3js/std/operators";var[X,l]=a.changeAccountSubscriber(i).format(async(e,t)=>{let n=await e.request({method:"eth_chainId"});return U.formatAccountsToCAIP([t[0]],n)}).build(),Z=a.connect().action(m.connect(i,{getAccounts:p})).before(X).or(l).or(z).build(),G=A.disconnect().after(l).build(),J=a.canSwitchNetwork().action(m.canSwitchNetwork()).build(),K=a.getChainId().action(m.getChainId(i)).build(),_=new q("EVM",c).action(Z).action(G).action(J).action(K).build();var f=o(()=>new Q(c).init(function(e){let[,t]=e.state();r()&&(t("installed",!0),console.debug("[binance-wallet] instance detected.",e))}).config("metadata",u).add("evm",_).build(),"buildProvider");var De=o(()=>Y().version("1.0.0",f()).build(),"versions");export{De 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/utils.ts", "../src/namespaces/evm.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 { binance as binanceInstance } from './utils.js';\n\nconst buildProvider = () =>\n new ProviderBuilder(WALLET_ID)\n .init(function (context) {\n const [, setState] = context.state();\n if (binanceInstance()) {\n setState('installed', true);\n console.debug('[binance-wallet] instance detected.', context);\n }\n })\n .config('metadata', metadata)\n .add('evm', evm)\n .build();\n\nexport { buildProvider };\n", "import type { ProviderMetadata } from '@hub3js/core';\n\nimport {\n CAIP_ARBITRUM_CHAIN_ID,\n CAIP_AVAX_CHAIN_ID,\n CAIP_BASE_CHAIN_ID,\n CAIP_BERACHAIN_CHAIN_ID,\n CAIP_BLAST_CHAIN_ID,\n CAIP_BSC_CHAIN_ID,\n CAIP_CELO_CHAIN_ID,\n CAIP_ETHEREUM_CHAIN_ID,\n CAIP_FANTOM_CHAIN_ID,\n CAIP_LINEA_CHAIN_ID,\n CAIP_METIS_CHAIN_ID,\n CAIP_MONAD_CHAIN_ID,\n CAIP_OPTIMISM_CHAIN_ID,\n CAIP_SCROLL_CHAIN_ID,\n CAIP_SONIC_CHAIN_ID,\n CAIP_ZETA_CHAIN_ID,\n isEvmNamespace,\n} from '@hub3js/evm';\nimport { getChainIdFromCaip2ChainId } from '@hub3js/std/utils';\n\nimport getSigners from './signer.js';\nimport { getInstanceOrThrow } from './utils.js';\n\nexport const WALLET_ID = 'binance';\nexport const EVM_SUPPORTED_CHAINS = [\n CAIP_ETHEREUM_CHAIN_ID,\n CAIP_OPTIMISM_CHAIN_ID,\n CAIP_LINEA_CHAIN_ID,\n CAIP_METIS_CHAIN_ID,\n CAIP_BLAST_CHAIN_ID,\n CAIP_CELO_CHAIN_ID,\n CAIP_FANTOM_CHAIN_ID,\n CAIP_MONAD_CHAIN_ID,\n CAIP_SONIC_CHAIN_ID,\n CAIP_BERACHAIN_CHAIN_ID,\n CAIP_BASE_CHAIN_ID,\n CAIP_ZETA_CHAIN_ID,\n CAIP_ARBITRUM_CHAIN_ID,\n CAIP_BSC_CHAIN_ID,\n CAIP_SCROLL_CHAIN_ID,\n CAIP_AVAX_CHAIN_ID,\n];\n\nexport const metadata: ProviderMetadata = {\n name: 'Binance Wallet',\n icon: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/binance/icon.svg',\n extensions: {\n chrome:\n 'https://chromewebstore.google.com/detail/binance-wallet/cadiboklkpojfamcoggejbbdjcoiljjk',\n brave:\n 'https://chromewebstore.google.com/detail/binance-wallet/cadiboklkpojfamcoggejbbdjcoiljjk',\n homepage: 'https://www.binance.com/binancewallet',\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: (chainId: string) =>\n isEvmNamespace(chainId) &&\n EVM_SUPPORTED_CHAINS.includes(\n getChainIdFromCaip2ChainId(chainId)\n ),\n },\n ],\n },\n },\n {\n name: 'signers',\n value: { getSigners: async () => getSigners(getInstanceOrThrow()) },\n },\n ],\n};\n", "import type { Provider } from './types.js';\nimport type { SignerFactory } from 'rango-types';\n\nimport { EVM_NAMESPACE } from '@hub3js/namespaces';\nimport {\n dynamicImportWithRefinedError,\n getNetworkInstance,\n} from '@rango-dev/wallets-shared';\nimport { DefaultSignerFactory, TransactionType as TxType } from 'rango-types';\n\nexport default async function getSigners(\n provider: Provider\n): Promise<SignerFactory> {\n const evmProvider = getNetworkInstance(provider, EVM_NAMESPACE);\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(evmProvider));\n return signers;\n}\n", "import type { Provider } from './types.js';\n\nimport { type ProviderAPI as EvmProviderApi } from '@hub3js/evm';\nimport { EVM_NAMESPACE } from '@hub3js/namespaces';\n\nexport function binance(): Provider | null {\n const { binancew3w } = window;\n\n if (!binancew3w) {\n return null;\n }\n\n const instances = new Map();\n if (binancew3w.ethereum) {\n instances.set(EVM_NAMESPACE, binancew3w.ethereum);\n }\n\n if (instances.size === 0) {\n return null;\n }\n\n return instances;\n}\n\nexport function getInstanceOrThrow(): Provider {\n const instances = binance();\n\n if (!instances) {\n throw new Error(\n 'Binance Wallet is not injected. Please check your wallet.'\n );\n }\n\n return instances;\n}\n\nexport function evmBinance(): EvmProviderApi {\n const instances = binance();\n\n const evmInstance = instances?.get(EVM_NAMESPACE);\n\n if (!evmInstance) {\n throw new Error(\n 'Binance not injected or EVM not enabled. Please check your wallet.'\n );\n }\n\n return evmInstance;\n}\n/**\n * * WORKAROUND 1: Binance Wallet Race Condition\n * Simultaneous calls to 'eth_chainId' and 'eth_requestAccounts' fail to return\n * a chainId. These must be executed sequentially to ensure both values resolve.\n */\nexport async function getEvmAccounts(provider: EvmProviderApi) {\n /**\n * * WORKAROUND 2: Account Indexing Consistency\n * Binance 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 */\n const [account] = await provider.request({\n method: 'eth_requestAccounts',\n });\n const chainId = await provider.request({ method: 'eth_chainId' });\n\n return {\n accounts: [account],\n chainId,\n };\n}\n", "import type { EvmActions } from '@hub3js/evm';\n\nimport { NamespaceBuilder } from '@hub3js/core';\nimport { actions, builders, utils } from '@hub3js/evm';\nimport * as commonBuilders from '@hub3js/std/builders';\nimport { standardizeAndThrowError } from '@hub3js/std/operators';\n\nimport { WALLET_ID } from '../constants.js';\nimport { evmBinance, getEvmAccounts } from '../utils.js';\n\nconst [changeAccountSubscriber, changeAccountCleanup] = builders\n .changeAccountSubscriber(evmBinance)\n /*\n * Binance 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 = builders\n .connect()\n .action(\n actions.connect(evmBinance, {\n getAccounts: getEvmAccounts,\n })\n )\n .before(changeAccountSubscriber)\n .or(changeAccountCleanup)\n .or(standardizeAndThrowError)\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(evmBinance))\n .build();\n\nconst evm = new NamespaceBuilder<EvmActions>('EVM', WALLET_ID)\n .action(connect)\n .action(disconnect)\n .action(canSwitchNetwork)\n .action(getChainId)\n .build();\n\nexport { evm };\n"],
5
- "mappings": "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",
6
- "names": ["defineVersions", "ProviderBuilder", "CAIP_ARBITRUM_CHAIN_ID", "CAIP_AVAX_CHAIN_ID", "CAIP_BASE_CHAIN_ID", "CAIP_BERACHAIN_CHAIN_ID", "CAIP_BLAST_CHAIN_ID", "CAIP_BSC_CHAIN_ID", "CAIP_CELO_CHAIN_ID", "CAIP_ETHEREUM_CHAIN_ID", "CAIP_FANTOM_CHAIN_ID", "CAIP_LINEA_CHAIN_ID", "CAIP_METIS_CHAIN_ID", "CAIP_MONAD_CHAIN_ID", "CAIP_OPTIMISM_CHAIN_ID", "CAIP_SCROLL_CHAIN_ID", "CAIP_SONIC_CHAIN_ID", "CAIP_ZETA_CHAIN_ID", "isEvmNamespace", "getChainIdFromCaip2ChainId", "EVM_NAMESPACE", "dynamicImportWithRefinedError", "getNetworkInstance", "DefaultSignerFactory", "TxType", "getSigners", "provider", "evmProvider", "getNetworkInstance", "EVM_NAMESPACE", "signers", "DefaultSignerFactory", "DefaultEvmSigner", "dynamicImportWithRefinedError", "TxType", "__name", "EVM_NAMESPACE", "binance", "binancew3w", "instances", "EVM_NAMESPACE", "__name", "getInstanceOrThrow", "evmBinance", "evmInstance", "getEvmAccounts", "provider", "account", "chainId", "WALLET_ID", "EVM_SUPPORTED_CHAINS", "CAIP_ETHEREUM_CHAIN_ID", "CAIP_OPTIMISM_CHAIN_ID", "CAIP_LINEA_CHAIN_ID", "CAIP_METIS_CHAIN_ID", "CAIP_BLAST_CHAIN_ID", "CAIP_CELO_CHAIN_ID", "CAIP_FANTOM_CHAIN_ID", "CAIP_MONAD_CHAIN_ID", "CAIP_SONIC_CHAIN_ID", "CAIP_BERACHAIN_CHAIN_ID", "CAIP_BASE_CHAIN_ID", "CAIP_ZETA_CHAIN_ID", "CAIP_ARBITRUM_CHAIN_ID", "CAIP_BSC_CHAIN_ID", "CAIP_SCROLL_CHAIN_ID", "CAIP_AVAX_CHAIN_ID", "metadata", "chainId", "isEvmNamespace", "getChainIdFromCaip2ChainId", "getSigners", "getInstanceOrThrow", "NamespaceBuilder", "actions", "builders", "utils", "commonBuilders", "standardizeAndThrowError", "changeAccountSubscriber", "changeAccountCleanup", "builders", "evmBinance", "instance", "accounts", "chainId", "utils", "connect", "actions", "getEvmAccounts", "standardizeAndThrowError", "disconnect", "canSwitchNetwork", "getChainId", "evm", "NamespaceBuilder", "WALLET_ID", "buildProvider", "__name", "ProviderBuilder", "WALLET_ID", "context", "setState", "binance", "metadata", "evm", "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 { binance as binanceInstance } from './utils.js';\n\nconst buildProvider = () =>\n new ProviderBuilder(WALLET_ID)\n .init(function (context) {\n const [, setState] = context.state();\n if (binanceInstance()) {\n setState('installed', true);\n console.debug('[binance-wallet] instance detected.', context);\n }\n })\n .config('metadata', metadata)\n .add('evm', evm)\n .build();\n\nexport { buildProvider };\n", "import type { ProviderMetadata } from '@hub3js/core';\n\nimport {\n CAIP_ARBITRUM_CHAIN_ID,\n CAIP_AVAX_CHAIN_ID,\n CAIP_BASE_CHAIN_ID,\n CAIP_BERACHAIN_CHAIN_ID,\n CAIP_BLAST_CHAIN_ID,\n CAIP_BSC_CHAIN_ID,\n CAIP_CELO_CHAIN_ID,\n CAIP_ETHEREUM_CHAIN_ID,\n CAIP_FANTOM_CHAIN_ID,\n CAIP_LINEA_CHAIN_ID,\n CAIP_METIS_CHAIN_ID,\n CAIP_MONAD_CHAIN_ID,\n CAIP_OPTIMISM_CHAIN_ID,\n CAIP_SCROLL_CHAIN_ID,\n CAIP_SONIC_CHAIN_ID,\n CAIP_ZETA_CHAIN_ID,\n isEvmNamespace,\n} from '@hub3js/evm';\nimport { getChainIdFromCaip2ChainId } from '@hub3js/std/utils';\n\nimport getSigners from './signer.js';\nimport { getInstanceOrThrow } from './utils.js';\n\nexport const WALLET_ID = 'binance';\nexport const EVM_SUPPORTED_CHAINS = [\n CAIP_ETHEREUM_CHAIN_ID,\n CAIP_OPTIMISM_CHAIN_ID,\n CAIP_LINEA_CHAIN_ID,\n CAIP_METIS_CHAIN_ID,\n CAIP_BLAST_CHAIN_ID,\n CAIP_CELO_CHAIN_ID,\n CAIP_FANTOM_CHAIN_ID,\n CAIP_MONAD_CHAIN_ID,\n CAIP_SONIC_CHAIN_ID,\n CAIP_BERACHAIN_CHAIN_ID,\n CAIP_BASE_CHAIN_ID,\n CAIP_ZETA_CHAIN_ID,\n CAIP_ARBITRUM_CHAIN_ID,\n CAIP_BSC_CHAIN_ID,\n CAIP_SCROLL_CHAIN_ID,\n CAIP_AVAX_CHAIN_ID,\n];\n\nexport const metadata: ProviderMetadata = {\n name: 'Binance Wallet',\n icon: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/binance/icon.svg',\n extensions: {\n chrome:\n 'https://chromewebstore.google.com/detail/binance-wallet/cadiboklkpojfamcoggejbbdjcoiljjk',\n brave:\n 'https://chromewebstore.google.com/detail/binance-wallet/cadiboklkpojfamcoggejbbdjcoiljjk',\n homepage: 'https://www.binance.com/binancewallet',\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: (chainId: string) =>\n isEvmNamespace(chainId) &&\n EVM_SUPPORTED_CHAINS.includes(\n getChainIdFromCaip2ChainId(chainId)\n ),\n },\n ],\n },\n },\n {\n name: 'signers',\n value: { getSigners: async () => getSigners(getInstanceOrThrow()) },\n },\n ],\n};\n", "import type { Provider } from './types.js';\nimport type { SignerFactory } from 'rango-types';\n\nimport { EVM_NAMESPACE } from '@hub3js/namespaces';\nimport { getNetworkInstance } from '@rango-dev/wallets-shared';\nimport { DefaultSignerFactory, TransactionType as TxType } from 'rango-types';\n\nexport default async function getSigners(\n provider: Provider\n): Promise<SignerFactory> {\n const evmProvider = getNetworkInstance(provider, EVM_NAMESPACE);\n const signers = new DefaultSignerFactory();\n const { DefaultEvmSigner } = await import('@rango-dev/signer-evm');\n signers.registerSigner(TxType.EVM, new DefaultEvmSigner(evmProvider));\n return signers;\n}\n", "import type { Provider } from './types.js';\n\nimport { type ProviderAPI as EvmProviderApi } from '@hub3js/evm';\nimport { EVM_NAMESPACE } from '@hub3js/namespaces';\n\nexport function binance(): Provider | null {\n const { binancew3w } = window;\n\n if (!binancew3w) {\n return null;\n }\n\n const instances = new Map();\n if (binancew3w.ethereum) {\n instances.set(EVM_NAMESPACE, binancew3w.ethereum);\n }\n\n if (instances.size === 0) {\n return null;\n }\n\n return instances;\n}\n\nexport function getInstanceOrThrow(): Provider {\n const instances = binance();\n\n if (!instances) {\n throw new Error(\n 'Binance Wallet is not injected. Please check your wallet.'\n );\n }\n\n return instances;\n}\n\nexport function evmBinance(): EvmProviderApi {\n const instances = binance();\n\n const evmInstance = instances?.get(EVM_NAMESPACE);\n\n if (!evmInstance) {\n throw new Error(\n 'Binance not injected or EVM not enabled. Please check your wallet.'\n );\n }\n\n return evmInstance;\n}\n/**\n * * WORKAROUND 1: Binance Wallet Race Condition\n * Simultaneous calls to 'eth_chainId' and 'eth_requestAccounts' fail to return\n * a chainId. These must be executed sequentially to ensure both values resolve.\n */\nexport async function getEvmAccounts(provider: EvmProviderApi) {\n /**\n * * WORKAROUND 2: Account Indexing Consistency\n * Binance 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 */\n const [account] = await provider.request({\n method: 'eth_requestAccounts',\n });\n const chainId = await provider.request({ method: 'eth_chainId' });\n\n return {\n accounts: [account],\n chainId,\n };\n}\n", "import type { EvmActions } from '@hub3js/evm';\n\nimport { NamespaceBuilder } from '@hub3js/core';\nimport { actions, builders, utils } from '@hub3js/evm';\nimport * as commonBuilders from '@hub3js/std/builders';\nimport { standardizeAndThrowError } from '@hub3js/std/operators';\n\nimport { WALLET_ID } from '../constants.js';\nimport { evmBinance, getEvmAccounts } from '../utils.js';\n\nconst [changeAccountSubscriber, changeAccountCleanup] = builders\n .changeAccountSubscriber(evmBinance)\n /*\n * Binance 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 = builders\n .connect()\n .action(\n actions.connect(evmBinance, {\n getAccounts: getEvmAccounts,\n })\n )\n .before(changeAccountSubscriber)\n .or(changeAccountCleanup)\n .or(standardizeAndThrowError)\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(evmBinance))\n .build();\n\nconst evm = new NamespaceBuilder<EvmActions>('EVM', WALLET_ID)\n .action(connect)\n .action(disconnect)\n .action(canSwitchNetwork)\n .action(getChainId)\n .build();\n\nexport { evm };\n"],
5
+ "mappings": "+EAAA,OAAS,kBAAAA,MAAsB,qBCA/B,OAAS,mBAAAC,MAAuB,eCEhC,OACE,0BAAAC,EACA,sBAAAC,EACA,sBAAAC,EACA,2BAAAC,EACA,uBAAAC,EACA,qBAAAC,EACA,sBAAAC,EACA,0BAAAC,EACA,wBAAAC,EACA,uBAAAC,EACA,uBAAAC,EACA,uBAAAC,EACA,0BAAAC,EACA,wBAAAC,EACA,uBAAAC,EACA,sBAAAC,EACA,kBAAAC,MACK,cACP,OAAS,8BAAAC,MAAkC,oBClB3C,OAAS,iBAAAC,MAAqB,qBAC9B,OAAS,sBAAAC,MAA0B,4BACnC,OAAS,wBAAAC,EAAsB,mBAAmBC,MAAc,cAEhE,eAAOC,EACLC,EACwB,CACxB,IAAMC,EAAcC,EAAmBF,EAAUG,CAAa,EACxDC,EAAU,IAAIC,EACd,CAAE,iBAAAC,CAAiB,EAAI,KAAM,QAAO,uBAAuB,EACjE,OAAAF,EAAQ,eAAeG,EAAO,IAAK,IAAID,EAAiBL,CAAW,CAAC,EAC7DG,CACT,CAR8BI,EAAAT,EAAA,cCL9B,MAAmD,cACnD,OAAS,iBAAAU,MAAqB,qBAEvB,SAASC,GAA2B,CACzC,GAAM,CAAE,WAAAC,CAAW,EAAI,OAEvB,GAAI,CAACA,EACH,OAAO,KAGT,IAAMC,EAAY,IAAI,IAKtB,OAJID,EAAW,UACbC,EAAU,IAAIC,EAAeF,EAAW,QAAQ,EAG9CC,EAAU,OAAS,EACd,KAGFA,CACT,CAjBgBE,EAAAJ,EAAA,WAmBT,SAASK,GAA+B,CAC7C,IAAMH,EAAYF,EAAQ,EAE1B,GAAI,CAACE,EACH,MAAM,IAAI,MACR,2DACF,EAGF,OAAOA,CACT,CAVgBE,EAAAC,EAAA,sBAYT,SAASC,GAA6B,CAG3C,IAAMC,EAFYP,EAAQ,GAEK,IAAIG,CAAa,EAEhD,GAAI,CAACI,EACH,MAAM,IAAI,MACR,oEACF,EAGF,OAAOA,CACT,CAZgBH,EAAAE,EAAA,cAkBhB,eAAsBE,EAAeC,EAA0B,CAO7D,GAAM,CAACC,CAAO,EAAI,MAAMD,EAAS,QAAQ,CACvC,OAAQ,qBACV,CAAC,EACKE,EAAU,MAAMF,EAAS,QAAQ,CAAE,OAAQ,aAAc,CAAC,EAEhE,MAAO,CACL,SAAU,CAACC,CAAO,EAClB,QAAAC,CACF,CACF,CAhBsBP,EAAAI,EAAA,kBF5Bf,IAAMI,EAAY,UACZC,EAAuB,CAClCC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,CACF,EAEaC,EAA6B,CACxC,KAAM,iBACN,KAAM,wFACN,WAAY,CACV,OACE,2FACF,MACE,2FACF,SAAU,uCACZ,EACA,WAAY,CACV,CACE,KAAM,aACN,MAAO,CACL,UAAW,WACX,KAAM,CACJ,CACE,MAAO,MACP,MAAO,MACP,GAAI,MACJ,iBAAmBC,GACjBC,EAAeD,CAAO,GACtBlB,EAAqB,SACnBoB,EAA2BF,CAAO,CACpC,CACJ,CACF,CACF,CACF,EACA,CACE,KAAM,UACN,MAAO,CAAE,WAAY,SAAYG,EAAWC,EAAmB,CAAC,CAAE,CACpE,CACF,CACF,EG9EA,OAAS,oBAAAC,MAAwB,eACjC,OAAS,WAAAC,EAAS,YAAAC,EAAU,SAAAC,MAAa,cACzC,UAAYC,MAAoB,uBAChC,OAAS,4BAAAC,MAAgC,wBAKzC,GAAM,CAACC,EAAyBC,CAAoB,EAAIC,EACrD,wBAAwBC,CAAU,EAKlC,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,EAAUN,EACb,QAAQ,EACR,OACCO,EAAQ,QAAQN,EAAY,CAC1B,YAAaO,CACf,CAAC,CACH,EACC,OAAOV,CAAuB,EAC9B,GAAGC,CAAoB,EACvB,GAAGU,CAAwB,EAC3B,MAAM,EAEHC,EACH,aAAuB,EACvB,MAAMX,CAAoB,EAC1B,MAAM,EAEHY,EAAmBX,EACtB,iBAAiB,EACjB,OAAOO,EAAQ,iBAAiB,CAAC,EACjC,MAAM,EAEHK,EAAaZ,EAChB,WAAW,EACX,OAAOO,EAAQ,WAAWN,CAAU,CAAC,EACrC,MAAM,EAEHY,EAAM,IAAIC,EAA6B,MAAOC,CAAS,EAC1D,OAAOT,CAAO,EACd,OAAOI,CAAU,EACjB,OAAOC,CAAgB,EACvB,OAAOC,CAAU,EACjB,MAAM,EJhDT,IAAMI,EAAgBC,EAAA,IACpB,IAAIC,EAAgBC,CAAS,EAC1B,KAAK,SAAUC,EAAS,CACvB,GAAM,CAAC,CAAEC,CAAQ,EAAID,EAAQ,MAAM,EAC/BE,EAAgB,IAClBD,EAAS,YAAa,EAAI,EAC1B,QAAQ,MAAM,sCAAuCD,CAAO,EAEhE,CAAC,EACA,OAAO,WAAYG,CAAQ,EAC3B,IAAI,MAAOC,CAAG,EACd,MAAM,EAXW,iBDFtB,IAAMC,GAAWC,EAAA,IACfC,EAAe,EAAE,QAAQ,QAASC,EAAc,CAAC,EAAE,MAAM,EAD1C",
6
+ "names": ["defineVersions", "ProviderBuilder", "CAIP_ARBITRUM_CHAIN_ID", "CAIP_AVAX_CHAIN_ID", "CAIP_BASE_CHAIN_ID", "CAIP_BERACHAIN_CHAIN_ID", "CAIP_BLAST_CHAIN_ID", "CAIP_BSC_CHAIN_ID", "CAIP_CELO_CHAIN_ID", "CAIP_ETHEREUM_CHAIN_ID", "CAIP_FANTOM_CHAIN_ID", "CAIP_LINEA_CHAIN_ID", "CAIP_METIS_CHAIN_ID", "CAIP_MONAD_CHAIN_ID", "CAIP_OPTIMISM_CHAIN_ID", "CAIP_SCROLL_CHAIN_ID", "CAIP_SONIC_CHAIN_ID", "CAIP_ZETA_CHAIN_ID", "isEvmNamespace", "getChainIdFromCaip2ChainId", "EVM_NAMESPACE", "getNetworkInstance", "DefaultSignerFactory", "TxType", "getSigners", "provider", "evmProvider", "getNetworkInstance", "EVM_NAMESPACE", "signers", "DefaultSignerFactory", "DefaultEvmSigner", "TxType", "__name", "EVM_NAMESPACE", "binance", "binancew3w", "instances", "EVM_NAMESPACE", "__name", "getInstanceOrThrow", "evmBinance", "evmInstance", "getEvmAccounts", "provider", "account", "chainId", "WALLET_ID", "EVM_SUPPORTED_CHAINS", "CAIP_ETHEREUM_CHAIN_ID", "CAIP_OPTIMISM_CHAIN_ID", "CAIP_LINEA_CHAIN_ID", "CAIP_METIS_CHAIN_ID", "CAIP_BLAST_CHAIN_ID", "CAIP_CELO_CHAIN_ID", "CAIP_FANTOM_CHAIN_ID", "CAIP_MONAD_CHAIN_ID", "CAIP_SONIC_CHAIN_ID", "CAIP_BERACHAIN_CHAIN_ID", "CAIP_BASE_CHAIN_ID", "CAIP_ZETA_CHAIN_ID", "CAIP_ARBITRUM_CHAIN_ID", "CAIP_BSC_CHAIN_ID", "CAIP_SCROLL_CHAIN_ID", "CAIP_AVAX_CHAIN_ID", "metadata", "chainId", "isEvmNamespace", "getChainIdFromCaip2ChainId", "getSigners", "getInstanceOrThrow", "NamespaceBuilder", "actions", "builders", "utils", "commonBuilders", "standardizeAndThrowError", "changeAccountSubscriber", "changeAccountCleanup", "builders", "evmBinance", "instance", "accounts", "chainId", "utils", "connect", "actions", "getEvmAccounts", "standardizeAndThrowError", "disconnect", "canSwitchNetwork", "getChainId", "evm", "NamespaceBuilder", "WALLET_ID", "buildProvider", "__name", "ProviderBuilder", "WALLET_ID", "context", "setState", "binance", "metadata", "evm", "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;AASjD,wBAA8B,UAAU,CACtC,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,aAAa,CAAC,CAQxB"}
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;AAMjD,wBAA8B,UAAU,CACtC,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,aAAa,CAAC,CAMxB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rango-dev/provider-binance",
3
- "version": "0.6.1-next.1",
3
+ "version": "0.6.1-next.2",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "source": "./src/mod.ts",
@@ -27,7 +27,7 @@
27
27
  "@hub3js/std": "^0.2.3",
28
28
  "@rango-dev/signer-evm": "^0.45.0",
29
29
  "@rango-dev/wallets-core": "^0.61.0",
30
- "@rango-dev/wallets-shared": "^0.62.1-next.1",
30
+ "@rango-dev/wallets-shared": "^0.62.1-next.2",
31
31
  "rango-types": "^0.5.0"
32
32
  },
33
33
  "publishConfig": {
package/src/signer.ts CHANGED
@@ -2,10 +2,7 @@ import type { Provider } from './types.js';
2
2
  import type { SignerFactory } from 'rango-types';
3
3
 
4
4
  import { EVM_NAMESPACE } from '@hub3js/namespaces';
5
- import {
6
- dynamicImportWithRefinedError,
7
- getNetworkInstance,
8
- } from '@rango-dev/wallets-shared';
5
+ import { getNetworkInstance } from '@rango-dev/wallets-shared';
9
6
  import { DefaultSignerFactory, TransactionType as TxType } from 'rango-types';
10
7
 
11
8
  export default async function getSigners(
@@ -13,9 +10,7 @@ export default async function getSigners(
13
10
  ): Promise<SignerFactory> {
14
11
  const evmProvider = getNetworkInstance(provider, EVM_NAMESPACE);
15
12
  const signers = new DefaultSignerFactory();
16
- const { DefaultEvmSigner } = await dynamicImportWithRefinedError(
17
- async () => await import('@rango-dev/signer-evm')
18
- );
13
+ const { DefaultEvmSigner } = await import('@rango-dev/signer-evm');
19
14
  signers.registerSigner(TxType.EVM, new DefaultEvmSigner(evmProvider));
20
15
  return signers;
21
16
  }