@rango-dev/wallets-core 0.1.16-next.5 → 0.1.16-next.7
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/provider.d.ts.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/wallet.d.ts +1 -1
- package/dist/wallet.d.ts.map +1 -1
- package/dist/wallets-core.cjs.development.js +19 -9
- 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 +19 -9
- package/dist/wallets-core.esm.js.map +1 -1
- package/package.json +3 -3
- package/src/provider.tsx +8 -5
- package/src/types.ts +3 -0
- package/src/wallet.ts +13 -6
package/dist/provider.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["src/provider.tsx"],"names":[],"mappings":";AAgBA,OAAO,EACL,aAAa,EACb,eAAe,EAGhB,MAAM,SAAS,CAAC;AAgEjB,iBAAS,QAAQ,CAAC,KAAK,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["src/provider.tsx"],"names":[],"mappings":";AAgBA,OAAO,EACL,aAAa,EACb,eAAe,EAGhB,MAAM,SAAS,CAAC;AAgEjB,iBAAS,QAAQ,CAAC,KAAK,EAAE,aAAa,eAmKrC;AAED,wBAAgB,UAAU,IAAI,eAAe,CAK5C;AAED,eAAe,QAAQ,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -45,6 +45,7 @@ export declare type GetInstanceOptions = {
|
|
|
45
45
|
currentProvider: any;
|
|
46
46
|
meta: BlockchainMeta[];
|
|
47
47
|
force?: boolean;
|
|
48
|
+
updateChainId: (chainId: number | string) => void;
|
|
48
49
|
};
|
|
49
50
|
export declare type GetInstance = (() => any) | ((options: GetInstanceOptions) => Promise<any>);
|
|
50
51
|
export declare type TryGetInstance = (() => any) | ((options: Pick<GetInstanceOptions, 'force' | 'network'>) => Promise<any>);
|
|
@@ -75,6 +76,7 @@ export declare type SwitchNetwork = (options: {
|
|
|
75
76
|
export declare type CanSwitchNetwork = (options: {
|
|
76
77
|
network: Network;
|
|
77
78
|
meta: BlockchainMeta[];
|
|
79
|
+
provider: any;
|
|
78
80
|
}) => boolean;
|
|
79
81
|
export interface WalletActions {
|
|
80
82
|
connect: Connect;
|
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,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EACL,YAAY,IAAI,kBAAkB,EAClC,KAAK,IAAI,WAAW,EACrB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE5D,oBAAY,KAAK,GAAG;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAAC;CACxC,CAAC;AAEF,oBAAY,aAAa,GAAG;IAC1B,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,GAAG,CAAC;CACf,CAAC;AAEF,oBAAY,SAAS,GAAG;KAAG,IAAI,IAAI,UAAU,CAAC,CAAC,EAAE,GAAG;CAAE,CAAC;AAEvD,oBAAY,eAAe,GAAG;IAC5B,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACrE,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,aAAa,IAAI,OAAO,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACtD,KAAK,CAAC,IAAI,EAAE,UAAU,GAAG,WAAW,CAAC;IACrC,kBAAkB,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC;IAChE,SAAS,IAAI,SAAS,CAAC;IACvB,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,aAAa,CAAC;IAC5C,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,CAAC;CAC7C,CAAC;AAEF,oBAAY,aAAa,GAAG,iBAAiB,CAAC;IAC5C,aAAa,CAAC,EAAE,kBAAkB,CAAC;IACnC,cAAc,CAAC,EAAE,cAAc,EAAE,CAAC;IAClC,SAAS,EAAE,cAAc,EAAE,CAAC;CAC7B,CAAC,CAAC;AAEH,oBAAY,MAAM;IAChB,SAAS,cAAc;IACvB,UAAU,eAAe;IACzB,SAAS,cAAc;IACvB,SAAS,cAAc;IACvB,QAAQ,aAAa;IACrB,OAAO,YAAY;CACpB;AAED,oBAAY,qBAAqB,GAAG;IAClC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,oBAAY,kBAAkB,GAAG;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,EAAE,GAAG,CAAC;IACrB,IAAI,EAAE,cAAc,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/wallet.d.ts
CHANGED
|
@@ -38,7 +38,7 @@ declare class Wallet<InstanceType = any> {
|
|
|
38
38
|
disconnect(): Promise<void>;
|
|
39
39
|
getSigners(provider: any): import("rango-types/lib").SignerFactory;
|
|
40
40
|
getWalletInfo(allBlockChains: BlockchainMeta[]): import("@rango-dev/wallets-shared").WalletInfo;
|
|
41
|
-
canSwitchNetworkTo(network: Network): boolean;
|
|
41
|
+
canSwitchNetworkTo(network: Network, provider: any): boolean;
|
|
42
42
|
onInit(): void;
|
|
43
43
|
setProvider(value: any): void;
|
|
44
44
|
setMeta(value: BlockchainMeta[]): 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,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;;;;;;;;;
|
|
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;;;;;;;;;IAuHzB,UAAU;IAchB,UAAU,CAAC,QAAQ,EAAE,GAAG;IAGxB,aAAa,CAAC,cAAc,EAAE,cAAc,EAAE;IAG9C,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG;IAWlD,MAAM;IASN,WAAW,CAAC,KAAK,EAAE,GAAG;IAmCtB,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;IA0ClC,UAAU;IAUV,OAAO,CAAC,cAAc;YAOR,cAAc;CA+C7B;AAED,eAAe,MAAM,CAAC"}
|
|
@@ -570,6 +570,7 @@ var Wallet = /*#__PURE__*/function () {
|
|
|
570
570
|
instance: this.provider,
|
|
571
571
|
meta: this.meta,
|
|
572
572
|
// TODO: Fix type error
|
|
573
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
573
574
|
// @ts-ignore
|
|
574
575
|
network: requestedNetwork,
|
|
575
576
|
newInstance: this.tryGetInstance.bind(this)
|
|
@@ -690,12 +691,13 @@ var Wallet = /*#__PURE__*/function () {
|
|
|
690
691
|
_proto.getWalletInfo = function getWalletInfo(allBlockChains) {
|
|
691
692
|
return this.actions.getWalletInfo(allBlockChains);
|
|
692
693
|
};
|
|
693
|
-
_proto.canSwitchNetworkTo = function canSwitchNetworkTo(network) {
|
|
694
|
+
_proto.canSwitchNetworkTo = function canSwitchNetworkTo(network, provider) {
|
|
694
695
|
var switchTo = this.actions.canSwitchNetworkTo;
|
|
695
696
|
if (!switchTo) return false;
|
|
696
697
|
return switchTo({
|
|
697
698
|
network: network,
|
|
698
|
-
meta: this.meta
|
|
699
|
+
meta: this.meta,
|
|
700
|
+
provider: provider
|
|
699
701
|
});
|
|
700
702
|
};
|
|
701
703
|
_proto.onInit = function onInit() {
|
|
@@ -729,7 +731,7 @@ var Wallet = /*#__PURE__*/function () {
|
|
|
729
731
|
}
|
|
730
732
|
},
|
|
731
733
|
updateChainId: function updateChainId(chainId) {
|
|
732
|
-
var network =
|
|
734
|
+
var network = chainId ? walletsShared.getBlockChainNameFromId(chainId, _this3.meta) : walletsShared.Network.Unknown;
|
|
733
735
|
_this3.updateState({
|
|
734
736
|
network: network
|
|
735
737
|
});
|
|
@@ -799,6 +801,7 @@ var Wallet = /*#__PURE__*/function () {
|
|
|
799
801
|
};
|
|
800
802
|
_proto.tryGetInstance = /*#__PURE__*/function () {
|
|
801
803
|
var _tryGetInstance = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(_ref2) {
|
|
804
|
+
var _this5 = this;
|
|
802
805
|
var network, force, instance, instanceOptions, error_message;
|
|
803
806
|
return _regeneratorRuntime().wrap(function _callee4$(_context4) {
|
|
804
807
|
while (1) switch (_context4.prev = _context4.next) {
|
|
@@ -816,7 +819,13 @@ var Wallet = /*#__PURE__*/function () {
|
|
|
816
819
|
instanceOptions = {
|
|
817
820
|
currentProvider: this.provider,
|
|
818
821
|
meta: this.meta,
|
|
819
|
-
force: force || false
|
|
822
|
+
force: force || false,
|
|
823
|
+
updateChainId: function updateChainId(chainId) {
|
|
824
|
+
var network = chainId ? walletsShared.getBlockChainNameFromId(chainId, _this5.meta) : walletsShared.Network.Unknown;
|
|
825
|
+
_this5.updateState({
|
|
826
|
+
network: network
|
|
827
|
+
});
|
|
828
|
+
}
|
|
820
829
|
};
|
|
821
830
|
if (network) {
|
|
822
831
|
instanceOptions.network = network;
|
|
@@ -907,6 +916,7 @@ function Provider(props) {
|
|
|
907
916
|
var wallets = checkWalletProviders(listOfProviders);
|
|
908
917
|
var api = {
|
|
909
918
|
// TODO: Fix type error
|
|
919
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
910
920
|
// @ts-ignore
|
|
911
921
|
connect: function connect(type, network) {
|
|
912
922
|
return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
@@ -968,7 +978,7 @@ function Provider(props) {
|
|
|
968
978
|
// filter connected wallets only.
|
|
969
979
|
connectedWallets(providersState).forEach(function (type) {
|
|
970
980
|
var wallet = wallets.get(type);
|
|
971
|
-
if (
|
|
981
|
+
if (wallet) {
|
|
972
982
|
var ref = addWalletRef(wallet);
|
|
973
983
|
disconnect_promises.push(ref.disconnect());
|
|
974
984
|
}
|
|
@@ -993,13 +1003,13 @@ function Provider(props) {
|
|
|
993
1003
|
return false;
|
|
994
1004
|
}
|
|
995
1005
|
var ref = addWalletRef(wallet);
|
|
996
|
-
return ref.canSwitchNetworkTo ? ref.canSwitchNetworkTo(network) : false;
|
|
1006
|
+
return ref.canSwitchNetworkTo ? ref.canSwitchNetworkTo(network, ref.provider) : false;
|
|
997
1007
|
},
|
|
998
1008
|
providers: function providers() {
|
|
999
1009
|
var providers = {};
|
|
1000
1010
|
availableWallets(providersState).forEach(function (type) {
|
|
1001
1011
|
var wallet = wallets.get(type);
|
|
1002
|
-
if (
|
|
1012
|
+
if (wallet) {
|
|
1003
1013
|
var ref = addWalletRef(wallet);
|
|
1004
1014
|
providers[type] = ref.provider;
|
|
1005
1015
|
}
|
|
@@ -1031,7 +1041,7 @@ function Provider(props) {
|
|
|
1031
1041
|
wallets.forEach(function (wallet) {
|
|
1032
1042
|
var ref = addWalletRef(wallet);
|
|
1033
1043
|
var runOnInit = function runOnInit() {
|
|
1034
|
-
if (
|
|
1044
|
+
if (ref.onInit) {
|
|
1035
1045
|
ref.onInit();
|
|
1036
1046
|
}
|
|
1037
1047
|
};
|
|
@@ -1050,7 +1060,7 @@ function Provider(props) {
|
|
|
1050
1060
|
}, []);
|
|
1051
1061
|
React.useEffect(function () {
|
|
1052
1062
|
var allBlockChains = props.allBlockChains;
|
|
1053
|
-
if (
|
|
1063
|
+
if (allBlockChains) {
|
|
1054
1064
|
wallets.forEach(function (wallet) {
|
|
1055
1065
|
var ref = addWalletRef(wallet);
|
|
1056
1066
|
var supportedChains = ref.getWalletInfo(props.allBlockChains || []).supportedChains;
|
|
@@ -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 WalletTypes,\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;\n });\n}\n\nexport function availableWallets(providersState: State): WalletType[] {\n return Object.entries(providersState).map(([type]) => {\n return type;\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 === WalletTypes.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: string]: WalletState | undefined;\n};\n\nexport type ConnectResult = {\n accounts: string[] | null;\n network: Network | null;\n provider: any;\n};\n\nexport type Providers = { [type in WalletType]?: any };\n\nexport 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.connecting !== 'undefined') {\n this.state.connecting = states.connecting;\n updates.push([Events.CONNECTING, states.connecting]);\n }\n if (typeof states.reachable !== 'undefined') {\n this.state.reachable = states.reachable;\n updates.push([Events.REACHABLE, states.reachable]);\n }\n if (typeof states.installed !== 'undefined') {\n this.state.installed = states.installed;\n updates.push([Events.INSTALLED, states.installed]);\n }\n if (typeof states.accounts !== 'undefined') {\n this.state.accounts = states.accounts;\n updates.push([Events.ACCOUNTS, states.accounts]);\n }\n if (typeof states.network !== 'undefined') {\n this.state.network = states.network;\n updates.push([Events.NETWORK, states.network]);\n }\n\n const state = this.getState();\n updates.forEach(([name, value]) => {\n this.options.handler(\n this.options.config.type,\n name,\n value,\n state,\n this.meta\n );\n });\n }\n\n resetState() {\n this.updateState({\n connected: false,\n connecting: false,\n reachable: false,\n accounts: null,\n network: null,\n });\n }\n\n private 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: string]: Wallet | undefined;\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 // Get wallet info could be used in render methods to show wallets data\n // So, addWalletRef method shouldn't be called in this method\n\n return wallet.actions.getWalletInfo(props.allBlockChains || []);\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","WalletTypes","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","CONNECTING","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
|
+
{"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 WalletTypes,\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;\n });\n}\n\nexport function availableWallets(providersState: State): WalletType[] {\n return Object.entries(providersState).map(([type]) => {\n return type;\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 === WalletTypes.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: string]: WalletState | undefined;\n};\n\nexport type ConnectResult = {\n accounts: string[] | null;\n network: Network | null;\n provider: any;\n};\n\nexport type Providers = { [type in WalletType]?: any };\n\nexport 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 updateChainId: (chainId: number | string) => void;\n};\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 provider: any;\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 // eslint-disable-next-line @typescript-eslint/ban-ts-comment\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, provider: any) {\n const switchTo = this.actions.canSwitchNetworkTo;\n if (!switchTo) return false;\n\n return switchTo({\n network,\n meta: this.meta,\n provider,\n });\n }\n\n onInit() {\n if (!this.options.config.isAsyncInstance) {\n const instance = this.actions.getInstance();\n if (!!instance && !this.state.installed) {\n this.setInstalledAs(true);\n }\n }\n }\n\n setProvider(value: any) {\n this.provider = value;\n if (!!value && !!this.actions.subscribe) {\n this.actions.subscribe({\n instance: value,\n state: this.state,\n meta: this.meta,\n connect: this.connect.bind(this),\n disconnect: this.disconnect.bind(this),\n updateAccounts: (accounts, chainId) => {\n let network = this.state.network;\n if (chainId) {\n network =\n getBlockChainNameFromId(chainId, this.meta) || 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.connecting !== 'undefined') {\n this.state.connecting = states.connecting;\n updates.push([Events.CONNECTING, states.connecting]);\n }\n if (typeof states.reachable !== 'undefined') {\n this.state.reachable = states.reachable;\n updates.push([Events.REACHABLE, states.reachable]);\n }\n if (typeof states.installed !== 'undefined') {\n this.state.installed = states.installed;\n updates.push([Events.INSTALLED, states.installed]);\n }\n if (typeof states.accounts !== 'undefined') {\n this.state.accounts = states.accounts;\n updates.push([Events.ACCOUNTS, states.accounts]);\n }\n if (typeof states.network !== 'undefined') {\n this.state.network = states.network;\n updates.push([Events.NETWORK, states.network]);\n }\n\n const state = this.getState();\n updates.forEach(([name, value]) => {\n this.options.handler(\n this.options.config.type,\n name,\n value,\n state,\n this.meta\n );\n });\n }\n\n resetState() {\n this.updateState({\n connected: false,\n connecting: false,\n reachable: false,\n accounts: null,\n network: null,\n });\n }\n\n private 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 if (this.options.config.isAsyncInstance) {\n // Trying to connect\n const instanceOptions: GetInstanceOptions = {\n currentProvider: this.provider,\n meta: this.meta,\n force: force || false,\n updateChainId: (chainId) => {\n const network = chainId\n ? getBlockChainNameFromId(chainId, this.meta)\n : Network.Unknown;\n this.updateState({\n network,\n });\n },\n };\n\n if (network) {\n instanceOptions.network = network;\n }\n instance = await this.actions.getInstance(instanceOptions);\n } else {\n instance = this.actions.getInstance();\n }\n\n if (!instance) {\n this.setInstalledAs(false);\n this.resetState();\n\n const error_message = `It seems your selected wallet (${this.options.config.type}) isn't installed.`;\n throw new Error(error_message);\n }\n\n this.setProvider(instance);\n return instance;\n }\n}\n\nexport default Wallet;\n","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: string]: Wallet | undefined;\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 // eslint-disable-next-line @typescript-eslint/ban-ts-comment\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\n ? ref.canSwitchNetworkTo(network, ref.provider)\n : 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 // Get wallet info could be used in render methods to show wallets data\n // So, addWalletRef method shouldn't be called in this method\n\n return wallet.actions.getWalletInfo(props.allBlockChains || []);\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","WalletTypes","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","CONNECTING","REACHABLE","INSTALLED","ACCOUNTS","NETWORK","_this4","_tryGetInstance","_callee4","_this5","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("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(C([])));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 C(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:L}}function L(){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=C,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:C(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.WalletTypes.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.connecting&&(this.state.connecting=t.connecting,n.push([exports.Events.CONNECTING,t.connecting])),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 n.actions.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};
|
|
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(C([])));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 C(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:L}}function L(){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=C,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:C(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.WalletTypes.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,e){var n=this.actions.canSwitchNetworkTo;return!!n&&n({network:t,meta:this.meta,provider:e})},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.connecting&&(this.state.connecting=t.connecting,n.push([exports.Events.CONNECTING,t.connecting])),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 r,o,i,c,s=this;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(r=e.network,o=e.force,i=null,this.setProvider(null),!this.options.config.isAsyncInstance){t.next=11;break}return c={currentProvider:this.provider,meta:this.meta,force:o||!1,updateChainId:function(t){var e=t?n.getBlockChainNameFromId(t,s.meta):n.Network.Unknown;s.updateState({network:e})}},r&&(c.network=r),t.next=8,this.actions.getInstance(c);case 8:i=t.sent,t.next=12;break;case 11:i=this.actions.getInstance();case 12:if(i){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(i),t.abrupt("return",i);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,r.provider)},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 n.actions.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 { 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: string]: WalletState | undefined;\n};\n\nexport type ConnectResult = {\n accounts: string[] | null;\n network: Network | null;\n provider: any;\n};\n\nexport type Providers = { [type in WalletType]?: any };\n\nexport 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 WalletTypes,\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;\n });\n}\n\nexport function availableWallets(providersState: State): WalletType[] {\n return Object.entries(providersState).map(([type]) => {\n return type;\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 === WalletTypes.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.connecting !== 'undefined') {\n this.state.connecting = states.connecting;\n updates.push([Events.CONNECTING, states.connecting]);\n }\n if (typeof states.reachable !== 'undefined') {\n this.state.reachable = states.reachable;\n updates.push([Events.REACHABLE, states.reachable]);\n }\n if (typeof states.installed !== 'undefined') {\n this.state.installed = states.installed;\n updates.push([Events.INSTALLED, states.installed]);\n }\n if (typeof states.accounts !== 'undefined') {\n this.state.accounts = states.accounts;\n updates.push([Events.ACCOUNTS, states.accounts]);\n }\n if (typeof states.network !== 'undefined') {\n this.state.network = states.network;\n updates.push([Events.NETWORK, states.network]);\n }\n\n const state = this.getState();\n updates.forEach(([name, value]) => {\n this.options.handler(\n this.options.config.type,\n name,\n value,\n state,\n this.meta\n );\n });\n }\n\n resetState() {\n this.updateState({\n connected: false,\n connecting: false,\n reachable: false,\n accounts: null,\n network: null,\n });\n }\n\n private 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: string]: Wallet | undefined;\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 // Get wallet info could be used in render methods to show wallets data\n // So, addWalletRef method shouldn't be called in this method\n\n return wallet.actions.getWalletInfo(props.allBlockChains || []);\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","WalletTypes","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","CONNECTING","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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"}
|
|
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: string]: WalletState | undefined;\n};\n\nexport type ConnectResult = {\n accounts: string[] | null;\n network: Network | null;\n provider: any;\n};\n\nexport type Providers = { [type in WalletType]?: any };\n\nexport 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 updateChainId: (chainId: number | string) => void;\n};\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 provider: any;\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 WalletTypes,\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;\n });\n}\n\nexport function availableWallets(providersState: State): WalletType[] {\n return Object.entries(providersState).map(([type]) => {\n return type;\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 === WalletTypes.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 // eslint-disable-next-line @typescript-eslint/ban-ts-comment\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, provider: any) {\n const switchTo = this.actions.canSwitchNetworkTo;\n if (!switchTo) return false;\n\n return switchTo({\n network,\n meta: this.meta,\n provider,\n });\n }\n\n onInit() {\n if (!this.options.config.isAsyncInstance) {\n const instance = this.actions.getInstance();\n if (!!instance && !this.state.installed) {\n this.setInstalledAs(true);\n }\n }\n }\n\n setProvider(value: any) {\n this.provider = value;\n if (!!value && !!this.actions.subscribe) {\n this.actions.subscribe({\n instance: value,\n state: this.state,\n meta: this.meta,\n connect: this.connect.bind(this),\n disconnect: this.disconnect.bind(this),\n updateAccounts: (accounts, chainId) => {\n let network = this.state.network;\n if (chainId) {\n network =\n getBlockChainNameFromId(chainId, this.meta) || 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.connecting !== 'undefined') {\n this.state.connecting = states.connecting;\n updates.push([Events.CONNECTING, states.connecting]);\n }\n if (typeof states.reachable !== 'undefined') {\n this.state.reachable = states.reachable;\n updates.push([Events.REACHABLE, states.reachable]);\n }\n if (typeof states.installed !== 'undefined') {\n this.state.installed = states.installed;\n updates.push([Events.INSTALLED, states.installed]);\n }\n if (typeof states.accounts !== 'undefined') {\n this.state.accounts = states.accounts;\n updates.push([Events.ACCOUNTS, states.accounts]);\n }\n if (typeof states.network !== 'undefined') {\n this.state.network = states.network;\n updates.push([Events.NETWORK, states.network]);\n }\n\n const state = this.getState();\n updates.forEach(([name, value]) => {\n this.options.handler(\n this.options.config.type,\n name,\n value,\n state,\n this.meta\n );\n });\n }\n\n resetState() {\n this.updateState({\n connected: false,\n connecting: false,\n reachable: false,\n accounts: null,\n network: null,\n });\n }\n\n private 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 if (this.options.config.isAsyncInstance) {\n // Trying to connect\n const instanceOptions: GetInstanceOptions = {\n currentProvider: this.provider,\n meta: this.meta,\n force: force || false,\n updateChainId: (chainId) => {\n const network = chainId\n ? getBlockChainNameFromId(chainId, this.meta)\n : Network.Unknown;\n this.updateState({\n network,\n });\n },\n };\n\n if (network) {\n instanceOptions.network = network;\n }\n instance = await this.actions.getInstance(instanceOptions);\n } else {\n instance = this.actions.getInstance();\n }\n\n if (!instance) {\n this.setInstalledAs(false);\n this.resetState();\n\n const error_message = `It seems your selected wallet (${this.options.config.type}) isn't installed.`;\n throw new Error(error_message);\n }\n\n this.setProvider(instance);\n return instance;\n }\n}\n\nexport default Wallet;\n","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: string]: Wallet | undefined;\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 // eslint-disable-next-line @typescript-eslint/ban-ts-comment\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\n ? ref.canSwitchNetworkTo(network, ref.provider)\n : 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 // Get wallet info could be used in render methods to show wallets data\n // So, addWalletRef method shouldn't be called in this method\n\n return wallet.actions.getWalletInfo(props.allBlockChains || []);\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","WalletTypes","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","CONNECTING","REACHABLE","INSTALLED","ACCOUNTS","NETWORK","_this4","_tryGetInstance","_callee4","force","instanceOptions","_this5","_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
|
@@ -564,6 +564,7 @@ var Wallet = /*#__PURE__*/function () {
|
|
|
564
564
|
instance: this.provider,
|
|
565
565
|
meta: this.meta,
|
|
566
566
|
// TODO: Fix type error
|
|
567
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
567
568
|
// @ts-ignore
|
|
568
569
|
network: requestedNetwork,
|
|
569
570
|
newInstance: this.tryGetInstance.bind(this)
|
|
@@ -684,12 +685,13 @@ var Wallet = /*#__PURE__*/function () {
|
|
|
684
685
|
_proto.getWalletInfo = function getWalletInfo(allBlockChains) {
|
|
685
686
|
return this.actions.getWalletInfo(allBlockChains);
|
|
686
687
|
};
|
|
687
|
-
_proto.canSwitchNetworkTo = function canSwitchNetworkTo(network) {
|
|
688
|
+
_proto.canSwitchNetworkTo = function canSwitchNetworkTo(network, provider) {
|
|
688
689
|
var switchTo = this.actions.canSwitchNetworkTo;
|
|
689
690
|
if (!switchTo) return false;
|
|
690
691
|
return switchTo({
|
|
691
692
|
network: network,
|
|
692
|
-
meta: this.meta
|
|
693
|
+
meta: this.meta,
|
|
694
|
+
provider: provider
|
|
693
695
|
});
|
|
694
696
|
};
|
|
695
697
|
_proto.onInit = function onInit() {
|
|
@@ -723,7 +725,7 @@ var Wallet = /*#__PURE__*/function () {
|
|
|
723
725
|
}
|
|
724
726
|
},
|
|
725
727
|
updateChainId: function updateChainId(chainId) {
|
|
726
|
-
var network =
|
|
728
|
+
var network = chainId ? getBlockChainNameFromId(chainId, _this3.meta) : Network.Unknown;
|
|
727
729
|
_this3.updateState({
|
|
728
730
|
network: network
|
|
729
731
|
});
|
|
@@ -793,6 +795,7 @@ var Wallet = /*#__PURE__*/function () {
|
|
|
793
795
|
};
|
|
794
796
|
_proto.tryGetInstance = /*#__PURE__*/function () {
|
|
795
797
|
var _tryGetInstance = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(_ref2) {
|
|
798
|
+
var _this5 = this;
|
|
796
799
|
var network, force, instance, instanceOptions, error_message;
|
|
797
800
|
return _regeneratorRuntime().wrap(function _callee4$(_context4) {
|
|
798
801
|
while (1) switch (_context4.prev = _context4.next) {
|
|
@@ -810,7 +813,13 @@ var Wallet = /*#__PURE__*/function () {
|
|
|
810
813
|
instanceOptions = {
|
|
811
814
|
currentProvider: this.provider,
|
|
812
815
|
meta: this.meta,
|
|
813
|
-
force: force || false
|
|
816
|
+
force: force || false,
|
|
817
|
+
updateChainId: function updateChainId(chainId) {
|
|
818
|
+
var network = chainId ? getBlockChainNameFromId(chainId, _this5.meta) : Network.Unknown;
|
|
819
|
+
_this5.updateState({
|
|
820
|
+
network: network
|
|
821
|
+
});
|
|
822
|
+
}
|
|
814
823
|
};
|
|
815
824
|
if (network) {
|
|
816
825
|
instanceOptions.network = network;
|
|
@@ -901,6 +910,7 @@ function Provider(props) {
|
|
|
901
910
|
var wallets = checkWalletProviders(listOfProviders);
|
|
902
911
|
var api = {
|
|
903
912
|
// TODO: Fix type error
|
|
913
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
904
914
|
// @ts-ignore
|
|
905
915
|
connect: function connect(type, network) {
|
|
906
916
|
return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
@@ -962,7 +972,7 @@ function Provider(props) {
|
|
|
962
972
|
// filter connected wallets only.
|
|
963
973
|
connectedWallets(providersState).forEach(function (type) {
|
|
964
974
|
var wallet = wallets.get(type);
|
|
965
|
-
if (
|
|
975
|
+
if (wallet) {
|
|
966
976
|
var ref = addWalletRef(wallet);
|
|
967
977
|
disconnect_promises.push(ref.disconnect());
|
|
968
978
|
}
|
|
@@ -987,13 +997,13 @@ function Provider(props) {
|
|
|
987
997
|
return false;
|
|
988
998
|
}
|
|
989
999
|
var ref = addWalletRef(wallet);
|
|
990
|
-
return ref.canSwitchNetworkTo ? ref.canSwitchNetworkTo(network) : false;
|
|
1000
|
+
return ref.canSwitchNetworkTo ? ref.canSwitchNetworkTo(network, ref.provider) : false;
|
|
991
1001
|
},
|
|
992
1002
|
providers: function providers() {
|
|
993
1003
|
var providers = {};
|
|
994
1004
|
availableWallets(providersState).forEach(function (type) {
|
|
995
1005
|
var wallet = wallets.get(type);
|
|
996
|
-
if (
|
|
1006
|
+
if (wallet) {
|
|
997
1007
|
var ref = addWalletRef(wallet);
|
|
998
1008
|
providers[type] = ref.provider;
|
|
999
1009
|
}
|
|
@@ -1025,7 +1035,7 @@ function Provider(props) {
|
|
|
1025
1035
|
wallets.forEach(function (wallet) {
|
|
1026
1036
|
var ref = addWalletRef(wallet);
|
|
1027
1037
|
var runOnInit = function runOnInit() {
|
|
1028
|
-
if (
|
|
1038
|
+
if (ref.onInit) {
|
|
1029
1039
|
ref.onInit();
|
|
1030
1040
|
}
|
|
1031
1041
|
};
|
|
@@ -1044,7 +1054,7 @@ function Provider(props) {
|
|
|
1044
1054
|
}, []);
|
|
1045
1055
|
useEffect(function () {
|
|
1046
1056
|
var allBlockChains = props.allBlockChains;
|
|
1047
|
-
if (
|
|
1057
|
+
if (allBlockChains) {
|
|
1048
1058
|
wallets.forEach(function (wallet) {
|
|
1049
1059
|
var ref = addWalletRef(wallet);
|
|
1050
1060
|
var supportedChains = ref.getWalletInfo(props.allBlockChains || []).supportedChains;
|
|
@@ -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 WalletTypes,\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;\n });\n}\n\nexport function availableWallets(providersState: State): WalletType[] {\n return Object.entries(providersState).map(([type]) => {\n return type;\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 === WalletTypes.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: string]: WalletState | undefined;\n};\n\nexport type ConnectResult = {\n accounts: string[] | null;\n network: Network | null;\n provider: any;\n};\n\nexport type Providers = { [type in WalletType]?: any };\n\nexport 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.connecting !== 'undefined') {\n this.state.connecting = states.connecting;\n updates.push([Events.CONNECTING, states.connecting]);\n }\n if (typeof states.reachable !== 'undefined') {\n this.state.reachable = states.reachable;\n updates.push([Events.REACHABLE, states.reachable]);\n }\n if (typeof states.installed !== 'undefined') {\n this.state.installed = states.installed;\n updates.push([Events.INSTALLED, states.installed]);\n }\n if (typeof states.accounts !== 'undefined') {\n this.state.accounts = states.accounts;\n updates.push([Events.ACCOUNTS, states.accounts]);\n }\n if (typeof states.network !== 'undefined') {\n this.state.network = states.network;\n updates.push([Events.NETWORK, states.network]);\n }\n\n const state = this.getState();\n updates.forEach(([name, value]) => {\n this.options.handler(\n this.options.config.type,\n name,\n value,\n state,\n this.meta\n );\n });\n }\n\n resetState() {\n this.updateState({\n connected: false,\n connecting: false,\n reachable: false,\n accounts: null,\n network: null,\n });\n }\n\n private 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: string]: Wallet | undefined;\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 // Get wallet info could be used in render methods to show wallets data\n // So, addWalletRef method shouldn't be called in this method\n\n return wallet.actions.getWalletInfo(props.allBlockChains || []);\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","WalletTypes","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","CONNECTING","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
|
+
{"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 WalletTypes,\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;\n });\n}\n\nexport function availableWallets(providersState: State): WalletType[] {\n return Object.entries(providersState).map(([type]) => {\n return type;\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 === WalletTypes.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: string]: WalletState | undefined;\n};\n\nexport type ConnectResult = {\n accounts: string[] | null;\n network: Network | null;\n provider: any;\n};\n\nexport type Providers = { [type in WalletType]?: any };\n\nexport 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 updateChainId: (chainId: number | string) => void;\n};\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 provider: any;\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 // eslint-disable-next-line @typescript-eslint/ban-ts-comment\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, provider: any) {\n const switchTo = this.actions.canSwitchNetworkTo;\n if (!switchTo) return false;\n\n return switchTo({\n network,\n meta: this.meta,\n provider,\n });\n }\n\n onInit() {\n if (!this.options.config.isAsyncInstance) {\n const instance = this.actions.getInstance();\n if (!!instance && !this.state.installed) {\n this.setInstalledAs(true);\n }\n }\n }\n\n setProvider(value: any) {\n this.provider = value;\n if (!!value && !!this.actions.subscribe) {\n this.actions.subscribe({\n instance: value,\n state: this.state,\n meta: this.meta,\n connect: this.connect.bind(this),\n disconnect: this.disconnect.bind(this),\n updateAccounts: (accounts, chainId) => {\n let network = this.state.network;\n if (chainId) {\n network =\n getBlockChainNameFromId(chainId, this.meta) || 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.connecting !== 'undefined') {\n this.state.connecting = states.connecting;\n updates.push([Events.CONNECTING, states.connecting]);\n }\n if (typeof states.reachable !== 'undefined') {\n this.state.reachable = states.reachable;\n updates.push([Events.REACHABLE, states.reachable]);\n }\n if (typeof states.installed !== 'undefined') {\n this.state.installed = states.installed;\n updates.push([Events.INSTALLED, states.installed]);\n }\n if (typeof states.accounts !== 'undefined') {\n this.state.accounts = states.accounts;\n updates.push([Events.ACCOUNTS, states.accounts]);\n }\n if (typeof states.network !== 'undefined') {\n this.state.network = states.network;\n updates.push([Events.NETWORK, states.network]);\n }\n\n const state = this.getState();\n updates.forEach(([name, value]) => {\n this.options.handler(\n this.options.config.type,\n name,\n value,\n state,\n this.meta\n );\n });\n }\n\n resetState() {\n this.updateState({\n connected: false,\n connecting: false,\n reachable: false,\n accounts: null,\n network: null,\n });\n }\n\n private 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 if (this.options.config.isAsyncInstance) {\n // Trying to connect\n const instanceOptions: GetInstanceOptions = {\n currentProvider: this.provider,\n meta: this.meta,\n force: force || false,\n updateChainId: (chainId) => {\n const network = chainId\n ? getBlockChainNameFromId(chainId, this.meta)\n : Network.Unknown;\n this.updateState({\n network,\n });\n },\n };\n\n if (network) {\n instanceOptions.network = network;\n }\n instance = await this.actions.getInstance(instanceOptions);\n } else {\n instance = this.actions.getInstance();\n }\n\n if (!instance) {\n this.setInstalledAs(false);\n this.resetState();\n\n const error_message = `It seems your selected wallet (${this.options.config.type}) isn't installed.`;\n throw new Error(error_message);\n }\n\n this.setProvider(instance);\n return instance;\n }\n}\n\nexport default Wallet;\n","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: string]: Wallet | undefined;\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 // eslint-disable-next-line @typescript-eslint/ban-ts-comment\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\n ? ref.canSwitchNetworkTo(network, ref.provider)\n : 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 // Get wallet info could be used in render methods to show wallets data\n // So, addWalletRef method shouldn't be called in this method\n\n return wallet.actions.getWalletInfo(props.allBlockChains || []);\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","WalletTypes","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","CONNECTING","REACHABLE","INSTALLED","ACCOUNTS","NETWORK","_this4","_tryGetInstance","_callee4","_this5","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.16-next.
|
|
3
|
+
"version": "0.1.16-next.7",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"module": "dist/wallets-core.esm.js",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -23,9 +23,9 @@
|
|
|
23
23
|
"react-dom": "^17.0.0 || ^18.0.0"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@rango-dev/wallets-shared": "^0.1.15-next.
|
|
26
|
+
"@rango-dev/wallets-shared": "^0.1.15-next.5",
|
|
27
27
|
"@walletconnect/ethereum-provider": "1.8.0",
|
|
28
|
-
"rango-types": "^0.1.
|
|
28
|
+
"rango-types": "^0.1.38"
|
|
29
29
|
},
|
|
30
30
|
"publishConfig": {
|
|
31
31
|
"access": "public"
|
package/src/provider.tsx
CHANGED
|
@@ -95,6 +95,7 @@ function Provider(props: ProviderProps) {
|
|
|
95
95
|
const wallets = checkWalletProviders(listOfProviders);
|
|
96
96
|
const api: ProviderContext = {
|
|
97
97
|
// TODO: Fix type error
|
|
98
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
98
99
|
// @ts-ignore
|
|
99
100
|
async connect(type, network) {
|
|
100
101
|
const wallet = wallets.get(type);
|
|
@@ -125,7 +126,7 @@ function Provider(props: ProviderProps) {
|
|
|
125
126
|
connectedWallets(providersState).forEach((type) => {
|
|
126
127
|
const wallet = wallets.get(type);
|
|
127
128
|
|
|
128
|
-
if (
|
|
129
|
+
if (wallet) {
|
|
129
130
|
const ref = addWalletRef(wallet);
|
|
130
131
|
disconnect_promises.push(ref.disconnect());
|
|
131
132
|
}
|
|
@@ -143,13 +144,15 @@ function Provider(props: ProviderProps) {
|
|
|
143
144
|
}
|
|
144
145
|
|
|
145
146
|
const ref = addWalletRef(wallet);
|
|
146
|
-
return ref.canSwitchNetworkTo
|
|
147
|
+
return ref.canSwitchNetworkTo
|
|
148
|
+
? ref.canSwitchNetworkTo(network, ref.provider)
|
|
149
|
+
: false;
|
|
147
150
|
},
|
|
148
151
|
providers() {
|
|
149
152
|
const providers: { [type in WalletType]?: any } = {};
|
|
150
153
|
availableWallets(providersState).forEach((type) => {
|
|
151
154
|
const wallet = wallets.get(type);
|
|
152
|
-
if (
|
|
155
|
+
if (wallet) {
|
|
153
156
|
const ref = addWalletRef(wallet);
|
|
154
157
|
providers[type] = ref.provider;
|
|
155
158
|
}
|
|
@@ -193,7 +196,7 @@ function Provider(props: ProviderProps) {
|
|
|
193
196
|
wallets.forEach((wallet) => {
|
|
194
197
|
const ref = addWalletRef(wallet);
|
|
195
198
|
const runOnInit = () => {
|
|
196
|
-
if (
|
|
199
|
+
if (ref.onInit) {
|
|
197
200
|
ref.onInit();
|
|
198
201
|
}
|
|
199
202
|
};
|
|
@@ -220,7 +223,7 @@ function Provider(props: ProviderProps) {
|
|
|
220
223
|
|
|
221
224
|
useEffect(() => {
|
|
222
225
|
const allBlockChains = props.allBlockChains;
|
|
223
|
-
if (
|
|
226
|
+
if (allBlockChains) {
|
|
224
227
|
wallets.forEach((wallet) => {
|
|
225
228
|
const ref = addWalletRef(wallet);
|
|
226
229
|
const supportedChains = ref.getWalletInfo(
|
package/src/types.ts
CHANGED
|
@@ -54,7 +54,9 @@ export type GetInstanceOptions = {
|
|
|
54
54
|
currentProvider: any;
|
|
55
55
|
meta: BlockchainMeta[];
|
|
56
56
|
force?: boolean;
|
|
57
|
+
updateChainId: (chainId: number | string) => void;
|
|
57
58
|
};
|
|
59
|
+
|
|
58
60
|
export type GetInstance =
|
|
59
61
|
| (() => any)
|
|
60
62
|
| ((options: GetInstanceOptions) => Promise<any>);
|
|
@@ -91,6 +93,7 @@ export type SwitchNetwork = (options: {
|
|
|
91
93
|
export type CanSwitchNetwork = (options: {
|
|
92
94
|
network: Network;
|
|
93
95
|
meta: BlockchainMeta[];
|
|
96
|
+
provider: any;
|
|
94
97
|
}) => boolean;
|
|
95
98
|
|
|
96
99
|
export interface WalletActions {
|
package/src/wallet.ts
CHANGED
|
@@ -92,7 +92,7 @@ class Wallet<InstanceType = any> {
|
|
|
92
92
|
const requestedNetwork =
|
|
93
93
|
network || currentNetwork || this.options.config.defaultNetwork;
|
|
94
94
|
|
|
95
|
-
if (
|
|
95
|
+
if (eagerConnection) {
|
|
96
96
|
const networkChanged =
|
|
97
97
|
currentNetwork !== requestedNetwork && !!requestedNetwork;
|
|
98
98
|
|
|
@@ -105,6 +105,7 @@ class Wallet<InstanceType = any> {
|
|
|
105
105
|
instance: this.provider,
|
|
106
106
|
meta: this.meta,
|
|
107
107
|
// TODO: Fix type error
|
|
108
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
108
109
|
// @ts-ignore
|
|
109
110
|
network: requestedNetwork,
|
|
110
111
|
newInstance: this.tryGetInstance.bind(this),
|
|
@@ -216,13 +217,14 @@ class Wallet<InstanceType = any> {
|
|
|
216
217
|
getWalletInfo(allBlockChains: BlockchainMeta[]) {
|
|
217
218
|
return this.actions.getWalletInfo(allBlockChains);
|
|
218
219
|
}
|
|
219
|
-
canSwitchNetworkTo(network: Network) {
|
|
220
|
+
canSwitchNetworkTo(network: Network, provider: any) {
|
|
220
221
|
const switchTo = this.actions.canSwitchNetworkTo;
|
|
221
222
|
if (!switchTo) return false;
|
|
222
223
|
|
|
223
224
|
return switchTo({
|
|
224
225
|
network,
|
|
225
226
|
meta: this.meta,
|
|
227
|
+
provider,
|
|
226
228
|
});
|
|
227
229
|
}
|
|
228
230
|
|
|
@@ -237,7 +239,6 @@ class Wallet<InstanceType = any> {
|
|
|
237
239
|
|
|
238
240
|
setProvider(value: any) {
|
|
239
241
|
this.provider = value;
|
|
240
|
-
|
|
241
242
|
if (!!value && !!this.actions.subscribe) {
|
|
242
243
|
this.actions.subscribe({
|
|
243
244
|
instance: value,
|
|
@@ -260,7 +261,7 @@ class Wallet<InstanceType = any> {
|
|
|
260
261
|
}
|
|
261
262
|
},
|
|
262
263
|
updateChainId: (chainId) => {
|
|
263
|
-
const network =
|
|
264
|
+
const network = chainId
|
|
264
265
|
? getBlockChainNameFromId(chainId, this.meta)
|
|
265
266
|
: Network.Unknown;
|
|
266
267
|
this.updateState({
|
|
@@ -353,19 +354,25 @@ class Wallet<InstanceType = any> {
|
|
|
353
354
|
// We only kill the session (and not restting the whole state)
|
|
354
355
|
// So we are relying on this.provider for achieving this functionality.
|
|
355
356
|
this.setProvider(null);
|
|
356
|
-
|
|
357
357
|
if (this.options.config.isAsyncInstance) {
|
|
358
358
|
// Trying to connect
|
|
359
359
|
const instanceOptions: GetInstanceOptions = {
|
|
360
360
|
currentProvider: this.provider,
|
|
361
361
|
meta: this.meta,
|
|
362
362
|
force: force || false,
|
|
363
|
+
updateChainId: (chainId) => {
|
|
364
|
+
const network = chainId
|
|
365
|
+
? getBlockChainNameFromId(chainId, this.meta)
|
|
366
|
+
: Network.Unknown;
|
|
367
|
+
this.updateState({
|
|
368
|
+
network,
|
|
369
|
+
});
|
|
370
|
+
},
|
|
363
371
|
};
|
|
364
372
|
|
|
365
373
|
if (network) {
|
|
366
374
|
instanceOptions.network = network;
|
|
367
375
|
}
|
|
368
|
-
|
|
369
376
|
instance = await this.actions.getInstance(instanceOptions);
|
|
370
377
|
} else {
|
|
371
378
|
instance = this.actions.getInstance();
|