@rango-dev/wallets-core 0.23.0 → 0.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1 -26
- package/dist/index.js +1 -1
- package/dist/index.js.map +3 -3
- package/dist/types.d.ts +0 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/wallet.d.ts +4 -8
- package/dist/wallet.d.ts.map +1 -1
- package/package.json +4 -5
- package/src/types.ts +0 -2
- package/src/wallet.ts +22 -56
package/CHANGELOG.md
CHANGED
|
@@ -1,29 +1,4 @@
|
|
|
1
|
-
# 0.
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
### Bug Fixes
|
|
5
|
-
|
|
6
|
-
* add suggest and connect to wallet for experimental chain ([0002e69](https://github.com/yeager-eren/rango-client/commit/0002e69da90c58a00cbd50ca8ad601a12ed0e77a))
|
|
7
|
-
* fix bug of duplicate modals for wallet connect ([efb5482](https://github.com/yeager-eren/rango-client/commit/efb54827fd51e6c6c8f42c6abf33c3d7610755e8))
|
|
8
|
-
* fix can switch network for wallet connect ([e3cdeac](https://github.com/yeager-eren/rango-client/commit/e3cdeacd836e254ea2d5384aab4b624a3e7259eb))
|
|
9
|
-
* fix cosmostation experimental chain issue ([5503b2e](https://github.com/yeager-eren/rango-client/commit/5503b2eaceedb1aa64c575829f25576c1f373c0e))
|
|
10
|
-
* fix HMR for widget and playground ([8524820](https://github.com/yeager-eren/rango-client/commit/8524820f10cf0b8921f3db0c4f620ff98daa4103))
|
|
11
|
-
* handle safe wallet in widget ([52fcca4](https://github.com/yeager-eren/rango-client/commit/52fcca49315f7e2edb4655ae7b9cd0792c2800d7))
|
|
12
|
-
* handle switch network flow for wallet-connect ([8c4a17b](https://github.com/yeager-eren/rango-client/commit/8c4a17b47b2919820a4e0726f6d1c48b8994abe3))
|
|
13
|
-
* update rango-types and fix notification bugs ([993f185](https://github.com/yeager-eren/rango-client/commit/993f185e0b8c5e5e15a2c65ba2d85d1f9c8daa90))
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
### Features
|
|
17
|
-
|
|
18
|
-
* add project id as a external value ([0c80404](https://github.com/yeager-eren/rango-client/commit/0c80404a8cacb6c5b0338dea1e416b0b11db254b))
|
|
19
|
-
* implement wallets auto-connect functionality ([f47d32b](https://github.com/yeager-eren/rango-client/commit/f47d32bb8bbb38a72b961e5eb2ee7e2b985f9f7d))
|
|
20
|
-
* Support for WalletConnect 2 ([faedef0](https://github.com/yeager-eren/rango-client/commit/faedef0b5e6fc3c5ef881cbbe4ec05334cc1c910))
|
|
21
|
-
* support safe wallet ([d04cbcd](https://github.com/yeager-eren/rango-client/commit/d04cbcd2a612755563512d9dff6f2312088d8b4d))
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
### Reverts
|
|
25
|
-
|
|
26
|
-
* Revert "support for rango-types cjs format" ([ed4e050](https://github.com/yeager-eren/rango-client/commit/ed4e050bfc0dcde7aeffa6b0d73b02080a5721eb))
|
|
1
|
+
# [0.24.0](https://github.com/rango-exchange/rango-client/compare/wallets-core@0.22.0...wallets-core@0.24.0) (2023-12-24)
|
|
27
2
|
|
|
28
3
|
|
|
29
4
|
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var S=Object.defineProperty;var
|
|
1
|
+
var S=Object.defineProperty;var s=(i,t)=>S(i,"name",{value:t,configurable:!0});var m=(a=>(a.CONNECTED="connected",a.CONNECTING="connecting",a.REACHABLE="reachable",a.INSTALLED="installed",a.ACCOUNTS="accounts",a.NETWORK="network",a))(m||{});var d=class{getItem(t){let e=localStorage.getItem(t);return e?JSON.parse(e):null}setItem(t,e){localStorage.setItem(t,JSON.stringify(e))}removeItem(t){localStorage.removeItem(t)}};s(d,"Persistor");function N(i,t){return`${t||""}:${i}`}s(N,"formatAddressWithNetwork");function u(i,t){return i?i.map(e=>N(e,t)):[]}s(u,"accountAddressesWithNetwork");function T(i){let[t,e]=i.split(":");return{network:t,address:e}}s(T,"readAccountAddress");function f(i){let{checkInstallation:t=!0}=i.config;return t}s(f,"needsCheckInstallation");import{getBlockChainNameFromId as w,Networks as h}from"@rango-dev/wallets-shared";var g=class{constructor(t,e){this.actions=e,this.options=t,this.provider=null,this.meta=[],this.state={connected:!1,connecting:!1,reachable:!1,installed:!1,accounts:null,network:null},f(t)||this.setInstalledAs(!0)}async suggestAndConnect(t){return this.actions.suggest&&await this.actions.suggest({instance:this.provider,meta:this.meta,network:t}),await this.connect(t)}async connect(t){if(this.state.connecting)throw new Error("Connecting...");let e=await this.getConnectionFromState(),n=this.state.network,o=t||n||this.options.config.defaultNetwork;if(e){let l=n!==o&&!!o;if(n===o)return e;let r=!0;if(this.actions.canSwitchNetworkTo&&(r=this.actions.canSwitchNetworkTo({provider:this.provider,meta:this.meta,network:o||""})),l&&r&&this.actions.switchNetwork)return await this.actions.switchNetwork({instance:this.provider,meta:this.meta,network:o,newInstance:this.tryGetInstance.bind(this)}),o!==this.state.network&&this.updateState({network:t}),{accounts:e.accounts,network:o,provider:this.provider}}let c=await this.tryGetInstance({network:t});this.updateState({connecting:!0}),this.setInstalledAs(!0);try{var a=await this.actions.connect({instance:c,network:o||void 0,meta:this.meta||[]})}catch(l){throw this.resetState(),l}this.updateState({connected:!0,reachable:!0,connecting:!1});let p=[],k=null;if(Array.isArray(a))p=a.flatMap(r=>{let y=r.chainId||h.Unknown,I=w(y,this.meta)||h.Unknown;return u(r.accounts,I)}).filter(Boolean),k=o||this.options.config.defaultNetwork;else{let l=a.chainId||h.Unknown,r=w(l,this.meta)||h.Unknown;p=u(a.accounts,r),k=r}return p.length>0&&this.updateState({accounts:p,network:k}),{accounts:this.state.accounts,network:this.state.network,provider:this.provider}}async disconnect(){this.resetState(),this.actions.disconnect&&this.actions.disconnect({instance:this.provider,destroyInstance:()=>{this.setProvider(null)}})}async eagerConnect(){let t=await this.tryGetInstance({network:void 0}),{canEagerConnect:e}=this.actions,n=`can't restore connection for ${this.options.config.type} .`;if(e){if(await e({instance:t,meta:this.meta}))return this.connect();throw new Error(n)}else throw new Error(n)}getSigners(t){return this.actions.getSigners(t)}getWalletInfo(t){return this.actions.getWalletInfo(t)}canSwitchNetworkTo(t,e){let n=this.actions.canSwitchNetworkTo;return n?n({network:t,meta:this.meta,provider:e}):!1}onInit(){this.options.config.isAsyncInstance?f(this.options)&&this.actions.getInstance().then(t=>{t&&this.setInstalledAs(!0)}):this.actions.getInstance()&&!this.state.installed&&this.setInstalledAs(!0)}setProvider(t){this.provider=t,t&&this.actions.subscribe&&this.actions.subscribe({instance:t,state:this.state,meta:this.meta,connect:this.connect.bind(this),disconnect:this.disconnect.bind(this),updateAccounts:(e,n)=>{let o=this.state.network;n&&(o=w(n,this.meta)||h.Unknown);let c=u(e,o);c.length>0&&this.updateState({accounts:c})},updateChainId:this.updateChainId.bind(this)})}setMeta(t){this.meta=t}setHandler(t){this.options.handler=t}getState(){return this.state}updateState(t){let e=[];typeof t.connected<"u"&&(this.state.connected=t.connected,e.push(["connected",t.connected])),typeof t.connecting<"u"&&(this.state.connecting=t.connecting,e.push(["connecting",t.connecting])),typeof t.reachable<"u"&&(this.state.reachable=t.reachable,e.push(["reachable",t.reachable])),typeof t.installed<"u"&&(this.state.installed=t.installed,e.push(["installed",t.installed])),typeof t.accounts<"u"&&(this.state.accounts=t.accounts,e.push(["accounts",t.accounts])),typeof t.network<"u"&&(this.state.network=t.network,e.push(["network",t.network]));let n=this.getState();e.forEach(([o,c])=>{this.options.handler(this.options.config.type,o,c,n,this.meta)})}resetState(){this.updateState({connected:!1,connecting:!1,reachable:!1,accounts:null,network:null})}async getConnectionFromState(){return this.state.connected&&this.provider?{accounts:this.state.accounts,network:this.state.network,provider:this.provider}:null}updateChainId(t){let e=t?w(t,this.meta):h.Unknown;this.updateState({network:e})}setInstalledAs(t){!f(this.options)&&t===!1||this.updateState({installed:t})}async tryGetInstance({network:t,force:e}){let n=null;if(this.setProvider(null),this.options.config.isAsyncInstance){let o={currentProvider:this.provider,meta:this.meta,force:e||!1,updateChainId:this.updateChainId.bind(this),getState:this.getState.bind(this)};t&&(o.network=t),n=await this.actions.getInstance(o)}else n=this.actions.getInstance();if(!n){this.setInstalledAs(!1),this.resetState();let o=`It seems your selected wallet (${this.options.config.type}) isn't installed.`;throw new Error(o)}return this.setProvider(n),n}};s(g,"Wallet");var v=g;export{m as Events,d as Persistor,u as accountAddressesWithNetwork,v as default,N as formatAddressWithNetwork,f as needsCheckInstallation,T as readAccountAddress};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/types.ts", "../src/persistor.ts", "../src/helpers.ts", "../src/wallet.ts"],
|
|
4
|
-
"sourcesContent": ["import type { State as WalletState } from './wallet';\nimport type {\n Network,\n WalletInfo,\n WalletType,\n} from '@rango-dev/wallets-shared';\nimport type { BlockchainMeta, SignerFactory } from 'rango-types';\n\nexport type State = {\n [key: string]: WalletState | undefined;\n};\n\nexport type ConnectResult = {\n accounts: string[] | null;\n network: Network | null;\n provider: any;\n};\n\nexport type Providers = { [type in WalletType]?: any };\n\nexport enum Events {\n CONNECTED = 'connected',\n CONNECTING = 'connecting',\n REACHABLE = 'reachable',\n INSTALLED = 'installed',\n ACCOUNTS = 'accounts',\n NETWORK = 'network',\n}\n\nexport type ProviderConnectResult = {\n accounts: string[];\n chainId: string;\n};\n\nexport type GetInstanceOptions = {\n network?: Network;\n currentProvider: any;\n meta: BlockchainMeta[];\n getState: () => WalletState;\n /**\n * We always get the instance once and reuse it whenever we needs. By using this option\n * We can force the library to get a new instance and replace it with the old one.\n *\n * Originally, we used this option for wallet connect 1 and its switching network challenge.\n */\n force?: boolean;\n updateChainId: (chainId: number | string) => void;\n};\n\nexport type GetInstance =\n | (() => any)\n | ((options: GetInstanceOptions) => Promise<any>);\n\nexport type TryGetInstance =\n | (() => any)\n | ((options: Pick<GetInstanceOptions, 'force' | 'network'>) => Promise<any>);\n\nexport type Connect = (options: {\n instance: any;\n network?: Network;\n meta: BlockchainMeta[];\n}) => Promise<ProviderConnectResult | ProviderConnectResult[]>;\n\nexport type Disconnect = (options: {\n instance: any;\n destroyInstance: () => void;\n}) => Promise<void>;\n\nexport type Subscribe = (options: {\n instance: any;\n state: WalletState;\n meta: BlockchainMeta[];\n updateChainId: (chainId: string) => void;\n updateAccounts: (accounts: string[], chainId?: string) => void;\n connect: (network?: Network) => void;\n disconnect: () => void;\n}) => void;\n\nexport type SwitchNetwork = (options: {\n instance: any;\n network: Network;\n meta: BlockchainMeta[];\n newInstance?: TryGetInstance;\n getState?: () => WalletState;\n}) => Promise<void>;\n\nexport type Suggest = (options: {\n instance: any;\n network: Network;\n meta: BlockchainMeta[];\n}) => Promise<void>;\n\nexport type CanSwitchNetwork = (options: {\n network: Network;\n meta: BlockchainMeta[];\n provider: any;\n}) => boolean;\n\nexport type CanEagerConnect = (options: {\n instance: any;\n meta: BlockchainMeta[];\n}) => Promise<boolean>;\n\nexport interface WalletActions {\n connect: Connect;\n getInstance: any;\n disconnect?: Disconnect;\n subscribe?: Subscribe;\n // unsubscribe, // coupled to subscribe.\n\n // Optional, but should be provided at the same time.\n suggest?: Suggest;\n switchNetwork?: SwitchNetwork;\n getSigners: (provider: any) => SignerFactory;\n canSwitchNetworkTo?: CanSwitchNetwork;\n canEagerConnect?: CanEagerConnect;\n getWalletInfo(allBlockChains: BlockchainMeta[]): WalletInfo;\n}\n\nexport interface WalletConfig {\n type: WalletType;\n defaultNetwork?: Network;\n checkInstallation?: boolean;\n isAsyncInstance?: boolean;\n isAsyncSwitchNetwork?: boolean;\n}\n\nexport type WalletProviders = Map<\n WalletType,\n {\n actions: WalletActions;\n config: WalletConfig;\n }\n>;\n\nexport type ProviderInterface = { config: WalletConfig } & WalletActions;\n", "export interface PersistStorage<T> {\n getItem: (name: string) => T | null;\n setItem: (name: string, value: T) => void;\n removeItem: (name: string) => void;\n}\n\nexport class Persistor<T> implements PersistStorage<T> {\n getItem(name: string) {\n const item = localStorage.getItem(name);\n const parsedItem = item ? (JSON.parse(item) as T) : null;\n return parsedItem;\n }\n setItem(name: string, value: T) {\n localStorage.setItem(name, JSON.stringify(value));\n }\n removeItem(name: string) {\n localStorage.removeItem(name);\n }\n}\n", "import { Network } from '@rango-dev/wallets-shared';\nimport { Options } from './wallet';\n\nexport function formatAddressWithNetwork(\n address: string,\n network?: Network | null\n) {\n return `${network || ''}:${address}`;\n}\n\nexport function accountAddressesWithNetwork(\n addresses: string[] | null,\n network?: Network | null\n) {\n if (!addresses) return [];\n\n return addresses.map((address) => {\n return formatAddressWithNetwork(address, network);\n });\n}\n\nexport function readAccountAddress(addressWithNetwork: string): {\n address: string;\n network: Network;\n} {\n const [network, address] = addressWithNetwork.split(':');\n\n return {\n network,\n address,\n };\n}\n\nexport function needsCheckInstallation(options: Options) {\n const { checkInstallation = true } = options.config;\n return checkInstallation;\n}\n", "import type { GetInstanceOptions, WalletActions, WalletConfig } from './types';\nimport type { Network, WalletType } from '@rango-dev/wallets-shared';\nimport type { BlockchainMeta } from 'rango-types';\n\nimport { getBlockChainNameFromId, Networks } from '@rango-dev/wallets-shared';\n\nimport { accountAddressesWithNetwork, needsCheckInstallation } from './helpers';\nimport { Events } from './types';\n\nexport type EventHandler = (\n type: WalletType,\n event: Events,\n value: any,\n coreState: State,\n info: EventInfo\n) => void;\n\nexport type EventInfo = {\n supportedBlockchains: BlockchainMeta[];\n isContractWallet: boolean;\n};\n\nexport interface State {\n connected: boolean;\n connecting: boolean;\n reachable: boolean;\n installed: boolean;\n accounts: string[] | null;\n network: Network | null;\n}\n\nexport interface Options {\n config: WalletConfig;\n handler: EventHandler;\n}\n\nclass Wallet<InstanceType = any> {\n public provider: InstanceType | null;\n private actions: WalletActions;\n private state: State;\n private options: Options;\n private info: EventInfo;\n\n constructor(options: Options, actions: WalletActions) {\n this.actions = actions;\n this.options = options;\n this.provider = null;\n this.info = {\n supportedBlockchains: [],\n isContractWallet: false,\n };\n this.state = {\n connected: false,\n connecting: false,\n // TODO: Remove\n reachable: false,\n installed: false,\n accounts: null,\n network: null,\n };\n\n if (!needsCheckInstallation(options)) {\n this.setInstalledAs(true);\n }\n }\n\n async suggestAndConnect(network: Network) {\n if (this.actions.suggest) {\n await this.actions.suggest({\n instance: this.provider,\n meta: this.info.supportedBlockchains,\n network,\n });\n }\n return await this.connect(network);\n }\n\n async connect(network?: Network) {\n // If it's connecting, nothing do.\n if (this.state.connecting) {\n throw new Error('Connecting...');\n }\n\n const connectionFromState = await this.getConnectionFromState();\n const currentNetwork = this.state.network;\n /*\n * If a network hasn't been provided and also we have `lastNetwork`\n * We will use lastNetwork to make sure we will not\n * Ask the user to switch his network wrongly.\n */\n const requestedNetwork =\n network || currentNetwork || this.options.config.defaultNetwork;\n\n if (connectionFromState) {\n const networkChanged =\n currentNetwork !== requestedNetwork && !!requestedNetwork;\n\n // Reuse current connection if nothing has changed and we already have the connection in memory.\n if (currentNetwork === requestedNetwork) {\n return connectionFromState;\n }\n\n let canSwitch = true;\n if (this.actions.canSwitchNetworkTo) {\n canSwitch = this.actions.canSwitchNetworkTo({\n provider: this.provider,\n meta: this.info.supportedBlockchains,\n network: requestedNetwork || '',\n });\n }\n\n if (networkChanged && canSwitch && !!this.actions.switchNetwork) {\n await this.actions.switchNetwork({\n instance: this.provider,\n meta: this.info.supportedBlockchains,\n // TODO: Fix type error\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n network: requestedNetwork,\n newInstance: this.tryGetInstance.bind(this),\n getState: this.getState.bind(this),\n });\n\n /*\n * We assume if we reach here (`switchNetwork` not throwing error), Switch successfully has been done.\n * But for providers with async switch network like wallet-connect, we need to wait for chain change\n * event before changing network.\n */\n if (\n requestedNetwork !== this.state.network &&\n !this.options.config.isAsyncSwitchNetwork\n ) {\n this.updateState({\n network,\n });\n }\n\n return {\n // Only network has been changed, so we reuse accounts from what we have already.\n accounts: connectionFromState.accounts,\n network: requestedNetwork,\n provider: this.provider,\n };\n }\n\n // If none of the above conditions didn't match, continute to connect.\n }\n\n // We are connecting to wallet for the first time\n\n // Trying to get wallet's instance, if it's not available, raise an error.\n const instance = await this.tryGetInstance({ network });\n\n // Instance exists, trying to connect\n this.updateState({\n connecting: true,\n });\n this.setInstalledAs(true);\n\n try {\n // eslint-disable-next-line no-var\n var connectResult = await this.actions.connect({\n instance,\n network: requestedNetwork || undefined,\n meta: this.info.supportedBlockchains || [],\n });\n } catch (e) {\n this.resetState();\n throw e;\n }\n\n this.updateState({\n connected: true,\n reachable: true,\n connecting: false,\n });\n\n // TODO: Handle accounts.length > 0\n\n // Inserting accounts into our state.\n let nextAccounts: string[] = [];\n let nextNetwork: Network | null | undefined = null;\n if (Array.isArray(connectResult)) {\n const accounts = connectResult.flatMap((blockchain) => {\n const chainId = blockchain.chainId || Networks.Unknown;\n // Try to map chainId with a Network, if not found, we use chainId directly.\n const network =\n getBlockChainNameFromId(chainId, this.info.supportedBlockchains) ||\n Networks.Unknown;\n // TODO: second parameter should be `string` when we decided to open source the package.\n return accountAddressesWithNetwork(blockchain.accounts, network);\n });\n // Typescript can not detect we are filtering out null values:(\n nextAccounts = accounts.filter(Boolean);\n nextNetwork = requestedNetwork || this.options.config.defaultNetwork;\n } else {\n const chainId = connectResult.chainId || Networks.Unknown;\n const network =\n getBlockChainNameFromId(chainId, this.info.supportedBlockchains) ||\n Networks.Unknown;\n\n // We fallback to current active network if `chainId` not provided.\n nextAccounts = accountAddressesWithNetwork(\n connectResult.accounts,\n network\n );\n nextNetwork = network;\n }\n\n if (nextAccounts.length > 0) {\n this.updateState({\n accounts: nextAccounts,\n network: nextNetwork,\n });\n }\n\n return {\n accounts: this.state.accounts,\n network: this.state.network,\n provider: this.provider,\n };\n }\n\n async disconnect() {\n this.resetState();\n\n if (this.actions.disconnect) {\n void this.actions.disconnect({\n instance: this.provider,\n // On wallet connect, we need to destory the instance and get a whole new instance when we are going to connect\n destroyInstance: () => {\n this.setProvider(null);\n },\n });\n }\n }\n\n // This method is only used for auto connection\n async eagerConnect() {\n const instance = await this.tryGetInstance({ network: undefined });\n const { canEagerConnect } = this.actions;\n const error_message = `can't restore connection for ${this.options.config.type} .`;\n\n if (canEagerConnect) {\n // Check if we can eagerly connect to the wallet\n const eagerConnection = await canEagerConnect({\n instance: instance,\n meta: this.info.supportedBlockchains,\n });\n\n if (eagerConnection) {\n // Connect to wallet as usual\n return this.connect();\n }\n throw new Error(error_message);\n } else {\n throw new Error(error_message);\n }\n }\n\n getSigners(provider: any) {\n return this.actions.getSigners(provider);\n }\n getWalletInfo(allBlockChains: BlockchainMeta[]) {\n return this.actions.getWalletInfo(allBlockChains);\n }\n canSwitchNetworkTo(network: Network, provider: any) {\n const switchTo = this.actions.canSwitchNetworkTo;\n if (!switchTo) {\n return false;\n }\n\n return switchTo({\n network,\n meta: this.info.supportedBlockchains,\n provider,\n });\n }\n\n onInit() {\n if (!this.options.config.isAsyncInstance) {\n const instance = this.actions.getInstance();\n if (!!instance && !this.state.installed) {\n this.setInstalledAs(true);\n }\n } else if (needsCheckInstallation(this.options)) {\n this.actions.getInstance().then((data: any) => {\n if (data) {\n this.setInstalledAs(true);\n }\n });\n }\n }\n\n setProvider(value: any) {\n this.provider = value;\n if (!!value && !!this.actions.subscribe) {\n this.actions.subscribe({\n instance: value,\n state: this.state,\n meta: this.info.supportedBlockchains,\n connect: this.connect.bind(this),\n disconnect: this.disconnect.bind(this),\n updateAccounts: (accounts, chainId) => {\n let network = this.state.network;\n if (chainId) {\n network =\n getBlockChainNameFromId(\n chainId,\n this.info.supportedBlockchains\n ) || Networks.Unknown;\n }\n\n const nextAccounts = accountAddressesWithNetwork(accounts, network);\n if (nextAccounts.length > 0) {\n this.updateState({\n accounts: nextAccounts,\n });\n }\n },\n updateChainId: this.updateChainId.bind(this),\n });\n }\n }\n\n setInfo(info: Partial<EventInfo>) {\n if (typeof info.supportedBlockchains !== 'undefined') {\n this.info.supportedBlockchains = info.supportedBlockchains;\n }\n if (typeof info.isContractWallet !== 'undefined') {\n this.info.isContractWallet = info.isContractWallet;\n }\n }\n\n setHandler(handler: EventHandler) {\n this.options.handler = handler;\n }\n\n getState(): State {\n return this.state;\n }\n\n updateState(states: Partial<State>) {\n /*\n * We will notify handler after updating all the states.\n * Because when we call `handler` it will has latest states.\n */\n const updates: [Events, any][] = [];\n\n if (typeof states.connected !== 'undefined') {\n this.state.connected = states.connected;\n updates.push([Events.CONNECTED, states.connected]);\n }\n if (typeof states.connecting !== 'undefined') {\n this.state.connecting = states.connecting;\n updates.push([Events.CONNECTING, states.connecting]);\n }\n if (typeof states.reachable !== 'undefined') {\n this.state.reachable = states.reachable;\n updates.push([Events.REACHABLE, states.reachable]);\n }\n if (typeof states.installed !== 'undefined') {\n this.state.installed = states.installed;\n updates.push([Events.INSTALLED, states.installed]);\n }\n if (typeof states.accounts !== 'undefined') {\n this.state.accounts = states.accounts;\n updates.push([Events.ACCOUNTS, states.accounts]);\n }\n if (typeof states.network !== 'undefined') {\n this.state.network = states.network;\n updates.push([Events.NETWORK, states.network]);\n }\n\n const state = this.getState();\n updates.forEach(([name, value]) => {\n const eventInfo: EventInfo = {\n supportedBlockchains: this.info.supportedBlockchains,\n isContractWallet: this.info.isContractWallet,\n };\n this.options.handler(\n this.options.config.type,\n name,\n value,\n state,\n eventInfo\n );\n });\n }\n\n resetState() {\n this.updateState({\n connected: false,\n connecting: false,\n reachable: false,\n accounts: null,\n network: null,\n });\n }\n\n private async getConnectionFromState() {\n // Already connected, so we return provider that we have in memory.\n\n /*\n * For switching network on Trust Wallet (WalletConnect),\n * We only kill the session (and not restting the whole state)\n * So we are relying on this.provider for achieving this functionality.\n */\n if (this.state.connected && !!this.provider) {\n return {\n accounts: this.state.accounts,\n network: this.state.network,\n provider: this.provider,\n };\n }\n\n return null;\n }\n\n private updateChainId(chainId: string | number) {\n const network = chainId\n ? getBlockChainNameFromId(chainId, this.info.supportedBlockchains)\n : Networks.Unknown;\n\n this.updateState({\n network,\n });\n }\n\n private setInstalledAs(value: boolean) {\n if (!needsCheckInstallation(this.options) && value === false) {\n return;\n }\n\n this.updateState({\n installed: value,\n });\n }\n // eslint-disable-next-line destructuring/in-methods-params\n private async tryGetInstance({\n network,\n force,\n }: {\n network?: Network;\n force?: boolean;\n }) {\n let instance = null;\n /*\n * For switching network on Trust Wallet (WalletConnect),\n * We only kill the session (and not restting the whole state)\n * So we are relying on this.provider for achieving this functionality.\n */\n this.setProvider(null);\n if (this.options.config.isAsyncInstance) {\n // Trying to connect\n const instanceOptions: GetInstanceOptions = {\n currentProvider: this.provider,\n meta: this.info.supportedBlockchains,\n force: force || false,\n updateChainId: this.updateChainId.bind(this),\n getState: this.getState.bind(this),\n };\n\n if (network) {\n instanceOptions.network = network;\n }\n instance = await this.actions.getInstance(instanceOptions);\n } else {\n instance = this.actions.getInstance();\n }\n\n if (!instance) {\n this.setInstalledAs(false);\n this.resetState();\n\n const error_message = `It seems your selected wallet (${this.options.config.type}) isn't installed.`;\n throw new Error(error_message);\n }\n\n this.setProvider(instance);\n return instance;\n }\n}\n\nexport default Wallet;\n"],
|
|
5
|
-
"mappings": "+EAoBO,IAAKA,OACVA,EAAA,UAAY,YACZA,EAAA,WAAa,aACbA,EAAA,UAAY,YACZA,EAAA,UAAY,YACZA,EAAA,SAAW,WACXA,EAAA,QAAU,UANAA,OAAA,ICdL,IAAMC,EAAN,KAAgD,CACrD,QAAQC,EAAc,CACpB,IAAMC,EAAO,aAAa,QAAQD,CAAI,EAEtC,OADmBC,EAAQ,KAAK,MAAMA,CAAI,EAAU,IAEtD,CACA,QAAQD,EAAcE,EAAU,CAC9B,aAAa,QAAQF,EAAM,KAAK,UAAUE,CAAK,CAAC,CAClD,CACA,WAAWF,EAAc,CACvB,aAAa,WAAWA,CAAI,CAC9B,CACF,EAZaG,EAAAJ,EAAA,aCHN,SAASK,EACdC,EACAC,EACA,CACA,MAAO,GAAGA,GAAW,MAAMD,GAC7B,CALgBE,EAAAH,EAAA,4BAOT,SAASI,EACdC,EACAH,EACA,CACA,OAAKG,EAEEA,EAAU,IAAKJ,GACbD,EAAyBC,EAASC,CAAO,CACjD,EAJsB,CAAC,CAK1B,CATgBC,EAAAC,EAAA,+BAWT,SAASE,EAAmBC,EAGjC,CACA,GAAM,CAACL,EAASD,CAAO,EAAIM,EAAmB,MAAM,GAAG,EAEvD,MAAO,CACL,QAAAL,EACA,QAAAD,CACF,CACF,CAVgBE,EAAAG,EAAA,sBAYT,SAASE,EAAuBC,EAAkB,CACvD,GAAM,CAAE,kBAAAC,EAAoB,EAAK,EAAID,EAAQ,OAC7C,OAAOC,CACT,CAHgBP,EAAAK,EAAA,0BC7BhB,OAAS,2BAAAG,EAAyB,YAAAC,MAAgB,
|
|
6
|
-
"names": ["Events", "Persistor", "name", "item", "value", "__name", "formatAddressWithNetwork", "address", "network", "__name", "accountAddressesWithNetwork", "addresses", "readAccountAddress", "addressWithNetwork", "needsCheckInstallation", "options", "checkInstallation", "getBlockChainNameFromId", "Networks", "Wallet", "options", "actions", "needsCheckInstallation", "network", "connectionFromState", "currentNetwork", "requestedNetwork", "networkChanged", "canSwitch", "instance", "connectResult", "e", "nextAccounts", "nextNetwork", "blockchain", "chainId", "Networks", "getBlockChainNameFromId", "accountAddressesWithNetwork", "canEagerConnect", "error_message", "provider", "allBlockChains", "switchTo", "data", "value", "accounts", "
|
|
4
|
+
"sourcesContent": ["import type { State as WalletState } from './wallet';\nimport type {\n Network,\n WalletInfo,\n WalletType,\n} from '@rango-dev/wallets-shared';\nimport type { BlockchainMeta, SignerFactory } from 'rango-types';\n\nexport type State = {\n [key: string]: WalletState | undefined;\n};\n\nexport type ConnectResult = {\n accounts: string[] | null;\n network: Network | null;\n provider: any;\n};\n\nexport type Providers = { [type in WalletType]?: any };\n\nexport enum Events {\n CONNECTED = 'connected',\n CONNECTING = 'connecting',\n REACHABLE = 'reachable',\n INSTALLED = 'installed',\n ACCOUNTS = 'accounts',\n NETWORK = 'network',\n}\n\nexport type ProviderConnectResult = {\n accounts: string[];\n chainId: string;\n};\n\nexport type GetInstanceOptions = {\n network?: Network;\n currentProvider: any;\n meta: BlockchainMeta[];\n getState: () => WalletState;\n /**\n * We always get the instance once and reuse it whenever we needs. By using this option\n * We can force the library to get a new instance and replace it with the old one.\n *\n * Originally, we used this option for wallet connect 1 and its switching network challenge.\n */\n force?: boolean;\n updateChainId: (chainId: number | string) => void;\n};\n\nexport type GetInstance =\n | (() => any)\n | ((options: GetInstanceOptions) => Promise<any>);\n\nexport type TryGetInstance =\n | (() => any)\n | ((options: Pick<GetInstanceOptions, 'force' | 'network'>) => Promise<any>);\n\nexport type Connect = (options: {\n instance: any;\n network?: Network;\n meta: BlockchainMeta[];\n}) => Promise<ProviderConnectResult | ProviderConnectResult[]>;\n\nexport type Disconnect = (options: {\n instance: any;\n destroyInstance: () => void;\n}) => Promise<void>;\n\nexport type Subscribe = (options: {\n instance: any;\n state: WalletState;\n meta: BlockchainMeta[];\n updateChainId: (chainId: string) => void;\n updateAccounts: (accounts: string[], chainId?: string) => void;\n connect: (network?: Network) => void;\n disconnect: () => void;\n}) => void;\n\nexport type SwitchNetwork = (options: {\n instance: any;\n network: Network;\n meta: BlockchainMeta[];\n newInstance?: TryGetInstance;\n}) => Promise<void>;\n\nexport type Suggest = (options: {\n instance: any;\n network: Network;\n meta: BlockchainMeta[];\n}) => Promise<void>;\n\nexport type CanSwitchNetwork = (options: {\n network: Network;\n meta: BlockchainMeta[];\n provider: any;\n}) => boolean;\n\nexport type CanEagerConnect = (options: {\n instance: any;\n meta: BlockchainMeta[];\n}) => Promise<boolean>;\n\nexport interface WalletActions {\n connect: Connect;\n getInstance: any;\n disconnect?: Disconnect;\n subscribe?: Subscribe;\n // unsubscribe, // coupled to subscribe.\n\n // Optional, but should be provided at the same time.\n suggest?: Suggest;\n switchNetwork?: SwitchNetwork;\n getSigners: (provider: any) => SignerFactory;\n canSwitchNetworkTo?: CanSwitchNetwork;\n canEagerConnect?: CanEagerConnect;\n getWalletInfo(allBlockChains: BlockchainMeta[]): WalletInfo;\n}\n\nexport interface WalletConfig {\n type: WalletType;\n defaultNetwork?: Network;\n checkInstallation?: boolean;\n isAsyncInstance?: boolean;\n}\n\nexport type WalletProviders = Map<\n WalletType,\n {\n actions: WalletActions;\n config: WalletConfig;\n }\n>;\n\nexport type ProviderInterface = { config: WalletConfig } & WalletActions;\n", "export interface PersistStorage<T> {\n getItem: (name: string) => T | null;\n setItem: (name: string, value: T) => void;\n removeItem: (name: string) => void;\n}\n\nexport class Persistor<T> implements PersistStorage<T> {\n getItem(name: string) {\n const item = localStorage.getItem(name);\n const parsedItem = item ? (JSON.parse(item) as T) : null;\n return parsedItem;\n }\n setItem(name: string, value: T) {\n localStorage.setItem(name, JSON.stringify(value));\n }\n removeItem(name: string) {\n localStorage.removeItem(name);\n }\n}\n", "import { Network } from '@rango-dev/wallets-shared';\nimport { Options } from './wallet';\n\nexport function formatAddressWithNetwork(\n address: string,\n network?: Network | null\n) {\n return `${network || ''}:${address}`;\n}\n\nexport function accountAddressesWithNetwork(\n addresses: string[] | null,\n network?: Network | null\n) {\n if (!addresses) return [];\n\n return addresses.map((address) => {\n return formatAddressWithNetwork(address, network);\n });\n}\n\nexport function readAccountAddress(addressWithNetwork: string): {\n address: string;\n network: Network;\n} {\n const [network, address] = addressWithNetwork.split(':');\n\n return {\n network,\n address,\n };\n}\n\nexport function needsCheckInstallation(options: Options) {\n const { checkInstallation = true } = options.config;\n return checkInstallation;\n}\n", "import type { GetInstanceOptions, WalletActions, WalletConfig } from './types';\nimport type { Network, WalletType } from '@rango-dev/wallets-shared';\nimport type { BlockchainMeta } from 'rango-types';\n\nimport { getBlockChainNameFromId, Networks } from '@rango-dev/wallets-shared';\n\nimport { accountAddressesWithNetwork, needsCheckInstallation } from './helpers';\nimport { Events } from './types';\n\nexport type EventHandler = (\n type: WalletType,\n event: Events,\n value: any,\n coreState: State,\n supportedChains: BlockchainMeta[]\n) => void;\n\nexport interface State {\n connected: boolean;\n connecting: boolean;\n reachable: boolean;\n installed: boolean;\n accounts: string[] | null;\n network: Network | null;\n}\n\nexport interface Options {\n config: WalletConfig;\n handler: EventHandler;\n}\n\nclass Wallet<InstanceType = any> {\n private actions: WalletActions;\n private state: State;\n private options: Options;\n private meta: BlockchainMeta[];\n public provider: InstanceType | null;\n\n constructor(options: Options, actions: WalletActions) {\n this.actions = actions;\n this.options = options;\n this.provider = null;\n this.meta = [];\n this.state = {\n connected: false,\n connecting: false,\n // TODO: Remove\n reachable: false,\n installed: false,\n accounts: null,\n network: null,\n };\n\n if (!needsCheckInstallation(options)) {\n this.setInstalledAs(true);\n }\n }\n async suggestAndConnect(network: Network) {\n if (this.actions.suggest) {\n await this.actions.suggest({\n instance: this.provider,\n meta: this.meta,\n network,\n });\n }\n return await this.connect(network);\n }\n\n async connect(network?: Network) {\n // If it's connecting, nothing do.\n if (this.state.connecting) {\n throw new Error('Connecting...');\n }\n\n const connectionFromState = await this.getConnectionFromState();\n const currentNetwork = this.state.network;\n /*\n * If a network hasn't been provided and also we have `lastNetwork`\n * We will use lastNetwork to make sure we will not\n * Ask the user to switch his network wrongly.\n */\n const requestedNetwork =\n network || currentNetwork || this.options.config.defaultNetwork;\n\n if (connectionFromState) {\n const networkChanged =\n currentNetwork !== requestedNetwork && !!requestedNetwork;\n\n // Reuse current connection if nothing has changed and we already have the connection in memory.\n if (currentNetwork === requestedNetwork) {\n return connectionFromState;\n }\n\n let canSwitch = true;\n if (this.actions.canSwitchNetworkTo) {\n canSwitch = this.actions.canSwitchNetworkTo({\n provider: this.provider,\n meta: this.meta,\n network: requestedNetwork || '',\n });\n }\n\n if (networkChanged && canSwitch && !!this.actions.switchNetwork) {\n await this.actions.switchNetwork({\n instance: this.provider,\n meta: this.meta,\n // TODO: Fix type error\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n network: requestedNetwork,\n newInstance: this.tryGetInstance.bind(this),\n });\n\n // We assume if we reach here (`switchNetwork` not throwing error), Switch successfully has been done.\n if (requestedNetwork !== this.state.network) {\n this.updateState({\n network,\n });\n }\n\n return {\n // Only network has been changed, so we reuse accounts from what we have already.\n accounts: connectionFromState.accounts,\n network: requestedNetwork,\n provider: this.provider,\n };\n }\n\n // If none of the above conditions didn't match, continute to connect.\n }\n\n // We are connecting to wallet for the first time\n\n // Trying to get wallet's instance, if it's not available, raise an error.\n const instance = await this.tryGetInstance({ network });\n\n // Instance exists, trying to connect\n this.updateState({\n connecting: true,\n });\n this.setInstalledAs(true);\n\n try {\n // eslint-disable-next-line no-var\n var connectResult = await this.actions.connect({\n instance,\n network: requestedNetwork || undefined,\n meta: this.meta || [],\n });\n } catch (e) {\n this.resetState();\n throw e;\n }\n\n this.updateState({\n connected: true,\n reachable: true,\n connecting: false,\n });\n\n // TODO: Handle accounts.length > 0\n\n // Inserting accounts into our state.\n let nextAccounts: string[] = [];\n let nextNetwork: Network | null | undefined = null;\n if (Array.isArray(connectResult)) {\n const accounts = connectResult.flatMap((blockchain) => {\n const chainId = blockchain.chainId || Networks.Unknown;\n // Try to map chainId with a Network, if not found, we use chainId directly.\n const network =\n getBlockChainNameFromId(chainId, this.meta) || Networks.Unknown;\n // TODO: second parameter should be `string` when we decided to open source the package.\n return accountAddressesWithNetwork(blockchain.accounts, network);\n });\n // Typescript can not detect we are filtering out null values:(\n nextAccounts = accounts.filter(Boolean);\n nextNetwork = requestedNetwork || this.options.config.defaultNetwork;\n } else {\n const chainId = connectResult.chainId || Networks.Unknown;\n const network =\n getBlockChainNameFromId(chainId, this.meta) || Networks.Unknown;\n // We fallback to current active network if `chainId` not provided.\n nextAccounts = accountAddressesWithNetwork(\n connectResult.accounts,\n network\n );\n nextNetwork = network;\n }\n\n if (nextAccounts.length > 0) {\n this.updateState({\n accounts: nextAccounts,\n network: nextNetwork,\n });\n }\n\n return {\n accounts: this.state.accounts,\n network: this.state.network,\n provider: this.provider,\n };\n }\n\n async disconnect() {\n this.resetState();\n\n if (this.actions.disconnect) {\n this.actions.disconnect({\n instance: this.provider,\n // On wallet connect, we need to destory the instance and get a whole new instance when we are going to connect\n destroyInstance: () => {\n this.setProvider(null);\n },\n });\n }\n }\n\n // This method is only used for auto connection\n async eagerConnect() {\n const instance = await this.tryGetInstance({ network: undefined });\n const { canEagerConnect } = this.actions;\n const error_message = `can't restore connection for ${this.options.config.type} .`;\n\n if (canEagerConnect) {\n // Check if we can eagerly connect to the wallet\n const eagerConnection = await canEagerConnect({\n instance: instance,\n meta: this.meta,\n });\n\n if (eagerConnection) {\n // Connect to wallet as usual\n return this.connect();\n }\n throw new Error(error_message);\n } else {\n throw new Error(error_message);\n }\n }\n\n getSigners(provider: any) {\n return this.actions.getSigners(provider);\n }\n getWalletInfo(allBlockChains: BlockchainMeta[]) {\n return this.actions.getWalletInfo(allBlockChains);\n }\n canSwitchNetworkTo(network: Network, provider: any) {\n const switchTo = this.actions.canSwitchNetworkTo;\n if (!switchTo) {\n return false;\n }\n\n return switchTo({\n network,\n meta: this.meta,\n provider,\n });\n }\n\n onInit() {\n if (!this.options.config.isAsyncInstance) {\n const instance = this.actions.getInstance();\n if (!!instance && !this.state.installed) {\n this.setInstalledAs(true);\n }\n } else if (needsCheckInstallation(this.options)) {\n this.actions.getInstance().then((data: any) => {\n if (data) {\n this.setInstalledAs(true);\n }\n });\n }\n }\n\n setProvider(value: any) {\n this.provider = value;\n if (!!value && !!this.actions.subscribe) {\n this.actions.subscribe({\n instance: value,\n state: this.state,\n meta: this.meta,\n connect: this.connect.bind(this),\n disconnect: this.disconnect.bind(this),\n updateAccounts: (accounts, chainId) => {\n let network = this.state.network;\n if (chainId) {\n network =\n getBlockChainNameFromId(chainId, this.meta) || Networks.Unknown;\n }\n\n const nextAccounts = accountAddressesWithNetwork(accounts, network);\n if (nextAccounts.length > 0) {\n this.updateState({\n accounts: nextAccounts,\n });\n }\n },\n updateChainId: this.updateChainId.bind(this),\n });\n }\n }\n\n setMeta(value: BlockchainMeta[]) {\n this.meta = value;\n }\n\n setHandler(handler: EventHandler) {\n this.options.handler = handler;\n }\n\n getState(): State {\n return this.state;\n }\n updateState(states: Partial<State>) {\n /*\n * We will notify handler after updating all the states.\n * Because when we call `handler` it will has latest states.\n */\n const updates: [Events, any][] = [];\n\n if (typeof states.connected !== 'undefined') {\n this.state.connected = states.connected;\n updates.push([Events.CONNECTED, states.connected]);\n }\n if (typeof states.connecting !== 'undefined') {\n this.state.connecting = states.connecting;\n updates.push([Events.CONNECTING, states.connecting]);\n }\n if (typeof states.reachable !== 'undefined') {\n this.state.reachable = states.reachable;\n updates.push([Events.REACHABLE, states.reachable]);\n }\n if (typeof states.installed !== 'undefined') {\n this.state.installed = states.installed;\n updates.push([Events.INSTALLED, states.installed]);\n }\n if (typeof states.accounts !== 'undefined') {\n this.state.accounts = states.accounts;\n updates.push([Events.ACCOUNTS, states.accounts]);\n }\n if (typeof states.network !== 'undefined') {\n this.state.network = states.network;\n updates.push([Events.NETWORK, states.network]);\n }\n\n const state = this.getState();\n updates.forEach(([name, value]) => {\n this.options.handler(\n this.options.config.type,\n name,\n value,\n state,\n this.meta\n );\n });\n }\n\n resetState() {\n this.updateState({\n connected: false,\n connecting: false,\n reachable: false,\n accounts: null,\n network: null,\n });\n }\n\n private async getConnectionFromState() {\n // Already connected, so we return provider that we have in memory.\n\n /*\n * For switching network on Trust Wallet (WalletConnect),\n * We only kill the session (and not restting the whole state)\n * So we are relying on this.provider for achieving this functionality.\n */\n if (this.state.connected && !!this.provider) {\n return {\n accounts: this.state.accounts,\n network: this.state.network,\n provider: this.provider,\n };\n }\n\n return null;\n }\n\n private updateChainId(chainId: string | number) {\n const network = chainId\n ? getBlockChainNameFromId(chainId, this.meta)\n : Networks.Unknown;\n\n this.updateState({\n network,\n });\n }\n\n private setInstalledAs(value: boolean) {\n if (!needsCheckInstallation(this.options) && value === false) {\n return;\n }\n\n this.updateState({\n installed: value,\n });\n }\n private async tryGetInstance({\n network,\n force,\n }: {\n network?: Network;\n force?: boolean;\n }) {\n let instance = null;\n /*\n * For switching network on Trust Wallet (WalletConnect),\n * We only kill the session (and not restting the whole state)\n * So we are relying on this.provider for achieving this functionality.\n */\n this.setProvider(null);\n if (this.options.config.isAsyncInstance) {\n // Trying to connect\n const instanceOptions: GetInstanceOptions = {\n currentProvider: this.provider,\n meta: this.meta,\n force: force || false,\n updateChainId: this.updateChainId.bind(this),\n getState: this.getState.bind(this),\n };\n\n if (network) {\n instanceOptions.network = network;\n }\n instance = await this.actions.getInstance(instanceOptions);\n } else {\n instance = this.actions.getInstance();\n }\n\n if (!instance) {\n this.setInstalledAs(false);\n this.resetState();\n\n const error_message = `It seems your selected wallet (${this.options.config.type}) isn't installed.`;\n throw new Error(error_message);\n }\n\n this.setProvider(instance);\n return instance;\n }\n}\n\nexport default Wallet;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["Events", "Persistor", "name", "item", "value", "__name", "formatAddressWithNetwork", "address", "network", "__name", "accountAddressesWithNetwork", "addresses", "readAccountAddress", "addressWithNetwork", "needsCheckInstallation", "options", "checkInstallation", "getBlockChainNameFromId", "Networks", "Wallet", "options", "actions", "needsCheckInstallation", "network", "connectionFromState", "currentNetwork", "requestedNetwork", "networkChanged", "canSwitch", "instance", "connectResult", "e", "nextAccounts", "nextNetwork", "blockchain", "chainId", "Networks", "getBlockChainNameFromId", "accountAddressesWithNetwork", "canEagerConnect", "error_message", "provider", "allBlockChains", "switchTo", "data", "value", "accounts", "handler", "states", "updates", "state", "name", "force", "instanceOptions", "__name", "wallet_default"]
|
|
7
7
|
}
|
package/dist/types.d.ts
CHANGED
|
@@ -63,7 +63,6 @@ export type SwitchNetwork = (options: {
|
|
|
63
63
|
network: Network;
|
|
64
64
|
meta: BlockchainMeta[];
|
|
65
65
|
newInstance?: TryGetInstance;
|
|
66
|
-
getState?: () => WalletState;
|
|
67
66
|
}) => Promise<void>;
|
|
68
67
|
export type Suggest = (options: {
|
|
69
68
|
instance: any;
|
|
@@ -96,7 +95,6 @@ export interface WalletConfig {
|
|
|
96
95
|
defaultNetwork?: Network;
|
|
97
96
|
checkInstallation?: boolean;
|
|
98
97
|
isAsyncInstance?: boolean;
|
|
99
|
-
isAsyncSwitchNetwork?: boolean;
|
|
100
98
|
}
|
|
101
99
|
export type WalletProviders = Map<WalletType, {
|
|
102
100
|
actions: WalletActions;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/wallet.d.ts
CHANGED
|
@@ -2,11 +2,7 @@ import type { WalletActions, WalletConfig } from './types';
|
|
|
2
2
|
import type { Network, WalletType } from '@rango-dev/wallets-shared';
|
|
3
3
|
import type { BlockchainMeta } from 'rango-types';
|
|
4
4
|
import { Events } from './types';
|
|
5
|
-
export type EventHandler = (type: WalletType, event: Events, value: any, coreState: State,
|
|
6
|
-
export type EventInfo = {
|
|
7
|
-
supportedBlockchains: BlockchainMeta[];
|
|
8
|
-
isContractWallet: boolean;
|
|
9
|
-
};
|
|
5
|
+
export type EventHandler = (type: WalletType, event: Events, value: any, coreState: State, supportedChains: BlockchainMeta[]) => void;
|
|
10
6
|
export interface State {
|
|
11
7
|
connected: boolean;
|
|
12
8
|
connecting: boolean;
|
|
@@ -20,11 +16,11 @@ export interface Options {
|
|
|
20
16
|
handler: EventHandler;
|
|
21
17
|
}
|
|
22
18
|
declare class Wallet<InstanceType = any> {
|
|
23
|
-
provider: InstanceType | null;
|
|
24
19
|
private actions;
|
|
25
20
|
private state;
|
|
26
21
|
private options;
|
|
27
|
-
private
|
|
22
|
+
private meta;
|
|
23
|
+
provider: InstanceType | null;
|
|
28
24
|
constructor(options: Options, actions: WalletActions);
|
|
29
25
|
suggestAndConnect(network: Network): Promise<{
|
|
30
26
|
accounts: string[] | null;
|
|
@@ -47,7 +43,7 @@ declare class Wallet<InstanceType = any> {
|
|
|
47
43
|
canSwitchNetworkTo(network: Network, provider: any): boolean;
|
|
48
44
|
onInit(): void;
|
|
49
45
|
setProvider(value: any): void;
|
|
50
|
-
|
|
46
|
+
setMeta(value: BlockchainMeta[]): void;
|
|
51
47
|
setHandler(handler: EventHandler): void;
|
|
52
48
|
getState(): State;
|
|
53
49
|
updateState(states: Partial<State>): void;
|
package/dist/wallet.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAsB,aAAa,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC/E,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAKlD,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,MAAM,MAAM,YAAY,GAAG,CACzB,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,GAAG,EACV,SAAS,EAAE,KAAK,EAChB,
|
|
1
|
+
{"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAsB,aAAa,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC/E,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAKlD,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,MAAM,MAAM,YAAY,GAAG,CACzB,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,GAAG,EACV,SAAS,EAAE,KAAK,EAChB,eAAe,EAAE,cAAc,EAAE,KAC9B,IAAI,CAAC;AAEV,MAAM,WAAW,KAAK;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,YAAY,CAAC;CACvB;AAED,cAAM,MAAM,CAAC,YAAY,GAAG,GAAG;IAC7B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,IAAI,CAAmB;IACxB,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;gBAEzB,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa;IAmB9C,iBAAiB,CAAC,OAAO,EAAE,OAAO;;;;;IAWlC,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO;;;;;IAuIzB,UAAU;IAeV,YAAY;;;;;IAsBlB,UAAU,CAAC,QAAQ,EAAE,GAAG;IAGxB,aAAa,CAAC,cAAc,EAAE,cAAc,EAAE;IAG9C,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG;IAalD,MAAM;IAeN,WAAW,CAAC,KAAK,EAAE,GAAG;IA4BtB,OAAO,CAAC,KAAK,EAAE,cAAc,EAAE;IAI/B,UAAU,CAAC,OAAO,EAAE,YAAY;IAIhC,QAAQ,IAAI,KAAK;IAGjB,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC;IA4ClC,UAAU;YAUI,sBAAsB;IAmBpC,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,cAAc;YASR,cAAc;CA2C7B;AAED,eAAe,MAAM,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rango-dev/wallets-core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.24.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
|
-
"
|
|
6
|
+
"module": "./dist/index.js",
|
|
7
7
|
"main": "./dist/index.js",
|
|
8
8
|
"exports": {
|
|
9
9
|
".": "./dist/index.js"
|
|
@@ -15,7 +15,6 @@
|
|
|
15
15
|
],
|
|
16
16
|
"scripts": {
|
|
17
17
|
"build": "node ../../scripts/build/command.mjs --path wallets/core",
|
|
18
|
-
"ts-check": "tsc --declaration --emitDeclarationOnly -p ./tsconfig.json",
|
|
19
18
|
"clean": "rimraf dist",
|
|
20
19
|
"format": "prettier --write '{.,src}/**/*.{ts,tsx}'",
|
|
21
20
|
"lint": "eslint \"**/*.{ts,tsx}\" --ignore-path ../../.eslintignore"
|
|
@@ -26,8 +25,8 @@
|
|
|
26
25
|
"react-dom": "^17.0.0 || ^18.0.0"
|
|
27
26
|
},
|
|
28
27
|
"dependencies": {
|
|
29
|
-
"@rango-dev/wallets-shared": "^0.
|
|
30
|
-
"rango-types": "^0.1.
|
|
28
|
+
"@rango-dev/wallets-shared": "^0.23.0",
|
|
29
|
+
"rango-types": "^0.1.46"
|
|
31
30
|
},
|
|
32
31
|
"publishConfig": {
|
|
33
32
|
"access": "public"
|
package/src/types.ts
CHANGED
|
@@ -81,7 +81,6 @@ export type SwitchNetwork = (options: {
|
|
|
81
81
|
network: Network;
|
|
82
82
|
meta: BlockchainMeta[];
|
|
83
83
|
newInstance?: TryGetInstance;
|
|
84
|
-
getState?: () => WalletState;
|
|
85
84
|
}) => Promise<void>;
|
|
86
85
|
|
|
87
86
|
export type Suggest = (options: {
|
|
@@ -122,7 +121,6 @@ export interface WalletConfig {
|
|
|
122
121
|
defaultNetwork?: Network;
|
|
123
122
|
checkInstallation?: boolean;
|
|
124
123
|
isAsyncInstance?: boolean;
|
|
125
|
-
isAsyncSwitchNetwork?: boolean;
|
|
126
124
|
}
|
|
127
125
|
|
|
128
126
|
export type WalletProviders = Map<
|
package/src/wallet.ts
CHANGED
|
@@ -12,14 +12,9 @@ export type EventHandler = (
|
|
|
12
12
|
event: Events,
|
|
13
13
|
value: any,
|
|
14
14
|
coreState: State,
|
|
15
|
-
|
|
15
|
+
supportedChains: BlockchainMeta[]
|
|
16
16
|
) => void;
|
|
17
17
|
|
|
18
|
-
export type EventInfo = {
|
|
19
|
-
supportedBlockchains: BlockchainMeta[];
|
|
20
|
-
isContractWallet: boolean;
|
|
21
|
-
};
|
|
22
|
-
|
|
23
18
|
export interface State {
|
|
24
19
|
connected: boolean;
|
|
25
20
|
connecting: boolean;
|
|
@@ -35,20 +30,17 @@ export interface Options {
|
|
|
35
30
|
}
|
|
36
31
|
|
|
37
32
|
class Wallet<InstanceType = any> {
|
|
38
|
-
public provider: InstanceType | null;
|
|
39
33
|
private actions: WalletActions;
|
|
40
34
|
private state: State;
|
|
41
35
|
private options: Options;
|
|
42
|
-
private
|
|
36
|
+
private meta: BlockchainMeta[];
|
|
37
|
+
public provider: InstanceType | null;
|
|
43
38
|
|
|
44
39
|
constructor(options: Options, actions: WalletActions) {
|
|
45
40
|
this.actions = actions;
|
|
46
41
|
this.options = options;
|
|
47
42
|
this.provider = null;
|
|
48
|
-
this.
|
|
49
|
-
supportedBlockchains: [],
|
|
50
|
-
isContractWallet: false,
|
|
51
|
-
};
|
|
43
|
+
this.meta = [];
|
|
52
44
|
this.state = {
|
|
53
45
|
connected: false,
|
|
54
46
|
connecting: false,
|
|
@@ -63,12 +55,11 @@ class Wallet<InstanceType = any> {
|
|
|
63
55
|
this.setInstalledAs(true);
|
|
64
56
|
}
|
|
65
57
|
}
|
|
66
|
-
|
|
67
58
|
async suggestAndConnect(network: Network) {
|
|
68
59
|
if (this.actions.suggest) {
|
|
69
60
|
await this.actions.suggest({
|
|
70
61
|
instance: this.provider,
|
|
71
|
-
meta: this.
|
|
62
|
+
meta: this.meta,
|
|
72
63
|
network,
|
|
73
64
|
});
|
|
74
65
|
}
|
|
@@ -104,7 +95,7 @@ class Wallet<InstanceType = any> {
|
|
|
104
95
|
if (this.actions.canSwitchNetworkTo) {
|
|
105
96
|
canSwitch = this.actions.canSwitchNetworkTo({
|
|
106
97
|
provider: this.provider,
|
|
107
|
-
meta: this.
|
|
98
|
+
meta: this.meta,
|
|
108
99
|
network: requestedNetwork || '',
|
|
109
100
|
});
|
|
110
101
|
}
|
|
@@ -112,24 +103,16 @@ class Wallet<InstanceType = any> {
|
|
|
112
103
|
if (networkChanged && canSwitch && !!this.actions.switchNetwork) {
|
|
113
104
|
await this.actions.switchNetwork({
|
|
114
105
|
instance: this.provider,
|
|
115
|
-
meta: this.
|
|
106
|
+
meta: this.meta,
|
|
116
107
|
// TODO: Fix type error
|
|
117
108
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
118
109
|
// @ts-ignore
|
|
119
110
|
network: requestedNetwork,
|
|
120
111
|
newInstance: this.tryGetInstance.bind(this),
|
|
121
|
-
getState: this.getState.bind(this),
|
|
122
112
|
});
|
|
123
113
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
* But for providers with async switch network like wallet-connect, we need to wait for chain change
|
|
127
|
-
* event before changing network.
|
|
128
|
-
*/
|
|
129
|
-
if (
|
|
130
|
-
requestedNetwork !== this.state.network &&
|
|
131
|
-
!this.options.config.isAsyncSwitchNetwork
|
|
132
|
-
) {
|
|
114
|
+
// We assume if we reach here (`switchNetwork` not throwing error), Switch successfully has been done.
|
|
115
|
+
if (requestedNetwork !== this.state.network) {
|
|
133
116
|
this.updateState({
|
|
134
117
|
network,
|
|
135
118
|
});
|
|
@@ -162,7 +145,7 @@ class Wallet<InstanceType = any> {
|
|
|
162
145
|
var connectResult = await this.actions.connect({
|
|
163
146
|
instance,
|
|
164
147
|
network: requestedNetwork || undefined,
|
|
165
|
-
meta: this.
|
|
148
|
+
meta: this.meta || [],
|
|
166
149
|
});
|
|
167
150
|
} catch (e) {
|
|
168
151
|
this.resetState();
|
|
@@ -185,8 +168,7 @@ class Wallet<InstanceType = any> {
|
|
|
185
168
|
const chainId = blockchain.chainId || Networks.Unknown;
|
|
186
169
|
// Try to map chainId with a Network, if not found, we use chainId directly.
|
|
187
170
|
const network =
|
|
188
|
-
getBlockChainNameFromId(chainId, this.
|
|
189
|
-
Networks.Unknown;
|
|
171
|
+
getBlockChainNameFromId(chainId, this.meta) || Networks.Unknown;
|
|
190
172
|
// TODO: second parameter should be `string` when we decided to open source the package.
|
|
191
173
|
return accountAddressesWithNetwork(blockchain.accounts, network);
|
|
192
174
|
});
|
|
@@ -196,9 +178,7 @@ class Wallet<InstanceType = any> {
|
|
|
196
178
|
} else {
|
|
197
179
|
const chainId = connectResult.chainId || Networks.Unknown;
|
|
198
180
|
const network =
|
|
199
|
-
getBlockChainNameFromId(chainId, this.
|
|
200
|
-
Networks.Unknown;
|
|
201
|
-
|
|
181
|
+
getBlockChainNameFromId(chainId, this.meta) || Networks.Unknown;
|
|
202
182
|
// We fallback to current active network if `chainId` not provided.
|
|
203
183
|
nextAccounts = accountAddressesWithNetwork(
|
|
204
184
|
connectResult.accounts,
|
|
@@ -225,7 +205,7 @@ class Wallet<InstanceType = any> {
|
|
|
225
205
|
this.resetState();
|
|
226
206
|
|
|
227
207
|
if (this.actions.disconnect) {
|
|
228
|
-
|
|
208
|
+
this.actions.disconnect({
|
|
229
209
|
instance: this.provider,
|
|
230
210
|
// On wallet connect, we need to destory the instance and get a whole new instance when we are going to connect
|
|
231
211
|
destroyInstance: () => {
|
|
@@ -245,7 +225,7 @@ class Wallet<InstanceType = any> {
|
|
|
245
225
|
// Check if we can eagerly connect to the wallet
|
|
246
226
|
const eagerConnection = await canEagerConnect({
|
|
247
227
|
instance: instance,
|
|
248
|
-
meta: this.
|
|
228
|
+
meta: this.meta,
|
|
249
229
|
});
|
|
250
230
|
|
|
251
231
|
if (eagerConnection) {
|
|
@@ -272,7 +252,7 @@ class Wallet<InstanceType = any> {
|
|
|
272
252
|
|
|
273
253
|
return switchTo({
|
|
274
254
|
network,
|
|
275
|
-
meta: this.
|
|
255
|
+
meta: this.meta,
|
|
276
256
|
provider,
|
|
277
257
|
});
|
|
278
258
|
}
|
|
@@ -298,17 +278,14 @@ class Wallet<InstanceType = any> {
|
|
|
298
278
|
this.actions.subscribe({
|
|
299
279
|
instance: value,
|
|
300
280
|
state: this.state,
|
|
301
|
-
meta: this.
|
|
281
|
+
meta: this.meta,
|
|
302
282
|
connect: this.connect.bind(this),
|
|
303
283
|
disconnect: this.disconnect.bind(this),
|
|
304
284
|
updateAccounts: (accounts, chainId) => {
|
|
305
285
|
let network = this.state.network;
|
|
306
286
|
if (chainId) {
|
|
307
287
|
network =
|
|
308
|
-
getBlockChainNameFromId(
|
|
309
|
-
chainId,
|
|
310
|
-
this.info.supportedBlockchains
|
|
311
|
-
) || Networks.Unknown;
|
|
288
|
+
getBlockChainNameFromId(chainId, this.meta) || Networks.Unknown;
|
|
312
289
|
}
|
|
313
290
|
|
|
314
291
|
const nextAccounts = accountAddressesWithNetwork(accounts, network);
|
|
@@ -323,13 +300,8 @@ class Wallet<InstanceType = any> {
|
|
|
323
300
|
}
|
|
324
301
|
}
|
|
325
302
|
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
this.info.supportedBlockchains = info.supportedBlockchains;
|
|
329
|
-
}
|
|
330
|
-
if (typeof info.isContractWallet !== 'undefined') {
|
|
331
|
-
this.info.isContractWallet = info.isContractWallet;
|
|
332
|
-
}
|
|
303
|
+
setMeta(value: BlockchainMeta[]) {
|
|
304
|
+
this.meta = value;
|
|
333
305
|
}
|
|
334
306
|
|
|
335
307
|
setHandler(handler: EventHandler) {
|
|
@@ -339,7 +311,6 @@ class Wallet<InstanceType = any> {
|
|
|
339
311
|
getState(): State {
|
|
340
312
|
return this.state;
|
|
341
313
|
}
|
|
342
|
-
|
|
343
314
|
updateState(states: Partial<State>) {
|
|
344
315
|
/*
|
|
345
316
|
* We will notify handler after updating all the states.
|
|
@@ -374,16 +345,12 @@ class Wallet<InstanceType = any> {
|
|
|
374
345
|
|
|
375
346
|
const state = this.getState();
|
|
376
347
|
updates.forEach(([name, value]) => {
|
|
377
|
-
const eventInfo: EventInfo = {
|
|
378
|
-
supportedBlockchains: this.info.supportedBlockchains,
|
|
379
|
-
isContractWallet: this.info.isContractWallet,
|
|
380
|
-
};
|
|
381
348
|
this.options.handler(
|
|
382
349
|
this.options.config.type,
|
|
383
350
|
name,
|
|
384
351
|
value,
|
|
385
352
|
state,
|
|
386
|
-
|
|
353
|
+
this.meta
|
|
387
354
|
);
|
|
388
355
|
});
|
|
389
356
|
}
|
|
@@ -419,7 +386,7 @@ class Wallet<InstanceType = any> {
|
|
|
419
386
|
|
|
420
387
|
private updateChainId(chainId: string | number) {
|
|
421
388
|
const network = chainId
|
|
422
|
-
? getBlockChainNameFromId(chainId, this.
|
|
389
|
+
? getBlockChainNameFromId(chainId, this.meta)
|
|
423
390
|
: Networks.Unknown;
|
|
424
391
|
|
|
425
392
|
this.updateState({
|
|
@@ -436,7 +403,6 @@ class Wallet<InstanceType = any> {
|
|
|
436
403
|
installed: value,
|
|
437
404
|
});
|
|
438
405
|
}
|
|
439
|
-
// eslint-disable-next-line destructuring/in-methods-params
|
|
440
406
|
private async tryGetInstance({
|
|
441
407
|
network,
|
|
442
408
|
force,
|
|
@@ -455,7 +421,7 @@ class Wallet<InstanceType = any> {
|
|
|
455
421
|
// Trying to connect
|
|
456
422
|
const instanceOptions: GetInstanceOptions = {
|
|
457
423
|
currentProvider: this.provider,
|
|
458
|
-
meta: this.
|
|
424
|
+
meta: this.meta,
|
|
459
425
|
force: force || false,
|
|
460
426
|
updateChainId: this.updateChainId.bind(this),
|
|
461
427
|
getState: this.getState.bind(this),
|