@wagmi/connectors 3.1.1 → 4.0.0

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.
Files changed (73) hide show
  1. package/dist/esm/coinbaseWallet.js +141 -0
  2. package/dist/esm/coinbaseWallet.js.map +1 -0
  3. package/dist/esm/index.js +7 -0
  4. package/dist/esm/index.js.map +1 -0
  5. package/dist/esm/index.test-d.js +4 -0
  6. package/dist/esm/index.test-d.js.map +1 -0
  7. package/dist/esm/injected.js +372 -0
  8. package/dist/esm/injected.js.map +1 -0
  9. package/dist/esm/ledger.js +162 -0
  10. package/dist/esm/ledger.js.map +1 -0
  11. package/dist/esm/safe.js +88 -0
  12. package/dist/esm/safe.js.map +1 -0
  13. package/dist/esm/tsconfig.build.tsbuildinfo +1 -0
  14. package/dist/esm/version.js +2 -0
  15. package/dist/esm/version.js.map +1 -0
  16. package/dist/esm/walletConnect.js +280 -0
  17. package/dist/esm/walletConnect.js.map +1 -0
  18. package/dist/types/coinbaseWallet.d.ts +21 -0
  19. package/dist/types/coinbaseWallet.d.ts.map +1 -0
  20. package/dist/types/index.d.ts +7 -0
  21. package/dist/types/index.d.ts.map +1 -0
  22. package/dist/types/index.test-d.d.ts +2 -0
  23. package/dist/types/index.test-d.d.ts.map +1 -0
  24. package/dist/types/injected.d.ts +381 -0
  25. package/dist/types/injected.d.ts.map +1 -0
  26. package/dist/types/ledger.d.ts +18 -0
  27. package/dist/types/ledger.d.ts.map +1 -0
  28. package/dist/types/safe.d.ts +18 -0
  29. package/dist/types/safe.d.ts.map +1 -0
  30. package/dist/types/version.d.ts +2 -0
  31. package/dist/types/version.d.ts.map +1 -0
  32. package/dist/types/walletConnect.d.ts +63 -0
  33. package/dist/types/walletConnect.d.ts.map +1 -0
  34. package/package.json +44 -83
  35. package/src/coinbaseWallet.ts +207 -0
  36. package/src/index.ts +17 -0
  37. package/src/injected.ts +527 -0
  38. package/src/ledger.ts +210 -0
  39. package/src/safe.ts +114 -0
  40. package/src/version.ts +1 -0
  41. package/src/walletConnect.ts +394 -0
  42. package/README.md +0 -46
  43. package/coinbaseWallet/package.json +0 -4
  44. package/dist/base-70e3a8a9.d.ts +0 -142
  45. package/dist/chunk-2UFLHRLT.js +0 -391
  46. package/dist/chunk-OQILYQDO.js +0 -15
  47. package/dist/chunk-UGBGYVBH.js +0 -22
  48. package/dist/chunk-W65LBPLT.js +0 -58
  49. package/dist/coinbaseWallet.d.ts +0 -62
  50. package/dist/coinbaseWallet.js +0 -216
  51. package/dist/index.d.ts +0 -20
  52. package/dist/index.js +0 -16
  53. package/dist/injected.d.ts +0 -64
  54. package/dist/injected.js +0 -9
  55. package/dist/ledger.d.ts +0 -69
  56. package/dist/ledger.js +0 -261
  57. package/dist/metaMask.d.ts +0 -33
  58. package/dist/metaMask.js +0 -144
  59. package/dist/mock/index.d.ts +0 -80
  60. package/dist/mock/index.js +0 -200
  61. package/dist/safe.d.ts +0 -53
  62. package/dist/safe.js +0 -129
  63. package/dist/walletConnect.d.ts +0 -109
  64. package/dist/walletConnect.js +0 -325
  65. package/dist/walletConnectLegacy.d.ts +0 -38
  66. package/dist/walletConnectLegacy.js +0 -179
  67. package/injected/package.json +0 -4
  68. package/ledger/package.json +0 -4
  69. package/metaMask/package.json +0 -4
  70. package/mock/package.json +0 -4
  71. package/safe/package.json +0 -4
  72. package/walletConnect/package.json +0 -4
  73. package/walletConnectLegacy/package.json +0 -4
