@farcaster/miniapp-wagmi-connector 1.1.0 → 2.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/connector.d.ts +150 -8
- package/dist/connector.js +12 -3
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +5 -5
- package/src/connector.ts +23 -4
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@farcaster/miniapp-wagmi-connector",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
|
-
"url": "https://github.com/farcasterxyz/
|
|
7
|
+
"url": "https://github.com/farcasterxyz/miniapps.git",
|
|
8
8
|
"directory": "packages/miniapp-wagmi-connector"
|
|
9
9
|
},
|
|
10
10
|
"type": "module",
|
|
@@ -17,14 +17,14 @@
|
|
|
17
17
|
"@wagmi/core": "^2.16.3",
|
|
18
18
|
"typescript": "^5.8.3",
|
|
19
19
|
"viem": "^2.21.57",
|
|
20
|
-
"@farcaster/miniapp-sdk": "0.
|
|
21
|
-
"@farcaster/tsconfig": "0.1.
|
|
20
|
+
"@farcaster/miniapp-sdk": "0.3.0",
|
|
21
|
+
"@farcaster/tsconfig": "0.1.1"
|
|
22
22
|
},
|
|
23
23
|
"publishConfig": {
|
|
24
24
|
"access": "public"
|
|
25
25
|
},
|
|
26
26
|
"peerDependencies": {
|
|
27
|
-
"@farcaster/miniapp-sdk": "^0.
|
|
27
|
+
"@farcaster/miniapp-sdk": "^0.3.0",
|
|
28
28
|
"@wagmi/core": "^2.14.1",
|
|
29
29
|
"viem": "^2.21.55"
|
|
30
30
|
},
|
package/src/connector.ts
CHANGED
|
@@ -8,10 +8,28 @@ import { fromHex, getAddress, numberToHex, SwitchChainError } from 'viem'
|
|
|
8
8
|
|
|
9
9
|
farcasterMiniApp.type = 'farcasterMiniApp'
|
|
10
10
|
|
|
11
|
-
let accountsChanged:
|
|
11
|
+
let accountsChanged: ((accounts: readonly `0x${string}`[]) => void) | undefined
|
|
12
12
|
let chainChanged: Connector['onChainChanged'] | undefined
|
|
13
13
|
let disconnect: Connector['onDisconnect'] | undefined
|
|
14
14
|
|
|
15
|
+
type MiniAppProvider = typeof MiniAppSDK.wallet.ethProvider
|
|
16
|
+
type MiniAppProviderWithEvents = MiniAppProvider & {
|
|
17
|
+
on: NonNullable<MiniAppProvider['on']>
|
|
18
|
+
removeListener: NonNullable<MiniAppProvider['removeListener']>
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
function assertProviderHasEventEmitterMethods(
|
|
22
|
+
provider: MiniAppProvider,
|
|
23
|
+
): asserts provider is MiniAppProviderWithEvents {
|
|
24
|
+
if (typeof provider.on !== 'function') {
|
|
25
|
+
throw new Error('MiniApp provider does not support event listeners.')
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
if (typeof provider.removeListener !== 'function') {
|
|
29
|
+
throw new Error('MiniApp provider does not support removing listeners.')
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
15
33
|
export function farcasterMiniApp() {
|
|
16
34
|
return createConnector<typeof MiniAppSDK.wallet.ethProvider>((config) => ({
|
|
17
35
|
id: 'farcaster',
|
|
@@ -22,6 +40,7 @@ export function farcasterMiniApp() {
|
|
|
22
40
|
|
|
23
41
|
async connect({ chainId } = {}) {
|
|
24
42
|
const provider = await this.getProvider()
|
|
43
|
+
assertProviderHasEventEmitterMethods(provider)
|
|
25
44
|
const accounts = await provider.request({
|
|
26
45
|
method: 'eth_requestAccounts',
|
|
27
46
|
})
|
|
@@ -38,8 +57,8 @@ export function farcasterMiniApp() {
|
|
|
38
57
|
if (!targetChainId) throw new Error('No chains found on connector.')
|
|
39
58
|
|
|
40
59
|
if (!accountsChanged) {
|
|
41
|
-
|
|
42
|
-
|
|
60
|
+
const onAccountsChanged = this.onAccountsChanged.bind(this)
|
|
61
|
+
accountsChanged = (accounts) => onAccountsChanged([...accounts])
|
|
43
62
|
provider.on('accountsChanged', accountsChanged)
|
|
44
63
|
}
|
|
45
64
|
if (!chainChanged) {
|
|
@@ -64,9 +83,9 @@ export function farcasterMiniApp() {
|
|
|
64
83
|
},
|
|
65
84
|
async disconnect() {
|
|
66
85
|
const provider = await this.getProvider()
|
|
86
|
+
assertProviderHasEventEmitterMethods(provider)
|
|
67
87
|
|
|
68
88
|
if (accountsChanged) {
|
|
69
|
-
// @ts-expect-error - provider type is stricter
|
|
70
89
|
provider.removeListener('accountsChanged', accountsChanged)
|
|
71
90
|
accountsChanged = undefined
|
|
72
91
|
}
|