@meshconnect/uwc-injected-connector 0.2.13 → 0.3.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.
@@ -2,6 +2,7 @@
2
2
  * EIP-6963: Multi Injected Provider Discovery
3
3
  * https://eips.ethereum.org/EIPS/eip-6963
4
4
  */
5
+ import type { WalletMetadata } from '@meshconnect/uwc-types';
5
6
  export interface EthereumProvider {
6
7
  request: (args: {
7
8
  method: string;
@@ -10,6 +11,19 @@ export interface EthereumProvider {
10
11
  on?: (event: string, handler: (...args: any[]) => void) => void;
11
12
  removeListener?: (event: string, handler: (...args: any[]) => void) => void;
12
13
  }
14
+ /**
15
+ * EIP-1193 compatible provider interface extending the base EthereumProvider
16
+ * This interface includes the standard EIP-1193 methods and properties
17
+ */
18
+ export interface EIP1193Provider extends EthereumProvider {
19
+ request: (args: {
20
+ method: string;
21
+ params?: unknown[];
22
+ }) => Promise<any>;
23
+ on: (event: string, handler: (...args: any[]) => void) => void;
24
+ removeListener: (event: string, handler: (...args: any[]) => void) => void;
25
+ [key: string]: any;
26
+ }
13
27
  export interface EIP6963ProviderInfo {
14
28
  uuid: string;
15
29
  name: string;
@@ -43,5 +57,5 @@ export declare function discoverWallets(): Promise<DetectedWallet[]>;
43
57
  * Gets available wallets by discovering them via EIP-6963
44
58
  * This function can be called multiple times to refresh the list
45
59
  */
46
- export declare function getAvailableWallets(): Promise<DetectedWallet[]>;
60
+ export declare function getAvailableWallets(expectedWallets?: WalletMetadata[]): Promise<DetectedWallet[]>;
47
61
  //# sourceMappingURL=eip6963-discovery.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"eip6963-discovery.d.ts","sourceRoot":"","sources":["../src/eip6963-discovery.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,gBAAgB;IAE/B,OAAO,EAAE,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAA;KAAE,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;IAEvE,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,KAAK,IAAI,CAAA;IAE/D,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,KAAK,IAAI,CAAA;CAC5E;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,mBAAmB,CAAA;IACzB,QAAQ,EAAE,gBAAgB,CAAA;CAC3B;AAED,MAAM,WAAW,4BAA6B,SAAQ,WAAW;IAC/D,IAAI,EAAE,0BAA0B,CAAA;IAChC,MAAM,EAAE,qBAAqB,CAAA;CAC9B;AAED,MAAM,WAAW,2BAA4B,SAAQ,KAAK;IACxD,IAAI,EAAE,yBAAyB,CAAA;CAChC;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,gBAAgB,CAAA;CAC3B;AAuCD;;;GAGG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAoDjE;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAQrE"}
1
+ {"version":3,"file":"eip6963-discovery.d.ts","sourceRoot":"","sources":["../src/eip6963-discovery.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAG5D,MAAM,WAAW,gBAAgB;IAE/B,OAAO,EAAE,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAA;KAAE,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;IAEvE,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,KAAK,IAAI,CAAA;IAE/D,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,KAAK,IAAI,CAAA;CAC5E;AAED;;;GAGG;AACH,MAAM,WAAW,eAAgB,SAAQ,gBAAgB;IAGvD,OAAO,EAAE,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAA;KAAE,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;IAEvE,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,KAAK,IAAI,CAAA;IAE9D,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,KAAK,IAAI,CAAA;IAI1E,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,mBAAmB,CAAA;IACzB,QAAQ,EAAE,gBAAgB,CAAA;CAC3B;AAED,MAAM,WAAW,4BAA6B,SAAQ,WAAW;IAC/D,IAAI,EAAE,0BAA0B,CAAA;IAChC,MAAM,EAAE,qBAAqB,CAAA;CAC9B;AAED,MAAM,WAAW,2BAA4B,SAAQ,KAAK;IACxD,IAAI,EAAE,yBAAyB,CAAA;CAChC;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,gBAAgB,CAAA;CAC3B;AAuCD;;;GAGG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAqDjE;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,eAAe,GAAE,cAAc,EAAO,GACrC,OAAO,CAAC,cAAc,EAAE,CAAC,CAkD3B"}
@@ -2,6 +2,7 @@
2
2
  * EIP-6963: Multi Injected Provider Discovery
3
3
  * https://eips.ethereum.org/EIPS/eip-6963
4
4
  */
5
+ import { v4 as uuid } from 'uuid';
5
6
  /**
6
7
  * Polls for bridge wallets when UWCBridgeInitialized is true
7
8
  * @returns Promise that resolves to an array of detected wallets from the bridge
@@ -87,10 +88,41 @@ export async function discoverWallets() {
87
88
  * Gets available wallets by discovering them via EIP-6963
88
89
  * This function can be called multiple times to refresh the list
89
90
  */
90
- export async function getAvailableWallets() {
91
+ export async function getAvailableWallets(expectedWallets = []) {
91
92
  try {
92
- const wallets = await discoverWallets();
93
- return wallets;
93
+ const detectedWallets = await discoverWallets();
94
+ // Check expected wallets with legacy EIP-1193 provider support
95
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
96
+ // @ts-ignore - window.ethereum is set by the browser
97
+ if (window.ethereum && expectedWallets.length > 0) {
98
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
99
+ // @ts-ignore - window.ethereum is set by the browser
100
+ const legacyProvider = window.ethereum;
101
+ // Match expected wallets with legacy provider using isWallet detection
102
+ const matchedWallet = expectedWallets.find(wallet => {
103
+ const injectedId = wallet.extensionInjectedProvider?.namespaceMetaData.eip155
104
+ ?.injectedId ?? '';
105
+ // Check if the legacy provider has the corresponding isWallet property
106
+ // This supports detection of wallets like MetaMask (isMetaMask), Coinbase Wallet (isCoinbaseWallet), etc.
107
+ return injectedId && legacyProvider[injectedId] === true;
108
+ });
109
+ if (matchedWallet) {
110
+ // Check if this wallet is already detected via EIP-6963 to avoid duplicates
111
+ const isAlreadyDetected = detectedWallets.some(detectedWallet => detectedWallet.name.toLowerCase() ===
112
+ matchedWallet.extensionInjectedProvider?.namespaceMetaData.eip155?.eip155Name?.toLowerCase());
113
+ if (!isAlreadyDetected) {
114
+ detectedWallets.push({
115
+ uuid: matchedWallet.metadata['uuid'] || uuid(),
116
+ name: matchedWallet.extensionInjectedProvider?.namespaceMetaData.eip155
117
+ ?.eip155Name || matchedWallet.name,
118
+ icon: matchedWallet.metadata['icon'] || '',
119
+ rdns: matchedWallet.metadata['rdns'] || '',
120
+ provider: legacyProvider
121
+ });
122
+ }
123
+ }
124
+ }
125
+ return detectedWallets;
94
126
  }
95
127
  catch {
96
128
  // Return empty array if discovery fails
@@ -1 +1 @@
1
- {"version":3,"file":"eip6963-discovery.js","sourceRoot":"","sources":["../src/eip6963-discovery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eip6963-discovery.js","sourceRoot":"","sources":["../src/eip6963-discovery.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { Network, ExtensionInjectedProvider, IntegratedBrowserInjectedProvider, Connector, ConnectorResult, SwitchNetworkResult, Namespace, DetectedEIP6963WalletInfo, DetectedSolanaWalletInfo, TransactionRequest, TransactionResult, NetworkRpcMap, EVMCapabilities, SignatureType } from '@meshconnect/uwc-types';
1
+ import type { Network, ExtensionInjectedProvider, IntegratedBrowserInjectedProvider, Connector, ConnectorResult, SwitchNetworkResult, Namespace, DetectedEIP6963WalletInfo, DetectedSolanaWalletInfo, TransactionRequest, TransactionResult, NetworkRpcMap, EVMCapabilities, SignatureType, WalletMetadata } from '@meshconnect/uwc-types';
2
2
  export declare class InjectedConnector implements Connector {
3
3
  private readonly storageService;
4
4
  private ethereumService;
@@ -7,7 +7,7 @@ export declare class InjectedConnector implements Connector {
7
7
  private signatureService;
8
8
  private transactionService;
9
9
  private networkRpcMap;
10
- constructor(networkRpcMap?: NetworkRpcMap);
10
+ constructor(networkRpcMap?: NetworkRpcMap, expectedWallets?: WalletMetadata[]);
11
11
  /**
12
12
  * Initialize wallet discovery for both Ethereum and Solana
13
13
  */
@@ -15,7 +15,7 @@ export declare class InjectedConnector implements Connector {
15
15
  /**
16
16
  * Get available wallets for a specific namespace
17
17
  */
18
- getAvailableWallets(namespace: Namespace): Promise<DetectedEIP6963WalletInfo[] | DetectedSolanaWalletInfo[]>;
18
+ getAvailableWallets(namespace: Namespace, expectedWallets?: WalletMetadata[]): Promise<DetectedEIP6963WalletInfo[] | DetectedSolanaWalletInfo[]>;
19
19
  /**
20
20
  * Connect to a wallet
21
21
  */
@@ -1 +1 @@
1
- {"version":3,"file":"injected-connector.d.ts","sourceRoot":"","sources":["../src/injected-connector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,yBAAyB,EACzB,iCAAiC,EACjC,SAAS,EACT,eAAe,EACf,mBAAmB,EACnB,SAAS,EACT,yBAAyB,EACzB,wBAAwB,EACxB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,aAAa,EACd,MAAM,wBAAwB,CAAA;AAS/B,qBAAa,iBAAkB,YAAW,SAAS;IACjD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAC/C,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,iBAAiB,CAAmB;IAC5C,OAAO,CAAC,gBAAgB,CAAkB;IAC1C,OAAO,CAAC,kBAAkB,CAAoB;IAC9C,OAAO,CAAC,aAAa,CAAe;gBAExB,aAAa,GAAE,aAAkB;IAmB7C;;OAEG;YACW,yBAAyB;IAKvC;;OAEG;IACG,mBAAmB,CACvB,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC,yBAAyB,EAAE,GAAG,wBAAwB,EAAE,CAAC;IAoCpE;;OAEG;IACG,OAAO,CACX,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,yBAAyB,GAAG,iCAAiC,GACtE,OAAO,CAAC,eAAe,CAAC;IAmC3B;;OAEG;IACG,aAAa,CACjB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,yBAAyB,GAAG,iCAAiC,GACtE,OAAO,CAAC,mBAAmB,CAAC;IAI/B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC;;OAEG;IACG,WAAW,CACf,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,yBAAyB,GAAG,iCAAiC,GACtE,OAAO,CAAC,aAAa,CAAC;IA6DzB;;OAEG;IACG,eAAe,CACnB,OAAO,EAAE,kBAAkB,EAC3B,QAAQ,EAAE,yBAAyB,GAAG,iCAAiC,GACtE,OAAO,CAAC,iBAAiB,CAAC;IA2C7B;;OAEG;IACG,qBAAqB,CACzB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,OAAO,EAAE,GAClB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAG5C"}
1
+ {"version":3,"file":"injected-connector.d.ts","sourceRoot":"","sources":["../src/injected-connector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,yBAAyB,EACzB,iCAAiC,EACjC,SAAS,EACT,eAAe,EACf,mBAAmB,EACnB,SAAS,EACT,yBAAyB,EACzB,wBAAwB,EACxB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,aAAa,EACb,cAAc,EACf,MAAM,wBAAwB,CAAA;AAS/B,qBAAa,iBAAkB,YAAW,SAAS;IACjD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAC/C,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,iBAAiB,CAAmB;IAC5C,OAAO,CAAC,gBAAgB,CAAkB;IAC1C,OAAO,CAAC,kBAAkB,CAAoB;IAC9C,OAAO,CAAC,aAAa,CAAe;gBAGlC,aAAa,GAAE,aAAkB,EACjC,eAAe,GAAE,cAAc,EAAO;IAoBxC;;OAEG;YACW,yBAAyB;IAOvC;;OAEG;IACG,mBAAmB,CACvB,SAAS,EAAE,SAAS,EACpB,eAAe,GAAE,cAAc,EAAO,GACrC,OAAO,CAAC,yBAAyB,EAAE,GAAG,wBAAwB,EAAE,CAAC;IAoCpE;;OAEG;IACG,OAAO,CACX,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,yBAAyB,GAAG,iCAAiC,GACtE,OAAO,CAAC,eAAe,CAAC;IAmC3B;;OAEG;IACG,aAAa,CACjB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,yBAAyB,GAAG,iCAAiC,GACtE,OAAO,CAAC,mBAAmB,CAAC;IAI/B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC;;OAEG;IACG,WAAW,CACf,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,yBAAyB,GAAG,iCAAiC,GACtE,OAAO,CAAC,aAAa,CAAC;IA6DzB;;OAEG;IACG,eAAe,CACnB,OAAO,EAAE,kBAAkB,EAC3B,QAAQ,EAAE,yBAAyB,GAAG,iCAAiC,GACtE,OAAO,CAAC,iBAAiB,CAAC;IA2C7B;;OAEG;IACG,qBAAqB,CACzB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,OAAO,EAAE,GAClB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAG5C"}
@@ -12,7 +12,7 @@ export class InjectedConnector {
12
12
  signatureService;
13
13
  transactionService;
14
14
  networkRpcMap;
15
- constructor(networkRpcMap = {}) {
15
+ constructor(networkRpcMap = {}, expectedWallets = []) {
16
16
  // Store the network RPC map
17
17
  this.networkRpcMap = networkRpcMap;
18
18
  // Initialize services
@@ -23,25 +23,25 @@ export class InjectedConnector {
23
23
  this.signatureService = new SignatureService();
24
24
  this.transactionService = new TransactionService(this.networkRpcMap);
25
25
  // Initialize wallet discovery
26
- this.initializeWalletDiscovery();
26
+ this.initializeWalletDiscovery(expectedWallets);
27
27
  }
28
28
  /**
29
29
  * Initialize wallet discovery for both Ethereum and Solana
30
30
  */
31
- async initializeWalletDiscovery() {
32
- await this.ethereumService.initializeDiscovery();
31
+ async initializeWalletDiscovery(expectedWallets = []) {
32
+ await this.ethereumService.initializeDiscovery(expectedWallets);
33
33
  await this.solanaService.initializeDiscovery();
34
34
  }
35
35
  /**
36
36
  * Get available wallets for a specific namespace
37
37
  */
38
- async getAvailableWallets(namespace) {
38
+ async getAvailableWallets(namespace, expectedWallets = []) {
39
39
  switch (namespace) {
40
40
  case 'eip155': {
41
41
  const detectedWallets = this.ethereumService.getDetectedWallets();
42
42
  // Re-fetch if no wallets detected
43
43
  if (detectedWallets.length === 0) {
44
- await this.ethereumService.initializeDiscovery();
44
+ await this.ethereumService.initializeDiscovery(expectedWallets);
45
45
  }
46
46
  // Convert to DetectedWalletInfo format
47
47
  return this.ethereumService.getDetectedWallets().map(wallet => ({
@@ -1 +1 @@
1
- {"version":3,"file":"injected-connector.js","sourceRoot":"","sources":["../src/injected-connector.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAA;AACnF,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAA;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AAEnE,MAAM,OAAO,iBAAiB;IACX,cAAc,CAAgB;IACvC,eAAe,CAAuB;IACtC,aAAa,CAAqB;IAClC,iBAAiB,CAAmB;IACpC,gBAAgB,CAAkB;IAClC,kBAAkB,CAAoB;IACtC,aAAa,CAAe;IAEpC,YAAY,gBAA+B,EAAE;QAC3C,4BAA4B;QAC5B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAA;QAElC,sBAAsB;QACtB,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,EAAE,CAAA;QAC1C,IAAI,CAAC,eAAe,GAAG,IAAI,qBAAqB,EAAE,CAAA;QAClD,IAAI,CAAC,aAAa,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QACjE,IAAI,CAAC,iBAAiB,GAAG,IAAI,iBAAiB,CAC5C,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,aAAa,CACnB,CAAA;QACD,IAAI,CAAC,gBAAgB,GAAG,IAAI,gBAAgB,EAAE,CAAA;QAC9C,IAAI,CAAC,kBAAkB,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QAEpE,8BAA8B;QAC9B,IAAI,CAAC,yBAAyB,EAAE,CAAA;IAClC,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,yBAAyB;QACrC,MAAM,IAAI,CAAC,eAAe,CAAC,mBAAmB,EAAE,CAAA;QAChD,MAAM,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,CAAA;IAChD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,mBAAmB,CACvB,SAAoB;QAEpB,QAAQ,SAAS,EAAE,CAAC;YAClB,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,kBAAkB,EAAE,CAAA;gBAEjE,kCAAkC;gBAClC,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACjC,MAAM,IAAI,CAAC,eAAe,CAAC,mBAAmB,EAAE,CAAA;gBAClD,CAAC;gBAED,uCAAuC;gBACvC,OAAO,IAAI,CAAC,eAAe,CAAC,kBAAkB,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;oBAC9D,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,IAAI,EAAE,MAAM,CAAC,IAAI;iBAClB,CAAC,CAAC,CAAA;YACL,CAAC;YAED,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,0BAA0B;gBAC1B,MAAM,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,CAAA;gBAE9C,uCAAuC;gBACvC,OAAO,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;oBAC5D,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;iBAC1B,CAAC,CAAC,CAAA;YACL,CAAC;YAED;gBACE,OAAO,EAAE,CAAA;QACb,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CACX,OAAgB,EAChB,QAAuE;QAEvE,MAAM,eAAe,GAAG,OAAO,CAAC,SAAS,CAAA;QAEzC,mCAAmC;QACnC,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,GACpD,MAAM,IAAI,CAAC,iBAAiB,CAAC,wBAAwB,CACnD,eAAsC,EACtC,QAAQ,CACT,CAAA;QAEH,4DAA4D;QAC5D,IAAI,eAAe,EAAE,CAAC;YACpB,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;YACtD,OAAO;gBACL,SAAS,EAAE,OAAO,CAAC,EAAE;gBACrB,OAAO,EAAE,eAAe;gBACxB,kBAAkB;aACnB,CAAA;QACH,CAAC;QAED,kDAAkD;QAClD,QAAQ,eAAe,EAAE,CAAC;YACxB,KAAK,QAAQ;gBACX,OAAO,MAAM,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;YAExE,KAAK,QAAQ;gBACX,OAAO,MAAM,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;YAEtE;gBACE,MAAM,IAAI,KAAK,CACb,cAAc,OAAO,CAAC,SAAS,+EAA+E,CAC/G,CAAA;QACL,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CACjB,OAAgB,EAChB,QAAuE;QAEvE,OAAO,MAAM,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;IACtE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,CAAA;IACrC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CACf,OAAe,EACf,QAAuE;QAEvE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;QAC7D,CAAC;QAED,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;QACpD,CAAC;QAED,gDAAgD;QAChD,MAAM,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,CAAA;QACrE,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;QACjD,CAAC;QAED,oEAAoE;QACpE,MAAM,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAwB,CAAA;QAEvE,wCAAwC;QACxC,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,CAAA;QAEjE,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;YAC3B,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAA;YACzD,CAAC;YAED,mCAAmC;YACnC,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE,CAAA;YAC/D,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;YACnD,CAAC;YAED,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,CAC/D,OAAO,EACP,cAAc,EACd,WAAW,CACZ,CAAA;YACD,OAAO;gBACL,IAAI,EAAE,UAAU;gBAChB,SAAS,EAAE,SAAS;aACrB,CAAA;QACH,CAAC;aAAM,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;YAClC,gCAAgC;YAChC,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,CAAA;YAC9D,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAA;YAChD,CAAC;YAED,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAC7D,OAAO,EACP,aAAa,CACd,CAAA;YACD,OAAO;gBACL,IAAI,EAAE,UAAU;gBAChB,SAAS,EAAE,SAAS;aACrB,CAAA;QACH,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,wCAAwC,SAAS,EAAE,CAAC,CAAA;QACtE,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CACnB,OAA2B,EAC3B,QAAuE;QAEvE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAA;QAClE,CAAC;QAED,gDAAgD;QAChD,MAAM,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,CAAA;QACrE,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;QACjD,CAAC;QAED,oEAAoE;QACpE,MAAM,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAwB,CAAA;QAEvE,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;YAC3B,mCAAmC;YACnC,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE,CAAA;YAC/D,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;YACnD,CAAC;YAED,OAAO,MAAM,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAClD,OAAO,EACP,SAAS,EACT,WAAW,CACZ,CAAA;QACH,CAAC;aAAM,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;YAClC,gCAAgC;YAChC,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,CAAA;YAC9D,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAA;YAChD,CAAC;YAED,OAAO,MAAM,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAClD,OAAO,EACP,SAAS,EACT,aAAa,CACd,CAAA;QACH,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,6CAA6C,SAAS,EAAE,CAAC,CAAA;QAC3E,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,qBAAqB,CACzB,IAAY,EACZ,QAAmB;QAEnB,OAAO,MAAM,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IACnE,CAAC;CACF"}
1
+ {"version":3,"file":"injected-connector.js","sourceRoot":"","sources":["../src/injected-connector.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { AvailableAddress, EVMCapabilities, Network } from '@meshconnect/uwc-types';
1
+ import type { AvailableAddress, EVMCapabilities, Network, WalletMetadata } from '@meshconnect/uwc-types';
2
2
  import type { EthereumProvider, DetectedWallet as EIP6963DetectedWallet } from '../../eip6963-discovery';
3
3
  /**
4
4
  * Service for managing Ethereum wallet connections
@@ -10,7 +10,7 @@ export declare class EthereumWalletService {
10
10
  /**
11
11
  * Initialize wallet discovery
12
12
  */
13
- initializeDiscovery(): Promise<void>;
13
+ initializeDiscovery(expectedWallets?: WalletMetadata[]): Promise<void>;
14
14
  /**
15
15
  * Get detected wallets
16
16
  */
@@ -1 +1 @@
1
- {"version":3,"file":"ethereum-wallet-service.d.ts","sourceRoot":"","sources":["../../../src/services/ethereum/ethereum-wallet-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,gBAAgB,EAChB,eAAe,EAEf,OAAO,EACR,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EACV,gBAAgB,EAChB,cAAc,IAAI,qBAAqB,EACxC,MAAM,yBAAyB,CAAA;AAGhC;;GAEG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,eAAe,CAA8B;IACrD,OAAO,CAAC,iBAAiB,CAAgC;IACzD,OAAO,CAAC,OAAO,CAAsB;IAErC;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAI1C;;OAEG;IACH,kBAAkB,IAAI,qBAAqB,EAAE;IAI7C;;OAEG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS;IAIjE;;OAEG;IACG,uBAAuB,CAC3B,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;IAY3B;;OAEG;IACG,OAAO,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;IAqB1D;;OAEG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BrD;;OAEG;IACH,uBAAuB,CACrB,mBAAmB,EAAE,MAAM,EAAE,EAC7B,OAAO,EAAE,MAAM,GACd,gBAAgB,EAAE;IAarB;;OAEG;IACH,kBAAkB,CAChB,QAAQ,EAAE,gBAAgB,GAAG,IAAI,EACjC,OAAO,EAAE,MAAM,GAAG,IAAI,GACrB,IAAI;IAKP;;OAEG;IACH,UAAU,IAAI,MAAM,GAAG,IAAI;IAI3B;;OAEG;IACH,oBAAoB,IAAI,gBAAgB,GAAG,IAAI;IAI/C;;OAEG;IACH,UAAU,IAAI,IAAI;IAKlB;;OAEG;IACG,eAAe,CACnB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,OAAO,EAAE,GAClB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAsD5C"}
1
+ {"version":3,"file":"ethereum-wallet-service.d.ts","sourceRoot":"","sources":["../../../src/services/ethereum/ethereum-wallet-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,gBAAgB,EAChB,eAAe,EAEf,OAAO,EACP,cAAc,EACf,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EACV,gBAAgB,EAChB,cAAc,IAAI,qBAAqB,EACxC,MAAM,yBAAyB,CAAA;AAGhC;;GAEG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,eAAe,CAA8B;IACrD,OAAO,CAAC,iBAAiB,CAAgC;IACzD,OAAO,CAAC,OAAO,CAAsB;IAErC;;OAEG;IACG,mBAAmB,CAAC,eAAe,CAAC,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5E;;OAEG;IACH,kBAAkB,IAAI,qBAAqB,EAAE;IAI7C;;OAEG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS;IAIjE;;OAEG;IACG,uBAAuB,CAC3B,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;IAY3B;;OAEG;IACG,OAAO,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;IAqB1D;;OAEG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BrD;;OAEG;IACH,uBAAuB,CACrB,mBAAmB,EAAE,MAAM,EAAE,EAC7B,OAAO,EAAE,MAAM,GACd,gBAAgB,EAAE;IAarB;;OAEG;IACH,kBAAkB,CAChB,QAAQ,EAAE,gBAAgB,GAAG,IAAI,EACjC,OAAO,EAAE,MAAM,GAAG,IAAI,GACrB,IAAI;IAKP;;OAEG;IACH,UAAU,IAAI,MAAM,GAAG,IAAI;IAI3B;;OAEG;IACH,oBAAoB,IAAI,gBAAgB,GAAG,IAAI;IAI/C;;OAEG;IACH,UAAU,IAAI,IAAI;IAKlB;;OAEG;IACG,eAAe,CACnB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,OAAO,EAAE,GAClB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAsD5C"}
@@ -9,8 +9,8 @@ export class EthereumWalletService {
9
9
  /**
10
10
  * Initialize wallet discovery
11
11
  */
12
- async initializeDiscovery() {
13
- this.detectedWallets = await getEIP6963Wallets();
12
+ async initializeDiscovery(expectedWallets) {
13
+ this.detectedWallets = await getEIP6963Wallets(expectedWallets);
14
14
  }
15
15
  /**
16
16
  * Get detected wallets
@@ -1 +1 @@
1
- {"version":3,"file":"ethereum-wallet-service.js","sourceRoot":"","sources":["../../../src/services/ethereum/ethereum-wallet-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ethereum-wallet-service.js","sourceRoot":"","sources":["../../../src/services/ethereum/ethereum-wallet-service.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@meshconnect/uwc-injected-connector",
3
- "version": "0.2.13",
3
+ "version": "0.3.0",
4
4
  "description": "Injected connector for Universal Wallet Connector",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -26,7 +26,8 @@
26
26
  "bs58": "^6.0.0",
27
27
  "buffer": "^6.0.3",
28
28
  "ethers": "^6.15.0",
29
- "@meshconnect/uwc-types": "0.2.8"
29
+ "uuid": "^11.1.0",
30
+ "@meshconnect/uwc-types": "0.3.0"
30
31
  },
31
32
  "devDependencies": {
32
33
  "typescript": "^5.9.2"
@@ -0,0 +1,312 @@
1
+ import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest'
2
+ import type { WalletMetadata } from '@meshconnect/uwc-types'
3
+ import { discoverWallets } from './eip6963-discovery'
4
+
5
+ // Mock window object
6
+ const mockWindow = {
7
+ addEventListener: vi.fn(),
8
+ removeEventListener: vi.fn(),
9
+ dispatchEvent: vi.fn(),
10
+ ethereum: undefined as any,
11
+ UWCBridgeChildInitialized: false,
12
+ eip6963Wallets: undefined as any
13
+ }
14
+
15
+ // Mock global window
16
+ Object.defineProperty(globalThis, 'window', {
17
+ value: mockWindow,
18
+ writable: true
19
+ })
20
+
21
+ describe('EIP-6963 Discovery', () => {
22
+ beforeEach(() => {
23
+ vi.clearAllMocks()
24
+ // Reset window properties
25
+ mockWindow.ethereum = undefined
26
+ mockWindow.UWCBridgeChildInitialized = false
27
+ mockWindow.eip6963Wallets = undefined
28
+ // Clear module cache to ensure fresh imports
29
+ vi.resetModules()
30
+ })
31
+
32
+ afterEach(() => {
33
+ vi.restoreAllMocks()
34
+ })
35
+
36
+ describe('discoverWallets', () => {
37
+ it('should return empty array in non-browser environment', async () => {
38
+ // Mock non-browser environment
39
+ Object.defineProperty(globalThis, 'window', {
40
+ value: undefined,
41
+ writable: true
42
+ })
43
+
44
+ const result = await discoverWallets()
45
+ expect(result).toEqual([])
46
+
47
+ // Restore window for other tests
48
+ Object.defineProperty(globalThis, 'window', {
49
+ value: mockWindow,
50
+ writable: true
51
+ })
52
+ })
53
+
54
+ it('should poll for bridge wallets when UWCBridgeChildInitialized is true', async () => {
55
+ mockWindow.UWCBridgeChildInitialized = true
56
+ const mockBridgeWallets = [
57
+ {
58
+ uuid: 'bridge-wallet-1',
59
+ name: 'Bridge Wallet',
60
+ icon: 'bridge-icon',
61
+ rdns: 'com.bridge.wallet',
62
+ provider: { request: vi.fn() }
63
+ }
64
+ ]
65
+ mockWindow.eip6963Wallets = mockBridgeWallets
66
+
67
+ const result = await discoverWallets()
68
+
69
+ expect(result).toEqual(mockBridgeWallets)
70
+ })
71
+
72
+ it('should return empty array when bridge polling times out', async () => {
73
+ mockWindow.UWCBridgeChildInitialized = true
74
+ mockWindow.eip6963Wallets = undefined
75
+
76
+ const result = await discoverWallets()
77
+
78
+ expect(result).toEqual([])
79
+ })
80
+
81
+ it('should handle invalid bridge wallets array', async () => {
82
+ mockWindow.UWCBridgeChildInitialized = true
83
+ mockWindow.eip6963Wallets = 'invalid' as any
84
+
85
+ const result = await discoverWallets()
86
+
87
+ expect(result).toEqual([])
88
+ })
89
+ })
90
+
91
+ describe('getAvailableWallets', () => {
92
+ const mockExpectedWallets: WalletMetadata[] = [
93
+ {
94
+ id: 'metamask',
95
+ name: 'MetaMask',
96
+ metadata: {
97
+ uuid: 'metamask-uuid',
98
+ icon: 'metamask-icon',
99
+ rdns: 'io.metamask'
100
+ },
101
+ extensionInjectedProvider: {
102
+ supportedNetworkIds: ['eip155:1'] as const,
103
+ namespaceMetaData: {
104
+ eip155: {
105
+ eip155Name: 'MetaMask',
106
+ injectedId: 'isMetaMask',
107
+ supportsAddingNetworks: true,
108
+ requiresUserApprovalOnNetworkSwitch: false
109
+ }
110
+ },
111
+ requiresUserApprovalOnNamespaceSwitch: false
112
+ }
113
+ }
114
+ ]
115
+
116
+ it('should add legacy provider wallet when detected', async () => {
117
+ const mockDetectedWallets: any[] = []
118
+ const mockLegacyProvider = {
119
+ request: vi.fn(),
120
+ on: vi.fn(),
121
+ removeListener: vi.fn(),
122
+ isMetaMask: true
123
+ }
124
+
125
+ mockWindow.ethereum = mockLegacyProvider
126
+
127
+ // Mock discoverWallets
128
+ vi.doMock('./eip6963-discovery', async () => {
129
+ const actual = await vi.importActual('./eip6963-discovery')
130
+ return {
131
+ ...actual,
132
+ discoverWallets: vi.fn().mockResolvedValue(mockDetectedWallets)
133
+ }
134
+ })
135
+
136
+ const { getAvailableWallets } = await import('./eip6963-discovery')
137
+ const result = await getAvailableWallets(mockExpectedWallets)
138
+
139
+ expect(result).toHaveLength(1)
140
+ expect(result[0].name).toBe('MetaMask')
141
+ expect(result[0].provider).toBe(mockLegacyProvider)
142
+ })
143
+
144
+ it('should not add legacy provider wallet if no matching expected wallet', async () => {
145
+ const mockDetectedWallets: any[] = []
146
+ const mockLegacyProvider = {
147
+ request: vi.fn(),
148
+ on: vi.fn(),
149
+ removeListener: vi.fn(),
150
+ isMetaMask: true
151
+ }
152
+
153
+ mockWindow.ethereum = mockLegacyProvider
154
+
155
+ // Mock discoverWallets
156
+ vi.doMock('./eip6963-discovery', async () => {
157
+ const actual = await vi.importActual('./eip6963-discovery')
158
+ return {
159
+ ...actual,
160
+ discoverWallets: vi.fn().mockResolvedValue(mockDetectedWallets)
161
+ }
162
+ })
163
+
164
+ const { getAvailableWallets } = await import('./eip6963-discovery')
165
+ const result = await getAvailableWallets([]) // Empty expected wallets
166
+
167
+ expect(result).toHaveLength(0)
168
+ })
169
+
170
+ it('should not add legacy provider wallet if injectedId does not match', async () => {
171
+ const mockDetectedWallets: any[] = []
172
+ const mockLegacyProvider = {
173
+ request: vi.fn(),
174
+ on: vi.fn(),
175
+ removeListener: vi.fn(),
176
+ isCoinbaseWallet: true // Different wallet
177
+ }
178
+
179
+ mockWindow.ethereum = mockLegacyProvider
180
+
181
+ // Mock discoverWallets
182
+ vi.doMock('./eip6963-discovery', async () => {
183
+ const actual = await vi.importActual('./eip6963-discovery')
184
+ return {
185
+ ...actual,
186
+ discoverWallets: vi.fn().mockResolvedValue(mockDetectedWallets)
187
+ }
188
+ })
189
+
190
+ const { getAvailableWallets } = await import('./eip6963-discovery')
191
+ const result = await getAvailableWallets(mockExpectedWallets)
192
+
193
+ expect(result).toHaveLength(0)
194
+ })
195
+
196
+ it('should handle missing metadata gracefully', async () => {
197
+ const mockDetectedWallets: any[] = []
198
+ const mockLegacyProvider = {
199
+ request: vi.fn(),
200
+ on: vi.fn(),
201
+ removeListener: vi.fn(),
202
+ isMetaMask: true
203
+ }
204
+
205
+ mockWindow.ethereum = mockLegacyProvider
206
+
207
+ const walletWithoutMetadata: WalletMetadata = {
208
+ id: 'metamask',
209
+ name: 'MetaMask',
210
+ metadata: {}, // Empty metadata
211
+ extensionInjectedProvider: {
212
+ supportedNetworkIds: ['eip155:1'] as const,
213
+ namespaceMetaData: {
214
+ eip155: {
215
+ eip155Name: 'MetaMask',
216
+ injectedId: 'isMetaMask',
217
+ supportsAddingNetworks: true,
218
+ requiresUserApprovalOnNetworkSwitch: false
219
+ }
220
+ },
221
+ requiresUserApprovalOnNamespaceSwitch: false
222
+ }
223
+ }
224
+
225
+ // Mock discoverWallets
226
+ vi.doMock('./eip6963-discovery', async () => {
227
+ const actual = await vi.importActual('./eip6963-discovery')
228
+ return {
229
+ ...actual,
230
+ discoverWallets: vi.fn().mockResolvedValue(mockDetectedWallets)
231
+ }
232
+ })
233
+
234
+ const { getAvailableWallets } = await import('./eip6963-discovery')
235
+ const result = await getAvailableWallets([walletWithoutMetadata])
236
+
237
+ expect(result).toHaveLength(1)
238
+ expect(result[0].uuid).toBeTruthy()
239
+ expect(result[0].name).toBe('MetaMask')
240
+ expect(result[0].icon).toBe('')
241
+ expect(result[0].rdns).toBe('')
242
+ })
243
+
244
+ it('should handle missing namespace metadata gracefully', async () => {
245
+ const mockDetectedWallets: any[] = []
246
+ const mockLegacyProvider = {
247
+ request: vi.fn(),
248
+ on: vi.fn(),
249
+ removeListener: vi.fn(),
250
+ isMetaMask: true
251
+ }
252
+
253
+ mockWindow.ethereum = mockLegacyProvider
254
+
255
+ const walletWithoutNamespaceMetadata: WalletMetadata = {
256
+ id: 'metamask',
257
+ name: 'MetaMask',
258
+ metadata: {
259
+ uuid: 'metamask-uuid',
260
+ icon: 'metamask-icon',
261
+ rdns: 'io.metamask'
262
+ },
263
+ extensionInjectedProvider: {
264
+ supportedNetworkIds: ['eip155:1'] as const,
265
+ namespaceMetaData: {
266
+ eip155: {
267
+ eip155Name: 'MetaMask',
268
+ injectedId: '', // Empty injectedId
269
+ supportsAddingNetworks: true,
270
+ requiresUserApprovalOnNetworkSwitch: false
271
+ }
272
+ },
273
+ requiresUserApprovalOnNamespaceSwitch: false
274
+ }
275
+ }
276
+
277
+ // Mock discoverWallets
278
+ vi.doMock('./eip6963-discovery', async () => {
279
+ const actual = await vi.importActual('./eip6963-discovery')
280
+ return {
281
+ ...actual,
282
+ discoverWallets: vi.fn().mockResolvedValue(mockDetectedWallets)
283
+ }
284
+ })
285
+
286
+ const { getAvailableWallets } = await import('./eip6963-discovery')
287
+ const result = await getAvailableWallets([walletWithoutNamespaceMetadata])
288
+
289
+ expect(result).toHaveLength(0)
290
+ })
291
+ })
292
+
293
+ describe('Bridge wallet polling', () => {
294
+ it('should resolve immediately when bridge wallets are available', async () => {
295
+ mockWindow.UWCBridgeChildInitialized = true
296
+ const mockBridgeWallets = [
297
+ {
298
+ uuid: 'bridge-wallet-1',
299
+ name: 'Bridge Wallet 1',
300
+ icon: 'bridge-icon-1',
301
+ rdns: 'com.bridge.wallet1',
302
+ provider: { request: vi.fn() }
303
+ }
304
+ ]
305
+ mockWindow.eip6963Wallets = mockBridgeWallets
306
+
307
+ const result = await discoverWallets()
308
+
309
+ expect(result).toEqual(mockBridgeWallets)
310
+ })
311
+ })
312
+ })
@@ -3,6 +3,9 @@
3
3
  * https://eips.ethereum.org/EIPS/eip-6963
4
4
  */
5
5
 
6
+ import type { WalletMetadata } from '@meshconnect/uwc-types'
7
+ import { v4 as uuid } from 'uuid'
8
+
6
9
  export interface EthereumProvider {
7
10
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
8
11
  request: (args: { method: string; params?: unknown[] }) => Promise<any>
@@ -12,6 +15,24 @@ export interface EthereumProvider {
12
15
  removeListener?: (event: string, handler: (...args: any[]) => void) => void
13
16
  }
14
17
 
18
+ /**
19
+ * EIP-1193 compatible provider interface extending the base EthereumProvider
20
+ * This interface includes the standard EIP-1193 methods and properties
21
+ */
22
+ export interface EIP1193Provider extends EthereumProvider {
23
+ // EIP-1193 standard methods
24
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
25
+ request: (args: { method: string; params?: unknown[] }) => Promise<any>
26
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
27
+ on: (event: string, handler: (...args: any[]) => void) => void
28
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
29
+ removeListener: (event: string, handler: (...args: any[]) => void) => void
30
+
31
+ // Add common wallet detection properties as needed (e.g. isMetaMask, isCoinbaseWallet, etc.)
32
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
33
+ [key: string]: any
34
+ }
35
+
15
36
  export interface EIP6963ProviderInfo {
16
37
  uuid: string
17
38
  name: string
@@ -131,6 +152,7 @@ export async function discoverWallets(): Promise<DetectedWallet[]> {
131
152
  // Clean up and resolve after timeout
132
153
  setTimeout(() => {
133
154
  window.removeEventListener('eip6963:announceProvider', handleAnnouncement)
155
+
134
156
  resolve(detectedWallets)
135
157
  }, timeout)
136
158
  })
@@ -140,10 +162,54 @@ export async function discoverWallets(): Promise<DetectedWallet[]> {
140
162
  * Gets available wallets by discovering them via EIP-6963
141
163
  * This function can be called multiple times to refresh the list
142
164
  */
143
- export async function getAvailableWallets(): Promise<DetectedWallet[]> {
165
+ export async function getAvailableWallets(
166
+ expectedWallets: WalletMetadata[] = []
167
+ ): Promise<DetectedWallet[]> {
144
168
  try {
145
- const wallets = await discoverWallets()
146
- return wallets
169
+ const detectedWallets = await discoverWallets()
170
+
171
+ // Check expected wallets with legacy EIP-1193 provider support
172
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
173
+ // @ts-ignore - window.ethereum is set by the browser
174
+ if (window.ethereum && expectedWallets.length > 0) {
175
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
176
+ // @ts-ignore - window.ethereum is set by the browser
177
+ const legacyProvider = window.ethereum as EIP1193Provider
178
+
179
+ // Match expected wallets with legacy provider using isWallet detection
180
+ const matchedWallet = expectedWallets.find(wallet => {
181
+ const injectedId =
182
+ wallet.extensionInjectedProvider?.namespaceMetaData.eip155
183
+ ?.injectedId ?? ''
184
+
185
+ // Check if the legacy provider has the corresponding isWallet property
186
+ // This supports detection of wallets like MetaMask (isMetaMask), Coinbase Wallet (isCoinbaseWallet), etc.
187
+ return injectedId && legacyProvider[injectedId] === true
188
+ })
189
+
190
+ if (matchedWallet) {
191
+ // Check if this wallet is already detected via EIP-6963 to avoid duplicates
192
+ const isAlreadyDetected = detectedWallets.some(
193
+ detectedWallet =>
194
+ detectedWallet.name.toLowerCase() ===
195
+ matchedWallet.extensionInjectedProvider?.namespaceMetaData.eip155?.eip155Name?.toLowerCase()
196
+ )
197
+
198
+ if (!isAlreadyDetected) {
199
+ detectedWallets.push({
200
+ uuid: matchedWallet.metadata['uuid'] || uuid(),
201
+ name:
202
+ matchedWallet.extensionInjectedProvider?.namespaceMetaData.eip155
203
+ ?.eip155Name || matchedWallet.name,
204
+ icon: matchedWallet.metadata['icon'] || '',
205
+ rdns: matchedWallet.metadata['rdns'] || '',
206
+ provider: legacyProvider
207
+ })
208
+ }
209
+ }
210
+ }
211
+
212
+ return detectedWallets
147
213
  } catch {
148
214
  // Return empty array if discovery fails
149
215
  return []
@@ -12,7 +12,8 @@ import type {
12
12
  TransactionResult,
13
13
  NetworkRpcMap,
14
14
  EVMCapabilities,
15
- SignatureType
15
+ SignatureType,
16
+ WalletMetadata
16
17
  } from '@meshconnect/uwc-types'
17
18
 
18
19
  import { EthereumWalletService } from './services/ethereum/ethereum-wallet-service'
@@ -31,7 +32,10 @@ export class InjectedConnector implements Connector {
31
32
  private transactionService: TransactionService
32
33
  private networkRpcMap: NetworkRpcMap
33
34
 
34
- constructor(networkRpcMap: NetworkRpcMap = {}) {
35
+ constructor(
36
+ networkRpcMap: NetworkRpcMap = {},
37
+ expectedWallets: WalletMetadata[] = []
38
+ ) {
35
39
  // Store the network RPC map
36
40
  this.networkRpcMap = networkRpcMap
37
41
 
@@ -47,14 +51,16 @@ export class InjectedConnector implements Connector {
47
51
  this.transactionService = new TransactionService(this.networkRpcMap)
48
52
 
49
53
  // Initialize wallet discovery
50
- this.initializeWalletDiscovery()
54
+ this.initializeWalletDiscovery(expectedWallets)
51
55
  }
52
56
 
53
57
  /**
54
58
  * Initialize wallet discovery for both Ethereum and Solana
55
59
  */
56
- private async initializeWalletDiscovery(): Promise<void> {
57
- await this.ethereumService.initializeDiscovery()
60
+ private async initializeWalletDiscovery(
61
+ expectedWallets: WalletMetadata[] = []
62
+ ): Promise<void> {
63
+ await this.ethereumService.initializeDiscovery(expectedWallets)
58
64
  await this.solanaService.initializeDiscovery()
59
65
  }
60
66
 
@@ -62,7 +68,8 @@ export class InjectedConnector implements Connector {
62
68
  * Get available wallets for a specific namespace
63
69
  */
64
70
  async getAvailableWallets(
65
- namespace: Namespace
71
+ namespace: Namespace,
72
+ expectedWallets: WalletMetadata[] = []
66
73
  ): Promise<DetectedEIP6963WalletInfo[] | DetectedSolanaWalletInfo[]> {
67
74
  switch (namespace) {
68
75
  case 'eip155': {
@@ -70,7 +77,7 @@ export class InjectedConnector implements Connector {
70
77
 
71
78
  // Re-fetch if no wallets detected
72
79
  if (detectedWallets.length === 0) {
73
- await this.ethereumService.initializeDiscovery()
80
+ await this.ethereumService.initializeDiscovery(expectedWallets)
74
81
  }
75
82
 
76
83
  // Convert to DetectedWalletInfo format
@@ -3,7 +3,8 @@ import type {
3
3
  AvailableAddress,
4
4
  EVMCapabilities,
5
5
  EVMCapabilityStatus,
6
- Network
6
+ Network,
7
+ WalletMetadata
7
8
  } from '@meshconnect/uwc-types'
8
9
  import type {
9
10
  EthereumProvider,
@@ -22,8 +23,8 @@ export class EthereumWalletService {
22
23
  /**
23
24
  * Initialize wallet discovery
24
25
  */
25
- async initializeDiscovery(): Promise<void> {
26
- this.detectedWallets = await getEIP6963Wallets()
26
+ async initializeDiscovery(expectedWallets?: WalletMetadata[]): Promise<void> {
27
+ this.detectedWallets = await getEIP6963Wallets(expectedWallets)
27
28
  }
28
29
 
29
30
  /**