@meshconnect/uwc-core 0.2.13 → 0.2.15
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/services/connection-service.d.ts.map +1 -1
- package/dist/services/connection-service.js +1 -1
- package/dist/services/connection-service.js.map +1 -1
- package/package.json +5 -5
- package/src/managers/event-manager.test.ts +74 -0
- package/src/managers/session-manager.test.ts +119 -0
- package/src/services/connection-service.test.ts +238 -0
- package/src/services/connection-service.ts +4 -1
- package/src/services/network-switch-service.test.ts +187 -0
- package/src/services/signature-service.test.ts +108 -0
- package/src/services/transaction-service.test.ts +163 -0
- package/src/universal-wallet-connector.test.ts +428 -0
- package/src/utils/network-rpc-utils.test.ts +329 -0
- package/dist/connection-manager.d.ts +0 -18
- package/dist/connection-manager.d.ts.map +0 -1
- package/dist/connection-manager.js +0 -54
- package/dist/connection-manager.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection-service.d.ts","sourceRoot":"","sources":["../../src/services/connection-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,SAAS,EACT,cAAc,EACd,cAAc,EACd,SAAS,EAMV,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE7D,qBAAa,iBAAiB;IAI1B,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,sBAAsB;IAC9B,OAAO,CAAC,YAAY;IARtB,OAAO,CAAC,eAAe,CAAyB;gBAGtC,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,EAAE,cAAc,EAAE,EACzB,cAAc,EAAE,cAAc,EAC9B,UAAU,EAAE,GAAG,CAAC,cAAc,EAAE,SAAS,CAAC,EAC1C,sBAAsB,EAAE,OAAO,EAC/B,YAAY,EAAE,YAAY;IAG9B,OAAO,CACX,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,SAAS,GACpB,OAAO,CAAC,IAAI,CAAC;IAiFhB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,kBAAkB;IAiC1B,OAAO,CAAC,2BAA2B;YA6CrB,qBAAqB;
|
|
1
|
+
{"version":3,"file":"connection-service.d.ts","sourceRoot":"","sources":["../../src/services/connection-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,SAAS,EACT,cAAc,EACd,cAAc,EACd,SAAS,EAMV,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE7D,qBAAa,iBAAiB;IAI1B,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,sBAAsB;IAC9B,OAAO,CAAC,YAAY;IARtB,OAAO,CAAC,eAAe,CAAyB;gBAGtC,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,EAAE,cAAc,EAAE,EACzB,cAAc,EAAE,cAAc,EAC9B,UAAU,EAAE,GAAG,CAAC,cAAc,EAAE,SAAS,CAAC,EAC1C,sBAAsB,EAAE,OAAO,EAC/B,YAAY,EAAE,YAAY;IAG9B,OAAO,CACX,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,SAAS,GACpB,OAAO,CAAC,IAAI,CAAC;IAiFhB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,kBAAkB;IAiC1B,OAAO,CAAC,2BAA2B;YA6CrB,qBAAqB;IAmC7B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBjC,gBAAgB,IAAI,MAAM,GAAG,SAAS;IAkBtC,UAAU,IAAI,cAAc,EAAE;IAI9B,aAAa,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,IAAI;IAI9C,WAAW,IAAI,OAAO,EAAE;CAGzB"}
|
|
@@ -147,7 +147,7 @@ export class ConnectionService {
|
|
|
147
147
|
typeof this.activeConnector.getWalletCapabilities === 'function') {
|
|
148
148
|
let capabilities;
|
|
149
149
|
try {
|
|
150
|
-
capabilities = await this.activeConnector.getWalletCapabilities(address);
|
|
150
|
+
capabilities = await this.activeConnector.getWalletCapabilities(address, this.networks);
|
|
151
151
|
}
|
|
152
152
|
catch {
|
|
153
153
|
capabilities = {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection-service.js","sourceRoot":"","sources":["../../src/services/connection-service.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"connection-service.js","sourceRoot":"","sources":["../../src/services/connection-service.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@meshconnect/uwc-core",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.15",
|
|
4
4
|
"description": "Core functionality for Universal Wallet Connector",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -16,10 +16,10 @@
|
|
|
16
16
|
"src"
|
|
17
17
|
],
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@meshconnect/uwc-
|
|
20
|
-
"@meshconnect/uwc-
|
|
21
|
-
"@meshconnect/uwc-
|
|
22
|
-
"@meshconnect/uwc-
|
|
19
|
+
"@meshconnect/uwc-types": "0.2.7",
|
|
20
|
+
"@meshconnect/uwc-injected-connector": "0.2.10",
|
|
21
|
+
"@meshconnect/uwc-wallet-connect-connector": "0.2.10",
|
|
22
|
+
"@meshconnect/uwc-bridge-child": "0.0.3"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
25
|
"typescript": "^5.9.2"
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { describe, it, expect, beforeEach } from 'vitest'
|
|
2
|
+
import { EventManager } from './event-manager'
|
|
3
|
+
|
|
4
|
+
describe('EventManager', () => {
|
|
5
|
+
let eventManager: EventManager
|
|
6
|
+
|
|
7
|
+
beforeEach(() => {
|
|
8
|
+
eventManager = new EventManager()
|
|
9
|
+
})
|
|
10
|
+
it('should subscribe and notify listeners', () => {
|
|
11
|
+
let eventReceived = false
|
|
12
|
+
|
|
13
|
+
const unsubscribe = eventManager.subscribe(() => {
|
|
14
|
+
eventReceived = true
|
|
15
|
+
})
|
|
16
|
+
|
|
17
|
+
eventManager.notify()
|
|
18
|
+
|
|
19
|
+
expect(eventReceived).toBe(true)
|
|
20
|
+
|
|
21
|
+
unsubscribe()
|
|
22
|
+
eventReceived = false
|
|
23
|
+
|
|
24
|
+
eventManager.notify()
|
|
25
|
+
|
|
26
|
+
expect(eventReceived).toBe(false)
|
|
27
|
+
})
|
|
28
|
+
|
|
29
|
+
it('should handle multiple subscribers', () => {
|
|
30
|
+
let subscriber1Called = false
|
|
31
|
+
let subscriber2Called = false
|
|
32
|
+
|
|
33
|
+
const unsubscribe1 = eventManager.subscribe(() => {
|
|
34
|
+
subscriber1Called = true
|
|
35
|
+
})
|
|
36
|
+
|
|
37
|
+
const unsubscribe2 = eventManager.subscribe(() => {
|
|
38
|
+
subscriber2Called = true
|
|
39
|
+
})
|
|
40
|
+
|
|
41
|
+
eventManager.notify()
|
|
42
|
+
|
|
43
|
+
expect(subscriber1Called).toBe(true)
|
|
44
|
+
expect(subscriber2Called).toBe(true)
|
|
45
|
+
|
|
46
|
+
unsubscribe1()
|
|
47
|
+
unsubscribe2()
|
|
48
|
+
})
|
|
49
|
+
|
|
50
|
+
it('should track listener count', () => {
|
|
51
|
+
expect(eventManager.getListenerCount()).toBe(0)
|
|
52
|
+
|
|
53
|
+
const unsubscribe1 = eventManager.subscribe(() => {})
|
|
54
|
+
expect(eventManager.getListenerCount()).toBe(1)
|
|
55
|
+
|
|
56
|
+
const unsubscribe2 = eventManager.subscribe(() => {})
|
|
57
|
+
expect(eventManager.getListenerCount()).toBe(2)
|
|
58
|
+
|
|
59
|
+
unsubscribe1()
|
|
60
|
+
expect(eventManager.getListenerCount()).toBe(1)
|
|
61
|
+
|
|
62
|
+
unsubscribe2()
|
|
63
|
+
expect(eventManager.getListenerCount()).toBe(0)
|
|
64
|
+
})
|
|
65
|
+
|
|
66
|
+
it('should clear all listeners', () => {
|
|
67
|
+
eventManager.subscribe(() => {})
|
|
68
|
+
eventManager.subscribe(() => {})
|
|
69
|
+
expect(eventManager.getListenerCount()).toBe(2)
|
|
70
|
+
|
|
71
|
+
eventManager.clearAllListeners()
|
|
72
|
+
expect(eventManager.getListenerCount()).toBe(0)
|
|
73
|
+
})
|
|
74
|
+
})
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { describe, it, expect, beforeEach } from 'vitest'
|
|
2
|
+
import { SessionManager } from './session-manager'
|
|
3
|
+
import type { Network } from '../../../types/src'
|
|
4
|
+
|
|
5
|
+
describe('SessionManager', () => {
|
|
6
|
+
let sessionManager: SessionManager
|
|
7
|
+
|
|
8
|
+
beforeEach(() => {
|
|
9
|
+
sessionManager = new SessionManager()
|
|
10
|
+
})
|
|
11
|
+
|
|
12
|
+
it('should initialize with empty session', () => {
|
|
13
|
+
const session = sessionManager.getSession()
|
|
14
|
+
expect(session.connectionMode).toBeNull()
|
|
15
|
+
expect(session.activeWallet).toBeNull()
|
|
16
|
+
expect(session.activeNetwork).toBeNull()
|
|
17
|
+
expect(session.activeAddress).toBeNull()
|
|
18
|
+
expect(session.availableNetworks).toEqual([])
|
|
19
|
+
expect(session.availableAddresses).toEqual([])
|
|
20
|
+
})
|
|
21
|
+
|
|
22
|
+
it('should update session correctly', () => {
|
|
23
|
+
const updates = {
|
|
24
|
+
connectionMode: 'injected' as const,
|
|
25
|
+
activeAddress: '0x1234567890abcdef',
|
|
26
|
+
availableNetworks: [
|
|
27
|
+
{
|
|
28
|
+
id: 'eip155:1',
|
|
29
|
+
internalId: 1,
|
|
30
|
+
name: 'Ethereum Mainnet',
|
|
31
|
+
namespace: 'eip155',
|
|
32
|
+
logoUrl:
|
|
33
|
+
'https://ethereum.org/static/6b935ac0e619424734bc5a3b11026273/6ed5f/eth-diamond-black.png',
|
|
34
|
+
rpcUrls: {
|
|
35
|
+
default: {
|
|
36
|
+
http: ['https://mainnet.infura.io/v3/test']
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
blockExplorers: {
|
|
40
|
+
default: {
|
|
41
|
+
name: 'Etherscan',
|
|
42
|
+
url: 'https://etherscan.io'
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
networkType: 'evm',
|
|
46
|
+
nativeCurrency: {
|
|
47
|
+
name: 'Ether',
|
|
48
|
+
symbol: 'ETH',
|
|
49
|
+
decimals: 18
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
]
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
sessionManager.updateSession(updates)
|
|
56
|
+
const session = sessionManager.getSession()
|
|
57
|
+
|
|
58
|
+
expect(session.connectionMode).toBe('injected')
|
|
59
|
+
expect(session.activeAddress).toBe('0x1234567890abcdef')
|
|
60
|
+
expect(session.availableNetworks).toHaveLength(1)
|
|
61
|
+
expect(session.availableNetworks[0].name).toBe('Ethereum Mainnet')
|
|
62
|
+
})
|
|
63
|
+
|
|
64
|
+
it('should clear session correctly', () => {
|
|
65
|
+
// First update the session
|
|
66
|
+
sessionManager.updateSession({
|
|
67
|
+
connectionMode: 'injected',
|
|
68
|
+
activeAddress: '0x1234567890abcdef'
|
|
69
|
+
})
|
|
70
|
+
|
|
71
|
+
// Then clear it
|
|
72
|
+
sessionManager.clearSession()
|
|
73
|
+
const session = sessionManager.getSession()
|
|
74
|
+
|
|
75
|
+
expect(session.connectionMode).toBeNull()
|
|
76
|
+
expect(session.activeWallet).toBeNull()
|
|
77
|
+
expect(session.activeNetwork).toBeNull()
|
|
78
|
+
expect(session.activeAddress).toBeNull()
|
|
79
|
+
expect(session.availableNetworks).toEqual([])
|
|
80
|
+
expect(session.availableAddresses).toEqual([])
|
|
81
|
+
})
|
|
82
|
+
|
|
83
|
+
it('should set individual properties', () => {
|
|
84
|
+
const network: Network = {
|
|
85
|
+
id: 'eip155:1',
|
|
86
|
+
internalId: 1,
|
|
87
|
+
name: 'Ethereum Mainnet',
|
|
88
|
+
namespace: 'eip155',
|
|
89
|
+
logoUrl:
|
|
90
|
+
'https://ethereum.org/static/6b935ac0e619424734bc5a3b11026273/6ed5f/eth-diamond-black.png',
|
|
91
|
+
rpcUrls: {
|
|
92
|
+
default: {
|
|
93
|
+
http: ['https://mainnet.infura.io/v3/test']
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
blockExplorers: {
|
|
97
|
+
default: {
|
|
98
|
+
name: 'Etherscan',
|
|
99
|
+
url: 'https://etherscan.io'
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
networkType: 'evm',
|
|
103
|
+
nativeCurrency: {
|
|
104
|
+
name: 'Ether',
|
|
105
|
+
symbol: 'ETH',
|
|
106
|
+
decimals: 18
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
sessionManager.setActiveNetwork(network)
|
|
111
|
+
sessionManager.setActiveAddress('0xabcdef1234567890')
|
|
112
|
+
sessionManager.setAvailableNetworks([network])
|
|
113
|
+
|
|
114
|
+
const session = sessionManager.getSession()
|
|
115
|
+
expect(session.activeNetwork).toEqual(network)
|
|
116
|
+
expect(session.activeAddress).toBe('0xabcdef1234567890')
|
|
117
|
+
expect(session.availableNetworks).toEqual([network])
|
|
118
|
+
})
|
|
119
|
+
})
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
import { describe, it, expect, beforeEach, vi } from 'vitest'
|
|
2
|
+
import { ConnectionService } from './connection-service'
|
|
3
|
+
import { SessionManager } from '../managers/session-manager'
|
|
4
|
+
import { EventManager } from '../managers/event-manager'
|
|
5
|
+
import type {
|
|
6
|
+
Network,
|
|
7
|
+
WalletMetadata,
|
|
8
|
+
ConnectionMode,
|
|
9
|
+
Connector
|
|
10
|
+
} from '../../../types/src'
|
|
11
|
+
|
|
12
|
+
describe('ConnectionService', () => {
|
|
13
|
+
let connectionService: ConnectionService
|
|
14
|
+
let sessionManager: SessionManager
|
|
15
|
+
let eventManager: EventManager
|
|
16
|
+
let mockConnector: Connector
|
|
17
|
+
let networks: Network[]
|
|
18
|
+
let wallets: WalletMetadata[]
|
|
19
|
+
let connectors: Map<ConnectionMode, Connector>
|
|
20
|
+
|
|
21
|
+
beforeEach(() => {
|
|
22
|
+
sessionManager = new SessionManager()
|
|
23
|
+
eventManager = new EventManager()
|
|
24
|
+
|
|
25
|
+
networks = [
|
|
26
|
+
{
|
|
27
|
+
id: 'eip155:1',
|
|
28
|
+
internalId: 1,
|
|
29
|
+
name: 'Ethereum Mainnet',
|
|
30
|
+
namespace: 'eip155',
|
|
31
|
+
logoUrl:
|
|
32
|
+
'https://ethereum.org/static/6b935ac0e619424734bc5a3b11026273/6ed5f/eth-diamond-black.png',
|
|
33
|
+
rpcUrls: {
|
|
34
|
+
default: {
|
|
35
|
+
http: ['https://mainnet.infura.io/v3/test']
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
blockExplorers: {
|
|
39
|
+
default: {
|
|
40
|
+
name: 'Etherscan',
|
|
41
|
+
url: 'https://etherscan.io'
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
networkType: 'evm',
|
|
45
|
+
nativeCurrency: {
|
|
46
|
+
name: 'Ether',
|
|
47
|
+
symbol: 'ETH',
|
|
48
|
+
decimals: 18
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
]
|
|
52
|
+
|
|
53
|
+
wallets = [
|
|
54
|
+
{
|
|
55
|
+
id: 'metamask',
|
|
56
|
+
name: 'MetaMask',
|
|
57
|
+
metadata: {
|
|
58
|
+
icon: 'data:image/svg+xml;base64,test',
|
|
59
|
+
downloadUrl: 'https://metamask.io',
|
|
60
|
+
supportedChains: ['eip155:1']
|
|
61
|
+
},
|
|
62
|
+
extensionInjectedProvider: {} as any,
|
|
63
|
+
walletConnectProvider: {} as any
|
|
64
|
+
}
|
|
65
|
+
]
|
|
66
|
+
|
|
67
|
+
mockConnector = {
|
|
68
|
+
connect: vi.fn(),
|
|
69
|
+
disconnect: vi.fn(),
|
|
70
|
+
signMessage: vi.fn(),
|
|
71
|
+
sendTransaction: vi.fn(),
|
|
72
|
+
switchNetwork: vi.fn()
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
connectors = new Map()
|
|
76
|
+
connectors.set('injected', mockConnector)
|
|
77
|
+
|
|
78
|
+
connectionService = new ConnectionService(
|
|
79
|
+
networks,
|
|
80
|
+
wallets,
|
|
81
|
+
sessionManager,
|
|
82
|
+
connectors,
|
|
83
|
+
false,
|
|
84
|
+
eventManager
|
|
85
|
+
)
|
|
86
|
+
})
|
|
87
|
+
|
|
88
|
+
it('should initialize with provided parameters', () => {
|
|
89
|
+
expect(connectionService).toBeDefined()
|
|
90
|
+
})
|
|
91
|
+
|
|
92
|
+
it('should find wallet by id', () => {
|
|
93
|
+
const wallet = connectionService['findWallet']('metamask')
|
|
94
|
+
expect(wallet).toEqual(wallets[0])
|
|
95
|
+
})
|
|
96
|
+
|
|
97
|
+
it('should throw error for unknown wallet', () => {
|
|
98
|
+
expect(() => {
|
|
99
|
+
connectionService['findWallet']('unknown')
|
|
100
|
+
}).toThrow("Wallet with id 'unknown' not found")
|
|
101
|
+
})
|
|
102
|
+
|
|
103
|
+
it('should validate network exists', () => {
|
|
104
|
+
const mockProvider = {
|
|
105
|
+
supportedNetworkIds: ['eip155:1']
|
|
106
|
+
}
|
|
107
|
+
const network = connectionService['validateAndDetermineNetwork'](
|
|
108
|
+
'eip155:1',
|
|
109
|
+
mockProvider as any
|
|
110
|
+
)
|
|
111
|
+
expect(network).toEqual(networks[0])
|
|
112
|
+
})
|
|
113
|
+
|
|
114
|
+
it('should throw error for unknown network', () => {
|
|
115
|
+
const mockProvider = {
|
|
116
|
+
supportedNetworkIds: ['eip155:1']
|
|
117
|
+
}
|
|
118
|
+
expect(() => {
|
|
119
|
+
connectionService['validateAndDetermineNetwork'](
|
|
120
|
+
'eip155:8453',
|
|
121
|
+
mockProvider as any
|
|
122
|
+
)
|
|
123
|
+
}).toThrow('Network eip155:8453 is not in the configured networks')
|
|
124
|
+
})
|
|
125
|
+
|
|
126
|
+
it('should get connector by mode', () => {
|
|
127
|
+
const connector = connectionService['getConnector']('injected')
|
|
128
|
+
expect(connector).toBe(mockConnector)
|
|
129
|
+
})
|
|
130
|
+
|
|
131
|
+
it('should throw error for unknown connector mode', () => {
|
|
132
|
+
expect(() => {
|
|
133
|
+
connectionService['getConnector']('unknown' as ConnectionMode)
|
|
134
|
+
}).toThrow('No connector found for connection mode: unknown')
|
|
135
|
+
})
|
|
136
|
+
|
|
137
|
+
it('should get provider for injected mode', () => {
|
|
138
|
+
const wallet = wallets[0]
|
|
139
|
+
const provider = connectionService['getProviderForMode'](wallet, 'injected')
|
|
140
|
+
expect(provider).toBeDefined()
|
|
141
|
+
})
|
|
142
|
+
|
|
143
|
+
it('should get provider for walletConnect mode', () => {
|
|
144
|
+
const wallet = wallets[0]
|
|
145
|
+
const provider = connectionService['getProviderForMode'](
|
|
146
|
+
wallet,
|
|
147
|
+
'walletConnect'
|
|
148
|
+
)
|
|
149
|
+
expect(provider).toBeDefined()
|
|
150
|
+
})
|
|
151
|
+
|
|
152
|
+
describe('getWalletCapabilities', () => {
|
|
153
|
+
it('should fetch wallet capabilities successfully', async () => {
|
|
154
|
+
const mockCapabilities = {
|
|
155
|
+
'eip155:1': {
|
|
156
|
+
paymasterService: { supported: true },
|
|
157
|
+
sessionKeys: { supported: false }
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
mockConnector.getWalletCapabilities = vi
|
|
162
|
+
.fn()
|
|
163
|
+
.mockResolvedValue(mockCapabilities)
|
|
164
|
+
connectionService['activeConnector'] = mockConnector
|
|
165
|
+
|
|
166
|
+
const [allCapabilities, networkCapabilities] =
|
|
167
|
+
await connectionService['getWalletCapabilities']('0x123')
|
|
168
|
+
|
|
169
|
+
expect(mockConnector.getWalletCapabilities).toHaveBeenCalledWith(
|
|
170
|
+
'0x123',
|
|
171
|
+
networks
|
|
172
|
+
)
|
|
173
|
+
expect(allCapabilities).toEqual(mockCapabilities)
|
|
174
|
+
expect(networkCapabilities).toEqual(mockCapabilities['eip155:1'])
|
|
175
|
+
})
|
|
176
|
+
|
|
177
|
+
it('should handle getWalletCapabilities error gracefully', async () => {
|
|
178
|
+
mockConnector.getWalletCapabilities = vi
|
|
179
|
+
.fn()
|
|
180
|
+
.mockRejectedValue(new Error('Network error'))
|
|
181
|
+
connectionService['activeConnector'] = mockConnector
|
|
182
|
+
|
|
183
|
+
const [allCapabilities, networkCapabilities] =
|
|
184
|
+
await connectionService['getWalletCapabilities']('0x123')
|
|
185
|
+
|
|
186
|
+
expect(mockConnector.getWalletCapabilities).toHaveBeenCalledWith(
|
|
187
|
+
'0x123',
|
|
188
|
+
networks
|
|
189
|
+
)
|
|
190
|
+
expect(allCapabilities).toEqual({})
|
|
191
|
+
expect(networkCapabilities).toEqual({})
|
|
192
|
+
})
|
|
193
|
+
|
|
194
|
+
it('should filter out unsupported networks from capabilities', async () => {
|
|
195
|
+
const mockCapabilities = {
|
|
196
|
+
'eip155:1': {
|
|
197
|
+
paymasterService: { supported: true }
|
|
198
|
+
},
|
|
199
|
+
'eip155:999': {
|
|
200
|
+
paymasterService: { supported: false }
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
mockConnector.getWalletCapabilities = vi
|
|
205
|
+
.fn()
|
|
206
|
+
.mockResolvedValue(mockCapabilities)
|
|
207
|
+
connectionService['activeConnector'] = mockConnector
|
|
208
|
+
|
|
209
|
+
const [allCapabilities] =
|
|
210
|
+
await connectionService['getWalletCapabilities']('0x123')
|
|
211
|
+
|
|
212
|
+
expect(allCapabilities).toEqual({
|
|
213
|
+
'eip155:1': mockCapabilities['eip155:1']
|
|
214
|
+
})
|
|
215
|
+
expect(allCapabilities['eip155:999']).toBeUndefined()
|
|
216
|
+
})
|
|
217
|
+
|
|
218
|
+
it('should return empty capabilities when connector does not support getWalletCapabilities', async () => {
|
|
219
|
+
connectionService['activeConnector'] = mockConnector
|
|
220
|
+
|
|
221
|
+
const [allCapabilities, networkCapabilities] =
|
|
222
|
+
await connectionService['getWalletCapabilities']('0x123')
|
|
223
|
+
|
|
224
|
+
expect(allCapabilities).toEqual({})
|
|
225
|
+
expect(networkCapabilities).toEqual({})
|
|
226
|
+
})
|
|
227
|
+
|
|
228
|
+
it('should return empty capabilities when no active connector', async () => {
|
|
229
|
+
connectionService['activeConnector'] = null
|
|
230
|
+
|
|
231
|
+
const [allCapabilities, networkCapabilities] =
|
|
232
|
+
await connectionService['getWalletCapabilities']('0x123')
|
|
233
|
+
|
|
234
|
+
expect(allCapabilities).toEqual({})
|
|
235
|
+
expect(networkCapabilities).toEqual({})
|
|
236
|
+
})
|
|
237
|
+
})
|
|
238
|
+
})
|
|
@@ -217,7 +217,10 @@ export class ConnectionService {
|
|
|
217
217
|
) {
|
|
218
218
|
let capabilities: Record<string, EVMCapabilities>
|
|
219
219
|
try {
|
|
220
|
-
capabilities = await this.activeConnector.getWalletCapabilities(
|
|
220
|
+
capabilities = await this.activeConnector.getWalletCapabilities(
|
|
221
|
+
address,
|
|
222
|
+
this.networks
|
|
223
|
+
)
|
|
221
224
|
} catch {
|
|
222
225
|
capabilities = {}
|
|
223
226
|
}
|