@wagmi/connectors 1.0.0-next.3 → 1.0.0-next.4
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/coinbaseWallet.d.ts +1 -831
- package/dist/index.d.ts +1 -19
- package/dist/injected.d.ts +1 -833
- package/dist/ledger.d.ts +1 -810
- package/dist/metaMask.d.ts +1 -37
- package/dist/mock/index.d.ts +1 -1578
- package/dist/safe.d.ts +1 -822
- package/dist/walletConnect.d.ts +1 -873
- package/dist/walletConnectLegacy.d.ts +1 -811
- package/package.json +2 -2
- package/dist/base-335f54fd.d.ts +0 -129
- package/dist/chunk-FMYAICWT.js +0 -364
- package/dist/chunk-OQILYQDO.js +0 -15
- package/dist/chunk-QYMCVNHT.js +0 -68
- package/dist/chunk-ZCAPXGBX.js +0 -26
- package/dist/coinbaseWallet.js +0 -215
- package/dist/index.js +0 -12
- package/dist/injected.js +0 -9
- package/dist/ledger.js +0 -192
- package/dist/metaMask.js +0 -123
- package/dist/mock/index.js +0 -202
- package/dist/safe.js +0 -128
- package/dist/walletConnect.js +0 -311
- package/dist/walletConnectLegacy.js +0 -178
package/dist/mock/index.js
DELETED
|
@@ -1,202 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
normalizeChainId
|
|
3
|
-
} from "../chunk-OQILYQDO.js";
|
|
4
|
-
import {
|
|
5
|
-
Connector,
|
|
6
|
-
__privateAdd,
|
|
7
|
-
__privateGet,
|
|
8
|
-
__privateMethod,
|
|
9
|
-
__privateSet,
|
|
10
|
-
__publicField
|
|
11
|
-
} from "../chunk-QYMCVNHT.js";
|
|
12
|
-
|
|
13
|
-
// src/mock/connector.ts
|
|
14
|
-
import { getAddress as getAddress2 } from "viem";
|
|
15
|
-
|
|
16
|
-
// src/mock/provider.ts
|
|
17
|
-
import { default as EventEmitter } from "eventemitter3";
|
|
18
|
-
import { UserRejectedRequestError, getAddress } from "viem";
|
|
19
|
-
var _options, _walletClient;
|
|
20
|
-
var MockProvider = class {
|
|
21
|
-
constructor(options) {
|
|
22
|
-
__publicField(this, "events", new EventEmitter());
|
|
23
|
-
__publicField(this, "chainId");
|
|
24
|
-
__privateAdd(this, _options, void 0);
|
|
25
|
-
__privateAdd(this, _walletClient, void 0);
|
|
26
|
-
this.chainId = options.chainId;
|
|
27
|
-
__privateSet(this, _options, options);
|
|
28
|
-
}
|
|
29
|
-
async enable() {
|
|
30
|
-
if (__privateGet(this, _options).flags?.failConnect)
|
|
31
|
-
throw new UserRejectedRequestError(new Error("Failed to connect."));
|
|
32
|
-
if (!__privateGet(this, _walletClient))
|
|
33
|
-
__privateSet(this, _walletClient, __privateGet(this, _options).walletClient);
|
|
34
|
-
const address = __privateGet(this, _walletClient).account.address;
|
|
35
|
-
this.events.emit("accountsChanged", [address]);
|
|
36
|
-
return [address];
|
|
37
|
-
}
|
|
38
|
-
async disconnect() {
|
|
39
|
-
this.events.emit("disconnect");
|
|
40
|
-
__privateSet(this, _walletClient, void 0);
|
|
41
|
-
}
|
|
42
|
-
async getAccounts() {
|
|
43
|
-
const address = __privateGet(this, _walletClient)?.account.address;
|
|
44
|
-
if (!address)
|
|
45
|
-
return [];
|
|
46
|
-
return [getAddress(address)];
|
|
47
|
-
}
|
|
48
|
-
getWalletClient() {
|
|
49
|
-
const walletClient = __privateGet(this, _walletClient);
|
|
50
|
-
if (!walletClient)
|
|
51
|
-
throw new Error("walletClient not found");
|
|
52
|
-
return walletClient;
|
|
53
|
-
}
|
|
54
|
-
async switchChain(chainId) {
|
|
55
|
-
if (__privateGet(this, _options).flags?.failSwitchChain)
|
|
56
|
-
throw new UserRejectedRequestError(new Error("Failed to switch chain."));
|
|
57
|
-
__privateGet(this, _options).chainId = chainId;
|
|
58
|
-
this.chainId = chainId;
|
|
59
|
-
this.events.emit("chainChanged", chainId);
|
|
60
|
-
}
|
|
61
|
-
async switchWalletClient(walletClient) {
|
|
62
|
-
const address = walletClient.account.address;
|
|
63
|
-
__privateSet(this, _walletClient, walletClient);
|
|
64
|
-
this.events.emit("accountsChanged", [address]);
|
|
65
|
-
}
|
|
66
|
-
async watchAsset(_asset) {
|
|
67
|
-
return true;
|
|
68
|
-
}
|
|
69
|
-
async request({ method, params }) {
|
|
70
|
-
return __privateGet(this, _walletClient)?.transport.request({ method, params });
|
|
71
|
-
}
|
|
72
|
-
on(event, listener) {
|
|
73
|
-
this.events.on(event, listener);
|
|
74
|
-
return this;
|
|
75
|
-
}
|
|
76
|
-
removeListener(event, listener) {
|
|
77
|
-
this.events.removeListener(event, listener);
|
|
78
|
-
return this;
|
|
79
|
-
}
|
|
80
|
-
toJSON() {
|
|
81
|
-
return "<MockProvider>";
|
|
82
|
-
}
|
|
83
|
-
};
|
|
84
|
-
_options = new WeakMap();
|
|
85
|
-
_walletClient = new WeakMap();
|
|
86
|
-
|
|
87
|
-
// src/mock/connector.ts
|
|
88
|
-
var _provider, _switchChain, switchChain_fn;
|
|
89
|
-
var MockConnector = class extends Connector {
|
|
90
|
-
constructor({
|
|
91
|
-
chains,
|
|
92
|
-
options
|
|
93
|
-
}) {
|
|
94
|
-
super({
|
|
95
|
-
chains,
|
|
96
|
-
options: {
|
|
97
|
-
...options,
|
|
98
|
-
chainId: options.chainId ?? chains?.[0]?.id
|
|
99
|
-
}
|
|
100
|
-
});
|
|
101
|
-
__privateAdd(this, _switchChain);
|
|
102
|
-
__publicField(this, "id", "mock");
|
|
103
|
-
__publicField(this, "name", "Mock");
|
|
104
|
-
__publicField(this, "ready", true);
|
|
105
|
-
__privateAdd(this, _provider, void 0);
|
|
106
|
-
__publicField(this, "onAccountsChanged", (accounts) => {
|
|
107
|
-
if (accounts.length === 0)
|
|
108
|
-
this.emit("disconnect");
|
|
109
|
-
else
|
|
110
|
-
this.emit("change", { account: getAddress2(accounts[0]) });
|
|
111
|
-
});
|
|
112
|
-
__publicField(this, "onChainChanged", (chainId) => {
|
|
113
|
-
const id = normalizeChainId(chainId);
|
|
114
|
-
const unsupported = this.isChainUnsupported(id);
|
|
115
|
-
this.emit("change", { chain: { id, unsupported } });
|
|
116
|
-
});
|
|
117
|
-
__publicField(this, "onDisconnect", () => {
|
|
118
|
-
this.emit("disconnect");
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
async connect({ chainId } = {}) {
|
|
122
|
-
const provider = await this.getProvider({ chainId });
|
|
123
|
-
provider.on("accountsChanged", this.onAccountsChanged);
|
|
124
|
-
provider.on("chainChanged", this.onChainChanged);
|
|
125
|
-
provider.on("disconnect", this.onDisconnect);
|
|
126
|
-
this.emit("message", { type: "connecting" });
|
|
127
|
-
const accounts = await provider.enable();
|
|
128
|
-
const account = getAddress2(accounts[0]);
|
|
129
|
-
const id = normalizeChainId(provider.chainId);
|
|
130
|
-
const unsupported = this.isChainUnsupported(id);
|
|
131
|
-
const data = { account, chain: { id, unsupported }, provider };
|
|
132
|
-
if (!this.options.flags?.noSwitchChain)
|
|
133
|
-
this.switchChain = __privateMethod(this, _switchChain, switchChain_fn);
|
|
134
|
-
return new Promise(
|
|
135
|
-
(res) => setTimeout(() => res(data), 100)
|
|
136
|
-
);
|
|
137
|
-
}
|
|
138
|
-
async disconnect() {
|
|
139
|
-
const provider = await this.getProvider();
|
|
140
|
-
await provider.disconnect();
|
|
141
|
-
provider.removeListener("accountsChanged", this.onAccountsChanged);
|
|
142
|
-
provider.removeListener("chainChanged", this.onChainChanged);
|
|
143
|
-
provider.removeListener("disconnect", this.onDisconnect);
|
|
144
|
-
}
|
|
145
|
-
async getAccount() {
|
|
146
|
-
const provider = await this.getProvider();
|
|
147
|
-
const accounts = await provider.getAccounts();
|
|
148
|
-
const account = accounts[0];
|
|
149
|
-
if (!account)
|
|
150
|
-
throw new Error("Failed to get account");
|
|
151
|
-
return getAddress2(account);
|
|
152
|
-
}
|
|
153
|
-
async getChainId() {
|
|
154
|
-
const provider = await this.getProvider();
|
|
155
|
-
return normalizeChainId(provider.chainId);
|
|
156
|
-
}
|
|
157
|
-
async getProvider({ chainId } = {}) {
|
|
158
|
-
if (!__privateGet(this, _provider) || chainId)
|
|
159
|
-
__privateSet(this, _provider, new MockProvider({
|
|
160
|
-
...this.options,
|
|
161
|
-
chainId: chainId ?? this.options.chainId ?? this.chains[0].id
|
|
162
|
-
}));
|
|
163
|
-
return __privateGet(this, _provider);
|
|
164
|
-
}
|
|
165
|
-
async getWalletClient() {
|
|
166
|
-
const provider = await this.getProvider();
|
|
167
|
-
return provider.getWalletClient();
|
|
168
|
-
}
|
|
169
|
-
async isAuthorized() {
|
|
170
|
-
try {
|
|
171
|
-
const provider = await this.getProvider();
|
|
172
|
-
const account = await provider.getAccounts();
|
|
173
|
-
return this.options.flags?.isAuthorized ?? !!account;
|
|
174
|
-
} catch {
|
|
175
|
-
return false;
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
async watchAsset(asset) {
|
|
179
|
-
const provider = await this.getProvider();
|
|
180
|
-
return provider.watchAsset(asset);
|
|
181
|
-
}
|
|
182
|
-
toJSON() {
|
|
183
|
-
return "<MockConnector>";
|
|
184
|
-
}
|
|
185
|
-
};
|
|
186
|
-
_provider = new WeakMap();
|
|
187
|
-
_switchChain = new WeakSet();
|
|
188
|
-
switchChain_fn = async function(chainId) {
|
|
189
|
-
const provider = await this.getProvider();
|
|
190
|
-
await provider.switchChain(chainId);
|
|
191
|
-
return this.chains.find((x) => x.id === chainId) ?? {
|
|
192
|
-
id: chainId,
|
|
193
|
-
name: `Chain ${chainId}`,
|
|
194
|
-
network: `${chainId}`,
|
|
195
|
-
nativeCurrency: { name: "Ether", decimals: 18, symbol: "ETH" },
|
|
196
|
-
rpcUrls: { default: { http: [""] }, public: { http: [""] } }
|
|
197
|
-
};
|
|
198
|
-
};
|
|
199
|
-
export {
|
|
200
|
-
MockConnector,
|
|
201
|
-
MockProvider
|
|
202
|
-
};
|
package/dist/safe.js
DELETED
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ConnectorNotFoundError
|
|
3
|
-
} from "./chunk-ZCAPXGBX.js";
|
|
4
|
-
import {
|
|
5
|
-
normalizeChainId
|
|
6
|
-
} from "./chunk-OQILYQDO.js";
|
|
7
|
-
import {
|
|
8
|
-
Connector,
|
|
9
|
-
__privateAdd,
|
|
10
|
-
__privateGet,
|
|
11
|
-
__privateSet,
|
|
12
|
-
__publicField
|
|
13
|
-
} from "./chunk-QYMCVNHT.js";
|
|
14
|
-
|
|
15
|
-
// src/safe.ts
|
|
16
|
-
import { SafeAppProvider } from "@safe-global/safe-apps-provider";
|
|
17
|
-
import { default as SafeAppsSDK } from "@safe-global/safe-apps-sdk";
|
|
18
|
-
import { createWalletClient, custom, getAddress } from "viem";
|
|
19
|
-
var _provider, _sdk;
|
|
20
|
-
var SafeConnector = class extends Connector {
|
|
21
|
-
constructor({
|
|
22
|
-
chains,
|
|
23
|
-
options: options_
|
|
24
|
-
}) {
|
|
25
|
-
const options = {
|
|
26
|
-
shimDisconnect: false,
|
|
27
|
-
...options_
|
|
28
|
-
};
|
|
29
|
-
super({ chains, options });
|
|
30
|
-
__publicField(this, "id", "safe");
|
|
31
|
-
__publicField(this, "name", "Safe");
|
|
32
|
-
__publicField(this, "ready", !(typeof window === "undefined") && window?.parent !== window);
|
|
33
|
-
__privateAdd(this, _provider, void 0);
|
|
34
|
-
__privateAdd(this, _sdk, void 0);
|
|
35
|
-
__publicField(this, "shimDisconnectKey", `${this.id}.shimDisconnect`);
|
|
36
|
-
let SDK = SafeAppsSDK;
|
|
37
|
-
if (typeof SafeAppsSDK !== "function" && typeof SafeAppsSDK.default === "function")
|
|
38
|
-
SDK = SafeAppsSDK.default;
|
|
39
|
-
__privateSet(this, _sdk, new SDK(options));
|
|
40
|
-
}
|
|
41
|
-
async connect() {
|
|
42
|
-
const provider = await this.getProvider();
|
|
43
|
-
if (!provider)
|
|
44
|
-
throw new ConnectorNotFoundError();
|
|
45
|
-
if (provider.on) {
|
|
46
|
-
provider.on("accountsChanged", this.onAccountsChanged);
|
|
47
|
-
provider.on("chainChanged", this.onChainChanged);
|
|
48
|
-
provider.on("disconnect", this.onDisconnect);
|
|
49
|
-
}
|
|
50
|
-
this.emit("message", { type: "connecting" });
|
|
51
|
-
const account = await this.getAccount();
|
|
52
|
-
const id = await this.getChainId();
|
|
53
|
-
if (this.options.shimDisconnect)
|
|
54
|
-
this.storage?.setItem(this.shimDisconnectKey, true);
|
|
55
|
-
return {
|
|
56
|
-
account,
|
|
57
|
-
chain: { id, unsupported: this.isChainUnsupported(id) }
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
async disconnect() {
|
|
61
|
-
const provider = await this.getProvider();
|
|
62
|
-
if (!provider?.removeListener)
|
|
63
|
-
return;
|
|
64
|
-
provider.removeListener("accountsChanged", this.onAccountsChanged);
|
|
65
|
-
provider.removeListener("chainChanged", this.onChainChanged);
|
|
66
|
-
provider.removeListener("disconnect", this.onDisconnect);
|
|
67
|
-
if (this.options.shimDisconnect)
|
|
68
|
-
this.storage?.removeItem(this.shimDisconnectKey);
|
|
69
|
-
}
|
|
70
|
-
async getAccount() {
|
|
71
|
-
const provider = await this.getProvider();
|
|
72
|
-
if (!provider)
|
|
73
|
-
throw new ConnectorNotFoundError();
|
|
74
|
-
const accounts = await provider.request({
|
|
75
|
-
method: "eth_accounts"
|
|
76
|
-
});
|
|
77
|
-
return getAddress(accounts[0]);
|
|
78
|
-
}
|
|
79
|
-
async getChainId() {
|
|
80
|
-
const provider = await this.getProvider();
|
|
81
|
-
if (!provider)
|
|
82
|
-
throw new ConnectorNotFoundError();
|
|
83
|
-
return normalizeChainId(provider.chainId);
|
|
84
|
-
}
|
|
85
|
-
async getProvider() {
|
|
86
|
-
if (!__privateGet(this, _provider)) {
|
|
87
|
-
const safe = await __privateGet(this, _sdk).safe.getInfo();
|
|
88
|
-
if (!safe)
|
|
89
|
-
throw new Error("Could not load Safe information");
|
|
90
|
-
__privateSet(this, _provider, new SafeAppProvider(safe, __privateGet(this, _sdk)));
|
|
91
|
-
}
|
|
92
|
-
return __privateGet(this, _provider);
|
|
93
|
-
}
|
|
94
|
-
async getWalletClient({ chainId } = {}) {
|
|
95
|
-
const provider = await this.getProvider();
|
|
96
|
-
const account = await this.getAccount();
|
|
97
|
-
const chain = this.chains.find((x) => x.id === chainId) || this.chains[0];
|
|
98
|
-
if (!provider)
|
|
99
|
-
throw new Error("provider is required.");
|
|
100
|
-
return createWalletClient({
|
|
101
|
-
account,
|
|
102
|
-
chain,
|
|
103
|
-
transport: custom(provider)
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
async isAuthorized() {
|
|
107
|
-
try {
|
|
108
|
-
if (this.options.shimDisconnect && !this.storage?.getItem(this.shimDisconnectKey))
|
|
109
|
-
return false;
|
|
110
|
-
const account = await this.getAccount();
|
|
111
|
-
return !!account;
|
|
112
|
-
} catch {
|
|
113
|
-
return false;
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
onAccountsChanged(_accounts) {
|
|
117
|
-
}
|
|
118
|
-
onChainChanged(_chainId) {
|
|
119
|
-
}
|
|
120
|
-
onDisconnect() {
|
|
121
|
-
this.emit("disconnect");
|
|
122
|
-
}
|
|
123
|
-
};
|
|
124
|
-
_provider = new WeakMap();
|
|
125
|
-
_sdk = new WeakMap();
|
|
126
|
-
export {
|
|
127
|
-
SafeConnector
|
|
128
|
-
};
|
package/dist/walletConnect.js
DELETED
|
@@ -1,311 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
Connector,
|
|
3
|
-
__privateAdd,
|
|
4
|
-
__privateGet,
|
|
5
|
-
__privateMethod,
|
|
6
|
-
__privateSet,
|
|
7
|
-
__publicField
|
|
8
|
-
} from "./chunk-QYMCVNHT.js";
|
|
9
|
-
|
|
10
|
-
// src/walletConnect.ts
|
|
11
|
-
import {
|
|
12
|
-
SwitchChainError,
|
|
13
|
-
UserRejectedRequestError,
|
|
14
|
-
createWalletClient,
|
|
15
|
-
custom,
|
|
16
|
-
getAddress,
|
|
17
|
-
numberToHex
|
|
18
|
-
} from "viem";
|
|
19
|
-
var NAMESPACE = "eip155";
|
|
20
|
-
var STORE_KEY = "store";
|
|
21
|
-
var REQUESTED_CHAINS_KEY = "requestedChains";
|
|
22
|
-
var ADD_ETH_CHAIN_METHOD = "wallet_addEthereumChain";
|
|
23
|
-
var _provider, _initProviderPromise, _createProvider, createProvider_fn, _initProvider, initProvider_fn, _isChainsStale, isChainsStale_fn, _setupListeners, setupListeners_fn, _removeListeners, removeListeners_fn, _setRequestedChainsIds, setRequestedChainsIds_fn, _getRequestedChainsIds, getRequestedChainsIds_fn, _getNamespaceChainsIds, getNamespaceChainsIds_fn, _getNamespaceMethods, getNamespaceMethods_fn;
|
|
24
|
-
var WalletConnectConnector = class extends Connector {
|
|
25
|
-
constructor(config) {
|
|
26
|
-
super({
|
|
27
|
-
...config,
|
|
28
|
-
options: { isNewChainsStale: true, ...config.options }
|
|
29
|
-
});
|
|
30
|
-
__privateAdd(this, _createProvider);
|
|
31
|
-
__privateAdd(this, _initProvider);
|
|
32
|
-
__privateAdd(this, _isChainsStale);
|
|
33
|
-
__privateAdd(this, _setupListeners);
|
|
34
|
-
__privateAdd(this, _removeListeners);
|
|
35
|
-
__privateAdd(this, _setRequestedChainsIds);
|
|
36
|
-
__privateAdd(this, _getRequestedChainsIds);
|
|
37
|
-
__privateAdd(this, _getNamespaceChainsIds);
|
|
38
|
-
__privateAdd(this, _getNamespaceMethods);
|
|
39
|
-
__publicField(this, "id", "walletConnect");
|
|
40
|
-
__publicField(this, "name", "WalletConnect");
|
|
41
|
-
__publicField(this, "ready", true);
|
|
42
|
-
__privateAdd(this, _provider, void 0);
|
|
43
|
-
__privateAdd(this, _initProviderPromise, void 0);
|
|
44
|
-
__publicField(this, "onAccountsChanged", (accounts) => {
|
|
45
|
-
if (accounts.length === 0)
|
|
46
|
-
this.emit("disconnect");
|
|
47
|
-
else
|
|
48
|
-
this.emit("change", { account: getAddress(accounts[0]) });
|
|
49
|
-
});
|
|
50
|
-
__publicField(this, "onChainChanged", (chainId) => {
|
|
51
|
-
const id = Number(chainId);
|
|
52
|
-
const unsupported = this.isChainUnsupported(id);
|
|
53
|
-
this.emit("change", { chain: { id, unsupported } });
|
|
54
|
-
});
|
|
55
|
-
__publicField(this, "onDisconnect", () => {
|
|
56
|
-
__privateMethod(this, _setRequestedChainsIds, setRequestedChainsIds_fn).call(this, []);
|
|
57
|
-
this.emit("disconnect");
|
|
58
|
-
});
|
|
59
|
-
__publicField(this, "onDisplayUri", (uri) => {
|
|
60
|
-
this.emit("message", { type: "display_uri", data: uri });
|
|
61
|
-
});
|
|
62
|
-
__publicField(this, "onConnect", () => {
|
|
63
|
-
this.emit("connect", {});
|
|
64
|
-
});
|
|
65
|
-
__privateMethod(this, _createProvider, createProvider_fn).call(this);
|
|
66
|
-
}
|
|
67
|
-
async connect({ chainId, pairingTopic } = {}) {
|
|
68
|
-
try {
|
|
69
|
-
let targetChainId = chainId;
|
|
70
|
-
if (!targetChainId) {
|
|
71
|
-
const store = this.storage?.getItem(STORE_KEY);
|
|
72
|
-
const lastUsedChainId = store?.state?.data?.chain?.id;
|
|
73
|
-
if (lastUsedChainId && !this.isChainUnsupported(lastUsedChainId))
|
|
74
|
-
targetChainId = lastUsedChainId;
|
|
75
|
-
else
|
|
76
|
-
targetChainId = this.chains[0]?.id;
|
|
77
|
-
}
|
|
78
|
-
if (!targetChainId)
|
|
79
|
-
throw new Error("No chains found on connector.");
|
|
80
|
-
const provider = await this.getProvider();
|
|
81
|
-
__privateMethod(this, _setupListeners, setupListeners_fn).call(this);
|
|
82
|
-
const isChainsStale = __privateMethod(this, _isChainsStale, isChainsStale_fn).call(this);
|
|
83
|
-
if (provider.session && isChainsStale)
|
|
84
|
-
await provider.disconnect();
|
|
85
|
-
if (!provider.session || isChainsStale) {
|
|
86
|
-
const optionalChains = this.chains.filter((chain) => chain.id !== targetChainId).map((optionalChain) => optionalChain.id);
|
|
87
|
-
this.emit("message", { type: "connecting" });
|
|
88
|
-
await provider.connect({
|
|
89
|
-
pairingTopic,
|
|
90
|
-
chains: [targetChainId],
|
|
91
|
-
optionalChains
|
|
92
|
-
});
|
|
93
|
-
__privateMethod(this, _setRequestedChainsIds, setRequestedChainsIds_fn).call(this, this.chains.map(({ id: id2 }) => id2));
|
|
94
|
-
}
|
|
95
|
-
const accounts = await provider.enable();
|
|
96
|
-
const account = getAddress(accounts[0]);
|
|
97
|
-
const id = await this.getChainId();
|
|
98
|
-
const unsupported = this.isChainUnsupported(id);
|
|
99
|
-
return {
|
|
100
|
-
account,
|
|
101
|
-
chain: { id, unsupported }
|
|
102
|
-
};
|
|
103
|
-
} catch (error) {
|
|
104
|
-
if (/user rejected/i.test(error?.message)) {
|
|
105
|
-
throw new UserRejectedRequestError(error);
|
|
106
|
-
}
|
|
107
|
-
throw error;
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
async disconnect() {
|
|
111
|
-
const provider = await this.getProvider();
|
|
112
|
-
try {
|
|
113
|
-
await provider.disconnect();
|
|
114
|
-
} catch (error) {
|
|
115
|
-
if (!/No matching key/i.test(error.message))
|
|
116
|
-
throw error;
|
|
117
|
-
} finally {
|
|
118
|
-
__privateMethod(this, _removeListeners, removeListeners_fn).call(this);
|
|
119
|
-
__privateMethod(this, _setRequestedChainsIds, setRequestedChainsIds_fn).call(this, []);
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
async getAccount() {
|
|
123
|
-
const { accounts } = await this.getProvider();
|
|
124
|
-
return getAddress(accounts[0]);
|
|
125
|
-
}
|
|
126
|
-
async getChainId() {
|
|
127
|
-
const { chainId } = await this.getProvider();
|
|
128
|
-
return chainId;
|
|
129
|
-
}
|
|
130
|
-
async getProvider({ chainId } = {}) {
|
|
131
|
-
if (!__privateGet(this, _provider))
|
|
132
|
-
await __privateMethod(this, _createProvider, createProvider_fn).call(this);
|
|
133
|
-
if (chainId)
|
|
134
|
-
await this.switchChain(chainId);
|
|
135
|
-
return __privateGet(this, _provider);
|
|
136
|
-
}
|
|
137
|
-
async getWalletClient({ chainId } = {}) {
|
|
138
|
-
const [provider, account] = await Promise.all([
|
|
139
|
-
this.getProvider({ chainId }),
|
|
140
|
-
this.getAccount()
|
|
141
|
-
]);
|
|
142
|
-
const chain = this.chains.find((x) => x.id === chainId) || this.chains[0];
|
|
143
|
-
if (!provider)
|
|
144
|
-
throw new Error("provider is required.");
|
|
145
|
-
return createWalletClient({
|
|
146
|
-
account,
|
|
147
|
-
chain,
|
|
148
|
-
transport: custom(provider)
|
|
149
|
-
});
|
|
150
|
-
}
|
|
151
|
-
async isAuthorized() {
|
|
152
|
-
try {
|
|
153
|
-
const [account, provider] = await Promise.all([
|
|
154
|
-
this.getAccount(),
|
|
155
|
-
this.getProvider()
|
|
156
|
-
]);
|
|
157
|
-
const isChainsStale = __privateMethod(this, _isChainsStale, isChainsStale_fn).call(this);
|
|
158
|
-
if (!account)
|
|
159
|
-
return false;
|
|
160
|
-
if (isChainsStale && provider.session) {
|
|
161
|
-
try {
|
|
162
|
-
await provider.disconnect();
|
|
163
|
-
} catch {
|
|
164
|
-
}
|
|
165
|
-
return false;
|
|
166
|
-
}
|
|
167
|
-
return true;
|
|
168
|
-
} catch {
|
|
169
|
-
return false;
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
async switchChain(chainId) {
|
|
173
|
-
const chain = this.chains.find((chain2) => chain2.id === chainId);
|
|
174
|
-
if (!chain)
|
|
175
|
-
throw new SwitchChainError(new Error("chain not found on connector."));
|
|
176
|
-
try {
|
|
177
|
-
const provider = await this.getProvider();
|
|
178
|
-
const namespaceChains = __privateMethod(this, _getNamespaceChainsIds, getNamespaceChainsIds_fn).call(this);
|
|
179
|
-
const namespaceMethods = __privateMethod(this, _getNamespaceMethods, getNamespaceMethods_fn).call(this);
|
|
180
|
-
const isChainApproved = namespaceChains.includes(chainId);
|
|
181
|
-
if (!isChainApproved && namespaceMethods.includes(ADD_ETH_CHAIN_METHOD)) {
|
|
182
|
-
await provider.request({
|
|
183
|
-
method: ADD_ETH_CHAIN_METHOD,
|
|
184
|
-
params: [
|
|
185
|
-
{
|
|
186
|
-
chainId: numberToHex(chain.id),
|
|
187
|
-
blockExplorerUrls: [chain.blockExplorers?.default],
|
|
188
|
-
chainName: chain.name,
|
|
189
|
-
nativeCurrency: chain.nativeCurrency,
|
|
190
|
-
rpcUrls: [...chain.rpcUrls.default.http]
|
|
191
|
-
}
|
|
192
|
-
]
|
|
193
|
-
});
|
|
194
|
-
const requestedChains = __privateMethod(this, _getRequestedChainsIds, getRequestedChainsIds_fn).call(this);
|
|
195
|
-
requestedChains.push(chainId);
|
|
196
|
-
__privateMethod(this, _setRequestedChainsIds, setRequestedChainsIds_fn).call(this, requestedChains);
|
|
197
|
-
}
|
|
198
|
-
await provider.request({
|
|
199
|
-
method: "wallet_switchEthereumChain",
|
|
200
|
-
params: [{ chainId: numberToHex(chainId) }]
|
|
201
|
-
});
|
|
202
|
-
return chain;
|
|
203
|
-
} catch (error) {
|
|
204
|
-
const message = typeof error === "string" ? error : error?.message;
|
|
205
|
-
if (/user rejected request/i.test(message)) {
|
|
206
|
-
throw new UserRejectedRequestError(error);
|
|
207
|
-
}
|
|
208
|
-
throw new SwitchChainError(error);
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
};
|
|
212
|
-
_provider = new WeakMap();
|
|
213
|
-
_initProviderPromise = new WeakMap();
|
|
214
|
-
_createProvider = new WeakSet();
|
|
215
|
-
createProvider_fn = async function() {
|
|
216
|
-
if (!__privateGet(this, _initProviderPromise) && typeof window !== "undefined") {
|
|
217
|
-
__privateSet(this, _initProviderPromise, __privateMethod(this, _initProvider, initProvider_fn).call(this));
|
|
218
|
-
}
|
|
219
|
-
return __privateGet(this, _initProviderPromise);
|
|
220
|
-
};
|
|
221
|
-
_initProvider = new WeakSet();
|
|
222
|
-
initProvider_fn = async function() {
|
|
223
|
-
const {
|
|
224
|
-
default: EthereumProvider,
|
|
225
|
-
OPTIONAL_EVENTS,
|
|
226
|
-
OPTIONAL_METHODS
|
|
227
|
-
} = await import("@walletconnect/ethereum-provider");
|
|
228
|
-
const [defaultChain, ...optionalChains] = this.chains.map(({ id }) => id);
|
|
229
|
-
if (defaultChain) {
|
|
230
|
-
const { projectId, showQrModal = true, qrModalOptions } = this.options;
|
|
231
|
-
__privateSet(this, _provider, await EthereumProvider.init({
|
|
232
|
-
showQrModal,
|
|
233
|
-
qrModalOptions,
|
|
234
|
-
projectId,
|
|
235
|
-
optionalMethods: OPTIONAL_METHODS,
|
|
236
|
-
optionalEvents: OPTIONAL_EVENTS,
|
|
237
|
-
chains: [defaultChain],
|
|
238
|
-
optionalChains,
|
|
239
|
-
rpcMap: Object.fromEntries(
|
|
240
|
-
this.chains.map((chain) => [
|
|
241
|
-
chain.id,
|
|
242
|
-
chain.rpcUrls.default.http[0]
|
|
243
|
-
])
|
|
244
|
-
)
|
|
245
|
-
}));
|
|
246
|
-
}
|
|
247
|
-
};
|
|
248
|
-
_isChainsStale = new WeakSet();
|
|
249
|
-
isChainsStale_fn = function() {
|
|
250
|
-
const namespaceMethods = __privateMethod(this, _getNamespaceMethods, getNamespaceMethods_fn).call(this);
|
|
251
|
-
if (namespaceMethods.includes(ADD_ETH_CHAIN_METHOD))
|
|
252
|
-
return false;
|
|
253
|
-
if (!this.options.isNewChainsStale)
|
|
254
|
-
return false;
|
|
255
|
-
const requestedChains = __privateMethod(this, _getRequestedChainsIds, getRequestedChainsIds_fn).call(this);
|
|
256
|
-
const connectorChains = this.chains.map(({ id }) => id);
|
|
257
|
-
const namespaceChains = __privateMethod(this, _getNamespaceChainsIds, getNamespaceChainsIds_fn).call(this);
|
|
258
|
-
if (namespaceChains.length && !namespaceChains.some((id) => connectorChains.includes(id)))
|
|
259
|
-
return false;
|
|
260
|
-
return !connectorChains.every((id) => requestedChains.includes(id));
|
|
261
|
-
};
|
|
262
|
-
_setupListeners = new WeakSet();
|
|
263
|
-
setupListeners_fn = function() {
|
|
264
|
-
if (!__privateGet(this, _provider))
|
|
265
|
-
return;
|
|
266
|
-
__privateMethod(this, _removeListeners, removeListeners_fn).call(this);
|
|
267
|
-
__privateGet(this, _provider).on("accountsChanged", this.onAccountsChanged);
|
|
268
|
-
__privateGet(this, _provider).on("chainChanged", this.onChainChanged);
|
|
269
|
-
__privateGet(this, _provider).on("disconnect", this.onDisconnect);
|
|
270
|
-
__privateGet(this, _provider).on("session_delete", this.onDisconnect);
|
|
271
|
-
__privateGet(this, _provider).on("display_uri", this.onDisplayUri);
|
|
272
|
-
__privateGet(this, _provider).on("connect", this.onConnect);
|
|
273
|
-
};
|
|
274
|
-
_removeListeners = new WeakSet();
|
|
275
|
-
removeListeners_fn = function() {
|
|
276
|
-
if (!__privateGet(this, _provider))
|
|
277
|
-
return;
|
|
278
|
-
__privateGet(this, _provider).removeListener("accountsChanged", this.onAccountsChanged);
|
|
279
|
-
__privateGet(this, _provider).removeListener("chainChanged", this.onChainChanged);
|
|
280
|
-
__privateGet(this, _provider).removeListener("disconnect", this.onDisconnect);
|
|
281
|
-
__privateGet(this, _provider).removeListener("session_delete", this.onDisconnect);
|
|
282
|
-
__privateGet(this, _provider).removeListener("display_uri", this.onDisplayUri);
|
|
283
|
-
__privateGet(this, _provider).removeListener("connect", this.onConnect);
|
|
284
|
-
};
|
|
285
|
-
_setRequestedChainsIds = new WeakSet();
|
|
286
|
-
setRequestedChainsIds_fn = function(chains) {
|
|
287
|
-
this.storage?.setItem(REQUESTED_CHAINS_KEY, chains);
|
|
288
|
-
};
|
|
289
|
-
_getRequestedChainsIds = new WeakSet();
|
|
290
|
-
getRequestedChainsIds_fn = function() {
|
|
291
|
-
return this.storage?.getItem(REQUESTED_CHAINS_KEY) ?? [];
|
|
292
|
-
};
|
|
293
|
-
_getNamespaceChainsIds = new WeakSet();
|
|
294
|
-
getNamespaceChainsIds_fn = function() {
|
|
295
|
-
if (!__privateGet(this, _provider))
|
|
296
|
-
return [];
|
|
297
|
-
const chainIds = __privateGet(this, _provider).session?.namespaces[NAMESPACE]?.chains?.map(
|
|
298
|
-
(chain) => parseInt(chain.split(":")[1] || "")
|
|
299
|
-
);
|
|
300
|
-
return chainIds ?? [];
|
|
301
|
-
};
|
|
302
|
-
_getNamespaceMethods = new WeakSet();
|
|
303
|
-
getNamespaceMethods_fn = function() {
|
|
304
|
-
if (!__privateGet(this, _provider))
|
|
305
|
-
return [];
|
|
306
|
-
const methods = __privateGet(this, _provider).session?.namespaces[NAMESPACE]?.methods;
|
|
307
|
-
return methods ?? [];
|
|
308
|
-
};
|
|
309
|
-
export {
|
|
310
|
-
WalletConnectConnector
|
|
311
|
-
};
|