@@ -1,391 +0,0 @@
1
- import {
2
- ChainNotConfiguredForConnectorError,
3
- ConnectorNotFoundError
4
- } from "./chunk-UGBGYVBH.js";
5
- import {
6
- normalizeChainId
7
- } from "./chunk-OQILYQDO.js";
8
- import {
9
- Connector,
10
- __privateAdd,
11
- __privateGet,
12
- __privateSet
13
- } from "./chunk-W65LBPLT.js";
14
-
15
- // src/injected.ts
16
- import {
17
- ResourceUnavailableRpcError,
18
- SwitchChainError,
19
- UserRejectedRequestError,
20
- createWalletClient,
21
- custom,
22
- getAddress,
23
- numberToHex
24
- } from "viem";
25
-
26
- // src/utils/getInjectedName.ts
27
- function getInjectedName(ethereum) {
28
- if (!ethereum)
29
- return "Injected";
30
- const getName = (provider) => {
31
- if (provider.isApexWallet)
32
- return "Apex Wallet";
33
- if (provider.isAvalanche)
34
- return "Core Wallet";
35
- if (provider.isBackpack)
36
- return "Backpack";
37
- if (provider.isBifrost)
38
- return "Bifrost Wallet";
39
- if (provider.isBitKeep)
40
- return "BitKeep";
41
- if (provider.isBitski)
42
- return "Bitski";
43
- if (provider.isBlockWallet)
44
- return "BlockWallet";
45
- if (provider.isBraveWallet)
46
- return "Brave Wallet";
47
- if (provider.isCoin98)
48
- return "Coin98 Wallet";
49
- if (provider.isCoinbaseWallet)
50
- return "Coinbase Wallet";
51
- if (provider.isDawn)
52
- return "Dawn Wallet";
53
- if (provider.isDefiant)
54
- return "Defiant";
55
- if (provider.isDesig)
56
- return "Desig Wallet";
57
- if (provider.isEnkrypt)
58
- return "Enkrypt";
59
- if (provider.isExodus)
60
- return "Exodus";
61
- if (provider.isFordefi)
62
- return "Fordefi";
63
- if (provider.isFrame)
64
- return "Frame";
65
- if (provider.isFrontier)
66
- return "Frontier Wallet";
67
- if (provider.isGamestop)
68
- return "GameStop Wallet";
69
- if (provider.isHaqqWallet)
70
- return "HAQQ Wallet";
71
- if (provider.isHyperPay)
72
- return "HyperPay Wallet";
73
- if (provider.isImToken)
74
- return "ImToken";
75
- if (provider.isHaloWallet)
76
- return "Halo Wallet";
77
- if (provider.isKuCoinWallet)
78
- return "KuCoin Wallet";
79
- if (provider.isMathWallet)
80
- return "MathWallet";
81
- if (provider.isNovaWallet)
82
- return "Nova Wallet";
83
- if (provider.isOkxWallet || provider.isOKExWallet)
84
- return "OKX Wallet";
85
- if (provider.isOneInchIOSWallet || provider.isOneInchAndroidWallet)
86
- return "1inch Wallet";
87
- if (provider.isOpera)
88
- return "Opera";
89
- if (provider.isPhantom)
90
- return "Phantom";
91
- if (provider.isPortal)
92
- return "Ripio Portal";
93
- if (provider.isRabby)
94
- return "Rabby Wallet";
95
- if (provider.isRainbow)
96
- return "Rainbow";
97
- if (provider.isStatus)
98
- return "Status";
99
- if (provider.isSubWallet)
100
- return "SubWallet";
101
- if (provider.isTalisman)
102
- return "Talisman";
103
- if (provider.isTally)
104
- return "Taho";
105
- if (provider.isTokenPocket)
106
- return "TokenPocket";
107
- if (provider.isTokenary)
108
- return "Tokenary";
109
- if (provider.isTrust || provider.isTrustWallet)
110
- return "Trust Wallet";
111
- if (provider.isTTWallet)
112
- return "TTWallet";
113
- if (provider.isXDEFI)
114
- return "XDEFI Wallet";
115
- if (provider.isZeal)
116
- return "Zeal";
117
- if (provider.isZerion)
118
- return "Zerion";
119
- if (provider.isMetaMask)
120
- return "MetaMask";
121
- };
122
- if (ethereum.providers?.length) {
123
- const nameSet = /* @__PURE__ */ new Set();
124
- let unknownCount = 1;
125
- for (const provider of ethereum.providers) {
126
- let name = getName(provider);
127
- if (!name) {
128
- name = `Unknown Wallet #${unknownCount}`;
129
- unknownCount += 1;
130
- }
131
- nameSet.add(name);
132
- }
133
- const names = [...nameSet];
134
- if (names.length)
135
- return names;
136
- return names[0] ?? "Injected";
137
- }
138
- return getName(ethereum) ?? "Injected";
139
- }
140
-
141
- // src/injected.ts
142
- var _provider;
143
- var InjectedConnector = class extends Connector {
144
- constructor({
145
- chains,
146
- options: options_
147
- } = {}) {
148
- const options = {
149
- shimDisconnect: true,
150
- getProvider() {
151
- if (typeof window === "undefined")
152
- return;
153
- const ethereum = window.ethereum;
154
- if (ethereum?.providers)
155
- return ethereum.providers[0];
156
- return ethereum;
157
- },
158
- ...options_
159
- };
160
- super({ chains, options });
161
- this.id = "injected";
162
- __privateAdd(this, _provider, void 0);
163
- this.shimDisconnectKey = `${this.id}.shimDisconnect`;
164
- this.onAccountsChanged = (accounts) => {
165
- if (accounts.length === 0)
166
- this.emit("disconnect");
167
- else
168
- this.emit("change", {
169
- account: getAddress(accounts[0])
170
- });
171
- };
172
- this.onChainChanged = (chainId) => {
173
- const id = normalizeChainId(chainId);
174
- const unsupported = this.isChainUnsupported(id);
175
- this.emit("change", { chain: { id, unsupported } });
176
- };
177
- this.onDisconnect = async (error) => {
178
- if (error.code === 1013) {
179
- const provider = await this.getProvider();
180
- if (provider) {
181
- const isAuthorized = await this.getAccount();
182
- if (isAuthorized)
183
- return;
184
- }
185
- }
186
- this.emit("disconnect");
187
- if (this.options.shimDisconnect)
188
- this.storage?.removeItem(this.shimDisconnectKey);
189
- };
190
- const provider = options.getProvider();
191
- if (typeof options.name === "string")
192
- this.name = options.name;
193
- else if (provider) {
194
- const detectedName = getInjectedName(provider);
195
- if (options.name)
196
- this.name = options.name(detectedName);
197
- else {
198
- if (typeof detectedName === "string")
199
- this.name = detectedName;
200
- else
201
- this.name = detectedName[0];
202
- }
203
- } else
204
- this.name = "Injected";
205
- this.ready = !!provider;
206
- }
207
- async connect({ chainId } = {}) {
208
- try {
209
- const provider = await this.getProvider();
210
- if (!provider)
211
- throw new ConnectorNotFoundError();
212
- if (provider.on) {
213
- provider.on("accountsChanged", this.onAccountsChanged);
214
- provider.on("chainChanged", this.onChainChanged);
215
- provider.on("disconnect", this.onDisconnect);
216
- }
217
- this.emit("message", { type: "connecting" });
218
- const accounts = await provider.request({
219
- method: "eth_requestAccounts"
220
- });
221
- const account = getAddress(accounts[0]);
222
- let id = await this.getChainId();
223
- let unsupported = this.isChainUnsupported(id);
224
- if (chainId && id !== chainId) {
225
- const chain = await this.switchChain(chainId);
226
- id = chain.id;
227
- unsupported = this.isChainUnsupported(id);
228
- }
229
- if (this.options.shimDisconnect)
230
- this.storage?.setItem(this.shimDisconnectKey, true);
231
- return { account, chain: { id, unsupported } };
232
- } catch (error) {
233
- if (this.isUserRejectedRequestError(error))
234
- throw new UserRejectedRequestError(error);
235
- if (error.code === -32002)
236
- throw new ResourceUnavailableRpcError(error);
237
- throw error;
238
- }
239
- }
240
- async disconnect() {
241
- const provider = await this.getProvider();
242
- if (!provider?.removeListener)
243
- return;
244
- provider.removeListener("accountsChanged", this.onAccountsChanged);
245
- provider.removeListener("chainChanged", this.onChainChanged);
246
- provider.removeListener("disconnect", this.onDisconnect);
247
- if (this.options.shimDisconnect)
248
- this.storage?.removeItem(this.shimDisconnectKey);
249
- }
250
- async getAccount() {
251
- const provider = await this.getProvider();
252
- if (!provider)
253
- throw new ConnectorNotFoundError();
254
- const accounts = await provider.request({
255
- method: "eth_accounts"
256
- });
257
- return getAddress(accounts[0]);
258
- }
259
- async getChainId() {
260
- const provider = await this.getProvider();
261
- if (!provider)
262
- throw new ConnectorNotFoundError();
263
- return provider.request({ method: "eth_chainId" }).then(normalizeChainId);
264
- }
265
- async getProvider() {
266
- const provider = this.options.getProvider();
267
- if (provider)
268
- __privateSet(this, _provider, provider);
269
- return __privateGet(this, _provider);
270
- }
271
- async getWalletClient({
272
- chainId
273
- } = {}) {
274
- const [provider, account] = await Promise.all([
275
- this.getProvider(),
276
- this.getAccount()
277
- ]);
278
- const chain = this.chains.find((x) => x.id === chainId);
279
- if (!provider)
280
- throw new Error("provider is required.");
281
- return createWalletClient({
282
- account,
283
- chain,
284
- transport: custom(provider)
285
- });
286
- }
287
- async isAuthorized() {
288
- try {
289
- if (this.options.shimDisconnect && !this.storage?.getItem(this.shimDisconnectKey))
290
- return false;
291
- const provider = await this.getProvider();
292
- if (!provider)
293
- throw new ConnectorNotFoundError();
294
- const account = await this.getAccount();
295
- return !!account;
296
- } catch {
297
- return false;
298
- }
299
- }
300
- async switchChain(chainId) {
301
- const provider = await this.getProvider();
302
- if (!provider)
303
- throw new ConnectorNotFoundError();
304
- const id = numberToHex(chainId);
305
- try {
306
- await Promise.all([
307
- provider.request({
308
- method: "wallet_switchEthereumChain",
309
- params: [{ chainId: id }]
310
- }),
311
- new Promise(
312
- (res) => this.on("change", ({ chain }) => {
313
- if (chain?.id === chainId)
314
- res();
315
- })
316
- )
317
- ]);
318
- return this.chains.find((x) => x.id === chainId) ?? {
319
- id: chainId,
320
- name: `Chain ${id}`,
321
- network: `${id}`,
322
- nativeCurrency: { name: "Ether", decimals: 18, symbol: "ETH" },
323
- rpcUrls: { default: { http: [""] }, public: { http: [""] } }
324
- };
325
- } catch (error) {
326
- const chain = this.chains.find((x) => x.id === chainId);
327
- if (!chain)
328
- throw new ChainNotConfiguredForConnectorError({
329
- chainId,
330
- connectorId: this.id
331
- });
332
- if (error.code === 4902 || error?.data?.originalError?.code === 4902) {
333
- try {
334
- await provider.request({
335
- method: "wallet_addEthereumChain",
336
- params: [
337
- {
338
- chainId: id,
339
- chainName: chain.name,
340
- nativeCurrency: chain.nativeCurrency,
341
- rpcUrls: [chain.rpcUrls.public?.http[0] ?? ""],
342
- blockExplorerUrls: this.getBlockExplorerUrls(chain)
343
- }
344
- ]
345
- });
346
- const currentChainId = await this.getChainId();
347
- if (currentChainId !== chainId)
348
- throw new UserRejectedRequestError(
349
- new Error("User rejected switch after adding network.")
350
- );
351
- return chain;
352
- } catch (error2) {
353
- throw new UserRejectedRequestError(error2);
354
- }
355
- }
356
- if (this.isUserRejectedRequestError(error))
357
- throw new UserRejectedRequestError(error);
358
- throw new SwitchChainError(error);
359
- }
360
- }
361
- async watchAsset({
362
- address,
363
- decimals = 18,
364
- image,
365
- symbol
366
- }) {
367
- const provider = await this.getProvider();
368
- if (!provider)
369
- throw new ConnectorNotFoundError();
370
- return provider.request({
371
- method: "wallet_watchAsset",
372
- params: {
373
- type: "ERC20",
374
- options: {
375
- address,
376
- decimals,
377
- image,
378
- symbol
379
- }
380
- }
381
- });
382
- }
383
- isUserRejectedRequestError(error) {
384
- return error.code === 4001;
385
- }
386
- };
387
- _provider = new WeakMap();
388
-
389
- export {
390
- InjectedConnector
391
- };
@@ -1,15 +0,0 @@
1
- // src/utils/normalizeChainId.ts
2
- function normalizeChainId(chainId) {
3
- if (typeof chainId === "string")
4
- return Number.parseInt(
5
- chainId,
6
- chainId.trim().substring(0, 2) === "0x" ? 16 : 10
7
- );
8
- if (typeof chainId === "bigint")
9
- return Number(chainId);
10
- return chainId;
11
- }
12
-
13
- export {
14
- normalizeChainId
15
- };
@@ -1,22 +0,0 @@
1
- // src/errors.ts
2
- var ChainNotConfiguredForConnectorError = class extends Error {
3
- constructor({
4
- chainId,
5
- connectorId
6
- }) {
7
- super(`Chain "${chainId}" not configured for connector "${connectorId}".`);
8
- this.name = "ChainNotConfiguredForConnectorError";
9
- }
10
- };
11
- var ConnectorNotFoundError = class extends Error {
12
- constructor() {
13
- super(...arguments);
14
- this.name = "ConnectorNotFoundError";
15
- this.message = "Connector not found";
16
- }
17
- };
18
-
19
- export {
20
- ChainNotConfiguredForConnectorError,
21
- ConnectorNotFoundError
22
- };
@@ -1,58 +0,0 @@
1
- var __accessCheck = (obj, member, msg) => {
2
- if (!member.has(obj))
3
- throw TypeError("Cannot " + msg);
4
- };
5
- var __privateGet = (obj, member, getter) => {
6
- __accessCheck(obj, member, "read from private field");
7
- return getter ? getter.call(obj) : member.get(obj);
8
- };
9
- var __privateAdd = (obj, member, value) => {
10
- if (member.has(obj))
11
- throw TypeError("Cannot add the same private member more than once");
12
- member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
13
- };
14
- var __privateSet = (obj, member, value, setter) => {
15
- __accessCheck(obj, member, "write to private field");
16
- setter ? setter.call(obj, value) : member.set(obj, value);
17
- return value;
18
- };
19
- var __privateMethod = (obj, member, method) => {
20
- __accessCheck(obj, member, "access private method");
21
- return method;
22
- };
23
-
24
- // src/base.ts
25
- import { default as EventEmitter } from "eventemitter3";
26
- import { goerli, mainnet } from "viem/chains";
27
- var Connector = class extends EventEmitter {
28
- constructor({
29
- chains = [mainnet, goerli],
30
- options
31
- }) {
32
- super();
33
- this.chains = chains;
34
- this.options = options;
35
- }
36
- getBlockExplorerUrls(chain) {
37
- const { default: blockExplorer, ...blockExplorers } = chain.blockExplorers ?? {};
38
- if (blockExplorer)
39
- return [
40
- blockExplorer.url,
41
- ...Object.values(blockExplorers).map((x) => x.url)
42
- ];
43
- }
44
- isChainUnsupported(chainId) {
45
- return !this.chains.some((x) => x.id === chainId);
46
- }
47
- setStorage(storage) {
48
- this.storage = storage;
49
- }
50
- };
51
-
52
- export {
53
- __privateGet,
54
- __privateAdd,
55
- __privateSet,
56
- __privateMethod,
57
- Connector
58
- };
@@ -1,62 +0,0 @@
1
- import { CoinbaseWalletProvider } from '@coinbase/wallet-sdk';
2
- import { CoinbaseWalletSDKOptions } from '@coinbase/wallet-sdk/dist/CoinbaseWalletSDK';
3
- import { Chain } from 'viem/chains';
4
- import { C as Connector, c as WalletClient } from './base-70e3a8a9.js';
5
- import 'eventemitter3';
6
- import 'viem';
7
-
8
- type Options = Omit<CoinbaseWalletSDKOptions, 'reloadOnDisconnect'> & {
9
- /**
10
- * Fallback Ethereum JSON RPC URL
11
- * @default ""
12
- */
13
- jsonRpcUrl?: string;
14
- /**
15
- * Fallback Ethereum Chain ID
16
- * @default 1
17
- */
18
- chainId?: number;
19
- /**
20
- * Whether or not to reload dapp automatically after disconnect.
21
- */
22
- reloadOnDisconnect?: boolean;
23
- };
24
- declare class CoinbaseWalletConnector extends Connector<CoinbaseWalletProvider, Options> {
25
- #private;
26
- readonly id = "coinbaseWallet";
27
- readonly name = "Coinbase Wallet";
28
- readonly ready = true;
29
- constructor({ chains, options }: {
30
- chains?: Chain[];
31
- options: Options;
32
- });
33
- connect({ chainId }?: {
34
- chainId?: number;
35
- }): Promise<{
36
- account: `0x${string}`;
37
- chain: {
38
- id: number;
39
- unsupported: boolean;
40
- };
41
- }>;
42
- disconnect(): Promise<void>;
43
- getAccount(): Promise<`0x${string}`>;
44
- getChainId(): Promise<number>;
45
- getProvider(): Promise<CoinbaseWalletProvider>;
46
- getWalletClient({ chainId, }?: {
47
- chainId?: number;
48
- }): Promise<WalletClient>;
49
- isAuthorized(): Promise<boolean>;
50
- switchChain(chainId: number): Promise<Chain>;
51
- watchAsset({ address, decimals, image, symbol, }: {
52
- address: string;
53
- decimals?: number;
54
- image?: string;
55
- symbol: string;
56
- }): Promise<boolean>;
57
- protected onAccountsChanged: (accounts: string[]) => void;
58
- protected onChainChanged: (chainId: number | string) => void;
59
- protected onDisconnect: () => void;
60
- }
61
-
62
- export { CoinbaseWalletConnector };