@wagmi/connectors 5.0.15 → 5.0.17

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,2 +1,2 @@
1
- export const version = '5.0.15';
1
+ export const version = '5.0.17';
2
2
  //# sourceMappingURL=version.js.map
@@ -4,6 +4,7 @@ import { type ProviderConnectInfo } from 'viem';
4
4
  export type MetaMaskParameters = Evaluate<ExactPartial<Omit<MetaMaskSDKOptions, '_source' | 'readonlyRPCMap'>>>;
5
5
  export declare function metaMask(parameters?: MetaMaskParameters): import("@wagmi/core").CreateConnectorFn<SDKProvider, {
6
6
  onConnect(connectInfo: ProviderConnectInfo): void;
7
+ onDisplayUri(uri: string): void;
7
8
  }, {
8
9
  'metaMaskSDK.disconnected': true;
9
10
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"metaMask.d.ts","sourceRoot":"","sources":["../../src/metaMask.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,kBAAkB,EAClB,WAAW,EACZ,MAAM,eAAe,CAAA;AAEtB,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAClE,OAAO,EAGL,KAAK,mBAAmB,EAQzB,MAAM,MAAM,CAAA;AAEb,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CACvC,YAAY,CAAC,IAAI,CAAC,kBAAkB,EAAE,SAAS,GAAG,gBAAgB,CAAC,CAAC,CACrE,CAAA;AAGD,wBAAgB,QAAQ,CAAC,UAAU,GAAE,kBAAuB;2BAGjC,mBAAmB,GAAG,IAAI;;gCAEF,IAAI;GA2RtD;yBAhSe,QAAQ"}
1
+ {"version":3,"file":"metaMask.d.ts","sourceRoot":"","sources":["../../src/metaMask.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,kBAAkB,EAClB,WAAW,EACZ,MAAM,eAAe,CAAA;AAMtB,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAClE,OAAO,EAGL,KAAK,mBAAmB,EAQzB,MAAM,MAAM,CAAA;AAEb,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CACvC,YAAY,CAAC,IAAI,CAAC,kBAAkB,EAAE,SAAS,GAAG,gBAAgB,CAAC,CAAC,CACrE,CAAA;AAGD,wBAAgB,QAAQ,CAAC,UAAU,GAAE,kBAAuB;2BAGjC,mBAAmB,GAAG,IAAI;sBAC/B,MAAM,GAAG,IAAI;;gCAEgB,IAAI;GAqVtD;yBA3Ve,QAAQ"}
@@ -1,2 +1,2 @@
1
- export declare const version = "5.0.15";
1
+ export declare const version = "5.0.17";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"walletConnect.d.ts","sourceRoot":"","sources":["../../src/walletConnect.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AACxE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AACxE,OAAO,EAEL,KAAK,OAAO,EACZ,KAAK,mBAAmB,EAOzB,MAAM,MAAM,CAAA;AAOb,KAAK,uBAAuB,GAAG,UAAU,CAAC,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAE/E,MAAM,MAAM,uBAAuB,GAAG,QAAQ,CAC5C;IACE;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B,GAAG,IAAI,CACN,uBAAuB,EACrB,QAAQ,GACR,QAAQ,GACR,gBAAgB,GAChB,gBAAgB,GAChB,iBAAiB,GACjB,SAAS,GACT,QAAQ,GACR,aAAa,CAChB,GACC,YAAY,CAAC,IAAI,CAAC,uBAAuB,EAAE,aAAa,CAAC,CAAC,CAC7D,CAAA;AAGD,wBAAgB,aAAa,CAAC,UAAU,EAAE,uBAAuB;yBAKxC;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,QAAQ;QACzE,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAA;QAC5B,OAAO,EAAE,MAAM,CAAA;KAChB,CAAC;6BACuB,MAAM,EAAE;6BACR,QAAQ,MAAM,EAAE,CAAC;qBACzB,QAAQ,OAAO,CAAC;2BACV,mBAAmB,GAAG,IAAI;sBAC/B,MAAM,GAAG,IAAI;0BACT;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;kCAChB,MAAM,EAAE,GAAG,IAAI;+BAClB,GAAG,MAAM,kBAAkB;;;GAiXzD;yBAjYe,aAAa"}
1
+ {"version":3,"file":"walletConnect.d.ts","sourceRoot":"","sources":["../../src/walletConnect.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AACxE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AACxE,OAAO,EAEL,KAAK,OAAO,EACZ,KAAK,mBAAmB,EAOzB,MAAM,MAAM,CAAA;AAOb,KAAK,uBAAuB,GAAG,UAAU,CAAC,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAE/E,MAAM,MAAM,uBAAuB,GAAG,QAAQ,CAC5C;IACE;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B,GAAG,IAAI,CACN,uBAAuB,EACrB,QAAQ,GACR,QAAQ,GACR,gBAAgB,GAChB,gBAAgB,GAChB,iBAAiB,GACjB,SAAS,GACT,QAAQ,GACR,aAAa,CAChB,GACC,YAAY,CAAC,IAAI,CAAC,uBAAuB,EAAE,aAAa,CAAC,CAAC,CAC7D,CAAA;AAGD,wBAAgB,aAAa,CAAC,UAAU,EAAE,uBAAuB;yBAKxC;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QACzE,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAA;QAC5B,OAAO,EAAE,MAAM,CAAA;KAChB,CAAC;6BACuB,MAAM,EAAE;6BACR,OAAO,CAAC,MAAM,EAAE,CAAC;qBACzB,OAAO,CAAC,OAAO,CAAC;2BACV,mBAAmB,GAAG,IAAI;sBAC/B,MAAM,GAAG,IAAI;0BACT;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;kCAChB,MAAM,EAAE,GAAG,IAAI;+BAClB,GAAG,MAAM,kBAAkB;;;GAiXzD;yBAjYe,aAAa"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@wagmi/connectors",
3
3
  "description": "Collection of connectors for Wagmi",
4
- "version": "5.0.15",
4
+ "version": "5.0.17",
5
5
  "license": "MIT",
6
6
  "repository": {
7
7
  "type": "git",
@@ -30,7 +30,7 @@
30
30
  "peerDependencies": {
31
31
  "typescript": ">=5.0.4",
32
32
  "viem": "2.x",
33
- "@wagmi/core": "2.11.3"
33
+ "@wagmi/core": "2.11.5"
34
34
  },
35
35
  "peerDependenciesMeta": {
36
36
  "typescript": {
@@ -39,7 +39,7 @@
39
39
  },
40
40
  "dependencies": {
41
41
  "@coinbase/wallet-sdk": "4.0.3",
42
- "@metamask/sdk": "0.20.5",
42
+ "@metamask/sdk": "0.26.0",
43
43
  "@safe-global/safe-apps-provider": "0.18.1",
44
44
  "@safe-global/safe-apps-sdk": "8.1.0",
45
45
  "@walletconnect/ethereum-provider": "2.13.0",
package/src/metaMask.ts CHANGED
@@ -3,7 +3,11 @@ import type {
3
3
  MetaMaskSDKOptions,
4
4
  SDKProvider,
5
5
  } from '@metamask/sdk'
6
- import { ChainNotConfiguredError, createConnector } from '@wagmi/core'
6
+ import {
7
+ ChainNotConfiguredError,
8
+ type Connector,
9
+ createConnector,
10
+ } from '@wagmi/core'
7
11
  import type { Evaluate, ExactPartial } from '@wagmi/core/internal'
8
12
  import {
9
13
  type AddEthereumChainParameter,
@@ -27,6 +31,7 @@ export function metaMask(parameters: MetaMaskParameters = {}) {
27
31
  type Provider = SDKProvider
28
32
  type Properties = {
29
33
  onConnect(connectInfo: ProviderConnectInfo): void
34
+ onDisplayUri(uri: string): void
30
35
  }
31
36
  type StorageItem = { 'metaMaskSDK.disconnected': true }
32
37
  type Listener = Parameters<Provider['on']>[1]
@@ -35,17 +40,29 @@ export function metaMask(parameters: MetaMaskParameters = {}) {
35
40
  let provider: Provider | undefined
36
41
  let providerPromise: Promise<typeof provider>
37
42
 
43
+ let accountsChanged: Connector['onAccountsChanged'] | undefined
44
+ let chainChanged: Connector['onChainChanged'] | undefined
45
+ let connect: Connector['onConnect'] | undefined
46
+ let displayUri: ((uri: string) => void) | undefined
47
+ let disconnect: Connector['onDisconnect'] | undefined
48
+
38
49
  return createConnector<Provider, Properties, StorageItem>((config) => ({
39
50
  id: 'metaMaskSDK',
40
51
  name: 'MetaMask',
41
52
  type: metaMask.type,
42
53
  async setup() {
43
54
  const provider = await this.getProvider()
44
- if (provider)
45
- provider.on('connect', this.onConnect.bind(this) as Listener)
55
+ if (provider && !connect) {
56
+ connect = this.onConnect.bind(this)
57
+ provider.on('connect', connect as Listener)
58
+ }
46
59
  },
47
60
  async connect({ chainId, isReconnecting } = {}) {
48
61
  const provider = await this.getProvider()
62
+ if (!displayUri) {
63
+ displayUri = this.onDisplayUri
64
+ provider.on('display_uri', displayUri as Listener)
65
+ }
49
66
 
50
67
  let accounts: readonly Address[] = []
51
68
  if (isReconnecting) accounts = await this.getAccounts().catch(() => [])
@@ -56,17 +73,6 @@ export function metaMask(parameters: MetaMaskParameters = {}) {
56
73
  accounts = requestedAccounts.map((x) => getAddress(x))
57
74
  }
58
75
 
59
- provider.removeListener(
60
- 'connect',
61
- this.onConnect.bind(this) as Listener,
62
- )
63
- provider.on(
64
- 'accountsChanged',
65
- this.onAccountsChanged.bind(this) as Listener,
66
- )
67
- provider.on('chainChanged', this.onChainChanged as Listener)
68
- provider.on('disconnect', this.onDisconnect.bind(this) as Listener)
69
-
70
76
  // Switch to chain if provided
71
77
  let currentChainId = (await this.getChainId()) as number
72
78
  if (chainId && currentChainId !== chainId) {
@@ -79,6 +85,30 @@ export function metaMask(parameters: MetaMaskParameters = {}) {
79
85
 
80
86
  await config.storage?.removeItem('metaMaskSDK.disconnected')
81
87
 
88
+ if (displayUri) {
89
+ provider.removeListener('display_uri', displayUri)
90
+ displayUri = undefined
91
+ }
92
+
93
+ // Manage EIP-1193 event listeners
94
+ // https://eips.ethereum.org/EIPS/eip-1193#events
95
+ if (connect) {
96
+ provider.removeListener('connect', connect)
97
+ connect = undefined
98
+ }
99
+ if (!accountsChanged) {
100
+ accountsChanged = this.onAccountsChanged.bind(this)
101
+ provider.on('accountsChanged', accountsChanged as Listener)
102
+ }
103
+ if (!chainChanged) {
104
+ chainChanged = this.onChainChanged.bind(this)
105
+ provider.on('chainChanged', chainChanged as Listener)
106
+ }
107
+ if (!disconnect) {
108
+ disconnect = this.onDisconnect.bind(this)
109
+ provider.on('disconnect', disconnect as Listener)
110
+ }
111
+
82
112
  return { accounts, chainId: currentChainId }
83
113
  } catch (err) {
84
114
  const error = err as RpcError
@@ -92,13 +122,23 @@ export function metaMask(parameters: MetaMaskParameters = {}) {
92
122
  async disconnect() {
93
123
  const provider = await this.getProvider()
94
124
 
95
- provider.removeListener(
96
- 'accountsChanged',
97
- this.onAccountsChanged.bind(this),
98
- )
99
- provider.removeListener('chainChanged', this.onChainChanged)
100
- provider.removeListener('disconnect', this.onDisconnect.bind(this))
101
- provider.on('connect', this.onConnect.bind(this) as Listener)
125
+ // Manage EIP-1193 event listeners
126
+ if (accountsChanged) {
127
+ provider.removeListener('accountsChanged', accountsChanged)
128
+ accountsChanged = undefined
129
+ }
130
+ if (chainChanged) {
131
+ provider.removeListener('chainChanged', chainChanged)
132
+ chainChanged = undefined
133
+ }
134
+ if (disconnect) {
135
+ provider.removeListener('disconnect', disconnect)
136
+ disconnect = undefined
137
+ }
138
+ if (!connect) {
139
+ connect = this.onConnect.bind(this)
140
+ provider.on('connect', connect as Listener)
141
+ }
102
142
 
103
143
  sdk.terminate()
104
144
 
@@ -275,11 +315,21 @@ export function metaMask(parameters: MetaMaskParameters = {}) {
275
315
  config.emitter.emit('connect', { accounts, chainId })
276
316
 
277
317
  const provider = await this.getProvider()
278
- if (provider) {
279
- provider.removeListener('connect', this.onConnect.bind(this))
280
- provider.on('accountsChanged', this.onAccountsChanged.bind(this) as any)
281
- provider.on('chainChanged', this.onChainChanged as any)
282
- provider.on('disconnect', this.onDisconnect.bind(this) as any)
318
+ if (connect) {
319
+ provider.removeListener('connect', connect)
320
+ connect = undefined
321
+ }
322
+ if (!accountsChanged) {
323
+ accountsChanged = this.onAccountsChanged.bind(this)
324
+ provider.on('accountsChanged', accountsChanged as Listener)
325
+ }
326
+ if (!chainChanged) {
327
+ chainChanged = this.onChainChanged.bind(this)
328
+ provider.on('chainChanged', chainChanged as Listener)
329
+ }
330
+ if (!disconnect) {
331
+ disconnect = this.onDisconnect.bind(this)
332
+ provider.on('disconnect', disconnect as Listener)
283
333
  }
284
334
  },
285
335
  async onDisconnect(error) {
@@ -302,13 +352,26 @@ export function metaMask(parameters: MetaMaskParameters = {}) {
302
352
  // actually disconnected and we don't need to simulate it.
303
353
  config.emitter.emit('disconnect')
304
354
 
305
- provider.removeListener(
306
- 'accountsChanged',
307
- this.onAccountsChanged.bind(this),
308
- )
309
- provider.removeListener('chainChanged', this.onChainChanged)
310
- provider.removeListener('disconnect', this.onDisconnect.bind(this))
311
- provider.on('connect', this.onConnect.bind(this) as any)
355
+ // Manage EIP-1193 event listeners
356
+ if (!accountsChanged) {
357
+ accountsChanged = this.onAccountsChanged.bind(this)
358
+ provider.on('accountsChanged', accountsChanged as Listener)
359
+ }
360
+ if (chainChanged) {
361
+ provider.removeListener('chainChanged', chainChanged)
362
+ chainChanged = undefined
363
+ }
364
+ if (disconnect) {
365
+ provider.removeListener('disconnect', disconnect)
366
+ disconnect = undefined
367
+ }
368
+ if (!connect) {
369
+ connect = this.onConnect.bind(this)
370
+ provider.on('connect', connect as Listener)
371
+ }
372
+ },
373
+ onDisplayUri(uri) {
374
+ config.emitter.emit('message', { type: 'display_uri', data: uri })
312
375
  },
313
376
  }))
314
377
  }
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const version = '5.0.15'
1
+ export const version = '5.0.17'