@meshconnect/uwc-injected-connector 0.15.4 → 0.16.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/injected-connector.d.ts +21 -2
- package/dist/injected-connector.d.ts.map +1 -1
- package/dist/injected-connector.js +30 -2
- package/dist/injected-connector.js.map +1 -1
- package/dist/services/ethereum/ethereum-wallet-service.d.ts +13 -1
- package/dist/services/ethereum/ethereum-wallet-service.d.ts.map +1 -1
- package/dist/services/ethereum/ethereum-wallet-service.js +77 -0
- package/dist/services/ethereum/ethereum-wallet-service.js.map +1 -1
- package/dist/services/solana/solana-wallet-service.d.ts +13 -1
- package/dist/services/solana/solana-wallet-service.d.ts.map +1 -1
- package/dist/services/solana/solana-wallet-service.js +29 -0
- package/dist/services/solana/solana-wallet-service.js.map +1 -1
- package/dist/services/tron/tron-wallet-service.d.ts.map +1 -1
- package/dist/services/tron/tron-wallet-service.js +8 -1
- package/dist/services/tron/tron-wallet-service.js.map +1 -1
- package/package.json +6 -6
- package/src/injected-connector.test.ts +93 -0
- package/src/injected-connector.ts +37 -3
- package/src/services/ethereum/ethereum-wallet-service.test.ts +113 -1
- package/src/services/ethereum/ethereum-wallet-service.ts +93 -1
- package/src/services/solana/solana-wallet-service.lifecycle.test.ts +57 -0
- package/src/services/solana/solana-wallet-service.ts +39 -1
- package/src/services/tron/tron-wallet-service.ts +8 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Network, ExtensionInjectedProvider, IntegratedBrowserInjectedProvider, Connector, ConnectorResult, SwitchNetworkResult, Namespace, DetectedEIP6963WalletInfo, DetectedSolanaWalletInfo, DetectedTronWalletInfo, DetectedTonWalletInfo, TransactionRequest, TransactionResult, NetworkRpcMap, EVMCapabilities, SignatureType, EIP712TypedData, WalletMetadata, TonConnectConfig } from '@meshconnect/uwc-types';
|
|
1
|
+
import type { Network, ExtensionInjectedProvider, IntegratedBrowserInjectedProvider, Connector, ConnectorResult, SwitchNetworkResult, Namespace, DetectedEIP6963WalletInfo, DetectedSolanaWalletInfo, DetectedTronWalletInfo, DetectedTonWalletInfo, TransactionRequest, TransactionResult, NetworkRpcMap, EVMCapabilities, SignatureType, EIP712TypedData, WalletMetadata, TonConnectConfig, WalletLifecycleEvent, WalletLifecycleContext } from '@meshconnect/uwc-types';
|
|
2
2
|
import { type TronConnectorConfig } from '@meshconnect/uwc-tron-connector';
|
|
3
3
|
export declare class InjectedConnector implements Connector {
|
|
4
4
|
private readonly storageService;
|
|
@@ -22,7 +22,10 @@ export declare class InjectedConnector implements Connector {
|
|
|
22
22
|
* Tron auto-connect (see `enrichWithTron`).
|
|
23
23
|
*/
|
|
24
24
|
private networks;
|
|
25
|
-
constructor(networkRpcMap?: NetworkRpcMap, expectedWallets?: WalletMetadata[], tonConnectConfig?: TonConnectConfig, tronConnectorConfig?: TronConnectorConfig, networks?: Network[]
|
|
25
|
+
constructor(networkRpcMap?: NetworkRpcMap, expectedWallets?: WalletMetadata[], tonConnectConfig?: TonConnectConfig, tronConnectorConfig?: TronConnectorConfig, networks?: Network[], onBridgeError?: (info: {
|
|
26
|
+
namespace: string;
|
|
27
|
+
message: string;
|
|
28
|
+
}) => void);
|
|
26
29
|
/**
|
|
27
30
|
* Get available wallets for a specific namespace
|
|
28
31
|
*/
|
|
@@ -50,6 +53,22 @@ export declare class InjectedConnector implements Connector {
|
|
|
50
53
|
* Disconnect from all wallets (only clears local state)
|
|
51
54
|
*/
|
|
52
55
|
disconnect(): Promise<void>;
|
|
56
|
+
/**
|
|
57
|
+
* Observe post-connect lifecycle from the live provider of the namespace the
|
|
58
|
+
* CALLER names in `context`. Routing must follow the session being attached
|
|
59
|
+
* for, not a fixed service preference or ambient connector state: the
|
|
60
|
+
* secondary-namespace gather (`checkAndAdd*Addresses`) can leave MORE than
|
|
61
|
+
* one service holding a live surface — e.g. a Solana-primary Phantom session
|
|
62
|
+
* with an authorized EVM side also sets the Ethereum service's provider — and
|
|
63
|
+
* attaching the wrong one would label that provider's events with this
|
|
64
|
+
* session's routing (an EVM chain switch reported against a Solana session)
|
|
65
|
+
* and miss the active namespace's own signals.
|
|
66
|
+
*
|
|
67
|
+
* EVM (EIP-1193) and Solana (wallet-standard) have a live event surface today;
|
|
68
|
+
* TRON / TON injected are follow-ons behind the same contract (until then they
|
|
69
|
+
* return undefined → the core emits `lifecycleTelemetryUnavailable`).
|
|
70
|
+
*/
|
|
71
|
+
onLifecycleEvent(listener: (event: WalletLifecycleEvent) => void, context: WalletLifecycleContext): (() => void) | undefined;
|
|
53
72
|
/**
|
|
54
73
|
* Sign a message with the connected wallet
|
|
55
74
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"injected-connector.d.ts","sourceRoot":"","sources":["../src/injected-connector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EAEP,yBAAyB,EACzB,iCAAiC,EACjC,SAAS,EACT,eAAe,EAEf,mBAAmB,EACnB,SAAS,EACT,yBAAyB,EACzB,wBAAwB,EACxB,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EAEjB,aAAa,EACb,eAAe,EACf,aAAa,EACb,eAAe,EACf,cAAc,EACd,gBAAgB,
|
|
1
|
+
{"version":3,"file":"injected-connector.d.ts","sourceRoot":"","sources":["../src/injected-connector.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,7 +34,9 @@ export class InjectedConnector {
|
|
|
34
34
|
* Tron auto-connect (see `enrichWithTron`).
|
|
35
35
|
*/
|
|
36
36
|
networks;
|
|
37
|
-
constructor(networkRpcMap = {}, expectedWallets = [], tonConnectConfig, tronConnectorConfig, networks = []
|
|
37
|
+
constructor(networkRpcMap = {}, expectedWallets = [], tonConnectConfig, tronConnectorConfig, networks = [],
|
|
38
|
+
// Optional sink for BridgeChild discovery failures (wired to UWC's observer).
|
|
39
|
+
onBridgeError) {
|
|
38
40
|
this.networkRpcMap = networkRpcMap;
|
|
39
41
|
this.networks = networks;
|
|
40
42
|
this.tonConnectManifestUrl = tonConnectConfig?.manifestUrl;
|
|
@@ -51,7 +53,8 @@ export class InjectedConnector {
|
|
|
51
53
|
this.transactionService = new TransactionService(this.networkRpcMap);
|
|
52
54
|
new BridgeChild({
|
|
53
55
|
tronInjectedIds: this.tronService.getTronWalletIdsFromExpectedWallets(expectedWallets),
|
|
54
|
-
tonJsBridgeKeys: this.tonService.getTonBridgeKeysFromExpectedWallets(expectedWallets)
|
|
56
|
+
tonJsBridgeKeys: this.tonService.getTonBridgeKeysFromExpectedWallets(expectedWallets),
|
|
57
|
+
...(onBridgeError ? { onError: onBridgeError } : {})
|
|
55
58
|
});
|
|
56
59
|
}
|
|
57
60
|
/**
|
|
@@ -232,6 +235,31 @@ export class InjectedConnector {
|
|
|
232
235
|
}
|
|
233
236
|
await this.connectionManager.disconnect();
|
|
234
237
|
}
|
|
238
|
+
/**
|
|
239
|
+
* Observe post-connect lifecycle from the live provider of the namespace the
|
|
240
|
+
* CALLER names in `context`. Routing must follow the session being attached
|
|
241
|
+
* for, not a fixed service preference or ambient connector state: the
|
|
242
|
+
* secondary-namespace gather (`checkAndAdd*Addresses`) can leave MORE than
|
|
243
|
+
* one service holding a live surface — e.g. a Solana-primary Phantom session
|
|
244
|
+
* with an authorized EVM side also sets the Ethereum service's provider — and
|
|
245
|
+
* attaching the wrong one would label that provider's events with this
|
|
246
|
+
* session's routing (an EVM chain switch reported against a Solana session)
|
|
247
|
+
* and miss the active namespace's own signals.
|
|
248
|
+
*
|
|
249
|
+
* EVM (EIP-1193) and Solana (wallet-standard) have a live event surface today;
|
|
250
|
+
* TRON / TON injected are follow-ons behind the same contract (until then they
|
|
251
|
+
* return undefined → the core emits `lifecycleTelemetryUnavailable`).
|
|
252
|
+
*/
|
|
253
|
+
onLifecycleEvent(listener, context) {
|
|
254
|
+
switch (context.namespace) {
|
|
255
|
+
case 'eip155':
|
|
256
|
+
return this.ethereumService.onLifecycleEvent(listener);
|
|
257
|
+
case 'solana':
|
|
258
|
+
return this.solanaService.onLifecycleEvent(listener);
|
|
259
|
+
default:
|
|
260
|
+
return undefined;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
235
263
|
/**
|
|
236
264
|
* Sign a message with the connected wallet
|
|
237
265
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"injected-connector.js","sourceRoot":"","sources":["../src/injected-connector.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EACL,aAAa,EAEd,MAAM,iCAAiC,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAEnE,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAA;AAE3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAA;AACnF,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAA;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAA;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AACpE,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,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AAEpE,MAAM,OAAO,iBAAiB;IACX,cAAc,CAAgB;IACvC,eAAe,CAAuB;IACtC,aAAa,CAAqB;IAClC,WAAW,CAAmB;IAC9B,UAAU,CAAkB;IAC5B,iBAAiB,CAAmB;IACpC,gBAAgB,CAAkB;IAClC,kBAAkB,CAAoB;IACtC,aAAa,CAAe;IAC5B,qBAAqB,CAAqC;IAClE;;;;OAIG;IACK,aAAa,CAAsB;IAC3C;;;OAGG;IACK,QAAQ,CAAW;IAE3B,YACE,gBAA+B,EAAE,EACjC,kBAAoC,EAAE,EACtC,gBAAmC,EACnC,mBAAyC,EACzC,WAAsB,EAAE;QAExB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAA;QAClC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,qBAAqB,GAAG,gBAAgB,EAAE,WAAW,CAAA;QAC1D,IAAI,CAAC,aAAa,GAAG,mBAAmB;YACtC,CAAC,CAAC,IAAI,aAAa,CAAC,mBAAmB,CAAC;YACxC,CAAC,CAAC,IAAI,CAAA;QAER,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,WAAW,GAAG,IAAI,iBAAiB,EAAE,CAAA;QAC1C,IAAI,CAAC,UAAU,GAAG,IAAI,gBAAgB,CACpC,IAAI,CAAC,qBAAqB,EAC1B,gBAAgB,EAAE,iBAAiB,CACpC,CAAA;QACD,IAAI,CAAC,iBAAiB,GAAG,IAAI,iBAAiB,CAC5C,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,UAAU,CAChB,CAAA;QACD,IAAI,CAAC,gBAAgB,GAAG,IAAI,gBAAgB,EAAE,CAAA;QAC9C,IAAI,CAAC,kBAAkB,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QAEpE,IAAI,WAAW,CAAC;YACd,eAAe,EACb,IAAI,CAAC,WAAW,CAAC,mCAAmC,CAAC,eAAe,CAAC;YACvE,eAAe,EACb,IAAI,CAAC,UAAU,CAAC,mCAAmC,CAAC,eAAe,CAAC;SACvE,CAAC,CAAA;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,mBAAmB,CACvB,SAAoB,EACpB,kBAAoC,EAAE;QAOtC,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,CAAC,eAAe,CAAC,CAAA;gBACjE,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,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;oBACvB,OAAO,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAClD,MAAM,EACN,eAAe,CAChB,CAA6B,CAAA;gBAChC,CAAC;gBACD,MAAM,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAA;gBAE3D,OAAO,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;oBAC1D,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,IAAI,EAAE,MAAM,CAAC,IAAI;iBAClB,CAAC,CAAC,CAAA;YACL,CAAC;YAED,KAAK,KAAK,CAAC,CAAC,CAAC;gBACX,MAAM,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAA;gBAE1D,OAAO,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;oBACzD,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,WAAW,EAAE,MAAM,CAAC,WAAW;iBAChC,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,eAAuD,EACvD,QAAQ,CACT,CAAA;QAEH,IAAI,MAAuB,CAAA;QAC3B,IAAI,eAAe,EAAE,CAAC;YACpB,sDAAsD;YACtD,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;YACtD,MAAM,GAAG;gBACP,SAAS,EAAE,OAAO,CAAC,EAAE;gBACrB,OAAO,EAAE,eAAe;gBACxB,kBAAkB;aACnB,CAAA;QACH,CAAC;aAAM,CAAC;YACN,qDAAqD;YACrD,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;QAC5E,CAAC;QAED,2EAA2E;QAC3E,mEAAmE;QACnE,uEAAuE;QACvE,qEAAqE;QACrE,0EAA0E;QAC1E,2CAA2C;QAC3C,IAAI,eAAe,KAAK,MAAM,EAAE,CAAC;YAC/B,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,kBAAkB,CAAC,CAAA;QAChE,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;IAED,6DAA6D;IACrD,KAAK,CAAC,kBAAkB,CAC9B,eAA0B,EAC1B,OAAgB,EAChB,QAAuE;QAEvE,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,KAAK,MAAM;gBACT,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;oBACvB,oEAAoE;oBACpE,iEAAiE;oBACjE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;oBAClE,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;oBACtD,OAAO,MAAM,CAAA;gBACf,CAAC;gBACD,OAAO,MAAM,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;YAEpE,KAAK,KAAK;gBACR,OAAO,MAAM,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;YAEnE;gBACE,MAAM,IAAI,KAAK,CACb,cAAc,OAAO,CAAC,SAAS,+FAA+F,CAC/H,CAAA;QACL,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACK,KAAK,CAAC,cAAc,CAC1B,QAAuE,EACvE,kBAAsC;QAEtC,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE,OAAM;QAE/B,qEAAqE;QACrE,8EAA8E;QAC9E,gFAAgF;QAChF,8EAA8E;QAC9E,+EAA+E;QAC/E,4EAA4E;QAC5E,4EAA4E;QAC5E,+EAA+E;QAC/E,4EAA4E;QAC5E,8DAA8D;QAE9D,oEAAoE;QACpE,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,IAAI,EAAE,UAAU;YAAE,OAAM;QAEzD,iEAAiE;QACjE,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAAE,OAAM;QAEzE,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CACpC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,MAAM,IAAI,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAC3E,CAAA;QACD,IAAI,CAAC,WAAW;YAAE,OAAM;QAExB,IAAI,CAAC;YACH,oEAAoE;YACpE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;YACtE,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,kBAAkB,EAAE,CAAC;gBAC7C,MAAM,GAAG,GAAG,kBAAkB,CAAC,IAAI,CACjC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,CAClE,CAAA;gBACD,IAAI,CAAC,GAAG;oBAAE,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACzC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,0EAA0E;YAC1E,4DAA4D;QAC9D,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CACjB,OAAgB,EAChB,QAAuE;QAEvE,IAAI,IAAI,CAAC,aAAa,IAAI,OAAO,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;YACvD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;YAC9D,oEAAoE;YACpE,kEAAkE;YAClE,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;YACtD,OAAO,MAAM,CAAA;QACf,CAAC;QACD,OAAO,MAAM,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;IACtE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,0EAA0E;YAC1E,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAA;YACvC,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;QACH,CAAC;QACD,MAAM,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,CAAA;IAC3C,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,CAItC,CAAA;QAET,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,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;YAChC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;gBACvB,4DAA4D;gBAC5D,mEAAmE;gBACnE,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;YACtD,CAAC;YACD,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,oBAAoB,EAAE,CAAA;YAC5D,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;YAC/C,CAAC;YAED,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAC3D,OAAO,EACP,YAAY,CACb,CAAA;YACD,OAAO;gBACL,IAAI,EAAE,UAAU;gBAChB,SAAS,EAAE,SAAS;aACrB,CAAA;QACH,CAAC;aAAM,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;YAC/B,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;QACnD,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,wCAAwC,SAAS,EAAE,CAAC,CAAA;QACtE,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,aAAa,CACjB,SAA0B,EAC1B,SAAyE;QAEzE,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,MAAM,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QAChD,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CACb,yDAAyD,SAAS,EAAE,CACrE,CAAA;QACH,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,CAAA;QACjE,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAA;QACzD,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE,CAAA;QAC/D,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;QACnD,CAAC;QAED,OAAO,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAChD,SAAS,EACT,cAAc,EACd,WAAW,CACZ,CAAA;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,CAItC,CAAA;QAET,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,EACb,gBAA6B,CAC9B,CAAA;QACH,CAAC;aAAM,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;YAChC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;gBACvB,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,OAAO,CAAC,CAAA;YAC1D,CAAC;YACD,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,oBAAoB,EAAE,CAAA;YAC5D,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;YAC/C,CAAC;YAED,OAAO,MAAM,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAClD,OAAO,EACP,SAAS,EACT,YAAY,CACb,CAAA;QACH,CAAC;aAAM,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;YAC/B,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,eAAe,CAC1C,OAAmC,CACpC,CAAA;QACH,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,6CAA6C,SAAS,EAAE,CAAC,CAAA;QAC3E,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,qBAAqB,CACzB,IAAY,EACZ,QAAmB;QAEnB,MAAM,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,CAAA;QACrE,MAAM,SAAS,GAAG,gBAAgB,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QACjD,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;YAC3B,OAAO,EAAE,CAAA;QACX,CAAC;QACD,OAAO,MAAM,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IACnE,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,0BAA0B,CAC9B,YAAwB;QAExB,MAAM,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,CAAA;QACrE,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CACb,iEAAiE,CAClE,CAAA;QACH,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,CAAA;QAC9D,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAA;QAChD,CAAC;QAED,IAAI,CAAC;YACH,0EAA0E;YAC1E,uEAAuE;YACvE,uEAAuE;YACvE,MAAM,eAAe,GAAG,aAA8C,CAAA;YACtE,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,eAAe,CAAA;YACvD,IAAI,SAAS,EAAE,QAAQ,CAAC,4BAA4B,CAAC,EAAE,CAAC;gBACtD,uEAAuE;gBACvE,gBAAgB;gBAChB,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,0BAA0B,CAC7D,YAAY,EACZ,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,IAAI,SAAS,CACxD,CAAA;gBACD,mEAAmE;gBACnE,yEAAyE;gBACzE,oDAAoD;gBACpD,iBAAiB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;gBACvC,OAAO,MAAM,CAAA;YACf,CAAC;YAED,qEAAqE;YACrE,MAAM,MAAM,GAAI,aAAuC,CAAC,MAAM,CAAA;YAC9D,MAAM,OAAO,GAAG,wBAAwB,CAAA;YAExC,IAAI,MAAM,IAAI,OAAO,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvE,MAAM,OAAO,GAAG,qBAAqB,CACnC,MAAM,CAAC,QAAQ,EACf,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,CAC3C,CAAA;gBACD,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;gBACxC,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC;oBAC7C,OAAO;oBACP,WAAW,EAAE,YAAY;iBAC1B,CAAC,CAAA;gBACF,IAAI,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC;oBAC/B,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAA;gBAC1D,CAAC;gBACD,yDAAyD;gBACzD,iBAAiB,CAAC,YAAY,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAA;gBACzD,OAAO,MAAM,CAAC,iBAAiB,CAAA;YACjC,CAAC;YAED,8CAA8C;YAC9C,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,CAAC;gBACnC,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;YACtE,CAAC;YAED,gFAAgF;YAChF,IAAI,WAA+C,CAAA;YACnD,IAAI,CAAC;gBACH,WAAW,GAAG,oBAAoB,CAAC,WAAW,CAAC,YAAY,CAAC,CAAA;YAC9D,CAAC;YAAC,MAAM,CAAC;gBACP,IAAI,CAAC;oBACH,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;gBAC9C,CAAC;gBAAC,MAAM,CAAC;oBACP,MAAM,IAAI,KAAK,CACb,wEAAwE,CACzE,CAAA;gBACH,CAAC;YACH,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,eAAe,CAAC,WAAW,CAAC,CAAA;YAC/D,MAAM,WAAW,GACf,MAAM,YAAY,oBAAoB;gBACpC,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE;gBACpB,CAAC,CAAC,IAAI,UAAU,CACZ,MAAM,CAAC,SAAS,CAAC;oBACf,oBAAoB,EAAE,KAAK;oBAC3B,gBAAgB,EAAE,KAAK;iBACxB,CAAC,CACH,CAAA;YACP,yEAAyE;YACzE,yEAAyE;YACzE,iDAAiD;YACjD,iBAAiB,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;YAC5C,OAAO,WAAW,CAAA;QACpB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,wEAAwE;YACxE,0EAA0E;YAC1E,wEAAwE;YACxE,MAAM,UAAU,CAAC,GAAG,CAAC,CAAA;QACvB,CAAC;IACH,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 { NetworkId, AvailableAddress, EVMCapabilities, Network, WalletMetadata } from '@meshconnect/uwc-types';
|
|
1
|
+
import type { NetworkId, AvailableAddress, EVMCapabilities, Network, WalletMetadata, WalletLifecycleEvent } 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
|
|
@@ -51,6 +51,18 @@ export declare class EthereumWalletService {
|
|
|
51
51
|
* Get connected provider
|
|
52
52
|
*/
|
|
53
53
|
getConnectedProvider(): EthereumProvider | null;
|
|
54
|
+
/**
|
|
55
|
+
* Subscribe to the live EIP-1193 provider's lifecycle events (account/chain
|
|
56
|
+
* switched in the wallet, disconnect). Returns a teardown, or `undefined` when
|
|
57
|
+
* there is no connected provider or it lacks `.on`/`.removeListener` (EIP-1193
|
|
58
|
+
* lists removeListener as SHOULD — attaching listeners we could never remove
|
|
59
|
+
* would BE the zombie-listener class this layer exists to prevent).
|
|
60
|
+
*
|
|
61
|
+
* PII boundary: the new address from `accountsChanged` is NEVER forwarded — an
|
|
62
|
+
* empty account list maps to `disconnect`, a non-empty one to a content-free
|
|
63
|
+
* `accountChanged`. `chainChanged` carries only the (non-PII) CAIP-2 chain id.
|
|
64
|
+
*/
|
|
65
|
+
onLifecycleEvent(listener: (event: WalletLifecycleEvent) => void): (() => void) | undefined;
|
|
54
66
|
/**
|
|
55
67
|
* Disconnect (clear state only)
|
|
56
68
|
*/
|
|
@@ -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,EACV,SAAS,EACT,gBAAgB,EAChB,eAAe,EAEf,OAAO,EACP,cAAc,
|
|
1
|
+
{"version":3,"file":"ethereum-wallet-service.d.ts","sourceRoot":"","sources":["../../../src/services/ethereum/ethereum-wallet-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,gBAAgB,EAChB,eAAe,EAEf,OAAO,EACP,cAAc,EACd,oBAAoB,EACrB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EACV,gBAAgB,EAChB,cAAc,IAAI,qBAAqB,EACxC,MAAM,yBAAyB,CAAA;AA8BhC;;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;IAoB1D;;OAEG;IACH,cAAc,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS;IAKzD;;OAEG;IACG,aAAa,CACjB,SAAS,EAAE,MAAM,EACjB,sBAAsB,CAAC,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,GAClD,OAAO,CAAC,IAAI,CAAC;IAsEhB;;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;;;;;;;;;;OAUG;IACH,gBAAgB,CACd,QAAQ,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,GAC9C,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS;IAoD3B;;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,5 +1,32 @@
|
|
|
1
1
|
import { getAvailableWallets as getEIP6963Wallets } from '../../eip6963-discovery';
|
|
2
2
|
import { supportedNetworks } from '@meshconnect/uwc-constants';
|
|
3
|
+
/**
|
|
4
|
+
* Normalize an EIP-1193 `chainChanged` payload (hex `'0x1'`, decimal string, or a
|
|
5
|
+
* number) to a CAIP-2 id. Returns undefined for an unparseable value rather than
|
|
6
|
+
* emitting a bogus chain id.
|
|
7
|
+
*/
|
|
8
|
+
function toCaipChainId(raw) {
|
|
9
|
+
let decimal;
|
|
10
|
+
if (typeof raw === 'string') {
|
|
11
|
+
// Validate the FULL string before converting: parseInt('0x1junk', 16) === 1,
|
|
12
|
+
// which would emit a bogus chain id instead of undefined.
|
|
13
|
+
if (/^0x[0-9a-fA-F]+$/.test(raw)) {
|
|
14
|
+
decimal = parseInt(raw, 16);
|
|
15
|
+
}
|
|
16
|
+
else if (/^\d+$/.test(raw)) {
|
|
17
|
+
decimal = parseInt(raw, 10);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
else if (typeof raw === 'number' && Number.isInteger(raw) && raw >= 0) {
|
|
21
|
+
decimal = raw;
|
|
22
|
+
}
|
|
23
|
+
// isSafeInteger: beyond 2^53-1 parseInt has already lost precision (and a
|
|
24
|
+
// ~256-nibble hex overflows to Infinity) — emitting a silently-wrong chain
|
|
25
|
+
// id is worse than emitting none.
|
|
26
|
+
return decimal !== undefined && Number.isSafeInteger(decimal)
|
|
27
|
+
? `eip155:${decimal}`
|
|
28
|
+
: undefined;
|
|
29
|
+
}
|
|
3
30
|
/**
|
|
4
31
|
* Service for managing Ethereum wallet connections
|
|
5
32
|
*/
|
|
@@ -166,6 +193,56 @@ export class EthereumWalletService {
|
|
|
166
193
|
getConnectedProvider() {
|
|
167
194
|
return this.connectedProvider;
|
|
168
195
|
}
|
|
196
|
+
/**
|
|
197
|
+
* Subscribe to the live EIP-1193 provider's lifecycle events (account/chain
|
|
198
|
+
* switched in the wallet, disconnect). Returns a teardown, or `undefined` when
|
|
199
|
+
* there is no connected provider or it lacks `.on`/`.removeListener` (EIP-1193
|
|
200
|
+
* lists removeListener as SHOULD — attaching listeners we could never remove
|
|
201
|
+
* would BE the zombie-listener class this layer exists to prevent).
|
|
202
|
+
*
|
|
203
|
+
* PII boundary: the new address from `accountsChanged` is NEVER forwarded — an
|
|
204
|
+
* empty account list maps to `disconnect`, a non-empty one to a content-free
|
|
205
|
+
* `accountChanged`. `chainChanged` carries only the (non-PII) CAIP-2 chain id.
|
|
206
|
+
*/
|
|
207
|
+
onLifecycleEvent(listener) {
|
|
208
|
+
const provider = this.connectedProvider;
|
|
209
|
+
if (!provider ||
|
|
210
|
+
typeof provider.on !== 'function' ||
|
|
211
|
+
typeof provider.removeListener !== 'function') {
|
|
212
|
+
return undefined;
|
|
213
|
+
}
|
|
214
|
+
// In the production iframe the connected provider is a Comlink proxy across
|
|
215
|
+
// the bridge: an un-proxied EIP-1193 handler can't be cloned over postMessage,
|
|
216
|
+
// and `on`/`removeListener` can't satisfy teardown across the bridge (callback
|
|
217
|
+
// identity). Subscribing here would throw or leak a listener. Until the bridge
|
|
218
|
+
// exposes a forwarding wrapper (P3), report lifecycle as unavailable over the
|
|
219
|
+
// bridge (the core emits `lifecycleTelemetryUnavailable`) rather than
|
|
220
|
+
// attempting a broken subscription.
|
|
221
|
+
if (typeof window !== 'undefined' &&
|
|
222
|
+
window
|
|
223
|
+
.UWCBridgeChildInitialized === true) {
|
|
224
|
+
return undefined;
|
|
225
|
+
}
|
|
226
|
+
const onAccounts = (accounts) => {
|
|
227
|
+
const list = Array.isArray(accounts) ? accounts : [];
|
|
228
|
+
listener(list.length === 0 ? { type: 'disconnect' } : { type: 'accountChanged' });
|
|
229
|
+
};
|
|
230
|
+
const onChain = (chainId) => {
|
|
231
|
+
const caip = toCaipChainId(chainId);
|
|
232
|
+
listener(caip !== undefined
|
|
233
|
+
? { type: 'chainChanged', chainId: caip }
|
|
234
|
+
: { type: 'chainChanged' });
|
|
235
|
+
};
|
|
236
|
+
const onDisconnect = () => listener({ type: 'disconnect' });
|
|
237
|
+
provider.on('accountsChanged', onAccounts);
|
|
238
|
+
provider.on('chainChanged', onChain);
|
|
239
|
+
provider.on('disconnect', onDisconnect);
|
|
240
|
+
return () => {
|
|
241
|
+
provider.removeListener?.('accountsChanged', onAccounts);
|
|
242
|
+
provider.removeListener?.('chainChanged', onChain);
|
|
243
|
+
provider.removeListener?.('disconnect', onDisconnect);
|
|
244
|
+
};
|
|
245
|
+
}
|
|
169
246
|
/**
|
|
170
247
|
* Disconnect (clear state only)
|
|
171
248
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ethereum-wallet-service.js","sourceRoot":"","sources":["../../../src/services/ethereum/ethereum-wallet-service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ethereum-wallet-service.js","sourceRoot":"","sources":["../../../src/services/ethereum/ethereum-wallet-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AvailableAddress } from '@meshconnect/uwc-types';
|
|
1
|
+
import type { AvailableAddress, WalletLifecycleEvent } from '@meshconnect/uwc-types';
|
|
2
2
|
import { type SolanaAdapter, type WalletStandardInfo } from '../../wallet-standard-discovery';
|
|
3
3
|
import { StorageService } from '../storage-service';
|
|
4
4
|
/**
|
|
@@ -46,6 +46,18 @@ export declare class SolanaWalletService {
|
|
|
46
46
|
* Get connected adapter
|
|
47
47
|
*/
|
|
48
48
|
getConnectedAdapter(): SolanaAdapter | null;
|
|
49
|
+
/**
|
|
50
|
+
* Subscribe to the connected wallet-standard adapter's lifecycle. Only the
|
|
51
|
+
* adapter's typed `disconnect` event is forwarded (`WalletAdapterEvents` doesn't
|
|
52
|
+
* expose a guaranteed account-change event, so we don't invent one). Returns a
|
|
53
|
+
* teardown, or undefined when there is no connected adapter / it can't be
|
|
54
|
+
* observed.
|
|
55
|
+
*
|
|
56
|
+
* Bridge guard: in the production iframe the adapter is a Comlink proxy — a raw
|
|
57
|
+
* handler can't ride the bridge — so we skip (the core reports lifecycle
|
|
58
|
+
* unavailable), mirroring the EVM path.
|
|
59
|
+
*/
|
|
60
|
+
onLifecycleEvent(listener: (event: WalletLifecycleEvent) => void): (() => void) | undefined;
|
|
49
61
|
/**
|
|
50
62
|
* Disconnect (clear state only, don't actually disconnect from wallet)
|
|
51
63
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solana-wallet-service.d.ts","sourceRoot":"","sources":["../../../src/services/solana/solana-wallet-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"solana-wallet-service.d.ts","sourceRoot":"","sources":["../../../src/services/solana/solana-wallet-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACxB,MAAM,iCAAiC,CAAA;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEnD;;GAEG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,eAAe,CAA2B;IAClD,OAAO,CAAC,gBAAgB,CAA6B;IACrD,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,cAAc,CAAgB;gBAE1B,cAAc,EAAE,cAAc;IAI1C;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAI1C;;OAEG;IACH,kBAAkB,IAAI,kBAAkB,EAAE;IAI1C;;OAEG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAI9D;;OAEG;IACG,uBAAuB,CAC3B,OAAO,EAAE,aAAa,EACtB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IA+BzB;;OAEG;IACG,OAAO,CAAC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAmB1E;;OAEG;IACH,uBAAuB,CACrB,mBAAmB,EAAE,MAAM,EAAE,EAC7B,OAAO,EAAE,MAAM,GACd,gBAAgB,EAAE;IAarB;;OAEG;IACH,kBAAkB,CAChB,OAAO,EAAE,aAAa,GAAG,IAAI,EAC7B,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,UAAU,CAAC,EAAE,MAAM,GAClB,IAAI;IAUP;;OAEG;IACH,UAAU,IAAI,MAAM,GAAG,IAAI;IAI3B;;OAEG;IACH,mBAAmB,IAAI,aAAa,GAAG,IAAI;IAI3C;;;;;;;;;;OAUG;IACH,gBAAgB,CACd,QAAQ,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,GAC9C,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS;IAqB3B;;OAEG;IACH,UAAU,IAAI,IAAI;CAInB"}
|
|
@@ -116,6 +116,35 @@ export class SolanaWalletService {
|
|
|
116
116
|
getConnectedAdapter() {
|
|
117
117
|
return this.connectedAdapter;
|
|
118
118
|
}
|
|
119
|
+
/**
|
|
120
|
+
* Subscribe to the connected wallet-standard adapter's lifecycle. Only the
|
|
121
|
+
* adapter's typed `disconnect` event is forwarded (`WalletAdapterEvents` doesn't
|
|
122
|
+
* expose a guaranteed account-change event, so we don't invent one). Returns a
|
|
123
|
+
* teardown, or undefined when there is no connected adapter / it can't be
|
|
124
|
+
* observed.
|
|
125
|
+
*
|
|
126
|
+
* Bridge guard: in the production iframe the adapter is a Comlink proxy — a raw
|
|
127
|
+
* handler can't ride the bridge — so we skip (the core reports lifecycle
|
|
128
|
+
* unavailable), mirroring the EVM path.
|
|
129
|
+
*/
|
|
130
|
+
onLifecycleEvent(listener) {
|
|
131
|
+
const adapter = this.connectedAdapter;
|
|
132
|
+
// A `.on`-only guard is safe HERE (unlike raw EIP-1193, where removeListener
|
|
133
|
+
// is only a SHOULD): the adapter is a UWC-constructed StandardWalletAdapter
|
|
134
|
+
// backed by eventemitter3, where `.off` exists whenever `.on` does.
|
|
135
|
+
if (!adapter || typeof adapter.on !== 'function')
|
|
136
|
+
return undefined;
|
|
137
|
+
if (typeof window !== 'undefined' &&
|
|
138
|
+
window
|
|
139
|
+
.UWCBridgeChildInitialized === true) {
|
|
140
|
+
return undefined;
|
|
141
|
+
}
|
|
142
|
+
const onDisconnect = () => listener({ type: 'disconnect' });
|
|
143
|
+
adapter.on('disconnect', onDisconnect);
|
|
144
|
+
return () => {
|
|
145
|
+
adapter.off('disconnect', onDisconnect);
|
|
146
|
+
};
|
|
147
|
+
}
|
|
119
148
|
/**
|
|
120
149
|
* Disconnect (clear state only, don't actually disconnect from wallet)
|
|
121
150
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solana-wallet-service.js","sourceRoot":"","sources":["../../../src/services/solana/solana-wallet-service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"solana-wallet-service.js","sourceRoot":"","sources":["../../../src/services/solana/solana-wallet-service.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,gBAAgB,EAGjB,MAAM,iCAAiC,CAAA;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEnD;;GAEG;AACH,MAAM,OAAO,mBAAmB;IACtB,eAAe,GAAyB,EAAE,CAAA;IAC1C,gBAAgB,GAAyB,IAAI,CAAA;IAC7C,OAAO,GAAkB,IAAI,CAAA;IAC7B,cAAc,CAAgB;IAEtC,YAAY,cAA8B;QACxC,IAAI,CAAC,cAAc,GAAG,cAAc,CAAA;IACtC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,mBAAmB;QACvB,IAAI,CAAC,eAAe,GAAG,MAAM,gBAAgB,EAAE,CAAA;IACjD,CAAC;IAED;;OAEG;IACH,kBAAkB;QAChB,OAAO,IAAI,CAAC,eAAe,CAAA;IAC7B,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,IAAY;QAC3B,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;IACxD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,uBAAuB,CAC3B,OAAsB,EACtB,UAAkB;QAElB,IAAI,CAAC;YACH,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAA;YAC3D,0DAA0D;YAC1D,IAAI,eAAe,EAAE,CAAC;gBACpB,OAAO,eAAe,CAAA;YACxB,CAAC;YAED,4DAA4D;YAC5D,iEAAiE;YACjE,IAAI,IAAI,CAAC,cAAc,CAAC,kCAAkC,CAAC,UAAU,CAAC,EAAE,CAAC;gBACvE,MAAM,kBAAkB,GAAG,MAAM,OAAO,CAAC,UAAU,CAAA;gBACnD,IAAI,CAAC,kBAAkB,EAAE,CAAC;oBACxB,IAAI,CAAC;wBACH,MAAM,OAAO,CAAC,OAAO,EAAE,CAAA;wBAEvB,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAA;wBAC3D,IAAI,eAAe,EAAE,CAAC;4BACpB,OAAO,eAAe,CAAA;wBACxB,CAAC;oBACH,CAAC;oBAAC,MAAM,CAAC;wBACP,qFAAqF;oBACvF,CAAC;gBACH,CAAC;YACH,CAAC;YACD,OAAO,IAAI,CAAA;QACb,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,OAAsB,EAAE,UAAkB;QACtD,+BAA+B;QAC/B,MAAM,OAAO,CAAC,OAAO,EAAE,CAAA;QAEvB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAA;QAEnD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;QACpD,CAAC;QAED,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAA;QAC/B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QAEtB,iCAAiC;QACjC,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAA;QAErD,OAAO,OAAO,CAAA;IAChB,CAAC;IAED;;OAEG;IACH,uBAAuB,CACrB,mBAA6B,EAC7B,OAAe;QAEf,MAAM,SAAS,GAAuB,EAAE,CAAA;QACxC,mBAAmB,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;YACtC,IAAI,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBACpC,SAAS,CAAC,IAAI,CAAC;oBACb,OAAO;oBACP,SAAS,EAAE,SAAsB;iBAClC,CAAC,CAAA;YACJ,CAAC;QACH,CAAC,CAAC,CAAA;QACF,OAAO,SAAS,CAAA;IAClB,CAAC;IAED;;OAEG;IACH,kBAAkB,CAChB,OAA6B,EAC7B,OAAsB,EACtB,UAAmB;QAEnB,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAA;QAC/B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QAEtB,8CAA8C;QAC9C,IAAI,OAAO,IAAI,OAAO,IAAI,UAAU,EAAE,CAAC;YACrC,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAA;QACvD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED;;OAEG;IACH,mBAAmB;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAA;IAC9B,CAAC;IAED;;;;;;;;;;OAUG;IACH,gBAAgB,CACd,QAA+C;QAE/C,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAA;QACrC,6EAA6E;QAC7E,4EAA4E;QAC5E,oEAAoE;QACpE,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,CAAC,EAAE,KAAK,UAAU;YAAE,OAAO,SAAS,CAAA;QAClE,IACE,OAAO,MAAM,KAAK,WAAW;YAC5B,MAA6D;iBAC3D,yBAAyB,KAAK,IAAI,EACrC,CAAC;YACD,OAAO,SAAS,CAAA;QAClB,CAAC;QAED,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAA;QAC3D,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,CAAA;QACtC,OAAO,GAAG,EAAE;YACV,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,YAAY,CAAC,CAAA;QACzC,CAAC,CAAA;IACH,CAAC;IAED;;OAEG;IACH,UAAU;QACR,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAA;QAC5B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;IACrB,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tron-wallet-service.d.ts","sourceRoot":"","sources":["../../../src/services/tron/tron-wallet-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,gBAAgB,EAChB,cAAc,EACf,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"tron-wallet-service.d.ts","sourceRoot":"","sources":["../../../src/services/tron/tron-wallet-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,gBAAgB,EAChB,cAAc,EACf,MAAM,wBAAwB,CAAA;AAE/B,OAAO,EAEL,KAAK,YAAY,EAEjB,KAAK,kBAAkB,EACxB,MAAM,sBAAsB,CAAA;AAE7B;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,eAAe,CAA2B;IAClD,OAAO,CAAC,iBAAiB,CAA4B;IACrD,OAAO,CAAC,OAAO,CAAsB;IAErC;;OAEG;IACG,mBAAmB,CAAC,eAAe,CAAC,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5E;;OAEG;IACH,kBAAkB,IAAI,kBAAkB,EAAE;IAI1C;;OAEG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAI9D;;;;OAIG;YACW,cAAc;IAU5B;;OAEG;IACG,uBAAuB,CAC3B,QAAQ,EAAE,YAAY,GACrB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAWzB;;OAEG;IACG,OAAO,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAyBtD;;OAEG;IACH,uBAAuB,CACrB,mBAAmB,EAAE,MAAM,EAAE,EAC7B,OAAO,EAAE,MAAM,GACd,gBAAgB,EAAE;IAarB;;OAEG;IACH,kBAAkB,CAChB,QAAQ,EAAE,YAAY,GAAG,IAAI,EAC7B,OAAO,EAAE,MAAM,GAAG,IAAI,GACrB,IAAI;IAKP;;OAEG;IACH,UAAU,IAAI,MAAM,GAAG,IAAI;IAI3B;;OAEG;IACH,oBAAoB,IAAI,YAAY,GAAG,IAAI;IAI3C;;OAEG;IACH,UAAU,IAAI,IAAI;IAKlB,mCAAmC,CACjC,eAAe,GAAE,cAAc,EAAO,GACrC,MAAM,EAAE;CASZ"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { WalletConnectorError } from '@meshconnect/uwc-types';
|
|
1
2
|
import { getTronWallets } from '../../tron-discovery';
|
|
2
3
|
/**
|
|
3
4
|
* Service for managing Tron wallet connections
|
|
@@ -63,7 +64,13 @@ export class TronWalletService {
|
|
|
63
64
|
// After requesting, check for default address on tronWeb
|
|
64
65
|
const address = await this.resolveAddress(provider.tronWeb);
|
|
65
66
|
if (!address) {
|
|
66
|
-
throw
|
|
67
|
+
// Delta C: throw a typed connector error so telemetry classifies this as
|
|
68
|
+
// source:'connector' (our injected-Tron path), not an unknown-origin error
|
|
69
|
+
// — the ONC-3172 "Tron connected but exposed no address" class.
|
|
70
|
+
throw new WalletConnectorError({
|
|
71
|
+
type: 'unknown',
|
|
72
|
+
message: 'No address returned from Tron wallet'
|
|
73
|
+
});
|
|
67
74
|
}
|
|
68
75
|
this.connectedProvider = provider;
|
|
69
76
|
this.account = address;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tron-wallet-service.js","sourceRoot":"","sources":["../../../src/services/tron/tron-wallet-service.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,cAAc,EAIf,MAAM,sBAAsB,CAAA;AAE7B;;GAEG;AACH,MAAM,OAAO,iBAAiB;IACpB,eAAe,GAAyB,EAAE,CAAA;IAC1C,iBAAiB,GAAwB,IAAI,CAAA;IAC7C,OAAO,GAAkB,IAAI,CAAA;IAErC;;OAEG;IACH,KAAK,CAAC,mBAAmB,CAAC,eAAkC;QAC1D,IAAI,CAAC,eAAe,GAAG,MAAM,cAAc,CAAC,eAAe,CAAC,CAAA;IAC9D,CAAC;IAED;;OAEG;IACH,kBAAkB;QAChB,OAAO,IAAI,CAAC,eAAe,CAAA;IAC7B,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,IAAY;QAC3B,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;IACxD,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,cAAc,CAAC,OAAgB;QAC3C,IAAI,OAAO,OAAO,CAAC,iBAAiB,KAAK,UAAU,EAAE,CAAC;YACpD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,iBAAiB,EAAE,CAAA;YAC9C,OAAO,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QAClD,CAAC;QACD,OAAO,OAAO,CAAC,cAAc,EAAE,MAAM;YACnC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC;YACvC,CAAC,CAAC,IAAI,CAAA;IACV,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,uBAAuB,CAC3B,QAAsB;QAEtB,IAAI,CAAC;YACH,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;gBACnB,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;YACpD,CAAC;YACD,OAAO,IAAI,CAAA;QACb,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,QAAsB;QAClC,sEAAsE;QACtE,IAAI,OAAO,QAAQ,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;YAC3C,MAAM,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC,CAAA;QAC5D,CAAC;QAED,yDAAyD;QACzD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;QAE3D,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"tron-wallet-service.js","sourceRoot":"","sources":["../../../src/services/tron/tron-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.
|
|
3
|
+
"version": "0.16.0",
|
|
4
4
|
"description": "Injected connector for Universal Wallet Connector",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -27,11 +27,11 @@
|
|
|
27
27
|
"buffer": "^6.0.3",
|
|
28
28
|
"uuid": "^13.0.0",
|
|
29
29
|
"viem": "^2.44.4",
|
|
30
|
-
"@meshconnect/uwc-bridge-child": "0.
|
|
31
|
-
"@meshconnect/uwc-constants": "0.6.
|
|
32
|
-
"@meshconnect/uwc-ton-connector": "0.
|
|
33
|
-
"@meshconnect/uwc-tron-connector": "0.3.
|
|
34
|
-
"@meshconnect/uwc-types": "0.
|
|
30
|
+
"@meshconnect/uwc-bridge-child": "0.3.0",
|
|
31
|
+
"@meshconnect/uwc-constants": "0.6.8",
|
|
32
|
+
"@meshconnect/uwc-ton-connector": "0.7.0",
|
|
33
|
+
"@meshconnect/uwc-tron-connector": "0.3.1",
|
|
34
|
+
"@meshconnect/uwc-types": "0.17.0"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
37
|
"typescript": "^5.9.3"
|
|
@@ -1025,4 +1025,97 @@ describe('InjectedConnector', () => {
|
|
|
1025
1025
|
expect(result).toEqual({})
|
|
1026
1026
|
})
|
|
1027
1027
|
})
|
|
1028
|
+
|
|
1029
|
+
describe('onLifecycleEvent routing', () => {
|
|
1030
|
+
// The core passes an explicit context naming the session it is attaching
|
|
1031
|
+
// for — the connector must never infer it from ambient state. The
|
|
1032
|
+
// secondary-namespace gather can leave MORE than one service holding a live
|
|
1033
|
+
// surface (e.g. a Solana-primary Phantom session with an authorized EVM side
|
|
1034
|
+
// sets the Ethereum service's connectedProvider too), so lifecycle follows
|
|
1035
|
+
// context.namespace, never a fixed service preference.
|
|
1036
|
+
const getMocks = async () => {
|
|
1037
|
+
const { EthereumWalletService } =
|
|
1038
|
+
await import('./services/ethereum/ethereum-wallet-service')
|
|
1039
|
+
const { SolanaWalletService } =
|
|
1040
|
+
await import('./services/solana/solana-wallet-service')
|
|
1041
|
+
return {
|
|
1042
|
+
ethService: vi.mocked(EthereumWalletService).mock.results[0].value,
|
|
1043
|
+
solService: vi.mocked(SolanaWalletService).mock.results[0].value
|
|
1044
|
+
}
|
|
1045
|
+
}
|
|
1046
|
+
|
|
1047
|
+
it('routes a solana session to the Solana service even when the EVM side is live', async () => {
|
|
1048
|
+
const { ethService, solService } = await getMocks()
|
|
1049
|
+
const ethUnsub = vi.fn()
|
|
1050
|
+
const solUnsub = vi.fn()
|
|
1051
|
+
ethService.onLifecycleEvent.mockReturnValue(ethUnsub)
|
|
1052
|
+
solService.onLifecycleEvent.mockReturnValue(solUnsub)
|
|
1053
|
+
|
|
1054
|
+
const listener = vi.fn()
|
|
1055
|
+
const teardown = connector.onLifecycleEvent(listener, {
|
|
1056
|
+
connectionMode: 'injected',
|
|
1057
|
+
namespace: 'solana',
|
|
1058
|
+
walletId: 'phantom'
|
|
1059
|
+
})
|
|
1060
|
+
|
|
1061
|
+
expect(solService.onLifecycleEvent).toHaveBeenCalledWith(listener)
|
|
1062
|
+
expect(ethService.onLifecycleEvent).not.toHaveBeenCalled()
|
|
1063
|
+
expect(teardown).toBe(solUnsub)
|
|
1064
|
+
})
|
|
1065
|
+
|
|
1066
|
+
it('routes an eip155 session to the Ethereum service', async () => {
|
|
1067
|
+
const { ethService, solService } = await getMocks()
|
|
1068
|
+
const ethUnsub = vi.fn()
|
|
1069
|
+
ethService.onLifecycleEvent.mockReturnValue(ethUnsub)
|
|
1070
|
+
|
|
1071
|
+
const listener = vi.fn()
|
|
1072
|
+
const teardown = connector.onLifecycleEvent(listener, {
|
|
1073
|
+
connectionMode: 'injected',
|
|
1074
|
+
namespace: 'eip155'
|
|
1075
|
+
})
|
|
1076
|
+
|
|
1077
|
+
expect(ethService.onLifecycleEvent).toHaveBeenCalledWith(listener)
|
|
1078
|
+
expect(solService.onLifecycleEvent).not.toHaveBeenCalled()
|
|
1079
|
+
expect(teardown).toBe(ethUnsub)
|
|
1080
|
+
})
|
|
1081
|
+
|
|
1082
|
+
it('returns undefined for a tron session even when the EVM side is live', async () => {
|
|
1083
|
+
// TRON injected lifecycle isn't wired yet; attaching the live EVM provider
|
|
1084
|
+
// instead would mislabel EVM events with the TRON session's routing.
|
|
1085
|
+
const { ethService, solService } = await getMocks()
|
|
1086
|
+
ethService.onLifecycleEvent.mockReturnValue(vi.fn())
|
|
1087
|
+
|
|
1088
|
+
expect(
|
|
1089
|
+
connector.onLifecycleEvent(vi.fn(), {
|
|
1090
|
+
connectionMode: 'injected',
|
|
1091
|
+
namespace: 'tron'
|
|
1092
|
+
})
|
|
1093
|
+
).toBeUndefined()
|
|
1094
|
+
expect(ethService.onLifecycleEvent).not.toHaveBeenCalled()
|
|
1095
|
+
expect(solService.onLifecycleEvent).not.toHaveBeenCalled()
|
|
1096
|
+
})
|
|
1097
|
+
|
|
1098
|
+
it('returns undefined for a tvm session (TON injected lifecycle not wired)', async () => {
|
|
1099
|
+
const { ethService } = await getMocks()
|
|
1100
|
+
ethService.onLifecycleEvent.mockReturnValue(vi.fn())
|
|
1101
|
+
|
|
1102
|
+
expect(
|
|
1103
|
+
connector.onLifecycleEvent(vi.fn(), {
|
|
1104
|
+
connectionMode: 'injected',
|
|
1105
|
+
namespace: 'tvm'
|
|
1106
|
+
})
|
|
1107
|
+
).toBeUndefined()
|
|
1108
|
+
expect(ethService.onLifecycleEvent).not.toHaveBeenCalled()
|
|
1109
|
+
})
|
|
1110
|
+
|
|
1111
|
+
it('returns undefined when the context names no namespace', async () => {
|
|
1112
|
+
const { ethService, solService } = await getMocks()
|
|
1113
|
+
|
|
1114
|
+
expect(
|
|
1115
|
+
connector.onLifecycleEvent(vi.fn(), { connectionMode: 'injected' })
|
|
1116
|
+
).toBeUndefined()
|
|
1117
|
+
expect(ethService.onLifecycleEvent).not.toHaveBeenCalled()
|
|
1118
|
+
expect(solService.onLifecycleEvent).not.toHaveBeenCalled()
|
|
1119
|
+
})
|
|
1120
|
+
})
|
|
1028
1121
|
})
|
|
@@ -20,7 +20,9 @@ import type {
|
|
|
20
20
|
SignatureType,
|
|
21
21
|
EIP712TypedData,
|
|
22
22
|
WalletMetadata,
|
|
23
|
-
TonConnectConfig
|
|
23
|
+
TonConnectConfig,
|
|
24
|
+
WalletLifecycleEvent,
|
|
25
|
+
WalletLifecycleContext
|
|
24
26
|
} from '@meshconnect/uwc-types'
|
|
25
27
|
import { assertSameMessage } from '@meshconnect/uwc-types'
|
|
26
28
|
import {
|
|
@@ -71,7 +73,9 @@ export class InjectedConnector implements Connector {
|
|
|
71
73
|
expectedWallets: WalletMetadata[] = [],
|
|
72
74
|
tonConnectConfig?: TonConnectConfig,
|
|
73
75
|
tronConnectorConfig?: TronConnectorConfig,
|
|
74
|
-
networks: Network[] = []
|
|
76
|
+
networks: Network[] = [],
|
|
77
|
+
// Optional sink for BridgeChild discovery failures (wired to UWC's observer).
|
|
78
|
+
onBridgeError?: (info: { namespace: string; message: string }) => void
|
|
75
79
|
) {
|
|
76
80
|
this.networkRpcMap = networkRpcMap
|
|
77
81
|
this.networks = networks
|
|
@@ -101,7 +105,8 @@ export class InjectedConnector implements Connector {
|
|
|
101
105
|
tronInjectedIds:
|
|
102
106
|
this.tronService.getTronWalletIdsFromExpectedWallets(expectedWallets),
|
|
103
107
|
tonJsBridgeKeys:
|
|
104
|
-
this.tonService.getTonBridgeKeysFromExpectedWallets(expectedWallets)
|
|
108
|
+
this.tonService.getTonBridgeKeysFromExpectedWallets(expectedWallets),
|
|
109
|
+
...(onBridgeError ? { onError: onBridgeError } : {})
|
|
105
110
|
})
|
|
106
111
|
}
|
|
107
112
|
|
|
@@ -337,6 +342,35 @@ export class InjectedConnector implements Connector {
|
|
|
337
342
|
await this.connectionManager.disconnect()
|
|
338
343
|
}
|
|
339
344
|
|
|
345
|
+
/**
|
|
346
|
+
* Observe post-connect lifecycle from the live provider of the namespace the
|
|
347
|
+
* CALLER names in `context`. Routing must follow the session being attached
|
|
348
|
+
* for, not a fixed service preference or ambient connector state: the
|
|
349
|
+
* secondary-namespace gather (`checkAndAdd*Addresses`) can leave MORE than
|
|
350
|
+
* one service holding a live surface — e.g. a Solana-primary Phantom session
|
|
351
|
+
* with an authorized EVM side also sets the Ethereum service's provider — and
|
|
352
|
+
* attaching the wrong one would label that provider's events with this
|
|
353
|
+
* session's routing (an EVM chain switch reported against a Solana session)
|
|
354
|
+
* and miss the active namespace's own signals.
|
|
355
|
+
*
|
|
356
|
+
* EVM (EIP-1193) and Solana (wallet-standard) have a live event surface today;
|
|
357
|
+
* TRON / TON injected are follow-ons behind the same contract (until then they
|
|
358
|
+
* return undefined → the core emits `lifecycleTelemetryUnavailable`).
|
|
359
|
+
*/
|
|
360
|
+
onLifecycleEvent(
|
|
361
|
+
listener: (event: WalletLifecycleEvent) => void,
|
|
362
|
+
context: WalletLifecycleContext
|
|
363
|
+
): (() => void) | undefined {
|
|
364
|
+
switch (context.namespace) {
|
|
365
|
+
case 'eip155':
|
|
366
|
+
return this.ethereumService.onLifecycleEvent(listener)
|
|
367
|
+
case 'solana':
|
|
368
|
+
return this.solanaService.onLifecycleEvent(listener)
|
|
369
|
+
default:
|
|
370
|
+
return undefined
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
|
|
340
374
|
/**
|
|
341
375
|
* Sign a message with the connected wallet
|
|
342
376
|
*/
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { describe, it, expect, beforeEach, vi } from 'vitest'
|
|
2
2
|
import { EthereumWalletService } from './ethereum-wallet-service'
|
|
3
3
|
import type { EthereumProvider } from '../../eip6963-discovery'
|
|
4
|
-
import type { Network } from '@meshconnect/uwc-types'
|
|
4
|
+
import type { Network, WalletLifecycleEvent } from '@meshconnect/uwc-types'
|
|
5
5
|
|
|
6
6
|
// Mock the eip6963-discovery module
|
|
7
7
|
vi.mock('../../eip6963-discovery', () => ({
|
|
@@ -474,4 +474,116 @@ describe('EthereumWalletService', () => {
|
|
|
474
474
|
})
|
|
475
475
|
})
|
|
476
476
|
})
|
|
477
|
+
|
|
478
|
+
describe('onLifecycleEvent', () => {
|
|
479
|
+
function providerWithEvents() {
|
|
480
|
+
const handlers: Record<string, (arg?: unknown) => void> = {}
|
|
481
|
+
const provider = {
|
|
482
|
+
request: vi.fn(),
|
|
483
|
+
on: (event: string, h: (arg?: unknown) => void) => {
|
|
484
|
+
handlers[event] = h
|
|
485
|
+
},
|
|
486
|
+
removeListener: vi.fn((event: string) => {
|
|
487
|
+
delete handlers[event]
|
|
488
|
+
})
|
|
489
|
+
} as unknown as EthereumProvider
|
|
490
|
+
return { provider, handlers }
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
it('returns undefined when there is no connected provider', () => {
|
|
494
|
+
expect(service.onLifecycleEvent(() => {})).toBeUndefined()
|
|
495
|
+
})
|
|
496
|
+
|
|
497
|
+
it('returns undefined when the connected provider exposes no .on', () => {
|
|
498
|
+
service['connectedProvider'] = {
|
|
499
|
+
request: vi.fn()
|
|
500
|
+
} as unknown as EthereumProvider
|
|
501
|
+
expect(service.onLifecycleEvent(() => {})).toBeUndefined()
|
|
502
|
+
})
|
|
503
|
+
|
|
504
|
+
it('returns undefined when the provider has .on but no .removeListener (would leak on teardown)', () => {
|
|
505
|
+
// EIP-1193 lists removeListener as SHOULD, not MUST. Attaching listeners
|
|
506
|
+
// we can never remove IS the zombie-listener class this layer targets —
|
|
507
|
+
// never half-subscribe.
|
|
508
|
+
const on = vi.fn()
|
|
509
|
+
service['connectedProvider'] = {
|
|
510
|
+
request: vi.fn(),
|
|
511
|
+
on
|
|
512
|
+
} as unknown as EthereumProvider
|
|
513
|
+
expect(service.onLifecycleEvent(() => {})).toBeUndefined()
|
|
514
|
+
expect(on).not.toHaveBeenCalled()
|
|
515
|
+
})
|
|
516
|
+
|
|
517
|
+
it('returns undefined in iframe bridge mode (the provider is a Comlink proxy)', () => {
|
|
518
|
+
const { provider } = providerWithEvents()
|
|
519
|
+
service['connectedProvider'] = provider
|
|
520
|
+
// The bridge child sets this flag when UWC runs inside the Link iframe; a
|
|
521
|
+
// raw EIP-1193 handler can't ride the bridge, so we must NOT subscribe.
|
|
522
|
+
;(
|
|
523
|
+
window as unknown as { UWCBridgeChildInitialized?: boolean }
|
|
524
|
+
).UWCBridgeChildInitialized = true
|
|
525
|
+
try {
|
|
526
|
+
expect(service.onLifecycleEvent(() => {})).toBeUndefined()
|
|
527
|
+
} finally {
|
|
528
|
+
delete (window as unknown as { UWCBridgeChildInitialized?: boolean })
|
|
529
|
+
.UWCBridgeChildInitialized
|
|
530
|
+
}
|
|
531
|
+
})
|
|
532
|
+
|
|
533
|
+
it('maps events, drops the address, and converts the chain id to CAIP-2', () => {
|
|
534
|
+
const { provider, handlers } = providerWithEvents()
|
|
535
|
+
service['connectedProvider'] = provider
|
|
536
|
+
const events: WalletLifecycleEvent[] = []
|
|
537
|
+
const stop = service.onLifecycleEvent(e => events.push(e))
|
|
538
|
+
expect(typeof stop).toBe('function')
|
|
539
|
+
|
|
540
|
+
handlers.accountsChanged!(['0xNEWADDRESS'])
|
|
541
|
+
handlers.accountsChanged!([]) // empty list = disconnected
|
|
542
|
+
handlers.chainChanged!('0x2105') // 8453 (Base)
|
|
543
|
+
handlers.disconnect!()
|
|
544
|
+
|
|
545
|
+
expect(events).toEqual([
|
|
546
|
+
{ type: 'accountChanged' },
|
|
547
|
+
{ type: 'disconnect' },
|
|
548
|
+
{ type: 'chainChanged', chainId: 'eip155:8453' },
|
|
549
|
+
{ type: 'disconnect' }
|
|
550
|
+
])
|
|
551
|
+
// The new address NEVER appears in an emitted event (PII boundary).
|
|
552
|
+
expect(JSON.stringify(events)).not.toContain('0xNEWADDRESS')
|
|
553
|
+
|
|
554
|
+
stop!()
|
|
555
|
+
expect(provider.removeListener).toHaveBeenCalledTimes(3)
|
|
556
|
+
})
|
|
557
|
+
|
|
558
|
+
it('emits chainChanged WITHOUT a chainId for malformed payloads — never a bogus CAIP id', () => {
|
|
559
|
+
const { provider, handlers } = providerWithEvents()
|
|
560
|
+
service['connectedProvider'] = provider
|
|
561
|
+
const events: WalletLifecycleEvent[] = []
|
|
562
|
+
service.onLifecycleEvent(e => events.push(e))
|
|
563
|
+
|
|
564
|
+
handlers.chainChanged!('0x1junk') // parseInt(_, 16) would read 1
|
|
565
|
+
handlers.chainChanged!('12abc') // parseInt(_, 10) would read 12
|
|
566
|
+
handlers.chainChanged!('-5') // negative
|
|
567
|
+
handlers.chainChanged!(1.5) // non-integer number
|
|
568
|
+
handlers.chainChanged!(-1) // negative number
|
|
569
|
+
handlers.chainChanged!('0x') // no digits
|
|
570
|
+
handlers.chainChanged!('0x20000000000001') // 2^53+1: parseInt lost precision
|
|
571
|
+
handlers.chainChanged!('9007199254740993') // 2^53+1 decimal: same
|
|
572
|
+
handlers.chainChanged!('137') // valid decimal string
|
|
573
|
+
handlers.chainChanged!(8453) // valid number
|
|
574
|
+
|
|
575
|
+
expect(events).toEqual([
|
|
576
|
+
{ type: 'chainChanged' },
|
|
577
|
+
{ type: 'chainChanged' },
|
|
578
|
+
{ type: 'chainChanged' },
|
|
579
|
+
{ type: 'chainChanged' },
|
|
580
|
+
{ type: 'chainChanged' },
|
|
581
|
+
{ type: 'chainChanged' },
|
|
582
|
+
{ type: 'chainChanged' },
|
|
583
|
+
{ type: 'chainChanged' },
|
|
584
|
+
{ type: 'chainChanged', chainId: 'eip155:137' },
|
|
585
|
+
{ type: 'chainChanged', chainId: 'eip155:8453' }
|
|
586
|
+
])
|
|
587
|
+
})
|
|
588
|
+
})
|
|
477
589
|
})
|
|
@@ -4,7 +4,8 @@ import type {
|
|
|
4
4
|
EVMCapabilities,
|
|
5
5
|
EVMCapabilityStatus,
|
|
6
6
|
Network,
|
|
7
|
-
WalletMetadata
|
|
7
|
+
WalletMetadata,
|
|
8
|
+
WalletLifecycleEvent
|
|
8
9
|
} from '@meshconnect/uwc-types'
|
|
9
10
|
import type {
|
|
10
11
|
EthereumProvider,
|
|
@@ -13,6 +14,32 @@ import type {
|
|
|
13
14
|
import { getAvailableWallets as getEIP6963Wallets } from '../../eip6963-discovery'
|
|
14
15
|
import { supportedNetworks } from '@meshconnect/uwc-constants'
|
|
15
16
|
|
|
17
|
+
/**
|
|
18
|
+
* Normalize an EIP-1193 `chainChanged` payload (hex `'0x1'`, decimal string, or a
|
|
19
|
+
* number) to a CAIP-2 id. Returns undefined for an unparseable value rather than
|
|
20
|
+
* emitting a bogus chain id.
|
|
21
|
+
*/
|
|
22
|
+
function toCaipChainId(raw: unknown): NetworkId | undefined {
|
|
23
|
+
let decimal: number | undefined
|
|
24
|
+
if (typeof raw === 'string') {
|
|
25
|
+
// Validate the FULL string before converting: parseInt('0x1junk', 16) === 1,
|
|
26
|
+
// which would emit a bogus chain id instead of undefined.
|
|
27
|
+
if (/^0x[0-9a-fA-F]+$/.test(raw)) {
|
|
28
|
+
decimal = parseInt(raw, 16)
|
|
29
|
+
} else if (/^\d+$/.test(raw)) {
|
|
30
|
+
decimal = parseInt(raw, 10)
|
|
31
|
+
}
|
|
32
|
+
} else if (typeof raw === 'number' && Number.isInteger(raw) && raw >= 0) {
|
|
33
|
+
decimal = raw
|
|
34
|
+
}
|
|
35
|
+
// isSafeInteger: beyond 2^53-1 parseInt has already lost precision (and a
|
|
36
|
+
// ~256-nibble hex overflows to Infinity) — emitting a silently-wrong chain
|
|
37
|
+
// id is worse than emitting none.
|
|
38
|
+
return decimal !== undefined && Number.isSafeInteger(decimal)
|
|
39
|
+
? (`eip155:${decimal}` as NetworkId)
|
|
40
|
+
: undefined
|
|
41
|
+
}
|
|
42
|
+
|
|
16
43
|
/**
|
|
17
44
|
* Service for managing Ethereum wallet connections
|
|
18
45
|
*/
|
|
@@ -210,6 +237,71 @@ export class EthereumWalletService {
|
|
|
210
237
|
return this.connectedProvider
|
|
211
238
|
}
|
|
212
239
|
|
|
240
|
+
/**
|
|
241
|
+
* Subscribe to the live EIP-1193 provider's lifecycle events (account/chain
|
|
242
|
+
* switched in the wallet, disconnect). Returns a teardown, or `undefined` when
|
|
243
|
+
* there is no connected provider or it lacks `.on`/`.removeListener` (EIP-1193
|
|
244
|
+
* lists removeListener as SHOULD — attaching listeners we could never remove
|
|
245
|
+
* would BE the zombie-listener class this layer exists to prevent).
|
|
246
|
+
*
|
|
247
|
+
* PII boundary: the new address from `accountsChanged` is NEVER forwarded — an
|
|
248
|
+
* empty account list maps to `disconnect`, a non-empty one to a content-free
|
|
249
|
+
* `accountChanged`. `chainChanged` carries only the (non-PII) CAIP-2 chain id.
|
|
250
|
+
*/
|
|
251
|
+
onLifecycleEvent(
|
|
252
|
+
listener: (event: WalletLifecycleEvent) => void
|
|
253
|
+
): (() => void) | undefined {
|
|
254
|
+
const provider = this.connectedProvider
|
|
255
|
+
if (
|
|
256
|
+
!provider ||
|
|
257
|
+
typeof provider.on !== 'function' ||
|
|
258
|
+
typeof provider.removeListener !== 'function'
|
|
259
|
+
) {
|
|
260
|
+
return undefined
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
// In the production iframe the connected provider is a Comlink proxy across
|
|
264
|
+
// the bridge: an un-proxied EIP-1193 handler can't be cloned over postMessage,
|
|
265
|
+
// and `on`/`removeListener` can't satisfy teardown across the bridge (callback
|
|
266
|
+
// identity). Subscribing here would throw or leak a listener. Until the bridge
|
|
267
|
+
// exposes a forwarding wrapper (P3), report lifecycle as unavailable over the
|
|
268
|
+
// bridge (the core emits `lifecycleTelemetryUnavailable`) rather than
|
|
269
|
+
// attempting a broken subscription.
|
|
270
|
+
if (
|
|
271
|
+
typeof window !== 'undefined' &&
|
|
272
|
+
(window as unknown as { UWCBridgeChildInitialized?: boolean })
|
|
273
|
+
.UWCBridgeChildInitialized === true
|
|
274
|
+
) {
|
|
275
|
+
return undefined
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
const onAccounts = (accounts: unknown) => {
|
|
279
|
+
const list = Array.isArray(accounts) ? accounts : []
|
|
280
|
+
listener(
|
|
281
|
+
list.length === 0 ? { type: 'disconnect' } : { type: 'accountChanged' }
|
|
282
|
+
)
|
|
283
|
+
}
|
|
284
|
+
const onChain = (chainId: unknown) => {
|
|
285
|
+
const caip = toCaipChainId(chainId)
|
|
286
|
+
listener(
|
|
287
|
+
caip !== undefined
|
|
288
|
+
? { type: 'chainChanged', chainId: caip }
|
|
289
|
+
: { type: 'chainChanged' }
|
|
290
|
+
)
|
|
291
|
+
}
|
|
292
|
+
const onDisconnect = () => listener({ type: 'disconnect' })
|
|
293
|
+
|
|
294
|
+
provider.on('accountsChanged', onAccounts)
|
|
295
|
+
provider.on('chainChanged', onChain)
|
|
296
|
+
provider.on('disconnect', onDisconnect)
|
|
297
|
+
|
|
298
|
+
return () => {
|
|
299
|
+
provider.removeListener?.('accountsChanged', onAccounts)
|
|
300
|
+
provider.removeListener?.('chainChanged', onChain)
|
|
301
|
+
provider.removeListener?.('disconnect', onDisconnect)
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
|
|
213
305
|
/**
|
|
214
306
|
* Disconnect (clear state only)
|
|
215
307
|
*/
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { describe, it, expect, vi, afterEach } from 'vitest'
|
|
2
|
+
import type { WalletLifecycleEvent } from '@meshconnect/uwc-types'
|
|
3
|
+
import { SolanaWalletService } from './solana-wallet-service'
|
|
4
|
+
import { StorageService } from '../storage-service'
|
|
5
|
+
|
|
6
|
+
function mockAdapter() {
|
|
7
|
+
const handlers: Record<string, () => void> = {}
|
|
8
|
+
return {
|
|
9
|
+
on: (e: string, h: () => void) => {
|
|
10
|
+
handlers[e] = h
|
|
11
|
+
},
|
|
12
|
+
off: vi.fn((e: string) => {
|
|
13
|
+
delete handlers[e]
|
|
14
|
+
}),
|
|
15
|
+
fire: (e: string) => handlers[e]?.()
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
function serviceWith(adapter: unknown) {
|
|
20
|
+
const service = new SolanaWalletService(new StorageService())
|
|
21
|
+
;(service as unknown as { connectedAdapter: unknown }).connectedAdapter =
|
|
22
|
+
adapter
|
|
23
|
+
return service
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
describe('SolanaWalletService.onLifecycleEvent', () => {
|
|
27
|
+
afterEach(() => {
|
|
28
|
+
delete (window as unknown as { UWCBridgeChildInitialized?: boolean })
|
|
29
|
+
.UWCBridgeChildInitialized
|
|
30
|
+
})
|
|
31
|
+
|
|
32
|
+
it('returns undefined with no connected adapter', () => {
|
|
33
|
+
expect(serviceWith(null).onLifecycleEvent(() => {})).toBeUndefined()
|
|
34
|
+
})
|
|
35
|
+
|
|
36
|
+
it('maps the adapter disconnect event and tears down via .off', () => {
|
|
37
|
+
const adapter = mockAdapter()
|
|
38
|
+
const events: WalletLifecycleEvent[] = []
|
|
39
|
+
const stop = serviceWith(adapter).onLifecycleEvent(e => events.push(e))
|
|
40
|
+
expect(typeof stop).toBe('function')
|
|
41
|
+
|
|
42
|
+
adapter.fire('disconnect')
|
|
43
|
+
expect(events).toEqual([{ type: 'disconnect' }])
|
|
44
|
+
|
|
45
|
+
stop!()
|
|
46
|
+
expect(adapter.off).toHaveBeenCalledWith('disconnect', expect.any(Function))
|
|
47
|
+
})
|
|
48
|
+
|
|
49
|
+
it('returns undefined in iframe bridge mode (the adapter is a Comlink proxy)', () => {
|
|
50
|
+
;(
|
|
51
|
+
window as unknown as { UWCBridgeChildInitialized?: boolean }
|
|
52
|
+
).UWCBridgeChildInitialized = true
|
|
53
|
+
expect(
|
|
54
|
+
serviceWith(mockAdapter()).onLifecycleEvent(() => {})
|
|
55
|
+
).toBeUndefined()
|
|
56
|
+
})
|
|
57
|
+
})
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type {
|
|
2
|
+
NetworkId,
|
|
3
|
+
AvailableAddress,
|
|
4
|
+
WalletLifecycleEvent
|
|
5
|
+
} from '@meshconnect/uwc-types'
|
|
2
6
|
import {
|
|
3
7
|
getSolanaWallets,
|
|
4
8
|
type SolanaAdapter,
|
|
@@ -149,6 +153,40 @@ export class SolanaWalletService {
|
|
|
149
153
|
return this.connectedAdapter
|
|
150
154
|
}
|
|
151
155
|
|
|
156
|
+
/**
|
|
157
|
+
* Subscribe to the connected wallet-standard adapter's lifecycle. Only the
|
|
158
|
+
* adapter's typed `disconnect` event is forwarded (`WalletAdapterEvents` doesn't
|
|
159
|
+
* expose a guaranteed account-change event, so we don't invent one). Returns a
|
|
160
|
+
* teardown, or undefined when there is no connected adapter / it can't be
|
|
161
|
+
* observed.
|
|
162
|
+
*
|
|
163
|
+
* Bridge guard: in the production iframe the adapter is a Comlink proxy — a raw
|
|
164
|
+
* handler can't ride the bridge — so we skip (the core reports lifecycle
|
|
165
|
+
* unavailable), mirroring the EVM path.
|
|
166
|
+
*/
|
|
167
|
+
onLifecycleEvent(
|
|
168
|
+
listener: (event: WalletLifecycleEvent) => void
|
|
169
|
+
): (() => void) | undefined {
|
|
170
|
+
const adapter = this.connectedAdapter
|
|
171
|
+
// A `.on`-only guard is safe HERE (unlike raw EIP-1193, where removeListener
|
|
172
|
+
// is only a SHOULD): the adapter is a UWC-constructed StandardWalletAdapter
|
|
173
|
+
// backed by eventemitter3, where `.off` exists whenever `.on` does.
|
|
174
|
+
if (!adapter || typeof adapter.on !== 'function') return undefined
|
|
175
|
+
if (
|
|
176
|
+
typeof window !== 'undefined' &&
|
|
177
|
+
(window as unknown as { UWCBridgeChildInitialized?: boolean })
|
|
178
|
+
.UWCBridgeChildInitialized === true
|
|
179
|
+
) {
|
|
180
|
+
return undefined
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
const onDisconnect = () => listener({ type: 'disconnect' })
|
|
184
|
+
adapter.on('disconnect', onDisconnect)
|
|
185
|
+
return () => {
|
|
186
|
+
adapter.off('disconnect', onDisconnect)
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
|
|
152
190
|
/**
|
|
153
191
|
* Disconnect (clear state only, don't actually disconnect from wallet)
|
|
154
192
|
*/
|
|
@@ -3,6 +3,7 @@ import type {
|
|
|
3
3
|
AvailableAddress,
|
|
4
4
|
WalletMetadata
|
|
5
5
|
} from '@meshconnect/uwc-types'
|
|
6
|
+
import { WalletConnectorError } from '@meshconnect/uwc-types'
|
|
6
7
|
import {
|
|
7
8
|
getTronWallets,
|
|
8
9
|
type TronProvider,
|
|
@@ -83,7 +84,13 @@ export class TronWalletService {
|
|
|
83
84
|
const address = await this.resolveAddress(provider.tronWeb)
|
|
84
85
|
|
|
85
86
|
if (!address) {
|
|
86
|
-
throw
|
|
87
|
+
// Delta C: throw a typed connector error so telemetry classifies this as
|
|
88
|
+
// source:'connector' (our injected-Tron path), not an unknown-origin error
|
|
89
|
+
// — the ONC-3172 "Tron connected but exposed no address" class.
|
|
90
|
+
throw new WalletConnectorError({
|
|
91
|
+
type: 'unknown',
|
|
92
|
+
message: 'No address returned from Tron wallet'
|
|
93
|
+
})
|
|
87
94
|
}
|
|
88
95
|
|
|
89
96
|
this.connectedProvider = provider
|