@meshconnect/uwc-wallet-connect-connector 0.8.2-snapshot.dcfdbbf → 0.9.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/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/services/connection-service.d.ts +1 -9
- package/dist/services/connection-service.d.ts.map +1 -1
- package/dist/services/connection-service.js +0 -22
- package/dist/services/connection-service.js.map +1 -1
- package/dist/services/walletconnect-client.d.ts +89 -12
- package/dist/services/walletconnect-client.d.ts.map +1 -1
- package/dist/services/walletconnect-client.js +114 -19
- package/dist/services/walletconnect-client.js.map +1 -1
- package/dist/wallet-connect-connector.d.ts +7 -11
- package/dist/wallet-connect-connector.d.ts.map +1 -1
- package/dist/wallet-connect-connector.js +3 -42
- package/dist/wallet-connect-connector.js.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +1 -0
- package/src/services/connection-service.ts +0 -21
- package/src/services/walletconnect-client.test.ts +270 -12
- package/src/services/walletconnect-client.ts +186 -15
- package/src/wallet-connect-connector.test.ts +30 -109
- package/src/wallet-connect-connector.ts +26 -52
- package/src/services/connection-service.test.ts +0 -44
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAA;AAC1C,YAAY,EAAE,8BAA8B,EAAE,MAAM,iCAAiC,CAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { SessionTypes } from '@walletconnect/types';
|
|
2
|
-
import type { Network, ConnectorResult, WalletConnectProvider
|
|
2
|
+
import type { Network, ConnectorResult, WalletConnectProvider } from '@meshconnect/uwc-types';
|
|
3
3
|
import { WalletConnectClient } from './walletconnect-client';
|
|
4
4
|
/**
|
|
5
5
|
* Service for handling WalletConnect connections
|
|
@@ -28,14 +28,6 @@ export declare class ConnectionService {
|
|
|
28
28
|
* Extract addresses from a WalletConnect session
|
|
29
29
|
*/
|
|
30
30
|
private extractAddresses;
|
|
31
|
-
/**
|
|
32
|
-
* Re-read the live account list for a namespace from the current SignClient
|
|
33
|
-
* session — used to sync a wallet-side account switch (`accountsChanged`)
|
|
34
|
-
* without repeating `extractAddresses`'s primary-address/requested-network
|
|
35
|
-
* selection, which doesn't apply to a live update (there is no "requested
|
|
36
|
-
* network" for an in-session switch).
|
|
37
|
-
*/
|
|
38
|
-
getAccountsForNamespace(namespace: Namespace): string[];
|
|
39
31
|
/**
|
|
40
32
|
* Get current session
|
|
41
33
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection-service.d.ts","sourceRoot":"","sources":["../../src/services/connection-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,KAAK,EACV,OAAO,EAEP,eAAe,EACf,qBAAqB,
|
|
1
|
+
{"version":3,"file":"connection-service.d.ts","sourceRoot":"","sources":["../../src/services/connection-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,KAAK,EACV,OAAO,EAEP,eAAe,EACf,qBAAqB,EAEtB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAK5D;;GAEG;AACH,qBAAa,iBAAiB;IAMhB,OAAO,CAAC,mBAAmB;IALvC,OAAO,CAAC,cAAc,CAAmC;IACzD,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,aAAa,CAAsB;gBAEvB,mBAAmB,EAAE,mBAAmB;IAE5D;;;OAGG;IACG,OAAO,CACX,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,qBAAqB,GAC9B,OAAO,CAAC,eAAe,CAAC;IAuD3B;;OAEG;IACH,gBAAgB,IAAI,MAAM,GAAG,IAAI;IAIjC;;OAEG;IACH,OAAO,CAAC,2BAA2B;IA+FnC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA+CxB;;OAEG;IACH,UAAU,IAAI,YAAY,CAAC,MAAM,GAAG,IAAI;IAIxC;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC,MAAM,GAAG,IAAI;IAI9C;;OAEG;IACH,gBAAgB,IAAI,OAAO,GAAG,IAAI;IAIlC;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIxC;;OAEG;IACH,gBAAgB,IAAI,MAAM,GAAG,IAAI;IAIjC;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIvC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CASlC"}
|
|
@@ -176,28 +176,6 @@ export class ConnectionService {
|
|
|
176
176
|
}
|
|
177
177
|
return { address: primaryAddress, availableAddresses };
|
|
178
178
|
}
|
|
179
|
-
/**
|
|
180
|
-
* Re-read the live account list for a namespace from the current SignClient
|
|
181
|
-
* session — used to sync a wallet-side account switch (`accountsChanged`)
|
|
182
|
-
* without repeating `extractAddresses`'s primary-address/requested-network
|
|
183
|
-
* selection, which doesn't apply to a live update (there is no "requested
|
|
184
|
-
* network" for an in-session switch).
|
|
185
|
-
*/
|
|
186
|
-
getAccountsForNamespace(namespace) {
|
|
187
|
-
if (!this.currentSession)
|
|
188
|
-
return [];
|
|
189
|
-
const accounts = this.currentSession.namespaces[namespace]?.accounts ?? [];
|
|
190
|
-
const addresses = [];
|
|
191
|
-
for (const account of accounts) {
|
|
192
|
-
try {
|
|
193
|
-
addresses.push(parseAccount(account).address);
|
|
194
|
-
}
|
|
195
|
-
catch {
|
|
196
|
-
// Skip invalid account formats
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
return addresses;
|
|
200
|
-
}
|
|
201
179
|
/**
|
|
202
180
|
* Get current session
|
|
203
181
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection-service.js","sourceRoot":"","sources":["../../src/services/connection-service.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"connection-service.js","sourceRoot":"","sources":["../../src/services/connection-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,25 +6,86 @@ import type { WalletConnectConfig } from '@meshconnect/uwc-types';
|
|
|
6
6
|
* session even if messages are high-cardinality (timestamps / urls).
|
|
7
7
|
*/
|
|
8
8
|
export declare const MAX_REPORTED_RELAY_ERRORS = 100;
|
|
9
|
+
/**
|
|
10
|
+
* Cap on relay transport-lifecycle emissions PER EVENT TYPE (disconnect and
|
|
11
|
+
* reconnect budgeted independently) per client. A flapping socket IS the signal
|
|
12
|
+
* we want, but bounding emissions keeps a pathological relay from flooding
|
|
13
|
+
* telemetry on a long-lived session. Independent budgets so a drop-heavy flap
|
|
14
|
+
* that exhausts the disconnect cap can never silently swallow the paired
|
|
15
|
+
* reconnect — otherwise telemetry would show drops with no recovery for a socket
|
|
16
|
+
* that did recover.
|
|
17
|
+
*/
|
|
18
|
+
export declare const MAX_REPORTED_RELAY_LIFECYCLE = 50;
|
|
19
|
+
/**
|
|
20
|
+
* Optional telemetry sinks for the WalletConnect client. Covers both the relay
|
|
21
|
+
* transport (error / disconnect / reconnect) AND `SignClient.init` failures.
|
|
22
|
+
* Every field is opt-in — an empty observer leaves behaviour unchanged. All
|
|
23
|
+
* sinks are telemetry-only: they never alter connection behaviour, and a
|
|
24
|
+
* throwing sink is swallowed so it can't break the SDK's relayer dispatch (or,
|
|
25
|
+
* for `onInitError`, mask the always-rethrown init rejection).
|
|
26
|
+
*/
|
|
27
|
+
export interface WalletConnectTelemetryObserver {
|
|
28
|
+
/**
|
|
29
|
+
* Relay-socket failure: the relayer re-emits an abnormal WebSocket close under
|
|
30
|
+
* `RELAYER_EVENTS.error` (e.g. code 3000 "JWT Token is not yet valid" on clock
|
|
31
|
+
* skew), detached from the connect() promise. Deduped per message.
|
|
32
|
+
*/
|
|
33
|
+
onRelayError?: (error: unknown) => void;
|
|
34
|
+
/**
|
|
35
|
+
* `SignClient.init` failure (storage/crypto, NOT relay). Telemetry-only — the
|
|
36
|
+
* init rejection is always rethrown so `getClient()` callers see it unchanged.
|
|
37
|
+
*/
|
|
38
|
+
onInitError?: (error: unknown) => void;
|
|
39
|
+
/**
|
|
40
|
+
* Relay transport socket dropped (relayer `disconnect`), emitted once per
|
|
41
|
+
* outage. The lifecycle FACT — distinct from `onRelayError` (a close WITH an
|
|
42
|
+
* error). This is the CARE-263 signal a suspended WebView produces silently.
|
|
43
|
+
*/
|
|
44
|
+
onRelayDisconnect?: () => void;
|
|
45
|
+
/**
|
|
46
|
+
* Relay socket recovered (relayer `connect` after a drop). Pair with
|
|
47
|
+
* `onRelayDisconnect` to measure the dead window.
|
|
48
|
+
*/
|
|
49
|
+
onRelayReconnect?: () => void;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Normalize the telemetry constructor slots into a `WalletConnectTelemetryObserver`.
|
|
53
|
+
*
|
|
54
|
+
* BACKWARD COMPATIBILITY: the published 0.8.x signature was positional —
|
|
55
|
+
* `(…, onRelayError?, onInitError?)`. This PR moved to a single observer object;
|
|
56
|
+
* the positional form is retained so external JS/TS consumers on 0.8.x don't
|
|
57
|
+
* break at runtime. Disambiguate on the first telemetry slot: a FUNCTION is the
|
|
58
|
+
* legacy `onRelayError` (the new form always passes an object). The legacy form
|
|
59
|
+
* predates `onRelayDisconnect`/`onRelayReconnect`, so those are simply absent.
|
|
60
|
+
*/
|
|
61
|
+
export declare function toTelemetryObserver(observerOrOnRelayError?: WalletConnectTelemetryObserver | ((error: unknown) => void), onInitError?: (error: unknown) => void): WalletConnectTelemetryObserver;
|
|
9
62
|
/**
|
|
10
63
|
* Service for managing WalletConnect client instance
|
|
11
64
|
*/
|
|
12
65
|
export declare class WalletConnectClient {
|
|
13
|
-
private config;
|
|
14
|
-
private onRelayError?;
|
|
15
|
-
private onInitError?;
|
|
16
66
|
private client;
|
|
17
67
|
private initPromise;
|
|
18
68
|
/** Dedupe relay-error reports so a reconnect storm surfaces once, not per tick. */
|
|
19
69
|
private readonly relayErrorDedup;
|
|
70
|
+
/** Independent bounded counters so drop/recover telemetry can never starve each other. */
|
|
71
|
+
private relayDisconnectCount;
|
|
72
|
+
private relayReconnectCount;
|
|
73
|
+
/** True once the socket has dropped — gates `relayReconnected` to real recoveries. */
|
|
74
|
+
private relayHasDisconnected;
|
|
75
|
+
private readonly config;
|
|
76
|
+
private readonly telemetryObserver;
|
|
20
77
|
/**
|
|
21
|
-
* @param
|
|
22
|
-
* `
|
|
23
|
-
*
|
|
24
|
-
* Opt-in: with nothing wired, behaviour is unchanged. Telemetry-only — the init
|
|
25
|
-
* rejection is always rethrown so `getClient()` callers see it exactly as before.
|
|
78
|
+
* @param telemetryObserver - optional telemetry sinks (see
|
|
79
|
+
* `WalletConnectTelemetryObserver`). Every field is opt-in; an empty/omitted
|
|
80
|
+
* observer leaves behaviour unchanged.
|
|
26
81
|
*/
|
|
27
|
-
constructor(config: WalletConnectConfig,
|
|
82
|
+
constructor(config: WalletConnectConfig, telemetryObserver?: WalletConnectTelemetryObserver);
|
|
83
|
+
/**
|
|
84
|
+
* @deprecated Pass a {@link WalletConnectTelemetryObserver}. The positional
|
|
85
|
+
* `(onRelayError, onInitError)` form is retained for backward compatibility
|
|
86
|
+
* with the published 0.8.x signature and will be removed in a future major.
|
|
87
|
+
*/
|
|
88
|
+
constructor(config: WalletConnectConfig, onRelayError?: (error: unknown) => void, onInitError?: (error: unknown) => void);
|
|
28
89
|
/**
|
|
29
90
|
* Initialize or get the WalletConnect client
|
|
30
91
|
*/
|
|
@@ -39,11 +100,27 @@ export declare class WalletConnectClient {
|
|
|
39
100
|
* "JWT Token is not yet valid" when the device clock is skewed past the relay's
|
|
40
101
|
* 120s leeway. That error is otherwise detached from the connect() promise, so it
|
|
41
102
|
* escapes the connect handoff and lands as an unhandled error. Forward it (deduped
|
|
42
|
-
* per message) so it becomes a classified signal instead.
|
|
43
|
-
*
|
|
44
|
-
*
|
|
103
|
+
* per message) so it becomes a classified signal instead. This listener handles the
|
|
104
|
+
* relayer ERROR stream only; the socket's clean up/down lifecycle is captured
|
|
105
|
+
* separately by `attachRelayLifecycleListeners` (CARE-263 — a suspended WebView
|
|
106
|
+
* drops the socket without emitting an `error`). Telemetry-only; never changes behaviour.
|
|
45
107
|
*/
|
|
46
108
|
private attachRelayErrorListener;
|
|
109
|
+
/**
|
|
110
|
+
* Surface the relay transport socket's up/down lifecycle as telemetry. This is
|
|
111
|
+
* the signal `attachRelayErrorListener` misses: when iOS suspends the WebView
|
|
112
|
+
* during a wallet deep-link the socket drops with no `error` event, WC core only
|
|
113
|
+
* reconnects on its slow internal heartbeat, and any in-flight sign/connect
|
|
114
|
+
* response strands in the meantime (CARE-263). Emitting `disconnect` + the
|
|
115
|
+
* subsequent `connect` lets us see the drop and measure the dead window.
|
|
116
|
+
*
|
|
117
|
+
* Emitted at most once per outage: WC core re-emits `disconnect` on every failed
|
|
118
|
+
* reconnect attempt, so a transition flag gates the emit to keep drop/recover 1:1
|
|
119
|
+
* (and bounds emissions); a counter cap backstops many distinct outages. Both
|
|
120
|
+
* sinks are guarded so a throwing observer can never break the SDK's relayer
|
|
121
|
+
* dispatch. Telemetry-only; it never changes connection behaviour.
|
|
122
|
+
*/
|
|
123
|
+
private attachRelayLifecycleListeners;
|
|
47
124
|
/**
|
|
48
125
|
* The initialized client if `connect()` already ran, else null. Synchronous —
|
|
49
126
|
* lets callers attach lifecycle listeners post-connect without forcing a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"walletconnect-client.d.ts","sourceRoot":"","sources":["../../src/services/walletconnect-client.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,4BAA4B,CAAA;AAGnD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAEjE;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,MAAM,CAAA;AAE5C
|
|
1
|
+
{"version":3,"file":"walletconnect-client.d.ts","sourceRoot":"","sources":["../../src/services/walletconnect-client.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,4BAA4B,CAAA;AAGnD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAEjE;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,MAAM,CAAA;AAE5C;;;;;;;;GAQG;AACH,eAAO,MAAM,4BAA4B,KAAK,CAAA;AAE9C;;;;;;;GAOG;AACH,MAAM,WAAW,8BAA8B;IAC7C;;;;OAIG;IACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IACvC;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IACtC;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAA;IAC9B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAA;CAC9B;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,sBAAsB,CAAC,EACnB,8BAA8B,GAC9B,CAAC,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC,EAC9B,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GACrC,8BAA8B,CAsBhC;AAED;;GAEG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,WAAW,CAAmC;IACtD,mFAAmF;IACnF,OAAO,CAAC,QAAQ,CAAC,eAAe,CAE/B;IACD,0FAA0F;IAC1F,OAAO,CAAC,oBAAoB,CAAI;IAChC,OAAO,CAAC,mBAAmB,CAAI;IAC/B,sFAAsF;IACtF,OAAO,CAAC,oBAAoB,CAAQ;IACpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAgC;IAElE;;;;OAIG;gBAED,MAAM,EAAE,mBAAmB,EAC3B,iBAAiB,CAAC,EAAE,8BAA8B;IAEpD;;;;OAIG;gBAED,MAAM,EAAE,mBAAmB,EAC3B,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,EACvC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI;IAgBxC;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC;IAmBtC;;OAEG;YACW,UAAU;IAiDxB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,wBAAwB;IAkBhC;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,6BAA6B;IA6CrC;;;;OAIG;IACH,iBAAiB,IAAI,UAAU,GAAG,IAAI;IAItC;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBpC;;OAEG;IACG,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAW/C"}
|
|
@@ -7,28 +7,64 @@ import { createBoundedDedup, safeErrorMessage } from '@meshconnect/uwc-types';
|
|
|
7
7
|
* session even if messages are high-cardinality (timestamps / urls).
|
|
8
8
|
*/
|
|
9
9
|
export const MAX_REPORTED_RELAY_ERRORS = 100;
|
|
10
|
+
/**
|
|
11
|
+
* Cap on relay transport-lifecycle emissions PER EVENT TYPE (disconnect and
|
|
12
|
+
* reconnect budgeted independently) per client. A flapping socket IS the signal
|
|
13
|
+
* we want, but bounding emissions keeps a pathological relay from flooding
|
|
14
|
+
* telemetry on a long-lived session. Independent budgets so a drop-heavy flap
|
|
15
|
+
* that exhausts the disconnect cap can never silently swallow the paired
|
|
16
|
+
* reconnect — otherwise telemetry would show drops with no recovery for a socket
|
|
17
|
+
* that did recover.
|
|
18
|
+
*/
|
|
19
|
+
export const MAX_REPORTED_RELAY_LIFECYCLE = 50;
|
|
20
|
+
/**
|
|
21
|
+
* Normalize the telemetry constructor slots into a `WalletConnectTelemetryObserver`.
|
|
22
|
+
*
|
|
23
|
+
* BACKWARD COMPATIBILITY: the published 0.8.x signature was positional —
|
|
24
|
+
* `(…, onRelayError?, onInitError?)`. This PR moved to a single observer object;
|
|
25
|
+
* the positional form is retained so external JS/TS consumers on 0.8.x don't
|
|
26
|
+
* break at runtime. Disambiguate on the first telemetry slot: a FUNCTION is the
|
|
27
|
+
* legacy `onRelayError` (the new form always passes an object). The legacy form
|
|
28
|
+
* predates `onRelayDisconnect`/`onRelayReconnect`, so those are simply absent.
|
|
29
|
+
*/
|
|
30
|
+
export function toTelemetryObserver(observerOrOnRelayError, onInitError) {
|
|
31
|
+
const onRelayError = typeof observerOrOnRelayError === 'function'
|
|
32
|
+
? observerOrOnRelayError
|
|
33
|
+
: undefined;
|
|
34
|
+
// Legacy positional form when EITHER positional callback is present — this
|
|
35
|
+
// includes the `(undefined, onInitError)` "init-only" call pattern, so that
|
|
36
|
+
// sink is never silently dropped. Keys are added conditionally because
|
|
37
|
+
// `exactOptionalPropertyTypes` forbids an explicit `undefined` on an optional.
|
|
38
|
+
if (onRelayError || onInitError) {
|
|
39
|
+
return {
|
|
40
|
+
...(onRelayError ? { onRelayError } : {}),
|
|
41
|
+
...(onInitError ? { onInitError } : {})
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
// New form: an observer object (or nothing).
|
|
45
|
+
return typeof observerOrOnRelayError === 'object' &&
|
|
46
|
+
observerOrOnRelayError !== null
|
|
47
|
+
? observerOrOnRelayError
|
|
48
|
+
: {};
|
|
49
|
+
}
|
|
10
50
|
/**
|
|
11
51
|
* Service for managing WalletConnect client instance
|
|
12
52
|
*/
|
|
13
53
|
export class WalletConnectClient {
|
|
14
|
-
config;
|
|
15
|
-
onRelayError;
|
|
16
|
-
onInitError;
|
|
17
54
|
client = null;
|
|
18
55
|
initPromise = null;
|
|
19
56
|
/** Dedupe relay-error reports so a reconnect storm surfaces once, not per tick. */
|
|
20
57
|
relayErrorDedup = createBoundedDedup(MAX_REPORTED_RELAY_ERRORS);
|
|
21
|
-
/**
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
constructor(config,
|
|
58
|
+
/** Independent bounded counters so drop/recover telemetry can never starve each other. */
|
|
59
|
+
relayDisconnectCount = 0;
|
|
60
|
+
relayReconnectCount = 0;
|
|
61
|
+
/** True once the socket has dropped — gates `relayReconnected` to real recoveries. */
|
|
62
|
+
relayHasDisconnected = false;
|
|
63
|
+
config;
|
|
64
|
+
telemetryObserver;
|
|
65
|
+
constructor(config, observerOrOnRelayError, onInitError) {
|
|
29
66
|
this.config = config;
|
|
30
|
-
this.
|
|
31
|
-
this.onInitError = onInitError;
|
|
67
|
+
this.telemetryObserver = toTelemetryObserver(observerOrOnRelayError, onInitError);
|
|
32
68
|
}
|
|
33
69
|
/**
|
|
34
70
|
* Initialize or get the WalletConnect client
|
|
@@ -85,7 +121,7 @@ export class WalletConnectClient {
|
|
|
85
121
|
// instead of a generic connect failure. The sink is guarded so a throwing observer
|
|
86
122
|
// can't mask the real rejection, which is always rethrown.
|
|
87
123
|
try {
|
|
88
|
-
this.onInitError?.(error);
|
|
124
|
+
this.telemetryObserver.onInitError?.(error);
|
|
89
125
|
}
|
|
90
126
|
catch {
|
|
91
127
|
// Telemetry must never replace the init rejection.
|
|
@@ -93,6 +129,7 @@ export class WalletConnectClient {
|
|
|
93
129
|
throw error;
|
|
94
130
|
}
|
|
95
131
|
this.attachRelayErrorListener(client);
|
|
132
|
+
this.attachRelayLifecycleListeners(client);
|
|
96
133
|
return client;
|
|
97
134
|
}
|
|
98
135
|
/**
|
|
@@ -101,12 +138,13 @@ export class WalletConnectClient {
|
|
|
101
138
|
* "JWT Token is not yet valid" when the device clock is skewed past the relay's
|
|
102
139
|
* 120s leeway. That error is otherwise detached from the connect() promise, so it
|
|
103
140
|
* escapes the connect handoff and lands as an unhandled error. Forward it (deduped
|
|
104
|
-
* per message) so it becomes a classified signal instead.
|
|
105
|
-
*
|
|
106
|
-
*
|
|
141
|
+
* per message) so it becomes a classified signal instead. This listener handles the
|
|
142
|
+
* relayer ERROR stream only; the socket's clean up/down lifecycle is captured
|
|
143
|
+
* separately by `attachRelayLifecycleListeners` (CARE-263 — a suspended WebView
|
|
144
|
+
* drops the socket without emitting an `error`). Telemetry-only; never changes behaviour.
|
|
107
145
|
*/
|
|
108
146
|
attachRelayErrorListener(client) {
|
|
109
|
-
if (!this.onRelayError)
|
|
147
|
+
if (!this.telemetryObserver.onRelayError)
|
|
110
148
|
return;
|
|
111
149
|
client.core?.relayer?.on(RELAYER_EVENTS.error, (error) => {
|
|
112
150
|
// safeErrorMessage: this runs INSIDE the SDK's relayer dispatch, before
|
|
@@ -116,7 +154,7 @@ export class WalletConnectClient {
|
|
|
116
154
|
if (!this.relayErrorDedup.firstSeen(message))
|
|
117
155
|
return;
|
|
118
156
|
try {
|
|
119
|
-
this.onRelayError?.(error);
|
|
157
|
+
this.telemetryObserver.onRelayError?.(error);
|
|
120
158
|
}
|
|
121
159
|
catch {
|
|
122
160
|
// A throwing sink would propagate synchronously out of the WC SDK's
|
|
@@ -125,6 +163,63 @@ export class WalletConnectClient {
|
|
|
125
163
|
}
|
|
126
164
|
});
|
|
127
165
|
}
|
|
166
|
+
/**
|
|
167
|
+
* Surface the relay transport socket's up/down lifecycle as telemetry. This is
|
|
168
|
+
* the signal `attachRelayErrorListener` misses: when iOS suspends the WebView
|
|
169
|
+
* during a wallet deep-link the socket drops with no `error` event, WC core only
|
|
170
|
+
* reconnects on its slow internal heartbeat, and any in-flight sign/connect
|
|
171
|
+
* response strands in the meantime (CARE-263). Emitting `disconnect` + the
|
|
172
|
+
* subsequent `connect` lets us see the drop and measure the dead window.
|
|
173
|
+
*
|
|
174
|
+
* Emitted at most once per outage: WC core re-emits `disconnect` on every failed
|
|
175
|
+
* reconnect attempt, so a transition flag gates the emit to keep drop/recover 1:1
|
|
176
|
+
* (and bounds emissions); a counter cap backstops many distinct outages. Both
|
|
177
|
+
* sinks are guarded so a throwing observer can never break the SDK's relayer
|
|
178
|
+
* dispatch. Telemetry-only; it never changes connection behaviour.
|
|
179
|
+
*/
|
|
180
|
+
attachRelayLifecycleListeners(client) {
|
|
181
|
+
if (!this.telemetryObserver.onRelayDisconnect &&
|
|
182
|
+
!this.telemetryObserver.onRelayReconnect)
|
|
183
|
+
return;
|
|
184
|
+
const relayer = client.core?.relayer;
|
|
185
|
+
if (!relayer)
|
|
186
|
+
return;
|
|
187
|
+
// Guarded + capped emit with an INDEPENDENT budget per event type. Cap is only
|
|
188
|
+
// consumed when a sink is wired; the guard keeps a throwing observer from
|
|
189
|
+
// breaking the relayer's own dispatch. Separate budgets ensure a drop-heavy
|
|
190
|
+
// flap can never exhaust the shared pool and silently drop the paired recovery.
|
|
191
|
+
const report = (sink, counter) => {
|
|
192
|
+
if (!sink)
|
|
193
|
+
return;
|
|
194
|
+
if (this[counter] >= MAX_REPORTED_RELAY_LIFECYCLE)
|
|
195
|
+
return;
|
|
196
|
+
this[counter]++;
|
|
197
|
+
try {
|
|
198
|
+
sink();
|
|
199
|
+
}
|
|
200
|
+
catch {
|
|
201
|
+
// Telemetry must never break the relayer's lifecycle handling.
|
|
202
|
+
}
|
|
203
|
+
};
|
|
204
|
+
relayer.on(RELAYER_EVENTS.disconnect, () => {
|
|
205
|
+
// WC core re-emits `disconnect` on each failed reconnect during one outage —
|
|
206
|
+
// emit only on the transition INTO disconnected so drop/recover stay 1:1 (and
|
|
207
|
+
// relayDropCount counts outages, not re-emits). The relayer passes no payload
|
|
208
|
+
// (socket errors arrive via RELAYER_EVENTS.error / onRelayError).
|
|
209
|
+
if (this.relayHasDisconnected)
|
|
210
|
+
return;
|
|
211
|
+
this.relayHasDisconnected = true;
|
|
212
|
+
report(this.telemetryObserver.onRelayDisconnect, 'relayDisconnectCount');
|
|
213
|
+
});
|
|
214
|
+
relayer.on(RELAYER_EVENTS.connect, () => {
|
|
215
|
+
// `connect` also fires on the FIRST socket open — only a connect that follows
|
|
216
|
+
// a disconnect is a genuine recovery and pairs 1:1 with the dead window.
|
|
217
|
+
if (!this.relayHasDisconnected)
|
|
218
|
+
return;
|
|
219
|
+
this.relayHasDisconnected = false;
|
|
220
|
+
report(this.telemetryObserver.onRelayReconnect, 'relayReconnectCount');
|
|
221
|
+
});
|
|
222
|
+
}
|
|
128
223
|
/**
|
|
129
224
|
* The initialized client if `connect()` already ran, else null. Synchronous —
|
|
130
225
|
* lets callers attach lifecycle listeners post-connect without forcing a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"walletconnect-client.js","sourceRoot":"","sources":["../../src/services/walletconnect-client.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,4BAA4B,CAAA;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAG7E;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,CAAA;AAE5C
|
|
1
|
+
{"version":3,"file":"walletconnect-client.js","sourceRoot":"","sources":["../../src/services/walletconnect-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Network, Connector, ConnectorResult, SwitchNetworkResult, WalletConnectConfig, WalletConnectProvider, TransactionRequest, TransactionResult, NetworkRpcMap, SignatureType, EIP712TypedData, WalletLifecycleEvent, WalletLifecycleContext } from '@meshconnect/uwc-types';
|
|
2
|
+
import { type WalletConnectTelemetryObserver } from './services/walletconnect-client';
|
|
2
3
|
export declare class WalletConnectConnector implements Connector {
|
|
3
4
|
private walletConnectClient;
|
|
4
5
|
private connectionService;
|
|
@@ -6,6 +7,12 @@ export declare class WalletConnectConnector implements Connector {
|
|
|
6
7
|
private signatureService;
|
|
7
8
|
private transactionService;
|
|
8
9
|
private networkRpcMap;
|
|
10
|
+
constructor(config: WalletConnectConfig, networkRpcMap?: NetworkRpcMap, telemetryObserver?: WalletConnectTelemetryObserver);
|
|
11
|
+
/**
|
|
12
|
+
* @deprecated Pass a {@link WalletConnectTelemetryObserver}. The positional
|
|
13
|
+
* `(onRelayError, onInitError)` form is retained for backward compatibility
|
|
14
|
+
* with the published 0.8.x signature and will be removed in a future major.
|
|
15
|
+
*/
|
|
9
16
|
constructor(config: WalletConnectConfig, networkRpcMap?: NetworkRpcMap, onRelayError?: (error: unknown) => void, onInitError?: (error: unknown) => void);
|
|
10
17
|
connect(network: Network, provider?: WalletConnectProvider): Promise<ConnectorResult>;
|
|
11
18
|
getConnectionURI(): string;
|
|
@@ -41,16 +48,5 @@ export declare class WalletConnectConnector implements Connector {
|
|
|
41
48
|
* forwarded, resolved per event so a restore/re-connect is honoured live.
|
|
42
49
|
*/
|
|
43
50
|
onLifecycleEvent(listener: (event: WalletLifecycleEvent) => void, _context: WalletLifecycleContext): (() => void) | undefined;
|
|
44
|
-
/**
|
|
45
|
-
* Real account-sync counterpart to `onLifecycleEvent` (session_event
|
|
46
|
-
* `accountsChanged`). Unlike the telemetry stream, this re-reads the
|
|
47
|
-
* CURRENT session's account list for the affected namespace via
|
|
48
|
-
* `ConnectionService.getAccountsForNamespace` rather than trying to parse
|
|
49
|
-
* the event's own (wallet-defined, non-standardized) `event.data` shape —
|
|
50
|
-
* see the design spec's "open risk" note if this needs revisiting against
|
|
51
|
-
* a specific wallet found not to update `session.namespaces` before firing
|
|
52
|
-
* the event.
|
|
53
|
-
*/
|
|
54
|
-
onAccountsChanged(listener: (accounts: string[]) => void, context: WalletLifecycleContext): (() => void) | undefined;
|
|
55
51
|
}
|
|
56
52
|
//# sourceMappingURL=wallet-connect-connector.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet-connect-connector.d.ts","sourceRoot":"","sources":["../src/wallet-connect-connector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EAEP,SAAS,EACT,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,eAAe,EACf,oBAAoB,EACpB,sBAAsB,
|
|
1
|
+
{"version":3,"file":"wallet-connect-connector.d.ts","sourceRoot":"","sources":["../src/wallet-connect-connector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EAEP,SAAS,EACT,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,eAAe,EACf,oBAAoB,EACpB,sBAAsB,EACvB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAGL,KAAK,8BAA8B,EACpC,MAAM,iCAAiC,CAAA;AAqGxC,qBAAa,sBAAuB,YAAW,SAAS;IACtD,OAAO,CAAC,mBAAmB,CAAqB;IAChD,OAAO,CAAC,iBAAiB,CAAmB;IAC5C,OAAO,CAAC,oBAAoB,CAAsB;IAClD,OAAO,CAAC,gBAAgB,CAAkB;IAC1C,OAAO,CAAC,kBAAkB,CAAoB;IAC9C,OAAO,CAAC,aAAa,CAAe;gBAGlC,MAAM,EAAE,mBAAmB,EAC3B,aAAa,CAAC,EAAE,aAAa,EAC7B,iBAAiB,CAAC,EAAE,8BAA8B;IAEpD;;;;OAIG;gBAED,MAAM,EAAE,mBAAmB,EAC3B,aAAa,CAAC,EAAE,aAAa,EAC7B,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,EACvC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI;IA+BlC,OAAO,CACX,OAAO,EAAE,OAAO,EAChB,QAAQ,CAAC,EAAE,qBAAqB,GAC/B,OAAO,CAAC,eAAe,CAAC;IAU3B,gBAAgB,IAAI,MAAM;IAQpB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAI7D,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAIpD,aAAa,CAAC,SAAS,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IAI1D,eAAe,CACnB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,iBAAiB,CAAC;IAI7B;;;;;;OAMG;IACG,0BAA0B,CAC9B,YAAY,EAAE,UAAU,GACvB,OAAO,CAAC,UAAU,CAAC;IAItB;;;;;;;;;;;;;;;;;OAiBG;IACH,gBAAgB,CACd,QAAQ,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,EAI/C,QAAQ,EAAE,sBAAsB,GAC/B,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS;CA8C5B"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { WalletConnectClient } from './services/walletconnect-client';
|
|
1
|
+
import { WalletConnectClient, toTelemetryObserver } from './services/walletconnect-client';
|
|
2
2
|
import { ConnectionService } from './services/connection-service';
|
|
3
3
|
import { NetworkSwitchService } from './services/network-switch-service';
|
|
4
4
|
import { SignatureService } from './services/signature-service';
|
|
@@ -108,8 +108,8 @@ export class WalletConnectConnector {
|
|
|
108
108
|
signatureService;
|
|
109
109
|
transactionService;
|
|
110
110
|
networkRpcMap;
|
|
111
|
-
constructor(config, networkRpcMap = {},
|
|
112
|
-
this.walletConnectClient = new WalletConnectClient(config,
|
|
111
|
+
constructor(config, networkRpcMap = {}, observerOrOnRelayError, onInitError) {
|
|
112
|
+
this.walletConnectClient = new WalletConnectClient(config, toTelemetryObserver(observerOrOnRelayError, onInitError));
|
|
113
113
|
this.networkRpcMap = networkRpcMap;
|
|
114
114
|
this.connectionService = new ConnectionService(this.walletConnectClient);
|
|
115
115
|
this.networkSwitchService = new NetworkSwitchService(this.walletConnectClient, this.connectionService);
|
|
@@ -215,44 +215,5 @@ export class WalletConnectConnector {
|
|
|
215
215
|
client.off('session_event', onSessionEvent);
|
|
216
216
|
};
|
|
217
217
|
}
|
|
218
|
-
/**
|
|
219
|
-
* Real account-sync counterpart to `onLifecycleEvent` (session_event
|
|
220
|
-
* `accountsChanged`). Unlike the telemetry stream, this re-reads the
|
|
221
|
-
* CURRENT session's account list for the affected namespace via
|
|
222
|
-
* `ConnectionService.getAccountsForNamespace` rather than trying to parse
|
|
223
|
-
* the event's own (wallet-defined, non-standardized) `event.data` shape —
|
|
224
|
-
* see the design spec's "open risk" note if this needs revisiting against
|
|
225
|
-
* a specific wallet found not to update `session.namespaces` before firing
|
|
226
|
-
* the event.
|
|
227
|
-
*/
|
|
228
|
-
onAccountsChanged(listener, context) {
|
|
229
|
-
const client = this.walletConnectClient.getExistingClient();
|
|
230
|
-
if (!client)
|
|
231
|
-
return undefined;
|
|
232
|
-
const isActiveTopic = (topic) => {
|
|
233
|
-
const active = this.connectionService.getSession()?.topic;
|
|
234
|
-
return active !== undefined && topic === active;
|
|
235
|
-
};
|
|
236
|
-
const onSessionEvent = (args) => {
|
|
237
|
-
if (!isActiveTopic(args?.topic))
|
|
238
|
-
return;
|
|
239
|
-
if (args?.params?.event?.name !== 'accountsChanged')
|
|
240
|
-
return;
|
|
241
|
-
const namespace = args.params.chainId.split(':')[0];
|
|
242
|
-
// A single WC topic can carry MULTIPLE approved namespaces (e.g.
|
|
243
|
-
// eip155 + solana in one session). `context.namespace` names the ONE
|
|
244
|
-
// this subscription was attached to observe — an accountsChanged for
|
|
245
|
-
// a DIFFERENT namespace on the same topic must not reach `listener`,
|
|
246
|
-
// or the caller (bound to e.g. eip155) would receive the other
|
|
247
|
-
// namespace's addresses and write them into its own active address.
|
|
248
|
-
if (context.namespace !== undefined && namespace !== context.namespace)
|
|
249
|
-
return;
|
|
250
|
-
listener(this.connectionService.getAccountsForNamespace(namespace));
|
|
251
|
-
};
|
|
252
|
-
client.on('session_event', onSessionEvent);
|
|
253
|
-
return () => {
|
|
254
|
-
client.off('session_event', onSessionEvent);
|
|
255
|
-
};
|
|
256
|
-
}
|
|
257
218
|
}
|
|
258
219
|
//# sourceMappingURL=wallet-connect-connector.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet-connect-connector.js","sourceRoot":"","sources":["../src/wallet-connect-connector.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wallet-connect-connector.js","sourceRoot":"","sources":["../src/wallet-connect-connector.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@meshconnect/uwc-wallet-connect-connector",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "WalletConnect connector for Universal Wallet Connector",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"bs58": "6.0.0",
|
|
26
26
|
"buffer": "^6.0.3",
|
|
27
27
|
"viem": "^2.54.6",
|
|
28
|
-
"@meshconnect/uwc-types": "0.19.0
|
|
28
|
+
"@meshconnect/uwc-types": "0.19.0"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"typescript": "^5.9.3"
|
package/src/index.ts
CHANGED