@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.
@@ -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
- };
@@ -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
- };
@@ -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
@@ -1,6 +0,0 @@
1
- import {
2
- Connector
3
- } from "./chunk-5NCTPR6C.js";
4
- export {
5
- Connector
6
- };
package/dist/injected.js DELETED
@@ -1,7 +0,0 @@
1
- import {
2
- InjectedConnector
3
- } from "./chunk-2VZS2JHJ.js";
4
- import "./chunk-5NCTPR6C.js";
5
- export {
6
- InjectedConnector
7
- };