@rango-dev/wallets-core 0.1.11-next.76 → 0.1.11-next.78
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/helpers.d.ts +2 -1
- package/dist/helpers.d.ts.map +1 -1
- package/dist/types.d.ts +4 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/wallet.d.ts +3 -2
- package/dist/wallet.d.ts.map +1 -1
- package/dist/wallets-core.cjs.development.js +2 -1
- package/dist/wallets-core.cjs.development.js.map +1 -1
- package/dist/wallets-core.cjs.production.min.js +1 -1
- package/dist/wallets-core.cjs.production.min.js.map +1 -1
- package/dist/wallets-core.esm.js +2 -1
- package/dist/wallets-core.esm.js.map +1 -1
- package/package.json +5 -4
- package/src/helpers.ts +1 -2
- package/src/types.ts +4 -9
- package/src/wallet.ts +1 -1
package/dist/helpers.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { Network, WalletType
|
|
1
|
+
import { Network, WalletType } from '@rango-dev/wallets-shared';
|
|
2
2
|
import { State, WalletProvider, WalletProviders } from './types';
|
|
3
3
|
import { Options, State as WalletState } from './wallet';
|
|
4
|
+
import { BlockchainMeta } from 'rango-types';
|
|
4
5
|
export declare function choose(wallets: any[], type: WalletType): any | null;
|
|
5
6
|
export declare const defaultWalletState: WalletState;
|
|
6
7
|
export declare function state_reducer(state: State, action: any): State;
|
package/dist/helpers.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["src/helpers.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,OAAO,EACP,UAAU,
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["src/helpers.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,OAAO,EACP,UAAU,EACX,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,UAAU,CAAC;AACzD,OAAO,EAAE,cAAc,EAAmB,MAAM,aAAa,CAAC;AAE9D,wBAAgB,MAAM,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,UAAU,GAAG,GAAG,GAAG,IAAI,CAEnE;AAED,eAAO,MAAM,kBAAkB,EAAE,WAOhC,CAAC;AAEF,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,SA0BtD;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,UAGzB;AAED,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,EAC1B,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,YAOzB;AAED,wBAAgB,kBAAkB,CAAC,kBAAkB,EAAE,MAAM,GAAG;IAC9D,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;CAClB,CAOA;AAED,wBAAgB,gBAAgB,CAAC,cAAc,EAAE,KAAK,GAAG,UAAU,EAAE,CAQpE;AAED,wBAAgB,gBAAgB,CAAC,cAAc,EAAE,KAAK,GAAG,UAAU,EAAE,CAIpE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,eAAe,CAY5E;AAGD,wBAAgB,OAAO,CAAC,EAAE,EAAE,QAAQ,WAEnC;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,WAGtD;AAOD,wBAAgB,gCAAgC,CAAC,WAAW,EAAE,UAAU,WAEvE;AAED,wBAAgB,qBAAqB,CACnC,eAAe,EAAE,cAAc,EAAE,EACjC,QAAQ,EAAE,GAAG,EACb,IAAI,EAAE,UAAU,OAejB"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { PropsWithChildren } from 'react';
|
|
2
|
-
import { Network, WalletType,
|
|
2
|
+
import { Network, WalletType, WalletInfo } from '@rango-dev/wallets-shared';
|
|
3
3
|
import { EventHandler as WalletEventHandler, State as WalletState } from './wallet';
|
|
4
|
+
import { SignerFactory, BlockchainMeta } from 'rango-types';
|
|
4
5
|
export declare type State = {
|
|
5
6
|
[key in WalletType]?: WalletState;
|
|
6
7
|
};
|
|
@@ -19,7 +20,7 @@ export declare type ProviderContext = {
|
|
|
19
20
|
state(type: WalletType): WalletState;
|
|
20
21
|
canSwitchNetworkTo(type: WalletType, network: Network): boolean;
|
|
21
22
|
providers(): Providers;
|
|
22
|
-
getSigners(type: WalletType):
|
|
23
|
+
getSigners(type: WalletType): SignerFactory;
|
|
23
24
|
getWalletInfo(type: WalletType): WalletInfo;
|
|
24
25
|
};
|
|
25
26
|
export declare type ProviderProps = PropsWithChildren<{
|
|
@@ -81,7 +82,7 @@ export interface WalletActions {
|
|
|
81
82
|
disconnect?: Disconnect;
|
|
82
83
|
subscribe?: Subscribe;
|
|
83
84
|
switchNetwork?: SwitchNetwork;
|
|
84
|
-
getSigners: (provider: any) =>
|
|
85
|
+
getSigners: (provider: any) => SignerFactory;
|
|
85
86
|
canSwitchNetworkTo?: CanSwitchNetwork;
|
|
86
87
|
getWalletInfo(allBlockChains: BlockchainMeta[]): WalletInfo;
|
|
87
88
|
}
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/wallet.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Network, WalletType } from '@rango-dev/wallets-shared';
|
|
2
2
|
import { Events, WalletActions, WalletConfig } from './types';
|
|
3
|
+
import { BlockchainMeta } from 'rango-types';
|
|
3
4
|
export declare type EventHandler = (type: WalletType, event: Events, value: any, coreState: State, supportedChains: BlockchainMeta[]) => void;
|
|
4
5
|
export interface State {
|
|
5
6
|
connected: boolean;
|
|
@@ -35,7 +36,7 @@ declare class Wallet<InstanceType = any> {
|
|
|
35
36
|
provider: InstanceType | null;
|
|
36
37
|
}>;
|
|
37
38
|
disconnect(): Promise<void>;
|
|
38
|
-
getSigners(provider: any): import("
|
|
39
|
+
getSigners(provider: any): import("rango-types/lib").SignerFactory;
|
|
39
40
|
getWalletInfo(allBlockChains: BlockchainMeta[]): import("@rango-dev/wallets-shared").WalletInfo;
|
|
40
41
|
canSwitchNetworkTo(network: Network): boolean;
|
|
41
42
|
onInit(): 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,
|
|
1
|
+
{"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["src/wallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,OAAO,EACP,UAAU,EACX,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,MAAM,EAEN,aAAa,EACb,YAAY,EACb,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,oBAAY,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;IAoB9C,eAAe;;;;;IAiBf,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO;;;;;;;;;IAsHzB,UAAU;IAchB,UAAU,CAAC,QAAQ,EAAE,GAAG;IAGxB,aAAa,CAAC,cAAc,EAAE,cAAc,EAAE;IAG9C,kBAAkB,CAAC,OAAO,EAAE,OAAO;IAUnC,MAAM;IASN,WAAW,CAAC,KAAK,EAAE,GAAG;IAoCtB,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;IAsClC,UAAU;IAUV,OAAO,CAAC,cAAc;YAOR,cAAc;CAyC7B;AAED,eAAe,MAAM,CAAC"}
|
|
@@ -6,6 +6,7 @@ function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'defau
|
|
|
6
6
|
|
|
7
7
|
var WalletConnectProvider = _interopDefault(require('@walletconnect/ethereum-provider'));
|
|
8
8
|
var walletsShared = require('@rango-dev/wallets-shared');
|
|
9
|
+
var rangoTypes = require('rango-types');
|
|
9
10
|
var React = require('react');
|
|
10
11
|
var React__default = _interopDefault(React);
|
|
11
12
|
|
|
@@ -460,7 +461,7 @@ function isWalletDerivedFromWalletConnect(wallet_type) {
|
|
|
460
461
|
}
|
|
461
462
|
function getComptaibleProvider(supportedChains, provider, type) {
|
|
462
463
|
if (isWalletDerivedFromWalletConnect(type)) {
|
|
463
|
-
var evmBlockchains = supportedChains.filter(
|
|
464
|
+
var evmBlockchains = supportedChains.filter(rangoTypes.isEvmBlockchain);
|
|
464
465
|
var rpcUrls = walletsShared.evmChainsToRpcMap(walletsShared.convertEvmBlockchainMetaToEvmChainInfo(evmBlockchains));
|
|
465
466
|
return new WalletConnectProvider({
|
|
466
467
|
qrcode: false,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallets-core.cjs.development.js","sources":["../src/helpers.ts","../src/types.ts","../src/wallet.ts","../src/provider.tsx"],"sourcesContent":["import WalletConnectProvider from '@walletconnect/ethereum-provider';\nimport {\n convertEvmBlockchainMetaToEvmChainInfo,\n evmChainsToRpcMap,\n Network,\n WalletType,\n isEvmBlockchain,\n BlockchainMeta,\n} from '@rango-dev/wallets-shared';\nimport { State, WalletProvider, WalletProviders } from './types';\nimport { Options, State as WalletState } from './wallet';\n\nexport function choose(wallets: any[], type: WalletType): any | null {\n return wallets.find((wallet) => wallet.type === type) || null;\n}\n\nexport const defaultWalletState: WalletState = {\n connected: false,\n connecting: false,\n reachable: false,\n installed: false,\n accounts: null,\n network: null,\n};\n\nexport function state_reducer(state: State, action: any) {\n if (action.type === 'new_state') {\n // TODO fix problem and remove ts-ignore\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const target_wallet = state[action.wallet];\n if (!target_wallet) {\n return {\n ...state,\n [action.wallet]: {\n ...defaultWalletState,\n [action.name]: action.value,\n },\n };\n }\n\n return {\n ...state,\n [action.wallet]: {\n ...target_wallet,\n [action.name]: action.value,\n },\n };\n }\n\n return state;\n}\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: network as Network,\n address,\n };\n}\n\nexport function connectedWallets(providersState: State): WalletType[] {\n return Object.entries(providersState)\n .filter(([, wallet_state]) => {\n return wallet_state?.connected;\n })\n .map(([type]) => {\n return type as WalletType;\n });\n}\n\nexport function availableWallets(providersState: State): WalletType[] {\n return Object.entries(providersState).map(([type]) => {\n return type as WalletType;\n });\n}\n\nexport function checkWalletProviders(list: WalletProvider[]): WalletProviders {\n const wallets: WalletProviders = new Map();\n\n list.forEach((provider) => {\n const { config, ...actions } = provider;\n wallets.set(config.type, {\n actions,\n config,\n });\n });\n\n return wallets;\n}\n\n/* eslint-disable @typescript-eslint/ban-types */\nexport function isAsync(fn: Function) {\n return fn?.constructor?.name === 'AsyncFunction';\n}\n\nexport function needsCheckInstallation(options: Options) {\n const { checkInstallation = true } = options.config;\n return checkInstallation;\n}\n\n/*\n WalletConnect instance is not compatible with ethers.providers.Web3Provider,\n Here we are returning a comptable instance, instead of the original one. \n*/\n\nexport function isWalletDerivedFromWalletConnect(wallet_type: WalletType) {\n return wallet_type === WalletType.WALLET_CONNECT;\n}\n\nexport function getComptaibleProvider(\n supportedChains: BlockchainMeta[],\n provider: any,\n type: WalletType\n) {\n if (isWalletDerivedFromWalletConnect(type)) {\n const evmBlockchains = supportedChains.filter(isEvmBlockchain);\n const rpcUrls = evmChainsToRpcMap(\n convertEvmBlockchainMetaToEvmChainInfo(evmBlockchains)\n );\n return new WalletConnectProvider({\n qrcode: false,\n rpc: rpcUrls,\n connector: provider,\n chainId: provider.chainId,\n });\n }\n return provider;\n}\n","import { PropsWithChildren } from 'react';\nimport {\n Network,\n WalletType,\n BlockchainMeta,\n WalletInfo,\n WalletSigners,\n} from '@rango-dev/wallets-shared';\nimport {\n EventHandler as WalletEventHandler,\n State as WalletState,\n} from './wallet';\n\nexport type State = {\n [key in WalletType]?: WalletState;\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 type ProviderContext = {\n connect(type: WalletType, network?: Network): Promise<ConnectResult>;\n disconnect(type: WalletType): Promise<void>;\n disconnectAll(): Promise<PromiseSettledResult<any>[]>;\n state(type: WalletType): WalletState;\n canSwitchNetworkTo(type: WalletType, network: Network): boolean;\n providers(): Providers;\n getSigners(type: WalletType): WalletSigners;\n getWalletInfo(type: WalletType): WalletInfo;\n};\n\nexport type ProviderProps = PropsWithChildren<{\n onUpdateState?: WalletEventHandler;\n allBlockChains?: BlockchainMeta[];\n providers: WalletProvider[];\n}>;\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 force?: boolean;\n};\nexport type GetInstance =\n | (() => any)\n | ((options: GetInstanceOptions) => Promise<any>);\nexport type TryGetInstance =\n | (() => any)\n | ((options: Pick<GetInstanceOptions, 'force' | 'network'>) => Promise<any>);\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>;\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 CanSwitchNetwork = (options: {\n network: Network;\n meta: BlockchainMeta[];\n}) => boolean;\n\nexport interface WalletActions {\n connect: Connect;\n getInstance: any;\n disconnect?: Disconnect;\n subscribe?: Subscribe;\n // eagerConnect, // optional?\n // unsubscribe, // coupled to subscribe.\n\n // Optional, but should be provided at the same time.\n switchNetwork?: SwitchNetwork;\n getSigners: (provider: any) => WalletSigners;\n canSwitchNetworkTo?: CanSwitchNetwork;\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 WalletProvider = { config: WalletConfig } & WalletActions;\n","import {\n BlockchainMeta,\n getBlockChainNameFromId,\n Network,\n WalletType,\n} from '@rango-dev/wallets-shared';\nimport { accountAddressesWithNetwork, needsCheckInstallation } from './helpers';\nimport {\n Events,\n GetInstanceOptions,\n WalletActions,\n WalletConfig,\n} 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\n async eagerConnection() {\n // Already connected, so we return provider that we have in memory.\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 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 // TODO: call actions.eagerConnection\n return null;\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 eagerConnection = await this.eagerConnection();\n const currentNetwork = this.state.network;\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 const requestedNetwork =\n network || currentNetwork || this.options.config.defaultNetwork;\n\n if (!!eagerConnection) {\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 eagerConnection;\n }\n if (networkChanged && !!this.actions.switchNetwork) {\n await this.actions.switchNetwork({\n instance: this.provider,\n meta: this.meta,\n // TODO: Fix type error\n // @ts-ignore\n network: requestedNetwork,\n newInstance: this.tryGetInstance.bind(this),\n });\n\n return {\n // Only network has been changed, so we reuse accounts from what we have already.\n accounts: eagerConnection.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 || Network.Unknown;\n // Try to map chainId with a Network, if not found, we use chainId directly.\n const network =\n getBlockChainNameFromId(chainId, this.meta) || Network.Unknown;\n // TODO: second parameter should be `string` when we decided to open source the package.\n return accountAddressesWithNetwork(\n blockchain.accounts,\n network as Network\n );\n });\n // Typescript can not detect we are filtering out null values:(\n nextAccounts = accounts.filter(Boolean) as string[];\n nextNetwork = requestedNetwork || this.options.config.defaultNetwork;\n } else {\n const chainId = connectResult.chainId || Network.Unknown;\n const network =\n getBlockChainNameFromId(chainId, this.meta) || Network.Unknown;\n // We fallback to current active network if `chainId` not provided.\n nextAccounts = accountAddressesWithNetwork(\n connectResult.accounts,\n network as Network\n );\n nextNetwork = network as 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 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) {\n const switchTo = this.actions.canSwitchNetworkTo;\n if (!switchTo) return false;\n\n return switchTo({\n network,\n meta: this.meta,\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 }\n }\n\n setProvider(value: any) {\n this.provider = value;\n\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) || Network.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: (chainId) => {\n const network = !!chainId\n ? getBlockChainNameFromId(chainId, this.meta)\n : Network.Unknown;\n this.updateState({\n network,\n });\n },\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 // We will notify handler after updating all the states.\n // Because when we call `handler` it will has latest states.\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.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 setInstalledAs(value: boolean) {\n if (!needsCheckInstallation(this.options) && value === false) return;\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 // 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 this.setProvider(null);\n\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 };\n\n if (network) {\n instanceOptions.network = network;\n }\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","import React, {\n createContext,\n useContext,\n useEffect,\n useReducer,\n useRef,\n} from 'react';\n\nimport {\n availableWallets,\n checkWalletProviders,\n connectedWallets,\n defaultWalletState,\n getComptaibleProvider,\n state_reducer,\n} from './helpers';\nimport {\n ProviderProps,\n ProviderContext,\n WalletActions,\n WalletConfig,\n} from './types';\nimport { WalletType } from '@rango-dev/wallets-shared';\n\nimport Wallet, { EventHandler as WalletEventHandler } from './wallet';\n\n// TODO fix lint problem\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nconst WalletContext = createContext<ProviderContext>({});\n\n/*\n Our event handler includes an internal state updater, and a notifier\n for the outside listener.\n On creating first wallet refrence, and on chaning `props.onUpdateState`\n we are using this function.\n*/\nfunction makeEventHandler(dispatcher: any, onUpdateState?: WalletEventHandler) {\n const handler: WalletEventHandler = (\n type,\n name,\n value,\n coreState,\n supportedChains\n ) => {\n const action = { type: 'new_state', wallet: type, name, value };\n // Update state\n dispatcher(action);\n\n // Giving the event to the outside listener\n if (onUpdateState) {\n onUpdateState(type, name, value, coreState, supportedChains);\n }\n };\n\n return handler;\n}\n\nfunction useInitializers(onChangeState: WalletEventHandler) {\n const availableWallets = useRef<{\n [key in WalletType]?: Wallet;\n }>({});\n\n function updater(wallet: {\n actions: WalletActions;\n config: WalletConfig;\n }): Wallet {\n const type = wallet.config.type;\n // We only update, if there is no instance available.\n if (typeof availableWallets.current[type] === 'undefined') {\n availableWallets.current[type] = new Wallet(\n {\n config: wallet.config,\n handler: onChangeState,\n },\n wallet.actions\n );\n }\n\n return availableWallets.current[type]!;\n }\n\n return updater;\n}\n\nfunction Provider(props: ProviderProps) {\n const [providersState, dispatch] = useReducer(state_reducer, {});\n\n const addWalletRef = useInitializers(\n makeEventHandler(dispatch, props.onUpdateState)\n );\n // const providersRef = useRef<{ [type in WalletType]?: any }>({});\n\n const listOfProviders = props.providers; \n const wallets = checkWalletProviders(listOfProviders);\n const api: ProviderContext = {\n // TODO: Fix type error\n // @ts-ignore\n async connect(type, network) {\n const wallet = wallets.get(type);\n if (!wallet) {\n throw new Error(`You should add ${type} to provider first.`);\n }\n\n const ref = addWalletRef(wallet);\n const result = await ref.connect(network);\n\n return result;\n },\n async disconnect(type) {\n const wallet = wallets.get(type);\n if (!wallet) {\n throw new Error(`You should add ${type} to provider first.`);\n }\n\n const ref = addWalletRef(wallet);\n await ref.disconnect();\n },\n async disconnectAll() {\n const disconnect_promises: Promise<any>[] = [];\n\n // When a wallet is initializing, a record will be added to `providersState`\n // So we use them to know what wallet has been initialized then we need to\n // filter connected wallets only.\n connectedWallets(providersState).forEach((type) => {\n const wallet = wallets.get(type);\n\n if (!!wallet) {\n const ref = addWalletRef(wallet);\n disconnect_promises.push(ref.disconnect());\n }\n });\n\n return await Promise.allSettled(disconnect_promises);\n },\n state(type) {\n return providersState[type] || defaultWalletState;\n },\n canSwitchNetworkTo(type, network) {\n const wallet = wallets.get(type);\n if (!wallet) {\n return false;\n }\n\n const ref = addWalletRef(wallet);\n return ref.canSwitchNetworkTo ? ref.canSwitchNetworkTo(network) : false;\n },\n providers() {\n const providers: { [type in WalletType]?: any } = {};\n availableWallets(providersState).forEach((type) => {\n const wallet = wallets.get(type);\n if (!!wallet) {\n const ref = addWalletRef(wallet);\n providers[type] = ref.provider;\n }\n });\n\n return providers;\n },\n getWalletInfo(type) {\n const wallet = wallets.get(type);\n if (!wallet) {\n throw new Error(`You should add ${type} to provider first.`);\n }\n\n const ref = addWalletRef(wallet);\n const result = ref.getWalletInfo(props.allBlockChains || []);\n\n return result;\n },\n getSigners(type) {\n const wallet = wallets.get(type);\n\n if (!wallet) {\n throw new Error(`You should add ${type} to provider first.`);\n }\n const ref = addWalletRef(wallet);\n const supportedChains = ref.getWalletInfo(\n props.allBlockChains || []\n ).supportedChains;\n const provider = getComptaibleProvider(\n supportedChains,\n ref.provider,\n type\n );\n const result = ref.getSigners(provider);\n\n return result;\n },\n };\n\n useEffect(() => {\n wallets.forEach((wallet) => {\n const ref = addWalletRef(wallet);\n const runOnInit = () => {\n if (!!ref.onInit) {\n ref.onInit();\n }\n };\n\n const initWhenPageIsReady = (event: Event) => {\n if (\n event.target &&\n (event.target as Document).readyState === 'complete'\n ) {\n runOnInit();\n\n document.removeEventListener('readystatechange', initWhenPageIsReady);\n }\n };\n\n // Try to run, maybe it's ready.\n runOnInit();\n\n // Try again when the page has been completely loaded.\n // Some of wallets, take some time to be fully injected and loaded.\n document.addEventListener('readystatechange', initWhenPageIsReady);\n });\n }, []);\n\n useEffect(() => {\n const allBlockChains = props.allBlockChains;\n if (!!allBlockChains) {\n wallets.forEach((wallet) => {\n const ref = addWalletRef(wallet);\n const supportedChains = ref.getWalletInfo(\n props.allBlockChains || []\n ).supportedChains;\n ref.setMeta(supportedChains);\n });\n }\n }, [props.allBlockChains]);\n\n useEffect(() => {\n wallets.forEach((wallet) => {\n const ref = addWalletRef(wallet);\n ref.setHandler(makeEventHandler(dispatch, props.onUpdateState));\n });\n }, [props.onUpdateState]);\n\n return (\n <WalletContext.Provider value={api}>\n {props.children}\n </WalletContext.Provider>\n );\n}\n\nexport function useWallets(): ProviderContext {\n const context = useContext(WalletContext);\n if (!context)\n throw Error('useWallet can only be used within the Provider component');\n return context;\n}\n\nexport default Provider;\n"],"names":["choose","wallets","type","find","wallet","defaultWalletState","connected","connecting","reachable","installed","accounts","network","state_reducer","state","action","target_wallet","name","value","formatAddressWithNetwork","address","accountAddressesWithNetwork","addresses","map","readAccountAddress","addressWithNetwork","split","connectedWallets","providersState","Object","entries","filter","wallet_state","availableWallets","checkWalletProviders","list","Map","forEach","provider","config","actions","set","isAsync","fn","constructor","needsCheckInstallation","options","checkInstallation","isWalletDerivedFromWalletConnect","wallet_type","WalletType","WALLET_CONNECT","getComptaibleProvider","supportedChains","evmBlockchains","isEvmBlockchain","rpcUrls","evmChainsToRpcMap","convertEvmBlockchainMetaToEvmChainInfo","WalletConnectProvider","qrcode","rpc","connector","chainId","Events","Wallet","meta","setInstalledAs","eagerConnection","connect","Error","currentNetwork","requestedNetwork","defaultNetwork","networkChanged","switchNetwork","instance","newInstance","tryGetInstance","bind","updateState","undefined","connectResult","resetState","nextAccounts","nextNetwork","Array","isArray","flatMap","blockchain","Network","Unknown","getBlockChainNameFromId","Boolean","length","disconnect","destroyInstance","setProvider","getSigners","getWalletInfo","allBlockChains","canSwitchNetworkTo","switchTo","onInit","isAsyncInstance","getInstance","subscribe","updateAccounts","updateChainId","setMeta","setHandler","handler","getState","states","updates","push","CONNECTED","REACHABLE","INSTALLED","ACCOUNTS","NETWORK","force","instanceOptions","currentProvider","error_message","WalletContext","createContext","makeEventHandler","dispatcher","onUpdateState","coreState","useInitializers","onChangeState","useRef","updater","current","Provider","props","useReducer","dispatch","addWalletRef","listOfProviders","providers","api","get","ref","result","disconnectAll","disconnect_promises","Promise","allSettled","useEffect","runOnInit","initWhenPageIsReady","event","target","readyState","document","removeEventListener","addEventListener","React","children","useWallets","context","useContext"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"wallets-core.cjs.development.js","sources":["../src/helpers.ts","../src/types.ts","../src/wallet.ts","../src/provider.tsx"],"sourcesContent":["import WalletConnectProvider from '@walletconnect/ethereum-provider';\nimport {\n convertEvmBlockchainMetaToEvmChainInfo,\n evmChainsToRpcMap,\n Network,\n WalletType,\n} from '@rango-dev/wallets-shared';\nimport { State, WalletProvider, WalletProviders } from './types';\nimport { Options, State as WalletState } from './wallet';\nimport { BlockchainMeta, isEvmBlockchain } from 'rango-types';\n\nexport function choose(wallets: any[], type: WalletType): any | null {\n return wallets.find((wallet) => wallet.type === type) || null;\n}\n\nexport const defaultWalletState: WalletState = {\n connected: false,\n connecting: false,\n reachable: false,\n installed: false,\n accounts: null,\n network: null,\n};\n\nexport function state_reducer(state: State, action: any) {\n if (action.type === 'new_state') {\n // TODO fix problem and remove ts-ignore\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const target_wallet = state[action.wallet];\n if (!target_wallet) {\n return {\n ...state,\n [action.wallet]: {\n ...defaultWalletState,\n [action.name]: action.value,\n },\n };\n }\n\n return {\n ...state,\n [action.wallet]: {\n ...target_wallet,\n [action.name]: action.value,\n },\n };\n }\n\n return state;\n}\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: network as Network,\n address,\n };\n}\n\nexport function connectedWallets(providersState: State): WalletType[] {\n return Object.entries(providersState)\n .filter(([, wallet_state]) => {\n return wallet_state?.connected;\n })\n .map(([type]) => {\n return type as WalletType;\n });\n}\n\nexport function availableWallets(providersState: State): WalletType[] {\n return Object.entries(providersState).map(([type]) => {\n return type as WalletType;\n });\n}\n\nexport function checkWalletProviders(list: WalletProvider[]): WalletProviders {\n const wallets: WalletProviders = new Map();\n\n list.forEach((provider) => {\n const { config, ...actions } = provider;\n wallets.set(config.type, {\n actions,\n config,\n });\n });\n\n return wallets;\n}\n\n/* eslint-disable @typescript-eslint/ban-types */\nexport function isAsync(fn: Function) {\n return fn?.constructor?.name === 'AsyncFunction';\n}\n\nexport function needsCheckInstallation(options: Options) {\n const { checkInstallation = true } = options.config;\n return checkInstallation;\n}\n\n/*\n WalletConnect instance is not compatible with ethers.providers.Web3Provider,\n Here we are returning a comptable instance, instead of the original one. \n*/\n\nexport function isWalletDerivedFromWalletConnect(wallet_type: WalletType) {\n return wallet_type === WalletType.WALLET_CONNECT;\n}\n\nexport function getComptaibleProvider(\n supportedChains: BlockchainMeta[],\n provider: any,\n type: WalletType\n) {\n if (isWalletDerivedFromWalletConnect(type)) {\n const evmBlockchains = supportedChains.filter(isEvmBlockchain);\n const rpcUrls = evmChainsToRpcMap(\n convertEvmBlockchainMetaToEvmChainInfo(evmBlockchains)\n );\n return new WalletConnectProvider({\n qrcode: false,\n rpc: rpcUrls,\n connector: provider,\n chainId: provider.chainId,\n });\n }\n return provider;\n}\n","import { PropsWithChildren } from 'react';\nimport { Network, WalletType, WalletInfo } from '@rango-dev/wallets-shared';\nimport {\n EventHandler as WalletEventHandler,\n State as WalletState,\n} from './wallet';\nimport { SignerFactory, BlockchainMeta } from 'rango-types';\n\nexport type State = {\n [key in WalletType]?: WalletState;\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 type ProviderContext = {\n connect(type: WalletType, network?: Network): Promise<ConnectResult>;\n disconnect(type: WalletType): Promise<void>;\n disconnectAll(): Promise<PromiseSettledResult<any>[]>;\n state(type: WalletType): WalletState;\n canSwitchNetworkTo(type: WalletType, network: Network): boolean;\n providers(): Providers;\n getSigners(type: WalletType): SignerFactory;\n getWalletInfo(type: WalletType): WalletInfo;\n};\n\nexport type ProviderProps = PropsWithChildren<{\n onUpdateState?: WalletEventHandler;\n allBlockChains?: BlockchainMeta[];\n providers: WalletProvider[];\n}>;\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 force?: boolean;\n};\nexport type GetInstance =\n | (() => any)\n | ((options: GetInstanceOptions) => Promise<any>);\nexport type TryGetInstance =\n | (() => any)\n | ((options: Pick<GetInstanceOptions, 'force' | 'network'>) => Promise<any>);\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>;\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 CanSwitchNetwork = (options: {\n network: Network;\n meta: BlockchainMeta[];\n}) => boolean;\n\nexport interface WalletActions {\n connect: Connect;\n getInstance: any;\n disconnect?: Disconnect;\n subscribe?: Subscribe;\n // eagerConnect, // optional?\n // unsubscribe, // coupled to subscribe.\n\n // Optional, but should be provided at the same time.\n switchNetwork?: SwitchNetwork;\n getSigners: (provider: any) => SignerFactory;\n canSwitchNetworkTo?: CanSwitchNetwork;\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 WalletProvider = { config: WalletConfig } & WalletActions;\n","import {\n getBlockChainNameFromId,\n Network,\n WalletType,\n} from '@rango-dev/wallets-shared';\nimport { accountAddressesWithNetwork, needsCheckInstallation } from './helpers';\nimport {\n Events,\n GetInstanceOptions,\n WalletActions,\n WalletConfig,\n} from './types';\nimport { BlockchainMeta } from 'rango-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\n async eagerConnection() {\n // Already connected, so we return provider that we have in memory.\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 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 // TODO: call actions.eagerConnection\n return null;\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 eagerConnection = await this.eagerConnection();\n const currentNetwork = this.state.network;\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 const requestedNetwork =\n network || currentNetwork || this.options.config.defaultNetwork;\n\n if (!!eagerConnection) {\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 eagerConnection;\n }\n if (networkChanged && !!this.actions.switchNetwork) {\n await this.actions.switchNetwork({\n instance: this.provider,\n meta: this.meta,\n // TODO: Fix type error\n // @ts-ignore\n network: requestedNetwork,\n newInstance: this.tryGetInstance.bind(this),\n });\n\n return {\n // Only network has been changed, so we reuse accounts from what we have already.\n accounts: eagerConnection.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 || Network.Unknown;\n // Try to map chainId with a Network, if not found, we use chainId directly.\n const network =\n getBlockChainNameFromId(chainId, this.meta) || Network.Unknown;\n // TODO: second parameter should be `string` when we decided to open source the package.\n return accountAddressesWithNetwork(\n blockchain.accounts,\n network as Network\n );\n });\n // Typescript can not detect we are filtering out null values:(\n nextAccounts = accounts.filter(Boolean) as string[];\n nextNetwork = requestedNetwork || this.options.config.defaultNetwork;\n } else {\n const chainId = connectResult.chainId || Network.Unknown;\n const network =\n getBlockChainNameFromId(chainId, this.meta) || Network.Unknown;\n // We fallback to current active network if `chainId` not provided.\n nextAccounts = accountAddressesWithNetwork(\n connectResult.accounts,\n network as Network\n );\n nextNetwork = network as 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 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) {\n const switchTo = this.actions.canSwitchNetworkTo;\n if (!switchTo) return false;\n\n return switchTo({\n network,\n meta: this.meta,\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 }\n }\n\n setProvider(value: any) {\n this.provider = value;\n\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) || Network.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: (chainId) => {\n const network = !!chainId\n ? getBlockChainNameFromId(chainId, this.meta)\n : Network.Unknown;\n this.updateState({\n network,\n });\n },\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 // We will notify handler after updating all the states.\n // Because when we call `handler` it will has latest states.\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.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 setInstalledAs(value: boolean) {\n if (!needsCheckInstallation(this.options) && value === false) return;\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 // 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 this.setProvider(null);\n\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 };\n\n if (network) {\n instanceOptions.network = network;\n }\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","import React, {\n createContext,\n useContext,\n useEffect,\n useReducer,\n useRef,\n} from 'react';\n\nimport {\n availableWallets,\n checkWalletProviders,\n connectedWallets,\n defaultWalletState,\n getComptaibleProvider,\n state_reducer,\n} from './helpers';\nimport {\n ProviderProps,\n ProviderContext,\n WalletActions,\n WalletConfig,\n} from './types';\nimport { WalletType } from '@rango-dev/wallets-shared';\n\nimport Wallet, { EventHandler as WalletEventHandler } from './wallet';\n\n// TODO fix lint problem\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nconst WalletContext = createContext<ProviderContext>({});\n\n/*\n Our event handler includes an internal state updater, and a notifier\n for the outside listener.\n On creating first wallet refrence, and on chaning `props.onUpdateState`\n we are using this function.\n*/\nfunction makeEventHandler(dispatcher: any, onUpdateState?: WalletEventHandler) {\n const handler: WalletEventHandler = (\n type,\n name,\n value,\n coreState,\n supportedChains\n ) => {\n const action = { type: 'new_state', wallet: type, name, value };\n // Update state\n dispatcher(action);\n\n // Giving the event to the outside listener\n if (onUpdateState) {\n onUpdateState(type, name, value, coreState, supportedChains);\n }\n };\n\n return handler;\n}\n\nfunction useInitializers(onChangeState: WalletEventHandler) {\n const availableWallets = useRef<{\n [key in WalletType]?: Wallet;\n }>({});\n\n function updater(wallet: {\n actions: WalletActions;\n config: WalletConfig;\n }): Wallet {\n const type = wallet.config.type;\n // We only update, if there is no instance available.\n if (typeof availableWallets.current[type] === 'undefined') {\n availableWallets.current[type] = new Wallet(\n {\n config: wallet.config,\n handler: onChangeState,\n },\n wallet.actions\n );\n }\n\n return availableWallets.current[type]!;\n }\n\n return updater;\n}\n\nfunction Provider(props: ProviderProps) {\n const [providersState, dispatch] = useReducer(state_reducer, {});\n\n const addWalletRef = useInitializers(\n makeEventHandler(dispatch, props.onUpdateState)\n );\n // const providersRef = useRef<{ [type in WalletType]?: any }>({});\n\n const listOfProviders = props.providers; \n const wallets = checkWalletProviders(listOfProviders);\n const api: ProviderContext = {\n // TODO: Fix type error\n // @ts-ignore\n async connect(type, network) {\n const wallet = wallets.get(type);\n if (!wallet) {\n throw new Error(`You should add ${type} to provider first.`);\n }\n\n const ref = addWalletRef(wallet);\n const result = await ref.connect(network);\n\n return result;\n },\n async disconnect(type) {\n const wallet = wallets.get(type);\n if (!wallet) {\n throw new Error(`You should add ${type} to provider first.`);\n }\n\n const ref = addWalletRef(wallet);\n await ref.disconnect();\n },\n async disconnectAll() {\n const disconnect_promises: Promise<any>[] = [];\n\n // When a wallet is initializing, a record will be added to `providersState`\n // So we use them to know what wallet has been initialized then we need to\n // filter connected wallets only.\n connectedWallets(providersState).forEach((type) => {\n const wallet = wallets.get(type);\n\n if (!!wallet) {\n const ref = addWalletRef(wallet);\n disconnect_promises.push(ref.disconnect());\n }\n });\n\n return await Promise.allSettled(disconnect_promises);\n },\n state(type) {\n return providersState[type] || defaultWalletState;\n },\n canSwitchNetworkTo(type, network) {\n const wallet = wallets.get(type);\n if (!wallet) {\n return false;\n }\n\n const ref = addWalletRef(wallet);\n return ref.canSwitchNetworkTo ? ref.canSwitchNetworkTo(network) : false;\n },\n providers() {\n const providers: { [type in WalletType]?: any } = {};\n availableWallets(providersState).forEach((type) => {\n const wallet = wallets.get(type);\n if (!!wallet) {\n const ref = addWalletRef(wallet);\n providers[type] = ref.provider;\n }\n });\n\n return providers;\n },\n getWalletInfo(type) {\n const wallet = wallets.get(type);\n if (!wallet) {\n throw new Error(`You should add ${type} to provider first.`);\n }\n\n const ref = addWalletRef(wallet);\n const result = ref.getWalletInfo(props.allBlockChains || []);\n\n return result;\n },\n getSigners(type) {\n const wallet = wallets.get(type);\n\n if (!wallet) {\n throw new Error(`You should add ${type} to provider first.`);\n }\n const ref = addWalletRef(wallet);\n const supportedChains = ref.getWalletInfo(\n props.allBlockChains || []\n ).supportedChains;\n const provider = getComptaibleProvider(\n supportedChains,\n ref.provider,\n type\n );\n const result = ref.getSigners(provider);\n\n return result;\n },\n };\n\n useEffect(() => {\n wallets.forEach((wallet) => {\n const ref = addWalletRef(wallet);\n const runOnInit = () => {\n if (!!ref.onInit) {\n ref.onInit();\n }\n };\n\n const initWhenPageIsReady = (event: Event) => {\n if (\n event.target &&\n (event.target as Document).readyState === 'complete'\n ) {\n runOnInit();\n\n document.removeEventListener('readystatechange', initWhenPageIsReady);\n }\n };\n\n // Try to run, maybe it's ready.\n runOnInit();\n\n // Try again when the page has been completely loaded.\n // Some of wallets, take some time to be fully injected and loaded.\n document.addEventListener('readystatechange', initWhenPageIsReady);\n });\n }, []);\n\n useEffect(() => {\n const allBlockChains = props.allBlockChains;\n if (!!allBlockChains) {\n wallets.forEach((wallet) => {\n const ref = addWalletRef(wallet);\n const supportedChains = ref.getWalletInfo(\n props.allBlockChains || []\n ).supportedChains;\n ref.setMeta(supportedChains);\n });\n }\n }, [props.allBlockChains]);\n\n useEffect(() => {\n wallets.forEach((wallet) => {\n const ref = addWalletRef(wallet);\n ref.setHandler(makeEventHandler(dispatch, props.onUpdateState));\n });\n }, [props.onUpdateState]);\n\n return (\n <WalletContext.Provider value={api}>\n {props.children}\n </WalletContext.Provider>\n );\n}\n\nexport function useWallets(): ProviderContext {\n const context = useContext(WalletContext);\n if (!context)\n throw Error('useWallet can only be used within the Provider component');\n return context;\n}\n\nexport default Provider;\n"],"names":["choose","wallets","type","find","wallet","defaultWalletState","connected","connecting","reachable","installed","accounts","network","state_reducer","state","action","_extends4","_extends5","target_wallet","_extends2","_extends3","_extends","name","value","formatAddressWithNetwork","address","accountAddressesWithNetwork","addresses","map","readAccountAddress","addressWithNetwork","_addressWithNetwork$s","split","connectedWallets","providersState","Object","entries","filter","_ref","wallet_state","_ref2","availableWallets","_ref3","checkWalletProviders","list","Map","forEach","provider","config","actions","_objectWithoutPropertiesLoose","_excluded","set","isAsync","fn","_fn$constructor","constructor","needsCheckInstallation","options","_options$config$check","checkInstallation","isWalletDerivedFromWalletConnect","wallet_type","WalletType","WALLET_CONNECT","getComptaibleProvider","supportedChains","evmBlockchains","isEvmBlockchain","rpcUrls","evmChainsToRpcMap","convertEvmBlockchainMetaToEvmChainInfo","WalletConnectProvider","qrcode","rpc","connector","chainId","Events","Wallet","meta","setInstalledAs","_proto","prototype","eagerConnection","_eagerConnection","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context","prev","next","abrupt","stop","apply","arguments","connect","_connect","_callee2","_this","currentNetwork","requestedNetwork","networkChanged","instance","connectResult","nextAccounts","nextNetwork","_network","_callee2$","_context2","Error","sent","defaultNetwork","switchNetwork","newInstance","tryGetInstance","bind","updateState","undefined","t0","resetState","Array","isArray","flatMap","blockchain","Network","Unknown","getBlockChainNameFromId","Boolean","length","_x","disconnect","_disconnect","_callee3","_this2","_callee3$","_context3","destroyInstance","setProvider","getSigners","getWalletInfo","allBlockChains","canSwitchNetworkTo","switchTo","onInit","isAsyncInstance","getInstance","subscribe","updateAccounts","_this3","updateChainId","setMeta","setHandler","handler","getState","states","updates","push","CONNECTED","REACHABLE","INSTALLED","ACCOUNTS","NETWORK","_this4","_tryGetInstance","_callee4","force","instanceOptions","error_message","_callee4$","_context4","currentProvider","_x2","WalletContext","createContext","makeEventHandler","dispatcher","onUpdateState","coreState","useInitializers","onChangeState","useRef","updater","current","Provider","props","_useReducer","useReducer","dispatch","addWalletRef","listOfProviders","providers","api","get","ref","result","disconnectAll","disconnect_promises","Promise","allSettled","useEffect","runOnInit","initWhenPageIsReady","event","target","readyState","document","removeEventListener","addEventListener","React","children","useWallets","context","useContext"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";function t(t){return t&&"object"==typeof t&&"default"in t?t.default:t}Object.defineProperty(exports,"__esModule",{value:!0});var e=t(require("@walletconnect/ethereum-provider")),n=require("@rango-dev/wallets-shared"),r=require("react"),o=t(r);function i(){i=function(){return t};var t={},e=Object.prototype,n=e.hasOwnProperty,r=Object.defineProperty||function(t,e,n){t[e]=n.value},o="function"==typeof Symbol?Symbol:{},a=o.iterator||"@@iterator",c=o.asyncIterator||"@@asyncIterator",s=o.toStringTag||"@@toStringTag";function u(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(t){u=function(t,e,n){return t[e]=n}}function l(t,e,n,o){var i=Object.create((e&&e.prototype instanceof d?e:d).prototype),a=new S(o||[]);return r(i,"_invoke",{value:b(t,n,a)}),i}function h(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}t.wrap=l;var f={};function d(){}function p(){}function v(){}var w={};u(w,a,(function(){return this}));var g=Object.getPrototypeOf,y=g&&g(g(L([])));y&&y!==e&&n.call(y,a)&&(w=y);var m=v.prototype=d.prototype=Object.create(w);function k(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function x(t,e){var o;r(this,"_invoke",{value:function(r,i){function a(){return new e((function(o,a){!function r(o,i,a,c){var s=h(t[o],t,i);if("throw"!==s.type){var u=s.arg,l=u.value;return l&&"object"==typeof l&&n.call(l,"__await")?e.resolve(l.__await).then((function(t){r("next",t,a,c)}),(function(t){r("throw",t,a,c)})):e.resolve(l).then((function(t){u.value=t,a(u)}),(function(t){return r("throw",t,a,c)}))}c(s.arg)}(r,i,o,a)}))}return o=o?o.then(a,a):a()}})}function b(t,e,n){var r="suspendedStart";return function(o,i){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===o)throw i;return{value:void 0,done:!0}}for(n.method=o,n.arg=i;;){var a=n.delegate;if(a){var c=E(a,n);if(c){if(c===f)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var s=h(t,e,n);if("normal"===s.type){if(r=n.done?"completed":"suspendedYield",s.arg===f)continue;return{value:s.arg,done:n.done}}"throw"===s.type&&(r="completed",n.method="throw",n.arg=s.arg)}}}function E(t,e){var n=e.method,r=t.iterator[n];if(void 0===r)return e.delegate=null,"throw"===n&&t.iterator.return&&(e.method="return",e.arg=void 0,E(t,e),"throw"===e.method)||"return"!==n&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+n+"' method")),f;var o=h(r,t.iterator,e.arg);if("throw"===o.type)return e.method="throw",e.arg=o.arg,e.delegate=null,f;var i=o.arg;return i?i.done?(e[t.resultName]=i.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,f):i:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,f)}function N(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function I(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function S(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(N,this),this.reset(!0)}function L(t){if(t){var e=t[a];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,o=function e(){for(;++r<t.length;)if(n.call(t,r))return e.value=t[r],e.done=!1,e;return e.value=void 0,e.done=!0,e};return o.next=o}}return{next:C}}function C(){return{value:void 0,done:!0}}return p.prototype=v,r(m,"constructor",{value:v,configurable:!0}),r(v,"constructor",{value:p,configurable:!0}),p.displayName=u(v,s,"GeneratorFunction"),t.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===p||"GeneratorFunction"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,v):(t.__proto__=v,u(t,s,"GeneratorFunction")),t.prototype=Object.create(m),t},t.awrap=function(t){return{__await:t}},k(x.prototype),u(x.prototype,c,(function(){return this})),t.AsyncIterator=x,t.async=function(e,n,r,o,i){void 0===i&&(i=Promise);var a=new x(l(e,n,r,o),i);return t.isGeneratorFunction(n)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},k(m),u(m,s,"Generator"),u(m,a,(function(){return this})),u(m,"toString",(function(){return"[object Generator]"})),t.keys=function(t){var e=Object(t),n=[];for(var r in e)n.push(r);return n.reverse(),function t(){for(;n.length;){var r=n.pop();if(r in e)return t.value=r,t.done=!1,t}return t.done=!0,t}},t.values=L,S.prototype={constructor:S,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(I),!t)for(var e in this)"t"===e.charAt(0)&&n.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=void 0)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function r(n,r){return a.type="throw",a.arg=t,e.next=n,r&&(e.method="next",e.arg=void 0),!!r}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var c=n.call(i,"catchLoc"),s=n.call(i,"finallyLoc");if(c&&s){if(this.prev<i.catchLoc)return r(i.catchLoc,!0);if(this.prev<i.finallyLoc)return r(i.finallyLoc)}else if(c){if(this.prev<i.catchLoc)return r(i.catchLoc,!0)}else{if(!s)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return r(i.finallyLoc)}}}},abrupt:function(t,e){for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,f):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),f},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),I(n),f}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var o=r.arg;I(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,n){return this.delegate={iterator:L(t),resultName:e,nextLoc:n},"next"===this.method&&(this.arg=void 0),f}},t}function a(t,e,n,r,o,i,a){try{var c=t[i](a),s=c.value}catch(t){return void n(t)}c.done?e(s):Promise.resolve(s).then(r,o)}function c(t){return function(){var e=this,n=arguments;return new Promise((function(r,o){var i=t.apply(e,n);function c(t){a(i,r,o,c,s,"next",t)}function s(t){a(i,r,o,c,s,"throw",t)}c(void 0)}))}}function s(){return(s=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t}).apply(this,arguments)}var u,l=["config"],h={connected:!1,connecting:!1,reachable:!1,installed:!1,accounts:null,network:null};function f(t,e){if("new_state"===e.type){var n,r,o,i,a=t[e.wallet];return s({},t,a?((r={})[e.wallet]=s({},a,((n={})[e.name]=e.value,n)),r):((i={})[e.wallet]=s({},h,((o={})[e.name]=e.value,o)),i))}return t}function d(t,e){return(e||"")+":"+t}function p(t,e){return t?t.map((function(t){return d(t,e)})):[]}function v(t){return Object.entries(t).filter((function(t){var e=t[1];return null==e?void 0:e.connected})).map((function(t){return t[0]}))}function w(t){return Object.entries(t).map((function(t){return t[0]}))}function g(t){var e=new Map;return t.forEach((function(t){var n=t.config,r=function(t,e){if(null==t)return{};var n,r,o={},i=Object.keys(t);for(r=0;r<i.length;r++)e.indexOf(n=i[r])>=0||(o[n]=t[n]);return o}(t,l);e.set(n.type,{actions:r,config:n})})),e}function y(t){var e=t.config.checkInstallation;return void 0===e||e}function m(t){return t===n.WalletType.WALLET_CONNECT}function k(t,r,o){if(m(o)){var i=t.filter(n.isEvmBlockchain),a=n.evmChainsToRpcMap(n.convertEvmBlockchainMetaToEvmChainInfo(i));return new e({qrcode:!1,rpc:a,connector:r,chainId:r.chainId})}return r}(u=exports.Events||(exports.Events={})).CONNECTED="connected",u.CONNECTING="connecting",u.REACHABLE="reachable",u.INSTALLED="installed",u.ACCOUNTS="accounts",u.NETWORK="network";var x=function(){function t(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},y(t)||this.setInstalledAs(!0)}var e=t.prototype;return e.eagerConnection=function(){var t=c(i().mark((function t(){return i().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!this.state.connected||!this.provider){t.next=2;break}return t.abrupt("return",{accounts:this.state.accounts,network:this.state.network,provider:this.provider});case 2:return t.abrupt("return",null);case 3:case"end":return t.stop()}}),t,this)})));return function(){return t.apply(this,arguments)}}(),e.connect=function(){var t=c(i().mark((function t(e){var r,o,a,c,s,u,l,h,f,d,v=this;return i().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!this.state.connecting){t.next=2;break}throw new Error("Connecting...");case 2:return t.next=4,this.eagerConnection();case 4:if(o=this.state.network,a=e||o||this.options.config.defaultNetwork,!(r=t.sent)){t.next=15;break}if(c=o!==a&&!!a,o!==a){t.next=11;break}return t.abrupt("return",r);case 11:if(!c||!this.actions.switchNetwork){t.next=15;break}return t.next=14,this.actions.switchNetwork({instance:this.provider,meta:this.meta,network:a,newInstance:this.tryGetInstance.bind(this)});case 14:return t.abrupt("return",{accounts:r.accounts,network:a,provider:this.provider});case 15:return t.next=17,this.tryGetInstance({network:e});case 17:return s=t.sent,this.updateState({connecting:!0}),this.setInstalledAs(!0),t.prev=20,t.next=23,this.actions.connect({instance:s,network:a||void 0,meta:this.meta||[]});case 23:u=t.sent,t.next=30;break;case 26:throw t.prev=26,t.t0=t.catch(20),this.resetState(),t.t0;case 30:return this.updateState({connected:!0,reachable:!0,connecting:!1}),l=[],h=null,Array.isArray(u)?(f=u.flatMap((function(t){var e=n.getBlockChainNameFromId(t.chainId||n.Network.Unknown,v.meta)||n.Network.Unknown;return p(t.accounts,e)})),l=f.filter(Boolean),h=a||this.options.config.defaultNetwork):(d=n.getBlockChainNameFromId(u.chainId||n.Network.Unknown,this.meta)||n.Network.Unknown,l=p(u.accounts,d),h=d),l.length>0&&this.updateState({accounts:l,network:h}),t.abrupt("return",{accounts:this.state.accounts,network:this.state.network,provider:this.provider});case 36:case"end":return t.stop()}}),t,this,[[20,26]])})));return function(e){return t.apply(this,arguments)}}(),e.disconnect=function(){var t=c(i().mark((function t(){var e=this;return i().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:this.resetState(),this.actions.disconnect&&this.actions.disconnect({instance:this.provider,destroyInstance:function(){e.setProvider(null)}});case 2:case"end":return t.stop()}}),t,this)})));return function(){return t.apply(this,arguments)}}(),e.getSigners=function(t){return this.actions.getSigners(t)},e.getWalletInfo=function(t){return this.actions.getWalletInfo(t)},e.canSwitchNetworkTo=function(t){var e=this.actions.canSwitchNetworkTo;return!!e&&e({network:t,meta:this.meta})},e.onInit=function(){this.options.config.isAsyncInstance||this.actions.getInstance()&&!this.state.installed&&this.setInstalledAs(!0)},e.setProvider=function(t){var e=this;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:function(t,r){var o=e.state.network;r&&(o=n.getBlockChainNameFromId(r,e.meta)||n.Network.Unknown);var i=p(t,o);i.length>0&&e.updateState({accounts:i})},updateChainId:function(t){var r=t?n.getBlockChainNameFromId(t,e.meta):n.Network.Unknown;e.updateState({network:r})}})},e.setMeta=function(t){this.meta=t},e.setHandler=function(t){this.options.handler=t},e.getState=function(){return this.state},e.updateState=function(t){var e=this,n=[];void 0!==t.connected&&(this.state.connected=t.connected,n.push([exports.Events.CONNECTED,t.connected])),void 0!==t.reachable&&(this.state.reachable=t.reachable,n.push([exports.Events.REACHABLE,t.reachable])),void 0!==t.installed&&(this.state.installed=t.installed,n.push([exports.Events.INSTALLED,t.installed])),void 0!==t.accounts&&(this.state.accounts=t.accounts,n.push([exports.Events.ACCOUNTS,t.accounts])),void 0!==t.network&&(this.state.network=t.network,n.push([exports.Events.NETWORK,t.network]));var r=this.getState();n.forEach((function(t){e.options.handler(e.options.config.type,t[0],t[1],r,e.meta)}))},e.resetState=function(){this.updateState({connected:!1,connecting:!1,reachable:!1,accounts:null,network:null})},e.setInstalledAs=function(t){(y(this.options)||!1!==t)&&this.updateState({installed:t})},e.tryGetInstance=function(){var t=c(i().mark((function t(e){var n,r,o,a;return i().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=e.network,r=e.force,o=null,this.setProvider(null),!this.options.config.isAsyncInstance){t.next=11;break}return a={currentProvider:this.provider,meta:this.meta,force:r||!1},n&&(a.network=n),t.next=8,this.actions.getInstance(a);case 8:o=t.sent,t.next=12;break;case 11:o=this.actions.getInstance();case 12:if(o){t.next=17;break}throw this.setInstalledAs(!1),this.resetState(),new Error("It seems your selected wallet ("+this.options.config.type+") isn't installed.");case 17:return this.setProvider(o),t.abrupt("return",o);case 19:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),t}(),b=r.createContext({});function E(t,e){return function(n,r,o,i,a){t({type:"new_state",wallet:n,name:r,value:o}),e&&e(n,r,o,i,a)}}exports.Provider=function(t){var e=r.useReducer(f,{}),n=e[0],a=e[1],s=function(t){var e=r.useRef({});return function(n){var r=n.config.type;return void 0===e.current[r]&&(e.current[r]=new x({config:n.config,handler:t},n.actions)),e.current[r]}}(E(a,t.onUpdateState)),u=g(t.providers),l={connect:function(t,e){return c(i().mark((function n(){var r,o;return i().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(r=u.get(t)){n.next=3;break}throw new Error("You should add "+t+" to provider first.");case 3:return o=s(r),n.next=6,o.connect(e);case 6:return n.abrupt("return",n.sent);case 8:case"end":return n.stop()}}),n)})))()},disconnect:function(t){return c(i().mark((function e(){var n,r;return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=u.get(t)){e.next=3;break}throw new Error("You should add "+t+" to provider first.");case 3:return r=s(n),e.next=6,r.disconnect();case 6:case"end":return e.stop()}}),e)})))()},disconnectAll:function(){return c(i().mark((function t(){var e;return i().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e=[],v(n).forEach((function(t){var n=u.get(t);if(n){var r=s(n);e.push(r.disconnect())}})),t.next=4,Promise.allSettled(e);case 4:return t.abrupt("return",t.sent);case 5:case"end":return t.stop()}}),t)})))()},state:function(t){return n[t]||h},canSwitchNetworkTo:function(t,e){var n=u.get(t);if(!n)return!1;var r=s(n);return!!r.canSwitchNetworkTo&&r.canSwitchNetworkTo(e)},providers:function(){var t={};return w(n).forEach((function(e){var n=u.get(e);if(n){var r=s(n);t[e]=r.provider}})),t},getWalletInfo:function(e){var n=u.get(e);if(!n)throw new Error("You should add "+e+" to provider first.");return s(n).getWalletInfo(t.allBlockChains||[])},getSigners:function(e){var n=u.get(e);if(!n)throw new Error("You should add "+e+" to provider first.");var r=s(n),o=k(r.getWalletInfo(t.allBlockChains||[]).supportedChains,r.provider,e);return r.getSigners(o)}};return r.useEffect((function(){u.forEach((function(t){var e=s(t),n=function(){e.onInit&&e.onInit()};n(),document.addEventListener("readystatechange",(function t(e){e.target&&"complete"===e.target.readyState&&(n(),document.removeEventListener("readystatechange",t))}))}))}),[]),r.useEffect((function(){t.allBlockChains&&u.forEach((function(e){var n=s(e),r=n.getWalletInfo(t.allBlockChains||[]).supportedChains;n.setMeta(r)}))}),[t.allBlockChains]),r.useEffect((function(){u.forEach((function(e){s(e).setHandler(E(a,t.onUpdateState))}))}),[t.onUpdateState]),o.createElement(b.Provider,{value:l},t.children)},exports.accountAddressesWithNetwork=p,exports.availableWallets=w,exports.checkWalletProviders=g,exports.choose=function(t,e){return t.find((function(t){return t.type===e}))||null},exports.connectedWallets=v,exports.defaultWalletState=h,exports.formatAddressWithNetwork=d,exports.getComptaibleProvider=k,exports.isAsync=function(t){var e;return"AsyncFunction"===(null==t||null==(e=t.constructor)?void 0:e.name)},exports.isWalletDerivedFromWalletConnect=m,exports.needsCheckInstallation=y,exports.readAccountAddress=function(t){var e=t.split(":");return{network:e[0],address:e[1]}},exports.state_reducer=f,exports.useWallets=function(){var t=r.useContext(b);if(!t)throw Error("useWallet can only be used within the Provider component");return t};
|
|
1
|
+
"use strict";function t(t){return t&&"object"==typeof t&&"default"in t?t.default:t}Object.defineProperty(exports,"__esModule",{value:!0});var e=t(require("@walletconnect/ethereum-provider")),n=require("@rango-dev/wallets-shared"),r=require("rango-types"),o=require("react"),i=t(o);function a(){a=function(){return t};var t={},e=Object.prototype,n=e.hasOwnProperty,r=Object.defineProperty||function(t,e,n){t[e]=n.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",c=o.asyncIterator||"@@asyncIterator",s=o.toStringTag||"@@toStringTag";function u(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(t){u=function(t,e,n){return t[e]=n}}function l(t,e,n,o){var i=Object.create((e&&e.prototype instanceof d?e:d).prototype),a=new S(o||[]);return r(i,"_invoke",{value:b(t,n,a)}),i}function h(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}t.wrap=l;var f={};function d(){}function p(){}function v(){}var w={};u(w,i,(function(){return this}));var g=Object.getPrototypeOf,y=g&&g(g(L([])));y&&y!==e&&n.call(y,i)&&(w=y);var m=v.prototype=d.prototype=Object.create(w);function k(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function x(t,e){var o;r(this,"_invoke",{value:function(r,i){function a(){return new e((function(o,a){!function r(o,i,a,c){var s=h(t[o],t,i);if("throw"!==s.type){var u=s.arg,l=u.value;return l&&"object"==typeof l&&n.call(l,"__await")?e.resolve(l.__await).then((function(t){r("next",t,a,c)}),(function(t){r("throw",t,a,c)})):e.resolve(l).then((function(t){u.value=t,a(u)}),(function(t){return r("throw",t,a,c)}))}c(s.arg)}(r,i,o,a)}))}return o=o?o.then(a,a):a()}})}function b(t,e,n){var r="suspendedStart";return function(o,i){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===o)throw i;return{value:void 0,done:!0}}for(n.method=o,n.arg=i;;){var a=n.delegate;if(a){var c=E(a,n);if(c){if(c===f)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var s=h(t,e,n);if("normal"===s.type){if(r=n.done?"completed":"suspendedYield",s.arg===f)continue;return{value:s.arg,done:n.done}}"throw"===s.type&&(r="completed",n.method="throw",n.arg=s.arg)}}}function E(t,e){var n=e.method,r=t.iterator[n];if(void 0===r)return e.delegate=null,"throw"===n&&t.iterator.return&&(e.method="return",e.arg=void 0,E(t,e),"throw"===e.method)||"return"!==n&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+n+"' method")),f;var o=h(r,t.iterator,e.arg);if("throw"===o.type)return e.method="throw",e.arg=o.arg,e.delegate=null,f;var i=o.arg;return i?i.done?(e[t.resultName]=i.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,f):i:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,f)}function N(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function I(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function S(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(N,this),this.reset(!0)}function L(t){if(t){var e=t[i];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,o=function e(){for(;++r<t.length;)if(n.call(t,r))return e.value=t[r],e.done=!1,e;return e.value=void 0,e.done=!0,e};return o.next=o}}return{next:C}}function C(){return{value:void 0,done:!0}}return p.prototype=v,r(m,"constructor",{value:v,configurable:!0}),r(v,"constructor",{value:p,configurable:!0}),p.displayName=u(v,s,"GeneratorFunction"),t.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===p||"GeneratorFunction"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,v):(t.__proto__=v,u(t,s,"GeneratorFunction")),t.prototype=Object.create(m),t},t.awrap=function(t){return{__await:t}},k(x.prototype),u(x.prototype,c,(function(){return this})),t.AsyncIterator=x,t.async=function(e,n,r,o,i){void 0===i&&(i=Promise);var a=new x(l(e,n,r,o),i);return t.isGeneratorFunction(n)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},k(m),u(m,s,"Generator"),u(m,i,(function(){return this})),u(m,"toString",(function(){return"[object Generator]"})),t.keys=function(t){var e=Object(t),n=[];for(var r in e)n.push(r);return n.reverse(),function t(){for(;n.length;){var r=n.pop();if(r in e)return t.value=r,t.done=!1,t}return t.done=!0,t}},t.values=L,S.prototype={constructor:S,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(I),!t)for(var e in this)"t"===e.charAt(0)&&n.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=void 0)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function r(n,r){return a.type="throw",a.arg=t,e.next=n,r&&(e.method="next",e.arg=void 0),!!r}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var c=n.call(i,"catchLoc"),s=n.call(i,"finallyLoc");if(c&&s){if(this.prev<i.catchLoc)return r(i.catchLoc,!0);if(this.prev<i.finallyLoc)return r(i.finallyLoc)}else if(c){if(this.prev<i.catchLoc)return r(i.catchLoc,!0)}else{if(!s)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return r(i.finallyLoc)}}}},abrupt:function(t,e){for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,f):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),f},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),I(n),f}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var o=r.arg;I(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,n){return this.delegate={iterator:L(t),resultName:e,nextLoc:n},"next"===this.method&&(this.arg=void 0),f}},t}function c(t,e,n,r,o,i,a){try{var c=t[i](a),s=c.value}catch(t){return void n(t)}c.done?e(s):Promise.resolve(s).then(r,o)}function s(t){return function(){var e=this,n=arguments;return new Promise((function(r,o){var i=t.apply(e,n);function a(t){c(i,r,o,a,s,"next",t)}function s(t){c(i,r,o,a,s,"throw",t)}a(void 0)}))}}function u(){return(u=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t}).apply(this,arguments)}var l,h=["config"],f={connected:!1,connecting:!1,reachable:!1,installed:!1,accounts:null,network:null};function d(t,e){if("new_state"===e.type){var n,r,o,i,a=t[e.wallet];return u({},t,a?((r={})[e.wallet]=u({},a,((n={})[e.name]=e.value,n)),r):((i={})[e.wallet]=u({},f,((o={})[e.name]=e.value,o)),i))}return t}function p(t,e){return(e||"")+":"+t}function v(t,e){return t?t.map((function(t){return p(t,e)})):[]}function w(t){return Object.entries(t).filter((function(t){var e=t[1];return null==e?void 0:e.connected})).map((function(t){return t[0]}))}function g(t){return Object.entries(t).map((function(t){return t[0]}))}function y(t){var e=new Map;return t.forEach((function(t){var n=t.config,r=function(t,e){if(null==t)return{};var n,r,o={},i=Object.keys(t);for(r=0;r<i.length;r++)e.indexOf(n=i[r])>=0||(o[n]=t[n]);return o}(t,h);e.set(n.type,{actions:r,config:n})})),e}function m(t){var e=t.config.checkInstallation;return void 0===e||e}function k(t){return t===n.WalletType.WALLET_CONNECT}function x(t,o,i){if(k(i)){var a=t.filter(r.isEvmBlockchain),c=n.evmChainsToRpcMap(n.convertEvmBlockchainMetaToEvmChainInfo(a));return new e({qrcode:!1,rpc:c,connector:o,chainId:o.chainId})}return o}(l=exports.Events||(exports.Events={})).CONNECTED="connected",l.CONNECTING="connecting",l.REACHABLE="reachable",l.INSTALLED="installed",l.ACCOUNTS="accounts",l.NETWORK="network";var b=function(){function t(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},m(t)||this.setInstalledAs(!0)}var e=t.prototype;return e.eagerConnection=function(){var t=s(a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!this.state.connected||!this.provider){t.next=2;break}return t.abrupt("return",{accounts:this.state.accounts,network:this.state.network,provider:this.provider});case 2:return t.abrupt("return",null);case 3:case"end":return t.stop()}}),t,this)})));return function(){return t.apply(this,arguments)}}(),e.connect=function(){var t=s(a().mark((function t(e){var r,o,i,c,s,u,l,h,f,d,p=this;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!this.state.connecting){t.next=2;break}throw new Error("Connecting...");case 2:return t.next=4,this.eagerConnection();case 4:if(o=this.state.network,i=e||o||this.options.config.defaultNetwork,!(r=t.sent)){t.next=15;break}if(c=o!==i&&!!i,o!==i){t.next=11;break}return t.abrupt("return",r);case 11:if(!c||!this.actions.switchNetwork){t.next=15;break}return t.next=14,this.actions.switchNetwork({instance:this.provider,meta:this.meta,network:i,newInstance:this.tryGetInstance.bind(this)});case 14:return t.abrupt("return",{accounts:r.accounts,network:i,provider:this.provider});case 15:return t.next=17,this.tryGetInstance({network:e});case 17:return s=t.sent,this.updateState({connecting:!0}),this.setInstalledAs(!0),t.prev=20,t.next=23,this.actions.connect({instance:s,network:i||void 0,meta:this.meta||[]});case 23:u=t.sent,t.next=30;break;case 26:throw t.prev=26,t.t0=t.catch(20),this.resetState(),t.t0;case 30:return this.updateState({connected:!0,reachable:!0,connecting:!1}),l=[],h=null,Array.isArray(u)?(f=u.flatMap((function(t){var e=n.getBlockChainNameFromId(t.chainId||n.Network.Unknown,p.meta)||n.Network.Unknown;return v(t.accounts,e)})),l=f.filter(Boolean),h=i||this.options.config.defaultNetwork):(d=n.getBlockChainNameFromId(u.chainId||n.Network.Unknown,this.meta)||n.Network.Unknown,l=v(u.accounts,d),h=d),l.length>0&&this.updateState({accounts:l,network:h}),t.abrupt("return",{accounts:this.state.accounts,network:this.state.network,provider:this.provider});case 36:case"end":return t.stop()}}),t,this,[[20,26]])})));return function(e){return t.apply(this,arguments)}}(),e.disconnect=function(){var t=s(a().mark((function t(){var e=this;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:this.resetState(),this.actions.disconnect&&this.actions.disconnect({instance:this.provider,destroyInstance:function(){e.setProvider(null)}});case 2:case"end":return t.stop()}}),t,this)})));return function(){return t.apply(this,arguments)}}(),e.getSigners=function(t){return this.actions.getSigners(t)},e.getWalletInfo=function(t){return this.actions.getWalletInfo(t)},e.canSwitchNetworkTo=function(t){var e=this.actions.canSwitchNetworkTo;return!!e&&e({network:t,meta:this.meta})},e.onInit=function(){this.options.config.isAsyncInstance||this.actions.getInstance()&&!this.state.installed&&this.setInstalledAs(!0)},e.setProvider=function(t){var e=this;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:function(t,r){var o=e.state.network;r&&(o=n.getBlockChainNameFromId(r,e.meta)||n.Network.Unknown);var i=v(t,o);i.length>0&&e.updateState({accounts:i})},updateChainId:function(t){var r=t?n.getBlockChainNameFromId(t,e.meta):n.Network.Unknown;e.updateState({network:r})}})},e.setMeta=function(t){this.meta=t},e.setHandler=function(t){this.options.handler=t},e.getState=function(){return this.state},e.updateState=function(t){var e=this,n=[];void 0!==t.connected&&(this.state.connected=t.connected,n.push([exports.Events.CONNECTED,t.connected])),void 0!==t.reachable&&(this.state.reachable=t.reachable,n.push([exports.Events.REACHABLE,t.reachable])),void 0!==t.installed&&(this.state.installed=t.installed,n.push([exports.Events.INSTALLED,t.installed])),void 0!==t.accounts&&(this.state.accounts=t.accounts,n.push([exports.Events.ACCOUNTS,t.accounts])),void 0!==t.network&&(this.state.network=t.network,n.push([exports.Events.NETWORK,t.network]));var r=this.getState();n.forEach((function(t){e.options.handler(e.options.config.type,t[0],t[1],r,e.meta)}))},e.resetState=function(){this.updateState({connected:!1,connecting:!1,reachable:!1,accounts:null,network:null})},e.setInstalledAs=function(t){(m(this.options)||!1!==t)&&this.updateState({installed:t})},e.tryGetInstance=function(){var t=s(a().mark((function t(e){var n,r,o,i;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=e.network,r=e.force,o=null,this.setProvider(null),!this.options.config.isAsyncInstance){t.next=11;break}return i={currentProvider:this.provider,meta:this.meta,force:r||!1},n&&(i.network=n),t.next=8,this.actions.getInstance(i);case 8:o=t.sent,t.next=12;break;case 11:o=this.actions.getInstance();case 12:if(o){t.next=17;break}throw this.setInstalledAs(!1),this.resetState(),new Error("It seems your selected wallet ("+this.options.config.type+") isn't installed.");case 17:return this.setProvider(o),t.abrupt("return",o);case 19:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),t}(),E=o.createContext({});function N(t,e){return function(n,r,o,i,a){t({type:"new_state",wallet:n,name:r,value:o}),e&&e(n,r,o,i,a)}}exports.Provider=function(t){var e=o.useReducer(d,{}),n=e[0],r=e[1],c=function(t){var e=o.useRef({});return function(n){var r=n.config.type;return void 0===e.current[r]&&(e.current[r]=new b({config:n.config,handler:t},n.actions)),e.current[r]}}(N(r,t.onUpdateState)),u=y(t.providers),l={connect:function(t,e){return s(a().mark((function n(){var r,o;return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(r=u.get(t)){n.next=3;break}throw new Error("You should add "+t+" to provider first.");case 3:return o=c(r),n.next=6,o.connect(e);case 6:return n.abrupt("return",n.sent);case 8:case"end":return n.stop()}}),n)})))()},disconnect:function(t){return s(a().mark((function e(){var n,r;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=u.get(t)){e.next=3;break}throw new Error("You should add "+t+" to provider first.");case 3:return r=c(n),e.next=6,r.disconnect();case 6:case"end":return e.stop()}}),e)})))()},disconnectAll:function(){return s(a().mark((function t(){var e;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e=[],w(n).forEach((function(t){var n=u.get(t);if(n){var r=c(n);e.push(r.disconnect())}})),t.next=4,Promise.allSettled(e);case 4:return t.abrupt("return",t.sent);case 5:case"end":return t.stop()}}),t)})))()},state:function(t){return n[t]||f},canSwitchNetworkTo:function(t,e){var n=u.get(t);if(!n)return!1;var r=c(n);return!!r.canSwitchNetworkTo&&r.canSwitchNetworkTo(e)},providers:function(){var t={};return g(n).forEach((function(e){var n=u.get(e);if(n){var r=c(n);t[e]=r.provider}})),t},getWalletInfo:function(e){var n=u.get(e);if(!n)throw new Error("You should add "+e+" to provider first.");return c(n).getWalletInfo(t.allBlockChains||[])},getSigners:function(e){var n=u.get(e);if(!n)throw new Error("You should add "+e+" to provider first.");var r=c(n),o=x(r.getWalletInfo(t.allBlockChains||[]).supportedChains,r.provider,e);return r.getSigners(o)}};return o.useEffect((function(){u.forEach((function(t){var e=c(t),n=function(){e.onInit&&e.onInit()};n(),document.addEventListener("readystatechange",(function t(e){e.target&&"complete"===e.target.readyState&&(n(),document.removeEventListener("readystatechange",t))}))}))}),[]),o.useEffect((function(){t.allBlockChains&&u.forEach((function(e){var n=c(e),r=n.getWalletInfo(t.allBlockChains||[]).supportedChains;n.setMeta(r)}))}),[t.allBlockChains]),o.useEffect((function(){u.forEach((function(e){c(e).setHandler(N(r,t.onUpdateState))}))}),[t.onUpdateState]),i.createElement(E.Provider,{value:l},t.children)},exports.accountAddressesWithNetwork=v,exports.availableWallets=g,exports.checkWalletProviders=y,exports.choose=function(t,e){return t.find((function(t){return t.type===e}))||null},exports.connectedWallets=w,exports.defaultWalletState=f,exports.formatAddressWithNetwork=p,exports.getComptaibleProvider=x,exports.isAsync=function(t){var e;return"AsyncFunction"===(null==t||null==(e=t.constructor)?void 0:e.name)},exports.isWalletDerivedFromWalletConnect=k,exports.needsCheckInstallation=m,exports.readAccountAddress=function(t){var e=t.split(":");return{network:e[0],address:e[1]}},exports.state_reducer=d,exports.useWallets=function(){var t=o.useContext(E);if(!t)throw Error("useWallet can only be used within the Provider component");return t};
|
|
2
2
|
//# sourceMappingURL=wallets-core.cjs.production.min.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallets-core.cjs.production.min.js","sources":["../src/types.ts","../src/helpers.ts","../src/wallet.ts","../src/provider.tsx"],"sourcesContent":["import { PropsWithChildren } from 'react';\nimport {\n Network,\n WalletType,\n BlockchainMeta,\n WalletInfo,\n WalletSigners,\n} from '@rango-dev/wallets-shared';\nimport {\n EventHandler as WalletEventHandler,\n State as WalletState,\n} from './wallet';\n\nexport type State = {\n [key in WalletType]?: WalletState;\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 type ProviderContext = {\n connect(type: WalletType, network?: Network): Promise<ConnectResult>;\n disconnect(type: WalletType): Promise<void>;\n disconnectAll(): Promise<PromiseSettledResult<any>[]>;\n state(type: WalletType): WalletState;\n canSwitchNetworkTo(type: WalletType, network: Network): boolean;\n providers(): Providers;\n getSigners(type: WalletType): WalletSigners;\n getWalletInfo(type: WalletType): WalletInfo;\n};\n\nexport type ProviderProps = PropsWithChildren<{\n onUpdateState?: WalletEventHandler;\n allBlockChains?: BlockchainMeta[];\n providers: WalletProvider[];\n}>;\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 force?: boolean;\n};\nexport type GetInstance =\n | (() => any)\n | ((options: GetInstanceOptions) => Promise<any>);\nexport type TryGetInstance =\n | (() => any)\n | ((options: Pick<GetInstanceOptions, 'force' | 'network'>) => Promise<any>);\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>;\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 CanSwitchNetwork = (options: {\n network: Network;\n meta: BlockchainMeta[];\n}) => boolean;\n\nexport interface WalletActions {\n connect: Connect;\n getInstance: any;\n disconnect?: Disconnect;\n subscribe?: Subscribe;\n // eagerConnect, // optional?\n // unsubscribe, // coupled to subscribe.\n\n // Optional, but should be provided at the same time.\n switchNetwork?: SwitchNetwork;\n getSigners: (provider: any) => WalletSigners;\n canSwitchNetworkTo?: CanSwitchNetwork;\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 WalletProvider = { config: WalletConfig } & WalletActions;\n","import WalletConnectProvider from '@walletconnect/ethereum-provider';\nimport {\n convertEvmBlockchainMetaToEvmChainInfo,\n evmChainsToRpcMap,\n Network,\n WalletType,\n isEvmBlockchain,\n BlockchainMeta,\n} from '@rango-dev/wallets-shared';\nimport { State, WalletProvider, WalletProviders } from './types';\nimport { Options, State as WalletState } from './wallet';\n\nexport function choose(wallets: any[], type: WalletType): any | null {\n return wallets.find((wallet) => wallet.type === type) || null;\n}\n\nexport const defaultWalletState: WalletState = {\n connected: false,\n connecting: false,\n reachable: false,\n installed: false,\n accounts: null,\n network: null,\n};\n\nexport function state_reducer(state: State, action: any) {\n if (action.type === 'new_state') {\n // TODO fix problem and remove ts-ignore\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const target_wallet = state[action.wallet];\n if (!target_wallet) {\n return {\n ...state,\n [action.wallet]: {\n ...defaultWalletState,\n [action.name]: action.value,\n },\n };\n }\n\n return {\n ...state,\n [action.wallet]: {\n ...target_wallet,\n [action.name]: action.value,\n },\n };\n }\n\n return state;\n}\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: network as Network,\n address,\n };\n}\n\nexport function connectedWallets(providersState: State): WalletType[] {\n return Object.entries(providersState)\n .filter(([, wallet_state]) => {\n return wallet_state?.connected;\n })\n .map(([type]) => {\n return type as WalletType;\n });\n}\n\nexport function availableWallets(providersState: State): WalletType[] {\n return Object.entries(providersState).map(([type]) => {\n return type as WalletType;\n });\n}\n\nexport function checkWalletProviders(list: WalletProvider[]): WalletProviders {\n const wallets: WalletProviders = new Map();\n\n list.forEach((provider) => {\n const { config, ...actions } = provider;\n wallets.set(config.type, {\n actions,\n config,\n });\n });\n\n return wallets;\n}\n\n/* eslint-disable @typescript-eslint/ban-types */\nexport function isAsync(fn: Function) {\n return fn?.constructor?.name === 'AsyncFunction';\n}\n\nexport function needsCheckInstallation(options: Options) {\n const { checkInstallation = true } = options.config;\n return checkInstallation;\n}\n\n/*\n WalletConnect instance is not compatible with ethers.providers.Web3Provider,\n Here we are returning a comptable instance, instead of the original one. \n*/\n\nexport function isWalletDerivedFromWalletConnect(wallet_type: WalletType) {\n return wallet_type === WalletType.WALLET_CONNECT;\n}\n\nexport function getComptaibleProvider(\n supportedChains: BlockchainMeta[],\n provider: any,\n type: WalletType\n) {\n if (isWalletDerivedFromWalletConnect(type)) {\n const evmBlockchains = supportedChains.filter(isEvmBlockchain);\n const rpcUrls = evmChainsToRpcMap(\n convertEvmBlockchainMetaToEvmChainInfo(evmBlockchains)\n );\n return new WalletConnectProvider({\n qrcode: false,\n rpc: rpcUrls,\n connector: provider,\n chainId: provider.chainId,\n });\n }\n return provider;\n}\n","import {\n BlockchainMeta,\n getBlockChainNameFromId,\n Network,\n WalletType,\n} from '@rango-dev/wallets-shared';\nimport { accountAddressesWithNetwork, needsCheckInstallation } from './helpers';\nimport {\n Events,\n GetInstanceOptions,\n WalletActions,\n WalletConfig,\n} 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\n async eagerConnection() {\n // Already connected, so we return provider that we have in memory.\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 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 // TODO: call actions.eagerConnection\n return null;\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 eagerConnection = await this.eagerConnection();\n const currentNetwork = this.state.network;\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 const requestedNetwork =\n network || currentNetwork || this.options.config.defaultNetwork;\n\n if (!!eagerConnection) {\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 eagerConnection;\n }\n if (networkChanged && !!this.actions.switchNetwork) {\n await this.actions.switchNetwork({\n instance: this.provider,\n meta: this.meta,\n // TODO: Fix type error\n // @ts-ignore\n network: requestedNetwork,\n newInstance: this.tryGetInstance.bind(this),\n });\n\n return {\n // Only network has been changed, so we reuse accounts from what we have already.\n accounts: eagerConnection.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 || Network.Unknown;\n // Try to map chainId with a Network, if not found, we use chainId directly.\n const network =\n getBlockChainNameFromId(chainId, this.meta) || Network.Unknown;\n // TODO: second parameter should be `string` when we decided to open source the package.\n return accountAddressesWithNetwork(\n blockchain.accounts,\n network as Network\n );\n });\n // Typescript can not detect we are filtering out null values:(\n nextAccounts = accounts.filter(Boolean) as string[];\n nextNetwork = requestedNetwork || this.options.config.defaultNetwork;\n } else {\n const chainId = connectResult.chainId || Network.Unknown;\n const network =\n getBlockChainNameFromId(chainId, this.meta) || Network.Unknown;\n // We fallback to current active network if `chainId` not provided.\n nextAccounts = accountAddressesWithNetwork(\n connectResult.accounts,\n network as Network\n );\n nextNetwork = network as 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 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) {\n const switchTo = this.actions.canSwitchNetworkTo;\n if (!switchTo) return false;\n\n return switchTo({\n network,\n meta: this.meta,\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 }\n }\n\n setProvider(value: any) {\n this.provider = value;\n\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) || Network.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: (chainId) => {\n const network = !!chainId\n ? getBlockChainNameFromId(chainId, this.meta)\n : Network.Unknown;\n this.updateState({\n network,\n });\n },\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 // We will notify handler after updating all the states.\n // Because when we call `handler` it will has latest states.\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.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 setInstalledAs(value: boolean) {\n if (!needsCheckInstallation(this.options) && value === false) return;\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 // 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 this.setProvider(null);\n\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 };\n\n if (network) {\n instanceOptions.network = network;\n }\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","import React, {\n createContext,\n useContext,\n useEffect,\n useReducer,\n useRef,\n} from 'react';\n\nimport {\n availableWallets,\n checkWalletProviders,\n connectedWallets,\n defaultWalletState,\n getComptaibleProvider,\n state_reducer,\n} from './helpers';\nimport {\n ProviderProps,\n ProviderContext,\n WalletActions,\n WalletConfig,\n} from './types';\nimport { WalletType } from '@rango-dev/wallets-shared';\n\nimport Wallet, { EventHandler as WalletEventHandler } from './wallet';\n\n// TODO fix lint problem\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nconst WalletContext = createContext<ProviderContext>({});\n\n/*\n Our event handler includes an internal state updater, and a notifier\n for the outside listener.\n On creating first wallet refrence, and on chaning `props.onUpdateState`\n we are using this function.\n*/\nfunction makeEventHandler(dispatcher: any, onUpdateState?: WalletEventHandler) {\n const handler: WalletEventHandler = (\n type,\n name,\n value,\n coreState,\n supportedChains\n ) => {\n const action = { type: 'new_state', wallet: type, name, value };\n // Update state\n dispatcher(action);\n\n // Giving the event to the outside listener\n if (onUpdateState) {\n onUpdateState(type, name, value, coreState, supportedChains);\n }\n };\n\n return handler;\n}\n\nfunction useInitializers(onChangeState: WalletEventHandler) {\n const availableWallets = useRef<{\n [key in WalletType]?: Wallet;\n }>({});\n\n function updater(wallet: {\n actions: WalletActions;\n config: WalletConfig;\n }): Wallet {\n const type = wallet.config.type;\n // We only update, if there is no instance available.\n if (typeof availableWallets.current[type] === 'undefined') {\n availableWallets.current[type] = new Wallet(\n {\n config: wallet.config,\n handler: onChangeState,\n },\n wallet.actions\n );\n }\n\n return availableWallets.current[type]!;\n }\n\n return updater;\n}\n\nfunction Provider(props: ProviderProps) {\n const [providersState, dispatch] = useReducer(state_reducer, {});\n\n const addWalletRef = useInitializers(\n makeEventHandler(dispatch, props.onUpdateState)\n );\n // const providersRef = useRef<{ [type in WalletType]?: any }>({});\n\n const listOfProviders = props.providers; \n const wallets = checkWalletProviders(listOfProviders);\n const api: ProviderContext = {\n // TODO: Fix type error\n // @ts-ignore\n async connect(type, network) {\n const wallet = wallets.get(type);\n if (!wallet) {\n throw new Error(`You should add ${type} to provider first.`);\n }\n\n const ref = addWalletRef(wallet);\n const result = await ref.connect(network);\n\n return result;\n },\n async disconnect(type) {\n const wallet = wallets.get(type);\n if (!wallet) {\n throw new Error(`You should add ${type} to provider first.`);\n }\n\n const ref = addWalletRef(wallet);\n await ref.disconnect();\n },\n async disconnectAll() {\n const disconnect_promises: Promise<any>[] = [];\n\n // When a wallet is initializing, a record will be added to `providersState`\n // So we use them to know what wallet has been initialized then we need to\n // filter connected wallets only.\n connectedWallets(providersState).forEach((type) => {\n const wallet = wallets.get(type);\n\n if (!!wallet) {\n const ref = addWalletRef(wallet);\n disconnect_promises.push(ref.disconnect());\n }\n });\n\n return await Promise.allSettled(disconnect_promises);\n },\n state(type) {\n return providersState[type] || defaultWalletState;\n },\n canSwitchNetworkTo(type, network) {\n const wallet = wallets.get(type);\n if (!wallet) {\n return false;\n }\n\n const ref = addWalletRef(wallet);\n return ref.canSwitchNetworkTo ? ref.canSwitchNetworkTo(network) : false;\n },\n providers() {\n const providers: { [type in WalletType]?: any } = {};\n availableWallets(providersState).forEach((type) => {\n const wallet = wallets.get(type);\n if (!!wallet) {\n const ref = addWalletRef(wallet);\n providers[type] = ref.provider;\n }\n });\n\n return providers;\n },\n getWalletInfo(type) {\n const wallet = wallets.get(type);\n if (!wallet) {\n throw new Error(`You should add ${type} to provider first.`);\n }\n\n const ref = addWalletRef(wallet);\n const result = ref.getWalletInfo(props.allBlockChains || []);\n\n return result;\n },\n getSigners(type) {\n const wallet = wallets.get(type);\n\n if (!wallet) {\n throw new Error(`You should add ${type} to provider first.`);\n }\n const ref = addWalletRef(wallet);\n const supportedChains = ref.getWalletInfo(\n props.allBlockChains || []\n ).supportedChains;\n const provider = getComptaibleProvider(\n supportedChains,\n ref.provider,\n type\n );\n const result = ref.getSigners(provider);\n\n return result;\n },\n };\n\n useEffect(() => {\n wallets.forEach((wallet) => {\n const ref = addWalletRef(wallet);\n const runOnInit = () => {\n if (!!ref.onInit) {\n ref.onInit();\n }\n };\n\n const initWhenPageIsReady = (event: Event) => {\n if (\n event.target &&\n (event.target as Document).readyState === 'complete'\n ) {\n runOnInit();\n\n document.removeEventListener('readystatechange', initWhenPageIsReady);\n }\n };\n\n // Try to run, maybe it's ready.\n runOnInit();\n\n // Try again when the page has been completely loaded.\n // Some of wallets, take some time to be fully injected and loaded.\n document.addEventListener('readystatechange', initWhenPageIsReady);\n });\n }, []);\n\n useEffect(() => {\n const allBlockChains = props.allBlockChains;\n if (!!allBlockChains) {\n wallets.forEach((wallet) => {\n const ref = addWalletRef(wallet);\n const supportedChains = ref.getWalletInfo(\n props.allBlockChains || []\n ).supportedChains;\n ref.setMeta(supportedChains);\n });\n }\n }, [props.allBlockChains]);\n\n useEffect(() => {\n wallets.forEach((wallet) => {\n const ref = addWalletRef(wallet);\n ref.setHandler(makeEventHandler(dispatch, props.onUpdateState));\n });\n }, [props.onUpdateState]);\n\n return (\n <WalletContext.Provider value={api}>\n {props.children}\n </WalletContext.Provider>\n );\n}\n\nexport function useWallets(): ProviderContext {\n const context = useContext(WalletContext);\n if (!context)\n throw Error('useWallet can only be used within the Provider component');\n return context;\n}\n\nexport default Provider;\n"],"names":["Events","defaultWalletState","connected","connecting","reachable","installed","accounts","network","state_reducer","state","action","type","target_wallet","wallet","name","value","formatAddressWithNetwork","address","accountAddressesWithNetwork","addresses","map","connectedWallets","providersState","Object","entries","filter","wallet_state","availableWallets","checkWalletProviders","list","wallets","Map","forEach","provider","config","actions","set","needsCheckInstallation","options","checkInstallation","isWalletDerivedFromWalletConnect","wallet_type","WalletType","WALLET_CONNECT","getComptaibleProvider","supportedChains","evmBlockchains","isEvmBlockchain","rpcUrls","evmChainsToRpcMap","convertEvmBlockchainMetaToEvmChainInfo","WalletConnectProvider","qrcode","rpc","connector","chainId","Wallet","this","meta","setInstalledAs","_proto","eagerConnection","_context","connect","_context2","Error","currentNetwork","requestedNetwork","defaultNetwork","networkChanged","switchNetwork","instance","newInstance","tryGetInstance","bind","updateState","undefined","connectResult","resetState","nextAccounts","nextNetwork","Array","isArray","flatMap","blockchain","getBlockChainNameFromId","Network","Unknown","_this","Boolean","length","disconnect","destroyInstance","_this2","setProvider","getSigners","getWalletInfo","allBlockChains","canSwitchNetworkTo","switchTo","onInit","isAsyncInstance","getInstance","subscribe","updateAccounts","_this3","updateChainId","setMeta","setHandler","handler","getState","states","updates","push","CONNECTED","REACHABLE","INSTALLED","ACCOUNTS","NETWORK","_this4","force","_context4","instanceOptions","currentProvider","WalletContext","createContext","makeEventHandler","dispatcher","onUpdateState","coreState","props","useReducer","dispatch","addWalletRef","onChangeState","useRef","current","useInitializers","providers","api","get","ref","disconnectAll","disconnect_promises","_context3","Promise","allSettled","useEffect","runOnInit","document","addEventListener","initWhenPageIsReady","event","target","readyState","removeEventListener","React","Provider","children","find","fn","constructor","_fn$constructor","addressWithNetwork","split","context","useContext"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"wallets-core.cjs.production.min.js","sources":["../src/types.ts","../src/helpers.ts","../src/wallet.ts","../src/provider.tsx"],"sourcesContent":["import { PropsWithChildren } from 'react';\nimport { Network, WalletType, WalletInfo } from '@rango-dev/wallets-shared';\nimport {\n EventHandler as WalletEventHandler,\n State as WalletState,\n} from './wallet';\nimport { SignerFactory, BlockchainMeta } from 'rango-types';\n\nexport type State = {\n [key in WalletType]?: WalletState;\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 type ProviderContext = {\n connect(type: WalletType, network?: Network): Promise<ConnectResult>;\n disconnect(type: WalletType): Promise<void>;\n disconnectAll(): Promise<PromiseSettledResult<any>[]>;\n state(type: WalletType): WalletState;\n canSwitchNetworkTo(type: WalletType, network: Network): boolean;\n providers(): Providers;\n getSigners(type: WalletType): SignerFactory;\n getWalletInfo(type: WalletType): WalletInfo;\n};\n\nexport type ProviderProps = PropsWithChildren<{\n onUpdateState?: WalletEventHandler;\n allBlockChains?: BlockchainMeta[];\n providers: WalletProvider[];\n}>;\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 force?: boolean;\n};\nexport type GetInstance =\n | (() => any)\n | ((options: GetInstanceOptions) => Promise<any>);\nexport type TryGetInstance =\n | (() => any)\n | ((options: Pick<GetInstanceOptions, 'force' | 'network'>) => Promise<any>);\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>;\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 CanSwitchNetwork = (options: {\n network: Network;\n meta: BlockchainMeta[];\n}) => boolean;\n\nexport interface WalletActions {\n connect: Connect;\n getInstance: any;\n disconnect?: Disconnect;\n subscribe?: Subscribe;\n // eagerConnect, // optional?\n // unsubscribe, // coupled to subscribe.\n\n // Optional, but should be provided at the same time.\n switchNetwork?: SwitchNetwork;\n getSigners: (provider: any) => SignerFactory;\n canSwitchNetworkTo?: CanSwitchNetwork;\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 WalletProvider = { config: WalletConfig } & WalletActions;\n","import WalletConnectProvider from '@walletconnect/ethereum-provider';\nimport {\n convertEvmBlockchainMetaToEvmChainInfo,\n evmChainsToRpcMap,\n Network,\n WalletType,\n} from '@rango-dev/wallets-shared';\nimport { State, WalletProvider, WalletProviders } from './types';\nimport { Options, State as WalletState } from './wallet';\nimport { BlockchainMeta, isEvmBlockchain } from 'rango-types';\n\nexport function choose(wallets: any[], type: WalletType): any | null {\n return wallets.find((wallet) => wallet.type === type) || null;\n}\n\nexport const defaultWalletState: WalletState = {\n connected: false,\n connecting: false,\n reachable: false,\n installed: false,\n accounts: null,\n network: null,\n};\n\nexport function state_reducer(state: State, action: any) {\n if (action.type === 'new_state') {\n // TODO fix problem and remove ts-ignore\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const target_wallet = state[action.wallet];\n if (!target_wallet) {\n return {\n ...state,\n [action.wallet]: {\n ...defaultWalletState,\n [action.name]: action.value,\n },\n };\n }\n\n return {\n ...state,\n [action.wallet]: {\n ...target_wallet,\n [action.name]: action.value,\n },\n };\n }\n\n return state;\n}\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: network as Network,\n address,\n };\n}\n\nexport function connectedWallets(providersState: State): WalletType[] {\n return Object.entries(providersState)\n .filter(([, wallet_state]) => {\n return wallet_state?.connected;\n })\n .map(([type]) => {\n return type as WalletType;\n });\n}\n\nexport function availableWallets(providersState: State): WalletType[] {\n return Object.entries(providersState).map(([type]) => {\n return type as WalletType;\n });\n}\n\nexport function checkWalletProviders(list: WalletProvider[]): WalletProviders {\n const wallets: WalletProviders = new Map();\n\n list.forEach((provider) => {\n const { config, ...actions } = provider;\n wallets.set(config.type, {\n actions,\n config,\n });\n });\n\n return wallets;\n}\n\n/* eslint-disable @typescript-eslint/ban-types */\nexport function isAsync(fn: Function) {\n return fn?.constructor?.name === 'AsyncFunction';\n}\n\nexport function needsCheckInstallation(options: Options) {\n const { checkInstallation = true } = options.config;\n return checkInstallation;\n}\n\n/*\n WalletConnect instance is not compatible with ethers.providers.Web3Provider,\n Here we are returning a comptable instance, instead of the original one. \n*/\n\nexport function isWalletDerivedFromWalletConnect(wallet_type: WalletType) {\n return wallet_type === WalletType.WALLET_CONNECT;\n}\n\nexport function getComptaibleProvider(\n supportedChains: BlockchainMeta[],\n provider: any,\n type: WalletType\n) {\n if (isWalletDerivedFromWalletConnect(type)) {\n const evmBlockchains = supportedChains.filter(isEvmBlockchain);\n const rpcUrls = evmChainsToRpcMap(\n convertEvmBlockchainMetaToEvmChainInfo(evmBlockchains)\n );\n return new WalletConnectProvider({\n qrcode: false,\n rpc: rpcUrls,\n connector: provider,\n chainId: provider.chainId,\n });\n }\n return provider;\n}\n","import {\n getBlockChainNameFromId,\n Network,\n WalletType,\n} from '@rango-dev/wallets-shared';\nimport { accountAddressesWithNetwork, needsCheckInstallation } from './helpers';\nimport {\n Events,\n GetInstanceOptions,\n WalletActions,\n WalletConfig,\n} from './types';\nimport { BlockchainMeta } from 'rango-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\n async eagerConnection() {\n // Already connected, so we return provider that we have in memory.\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 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 // TODO: call actions.eagerConnection\n return null;\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 eagerConnection = await this.eagerConnection();\n const currentNetwork = this.state.network;\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 const requestedNetwork =\n network || currentNetwork || this.options.config.defaultNetwork;\n\n if (!!eagerConnection) {\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 eagerConnection;\n }\n if (networkChanged && !!this.actions.switchNetwork) {\n await this.actions.switchNetwork({\n instance: this.provider,\n meta: this.meta,\n // TODO: Fix type error\n // @ts-ignore\n network: requestedNetwork,\n newInstance: this.tryGetInstance.bind(this),\n });\n\n return {\n // Only network has been changed, so we reuse accounts from what we have already.\n accounts: eagerConnection.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 || Network.Unknown;\n // Try to map chainId with a Network, if not found, we use chainId directly.\n const network =\n getBlockChainNameFromId(chainId, this.meta) || Network.Unknown;\n // TODO: second parameter should be `string` when we decided to open source the package.\n return accountAddressesWithNetwork(\n blockchain.accounts,\n network as Network\n );\n });\n // Typescript can not detect we are filtering out null values:(\n nextAccounts = accounts.filter(Boolean) as string[];\n nextNetwork = requestedNetwork || this.options.config.defaultNetwork;\n } else {\n const chainId = connectResult.chainId || Network.Unknown;\n const network =\n getBlockChainNameFromId(chainId, this.meta) || Network.Unknown;\n // We fallback to current active network if `chainId` not provided.\n nextAccounts = accountAddressesWithNetwork(\n connectResult.accounts,\n network as Network\n );\n nextNetwork = network as 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 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) {\n const switchTo = this.actions.canSwitchNetworkTo;\n if (!switchTo) return false;\n\n return switchTo({\n network,\n meta: this.meta,\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 }\n }\n\n setProvider(value: any) {\n this.provider = value;\n\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) || Network.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: (chainId) => {\n const network = !!chainId\n ? getBlockChainNameFromId(chainId, this.meta)\n : Network.Unknown;\n this.updateState({\n network,\n });\n },\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 // We will notify handler after updating all the states.\n // Because when we call `handler` it will has latest states.\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.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 setInstalledAs(value: boolean) {\n if (!needsCheckInstallation(this.options) && value === false) return;\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 // 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 this.setProvider(null);\n\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 };\n\n if (network) {\n instanceOptions.network = network;\n }\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","import React, {\n createContext,\n useContext,\n useEffect,\n useReducer,\n useRef,\n} from 'react';\n\nimport {\n availableWallets,\n checkWalletProviders,\n connectedWallets,\n defaultWalletState,\n getComptaibleProvider,\n state_reducer,\n} from './helpers';\nimport {\n ProviderProps,\n ProviderContext,\n WalletActions,\n WalletConfig,\n} from './types';\nimport { WalletType } from '@rango-dev/wallets-shared';\n\nimport Wallet, { EventHandler as WalletEventHandler } from './wallet';\n\n// TODO fix lint problem\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nconst WalletContext = createContext<ProviderContext>({});\n\n/*\n Our event handler includes an internal state updater, and a notifier\n for the outside listener.\n On creating first wallet refrence, and on chaning `props.onUpdateState`\n we are using this function.\n*/\nfunction makeEventHandler(dispatcher: any, onUpdateState?: WalletEventHandler) {\n const handler: WalletEventHandler = (\n type,\n name,\n value,\n coreState,\n supportedChains\n ) => {\n const action = { type: 'new_state', wallet: type, name, value };\n // Update state\n dispatcher(action);\n\n // Giving the event to the outside listener\n if (onUpdateState) {\n onUpdateState(type, name, value, coreState, supportedChains);\n }\n };\n\n return handler;\n}\n\nfunction useInitializers(onChangeState: WalletEventHandler) {\n const availableWallets = useRef<{\n [key in WalletType]?: Wallet;\n }>({});\n\n function updater(wallet: {\n actions: WalletActions;\n config: WalletConfig;\n }): Wallet {\n const type = wallet.config.type;\n // We only update, if there is no instance available.\n if (typeof availableWallets.current[type] === 'undefined') {\n availableWallets.current[type] = new Wallet(\n {\n config: wallet.config,\n handler: onChangeState,\n },\n wallet.actions\n );\n }\n\n return availableWallets.current[type]!;\n }\n\n return updater;\n}\n\nfunction Provider(props: ProviderProps) {\n const [providersState, dispatch] = useReducer(state_reducer, {});\n\n const addWalletRef = useInitializers(\n makeEventHandler(dispatch, props.onUpdateState)\n );\n // const providersRef = useRef<{ [type in WalletType]?: any }>({});\n\n const listOfProviders = props.providers; \n const wallets = checkWalletProviders(listOfProviders);\n const api: ProviderContext = {\n // TODO: Fix type error\n // @ts-ignore\n async connect(type, network) {\n const wallet = wallets.get(type);\n if (!wallet) {\n throw new Error(`You should add ${type} to provider first.`);\n }\n\n const ref = addWalletRef(wallet);\n const result = await ref.connect(network);\n\n return result;\n },\n async disconnect(type) {\n const wallet = wallets.get(type);\n if (!wallet) {\n throw new Error(`You should add ${type} to provider first.`);\n }\n\n const ref = addWalletRef(wallet);\n await ref.disconnect();\n },\n async disconnectAll() {\n const disconnect_promises: Promise<any>[] = [];\n\n // When a wallet is initializing, a record will be added to `providersState`\n // So we use them to know what wallet has been initialized then we need to\n // filter connected wallets only.\n connectedWallets(providersState).forEach((type) => {\n const wallet = wallets.get(type);\n\n if (!!wallet) {\n const ref = addWalletRef(wallet);\n disconnect_promises.push(ref.disconnect());\n }\n });\n\n return await Promise.allSettled(disconnect_promises);\n },\n state(type) {\n return providersState[type] || defaultWalletState;\n },\n canSwitchNetworkTo(type, network) {\n const wallet = wallets.get(type);\n if (!wallet) {\n return false;\n }\n\n const ref = addWalletRef(wallet);\n return ref.canSwitchNetworkTo ? ref.canSwitchNetworkTo(network) : false;\n },\n providers() {\n const providers: { [type in WalletType]?: any } = {};\n availableWallets(providersState).forEach((type) => {\n const wallet = wallets.get(type);\n if (!!wallet) {\n const ref = addWalletRef(wallet);\n providers[type] = ref.provider;\n }\n });\n\n return providers;\n },\n getWalletInfo(type) {\n const wallet = wallets.get(type);\n if (!wallet) {\n throw new Error(`You should add ${type} to provider first.`);\n }\n\n const ref = addWalletRef(wallet);\n const result = ref.getWalletInfo(props.allBlockChains || []);\n\n return result;\n },\n getSigners(type) {\n const wallet = wallets.get(type);\n\n if (!wallet) {\n throw new Error(`You should add ${type} to provider first.`);\n }\n const ref = addWalletRef(wallet);\n const supportedChains = ref.getWalletInfo(\n props.allBlockChains || []\n ).supportedChains;\n const provider = getComptaibleProvider(\n supportedChains,\n ref.provider,\n type\n );\n const result = ref.getSigners(provider);\n\n return result;\n },\n };\n\n useEffect(() => {\n wallets.forEach((wallet) => {\n const ref = addWalletRef(wallet);\n const runOnInit = () => {\n if (!!ref.onInit) {\n ref.onInit();\n }\n };\n\n const initWhenPageIsReady = (event: Event) => {\n if (\n event.target &&\n (event.target as Document).readyState === 'complete'\n ) {\n runOnInit();\n\n document.removeEventListener('readystatechange', initWhenPageIsReady);\n }\n };\n\n // Try to run, maybe it's ready.\n runOnInit();\n\n // Try again when the page has been completely loaded.\n // Some of wallets, take some time to be fully injected and loaded.\n document.addEventListener('readystatechange', initWhenPageIsReady);\n });\n }, []);\n\n useEffect(() => {\n const allBlockChains = props.allBlockChains;\n if (!!allBlockChains) {\n wallets.forEach((wallet) => {\n const ref = addWalletRef(wallet);\n const supportedChains = ref.getWalletInfo(\n props.allBlockChains || []\n ).supportedChains;\n ref.setMeta(supportedChains);\n });\n }\n }, [props.allBlockChains]);\n\n useEffect(() => {\n wallets.forEach((wallet) => {\n const ref = addWalletRef(wallet);\n ref.setHandler(makeEventHandler(dispatch, props.onUpdateState));\n });\n }, [props.onUpdateState]);\n\n return (\n <WalletContext.Provider value={api}>\n {props.children}\n </WalletContext.Provider>\n );\n}\n\nexport function useWallets(): ProviderContext {\n const context = useContext(WalletContext);\n if (!context)\n throw Error('useWallet can only be used within the Provider component');\n return context;\n}\n\nexport default Provider;\n"],"names":["Events","defaultWalletState","connected","connecting","reachable","installed","accounts","network","state_reducer","state","action","type","_extends4","_extends5","_extends2","_extends3","target_wallet","wallet","_extends","name","value","formatAddressWithNetwork","address","accountAddressesWithNetwork","addresses","map","connectedWallets","providersState","Object","entries","filter","_ref","wallet_state","_ref2","availableWallets","_ref3","checkWalletProviders","list","wallets","Map","forEach","provider","config","actions","_objectWithoutPropertiesLoose","_excluded","set","needsCheckInstallation","options","_options$config$check","checkInstallation","isWalletDerivedFromWalletConnect","wallet_type","WalletType","WALLET_CONNECT","getComptaibleProvider","supportedChains","evmBlockchains","isEvmBlockchain","rpcUrls","evmChainsToRpcMap","convertEvmBlockchainMetaToEvmChainInfo","WalletConnectProvider","qrcode","rpc","connector","chainId","Wallet","this","meta","setInstalledAs","_proto","prototype","eagerConnection","_eagerConnection","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_context","prev","next","abrupt","stop","apply","arguments","connect","_connect","_callee2","currentNetwork","requestedNetwork","networkChanged","instance","connectResult","nextAccounts","nextNetwork","_network","_this","_context2","Error","defaultNetwork","sent","switchNetwork","newInstance","tryGetInstance","bind","updateState","undefined","t0","resetState","Array","isArray","flatMap","blockchain","getBlockChainNameFromId","Network","Unknown","Boolean","length","_x","disconnect","_disconnect","_callee3","_this2","_context3","destroyInstance","setProvider","getSigners","getWalletInfo","allBlockChains","canSwitchNetworkTo","switchTo","onInit","isAsyncInstance","getInstance","subscribe","updateAccounts","_this3","updateChainId","setMeta","setHandler","handler","getState","states","updates","push","CONNECTED","REACHABLE","INSTALLED","ACCOUNTS","NETWORK","_this4","_tryGetInstance","_callee4","force","instanceOptions","_context4","currentProvider","_x2","WalletContext","createContext","makeEventHandler","dispatcher","onUpdateState","coreState","props","_useReducer","useReducer","dispatch","addWalletRef","onChangeState","useRef","current","useInitializers","providers","api","get","ref","disconnectAll","disconnect_promises","Promise","allSettled","useEffect","runOnInit","document","addEventListener","initWhenPageIsReady","event","target","readyState","removeEventListener","React","Provider","children","find","fn","_fn$constructor","constructor","addressWithNetwork","_addressWithNetwork$s","split","context","useContext"],"mappings":"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"}
|
package/dist/wallets-core.esm.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import WalletConnectProvider from '@walletconnect/ethereum-provider';
|
|
2
|
-
import { WalletType,
|
|
2
|
+
import { WalletType, evmChainsToRpcMap, convertEvmBlockchainMetaToEvmChainInfo, getBlockChainNameFromId, Network } from '@rango-dev/wallets-shared';
|
|
3
|
+
import { isEvmBlockchain } from 'rango-types';
|
|
3
4
|
import React, { useReducer, useEffect, useContext, createContext, useRef } from 'react';
|
|
4
5
|
|
|
5
6
|
function _regeneratorRuntime() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallets-core.esm.js","sources":["../src/helpers.ts","../src/types.ts","../src/wallet.ts","../src/provider.tsx"],"sourcesContent":["import WalletConnectProvider from '@walletconnect/ethereum-provider';\nimport {\n convertEvmBlockchainMetaToEvmChainInfo,\n evmChainsToRpcMap,\n Network,\n WalletType,\n isEvmBlockchain,\n BlockchainMeta,\n} from '@rango-dev/wallets-shared';\nimport { State, WalletProvider, WalletProviders } from './types';\nimport { Options, State as WalletState } from './wallet';\n\nexport function choose(wallets: any[], type: WalletType): any | null {\n return wallets.find((wallet) => wallet.type === type) || null;\n}\n\nexport const defaultWalletState: WalletState = {\n connected: false,\n connecting: false,\n reachable: false,\n installed: false,\n accounts: null,\n network: null,\n};\n\nexport function state_reducer(state: State, action: any) {\n if (action.type === 'new_state') {\n // TODO fix problem and remove ts-ignore\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const target_wallet = state[action.wallet];\n if (!target_wallet) {\n return {\n ...state,\n [action.wallet]: {\n ...defaultWalletState,\n [action.name]: action.value,\n },\n };\n }\n\n return {\n ...state,\n [action.wallet]: {\n ...target_wallet,\n [action.name]: action.value,\n },\n };\n }\n\n return state;\n}\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: network as Network,\n address,\n };\n}\n\nexport function connectedWallets(providersState: State): WalletType[] {\n return Object.entries(providersState)\n .filter(([, wallet_state]) => {\n return wallet_state?.connected;\n })\n .map(([type]) => {\n return type as WalletType;\n });\n}\n\nexport function availableWallets(providersState: State): WalletType[] {\n return Object.entries(providersState).map(([type]) => {\n return type as WalletType;\n });\n}\n\nexport function checkWalletProviders(list: WalletProvider[]): WalletProviders {\n const wallets: WalletProviders = new Map();\n\n list.forEach((provider) => {\n const { config, ...actions } = provider;\n wallets.set(config.type, {\n actions,\n config,\n });\n });\n\n return wallets;\n}\n\n/* eslint-disable @typescript-eslint/ban-types */\nexport function isAsync(fn: Function) {\n return fn?.constructor?.name === 'AsyncFunction';\n}\n\nexport function needsCheckInstallation(options: Options) {\n const { checkInstallation = true } = options.config;\n return checkInstallation;\n}\n\n/*\n WalletConnect instance is not compatible with ethers.providers.Web3Provider,\n Here we are returning a comptable instance, instead of the original one. \n*/\n\nexport function isWalletDerivedFromWalletConnect(wallet_type: WalletType) {\n return wallet_type === WalletType.WALLET_CONNECT;\n}\n\nexport function getComptaibleProvider(\n supportedChains: BlockchainMeta[],\n provider: any,\n type: WalletType\n) {\n if (isWalletDerivedFromWalletConnect(type)) {\n const evmBlockchains = supportedChains.filter(isEvmBlockchain);\n const rpcUrls = evmChainsToRpcMap(\n convertEvmBlockchainMetaToEvmChainInfo(evmBlockchains)\n );\n return new WalletConnectProvider({\n qrcode: false,\n rpc: rpcUrls,\n connector: provider,\n chainId: provider.chainId,\n });\n }\n return provider;\n}\n","import { PropsWithChildren } from 'react';\nimport {\n Network,\n WalletType,\n BlockchainMeta,\n WalletInfo,\n WalletSigners,\n} from '@rango-dev/wallets-shared';\nimport {\n EventHandler as WalletEventHandler,\n State as WalletState,\n} from './wallet';\n\nexport type State = {\n [key in WalletType]?: WalletState;\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 type ProviderContext = {\n connect(type: WalletType, network?: Network): Promise<ConnectResult>;\n disconnect(type: WalletType): Promise<void>;\n disconnectAll(): Promise<PromiseSettledResult<any>[]>;\n state(type: WalletType): WalletState;\n canSwitchNetworkTo(type: WalletType, network: Network): boolean;\n providers(): Providers;\n getSigners(type: WalletType): WalletSigners;\n getWalletInfo(type: WalletType): WalletInfo;\n};\n\nexport type ProviderProps = PropsWithChildren<{\n onUpdateState?: WalletEventHandler;\n allBlockChains?: BlockchainMeta[];\n providers: WalletProvider[];\n}>;\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 force?: boolean;\n};\nexport type GetInstance =\n | (() => any)\n | ((options: GetInstanceOptions) => Promise<any>);\nexport type TryGetInstance =\n | (() => any)\n | ((options: Pick<GetInstanceOptions, 'force' | 'network'>) => Promise<any>);\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>;\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 CanSwitchNetwork = (options: {\n network: Network;\n meta: BlockchainMeta[];\n}) => boolean;\n\nexport interface WalletActions {\n connect: Connect;\n getInstance: any;\n disconnect?: Disconnect;\n subscribe?: Subscribe;\n // eagerConnect, // optional?\n // unsubscribe, // coupled to subscribe.\n\n // Optional, but should be provided at the same time.\n switchNetwork?: SwitchNetwork;\n getSigners: (provider: any) => WalletSigners;\n canSwitchNetworkTo?: CanSwitchNetwork;\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 WalletProvider = { config: WalletConfig } & WalletActions;\n","import {\n BlockchainMeta,\n getBlockChainNameFromId,\n Network,\n WalletType,\n} from '@rango-dev/wallets-shared';\nimport { accountAddressesWithNetwork, needsCheckInstallation } from './helpers';\nimport {\n Events,\n GetInstanceOptions,\n WalletActions,\n WalletConfig,\n} 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\n async eagerConnection() {\n // Already connected, so we return provider that we have in memory.\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 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 // TODO: call actions.eagerConnection\n return null;\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 eagerConnection = await this.eagerConnection();\n const currentNetwork = this.state.network;\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 const requestedNetwork =\n network || currentNetwork || this.options.config.defaultNetwork;\n\n if (!!eagerConnection) {\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 eagerConnection;\n }\n if (networkChanged && !!this.actions.switchNetwork) {\n await this.actions.switchNetwork({\n instance: this.provider,\n meta: this.meta,\n // TODO: Fix type error\n // @ts-ignore\n network: requestedNetwork,\n newInstance: this.tryGetInstance.bind(this),\n });\n\n return {\n // Only network has been changed, so we reuse accounts from what we have already.\n accounts: eagerConnection.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 || Network.Unknown;\n // Try to map chainId with a Network, if not found, we use chainId directly.\n const network =\n getBlockChainNameFromId(chainId, this.meta) || Network.Unknown;\n // TODO: second parameter should be `string` when we decided to open source the package.\n return accountAddressesWithNetwork(\n blockchain.accounts,\n network as Network\n );\n });\n // Typescript can not detect we are filtering out null values:(\n nextAccounts = accounts.filter(Boolean) as string[];\n nextNetwork = requestedNetwork || this.options.config.defaultNetwork;\n } else {\n const chainId = connectResult.chainId || Network.Unknown;\n const network =\n getBlockChainNameFromId(chainId, this.meta) || Network.Unknown;\n // We fallback to current active network if `chainId` not provided.\n nextAccounts = accountAddressesWithNetwork(\n connectResult.accounts,\n network as Network\n );\n nextNetwork = network as 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 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) {\n const switchTo = this.actions.canSwitchNetworkTo;\n if (!switchTo) return false;\n\n return switchTo({\n network,\n meta: this.meta,\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 }\n }\n\n setProvider(value: any) {\n this.provider = value;\n\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) || Network.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: (chainId) => {\n const network = !!chainId\n ? getBlockChainNameFromId(chainId, this.meta)\n : Network.Unknown;\n this.updateState({\n network,\n });\n },\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 // We will notify handler after updating all the states.\n // Because when we call `handler` it will has latest states.\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.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 setInstalledAs(value: boolean) {\n if (!needsCheckInstallation(this.options) && value === false) return;\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 // 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 this.setProvider(null);\n\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 };\n\n if (network) {\n instanceOptions.network = network;\n }\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","import React, {\n createContext,\n useContext,\n useEffect,\n useReducer,\n useRef,\n} from 'react';\n\nimport {\n availableWallets,\n checkWalletProviders,\n connectedWallets,\n defaultWalletState,\n getComptaibleProvider,\n state_reducer,\n} from './helpers';\nimport {\n ProviderProps,\n ProviderContext,\n WalletActions,\n WalletConfig,\n} from './types';\nimport { WalletType } from '@rango-dev/wallets-shared';\n\nimport Wallet, { EventHandler as WalletEventHandler } from './wallet';\n\n// TODO fix lint problem\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nconst WalletContext = createContext<ProviderContext>({});\n\n/*\n Our event handler includes an internal state updater, and a notifier\n for the outside listener.\n On creating first wallet refrence, and on chaning `props.onUpdateState`\n we are using this function.\n*/\nfunction makeEventHandler(dispatcher: any, onUpdateState?: WalletEventHandler) {\n const handler: WalletEventHandler = (\n type,\n name,\n value,\n coreState,\n supportedChains\n ) => {\n const action = { type: 'new_state', wallet: type, name, value };\n // Update state\n dispatcher(action);\n\n // Giving the event to the outside listener\n if (onUpdateState) {\n onUpdateState(type, name, value, coreState, supportedChains);\n }\n };\n\n return handler;\n}\n\nfunction useInitializers(onChangeState: WalletEventHandler) {\n const availableWallets = useRef<{\n [key in WalletType]?: Wallet;\n }>({});\n\n function updater(wallet: {\n actions: WalletActions;\n config: WalletConfig;\n }): Wallet {\n const type = wallet.config.type;\n // We only update, if there is no instance available.\n if (typeof availableWallets.current[type] === 'undefined') {\n availableWallets.current[type] = new Wallet(\n {\n config: wallet.config,\n handler: onChangeState,\n },\n wallet.actions\n );\n }\n\n return availableWallets.current[type]!;\n }\n\n return updater;\n}\n\nfunction Provider(props: ProviderProps) {\n const [providersState, dispatch] = useReducer(state_reducer, {});\n\n const addWalletRef = useInitializers(\n makeEventHandler(dispatch, props.onUpdateState)\n );\n // const providersRef = useRef<{ [type in WalletType]?: any }>({});\n\n const listOfProviders = props.providers; \n const wallets = checkWalletProviders(listOfProviders);\n const api: ProviderContext = {\n // TODO: Fix type error\n // @ts-ignore\n async connect(type, network) {\n const wallet = wallets.get(type);\n if (!wallet) {\n throw new Error(`You should add ${type} to provider first.`);\n }\n\n const ref = addWalletRef(wallet);\n const result = await ref.connect(network);\n\n return result;\n },\n async disconnect(type) {\n const wallet = wallets.get(type);\n if (!wallet) {\n throw new Error(`You should add ${type} to provider first.`);\n }\n\n const ref = addWalletRef(wallet);\n await ref.disconnect();\n },\n async disconnectAll() {\n const disconnect_promises: Promise<any>[] = [];\n\n // When a wallet is initializing, a record will be added to `providersState`\n // So we use them to know what wallet has been initialized then we need to\n // filter connected wallets only.\n connectedWallets(providersState).forEach((type) => {\n const wallet = wallets.get(type);\n\n if (!!wallet) {\n const ref = addWalletRef(wallet);\n disconnect_promises.push(ref.disconnect());\n }\n });\n\n return await Promise.allSettled(disconnect_promises);\n },\n state(type) {\n return providersState[type] || defaultWalletState;\n },\n canSwitchNetworkTo(type, network) {\n const wallet = wallets.get(type);\n if (!wallet) {\n return false;\n }\n\n const ref = addWalletRef(wallet);\n return ref.canSwitchNetworkTo ? ref.canSwitchNetworkTo(network) : false;\n },\n providers() {\n const providers: { [type in WalletType]?: any } = {};\n availableWallets(providersState).forEach((type) => {\n const wallet = wallets.get(type);\n if (!!wallet) {\n const ref = addWalletRef(wallet);\n providers[type] = ref.provider;\n }\n });\n\n return providers;\n },\n getWalletInfo(type) {\n const wallet = wallets.get(type);\n if (!wallet) {\n throw new Error(`You should add ${type} to provider first.`);\n }\n\n const ref = addWalletRef(wallet);\n const result = ref.getWalletInfo(props.allBlockChains || []);\n\n return result;\n },\n getSigners(type) {\n const wallet = wallets.get(type);\n\n if (!wallet) {\n throw new Error(`You should add ${type} to provider first.`);\n }\n const ref = addWalletRef(wallet);\n const supportedChains = ref.getWalletInfo(\n props.allBlockChains || []\n ).supportedChains;\n const provider = getComptaibleProvider(\n supportedChains,\n ref.provider,\n type\n );\n const result = ref.getSigners(provider);\n\n return result;\n },\n };\n\n useEffect(() => {\n wallets.forEach((wallet) => {\n const ref = addWalletRef(wallet);\n const runOnInit = () => {\n if (!!ref.onInit) {\n ref.onInit();\n }\n };\n\n const initWhenPageIsReady = (event: Event) => {\n if (\n event.target &&\n (event.target as Document).readyState === 'complete'\n ) {\n runOnInit();\n\n document.removeEventListener('readystatechange', initWhenPageIsReady);\n }\n };\n\n // Try to run, maybe it's ready.\n runOnInit();\n\n // Try again when the page has been completely loaded.\n // Some of wallets, take some time to be fully injected and loaded.\n document.addEventListener('readystatechange', initWhenPageIsReady);\n });\n }, []);\n\n useEffect(() => {\n const allBlockChains = props.allBlockChains;\n if (!!allBlockChains) {\n wallets.forEach((wallet) => {\n const ref = addWalletRef(wallet);\n const supportedChains = ref.getWalletInfo(\n props.allBlockChains || []\n ).supportedChains;\n ref.setMeta(supportedChains);\n });\n }\n }, [props.allBlockChains]);\n\n useEffect(() => {\n wallets.forEach((wallet) => {\n const ref = addWalletRef(wallet);\n ref.setHandler(makeEventHandler(dispatch, props.onUpdateState));\n });\n }, [props.onUpdateState]);\n\n return (\n <WalletContext.Provider value={api}>\n {props.children}\n </WalletContext.Provider>\n );\n}\n\nexport function useWallets(): ProviderContext {\n const context = useContext(WalletContext);\n if (!context)\n throw Error('useWallet can only be used within the Provider component');\n return context;\n}\n\nexport default Provider;\n"],"names":["choose","wallets","type","find","wallet","defaultWalletState","connected","connecting","reachable","installed","accounts","network","state_reducer","state","action","target_wallet","name","value","formatAddressWithNetwork","address","accountAddressesWithNetwork","addresses","map","readAccountAddress","addressWithNetwork","split","connectedWallets","providersState","Object","entries","filter","wallet_state","availableWallets","checkWalletProviders","list","Map","forEach","provider","config","actions","set","isAsync","fn","constructor","needsCheckInstallation","options","checkInstallation","isWalletDerivedFromWalletConnect","wallet_type","WalletType","WALLET_CONNECT","getComptaibleProvider","supportedChains","evmBlockchains","isEvmBlockchain","rpcUrls","evmChainsToRpcMap","convertEvmBlockchainMetaToEvmChainInfo","WalletConnectProvider","qrcode","rpc","connector","chainId","Events","Wallet","meta","setInstalledAs","eagerConnection","connect","Error","currentNetwork","requestedNetwork","defaultNetwork","networkChanged","switchNetwork","instance","newInstance","tryGetInstance","bind","updateState","undefined","connectResult","resetState","nextAccounts","nextNetwork","Array","isArray","flatMap","blockchain","Network","Unknown","getBlockChainNameFromId","Boolean","length","disconnect","destroyInstance","setProvider","getSigners","getWalletInfo","allBlockChains","canSwitchNetworkTo","switchTo","onInit","isAsyncInstance","getInstance","subscribe","updateAccounts","updateChainId","setMeta","setHandler","handler","getState","states","updates","push","CONNECTED","REACHABLE","INSTALLED","ACCOUNTS","NETWORK","force","instanceOptions","currentProvider","error_message","WalletContext","createContext","makeEventHandler","dispatcher","onUpdateState","coreState","useInitializers","onChangeState","useRef","updater","current","Provider","props","useReducer","dispatch","addWalletRef","listOfProviders","providers","api","get","ref","result","disconnectAll","disconnect_promises","Promise","allSettled","useEffect","runOnInit","initWhenPageIsReady","event","target","readyState","document","removeEventListener","addEventListener","React","children","useWallets","context","useContext"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"wallets-core.esm.js","sources":["../src/helpers.ts","../src/types.ts","../src/wallet.ts","../src/provider.tsx"],"sourcesContent":["import WalletConnectProvider from '@walletconnect/ethereum-provider';\nimport {\n convertEvmBlockchainMetaToEvmChainInfo,\n evmChainsToRpcMap,\n Network,\n WalletType,\n} from '@rango-dev/wallets-shared';\nimport { State, WalletProvider, WalletProviders } from './types';\nimport { Options, State as WalletState } from './wallet';\nimport { BlockchainMeta, isEvmBlockchain } from 'rango-types';\n\nexport function choose(wallets: any[], type: WalletType): any | null {\n return wallets.find((wallet) => wallet.type === type) || null;\n}\n\nexport const defaultWalletState: WalletState = {\n connected: false,\n connecting: false,\n reachable: false,\n installed: false,\n accounts: null,\n network: null,\n};\n\nexport function state_reducer(state: State, action: any) {\n if (action.type === 'new_state') {\n // TODO fix problem and remove ts-ignore\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const target_wallet = state[action.wallet];\n if (!target_wallet) {\n return {\n ...state,\n [action.wallet]: {\n ...defaultWalletState,\n [action.name]: action.value,\n },\n };\n }\n\n return {\n ...state,\n [action.wallet]: {\n ...target_wallet,\n [action.name]: action.value,\n },\n };\n }\n\n return state;\n}\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: network as Network,\n address,\n };\n}\n\nexport function connectedWallets(providersState: State): WalletType[] {\n return Object.entries(providersState)\n .filter(([, wallet_state]) => {\n return wallet_state?.connected;\n })\n .map(([type]) => {\n return type as WalletType;\n });\n}\n\nexport function availableWallets(providersState: State): WalletType[] {\n return Object.entries(providersState).map(([type]) => {\n return type as WalletType;\n });\n}\n\nexport function checkWalletProviders(list: WalletProvider[]): WalletProviders {\n const wallets: WalletProviders = new Map();\n\n list.forEach((provider) => {\n const { config, ...actions } = provider;\n wallets.set(config.type, {\n actions,\n config,\n });\n });\n\n return wallets;\n}\n\n/* eslint-disable @typescript-eslint/ban-types */\nexport function isAsync(fn: Function) {\n return fn?.constructor?.name === 'AsyncFunction';\n}\n\nexport function needsCheckInstallation(options: Options) {\n const { checkInstallation = true } = options.config;\n return checkInstallation;\n}\n\n/*\n WalletConnect instance is not compatible with ethers.providers.Web3Provider,\n Here we are returning a comptable instance, instead of the original one. \n*/\n\nexport function isWalletDerivedFromWalletConnect(wallet_type: WalletType) {\n return wallet_type === WalletType.WALLET_CONNECT;\n}\n\nexport function getComptaibleProvider(\n supportedChains: BlockchainMeta[],\n provider: any,\n type: WalletType\n) {\n if (isWalletDerivedFromWalletConnect(type)) {\n const evmBlockchains = supportedChains.filter(isEvmBlockchain);\n const rpcUrls = evmChainsToRpcMap(\n convertEvmBlockchainMetaToEvmChainInfo(evmBlockchains)\n );\n return new WalletConnectProvider({\n qrcode: false,\n rpc: rpcUrls,\n connector: provider,\n chainId: provider.chainId,\n });\n }\n return provider;\n}\n","import { PropsWithChildren } from 'react';\nimport { Network, WalletType, WalletInfo } from '@rango-dev/wallets-shared';\nimport {\n EventHandler as WalletEventHandler,\n State as WalletState,\n} from './wallet';\nimport { SignerFactory, BlockchainMeta } from 'rango-types';\n\nexport type State = {\n [key in WalletType]?: WalletState;\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 type ProviderContext = {\n connect(type: WalletType, network?: Network): Promise<ConnectResult>;\n disconnect(type: WalletType): Promise<void>;\n disconnectAll(): Promise<PromiseSettledResult<any>[]>;\n state(type: WalletType): WalletState;\n canSwitchNetworkTo(type: WalletType, network: Network): boolean;\n providers(): Providers;\n getSigners(type: WalletType): SignerFactory;\n getWalletInfo(type: WalletType): WalletInfo;\n};\n\nexport type ProviderProps = PropsWithChildren<{\n onUpdateState?: WalletEventHandler;\n allBlockChains?: BlockchainMeta[];\n providers: WalletProvider[];\n}>;\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 force?: boolean;\n};\nexport type GetInstance =\n | (() => any)\n | ((options: GetInstanceOptions) => Promise<any>);\nexport type TryGetInstance =\n | (() => any)\n | ((options: Pick<GetInstanceOptions, 'force' | 'network'>) => Promise<any>);\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>;\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 CanSwitchNetwork = (options: {\n network: Network;\n meta: BlockchainMeta[];\n}) => boolean;\n\nexport interface WalletActions {\n connect: Connect;\n getInstance: any;\n disconnect?: Disconnect;\n subscribe?: Subscribe;\n // eagerConnect, // optional?\n // unsubscribe, // coupled to subscribe.\n\n // Optional, but should be provided at the same time.\n switchNetwork?: SwitchNetwork;\n getSigners: (provider: any) => SignerFactory;\n canSwitchNetworkTo?: CanSwitchNetwork;\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 WalletProvider = { config: WalletConfig } & WalletActions;\n","import {\n getBlockChainNameFromId,\n Network,\n WalletType,\n} from '@rango-dev/wallets-shared';\nimport { accountAddressesWithNetwork, needsCheckInstallation } from './helpers';\nimport {\n Events,\n GetInstanceOptions,\n WalletActions,\n WalletConfig,\n} from './types';\nimport { BlockchainMeta } from 'rango-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\n async eagerConnection() {\n // Already connected, so we return provider that we have in memory.\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 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 // TODO: call actions.eagerConnection\n return null;\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 eagerConnection = await this.eagerConnection();\n const currentNetwork = this.state.network;\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 const requestedNetwork =\n network || currentNetwork || this.options.config.defaultNetwork;\n\n if (!!eagerConnection) {\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 eagerConnection;\n }\n if (networkChanged && !!this.actions.switchNetwork) {\n await this.actions.switchNetwork({\n instance: this.provider,\n meta: this.meta,\n // TODO: Fix type error\n // @ts-ignore\n network: requestedNetwork,\n newInstance: this.tryGetInstance.bind(this),\n });\n\n return {\n // Only network has been changed, so we reuse accounts from what we have already.\n accounts: eagerConnection.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 || Network.Unknown;\n // Try to map chainId with a Network, if not found, we use chainId directly.\n const network =\n getBlockChainNameFromId(chainId, this.meta) || Network.Unknown;\n // TODO: second parameter should be `string` when we decided to open source the package.\n return accountAddressesWithNetwork(\n blockchain.accounts,\n network as Network\n );\n });\n // Typescript can not detect we are filtering out null values:(\n nextAccounts = accounts.filter(Boolean) as string[];\n nextNetwork = requestedNetwork || this.options.config.defaultNetwork;\n } else {\n const chainId = connectResult.chainId || Network.Unknown;\n const network =\n getBlockChainNameFromId(chainId, this.meta) || Network.Unknown;\n // We fallback to current active network if `chainId` not provided.\n nextAccounts = accountAddressesWithNetwork(\n connectResult.accounts,\n network as Network\n );\n nextNetwork = network as 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 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) {\n const switchTo = this.actions.canSwitchNetworkTo;\n if (!switchTo) return false;\n\n return switchTo({\n network,\n meta: this.meta,\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 }\n }\n\n setProvider(value: any) {\n this.provider = value;\n\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) || Network.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: (chainId) => {\n const network = !!chainId\n ? getBlockChainNameFromId(chainId, this.meta)\n : Network.Unknown;\n this.updateState({\n network,\n });\n },\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 // We will notify handler after updating all the states.\n // Because when we call `handler` it will has latest states.\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.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 setInstalledAs(value: boolean) {\n if (!needsCheckInstallation(this.options) && value === false) return;\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 // 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 this.setProvider(null);\n\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 };\n\n if (network) {\n instanceOptions.network = network;\n }\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","import React, {\n createContext,\n useContext,\n useEffect,\n useReducer,\n useRef,\n} from 'react';\n\nimport {\n availableWallets,\n checkWalletProviders,\n connectedWallets,\n defaultWalletState,\n getComptaibleProvider,\n state_reducer,\n} from './helpers';\nimport {\n ProviderProps,\n ProviderContext,\n WalletActions,\n WalletConfig,\n} from './types';\nimport { WalletType } from '@rango-dev/wallets-shared';\n\nimport Wallet, { EventHandler as WalletEventHandler } from './wallet';\n\n// TODO fix lint problem\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nconst WalletContext = createContext<ProviderContext>({});\n\n/*\n Our event handler includes an internal state updater, and a notifier\n for the outside listener.\n On creating first wallet refrence, and on chaning `props.onUpdateState`\n we are using this function.\n*/\nfunction makeEventHandler(dispatcher: any, onUpdateState?: WalletEventHandler) {\n const handler: WalletEventHandler = (\n type,\n name,\n value,\n coreState,\n supportedChains\n ) => {\n const action = { type: 'new_state', wallet: type, name, value };\n // Update state\n dispatcher(action);\n\n // Giving the event to the outside listener\n if (onUpdateState) {\n onUpdateState(type, name, value, coreState, supportedChains);\n }\n };\n\n return handler;\n}\n\nfunction useInitializers(onChangeState: WalletEventHandler) {\n const availableWallets = useRef<{\n [key in WalletType]?: Wallet;\n }>({});\n\n function updater(wallet: {\n actions: WalletActions;\n config: WalletConfig;\n }): Wallet {\n const type = wallet.config.type;\n // We only update, if there is no instance available.\n if (typeof availableWallets.current[type] === 'undefined') {\n availableWallets.current[type] = new Wallet(\n {\n config: wallet.config,\n handler: onChangeState,\n },\n wallet.actions\n );\n }\n\n return availableWallets.current[type]!;\n }\n\n return updater;\n}\n\nfunction Provider(props: ProviderProps) {\n const [providersState, dispatch] = useReducer(state_reducer, {});\n\n const addWalletRef = useInitializers(\n makeEventHandler(dispatch, props.onUpdateState)\n );\n // const providersRef = useRef<{ [type in WalletType]?: any }>({});\n\n const listOfProviders = props.providers; \n const wallets = checkWalletProviders(listOfProviders);\n const api: ProviderContext = {\n // TODO: Fix type error\n // @ts-ignore\n async connect(type, network) {\n const wallet = wallets.get(type);\n if (!wallet) {\n throw new Error(`You should add ${type} to provider first.`);\n }\n\n const ref = addWalletRef(wallet);\n const result = await ref.connect(network);\n\n return result;\n },\n async disconnect(type) {\n const wallet = wallets.get(type);\n if (!wallet) {\n throw new Error(`You should add ${type} to provider first.`);\n }\n\n const ref = addWalletRef(wallet);\n await ref.disconnect();\n },\n async disconnectAll() {\n const disconnect_promises: Promise<any>[] = [];\n\n // When a wallet is initializing, a record will be added to `providersState`\n // So we use them to know what wallet has been initialized then we need to\n // filter connected wallets only.\n connectedWallets(providersState).forEach((type) => {\n const wallet = wallets.get(type);\n\n if (!!wallet) {\n const ref = addWalletRef(wallet);\n disconnect_promises.push(ref.disconnect());\n }\n });\n\n return await Promise.allSettled(disconnect_promises);\n },\n state(type) {\n return providersState[type] || defaultWalletState;\n },\n canSwitchNetworkTo(type, network) {\n const wallet = wallets.get(type);\n if (!wallet) {\n return false;\n }\n\n const ref = addWalletRef(wallet);\n return ref.canSwitchNetworkTo ? ref.canSwitchNetworkTo(network) : false;\n },\n providers() {\n const providers: { [type in WalletType]?: any } = {};\n availableWallets(providersState).forEach((type) => {\n const wallet = wallets.get(type);\n if (!!wallet) {\n const ref = addWalletRef(wallet);\n providers[type] = ref.provider;\n }\n });\n\n return providers;\n },\n getWalletInfo(type) {\n const wallet = wallets.get(type);\n if (!wallet) {\n throw new Error(`You should add ${type} to provider first.`);\n }\n\n const ref = addWalletRef(wallet);\n const result = ref.getWalletInfo(props.allBlockChains || []);\n\n return result;\n },\n getSigners(type) {\n const wallet = wallets.get(type);\n\n if (!wallet) {\n throw new Error(`You should add ${type} to provider first.`);\n }\n const ref = addWalletRef(wallet);\n const supportedChains = ref.getWalletInfo(\n props.allBlockChains || []\n ).supportedChains;\n const provider = getComptaibleProvider(\n supportedChains,\n ref.provider,\n type\n );\n const result = ref.getSigners(provider);\n\n return result;\n },\n };\n\n useEffect(() => {\n wallets.forEach((wallet) => {\n const ref = addWalletRef(wallet);\n const runOnInit = () => {\n if (!!ref.onInit) {\n ref.onInit();\n }\n };\n\n const initWhenPageIsReady = (event: Event) => {\n if (\n event.target &&\n (event.target as Document).readyState === 'complete'\n ) {\n runOnInit();\n\n document.removeEventListener('readystatechange', initWhenPageIsReady);\n }\n };\n\n // Try to run, maybe it's ready.\n runOnInit();\n\n // Try again when the page has been completely loaded.\n // Some of wallets, take some time to be fully injected and loaded.\n document.addEventListener('readystatechange', initWhenPageIsReady);\n });\n }, []);\n\n useEffect(() => {\n const allBlockChains = props.allBlockChains;\n if (!!allBlockChains) {\n wallets.forEach((wallet) => {\n const ref = addWalletRef(wallet);\n const supportedChains = ref.getWalletInfo(\n props.allBlockChains || []\n ).supportedChains;\n ref.setMeta(supportedChains);\n });\n }\n }, [props.allBlockChains]);\n\n useEffect(() => {\n wallets.forEach((wallet) => {\n const ref = addWalletRef(wallet);\n ref.setHandler(makeEventHandler(dispatch, props.onUpdateState));\n });\n }, [props.onUpdateState]);\n\n return (\n <WalletContext.Provider value={api}>\n {props.children}\n </WalletContext.Provider>\n );\n}\n\nexport function useWallets(): ProviderContext {\n const context = useContext(WalletContext);\n if (!context)\n throw Error('useWallet can only be used within the Provider component');\n return context;\n}\n\nexport default Provider;\n"],"names":["choose","wallets","type","find","wallet","defaultWalletState","connected","connecting","reachable","installed","accounts","network","state_reducer","state","action","_extends4","_extends5","target_wallet","_extends2","_extends3","_extends","name","value","formatAddressWithNetwork","address","accountAddressesWithNetwork","addresses","map","readAccountAddress","addressWithNetwork","_addressWithNetwork$s","split","connectedWallets","providersState","Object","entries","filter","_ref","wallet_state","_ref2","availableWallets","_ref3","checkWalletProviders","list","Map","forEach","provider","config","actions","_objectWithoutPropertiesLoose","_excluded","set","isAsync","fn","_fn$constructor","constructor","needsCheckInstallation","options","_options$config$check","checkInstallation","isWalletDerivedFromWalletConnect","wallet_type","WalletType","WALLET_CONNECT","getComptaibleProvider","supportedChains","evmBlockchains","isEvmBlockchain","rpcUrls","evmChainsToRpcMap","convertEvmBlockchainMetaToEvmChainInfo","WalletConnectProvider","qrcode","rpc","connector","chainId","Events","Wallet","meta","setInstalledAs","_proto","prototype","eagerConnection","_eagerConnection","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context","prev","next","abrupt","stop","apply","arguments","connect","_connect","_callee2","_this","currentNetwork","requestedNetwork","networkChanged","instance","connectResult","nextAccounts","nextNetwork","_network","_callee2$","_context2","Error","sent","defaultNetwork","switchNetwork","newInstance","tryGetInstance","bind","updateState","undefined","t0","resetState","Array","isArray","flatMap","blockchain","Network","Unknown","getBlockChainNameFromId","Boolean","length","_x","disconnect","_disconnect","_callee3","_this2","_callee3$","_context3","destroyInstance","setProvider","getSigners","getWalletInfo","allBlockChains","canSwitchNetworkTo","switchTo","onInit","isAsyncInstance","getInstance","subscribe","updateAccounts","_this3","updateChainId","setMeta","setHandler","handler","getState","states","updates","push","CONNECTED","REACHABLE","INSTALLED","ACCOUNTS","NETWORK","_this4","_tryGetInstance","_callee4","force","instanceOptions","error_message","_callee4$","_context4","currentProvider","_x2","WalletContext","createContext","makeEventHandler","dispatcher","onUpdateState","coreState","useInitializers","onChangeState","useRef","updater","current","Provider","props","_useReducer","useReducer","dispatch","addWalletRef","listOfProviders","providers","api","get","ref","result","disconnectAll","disconnect_promises","Promise","allSettled","useEffect","runOnInit","initWhenPageIsReady","event","target","readyState","document","removeEventListener","addEventListener","React","children","useWallets","context","useContext"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rango-dev/wallets-core",
|
|
3
|
-
"version": "0.1.11-next.
|
|
3
|
+
"version": "0.1.11-next.78",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"module": "dist/wallets-core.esm.js",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
],
|
|
12
12
|
"scripts": {
|
|
13
13
|
"start": "tsdx watch",
|
|
14
|
-
"build": "tsdx build",
|
|
14
|
+
"build": "tsdx build --tsconfig ./tsconfig.json",
|
|
15
15
|
"test": "tsdx test --passWithNoTests",
|
|
16
16
|
"lint": "tsdx lint",
|
|
17
17
|
"size": "size-limit",
|
|
@@ -44,8 +44,9 @@
|
|
|
44
44
|
}
|
|
45
45
|
],
|
|
46
46
|
"dependencies": {
|
|
47
|
-
"@rango-dev/wallets-shared": "^0.1.11-next.
|
|
48
|
-
"@walletconnect/ethereum-provider": "1.8.0"
|
|
47
|
+
"@rango-dev/wallets-shared": "^0.1.11-next.77",
|
|
48
|
+
"@walletconnect/ethereum-provider": "1.8.0",
|
|
49
|
+
"rango-types": "^0.1.21"
|
|
49
50
|
},
|
|
50
51
|
"publishConfig": {
|
|
51
52
|
"access": "public"
|
package/src/helpers.ts
CHANGED
|
@@ -4,11 +4,10 @@ import {
|
|
|
4
4
|
evmChainsToRpcMap,
|
|
5
5
|
Network,
|
|
6
6
|
WalletType,
|
|
7
|
-
isEvmBlockchain,
|
|
8
|
-
BlockchainMeta,
|
|
9
7
|
} from '@rango-dev/wallets-shared';
|
|
10
8
|
import { State, WalletProvider, WalletProviders } from './types';
|
|
11
9
|
import { Options, State as WalletState } from './wallet';
|
|
10
|
+
import { BlockchainMeta, isEvmBlockchain } from 'rango-types';
|
|
12
11
|
|
|
13
12
|
export function choose(wallets: any[], type: WalletType): any | null {
|
|
14
13
|
return wallets.find((wallet) => wallet.type === type) || null;
|
package/src/types.ts
CHANGED
|
@@ -1,15 +1,10 @@
|
|
|
1
1
|
import { PropsWithChildren } from 'react';
|
|
2
|
-
import {
|
|
3
|
-
Network,
|
|
4
|
-
WalletType,
|
|
5
|
-
BlockchainMeta,
|
|
6
|
-
WalletInfo,
|
|
7
|
-
WalletSigners,
|
|
8
|
-
} from '@rango-dev/wallets-shared';
|
|
2
|
+
import { Network, WalletType, WalletInfo } from '@rango-dev/wallets-shared';
|
|
9
3
|
import {
|
|
10
4
|
EventHandler as WalletEventHandler,
|
|
11
5
|
State as WalletState,
|
|
12
6
|
} from './wallet';
|
|
7
|
+
import { SignerFactory, BlockchainMeta } from 'rango-types';
|
|
13
8
|
|
|
14
9
|
export type State = {
|
|
15
10
|
[key in WalletType]?: WalletState;
|
|
@@ -30,7 +25,7 @@ export type ProviderContext = {
|
|
|
30
25
|
state(type: WalletType): WalletState;
|
|
31
26
|
canSwitchNetworkTo(type: WalletType, network: Network): boolean;
|
|
32
27
|
providers(): Providers;
|
|
33
|
-
getSigners(type: WalletType):
|
|
28
|
+
getSigners(type: WalletType): SignerFactory;
|
|
34
29
|
getWalletInfo(type: WalletType): WalletInfo;
|
|
35
30
|
};
|
|
36
31
|
|
|
@@ -108,7 +103,7 @@ export interface WalletActions {
|
|
|
108
103
|
|
|
109
104
|
// Optional, but should be provided at the same time.
|
|
110
105
|
switchNetwork?: SwitchNetwork;
|
|
111
|
-
getSigners: (provider: any) =>
|
|
106
|
+
getSigners: (provider: any) => SignerFactory;
|
|
112
107
|
canSwitchNetworkTo?: CanSwitchNetwork;
|
|
113
108
|
getWalletInfo(allBlockChains: BlockchainMeta[]): WalletInfo;
|
|
114
109
|
}
|
package/src/wallet.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import {
|
|
2
|
-
BlockchainMeta,
|
|
3
2
|
getBlockChainNameFromId,
|
|
4
3
|
Network,
|
|
5
4
|
WalletType,
|
|
@@ -11,6 +10,7 @@ import {
|
|
|
11
10
|
WalletActions,
|
|
12
11
|
WalletConfig,
|
|
13
12
|
} from './types';
|
|
13
|
+
import { BlockchainMeta } from 'rango-types';
|
|
14
14
|
|
|
15
15
|
export type EventHandler = (
|
|
16
16
|
type: WalletType,
|