@wagmi/connectors 0.3.22 → 0.3.23
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 -64
- package/dist/index.d.ts +1 -6
- package/dist/injected.d.ts +1 -68
- package/dist/ledger.d.ts +1 -43
- package/dist/metaMask.d.ts +1 -36
- package/dist/mock/index.d.ts +1 -82
- package/dist/safe.d.ts +1 -53
- package/dist/walletConnect.d.ts +1 -107
- package/dist/walletConnectLegacy.d.ts +1 -45
- package/package.json +10 -10
- package/LICENSE +0 -21
- package/dist/base-84a689bb.d.ts +0 -65
- package/dist/chunk-2VZS2JHJ.js +0 -356
- package/dist/chunk-5NCTPR6C.js +0 -64
- package/dist/coinbaseWallet.js +0 -216
- package/dist/index.js +0 -6
- package/dist/injected.js +0 -7
- package/dist/ledger.js +0 -187
- package/dist/metaMask.js +0 -137
- package/dist/mock/index.js +0 -206
- package/dist/safe.js +0 -122
- package/dist/types-82d07ee0.d.ts +0 -162
- package/dist/walletConnect.js +0 -303
- package/dist/walletConnectLegacy.js +0 -173
package/dist/chunk-2VZS2JHJ.js
DELETED
|
@@ -1,356 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
Connector,
|
|
3
|
-
__privateAdd,
|
|
4
|
-
__privateGet,
|
|
5
|
-
__privateSet,
|
|
6
|
-
__publicField
|
|
7
|
-
} from "./chunk-5NCTPR6C.js";
|
|
8
|
-
|
|
9
|
-
// src/injected.ts
|
|
10
|
-
import {
|
|
11
|
-
AddChainError,
|
|
12
|
-
ChainNotConfiguredError,
|
|
13
|
-
ConnectorNotFoundError,
|
|
14
|
-
ProviderRpcError,
|
|
15
|
-
ResourceUnavailableError,
|
|
16
|
-
SwitchChainError,
|
|
17
|
-
UserRejectedRequestError,
|
|
18
|
-
getClient,
|
|
19
|
-
normalizeChainId
|
|
20
|
-
} from "@wagmi/core";
|
|
21
|
-
import { providers } from "ethers";
|
|
22
|
-
import { getAddress, hexValue } from "ethers/lib/utils.js";
|
|
23
|
-
|
|
24
|
-
// src/utils/getInjectedName.ts
|
|
25
|
-
function getInjectedName(ethereum) {
|
|
26
|
-
if (!ethereum)
|
|
27
|
-
return "Injected";
|
|
28
|
-
const getName = (provider) => {
|
|
29
|
-
if (provider.isApexWallet)
|
|
30
|
-
return "Apex Wallet";
|
|
31
|
-
if (provider.isAvalanche)
|
|
32
|
-
return "Core Wallet";
|
|
33
|
-
if (provider.isBackpack)
|
|
34
|
-
return "Backpack";
|
|
35
|
-
if (provider.isBifrost)
|
|
36
|
-
return "Bifrost Wallet";
|
|
37
|
-
if (provider.isBitKeep)
|
|
38
|
-
return "BitKeep";
|
|
39
|
-
if (provider.isBitski)
|
|
40
|
-
return "Bitski";
|
|
41
|
-
if (provider.isBlockWallet)
|
|
42
|
-
return "BlockWallet";
|
|
43
|
-
if (provider.isBraveWallet)
|
|
44
|
-
return "Brave Wallet";
|
|
45
|
-
if (provider.isCoinbaseWallet)
|
|
46
|
-
return "Coinbase Wallet";
|
|
47
|
-
if (provider.isDawn)
|
|
48
|
-
return "Dawn Wallet";
|
|
49
|
-
if (provider.isEnkrypt)
|
|
50
|
-
return "Enkrypt";
|
|
51
|
-
if (provider.isExodus)
|
|
52
|
-
return "Exodus";
|
|
53
|
-
if (provider.isFrame)
|
|
54
|
-
return "Frame";
|
|
55
|
-
if (provider.isFrontier)
|
|
56
|
-
return "Frontier Wallet";
|
|
57
|
-
if (provider.isGamestop)
|
|
58
|
-
return "GameStop Wallet";
|
|
59
|
-
if (provider.isHyperPay)
|
|
60
|
-
return "HyperPay Wallet";
|
|
61
|
-
if (provider.isImToken)
|
|
62
|
-
return "ImToken";
|
|
63
|
-
if (provider.isKuCoinWallet)
|
|
64
|
-
return "KuCoin Wallet";
|
|
65
|
-
if (provider.isMathWallet)
|
|
66
|
-
return "MathWallet";
|
|
67
|
-
if (provider.isOkxWallet || provider.isOKExWallet)
|
|
68
|
-
return "OKX Wallet";
|
|
69
|
-
if (provider.isOneInchIOSWallet || provider.isOneInchAndroidWallet)
|
|
70
|
-
return "1inch Wallet";
|
|
71
|
-
if (provider.isOpera)
|
|
72
|
-
return "Opera";
|
|
73
|
-
if (provider.isPhantom)
|
|
74
|
-
return "Phantom";
|
|
75
|
-
if (provider.isPortal)
|
|
76
|
-
return "Ripio Portal";
|
|
77
|
-
if (provider.isRabby)
|
|
78
|
-
return "Rabby";
|
|
79
|
-
if (provider.isRainbow)
|
|
80
|
-
return "Rainbow";
|
|
81
|
-
if (provider.isStatus)
|
|
82
|
-
return "Status";
|
|
83
|
-
if (provider.isTally)
|
|
84
|
-
return "Taho";
|
|
85
|
-
if (provider.isTokenPocket)
|
|
86
|
-
return "TokenPocket";
|
|
87
|
-
if (provider.isTokenary)
|
|
88
|
-
return "Tokenary";
|
|
89
|
-
if (provider.isTrust || provider.isTrustWallet)
|
|
90
|
-
return "Trust Wallet";
|
|
91
|
-
if (provider.isXDEFI)
|
|
92
|
-
return "XDEFI Wallet";
|
|
93
|
-
if (provider.isZerion)
|
|
94
|
-
return "Zerion";
|
|
95
|
-
if (provider.isMetaMask)
|
|
96
|
-
return "MetaMask";
|
|
97
|
-
};
|
|
98
|
-
if (ethereum.providers?.length) {
|
|
99
|
-
const nameSet = /* @__PURE__ */ new Set();
|
|
100
|
-
let unknownCount = 1;
|
|
101
|
-
for (const provider of ethereum.providers) {
|
|
102
|
-
let name = getName(provider);
|
|
103
|
-
if (!name) {
|
|
104
|
-
name = `Unknown Wallet #${unknownCount}`;
|
|
105
|
-
unknownCount += 1;
|
|
106
|
-
}
|
|
107
|
-
nameSet.add(name);
|
|
108
|
-
}
|
|
109
|
-
const names = [...nameSet];
|
|
110
|
-
if (names.length)
|
|
111
|
-
return names;
|
|
112
|
-
return names[0] ?? "Injected";
|
|
113
|
-
}
|
|
114
|
-
return getName(ethereum) ?? "Injected";
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
// src/injected.ts
|
|
118
|
-
var _provider;
|
|
119
|
-
var InjectedConnector = class extends Connector {
|
|
120
|
-
constructor({
|
|
121
|
-
chains,
|
|
122
|
-
options: options_
|
|
123
|
-
} = {}) {
|
|
124
|
-
const options = {
|
|
125
|
-
shimDisconnect: true,
|
|
126
|
-
getProvider: () => typeof window !== "undefined" ? window.ethereum : void 0,
|
|
127
|
-
...options_
|
|
128
|
-
};
|
|
129
|
-
super({ chains, options });
|
|
130
|
-
__publicField(this, "id", "injected");
|
|
131
|
-
__publicField(this, "name");
|
|
132
|
-
__publicField(this, "ready");
|
|
133
|
-
__privateAdd(this, _provider, void 0);
|
|
134
|
-
__publicField(this, "shimDisconnectKey", `${this.id}.shimDisconnect`);
|
|
135
|
-
__publicField(this, "onAccountsChanged", (accounts) => {
|
|
136
|
-
if (accounts.length === 0)
|
|
137
|
-
this.emit("disconnect");
|
|
138
|
-
else
|
|
139
|
-
this.emit("change", {
|
|
140
|
-
account: getAddress(accounts[0])
|
|
141
|
-
});
|
|
142
|
-
});
|
|
143
|
-
__publicField(this, "onChainChanged", (chainId) => {
|
|
144
|
-
const id = normalizeChainId(chainId);
|
|
145
|
-
const unsupported = this.isChainUnsupported(id);
|
|
146
|
-
this.emit("change", { chain: { id, unsupported } });
|
|
147
|
-
});
|
|
148
|
-
__publicField(this, "onDisconnect", async (error) => {
|
|
149
|
-
if (error.code === 1013) {
|
|
150
|
-
const provider = await this.getProvider();
|
|
151
|
-
if (provider) {
|
|
152
|
-
const isAuthorized = await this.getAccount();
|
|
153
|
-
if (isAuthorized)
|
|
154
|
-
return;
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
this.emit("disconnect");
|
|
158
|
-
if (this.options.shimDisconnect)
|
|
159
|
-
getClient().storage?.removeItem(this.shimDisconnectKey);
|
|
160
|
-
});
|
|
161
|
-
const provider = options.getProvider();
|
|
162
|
-
if (typeof options.name === "string")
|
|
163
|
-
this.name = options.name;
|
|
164
|
-
else if (provider) {
|
|
165
|
-
const detectedName = getInjectedName(provider);
|
|
166
|
-
if (options.name)
|
|
167
|
-
this.name = options.name(detectedName);
|
|
168
|
-
else {
|
|
169
|
-
if (typeof detectedName === "string")
|
|
170
|
-
this.name = detectedName;
|
|
171
|
-
else
|
|
172
|
-
this.name = detectedName[0];
|
|
173
|
-
}
|
|
174
|
-
} else
|
|
175
|
-
this.name = "Injected";
|
|
176
|
-
this.ready = !!provider;
|
|
177
|
-
}
|
|
178
|
-
async connect({ chainId } = {}) {
|
|
179
|
-
try {
|
|
180
|
-
const provider = await this.getProvider();
|
|
181
|
-
if (!provider)
|
|
182
|
-
throw new ConnectorNotFoundError();
|
|
183
|
-
if (provider.on) {
|
|
184
|
-
provider.on("accountsChanged", this.onAccountsChanged);
|
|
185
|
-
provider.on("chainChanged", this.onChainChanged);
|
|
186
|
-
provider.on("disconnect", this.onDisconnect);
|
|
187
|
-
}
|
|
188
|
-
this.emit("message", { type: "connecting" });
|
|
189
|
-
const accounts = await provider.request({
|
|
190
|
-
method: "eth_requestAccounts"
|
|
191
|
-
});
|
|
192
|
-
const account = getAddress(accounts[0]);
|
|
193
|
-
let id = await this.getChainId();
|
|
194
|
-
let unsupported = this.isChainUnsupported(id);
|
|
195
|
-
if (chainId && id !== chainId) {
|
|
196
|
-
const chain = await this.switchChain(chainId);
|
|
197
|
-
id = chain.id;
|
|
198
|
-
unsupported = this.isChainUnsupported(id);
|
|
199
|
-
}
|
|
200
|
-
if (this.options.shimDisconnect)
|
|
201
|
-
getClient().storage?.setItem(this.shimDisconnectKey, true);
|
|
202
|
-
return { account, chain: { id, unsupported }, provider };
|
|
203
|
-
} catch (error) {
|
|
204
|
-
if (this.isUserRejectedRequestError(error))
|
|
205
|
-
throw new UserRejectedRequestError(error);
|
|
206
|
-
if (error.code === -32002)
|
|
207
|
-
throw new ResourceUnavailableError(error);
|
|
208
|
-
throw error;
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
async disconnect() {
|
|
212
|
-
const provider = await this.getProvider();
|
|
213
|
-
if (!provider?.removeListener)
|
|
214
|
-
return;
|
|
215
|
-
provider.removeListener("accountsChanged", this.onAccountsChanged);
|
|
216
|
-
provider.removeListener("chainChanged", this.onChainChanged);
|
|
217
|
-
provider.removeListener("disconnect", this.onDisconnect);
|
|
218
|
-
if (this.options.shimDisconnect)
|
|
219
|
-
getClient().storage?.removeItem(this.shimDisconnectKey);
|
|
220
|
-
}
|
|
221
|
-
async getAccount() {
|
|
222
|
-
const provider = await this.getProvider();
|
|
223
|
-
if (!provider)
|
|
224
|
-
throw new ConnectorNotFoundError();
|
|
225
|
-
const accounts = await provider.request({
|
|
226
|
-
method: "eth_accounts"
|
|
227
|
-
});
|
|
228
|
-
return getAddress(accounts[0]);
|
|
229
|
-
}
|
|
230
|
-
async getChainId() {
|
|
231
|
-
const provider = await this.getProvider();
|
|
232
|
-
if (!provider)
|
|
233
|
-
throw new ConnectorNotFoundError();
|
|
234
|
-
return provider.request({ method: "eth_chainId" }).then(normalizeChainId);
|
|
235
|
-
}
|
|
236
|
-
async getProvider() {
|
|
237
|
-
const provider = this.options.getProvider();
|
|
238
|
-
if (provider)
|
|
239
|
-
__privateSet(this, _provider, provider);
|
|
240
|
-
return __privateGet(this, _provider);
|
|
241
|
-
}
|
|
242
|
-
async getSigner({ chainId } = {}) {
|
|
243
|
-
const [provider, account] = await Promise.all([
|
|
244
|
-
this.getProvider(),
|
|
245
|
-
this.getAccount()
|
|
246
|
-
]);
|
|
247
|
-
return new providers.Web3Provider(
|
|
248
|
-
provider,
|
|
249
|
-
chainId
|
|
250
|
-
).getSigner(account);
|
|
251
|
-
}
|
|
252
|
-
async isAuthorized() {
|
|
253
|
-
try {
|
|
254
|
-
if (this.options.shimDisconnect && !getClient().storage?.getItem(this.shimDisconnectKey))
|
|
255
|
-
return false;
|
|
256
|
-
const provider = await this.getProvider();
|
|
257
|
-
if (!provider)
|
|
258
|
-
throw new ConnectorNotFoundError();
|
|
259
|
-
const account = await this.getAccount();
|
|
260
|
-
return !!account;
|
|
261
|
-
} catch {
|
|
262
|
-
return false;
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
async switchChain(chainId) {
|
|
266
|
-
const provider = await this.getProvider();
|
|
267
|
-
if (!provider)
|
|
268
|
-
throw new ConnectorNotFoundError();
|
|
269
|
-
const id = hexValue(chainId);
|
|
270
|
-
try {
|
|
271
|
-
await Promise.all([
|
|
272
|
-
provider.request({
|
|
273
|
-
method: "wallet_switchEthereumChain",
|
|
274
|
-
params: [{ chainId: id }]
|
|
275
|
-
}),
|
|
276
|
-
new Promise(
|
|
277
|
-
(res) => this.on("change", ({ chain }) => {
|
|
278
|
-
if (chain?.id === chainId)
|
|
279
|
-
res();
|
|
280
|
-
})
|
|
281
|
-
)
|
|
282
|
-
]);
|
|
283
|
-
return this.chains.find((x) => x.id === chainId) ?? {
|
|
284
|
-
id: chainId,
|
|
285
|
-
name: `Chain ${id}`,
|
|
286
|
-
network: `${id}`,
|
|
287
|
-
nativeCurrency: { name: "Ether", decimals: 18, symbol: "ETH" },
|
|
288
|
-
rpcUrls: { default: { http: [""] }, public: { http: [""] } }
|
|
289
|
-
};
|
|
290
|
-
} catch (error) {
|
|
291
|
-
const chain = this.chains.find((x) => x.id === chainId);
|
|
292
|
-
if (!chain)
|
|
293
|
-
throw new ChainNotConfiguredError({ chainId, connectorId: this.id });
|
|
294
|
-
if (error.code === 4902 || error?.data?.originalError?.code === 4902) {
|
|
295
|
-
try {
|
|
296
|
-
await provider.request({
|
|
297
|
-
method: "wallet_addEthereumChain",
|
|
298
|
-
params: [
|
|
299
|
-
{
|
|
300
|
-
chainId: id,
|
|
301
|
-
chainName: chain.name,
|
|
302
|
-
nativeCurrency: chain.nativeCurrency,
|
|
303
|
-
rpcUrls: [chain.rpcUrls.public?.http[0] ?? ""],
|
|
304
|
-
blockExplorerUrls: this.getBlockExplorerUrls(chain)
|
|
305
|
-
}
|
|
306
|
-
]
|
|
307
|
-
});
|
|
308
|
-
const currentChainId = await this.getChainId();
|
|
309
|
-
if (currentChainId !== chainId)
|
|
310
|
-
throw new ProviderRpcError(
|
|
311
|
-
"User rejected switch after adding network.",
|
|
312
|
-
{ code: 4001 }
|
|
313
|
-
);
|
|
314
|
-
return chain;
|
|
315
|
-
} catch (addError) {
|
|
316
|
-
if (this.isUserRejectedRequestError(addError))
|
|
317
|
-
throw new UserRejectedRequestError(addError);
|
|
318
|
-
throw new AddChainError();
|
|
319
|
-
}
|
|
320
|
-
}
|
|
321
|
-
if (this.isUserRejectedRequestError(error))
|
|
322
|
-
throw new UserRejectedRequestError(error);
|
|
323
|
-
throw new SwitchChainError(error);
|
|
324
|
-
}
|
|
325
|
-
}
|
|
326
|
-
async watchAsset({
|
|
327
|
-
address,
|
|
328
|
-
decimals = 18,
|
|
329
|
-
image,
|
|
330
|
-
symbol
|
|
331
|
-
}) {
|
|
332
|
-
const provider = await this.getProvider();
|
|
333
|
-
if (!provider)
|
|
334
|
-
throw new ConnectorNotFoundError();
|
|
335
|
-
return provider.request({
|
|
336
|
-
method: "wallet_watchAsset",
|
|
337
|
-
params: {
|
|
338
|
-
type: "ERC20",
|
|
339
|
-
options: {
|
|
340
|
-
address,
|
|
341
|
-
decimals,
|
|
342
|
-
image,
|
|
343
|
-
symbol
|
|
344
|
-
}
|
|
345
|
-
}
|
|
346
|
-
});
|
|
347
|
-
}
|
|
348
|
-
isUserRejectedRequestError(error) {
|
|
349
|
-
return error.code === 4001;
|
|
350
|
-
}
|
|
351
|
-
};
|
|
352
|
-
_provider = new WeakMap();
|
|
353
|
-
|
|
354
|
-
export {
|
|
355
|
-
InjectedConnector
|
|
356
|
-
};
|
package/dist/chunk-5NCTPR6C.js
DELETED
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3
|
-
var __publicField = (obj, key, value) => {
|
|
4
|
-
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
5
|
-
return value;
|
|
6
|
-
};
|
|
7
|
-
var __accessCheck = (obj, member, msg) => {
|
|
8
|
-
if (!member.has(obj))
|
|
9
|
-
throw TypeError("Cannot " + msg);
|
|
10
|
-
};
|
|
11
|
-
var __privateGet = (obj, member, getter) => {
|
|
12
|
-
__accessCheck(obj, member, "read from private field");
|
|
13
|
-
return getter ? getter.call(obj) : member.get(obj);
|
|
14
|
-
};
|
|
15
|
-
var __privateAdd = (obj, member, value) => {
|
|
16
|
-
if (member.has(obj))
|
|
17
|
-
throw TypeError("Cannot add the same private member more than once");
|
|
18
|
-
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
19
|
-
};
|
|
20
|
-
var __privateSet = (obj, member, value, setter) => {
|
|
21
|
-
__accessCheck(obj, member, "write to private field");
|
|
22
|
-
setter ? setter.call(obj, value) : member.set(obj, value);
|
|
23
|
-
return value;
|
|
24
|
-
};
|
|
25
|
-
var __privateMethod = (obj, member, method) => {
|
|
26
|
-
__accessCheck(obj, member, "access private method");
|
|
27
|
-
return method;
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
// src/base.ts
|
|
31
|
-
import { goerli, mainnet } from "@wagmi/core/chains";
|
|
32
|
-
import { default as EventEmitter } from "eventemitter3";
|
|
33
|
-
var Connector = class extends EventEmitter {
|
|
34
|
-
constructor({
|
|
35
|
-
chains = [mainnet, goerli],
|
|
36
|
-
options
|
|
37
|
-
}) {
|
|
38
|
-
super();
|
|
39
|
-
__publicField(this, "chains");
|
|
40
|
-
__publicField(this, "options");
|
|
41
|
-
this.chains = chains;
|
|
42
|
-
this.options = options;
|
|
43
|
-
}
|
|
44
|
-
getBlockExplorerUrls(chain) {
|
|
45
|
-
const { default: blockExplorer, ...blockExplorers } = chain.blockExplorers ?? {};
|
|
46
|
-
if (blockExplorer)
|
|
47
|
-
return [
|
|
48
|
-
blockExplorer.url,
|
|
49
|
-
...Object.values(blockExplorers).map((x) => x.url)
|
|
50
|
-
];
|
|
51
|
-
}
|
|
52
|
-
isChainUnsupported(chainId) {
|
|
53
|
-
return !this.chains.some((x) => x.id === chainId);
|
|
54
|
-
}
|
|
55
|
-
};
|
|
56
|
-
|
|
57
|
-
export {
|
|
58
|
-
__publicField,
|
|
59
|
-
__privateGet,
|
|
60
|
-
__privateAdd,
|
|
61
|
-
__privateSet,
|
|
62
|
-
__privateMethod,
|
|
63
|
-
Connector
|
|
64
|
-
};
|
package/dist/coinbaseWallet.js
DELETED
|
@@ -1,216 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
Connector,
|
|
3
|
-
__privateAdd,
|
|
4
|
-
__privateGet,
|
|
5
|
-
__privateMethod,
|
|
6
|
-
__privateSet,
|
|
7
|
-
__publicField
|
|
8
|
-
} from "./chunk-5NCTPR6C.js";
|
|
9
|
-
|
|
10
|
-
// src/coinbaseWallet.ts
|
|
11
|
-
import {
|
|
12
|
-
AddChainError,
|
|
13
|
-
ChainNotConfiguredError,
|
|
14
|
-
SwitchChainError,
|
|
15
|
-
UserRejectedRequestError,
|
|
16
|
-
normalizeChainId
|
|
17
|
-
} from "@wagmi/core";
|
|
18
|
-
import { providers } from "ethers";
|
|
19
|
-
import { getAddress, hexValue } from "ethers/lib/utils.js";
|
|
20
|
-
var _client, _provider, _isUserRejectedRequestError, isUserRejectedRequestError_fn;
|
|
21
|
-
var CoinbaseWalletConnector = class extends Connector {
|
|
22
|
-
constructor({ chains, options }) {
|
|
23
|
-
super({
|
|
24
|
-
chains,
|
|
25
|
-
options: {
|
|
26
|
-
reloadOnDisconnect: false,
|
|
27
|
-
...options
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
__privateAdd(this, _isUserRejectedRequestError);
|
|
31
|
-
__publicField(this, "id", "coinbaseWallet");
|
|
32
|
-
__publicField(this, "name", "Coinbase Wallet");
|
|
33
|
-
__publicField(this, "ready", true);
|
|
34
|
-
__privateAdd(this, _client, void 0);
|
|
35
|
-
__privateAdd(this, _provider, void 0);
|
|
36
|
-
__publicField(this, "onAccountsChanged", (accounts) => {
|
|
37
|
-
if (accounts.length === 0)
|
|
38
|
-
this.emit("disconnect");
|
|
39
|
-
else
|
|
40
|
-
this.emit("change", { account: getAddress(accounts[0]) });
|
|
41
|
-
});
|
|
42
|
-
__publicField(this, "onChainChanged", (chainId) => {
|
|
43
|
-
const id = normalizeChainId(chainId);
|
|
44
|
-
const unsupported = this.isChainUnsupported(id);
|
|
45
|
-
this.emit("change", { chain: { id, unsupported } });
|
|
46
|
-
});
|
|
47
|
-
__publicField(this, "onDisconnect", () => {
|
|
48
|
-
this.emit("disconnect");
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
async connect({ chainId } = {}) {
|
|
52
|
-
try {
|
|
53
|
-
const provider = await this.getProvider();
|
|
54
|
-
provider.on("accountsChanged", this.onAccountsChanged);
|
|
55
|
-
provider.on("chainChanged", this.onChainChanged);
|
|
56
|
-
provider.on("disconnect", this.onDisconnect);
|
|
57
|
-
this.emit("message", { type: "connecting" });
|
|
58
|
-
const accounts = await provider.enable();
|
|
59
|
-
const account = getAddress(accounts[0]);
|
|
60
|
-
let id = await this.getChainId();
|
|
61
|
-
let unsupported = this.isChainUnsupported(id);
|
|
62
|
-
if (chainId && id !== chainId) {
|
|
63
|
-
const chain = await this.switchChain(chainId);
|
|
64
|
-
id = chain.id;
|
|
65
|
-
unsupported = this.isChainUnsupported(id);
|
|
66
|
-
}
|
|
67
|
-
return {
|
|
68
|
-
account,
|
|
69
|
-
chain: { id, unsupported },
|
|
70
|
-
provider: new providers.Web3Provider(
|
|
71
|
-
provider
|
|
72
|
-
)
|
|
73
|
-
};
|
|
74
|
-
} catch (error) {
|
|
75
|
-
if (/(user closed modal|accounts received is empty)/i.test(
|
|
76
|
-
error.message
|
|
77
|
-
))
|
|
78
|
-
throw new UserRejectedRequestError(error);
|
|
79
|
-
throw error;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
async disconnect() {
|
|
83
|
-
if (!__privateGet(this, _provider))
|
|
84
|
-
return;
|
|
85
|
-
const provider = await this.getProvider();
|
|
86
|
-
provider.removeListener("accountsChanged", this.onAccountsChanged);
|
|
87
|
-
provider.removeListener("chainChanged", this.onChainChanged);
|
|
88
|
-
provider.removeListener("disconnect", this.onDisconnect);
|
|
89
|
-
provider.disconnect();
|
|
90
|
-
provider.close();
|
|
91
|
-
}
|
|
92
|
-
async getAccount() {
|
|
93
|
-
const provider = await this.getProvider();
|
|
94
|
-
const accounts = await provider.request({
|
|
95
|
-
method: "eth_accounts"
|
|
96
|
-
});
|
|
97
|
-
return getAddress(accounts[0]);
|
|
98
|
-
}
|
|
99
|
-
async getChainId() {
|
|
100
|
-
const provider = await this.getProvider();
|
|
101
|
-
const chainId = normalizeChainId(provider.chainId);
|
|
102
|
-
return chainId;
|
|
103
|
-
}
|
|
104
|
-
async getProvider() {
|
|
105
|
-
if (!__privateGet(this, _provider)) {
|
|
106
|
-
let CoinbaseWalletSDK = (await import("@coinbase/wallet-sdk")).default;
|
|
107
|
-
if (typeof CoinbaseWalletSDK !== "function" && typeof CoinbaseWalletSDK.default === "function")
|
|
108
|
-
CoinbaseWalletSDK = CoinbaseWalletSDK.default;
|
|
109
|
-
__privateSet(this, _client, new CoinbaseWalletSDK(this.options));
|
|
110
|
-
class WalletProvider {
|
|
111
|
-
}
|
|
112
|
-
class Client {
|
|
113
|
-
}
|
|
114
|
-
const walletExtensionChainId = __privateGet(this, _client).walletExtension?.getChainId();
|
|
115
|
-
const chain = this.chains.find(
|
|
116
|
-
(chain2) => this.options.chainId ? chain2.id === this.options.chainId : chain2.id === walletExtensionChainId
|
|
117
|
-
) || this.chains[0];
|
|
118
|
-
const chainId = this.options.chainId || chain?.id;
|
|
119
|
-
const jsonRpcUrl = this.options.jsonRpcUrl || chain?.rpcUrls.default.http[0];
|
|
120
|
-
__privateSet(this, _provider, __privateGet(this, _client).makeWeb3Provider(jsonRpcUrl, chainId));
|
|
121
|
-
}
|
|
122
|
-
return __privateGet(this, _provider);
|
|
123
|
-
}
|
|
124
|
-
async getSigner({ chainId } = {}) {
|
|
125
|
-
const [provider, account] = await Promise.all([
|
|
126
|
-
this.getProvider(),
|
|
127
|
-
this.getAccount()
|
|
128
|
-
]);
|
|
129
|
-
return new providers.Web3Provider(
|
|
130
|
-
provider,
|
|
131
|
-
chainId
|
|
132
|
-
).getSigner(account);
|
|
133
|
-
}
|
|
134
|
-
async isAuthorized() {
|
|
135
|
-
try {
|
|
136
|
-
const account = await this.getAccount();
|
|
137
|
-
return !!account;
|
|
138
|
-
} catch {
|
|
139
|
-
return false;
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
async switchChain(chainId) {
|
|
143
|
-
const provider = await this.getProvider();
|
|
144
|
-
const id = hexValue(chainId);
|
|
145
|
-
try {
|
|
146
|
-
await provider.request({
|
|
147
|
-
method: "wallet_switchEthereumChain",
|
|
148
|
-
params: [{ chainId: id }]
|
|
149
|
-
});
|
|
150
|
-
return this.chains.find((x) => x.id === chainId) ?? {
|
|
151
|
-
id: chainId,
|
|
152
|
-
name: `Chain ${id}`,
|
|
153
|
-
network: `${id}`,
|
|
154
|
-
nativeCurrency: { name: "Ether", decimals: 18, symbol: "ETH" },
|
|
155
|
-
rpcUrls: { default: { http: [""] }, public: { http: [""] } }
|
|
156
|
-
};
|
|
157
|
-
} catch (error) {
|
|
158
|
-
const chain = this.chains.find((x) => x.id === chainId);
|
|
159
|
-
if (!chain)
|
|
160
|
-
throw new ChainNotConfiguredError({ chainId, connectorId: this.id });
|
|
161
|
-
if (error.code === 4902) {
|
|
162
|
-
try {
|
|
163
|
-
await provider.request({
|
|
164
|
-
method: "wallet_addEthereumChain",
|
|
165
|
-
params: [
|
|
166
|
-
{
|
|
167
|
-
chainId: id,
|
|
168
|
-
chainName: chain.name,
|
|
169
|
-
nativeCurrency: chain.nativeCurrency,
|
|
170
|
-
rpcUrls: [chain.rpcUrls.public?.http[0] ?? ""],
|
|
171
|
-
blockExplorerUrls: this.getBlockExplorerUrls(chain)
|
|
172
|
-
}
|
|
173
|
-
]
|
|
174
|
-
});
|
|
175
|
-
return chain;
|
|
176
|
-
} catch (addError) {
|
|
177
|
-
if (__privateMethod(this, _isUserRejectedRequestError, isUserRejectedRequestError_fn).call(this, addError))
|
|
178
|
-
throw new UserRejectedRequestError(addError);
|
|
179
|
-
throw new AddChainError();
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
if (__privateMethod(this, _isUserRejectedRequestError, isUserRejectedRequestError_fn).call(this, error))
|
|
183
|
-
throw new UserRejectedRequestError(error);
|
|
184
|
-
throw new SwitchChainError(error);
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
async watchAsset({
|
|
188
|
-
address,
|
|
189
|
-
decimals = 18,
|
|
190
|
-
image,
|
|
191
|
-
symbol
|
|
192
|
-
}) {
|
|
193
|
-
const provider = await this.getProvider();
|
|
194
|
-
return provider.request({
|
|
195
|
-
method: "wallet_watchAsset",
|
|
196
|
-
params: {
|
|
197
|
-
type: "ERC20",
|
|
198
|
-
options: {
|
|
199
|
-
address,
|
|
200
|
-
decimals,
|
|
201
|
-
image,
|
|
202
|
-
symbol
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
});
|
|
206
|
-
}
|
|
207
|
-
};
|
|
208
|
-
_client = new WeakMap();
|
|
209
|
-
_provider = new WeakMap();
|
|
210
|
-
_isUserRejectedRequestError = new WeakSet();
|
|
211
|
-
isUserRejectedRequestError_fn = function(error) {
|
|
212
|
-
return /(user rejected)/i.test(error.message);
|
|
213
|
-
};
|
|
214
|
-
export {
|
|
215
|
-
CoinbaseWalletConnector
|
|
216
|
-
};
|
package/dist/index.js
DELETED