@rango-dev/provider-coinbase 0.53.1-next.0 → 0.53.1-next.1
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 V=Object.defineProperty;var o=(e
|
|
1
|
+
var V=Object.defineProperty;var o=(n,e)=>V(n,"name",{value:e,configurable:!0});import{defineVersions as Wn}from"@rango-dev/wallets-core/utils";import{LegacyNetworks as r}from"@rango-dev/wallets-core/legacy";import{canEagerlyConnectToEvm as G,canSwitchNetworkToEvm as J,chooseInstance as w,getEvmAccounts as K,switchNetworkForEvm as Q,WalletTypes as X}from"@rango-dev/wallets-shared";import{evmBlockchains as T,isEvmBlockchain as Y,isSolanaBlockchain as Z,solanaBlockchain as M}from"rango-types";import{dynamicImportWithRefinedError as q,getNetworkInstance as k,Networks as P}from"@rango-dev/wallets-shared";import{DefaultSignerFactory as z,TransactionType as I}from"rango-types";import{DefaultSolanaSigner as j}from"@rango-dev/signer-solana";import D from"bs58";var h=class extends j{static{o(this,"CustomSolanaSigner")}constructor(e){super(e)}async signMessage(e){let{signature:t}=await this.provider.signMessage(e);return D.encode(t)}};async function u(n){let e=k(n,P.ETHEREUM),t=k(n,P.SOLANA),a=new z,{DefaultEvmSigner:s}=await q(async()=>await import("@rango-dev/signer-evm"));return a.registerSigner(I.EVM,new s(e)),a.registerSigner(I.SOLANA,new h(t)),a}o(u,"getSigners");import{LegacyNetworks as p}from"@rango-dev/wallets-core/legacy";function m(){let{coinbaseWalletExtension:n,coinbaseSolana:e}=window;if(!e&&!n)return null;let t=new Map;return n&&t.set(p.ETHEREUM,n),e&&t.set(p.SOLANA,e),t}o(m,"coinbase");function c(){let e=m()?.get(p.ETHEREUM);if(!e)throw new Error("Coinbase not injected or EVM not enabled. Please check your wallet.");return e}o(c,"evmCoinbase");function i(){let e=m()?.get(p.SOLANA);if(!e)throw new Error("Coinbase not injected or Solana not enabled. Please check your wallet.");return e}o(i,"solanaCoinbase");function x(){let n=m();if(!n)throw new Error("Coinbase is not injected. Please check your wallet.");return n}o(x,"getInstanceOrThrow");async function N(n){return await n.connect(),{accounts:[n.publicKey.toString()],chainId:p.SOLANA}}o(N,"getSolanaAccounts");var $=X.COINBASE,nn={type:$,defaultNetwork:r.ETHEREUM},en=m,on=o(async({instance:n,meta:e})=>{let t=w(n,e,r.ETHEREUM),a=[];if(t){let l=await K(t);a.push(l)}let s=i();if(s){let l=await N(s);a.push(l)}return a},"connect"),tn=o(n=>{let e=w(n.instance,n.meta,r.ETHEREUM),t=w(n.instance,n.meta,r.SOLANA),{connect:a,updateAccounts:s,state:l,updateChainId:S,meta:A}=n,C=o(g=>{let f=A.filter(Y).find(E=>E.name===r.ETHEREUM)?.chainId;l.connected&&(l.network!=r.ETHEREUM&&f&&S(f),s(g))},"handleEvmAccountsChanged"),y=o(async g=>{l.network!=r.SOLANA&&S(A.filter(Z)[0].chainId);let f=r.SOLANA;if(g){let E=g.toString();s([E])}else a(f)},"handleSolanaAccountChanged");return e?.on?.("accountsChanged",C),t?.on?.("accountChanged",y),()=>{e?.off?.("accountsChanged",C),t?.off?.("accountChanged",y)}},"subscribe"),an=Q,rn=J,cn=u,sn=o(async({instance:n,meta:e})=>{let t=w(n,e,r.ETHEREUM);return t?G({instance:t,meta:e}):Promise.resolve(!1)},"canEagerConnect"),ln=o(n=>{let e=T(n),t=M(n);return{name:"Coinbase",img:"https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/coinbase/icon.svg",installLink:{CHROME:"https://chrome.google.com/webstore/detail/coinbase-wallet-extension/hnfanknocfeofbddgcijnmhnfnkdnaad",BRAVE:"https://chrome.google.com/webstore/detail/coinbase-wallet-extension/hnfanknocfeofbddgcijnmhnfnkdnaad",DEFAULT:"https://www.coinbase.com/wallet"},color:"#2a62f5",supportedChains:[...e,...t],needsNamespace:{selection:"multiple",data:[{label:"EVM",value:"EVM",id:"ETH",getSupportedChains:a=>T(a)},{label:"Solana",value:"Solana",id:"SOLANA",getSupportedChains:a=>M(a)}]}}},"getWalletInfo"),L=o(()=>({config:nn,getInstance:en,connect:on,subscribe:tn,switchNetwork:an,canSwitchNetworkTo:rn,getSigners:cn,getWalletInfo:ln,canEagerConnect:sn}),"buildLegacyProvider");import{ProviderBuilder as Fn}from"@rango-dev/wallets-core";import"@rango-dev/wallets-core";import{evmBlockchains as mn,solanaBlockchain as dn}from"rango-types";var d="coinbase",B={name:"Coinbase",icon:"https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/coinbase/icon.svg",extensions:{chrome:"https://chrome.google.com/webstore/detail/coinbase-wallet-extension/hnfanknocfeofbddgcijnmhnfnkdnaad",brave:"https://chrome.google.com/webstore/detail/coinbase-wallet-extension/hnfanknocfeofbddgcijnmhnfnkdnaad",homepage:"https://www.coinbase.com/wallet"},properties:[{name:"namespaces",value:{selection:"multiple",data:[{label:"EVM",value:"EVM",id:"ETH",getSupportedChains:n=>mn(n)},{label:"Solana",value:"Solana",id:"SOLANA",getSupportedChains:n=>dn(n)}]}},{name:"signers",value:{getSigners:async()=>u(x())}}]};import{ActionBuilder as un,NamespaceBuilder as pn}from"@rango-dev/wallets-core";import{builders as gn,connectAndUpdateStateForMultiNetworks as fn,intoConnecting as hn,intoConnectionFinished as wn,standardizeAndThrowError as bn}from"@rango-dev/wallets-core/namespaces/common";import{actions as b,builders as v,utils as vn}from"@rango-dev/wallets-core/namespaces/evm";var[En,R]=v.changeAccountSubscriber(c).format(async(n,e)=>{let t=await n.request({method:"eth_chainId"});return vn.formatAccountsToCAIP([e[0]],t)}).build(),Sn=new un("connect").action(b.connect(c)).and((n,e)=>({...e,accounts:[e.accounts[0]]})).and(fn).before(hn).before(En).or(R).or(bn).after(wn).build(),An=gn.disconnect().before(()=>{c().disconnect()}).after(R).build(),Cn=v.canEagerConnect().action(b.canEagerConnect(c)).build(),yn=v.canSwitchNetwork().action(b.canSwitchNetwork()).build(),kn=v.getChainId().action(b.getChainId(c)).build(),O=new pn("EVM",d).action(Sn).action(An).action(Cn).action(yn).action(kn).build();import{ActionBuilder as U,NamespaceBuilder as In}from"@rango-dev/wallets-core";import{builders as xn,connectAndUpdateStateForSingleNetwork as Nn,intoConnecting as Tn,intoConnectionFinished as Mn,standardizeAndThrowError as Ln}from"@rango-dev/wallets-core/namespaces/common";import{actions as Bn,builders as Rn}from"@rango-dev/wallets-core/namespaces/solana";var Pn=o(async()=>{let n=c();if(!i())throw new Error("Trying to eagerly connect to your wallet, but seems its solana instance is not available.");if(!n)throw new Error("Trying to eagerly connect to your EVM wallet, but seems its instance is not available.");try{return!!(await n.request({method:"eth_accounts"})).length}catch{return!1}},"canEagerConnectAction"),H={canEagerConnectAction:Pn};var[On,_]=Rn.changeAccountSubscriber(i).build(),Hn=new U("connect").action(Bn.connect(i)).and((n,e)=>[e[0]]).and(Nn).before(Tn).before(On).after(Mn).or(_).or(Ln).build(),Un=xn.disconnect().before(()=>{i().disconnect()}).after(_).build(),_n=new U("canEagerConnect").action(H.canEagerConnectAction).build(),F=new In("Solana",d).action(Hn).action(Un).action(_n).build();var W=o(()=>new Fn(d).init(function(n){let[,e]=n.state();m()&&(e("installed",!0),console.debug("[coinbase] instance detected.",n))}).config("metadata",B).add("solana",F).add("evm",O).build(),"buildProvider");var _e=o(()=>Wn().version("0.0.0",L()).version("1.0.0",W()).build(),"versions");export{_e 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/legacy/index.ts", "../src/signer.ts", "../src/signers/solana-signer.ts", "../src/utils.ts", "../src/provider.ts", "../src/constants.ts", "../src/namespaces/evm.ts", "../src/namespaces/solana.ts", "../src/actions/solana.ts"],
|
|
4
|
-
"sourcesContent": ["import { defineVersions } from '@rango-dev/wallets-core/utils';\n\nimport { buildLegacyProvider } from './legacy/index.js';\nimport { buildProvider } from './provider.js';\n\nconst versions = () =>\n defineVersions()\n .version('0.0.0', buildLegacyProvider())\n .version('1.0.0', buildProvider())\n .build();\n\nexport { versions };\n", "import type { Provider } from '../utils.js';\nimport type {\n CanEagerConnect,\n CanSwitchNetwork,\n Connect,\n ProviderConnectResult,\n Subscribe,\n SwitchNetwork,\n WalletInfo,\n} from '@rango-dev/wallets-shared';\nimport type { BlockchainMeta, SignerFactory } from 'rango-types';\n\nimport {\n type LegacyProviderInterface,\n LegacyNetworks as Networks,\n} from '@rango-dev/wallets-core/legacy';\nimport {\n canEagerlyConnectToEvm,\n canSwitchNetworkToEvm,\n chooseInstance,\n getEvmAccounts,\n switchNetworkForEvm,\n WalletTypes,\n} from '@rango-dev/wallets-shared';\nimport {\n evmBlockchains,\n isEvmBlockchain,\n isSolanaBlockchain,\n solanaBlockchain,\n} from 'rango-types';\n\nimport signer from '../signer.js';\nimport {\n coinbase as coinbase_instance,\n getSolanaAccounts,\n solanaCoinbase,\n} from '../utils.js';\n\nconst WALLET = WalletTypes.COINBASE;\n\nexport const config = {\n type: WALLET,\n defaultNetwork: Networks.ETHEREUM,\n};\n\nexport const getInstance = coinbase_instance;\nexport const connect: Connect = async ({ instance, meta }) => {\n /*\n * Note: We need to get `chainId` here, because for the first time\n * after opening the browser, wallet is locked, and don't give us accounts and chainId\n * on `check` phase, so `network` will be null. For this case we need to get chainId\n * whenever we are requesting accounts.\n */\n const evm_instance = chooseInstance(instance, meta, Networks.ETHEREUM);\n const results: ProviderConnectResult[] = [];\n\n if (evm_instance) {\n const evm = await getEvmAccounts(evm_instance);\n results.push(evm);\n }\n\n const solanaInstance = solanaCoinbase();\n if (solanaInstance) {\n const solanaResults = await getSolanaAccounts(solanaInstance);\n results.push(solanaResults);\n }\n\n return results;\n};\n\nexport const subscribe: Subscribe = (options) => {\n const ethInstance = chooseInstance(\n options.instance,\n options.meta,\n Networks.ETHEREUM\n );\n const solanaInstance = chooseInstance(\n options.instance,\n options.meta,\n Networks.SOLANA\n );\n const { connect, updateAccounts, state, updateChainId, meta } = options;\n const handleEvmAccountsChanged = (addresses: string[]) => {\n const eth_chainId = meta\n .filter(isEvmBlockchain)\n .find((blockchain) => blockchain.name === Networks.ETHEREUM)?.chainId;\n if (state.connected) {\n if (state.network != Networks.ETHEREUM && eth_chainId) {\n updateChainId(eth_chainId);\n }\n updateAccounts(addresses);\n }\n };\n\n const handleSolanaAccountChanged = async (publicKey: string) => {\n if (state.network != Networks.SOLANA) {\n updateChainId(meta.filter(isSolanaBlockchain)[0].chainId);\n }\n const network = Networks.SOLANA;\n if (publicKey) {\n const account = publicKey.toString();\n updateAccounts([account]);\n } else {\n connect(network);\n }\n };\n ethInstance?.on?.('accountsChanged', handleEvmAccountsChanged);\n\n solanaInstance?.on?.('accountChanged', handleSolanaAccountChanged);\n\n return () => {\n ethInstance?.off?.('accountsChanged', handleEvmAccountsChanged);\n\n solanaInstance?.off?.('accountChanged', handleSolanaAccountChanged);\n };\n};\nexport const switchNetwork: SwitchNetwork = switchNetworkForEvm;\n\nexport const canSwitchNetworkTo: CanSwitchNetwork = canSwitchNetworkToEvm;\n\nexport const getSigners: (provider: Provider) => Promise<SignerFactory> =\n signer;\n\nexport const canEagerConnect: CanEagerConnect = async ({ instance, meta }) => {\n const evm_instance = chooseInstance(instance, meta, Networks.ETHEREUM);\n if (evm_instance) {\n return canEagerlyConnectToEvm({ instance: evm_instance, meta });\n }\n return Promise.resolve(false);\n};\n\nexport const getWalletInfo: (allBlockChains: BlockchainMeta[]) => WalletInfo = (\n allBlockChains\n) => {\n const evms = evmBlockchains(allBlockChains);\n const solana = solanaBlockchain(allBlockChains);\n return {\n name: 'Coinbase',\n img: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/coinbase/icon.svg',\n installLink: {\n CHROME:\n 'https://chrome.google.com/webstore/detail/coinbase-wallet-extension/hnfanknocfeofbddgcijnmhnfnkdnaad',\n BRAVE:\n 'https://chrome.google.com/webstore/detail/coinbase-wallet-extension/hnfanknocfeofbddgcijnmhnfnkdnaad',\n DEFAULT: 'https://www.coinbase.com/wallet',\n },\n color: '#2a62f5',\n supportedChains: [...evms, ...solana],\n needsNamespace: {\n selection: 'multiple',\n data: [\n {\n label: 'EVM',\n value: 'EVM',\n id: 'ETH',\n getSupportedChains: (allBlockchains: BlockchainMeta[]) =>\n evmBlockchains(allBlockchains),\n },\n {\n label: 'Solana',\n value: 'Solana',\n id: 'SOLANA',\n getSupportedChains: (allBlockchains: BlockchainMeta[]) =>\n solanaBlockchain(allBlockchains),\n },\n ],\n },\n };\n};\n\nconst buildLegacyProvider: () => LegacyProviderInterface = () => ({\n config,\n getInstance,\n connect,\n subscribe,\n switchNetwork,\n canSwitchNetworkTo,\n getSigners,\n getWalletInfo,\n canEagerConnect,\n});\n\nexport { buildLegacyProvider };\n", "import type { Provider } from './utils.js';\nimport type { SignerFactory } from 'rango-types';\n\nimport {\n dynamicImportWithRefinedError,\n getNetworkInstance,\n Networks,\n} from '@rango-dev/wallets-shared';\nimport { DefaultSignerFactory, TransactionType as TxType } from 'rango-types';\n\nimport { CustomSolanaSigner } from './signers/solana-signer.js';\n\nexport default async function getSigners(\n provider: Provider\n): Promise<SignerFactory> {\n const ethProvider = getNetworkInstance(provider, Networks.ETHEREUM);\n const solProvider = getNetworkInstance(provider, Networks.SOLANA);\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(TxType.SOLANA, new CustomSolanaSigner(solProvider));\n return signers;\n}\n", "import { DefaultSolanaSigner } from '@rango-dev/signer-solana';\nimport base58 from 'bs58';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype SolanaExternalProvider = any;\n\nexport class CustomSolanaSigner extends DefaultSolanaSigner {\n constructor(provider: SolanaExternalProvider) {\n super(provider);\n }\n\n async signMessage(msg: string): Promise<string> {\n const { signature } = await this.provider.signMessage(msg);\n return base58.encode(signature);\n }\n}\n", "import type { ProviderAPI as EvmProviderApi } from '@rango-dev/wallets-core/namespaces/evm';\nimport type { ProviderAPI as SolanaProviderApi } from '@rango-dev/wallets-core/namespaces/solana';\nimport type { ProviderConnectResult } from '@rango-dev/wallets-shared';\n\nimport { LegacyNetworks } from '@rango-dev/wallets-core/legacy';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type Provider = Record<string, any>;\n\nexport function coinbase(): Provider | null {\n const { coinbaseWalletExtension, coinbaseSolana } = window;\n\n if (!coinbaseSolana && !coinbaseWalletExtension) {\n return null;\n }\n\n const instances = new Map();\n\n if (coinbaseWalletExtension) {\n instances.set(LegacyNetworks.ETHEREUM, coinbaseWalletExtension);\n }\n\n if (coinbaseSolana) {\n instances.set(LegacyNetworks.SOLANA, coinbaseSolana);\n }\n\n return instances;\n}\n\nexport function evmCoinbase(): EvmProviderApi {\n const instances = coinbase();\n\n const evmInstance = instances?.get(LegacyNetworks.ETHEREUM);\n\n if (!evmInstance) {\n throw new Error(\n 'Coinbase not injected or EVM not enabled. Please check your wallet.'\n );\n }\n\n return evmInstance as EvmProviderApi;\n}\n\nexport function solanaCoinbase(): SolanaProviderApi {\n const instance = coinbase();\n const solanaInstance = instance?.get(LegacyNetworks.SOLANA);\n\n if (!solanaInstance) {\n throw new Error(\n 'Coinbase not injected or Solana not enabled. Please check your wallet.'\n );\n }\n\n return solanaInstance as SolanaProviderApi;\n}\nexport function getInstanceOrThrow(): Provider {\n const instances = coinbase();\n\n if (!instances) {\n throw new Error('Coinbase is not injected. Please check your wallet.');\n }\n\n return instances;\n}\nexport async function getSolanaAccounts(\n instance: Provider\n): Promise<ProviderConnectResult> {\n await instance.connect();\n const account = instance.publicKey.toString();\n\n return {\n accounts: [account],\n chainId: LegacyNetworks.SOLANA,\n };\n}\n", "import { ProviderBuilder } from '@rango-dev/wallets-core';\n\nimport { metadata, WALLET_ID } from './constants.js';\nimport { evm } from './namespaces/evm.js';\nimport { solana } from './namespaces/solana.js';\nimport { coinbase as coinbaseInstance } from './utils.js';\n\nconst buildProvider = () =>\n new ProviderBuilder(WALLET_ID)\n .init(function (context) {\n const [, setState] = context.state();\n\n if (coinbaseInstance()) {\n setState('installed', true);\n console.debug('[coinbase] instance detected.', context);\n }\n })\n .config('metadata', metadata)\n .add('solana', solana)\n .add('evm', evm)\n .build();\n\nexport { buildProvider };\n", "import { type ProviderMetadata } from '@rango-dev/wallets-core';\nimport {\n type BlockchainMeta,\n evmBlockchains,\n solanaBlockchain,\n} from 'rango-types';\n\nimport getSigners from './signer.js';\nimport { getInstanceOrThrow } from './utils.js';\n\nexport const WALLET_ID = 'coinbase';\n\nexport const metadata: ProviderMetadata = {\n name: 'Coinbase',\n icon: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/coinbase/icon.svg',\n extensions: {\n chrome:\n 'https://chrome.google.com/webstore/detail/coinbase-wallet-extension/hnfanknocfeofbddgcijnmhnfnkdnaad',\n brave:\n 'https://chrome.google.com/webstore/detail/coinbase-wallet-extension/hnfanknocfeofbddgcijnmhnfnkdnaad',\n homepage: 'https://www.coinbase.com/wallet',\n },\n properties: [\n {\n name: 'namespaces',\n value: {\n selection: 'multiple',\n data: [\n {\n label: 'EVM',\n value: 'EVM',\n id: 'ETH',\n getSupportedChains: (allBlockchains: BlockchainMeta[]) =>\n evmBlockchains(allBlockchains),\n },\n {\n label: 'Solana',\n value: 'Solana',\n id: 'SOLANA',\n getSupportedChains: (allBlockchains: BlockchainMeta[]) =>\n solanaBlockchain(allBlockchains),\n },\n ],\n },\n },\n {\n name: 'signers',\n value: { getSigners: async () => getSigners(getInstanceOrThrow()) },\n },\n ],\n};\n", "import type { EvmActions } from '@rango-dev/wallets-core/namespaces/evm';\n\nimport { ActionBuilder, NamespaceBuilder } from '@rango-dev/wallets-core';\nimport {\n builders as commonBuilders,\n connectAndUpdateStateForMultiNetworks,\n intoConnecting,\n intoConnectionFinished,\n standardizeAndThrowError,\n} from '@rango-dev/wallets-core/namespaces/common';\nimport {\n actions,\n builders,\n utils,\n} from '@rango-dev/wallets-core/namespaces/evm';\n\nimport { WALLET_ID } from '../constants.js';\nimport { evmCoinbase } from '../utils.js';\n\nconst [changeAccountSubscriber, changeAccountCleanup] = builders\n .changeAccountSubscriber(evmCoinbase)\n /*\n * Coinbase 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(evmCoinbase))\n /*\n * Coinbase 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 disconnect = commonBuilders\n .disconnect<EvmActions>()\n .before(() => {\n /*\n * Coinbase sometimes stays connected and causes the page to refresh.\n * This ensures we also disconnect from the wallet to prevent that behavior.\n */\n evmCoinbase().disconnect();\n })\n .after(changeAccountCleanup)\n .build();\n\nconst canEagerConnect = builders\n .canEagerConnect()\n .action(actions.canEagerConnect(evmCoinbase))\n .build();\n\nconst canSwitchNetwork = builders\n .canSwitchNetwork()\n .action(actions.canSwitchNetwork())\n .build();\n\nconst evm = new NamespaceBuilder<EvmActions>('EVM', WALLET_ID)\n .action(connect)\n .action(disconnect)\n .action(canEagerConnect)\n .action(canSwitchNetwork)\n .build();\n\nexport { evm };\n", "import type { SolanaActions } from '@rango-dev/wallets-core/namespaces/solana';\n\nimport { ActionBuilder, NamespaceBuilder } from '@rango-dev/wallets-core';\nimport {\n builders as commonBuilders,\n connectAndUpdateStateForSingleNetwork,\n intoConnecting,\n intoConnectionFinished,\n standardizeAndThrowError,\n} from '@rango-dev/wallets-core/namespaces/common';\nimport { actions, builders } from '@rango-dev/wallets-core/namespaces/solana';\n\nimport { solanaActions } from '../actions/solana.js';\nimport { WALLET_ID } from '../constants.js';\nimport { solanaCoinbase } from '../utils.js';\n\nconst [changeAccountSubscriber, changeAccountCleanup] = builders\n .changeAccountSubscriber(solanaCoinbase)\n .build();\n\nconst connect = new ActionBuilder<SolanaActions, 'connect'>('connect')\n .action(actions.connect(solanaCoinbase))\n /*\n * Coinbase 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 .and((_, connectResult) => [connectResult[0]])\n .and(connectAndUpdateStateForSingleNetwork)\n .before(intoConnecting)\n .before(changeAccountSubscriber)\n .after(intoConnectionFinished)\n .or(changeAccountCleanup)\n .or(standardizeAndThrowError)\n .build();\n\nconst disconnect = commonBuilders\n .disconnect<SolanaActions>()\n .before(() => {\n /*\n * Coinbase sometimes stays connected and causes the page to refresh.\n * This ensures we also disconnect from the wallet to prevent that behavior.\n */\n solanaCoinbase().disconnect();\n })\n .after(changeAccountCleanup)\n .build();\n\nconst canEagerConnect = new ActionBuilder<SolanaActions, 'canEagerConnect'>(\n 'canEagerConnect'\n)\n .action(solanaActions.canEagerConnectAction)\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 { evmCoinbase, solanaCoinbase } from '../utils.js';\n\n/*\n * Coinbase does not provide an eager connection mechanism for its Solana wallet.\n * The only workaround is to use the EVM-based eager connect approach.\n * However, this will only work if the EVM namespace has been connected at least once before.\n * If either wallet instance is unavailable, we throw an error.\n */\nconst canEagerConnectAction = async () => {\n const evmInstance = evmCoinbase();\n const solanaInstance = solanaCoinbase();\n // Making sure that the Solana instance is available first to prevent errors.\n if (!solanaInstance) {\n throw new Error(\n 'Trying to eagerly connect to your wallet, but seems its solana instance is not available.'\n );\n }\n if (!evmInstance) {\n throw new Error(\n 'Trying to eagerly connect to your EVM wallet, but seems its instance is not available.'\n );\n }\n\n try {\n const accounts: string[] = await evmInstance.request({\n method: 'eth_accounts',\n });\n if (accounts.length) {\n return true;\n }\n return false;\n } catch {\n return false;\n }\n};\nexport const solanaActions = { canEagerConnectAction };\n"],
|
|
5
|
-
"mappings": "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
|
|
6
|
-
"names": ["defineVersions", "Networks", "canEagerlyConnectToEvm", "canSwitchNetworkToEvm", "chooseInstance", "getEvmAccounts", "switchNetworkForEvm", "WalletTypes", "evmBlockchains", "isEvmBlockchain", "isSolanaBlockchain", "solanaBlockchain", "dynamicImportWithRefinedError", "getNetworkInstance", "Networks", "DefaultSignerFactory", "TxType", "DefaultSolanaSigner", "base58", "CustomSolanaSigner", "DefaultSolanaSigner", "__name", "provider", "msg", "signature", "base58", "getSigners", "provider", "ethProvider", "getNetworkInstance", "Networks", "solProvider", "signers", "DefaultSignerFactory", "DefaultEvmSigner", "dynamicImportWithRefinedError", "TxType", "CustomSolanaSigner", "__name", "LegacyNetworks", "coinbase", "coinbaseWalletExtension", "coinbaseSolana", "instances", "LegacyNetworks", "__name", "evmCoinbase", "evmInstance", "solanaCoinbase", "solanaInstance", "getInstanceOrThrow", "getSolanaAccounts", "instance", "WALLET", "WalletTypes", "config", "Networks", "getInstance", "coinbase", "connect", "__name", "instance", "meta", "evm_instance", "chooseInstance", "results", "evm", "getEvmAccounts", "solanaInstance", "solanaCoinbase", "solanaResults", "getSolanaAccounts", "subscribe", "options", "ethInstance", "updateAccounts", "state", "updateChainId", "handleEvmAccountsChanged", "addresses", "eth_chainId", "isEvmBlockchain", "blockchain", "handleSolanaAccountChanged", "publicKey", "isSolanaBlockchain", "network", "account", "switchNetwork", "switchNetworkForEvm", "canSwitchNetworkTo", "canSwitchNetworkToEvm", "getSigners", "canEagerConnect", "canEagerlyConnectToEvm", "getWalletInfo", "allBlockChains", "evms", "evmBlockchains", "solana", "solanaBlockchain", "allBlockchains", "buildLegacyProvider", "ProviderBuilder", "evmBlockchains", "solanaBlockchain", "WALLET_ID", "metadata", "allBlockchains", "evmBlockchains", "solanaBlockchain", "getSigners", "getInstanceOrThrow", "ActionBuilder", "NamespaceBuilder", "commonBuilders", "connectAndUpdateStateForMultiNetworks", "intoConnecting", "intoConnectionFinished", "standardizeAndThrowError", "actions", "builders", "utils", "changeAccountSubscriber", "changeAccountCleanup", "builders", "evmCoinbase", "instance", "accounts", "chainId", "utils", "connect", "ActionBuilder", "actions", "_", "connectResult", "connectAndUpdateStateForMultiNetworks", "intoConnecting", "standardizeAndThrowError", "intoConnectionFinished", "disconnect", "commonBuilders", "canEagerConnect", "canSwitchNetwork", "evm", "NamespaceBuilder", "WALLET_ID", "ActionBuilder", "NamespaceBuilder", "commonBuilders", "connectAndUpdateStateForSingleNetwork", "intoConnecting", "intoConnectionFinished", "standardizeAndThrowError", "actions", "builders", "canEagerConnectAction", "__name", "evmInstance", "evmCoinbase", "solanaCoinbase", "solanaActions", "changeAccountSubscriber", "changeAccountCleanup", "builders", "solanaCoinbase", "connect", "ActionBuilder", "actions", "_", "connectResult", "connectAndUpdateStateForSingleNetwork", "intoConnecting", "intoConnectionFinished", "standardizeAndThrowError", "disconnect", "commonBuilders", "canEagerConnect", "solanaActions", "solana", "NamespaceBuilder", "WALLET_ID", "buildProvider", "__name", "ProviderBuilder", "WALLET_ID", "context", "setState", "coinbase", "metadata", "solana", "evm", "versions", "__name", "defineVersions", "buildLegacyProvider", "buildProvider"]
|
|
4
|
+
"sourcesContent": ["import { defineVersions } from '@rango-dev/wallets-core/utils';\n\nimport { buildLegacyProvider } from './legacy/index.js';\nimport { buildProvider } from './provider.js';\n\nconst versions = () =>\n defineVersions()\n .version('0.0.0', buildLegacyProvider())\n .version('1.0.0', buildProvider())\n .build();\n\nexport { versions };\n", "import type { Provider } from '../utils.js';\nimport type {\n CanEagerConnect,\n CanSwitchNetwork,\n Connect,\n ProviderConnectResult,\n Subscribe,\n SwitchNetwork,\n WalletInfo,\n} from '@rango-dev/wallets-shared';\nimport type { BlockchainMeta, SignerFactory } from 'rango-types';\n\nimport {\n type LegacyProviderInterface,\n LegacyNetworks as Networks,\n} from '@rango-dev/wallets-core/legacy';\nimport {\n canEagerlyConnectToEvm,\n canSwitchNetworkToEvm,\n chooseInstance,\n getEvmAccounts,\n switchNetworkForEvm,\n WalletTypes,\n} from '@rango-dev/wallets-shared';\nimport {\n evmBlockchains,\n isEvmBlockchain,\n isSolanaBlockchain,\n solanaBlockchain,\n} from 'rango-types';\n\nimport signer from '../signer.js';\nimport {\n coinbase as coinbase_instance,\n getSolanaAccounts,\n solanaCoinbase,\n} from '../utils.js';\n\nconst WALLET = WalletTypes.COINBASE;\n\nexport const config = {\n type: WALLET,\n defaultNetwork: Networks.ETHEREUM,\n};\n\nexport const getInstance = coinbase_instance;\nexport const connect: Connect = async ({ instance, meta }) => {\n /*\n * Note: We need to get `chainId` here, because for the first time\n * after opening the browser, wallet is locked, and don't give us accounts and chainId\n * on `check` phase, so `network` will be null. For this case we need to get chainId\n * whenever we are requesting accounts.\n */\n const evm_instance = chooseInstance(instance, meta, Networks.ETHEREUM);\n const results: ProviderConnectResult[] = [];\n\n if (evm_instance) {\n const evm = await getEvmAccounts(evm_instance);\n results.push(evm);\n }\n\n const solanaInstance = solanaCoinbase();\n if (solanaInstance) {\n const solanaResults = await getSolanaAccounts(solanaInstance);\n results.push(solanaResults);\n }\n\n return results;\n};\n\nexport const subscribe: Subscribe = (options) => {\n const ethInstance = chooseInstance(\n options.instance,\n options.meta,\n Networks.ETHEREUM\n );\n const solanaInstance = chooseInstance(\n options.instance,\n options.meta,\n Networks.SOLANA\n );\n const { connect, updateAccounts, state, updateChainId, meta } = options;\n const handleEvmAccountsChanged = (addresses: string[]) => {\n const eth_chainId = meta\n .filter(isEvmBlockchain)\n .find((blockchain) => blockchain.name === Networks.ETHEREUM)?.chainId;\n if (state.connected) {\n if (state.network != Networks.ETHEREUM && eth_chainId) {\n updateChainId(eth_chainId);\n }\n updateAccounts(addresses);\n }\n };\n\n const handleSolanaAccountChanged = async (publicKey: string) => {\n if (state.network != Networks.SOLANA) {\n updateChainId(meta.filter(isSolanaBlockchain)[0].chainId);\n }\n const network = Networks.SOLANA;\n if (publicKey) {\n const account = publicKey.toString();\n updateAccounts([account]);\n } else {\n connect(network);\n }\n };\n ethInstance?.on?.('accountsChanged', handleEvmAccountsChanged);\n\n solanaInstance?.on?.('accountChanged', handleSolanaAccountChanged);\n\n return () => {\n ethInstance?.off?.('accountsChanged', handleEvmAccountsChanged);\n\n solanaInstance?.off?.('accountChanged', handleSolanaAccountChanged);\n };\n};\nexport const switchNetwork: SwitchNetwork = switchNetworkForEvm;\n\nexport const canSwitchNetworkTo: CanSwitchNetwork = canSwitchNetworkToEvm;\n\nexport const getSigners: (provider: Provider) => Promise<SignerFactory> =\n signer;\n\nexport const canEagerConnect: CanEagerConnect = async ({ instance, meta }) => {\n const evm_instance = chooseInstance(instance, meta, Networks.ETHEREUM);\n if (evm_instance) {\n return canEagerlyConnectToEvm({ instance: evm_instance, meta });\n }\n return Promise.resolve(false);\n};\n\nexport const getWalletInfo: (allBlockChains: BlockchainMeta[]) => WalletInfo = (\n allBlockChains\n) => {\n const evms = evmBlockchains(allBlockChains);\n const solana = solanaBlockchain(allBlockChains);\n return {\n name: 'Coinbase',\n img: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/coinbase/icon.svg',\n installLink: {\n CHROME:\n 'https://chrome.google.com/webstore/detail/coinbase-wallet-extension/hnfanknocfeofbddgcijnmhnfnkdnaad',\n BRAVE:\n 'https://chrome.google.com/webstore/detail/coinbase-wallet-extension/hnfanknocfeofbddgcijnmhnfnkdnaad',\n DEFAULT: 'https://www.coinbase.com/wallet',\n },\n color: '#2a62f5',\n supportedChains: [...evms, ...solana],\n needsNamespace: {\n selection: 'multiple',\n data: [\n {\n label: 'EVM',\n value: 'EVM',\n id: 'ETH',\n getSupportedChains: (allBlockchains: BlockchainMeta[]) =>\n evmBlockchains(allBlockchains),\n },\n {\n label: 'Solana',\n value: 'Solana',\n id: 'SOLANA',\n getSupportedChains: (allBlockchains: BlockchainMeta[]) =>\n solanaBlockchain(allBlockchains),\n },\n ],\n },\n };\n};\n\nconst buildLegacyProvider: () => LegacyProviderInterface = () => ({\n config,\n getInstance,\n connect,\n subscribe,\n switchNetwork,\n canSwitchNetworkTo,\n getSigners,\n getWalletInfo,\n canEagerConnect,\n});\n\nexport { buildLegacyProvider };\n", "import type { Provider } from './utils.js';\nimport type { SignerFactory } from 'rango-types';\n\nimport {\n dynamicImportWithRefinedError,\n getNetworkInstance,\n Networks,\n} from '@rango-dev/wallets-shared';\nimport { DefaultSignerFactory, TransactionType as TxType } from 'rango-types';\n\nimport { CustomSolanaSigner } from './signers/solana-signer.js';\n\nexport default async function getSigners(\n provider: Provider\n): Promise<SignerFactory> {\n const ethProvider = getNetworkInstance(provider, Networks.ETHEREUM);\n const solProvider = getNetworkInstance(provider, Networks.SOLANA);\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(TxType.SOLANA, new CustomSolanaSigner(solProvider));\n return signers;\n}\n", "import { DefaultSolanaSigner } from '@rango-dev/signer-solana';\nimport base58 from 'bs58';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype SolanaExternalProvider = any;\n\nexport class CustomSolanaSigner extends DefaultSolanaSigner {\n constructor(provider: SolanaExternalProvider) {\n super(provider);\n }\n\n async signMessage(msg: string): Promise<string> {\n const { signature } = await this.provider.signMessage(msg);\n return base58.encode(signature);\n }\n}\n", "import type { ProviderAPI as EvmProviderApi } from '@rango-dev/wallets-core/namespaces/evm';\nimport type { ProviderAPI as SolanaProviderApi } from '@rango-dev/wallets-core/namespaces/solana';\nimport type { ProviderConnectResult } from '@rango-dev/wallets-shared';\n\nimport { LegacyNetworks } from '@rango-dev/wallets-core/legacy';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type Provider = Record<string, any>;\n\nexport function coinbase(): Provider | null {\n const { coinbaseWalletExtension, coinbaseSolana } = window;\n\n if (!coinbaseSolana && !coinbaseWalletExtension) {\n return null;\n }\n\n const instances = new Map();\n\n if (coinbaseWalletExtension) {\n instances.set(LegacyNetworks.ETHEREUM, coinbaseWalletExtension);\n }\n\n if (coinbaseSolana) {\n instances.set(LegacyNetworks.SOLANA, coinbaseSolana);\n }\n\n return instances;\n}\n\nexport function evmCoinbase(): EvmProviderApi {\n const instances = coinbase();\n\n const evmInstance = instances?.get(LegacyNetworks.ETHEREUM);\n\n if (!evmInstance) {\n throw new Error(\n 'Coinbase not injected or EVM not enabled. Please check your wallet.'\n );\n }\n\n return evmInstance as EvmProviderApi;\n}\n\nexport function solanaCoinbase(): SolanaProviderApi {\n const instance = coinbase();\n const solanaInstance = instance?.get(LegacyNetworks.SOLANA);\n\n if (!solanaInstance) {\n throw new Error(\n 'Coinbase not injected or Solana not enabled. Please check your wallet.'\n );\n }\n\n return solanaInstance as SolanaProviderApi;\n}\nexport function getInstanceOrThrow(): Provider {\n const instances = coinbase();\n\n if (!instances) {\n throw new Error('Coinbase is not injected. Please check your wallet.');\n }\n\n return instances;\n}\nexport async function getSolanaAccounts(\n instance: Provider\n): Promise<ProviderConnectResult> {\n await instance.connect();\n const account = instance.publicKey.toString();\n\n return {\n accounts: [account],\n chainId: LegacyNetworks.SOLANA,\n };\n}\n", "import { ProviderBuilder } from '@rango-dev/wallets-core';\n\nimport { metadata, WALLET_ID } from './constants.js';\nimport { evm } from './namespaces/evm.js';\nimport { solana } from './namespaces/solana.js';\nimport { coinbase as coinbaseInstance } from './utils.js';\n\nconst buildProvider = () =>\n new ProviderBuilder(WALLET_ID)\n .init(function (context) {\n const [, setState] = context.state();\n\n if (coinbaseInstance()) {\n setState('installed', true);\n console.debug('[coinbase] instance detected.', context);\n }\n })\n .config('metadata', metadata)\n .add('solana', solana)\n .add('evm', evm)\n .build();\n\nexport { buildProvider };\n", "import { type ProviderMetadata } from '@rango-dev/wallets-core';\nimport {\n type BlockchainMeta,\n evmBlockchains,\n solanaBlockchain,\n} from 'rango-types';\n\nimport getSigners from './signer.js';\nimport { getInstanceOrThrow } from './utils.js';\n\nexport const WALLET_ID = 'coinbase';\n\nexport const metadata: ProviderMetadata = {\n name: 'Coinbase',\n icon: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/coinbase/icon.svg',\n extensions: {\n chrome:\n 'https://chrome.google.com/webstore/detail/coinbase-wallet-extension/hnfanknocfeofbddgcijnmhnfnkdnaad',\n brave:\n 'https://chrome.google.com/webstore/detail/coinbase-wallet-extension/hnfanknocfeofbddgcijnmhnfnkdnaad',\n homepage: 'https://www.coinbase.com/wallet',\n },\n properties: [\n {\n name: 'namespaces',\n value: {\n selection: 'multiple',\n data: [\n {\n label: 'EVM',\n value: 'EVM',\n id: 'ETH',\n getSupportedChains: (allBlockchains: BlockchainMeta[]) =>\n evmBlockchains(allBlockchains),\n },\n {\n label: 'Solana',\n value: 'Solana',\n id: 'SOLANA',\n getSupportedChains: (allBlockchains: BlockchainMeta[]) =>\n solanaBlockchain(allBlockchains),\n },\n ],\n },\n },\n {\n name: 'signers',\n value: { getSigners: async () => getSigners(getInstanceOrThrow()) },\n },\n ],\n};\n", "import type { EvmActions } from '@rango-dev/wallets-core/namespaces/evm';\n\nimport { ActionBuilder, NamespaceBuilder } from '@rango-dev/wallets-core';\nimport {\n builders as commonBuilders,\n connectAndUpdateStateForMultiNetworks,\n intoConnecting,\n intoConnectionFinished,\n standardizeAndThrowError,\n} from '@rango-dev/wallets-core/namespaces/common';\nimport {\n actions,\n builders,\n utils,\n} from '@rango-dev/wallets-core/namespaces/evm';\n\nimport { WALLET_ID } from '../constants.js';\nimport { evmCoinbase } from '../utils.js';\n\nconst [changeAccountSubscriber, changeAccountCleanup] = builders\n .changeAccountSubscriber(evmCoinbase)\n /*\n * Coinbase 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(evmCoinbase))\n /*\n * Coinbase 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 disconnect = commonBuilders\n .disconnect<EvmActions>()\n .before(() => {\n /*\n * Coinbase sometimes stays connected and causes the page to refresh.\n * This ensures we also disconnect from the wallet to prevent that behavior.\n */\n evmCoinbase().disconnect();\n })\n .after(changeAccountCleanup)\n .build();\n\nconst canEagerConnect = builders\n .canEagerConnect()\n .action(actions.canEagerConnect(evmCoinbase))\n .build();\n\nconst canSwitchNetwork = builders\n .canSwitchNetwork()\n .action(actions.canSwitchNetwork())\n .build();\n\nconst getChainId = builders\n .getChainId()\n .action(actions.getChainId(evmCoinbase))\n .build();\n\nconst evm = new NamespaceBuilder<EvmActions>('EVM', WALLET_ID)\n .action(connect)\n .action(disconnect)\n .action(canEagerConnect)\n .action(canSwitchNetwork)\n .action(getChainId)\n .build();\n\nexport { evm };\n", "import type { SolanaActions } from '@rango-dev/wallets-core/namespaces/solana';\n\nimport { ActionBuilder, NamespaceBuilder } from '@rango-dev/wallets-core';\nimport {\n builders as commonBuilders,\n connectAndUpdateStateForSingleNetwork,\n intoConnecting,\n intoConnectionFinished,\n standardizeAndThrowError,\n} from '@rango-dev/wallets-core/namespaces/common';\nimport { actions, builders } from '@rango-dev/wallets-core/namespaces/solana';\n\nimport { solanaActions } from '../actions/solana.js';\nimport { WALLET_ID } from '../constants.js';\nimport { solanaCoinbase } from '../utils.js';\n\nconst [changeAccountSubscriber, changeAccountCleanup] = builders\n .changeAccountSubscriber(solanaCoinbase)\n .build();\n\nconst connect = new ActionBuilder<SolanaActions, 'connect'>('connect')\n .action(actions.connect(solanaCoinbase))\n /*\n * Coinbase 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 .and((_, connectResult) => [connectResult[0]])\n .and(connectAndUpdateStateForSingleNetwork)\n .before(intoConnecting)\n .before(changeAccountSubscriber)\n .after(intoConnectionFinished)\n .or(changeAccountCleanup)\n .or(standardizeAndThrowError)\n .build();\n\nconst disconnect = commonBuilders\n .disconnect<SolanaActions>()\n .before(() => {\n /*\n * Coinbase sometimes stays connected and causes the page to refresh.\n * This ensures we also disconnect from the wallet to prevent that behavior.\n */\n solanaCoinbase().disconnect();\n })\n .after(changeAccountCleanup)\n .build();\n\nconst canEagerConnect = new ActionBuilder<SolanaActions, 'canEagerConnect'>(\n 'canEagerConnect'\n)\n .action(solanaActions.canEagerConnectAction)\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 { evmCoinbase, solanaCoinbase } from '../utils.js';\n\n/*\n * Coinbase does not provide an eager connection mechanism for its Solana wallet.\n * The only workaround is to use the EVM-based eager connect approach.\n * However, this will only work if the EVM namespace has been connected at least once before.\n * If either wallet instance is unavailable, we throw an error.\n */\nconst canEagerConnectAction = async () => {\n const evmInstance = evmCoinbase();\n const solanaInstance = solanaCoinbase();\n // Making sure that the Solana instance is available first to prevent errors.\n if (!solanaInstance) {\n throw new Error(\n 'Trying to eagerly connect to your wallet, but seems its solana instance is not available.'\n );\n }\n if (!evmInstance) {\n throw new Error(\n 'Trying to eagerly connect to your EVM wallet, but seems its instance is not available.'\n );\n }\n\n try {\n const accounts: string[] = await evmInstance.request({\n method: 'eth_accounts',\n });\n if (accounts.length) {\n return true;\n }\n return false;\n } catch {\n return false;\n }\n};\nexport const solanaActions = { canEagerConnectAction };\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["defineVersions", "Networks", "canEagerlyConnectToEvm", "canSwitchNetworkToEvm", "chooseInstance", "getEvmAccounts", "switchNetworkForEvm", "WalletTypes", "evmBlockchains", "isEvmBlockchain", "isSolanaBlockchain", "solanaBlockchain", "dynamicImportWithRefinedError", "getNetworkInstance", "Networks", "DefaultSignerFactory", "TxType", "DefaultSolanaSigner", "base58", "CustomSolanaSigner", "DefaultSolanaSigner", "__name", "provider", "msg", "signature", "base58", "getSigners", "provider", "ethProvider", "getNetworkInstance", "Networks", "solProvider", "signers", "DefaultSignerFactory", "DefaultEvmSigner", "dynamicImportWithRefinedError", "TxType", "CustomSolanaSigner", "__name", "LegacyNetworks", "coinbase", "coinbaseWalletExtension", "coinbaseSolana", "instances", "LegacyNetworks", "__name", "evmCoinbase", "evmInstance", "solanaCoinbase", "solanaInstance", "getInstanceOrThrow", "getSolanaAccounts", "instance", "WALLET", "WalletTypes", "config", "Networks", "getInstance", "coinbase", "connect", "__name", "instance", "meta", "evm_instance", "chooseInstance", "results", "evm", "getEvmAccounts", "solanaInstance", "solanaCoinbase", "solanaResults", "getSolanaAccounts", "subscribe", "options", "ethInstance", "updateAccounts", "state", "updateChainId", "handleEvmAccountsChanged", "addresses", "eth_chainId", "isEvmBlockchain", "blockchain", "handleSolanaAccountChanged", "publicKey", "isSolanaBlockchain", "network", "account", "switchNetwork", "switchNetworkForEvm", "canSwitchNetworkTo", "canSwitchNetworkToEvm", "getSigners", "canEagerConnect", "canEagerlyConnectToEvm", "getWalletInfo", "allBlockChains", "evms", "evmBlockchains", "solana", "solanaBlockchain", "allBlockchains", "buildLegacyProvider", "ProviderBuilder", "evmBlockchains", "solanaBlockchain", "WALLET_ID", "metadata", "allBlockchains", "evmBlockchains", "solanaBlockchain", "getSigners", "getInstanceOrThrow", "ActionBuilder", "NamespaceBuilder", "commonBuilders", "connectAndUpdateStateForMultiNetworks", "intoConnecting", "intoConnectionFinished", "standardizeAndThrowError", "actions", "builders", "utils", "changeAccountSubscriber", "changeAccountCleanup", "builders", "evmCoinbase", "instance", "accounts", "chainId", "utils", "connect", "ActionBuilder", "actions", "_", "connectResult", "connectAndUpdateStateForMultiNetworks", "intoConnecting", "standardizeAndThrowError", "intoConnectionFinished", "disconnect", "commonBuilders", "canEagerConnect", "canSwitchNetwork", "getChainId", "evm", "NamespaceBuilder", "WALLET_ID", "ActionBuilder", "NamespaceBuilder", "commonBuilders", "connectAndUpdateStateForSingleNetwork", "intoConnecting", "intoConnectionFinished", "standardizeAndThrowError", "actions", "builders", "canEagerConnectAction", "__name", "evmInstance", "evmCoinbase", "solanaCoinbase", "solanaActions", "changeAccountSubscriber", "changeAccountCleanup", "builders", "solanaCoinbase", "connect", "ActionBuilder", "actions", "_", "connectResult", "connectAndUpdateStateForSingleNetwork", "intoConnecting", "intoConnectionFinished", "standardizeAndThrowError", "disconnect", "commonBuilders", "canEagerConnect", "solanaActions", "solana", "NamespaceBuilder", "WALLET_ID", "buildProvider", "__name", "ProviderBuilder", "WALLET_ID", "context", "setState", "coinbase", "metadata", "solana", "evm", "versions", "__name", "defineVersions", "buildLegacyProvider", "buildProvider"]
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evm.d.ts","sourceRoot":"","sources":["../../src/namespaces/evm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;
|
|
1
|
+
{"version":3,"file":"evm.d.ts","sourceRoot":"","sources":["../../src/namespaces/evm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AA+EzE,QAAA,MAAM,GAAG,gEAMC,CAAC;AAEX,OAAO,EAAE,GAAG,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"src/signers/solana-signer.ts":{"bytes":488,"imports":[{"path":"@rango-dev/signer-solana","kind":"import-statement","external":true},{"path":"bs58","kind":"import-statement","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/signer.ts":{"bytes":928,"imports":[{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"src/signers/solana-signer.ts","kind":"import-statement","original":"./signers/solana-signer.js"},{"path":"@rango-dev/signer-evm","kind":"dynamic-import","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/utils.ts":{"bytes":1985,"imports":[{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/legacy/index.ts":{"bytes":5133,"imports":[{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"src/signer.ts","kind":"import-statement","original":"../signer.js"},{"path":"src/utils.ts","kind":"import-statement","original":"../utils.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/constants.ts":{"bytes":1458,"imports":[{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"src/signer.ts","kind":"import-statement","original":"./signer.js"},{"path":"src/utils.ts","kind":"import-statement","original":"./utils.js"}],"format":"esm"},"src/namespaces/evm.ts":{"bytes":
|
|
1
|
+
{"inputs":{"src/signers/solana-signer.ts":{"bytes":488,"imports":[{"path":"@rango-dev/signer-solana","kind":"import-statement","external":true},{"path":"bs58","kind":"import-statement","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/signer.ts":{"bytes":928,"imports":[{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"src/signers/solana-signer.ts","kind":"import-statement","original":"./signers/solana-signer.js"},{"path":"@rango-dev/signer-evm","kind":"dynamic-import","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/utils.ts":{"bytes":1985,"imports":[{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/legacy/index.ts":{"bytes":5133,"imports":[{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"src/signer.ts","kind":"import-statement","original":"../signer.js"},{"path":"src/utils.ts","kind":"import-statement","original":"../utils.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/constants.ts":{"bytes":1458,"imports":[{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"src/signer.ts","kind":"import-statement","original":"./signer.js"},{"path":"src/utils.ts","kind":"import-statement","original":"./utils.js"}],"format":"esm"},"src/namespaces/evm.ts":{"bytes":2590,"imports":[{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/common","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/evm","kind":"import-statement","external":true},{"path":"src/constants.ts","kind":"import-statement","original":"../constants.js"},{"path":"src/utils.ts","kind":"import-statement","original":"../utils.js"}],"format":"esm"},"src/actions/solana.ts":{"bytes":1155,"imports":[{"path":"src/utils.ts","kind":"import-statement","original":"../utils.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/namespaces/solana.ts":{"bytes":1939,"imports":[{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/common","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/solana","kind":"import-statement","external":true},{"path":"src/actions/solana.ts","kind":"import-statement","original":"../actions/solana.js"},{"path":"src/constants.ts","kind":"import-statement","original":"../constants.js"},{"path":"src/utils.ts","kind":"import-statement","original":"../utils.js"}],"format":"esm"},"src/provider.ts":{"bytes":675,"imports":[{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"src/constants.ts","kind":"import-statement","original":"./constants.js"},{"path":"src/namespaces/evm.ts","kind":"import-statement","original":"./namespaces/evm.js"},{"path":"src/namespaces/solana.ts","kind":"import-statement","original":"./namespaces/solana.js"},{"path":"src/utils.ts","kind":"import-statement","original":"./utils.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/mod.ts":{"bytes":332,"imports":[{"path":"@rango-dev/wallets-core/utils","kind":"import-statement","external":true},{"path":"src/legacy/index.ts","kind":"import-statement","original":"./legacy/index.js"},{"path":"src/provider.ts","kind":"import-statement","original":"./provider.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"}},"outputs":{"dist/mod.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":27564},"dist/mod.js":{"imports":[{"path":"@rango-dev/wallets-core/utils","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"@rango-dev/signer-solana","kind":"import-statement","external":true},{"path":"bs58","kind":"import-statement","external":true},{"path":"@rango-dev/signer-evm","kind":"dynamic-import","external":true},{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/common","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/evm","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/common","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/solana","kind":"import-statement","external":true}],"exports":["versions"],"entryPoint":"src/mod.ts","inputs":{"src/mod.ts":{"bytesInOutput":144},"src/legacy/index.ts":{"bytesInOutput":2126},"src/signer.ts":{"bytesInOutput":423},"src/signers/solana-signer.ts":{"bytesInOutput":259},"src/utils.ts":{"bytesInOutput":821},"src/provider.ts":{"bytesInOutput":267},"src/constants.ts":{"bytesInOutput":763},"src/namespaces/evm.ts":{"bytesInOutput":990},"src/namespaces/solana.ts":{"bytesInOutput":725},"src/actions/solana.ts":{"bytesInOutput":391}},"bytes":7044}}}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rango-dev/provider-coinbase",
|
|
3
|
-
"version": "0.53.1-next.
|
|
3
|
+
"version": "0.53.1-next.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"source": "./src/mod.ts",
|
|
@@ -23,8 +23,8 @@
|
|
|
23
23
|
"dependencies": {
|
|
24
24
|
"@rango-dev/signer-evm": "^0.40.0",
|
|
25
25
|
"@rango-dev/signer-solana": "^0.44.1-next.0",
|
|
26
|
-
"@rango-dev/wallets-core": "^0.51.1-next.
|
|
27
|
-
"@rango-dev/wallets-shared": "^0.52.1-next.
|
|
26
|
+
"@rango-dev/wallets-core": "^0.51.1-next.1",
|
|
27
|
+
"@rango-dev/wallets-shared": "^0.52.1-next.1",
|
|
28
28
|
"bs58": "^5.0.0",
|
|
29
29
|
"rango-types": "^0.1.89"
|
|
30
30
|
},
|
package/src/namespaces/evm.ts
CHANGED
|
@@ -72,11 +72,17 @@ const canSwitchNetwork = builders
|
|
|
72
72
|
.action(actions.canSwitchNetwork())
|
|
73
73
|
.build();
|
|
74
74
|
|
|
75
|
+
const getChainId = builders
|
|
76
|
+
.getChainId()
|
|
77
|
+
.action(actions.getChainId(evmCoinbase))
|
|
78
|
+
.build();
|
|
79
|
+
|
|
75
80
|
const evm = new NamespaceBuilder<EvmActions>('EVM', WALLET_ID)
|
|
76
81
|
.action(connect)
|
|
77
82
|
.action(disconnect)
|
|
78
83
|
.action(canEagerConnect)
|
|
79
84
|
.action(canSwitchNetwork)
|
|
85
|
+
.action(getChainId)
|
|
80
86
|
.build();
|
|
81
87
|
|
|
82
88
|
export { evm };
|