@wagmi/connectors 4.0.0-beta.6 → 4.0.0-beta.8
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/esm/exports/index.js +1 -2
- package/dist/esm/exports/index.js.map +1 -1
- package/dist/esm/metaMask.js +8 -1
- package/dist/esm/metaMask.js.map +1 -1
- package/dist/esm/tsconfig.build.tsbuildinfo +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/types/exports/index.d.ts +1 -2
- package/dist/types/exports/index.d.ts.map +1 -1
- package/dist/types/metaMask.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/package.json +5 -6
- package/src/exports/index.ts +1 -3
- package/src/metaMask.ts +8 -1
- package/src/version.ts +1 -1
- package/dist/esm/ledger.js +0 -164
- package/dist/esm/ledger.js.map +0 -1
- package/dist/types/ledger.d.ts +0 -21
- package/dist/types/ledger.d.ts.map +0 -1
- package/src/ledger.ts +0 -212
package/dist/esm/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const version = '4.0.0-beta.
|
|
1
|
+
export const version = '4.0.0-beta.8';
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
export { type InjectedParameters, injected, type MockParameters, mock, } from '@wagmi/core
|
|
1
|
+
export { type InjectedParameters, injected, type MockParameters, mock, } from '@wagmi/core';
|
|
2
2
|
export { type CoinbaseWalletParameters, coinbaseWallet, } from '../coinbaseWallet.js';
|
|
3
|
-
export { type LedgerParameters, ledger } from '../ledger.js';
|
|
4
3
|
export { type MetaMaskParameters, metaMask } from '../metaMask.js';
|
|
5
4
|
export { type SafeParameters, safe } from '../safe.js';
|
|
6
5
|
export { type WalletConnectParameters, walletConnect, } from '../walletConnect.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/exports/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EACvB,QAAQ,EACR,KAAK,cAAc,EACnB,IAAI,GACL,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/exports/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EACvB,QAAQ,EACR,KAAK,cAAc,EACnB,IAAI,GACL,MAAM,aAAa,CAAA;AAEpB,OAAO,EACL,KAAK,wBAAwB,EAC7B,cAAc,GACf,MAAM,sBAAsB,CAAA;AAE7B,OAAO,EAAE,KAAK,kBAAkB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAElE,OAAO,EAAE,KAAK,cAAc,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAEtD,OAAO,EACL,KAAK,uBAAuB,EAC5B,aAAa,GACd,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metaMask.d.ts","sourceRoot":"","sources":["../../src/metaMask.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,kBAAkB,EACvB,WAAW,EACZ,MAAM,eAAe,CAAA;AAMtB,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AACxE,OAAO,EAEL,KAAK,mBAAmB,EASzB,MAAM,MAAM,CAAA;AAEb,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CACvC,YAAY,CACV,IAAI,CACF,kBAAkB,EAChB,8BAA8B,GAC9B,6BAA6B,GAC7B,wBAAwB,GACxB,gBAAgB,CACnB,CACF,CACF,CAAA;AAGD,wBAAgB,QAAQ,CAAC,UAAU,GAAE,kBAAuB;2BAGjC,mBAAmB,GAAG,IAAI;;gCAEF,IAAI;
|
|
1
|
+
{"version":3,"file":"metaMask.d.ts","sourceRoot":"","sources":["../../src/metaMask.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,kBAAkB,EACvB,WAAW,EACZ,MAAM,eAAe,CAAA;AAMtB,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AACxE,OAAO,EAEL,KAAK,mBAAmB,EASzB,MAAM,MAAM,CAAA;AAEb,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CACvC,YAAY,CACV,IAAI,CACF,kBAAkB,EAChB,8BAA8B,GAC9B,6BAA6B,GAC7B,wBAAwB,GACxB,gBAAgB,CACnB,CACF,CACF,CAAA;AAGD,wBAAgB,QAAQ,CAAC,UAAU,GAAE,kBAAuB;2BAGjC,mBAAmB,GAAG,IAAI;;gCAEF,IAAI;GAiStD;yBAtSe,QAAQ"}
|
package/dist/types/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const version = "4.0.0-beta.
|
|
1
|
+
export declare const version = "4.0.0-beta.8";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wagmi/connectors",
|
|
3
3
|
"description": "Collection of connectors for Wagmi",
|
|
4
|
-
"version": "4.0.0-beta.
|
|
4
|
+
"version": "4.0.0-beta.8",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"peerDependencies": {
|
|
31
31
|
"typescript": ">=5.0.4",
|
|
32
32
|
"viem": "2.0.0-beta.15",
|
|
33
|
-
"@wagmi/core": "2.0.0-beta.
|
|
33
|
+
"@wagmi/core": "2.0.0-beta.8"
|
|
34
34
|
},
|
|
35
35
|
"peerDependenciesMeta": {
|
|
36
36
|
"typescript": {
|
|
@@ -38,12 +38,11 @@
|
|
|
38
38
|
}
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@coinbase/wallet-sdk": "3.9.
|
|
42
|
-
"@ledgerhq/connect-kit-loader": "^1.1.2",
|
|
41
|
+
"@coinbase/wallet-sdk": "3.9.1",
|
|
43
42
|
"@metamask/sdk": "^0.14.1",
|
|
44
|
-
"@safe-global/safe-apps-provider": "^0.18.
|
|
43
|
+
"@safe-global/safe-apps-provider": "^0.18.1",
|
|
45
44
|
"@safe-global/safe-apps-sdk": "^8.1.0",
|
|
46
|
-
"@walletconnect/ethereum-provider": "^2.10.
|
|
45
|
+
"@walletconnect/ethereum-provider": "^2.10.6",
|
|
47
46
|
"@walletconnect/modal": "^2.6.2"
|
|
48
47
|
},
|
|
49
48
|
"contributors": [
|
package/src/exports/index.ts
CHANGED
|
@@ -3,15 +3,13 @@ export {
|
|
|
3
3
|
injected,
|
|
4
4
|
type MockParameters,
|
|
5
5
|
mock,
|
|
6
|
-
} from '@wagmi/core
|
|
6
|
+
} from '@wagmi/core'
|
|
7
7
|
|
|
8
8
|
export {
|
|
9
9
|
type CoinbaseWalletParameters,
|
|
10
10
|
coinbaseWallet,
|
|
11
11
|
} from '../coinbaseWallet.js'
|
|
12
12
|
|
|
13
|
-
export { type LedgerParameters, ledger } from '../ledger.js'
|
|
14
|
-
|
|
15
13
|
export { type MetaMaskParameters, metaMask } from '../metaMask.js'
|
|
16
14
|
|
|
17
15
|
export { type SafeParameters, safe } from '../safe.js'
|
package/src/metaMask.ts
CHANGED
|
@@ -114,7 +114,7 @@ export function metaMask(parameters: MetaMaskParameters = {}) {
|
|
|
114
114
|
// Switch to chain if provided
|
|
115
115
|
let currentChainId = await this.getChainId()
|
|
116
116
|
if (chainId && currentChainId !== chainId) {
|
|
117
|
-
const chain = await this.switchChain
|
|
117
|
+
const chain = await this.switchChain?.({ chainId }).catch(() => ({
|
|
118
118
|
id: currentChainId,
|
|
119
119
|
}))
|
|
120
120
|
currentChainId = chain?.id ?? currentChainId
|
|
@@ -168,6 +168,13 @@ export function metaMask(parameters: MetaMaskParameters = {}) {
|
|
|
168
168
|
enableDebug: false,
|
|
169
169
|
dappMetadata: { name: 'wagmi' },
|
|
170
170
|
extensionOnly: true,
|
|
171
|
+
modals: {
|
|
172
|
+
// Disable by default since it pops up when mobile tries to reconnect
|
|
173
|
+
otp() {
|
|
174
|
+
const noop = () => {}
|
|
175
|
+
return { mount: noop, unmount: noop }
|
|
176
|
+
},
|
|
177
|
+
},
|
|
171
178
|
useDeeplink: true,
|
|
172
179
|
_source: 'wagmi',
|
|
173
180
|
...parameters,
|
package/src/version.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const version = '4.0.0-beta.
|
|
1
|
+
export const version = '4.0.0-beta.8'
|
package/dist/esm/ledger.js
DELETED
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
import { SupportedProviders, loadConnectKit, } from '@ledgerhq/connect-kit-loader';
|
|
2
|
-
import { ChainNotConfiguredError, createConnector, normalizeChainId, } from '@wagmi/core';
|
|
3
|
-
import { SwitchChainError, UserRejectedRequestError, getAddress, numberToHex, } from 'viem';
|
|
4
|
-
ledger.type = 'ledger';
|
|
5
|
-
export function ledger(parameters = {}) {
|
|
6
|
-
let provider_;
|
|
7
|
-
let providerPromise;
|
|
8
|
-
return createConnector((config) => ({
|
|
9
|
-
id: 'ledger',
|
|
10
|
-
name: 'Ledger',
|
|
11
|
-
type: ledger.type,
|
|
12
|
-
async setup() {
|
|
13
|
-
const provider = await this.getProvider().catch(() => null);
|
|
14
|
-
if (!provider)
|
|
15
|
-
return;
|
|
16
|
-
provider.on('connect', this.onConnect.bind(this));
|
|
17
|
-
provider.on('session_delete', this.onSessionDelete.bind(this));
|
|
18
|
-
},
|
|
19
|
-
async connect({ chainId } = {}) {
|
|
20
|
-
try {
|
|
21
|
-
const provider = await this.getProvider();
|
|
22
|
-
// TODO: Update this logic to be more stable (a la WalletConnect connector)
|
|
23
|
-
// Don't request accounts if we have a session, like when reloading with
|
|
24
|
-
// an active WC v2 session
|
|
25
|
-
if (!provider.session)
|
|
26
|
-
await provider.request({ method: 'eth_requestAccounts' });
|
|
27
|
-
const accounts = await this.getAccounts();
|
|
28
|
-
provider.removeListener('connect', this.onConnect.bind(this));
|
|
29
|
-
provider.on('accountsChanged', this.onAccountsChanged.bind(this));
|
|
30
|
-
provider.on('chainChanged', this.onChainChanged);
|
|
31
|
-
provider.on('disconnect', this.onDisconnect.bind(this));
|
|
32
|
-
provider.on('session_delete', this.onSessionDelete.bind(this));
|
|
33
|
-
// Switch to chain if provided
|
|
34
|
-
let currentChainId = await this.getChainId();
|
|
35
|
-
if (chainId && currentChainId !== chainId) {
|
|
36
|
-
const chain = await this.switchChain({ chainId }).catch(() => ({
|
|
37
|
-
id: currentChainId,
|
|
38
|
-
}));
|
|
39
|
-
currentChainId = chain?.id ?? currentChainId;
|
|
40
|
-
}
|
|
41
|
-
return { accounts, chainId: currentChainId };
|
|
42
|
-
}
|
|
43
|
-
catch (error) {
|
|
44
|
-
if (/user rejected/i.test(error?.message))
|
|
45
|
-
throw new UserRejectedRequestError(error);
|
|
46
|
-
throw error;
|
|
47
|
-
}
|
|
48
|
-
},
|
|
49
|
-
async disconnect() {
|
|
50
|
-
const provider = await this.getProvider();
|
|
51
|
-
try {
|
|
52
|
-
await provider?.disconnect?.().catch(() => { });
|
|
53
|
-
}
|
|
54
|
-
catch (error) {
|
|
55
|
-
if (!/No matching key/i.test(error.message))
|
|
56
|
-
throw error;
|
|
57
|
-
}
|
|
58
|
-
finally {
|
|
59
|
-
provider.removeListener('accountsChanged', this.onAccountsChanged.bind(this));
|
|
60
|
-
provider.removeListener('chainChanged', this.onChainChanged);
|
|
61
|
-
provider.removeListener('disconnect', this.onDisconnect.bind(this));
|
|
62
|
-
provider.removeListener('session_delete', this.onSessionDelete.bind(this));
|
|
63
|
-
provider.on('connect', this.onConnect.bind(this));
|
|
64
|
-
}
|
|
65
|
-
},
|
|
66
|
-
async getAccounts() {
|
|
67
|
-
const provider = await this.getProvider();
|
|
68
|
-
return (await provider.request({ method: 'eth_accounts' })).map(getAddress);
|
|
69
|
-
},
|
|
70
|
-
async getProvider({ chainId } = {}) {
|
|
71
|
-
async function initProvider() {
|
|
72
|
-
const connectKit = await loadConnectKit();
|
|
73
|
-
if (parameters.enableDebugLogs)
|
|
74
|
-
connectKit.enableDebugLogs();
|
|
75
|
-
const { optionalEvents, optionalMethods, projectId, requiredChains, requiredEvents, requiredMethods, } = parameters;
|
|
76
|
-
connectKit.checkSupport({
|
|
77
|
-
chains: requiredChains,
|
|
78
|
-
events: requiredEvents,
|
|
79
|
-
methods: requiredMethods,
|
|
80
|
-
optionalChains: config.chains.map(({ id }) => id),
|
|
81
|
-
optionalEvents,
|
|
82
|
-
optionalMethods,
|
|
83
|
-
projectId,
|
|
84
|
-
providerType: SupportedProviders.Ethereum,
|
|
85
|
-
rpcMap: Object.fromEntries(config.chains.map((chain) => [
|
|
86
|
-
chain.id,
|
|
87
|
-
chain.rpcUrls.default.http[0],
|
|
88
|
-
])),
|
|
89
|
-
walletConnectVersion: 2,
|
|
90
|
-
});
|
|
91
|
-
return connectKit.getProvider();
|
|
92
|
-
}
|
|
93
|
-
if (!provider_) {
|
|
94
|
-
if (!providerPromise)
|
|
95
|
-
providerPromise = initProvider();
|
|
96
|
-
provider_ = await providerPromise;
|
|
97
|
-
}
|
|
98
|
-
if (chainId)
|
|
99
|
-
await this.switchChain({ chainId });
|
|
100
|
-
return provider_;
|
|
101
|
-
},
|
|
102
|
-
async getChainId() {
|
|
103
|
-
const provider = await this.getProvider();
|
|
104
|
-
const chainId = await provider.request({ method: 'eth_chainId' });
|
|
105
|
-
return normalizeChainId(chainId);
|
|
106
|
-
},
|
|
107
|
-
async isAuthorized() {
|
|
108
|
-
try {
|
|
109
|
-
const accounts = await this.getAccounts();
|
|
110
|
-
return !!accounts.length;
|
|
111
|
-
}
|
|
112
|
-
catch {
|
|
113
|
-
return false;
|
|
114
|
-
}
|
|
115
|
-
},
|
|
116
|
-
async switchChain({ chainId }) {
|
|
117
|
-
const chain = config.chains.find((chain) => chain.id === chainId);
|
|
118
|
-
if (!chain)
|
|
119
|
-
throw new SwitchChainError(new ChainNotConfiguredError());
|
|
120
|
-
try {
|
|
121
|
-
const provider = await this.getProvider();
|
|
122
|
-
await provider.request({
|
|
123
|
-
method: 'wallet_switchEthereumChain',
|
|
124
|
-
params: [{ chainId: numberToHex(chainId) }],
|
|
125
|
-
});
|
|
126
|
-
return chain;
|
|
127
|
-
}
|
|
128
|
-
catch (error) {
|
|
129
|
-
const message = typeof error === 'string'
|
|
130
|
-
? error
|
|
131
|
-
: error?.message;
|
|
132
|
-
if (/user rejected request/i.test(message))
|
|
133
|
-
throw new UserRejectedRequestError(error);
|
|
134
|
-
throw new SwitchChainError(error);
|
|
135
|
-
}
|
|
136
|
-
},
|
|
137
|
-
onAccountsChanged(accounts) {
|
|
138
|
-
if (accounts.length === 0)
|
|
139
|
-
config.emitter.emit('disconnect');
|
|
140
|
-
else
|
|
141
|
-
config.emitter.emit('change', { accounts: accounts.map(getAddress) });
|
|
142
|
-
},
|
|
143
|
-
onChainChanged(chain) {
|
|
144
|
-
const chainId = normalizeChainId(chain);
|
|
145
|
-
config.emitter.emit('change', { chainId });
|
|
146
|
-
},
|
|
147
|
-
async onConnect(connectInfo) {
|
|
148
|
-
const chainId = normalizeChainId(connectInfo.chainId);
|
|
149
|
-
const accounts = await this.getAccounts();
|
|
150
|
-
config.emitter.emit('connect', { accounts, chainId });
|
|
151
|
-
},
|
|
152
|
-
async onDisconnect(_error) {
|
|
153
|
-
config.emitter.emit('disconnect');
|
|
154
|
-
const provider = await this.getProvider();
|
|
155
|
-
provider.removeListener('accountsChanged', this.onAccountsChanged);
|
|
156
|
-
provider.removeListener('chainChanged', this.onChainChanged);
|
|
157
|
-
provider.removeListener('disconnect', this.onDisconnect.bind(this));
|
|
158
|
-
},
|
|
159
|
-
onSessionDelete() {
|
|
160
|
-
this.onDisconnect();
|
|
161
|
-
},
|
|
162
|
-
}));
|
|
163
|
-
}
|
|
164
|
-
//# sourceMappingURL=ledger.js.map
|
package/dist/esm/ledger.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ledger.js","sourceRoot":"","sources":["../../src/ledger.ts"],"names":[],"mappings":"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"}
|
package/dist/types/ledger.d.ts
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { type EthereumProvider } from '@ledgerhq/connect-kit-loader';
|
|
2
|
-
import { type ProviderConnectInfo } from 'viem';
|
|
3
|
-
export type LedgerParameters = {
|
|
4
|
-
enableDebugLogs?: boolean | undefined;
|
|
5
|
-
optionalEvents?: string[] | undefined;
|
|
6
|
-
optionalMethods?: string[] | undefined;
|
|
7
|
-
projectId?: string | undefined;
|
|
8
|
-
requiredChains?: number[] | undefined;
|
|
9
|
-
requiredEvents?: string[] | undefined;
|
|
10
|
-
requiredMethods?: string[] | undefined;
|
|
11
|
-
};
|
|
12
|
-
export declare function ledger(parameters?: LedgerParameters): import("@wagmi/core").CreateConnectorFn<EthereumProvider, {
|
|
13
|
-
onConnect(connectInfo: ProviderConnectInfo): void;
|
|
14
|
-
onSessionDelete(data: {
|
|
15
|
-
topic: string;
|
|
16
|
-
}): void;
|
|
17
|
-
}, {}>;
|
|
18
|
-
export declare namespace ledger {
|
|
19
|
-
var type: "ledger";
|
|
20
|
-
}
|
|
21
|
-
//# sourceMappingURL=ledger.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ledger.d.ts","sourceRoot":"","sources":["../../src/ledger.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,gBAAgB,EAGtB,MAAM,8BAA8B,CAAA;AAMrC,OAAO,EACL,KAAK,mBAAmB,EAMzB,MAAM,MAAM,CAAA;AAEb,MAAM,MAAM,gBAAgB,GAAG;IAC7B,eAAe,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACrC,cAAc,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;IACrC,eAAe,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;IACtC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC9B,cAAc,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;IACrC,cAAc,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;IACrC,eAAe,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;CACvC,CAAA;AAGD,wBAAgB,MAAM,CAAC,UAAU,GAAE,gBAAqB;2BAG7B,mBAAmB,GAAG,IAAI;0BAC3B;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;OAiLjD;yBArLe,MAAM"}
|
package/src/ledger.ts
DELETED
|
@@ -1,212 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
type EthereumProvider,
|
|
3
|
-
SupportedProviders,
|
|
4
|
-
loadConnectKit,
|
|
5
|
-
} from '@ledgerhq/connect-kit-loader'
|
|
6
|
-
import {
|
|
7
|
-
ChainNotConfiguredError,
|
|
8
|
-
createConnector,
|
|
9
|
-
normalizeChainId,
|
|
10
|
-
} from '@wagmi/core'
|
|
11
|
-
import {
|
|
12
|
-
type ProviderConnectInfo,
|
|
13
|
-
type ProviderRpcError,
|
|
14
|
-
SwitchChainError,
|
|
15
|
-
UserRejectedRequestError,
|
|
16
|
-
getAddress,
|
|
17
|
-
numberToHex,
|
|
18
|
-
} from 'viem'
|
|
19
|
-
|
|
20
|
-
export type LedgerParameters = {
|
|
21
|
-
enableDebugLogs?: boolean | undefined
|
|
22
|
-
optionalEvents?: string[] | undefined
|
|
23
|
-
optionalMethods?: string[] | undefined
|
|
24
|
-
projectId?: string | undefined
|
|
25
|
-
requiredChains?: number[] | undefined
|
|
26
|
-
requiredEvents?: string[] | undefined
|
|
27
|
-
requiredMethods?: string[] | undefined
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
ledger.type = 'ledger' as const
|
|
31
|
-
export function ledger(parameters: LedgerParameters = {}) {
|
|
32
|
-
type Provider = EthereumProvider
|
|
33
|
-
type Properties = {
|
|
34
|
-
onConnect(connectInfo: ProviderConnectInfo): void
|
|
35
|
-
onSessionDelete(data: { topic: string }): void
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
let provider_: Provider | undefined
|
|
39
|
-
let providerPromise: Promise<typeof provider_>
|
|
40
|
-
|
|
41
|
-
return createConnector<Provider, Properties>((config) => ({
|
|
42
|
-
id: 'ledger',
|
|
43
|
-
name: 'Ledger',
|
|
44
|
-
type: ledger.type,
|
|
45
|
-
async setup() {
|
|
46
|
-
const provider = await this.getProvider().catch(() => null)
|
|
47
|
-
if (!provider) return
|
|
48
|
-
provider.on('connect', this.onConnect.bind(this))
|
|
49
|
-
provider.on('session_delete', this.onSessionDelete.bind(this))
|
|
50
|
-
},
|
|
51
|
-
async connect({ chainId } = {}) {
|
|
52
|
-
try {
|
|
53
|
-
const provider = await this.getProvider()
|
|
54
|
-
|
|
55
|
-
// TODO: Update this logic to be more stable (a la WalletConnect connector)
|
|
56
|
-
// Don't request accounts if we have a session, like when reloading with
|
|
57
|
-
// an active WC v2 session
|
|
58
|
-
if (!provider.session)
|
|
59
|
-
await provider.request({ method: 'eth_requestAccounts' })
|
|
60
|
-
|
|
61
|
-
const accounts = await this.getAccounts()
|
|
62
|
-
|
|
63
|
-
provider.removeListener('connect', this.onConnect.bind(this))
|
|
64
|
-
provider.on('accountsChanged', this.onAccountsChanged.bind(this))
|
|
65
|
-
provider.on('chainChanged', this.onChainChanged)
|
|
66
|
-
provider.on('disconnect', this.onDisconnect.bind(this))
|
|
67
|
-
provider.on('session_delete', this.onSessionDelete.bind(this))
|
|
68
|
-
|
|
69
|
-
// Switch to chain if provided
|
|
70
|
-
let currentChainId = await this.getChainId()
|
|
71
|
-
if (chainId && currentChainId !== chainId) {
|
|
72
|
-
const chain = await this.switchChain!({ chainId }).catch(() => ({
|
|
73
|
-
id: currentChainId,
|
|
74
|
-
}))
|
|
75
|
-
currentChainId = chain?.id ?? currentChainId
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
return { accounts, chainId: currentChainId }
|
|
79
|
-
} catch (error) {
|
|
80
|
-
if (/user rejected/i.test((error as ProviderRpcError)?.message))
|
|
81
|
-
throw new UserRejectedRequestError(error as Error)
|
|
82
|
-
throw error
|
|
83
|
-
}
|
|
84
|
-
},
|
|
85
|
-
async disconnect() {
|
|
86
|
-
const provider = await this.getProvider()
|
|
87
|
-
try {
|
|
88
|
-
await provider?.disconnect?.().catch(() => {})
|
|
89
|
-
} catch (error) {
|
|
90
|
-
if (!/No matching key/i.test((error as Error).message)) throw error
|
|
91
|
-
} finally {
|
|
92
|
-
provider.removeListener(
|
|
93
|
-
'accountsChanged',
|
|
94
|
-
this.onAccountsChanged.bind(this),
|
|
95
|
-
)
|
|
96
|
-
provider.removeListener('chainChanged', this.onChainChanged)
|
|
97
|
-
provider.removeListener('disconnect', this.onDisconnect.bind(this))
|
|
98
|
-
provider.removeListener(
|
|
99
|
-
'session_delete',
|
|
100
|
-
this.onSessionDelete.bind(this),
|
|
101
|
-
)
|
|
102
|
-
provider.on('connect', this.onConnect.bind(this))
|
|
103
|
-
}
|
|
104
|
-
},
|
|
105
|
-
async getAccounts() {
|
|
106
|
-
const provider = await this.getProvider()
|
|
107
|
-
return (await provider.request<string[]>({ method: 'eth_accounts' })).map(
|
|
108
|
-
getAddress,
|
|
109
|
-
)
|
|
110
|
-
},
|
|
111
|
-
async getProvider({ chainId } = {}) {
|
|
112
|
-
async function initProvider() {
|
|
113
|
-
const connectKit = await loadConnectKit()
|
|
114
|
-
if (parameters.enableDebugLogs) connectKit.enableDebugLogs()
|
|
115
|
-
|
|
116
|
-
const {
|
|
117
|
-
optionalEvents,
|
|
118
|
-
optionalMethods,
|
|
119
|
-
projectId,
|
|
120
|
-
requiredChains,
|
|
121
|
-
requiredEvents,
|
|
122
|
-
requiredMethods,
|
|
123
|
-
} = parameters
|
|
124
|
-
connectKit.checkSupport({
|
|
125
|
-
chains: requiredChains,
|
|
126
|
-
events: requiredEvents,
|
|
127
|
-
methods: requiredMethods,
|
|
128
|
-
optionalChains: config.chains.map(({ id }) => id),
|
|
129
|
-
optionalEvents,
|
|
130
|
-
optionalMethods,
|
|
131
|
-
projectId,
|
|
132
|
-
providerType: SupportedProviders.Ethereum,
|
|
133
|
-
rpcMap: Object.fromEntries(
|
|
134
|
-
config.chains.map((chain) => [
|
|
135
|
-
chain.id,
|
|
136
|
-
chain.rpcUrls.default.http[0]!,
|
|
137
|
-
]),
|
|
138
|
-
),
|
|
139
|
-
walletConnectVersion: 2,
|
|
140
|
-
})
|
|
141
|
-
|
|
142
|
-
return connectKit.getProvider()
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
if (!provider_) {
|
|
146
|
-
if (!providerPromise) providerPromise = initProvider()
|
|
147
|
-
provider_ = await providerPromise
|
|
148
|
-
}
|
|
149
|
-
if (chainId) await this.switchChain!({ chainId })
|
|
150
|
-
return provider_!
|
|
151
|
-
},
|
|
152
|
-
async getChainId() {
|
|
153
|
-
const provider = await this.getProvider()
|
|
154
|
-
const chainId = await provider.request({ method: 'eth_chainId' })
|
|
155
|
-
return normalizeChainId(chainId)
|
|
156
|
-
},
|
|
157
|
-
async isAuthorized() {
|
|
158
|
-
try {
|
|
159
|
-
const accounts = await this.getAccounts()
|
|
160
|
-
return !!accounts.length
|
|
161
|
-
} catch {
|
|
162
|
-
return false
|
|
163
|
-
}
|
|
164
|
-
},
|
|
165
|
-
async switchChain({ chainId }) {
|
|
166
|
-
const chain = config.chains.find((chain) => chain.id === chainId)
|
|
167
|
-
if (!chain) throw new SwitchChainError(new ChainNotConfiguredError())
|
|
168
|
-
|
|
169
|
-
try {
|
|
170
|
-
const provider = await this.getProvider()
|
|
171
|
-
await provider.request({
|
|
172
|
-
method: 'wallet_switchEthereumChain',
|
|
173
|
-
params: [{ chainId: numberToHex(chainId) }],
|
|
174
|
-
})
|
|
175
|
-
return chain
|
|
176
|
-
} catch (error) {
|
|
177
|
-
const message =
|
|
178
|
-
typeof error === 'string'
|
|
179
|
-
? error
|
|
180
|
-
: (error as ProviderRpcError)?.message
|
|
181
|
-
if (/user rejected request/i.test(message))
|
|
182
|
-
throw new UserRejectedRequestError(error as Error)
|
|
183
|
-
|
|
184
|
-
throw new SwitchChainError(error as Error)
|
|
185
|
-
}
|
|
186
|
-
},
|
|
187
|
-
onAccountsChanged(accounts) {
|
|
188
|
-
if (accounts.length === 0) config.emitter.emit('disconnect')
|
|
189
|
-
else config.emitter.emit('change', { accounts: accounts.map(getAddress) })
|
|
190
|
-
},
|
|
191
|
-
onChainChanged(chain) {
|
|
192
|
-
const chainId = normalizeChainId(chain)
|
|
193
|
-
config.emitter.emit('change', { chainId })
|
|
194
|
-
},
|
|
195
|
-
async onConnect(connectInfo) {
|
|
196
|
-
const chainId = normalizeChainId(connectInfo.chainId)
|
|
197
|
-
const accounts = await this.getAccounts()
|
|
198
|
-
config.emitter.emit('connect', { accounts, chainId })
|
|
199
|
-
},
|
|
200
|
-
async onDisconnect(_error) {
|
|
201
|
-
config.emitter.emit('disconnect')
|
|
202
|
-
|
|
203
|
-
const provider = await this.getProvider()
|
|
204
|
-
provider.removeListener('accountsChanged', this.onAccountsChanged)
|
|
205
|
-
provider.removeListener('chainChanged', this.onChainChanged)
|
|
206
|
-
provider.removeListener('disconnect', this.onDisconnect.bind(this))
|
|
207
|
-
},
|
|
208
|
-
onSessionDelete() {
|
|
209
|
-
this.onDisconnect()
|
|
210
|
-
},
|
|
211
|
-
}))
|
|
212
|
-
}
|