@wagmi/connectors 4.0.0-alpha.0 → 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.
- package/dist/esm/injected.js +25 -25
- package/dist/esm/injected.js.map +1 -1
- package/dist/esm/tsconfig.build.tsbuildinfo +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/version.js.map +1 -1
- package/dist/types/injected.d.ts +12 -13
- package/dist/types/injected.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/dist/types/version.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/injected.ts +36 -44
- package/src/version.ts +1 -1
package/dist/esm/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const version = '4.0.0
|
|
1
|
+
export const version = '4.0.0';
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
package/dist/esm/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAA"}
|
package/dist/types/injected.d.ts
CHANGED
|
@@ -11,7 +11,7 @@ export type InjectedParameters = {
|
|
|
11
11
|
/**
|
|
12
12
|
* [EIP-1193](https://eips.ethereum.org/EIPS/eip-1193) Ethereum Provider to target
|
|
13
13
|
*/
|
|
14
|
-
|
|
14
|
+
wallet?: WalletId | (() => (WalletMap[WalletId] & {
|
|
15
15
|
id: string;
|
|
16
16
|
}) | undefined) | undefined;
|
|
17
17
|
};
|
|
@@ -274,7 +274,7 @@ export declare function injected(parameters?: InjectedParameters): import("@wagm
|
|
|
274
274
|
isImToken?: true | undefined;
|
|
275
275
|
isKuCoinWallet?: true | undefined;
|
|
276
276
|
isMathWallet?: true | undefined;
|
|
277
|
-
isMetaMask
|
|
277
|
+
isMetaMask: true;
|
|
278
278
|
isOkxWallet?: true | undefined;
|
|
279
279
|
isOKExWallet?: true | undefined;
|
|
280
280
|
isOneInchAndroidWallet?: true | undefined;
|
|
@@ -293,9 +293,9 @@ export declare function injected(parameters?: InjectedParameters): import("@wagm
|
|
|
293
293
|
isXDEFI?: true | undefined;
|
|
294
294
|
isZerion?: true | undefined;
|
|
295
295
|
providers?: any[] | undefined;
|
|
296
|
-
_events
|
|
296
|
+
_events: {
|
|
297
297
|
connect?: (() => void) | undefined;
|
|
298
|
-
}
|
|
298
|
+
};
|
|
299
299
|
_state?: {
|
|
300
300
|
accounts?: string[] | undefined;
|
|
301
301
|
initialized?: boolean | undefined;
|
|
@@ -308,15 +308,13 @@ export declare function injected(parameters?: InjectedParameters): import("@wagm
|
|
|
308
308
|
}, {
|
|
309
309
|
[x: `${string}.connected`]: true;
|
|
310
310
|
}>;
|
|
311
|
-
export type
|
|
312
|
-
type
|
|
311
|
+
export type WalletId = 'coinbaseWallet' | 'metaMask' | 'phantom' | 'rainbow';
|
|
312
|
+
type Wallet = {
|
|
313
313
|
name: string;
|
|
314
|
-
provider: keyof WindowProviderFlags | ((window?: Window
|
|
315
|
-
features?: readonly 'wallet_requestPermissions'[]
|
|
316
|
-
};
|
|
317
|
-
type TargetMap = {
|
|
318
|
-
[_ in TargetId]?: Target | undefined;
|
|
314
|
+
provider: keyof WindowProviderFlags | ((window?: Window) => WindowProvider | undefined);
|
|
315
|
+
features?: readonly 'wallet_requestPermissions'[];
|
|
319
316
|
};
|
|
317
|
+
type WalletMap = Record<WalletId, Wallet>;
|
|
320
318
|
type WindowProviderFlags = {
|
|
321
319
|
isApexWallet?: true | undefined;
|
|
322
320
|
isAvalanche?: true | undefined;
|
|
@@ -358,10 +356,11 @@ type WindowProviderFlags = {
|
|
|
358
356
|
};
|
|
359
357
|
type WindowProvider = Evaluate<EIP1193Provider & WindowProviderFlags & {
|
|
360
358
|
providers?: WindowProvider[] | undefined;
|
|
359
|
+
isMetaMask: true;
|
|
361
360
|
/** Only exists in MetaMask as of 2022/04/03 */
|
|
362
|
-
_events
|
|
361
|
+
_events: {
|
|
363
362
|
connect?: (() => void) | undefined;
|
|
364
|
-
}
|
|
363
|
+
};
|
|
365
364
|
/** Only exists in MetaMask as of 2022/04/03 */
|
|
366
365
|
_state?: {
|
|
367
366
|
accounts?: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"injected.d.ts","sourceRoot":"","sources":["../../src/injected.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,mBAAmB,EAQzB,MAAM,MAAM,CAAA;AAEb,MAAM,MAAM,kBAAkB,GAAG;IAC/B;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACpC,wBAAwB,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAA;IACvD;;OAEG;IACH,MAAM,CAAC,EACH,QAAQ,GACR,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,SAAS,CAAC,GAC1D,SAAS,CAAA;CACd,CAAA;
|
|
1
|
+
{"version":3,"file":"injected.d.ts","sourceRoot":"","sources":["../../src/injected.ts"],"names":[],"mappings":"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"}
|
package/dist/types/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const version = "4.0.0
|
|
1
|
+
export declare const version = "4.0.0";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,UAAU,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wagmi/connectors",
|
|
3
3
|
"description": "A collection of connectors for wagmi",
|
|
4
|
-
"version": "4.0.0
|
|
4
|
+
"version": "4.0.0",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -28,9 +28,9 @@
|
|
|
28
28
|
"./package.json": "./package.json"
|
|
29
29
|
},
|
|
30
30
|
"peerDependencies": {
|
|
31
|
+
"@wagmi/core": "^2",
|
|
31
32
|
"typescript": ">=5",
|
|
32
|
-
"viem": "
|
|
33
|
-
"@wagmi/core": "2.0.0-alpha.0"
|
|
33
|
+
"viem": "*"
|
|
34
34
|
},
|
|
35
35
|
"peerDependenciesMeta": {
|
|
36
36
|
"typescript": {
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"devDependencies": {
|
|
49
49
|
"lokijs": "^1.5.12",
|
|
50
50
|
"msw": "^1.3.0",
|
|
51
|
-
"@wagmi/core": "2.0.0
|
|
51
|
+
"@wagmi/core": "2.0.0"
|
|
52
52
|
},
|
|
53
53
|
"contributors": [
|
|
54
54
|
"jxom.eth <j@wagmi.sh>",
|
package/src/injected.ts
CHANGED
|
@@ -29,13 +29,13 @@ export type InjectedParameters = {
|
|
|
29
29
|
/**
|
|
30
30
|
* [EIP-1193](https://eips.ethereum.org/EIPS/eip-1193) Ethereum Provider to target
|
|
31
31
|
*/
|
|
32
|
-
|
|
33
|
-
|
|
|
34
|
-
| (() => (
|
|
32
|
+
wallet?:
|
|
33
|
+
| WalletId
|
|
34
|
+
| (() => (WalletMap[WalletId] & { id: string }) | undefined)
|
|
35
35
|
| undefined
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
const
|
|
38
|
+
const walletMap = {
|
|
39
39
|
coinbaseWallet: {
|
|
40
40
|
name: 'Coinbase Wallet',
|
|
41
41
|
provider(window) {
|
|
@@ -88,31 +88,29 @@ const targetMap = {
|
|
|
88
88
|
return findProvider(window, 'isPhantom')
|
|
89
89
|
},
|
|
90
90
|
},
|
|
91
|
-
|
|
91
|
+
rainbow: {
|
|
92
|
+
name: 'Rainbow',
|
|
93
|
+
provider: 'isRainbow',
|
|
94
|
+
},
|
|
95
|
+
} as const satisfies WalletMap
|
|
92
96
|
|
|
93
97
|
export function injected(parameters: InjectedParameters = {}) {
|
|
94
98
|
const shimDisconnect = parameters.shimDisconnect ?? true
|
|
95
99
|
const unstable_shimAsyncInject = parameters.unstable_shimAsyncInject
|
|
96
100
|
|
|
97
|
-
function getWindowProvider():
|
|
98
|
-
const
|
|
99
|
-
if (typeof
|
|
100
|
-
const result =
|
|
101
|
+
function getWindowProvider(): WalletMap[WalletId] & { id: string } {
|
|
102
|
+
const wallet = parameters.wallet
|
|
103
|
+
if (typeof wallet === 'function') {
|
|
104
|
+
const result = wallet()
|
|
101
105
|
if (result) return result
|
|
102
106
|
}
|
|
103
|
-
if (typeof
|
|
104
|
-
return {
|
|
105
|
-
...(targetMap[target as keyof typeof targetMap] ?? {
|
|
106
|
-
name: `${target[0]!.toUpperCase()}${target.slice(1)}`,
|
|
107
|
-
provider: `is${target[0]!.toUpperCase()}${target.slice(1)}`,
|
|
108
|
-
}),
|
|
109
|
-
id: target,
|
|
110
|
-
}
|
|
107
|
+
if (typeof wallet === 'string') return { ...walletMap[wallet], id: wallet }
|
|
111
108
|
return {
|
|
112
109
|
id: 'injected',
|
|
113
110
|
name: 'Injected',
|
|
114
|
-
provider(window) {
|
|
115
|
-
|
|
111
|
+
provider(window?: Window) {
|
|
112
|
+
if (window?.ethereum) return window.ethereum
|
|
113
|
+
return undefined
|
|
116
114
|
},
|
|
117
115
|
}
|
|
118
116
|
}
|
|
@@ -132,8 +130,8 @@ export function injected(parameters: InjectedParameters = {}) {
|
|
|
132
130
|
},
|
|
133
131
|
async setup() {
|
|
134
132
|
const provider = await this.getProvider()
|
|
135
|
-
// Only start listening for events if `
|
|
136
|
-
if (provider && parameters.
|
|
133
|
+
// Only start listening for events if `wallet` is set, otherwise `injected()` will also receive events
|
|
134
|
+
if (provider && parameters.wallet) {
|
|
137
135
|
provider.on('accountsChanged', this.onAccountsChanged.bind(this))
|
|
138
136
|
provider.on('connect', this.onConnect.bind(this))
|
|
139
137
|
}
|
|
@@ -143,7 +141,7 @@ export function injected(parameters: InjectedParameters = {}) {
|
|
|
143
141
|
if (!provider) throw new ProviderNotFoundError()
|
|
144
142
|
|
|
145
143
|
try {
|
|
146
|
-
// Attempt to show select prompt with `wallet_requestPermissions` when
|
|
144
|
+
// Attempt to show wallet select prompt with `wallet_requestPermissions` when
|
|
147
145
|
// `shimDisconnect` is active and account is in disconnected state (flag in storage)
|
|
148
146
|
const canSelectAccount = getWindowProvider().features?.includes(
|
|
149
147
|
'wallet_requestPermissions',
|
|
@@ -157,7 +155,7 @@ export function injected(parameters: InjectedParameters = {}) {
|
|
|
157
155
|
accounts = await this.getAccounts().catch(() => null)
|
|
158
156
|
const isAuthorized = !!accounts?.length
|
|
159
157
|
if (isAuthorized)
|
|
160
|
-
// Attempt to show another prompt for selecting
|
|
158
|
+
// Attempt to show another prompt for selecting wallet if already connected
|
|
161
159
|
try {
|
|
162
160
|
const permissions = await provider.request({
|
|
163
161
|
method: 'wallet_requestPermissions',
|
|
@@ -169,7 +167,7 @@ export function injected(parameters: InjectedParameters = {}) {
|
|
|
169
167
|
// Only bubble up error if user rejects request
|
|
170
168
|
if ((error as ProviderRpcError).code === 4_001)
|
|
171
169
|
throw new UserRejectedRequestError(error as RpcError)
|
|
172
|
-
// Or
|
|
170
|
+
// Or wallet is already open
|
|
173
171
|
if (
|
|
174
172
|
(error as RpcError).code ===
|
|
175
173
|
new ResourceUnavailableRpcError(error as Error).code
|
|
@@ -199,7 +197,7 @@ export function injected(parameters: InjectedParameters = {}) {
|
|
|
199
197
|
currentChainId = chain?.id ?? currentChainId
|
|
200
198
|
}
|
|
201
199
|
|
|
202
|
-
// Add shim to storage signalling
|
|
200
|
+
// Add shim to storage signalling wallet is connected
|
|
203
201
|
if (shimDisconnect)
|
|
204
202
|
await config.storage?.setItem(`${this.id}.connected`, true)
|
|
205
203
|
|
|
@@ -224,7 +222,7 @@ export function injected(parameters: InjectedParameters = {}) {
|
|
|
224
222
|
provider.removeListener('disconnect', this.onDisconnect.bind(this))
|
|
225
223
|
provider.on('connect', this.onConnect.bind(this))
|
|
226
224
|
|
|
227
|
-
// Remove shim signalling
|
|
225
|
+
// Remove shim signalling wallet is disconnected
|
|
228
226
|
if (shimDisconnect)
|
|
229
227
|
await config.storage?.removeItem(`${this.id}.connected`)
|
|
230
228
|
},
|
|
@@ -251,7 +249,7 @@ export function injected(parameters: InjectedParameters = {}) {
|
|
|
251
249
|
try {
|
|
252
250
|
const isDisconnected =
|
|
253
251
|
shimDisconnect &&
|
|
254
|
-
// If shim does not exist in storage,
|
|
252
|
+
// If shim does not exist in storage, wallet is disconnected
|
|
255
253
|
!(await config.storage?.getItem(`${this.id}.connected`))
|
|
256
254
|
if (isDisconnected) return false
|
|
257
255
|
|
|
@@ -405,7 +403,7 @@ export function injected(parameters: InjectedParameters = {}) {
|
|
|
405
403
|
provider.on('disconnect', this.onDisconnect.bind(this))
|
|
406
404
|
}
|
|
407
405
|
|
|
408
|
-
// Add shim to storage signalling
|
|
406
|
+
// Add shim to storage signalling wallet is connected
|
|
409
407
|
if (shimDisconnect)
|
|
410
408
|
await config.storage?.setItem(`${this.id}.connected`, true)
|
|
411
409
|
},
|
|
@@ -436,22 +434,15 @@ export function injected(parameters: InjectedParameters = {}) {
|
|
|
436
434
|
}))
|
|
437
435
|
}
|
|
438
436
|
|
|
439
|
-
export type
|
|
440
|
-
|
|
441
|
-
> extends `is${infer name}`
|
|
442
|
-
? name extends `${infer char}${infer rest}`
|
|
443
|
-
? `${Lowercase<char>}${rest}`
|
|
444
|
-
: never
|
|
445
|
-
: never
|
|
446
|
-
|
|
447
|
-
type Target = {
|
|
437
|
+
export type WalletId = 'coinbaseWallet' | 'metaMask' | 'phantom' | 'rainbow'
|
|
438
|
+
type Wallet = {
|
|
448
439
|
name: string
|
|
449
440
|
provider:
|
|
450
441
|
| keyof WindowProviderFlags
|
|
451
|
-
| ((window?: Window
|
|
452
|
-
features?: readonly 'wallet_requestPermissions'[]
|
|
442
|
+
| ((window?: Window) => WindowProvider | undefined)
|
|
443
|
+
features?: readonly 'wallet_requestPermissions'[]
|
|
453
444
|
}
|
|
454
|
-
type
|
|
445
|
+
type WalletMap = Record<WalletId, Wallet>
|
|
455
446
|
|
|
456
447
|
type WindowProviderFlags = {
|
|
457
448
|
isApexWallet?: true | undefined
|
|
@@ -497,8 +488,9 @@ type WindowProvider = Evaluate<
|
|
|
497
488
|
EIP1193Provider &
|
|
498
489
|
WindowProviderFlags & {
|
|
499
490
|
providers?: WindowProvider[] | undefined
|
|
491
|
+
isMetaMask: true
|
|
500
492
|
/** Only exists in MetaMask as of 2022/04/03 */
|
|
501
|
-
_events
|
|
493
|
+
_events: { connect?: (() => void) | undefined }
|
|
502
494
|
/** Only exists in MetaMask as of 2022/04/03 */
|
|
503
495
|
_state?:
|
|
504
496
|
| {
|
|
@@ -524,12 +516,12 @@ function findProvider(
|
|
|
524
516
|
| keyof WindowProviderFlags
|
|
525
517
|
| ((provider: WindowProvider) => boolean),
|
|
526
518
|
) {
|
|
527
|
-
function
|
|
519
|
+
function condition_(provider: WindowProvider) {
|
|
528
520
|
if (typeof condition === 'function') return condition(provider)
|
|
529
521
|
return provider[condition]
|
|
530
522
|
}
|
|
531
523
|
if (window?.ethereum?.providers)
|
|
532
|
-
return window.ethereum.providers.find((provider) =>
|
|
533
|
-
if (window?.ethereum &&
|
|
524
|
+
return window.ethereum.providers.find((provider) => condition_(provider))
|
|
525
|
+
if (window?.ethereum && condition_(window.ethereum)) return window.ethereum
|
|
534
526
|
return undefined
|
|
535
527
|
}
|
package/src/version.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const version = '4.0.0
|
|
1
|
+
export const version = '4.0.0'
|