@meshconnect/uwc-core 1.2.3-snapshot.2486eb1 → 1.2.3-snapshot.dcfdbbf

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.
Files changed (32) hide show
  1. package/dist/events.d.ts +5 -20
  2. package/dist/events.d.ts.map +1 -1
  3. package/dist/events.js +0 -4
  4. package/dist/events.js.map +1 -1
  5. package/dist/observability/lifecycle-bridge.d.ts +31 -13
  6. package/dist/observability/lifecycle-bridge.d.ts.map +1 -1
  7. package/dist/observability/lifecycle-bridge.js +167 -92
  8. package/dist/observability/lifecycle-bridge.js.map +1 -1
  9. package/dist/observability/telemetry.d.ts.map +1 -1
  10. package/dist/observability/telemetry.js +0 -25
  11. package/dist/observability/telemetry.js.map +1 -1
  12. package/dist/services/connection-service.d.ts +43 -0
  13. package/dist/services/connection-service.d.ts.map +1 -1
  14. package/dist/services/connection-service.js +163 -9
  15. package/dist/services/connection-service.js.map +1 -1
  16. package/dist/services/network-switch-service.d.ts.map +1 -1
  17. package/dist/services/network-switch-service.js +4 -1
  18. package/dist/services/network-switch-service.js.map +1 -1
  19. package/dist/universal-wallet-connector.d.ts.map +1 -1
  20. package/dist/universal-wallet-connector.js +1 -7
  21. package/dist/universal-wallet-connector.js.map +1 -1
  22. package/package.json +5 -5
  23. package/src/events.ts +5 -24
  24. package/src/observability/lifecycle-bridge.test.ts +197 -0
  25. package/src/observability/lifecycle-bridge.ts +211 -99
  26. package/src/observability/telemetry.test.ts +0 -35
  27. package/src/observability/telemetry.ts +0 -25
  28. package/src/services/connection-service.test.ts +272 -0
  29. package/src/services/connection-service.ts +190 -10
  30. package/src/services/network-switch-service.test.ts +33 -0
  31. package/src/services/network-switch-service.ts +4 -1
  32. package/src/universal-wallet-connector.ts +1 -11
package/dist/events.d.ts CHANGED
@@ -65,25 +65,6 @@ export interface UWCEventMap {
65
65
  relayError: {
66
66
  error: WalletError;
67
67
  };
68
- /**
69
- * The WalletConnect relay transport socket dropped (relayer `disconnect` /
70
- * `transport_closed`) — e.g. iOS suspending the WebView during a wallet
71
- * deep-link silently kills the socket. Distinct from `relayError` (an abnormal
72
- * close that surfaced an ERROR): this is the lifecycle FACT of the socket going
73
- * down, clean or not. Pair with `relayReconnected` (same `sdkSessionId`) to
74
- * measure the dead window — the gap that leaves an in-flight sign/connect
75
- * response undelivered (CARE-263). Telemetry-only; carries at most a scrubbed
76
- * reason (no address / payload).
77
- */
78
- relayDisconnected: {
79
- error?: WalletError;
80
- };
81
- /**
82
- * The WalletConnect relay transport reconnected after a `relayDisconnected`.
83
- * The elapsed time since the paired disconnect is the socket's dead window.
84
- * Telemetry-only.
85
- */
86
- relayReconnected: void;
87
68
  /**
88
69
  * `SignClient.init` (WalletConnect) rejected — the client could not be created, so
89
70
  * no connect could proceed. Rejects on a storage (IndexedDB) or crypto init failure,
@@ -125,9 +106,13 @@ export interface UWCEventMap {
125
106
  isLoading: boolean;
126
107
  isWaitingForUserApproval: boolean;
127
108
  };
128
- /** Network switch succeeded. */
109
+ /** Network switch succeeded. `address` is the new address the switch
110
+ * resolved to (present whenever the connector returned one) — used by
111
+ * the lifecycle bridge to suppress the wallet's own echo of this same
112
+ * change (see attachLifecycle's echo-suppression window). */
129
113
  networkSwitched: {
130
114
  network: Network;
115
+ address?: string;
131
116
  };
132
117
  /** Wallet capabilities were refreshed. */
133
118
  capabilitiesUpdated: {
@@ -1 +1 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}
package/dist/events.js CHANGED
@@ -30,8 +30,6 @@ export const TELEMETRY_ONLY_EVENTS = new Set([
30
30
  'walletDiscoveryFailed',
31
31
  'bridgeError',
32
32
  'relayError',
33
- 'relayDisconnected',
34
- 'relayReconnected',
35
33
  'walletConnectInitError',
36
34
  'walletAccountChanged',
37
35
  'walletChainChanged',
@@ -53,8 +51,6 @@ const EVENT_NAME_FLAGS = {
53
51
  walletDiscoveryFailed: true,
54
52
  bridgeError: true,
55
53
  relayError: true,
56
- relayDisconnected: true,
57
- relayReconnected: true,
58
54
  walletConnectInitError: true,
59
55
  connecting: true,
60
56
  connected: true,
@@ -1 +1 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAiBA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,SAAS;IACT,YAAY;IACZ,eAAe;IACf,aAAa;IACb,eAAe;IACf,iBAAiB;IACjB,uBAAuB;IACvB,uBAAuB;IACvB,YAAY;CACJ,CAAA;AA6TV;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAA8B,IAAI,GAAG,CAAC;IACtE,KAAK;IACL,gBAAgB;IAChB,iBAAiB;IACjB,gBAAgB;IAChB,cAAc;IACd,gBAAgB;IAChB,uBAAuB;IACvB,aAAa;IACb,YAAY;IACZ,mBAAmB;IACnB,kBAAkB;IAClB,wBAAwB;IACxB,sBAAsB;IACtB,oBAAoB;IACpB,oBAAoB;IACpB,sBAAsB;IACtB,+BAA+B;IAC/B,yBAAyB;IACzB,0BAA0B;CAC3B,CAAC,CAAA;AAOF;;;;;GAKG;AACH,MAAM,gBAAgB,GAA+B;IACnD,KAAK,EAAE,IAAI;IACX,eAAe,EAAE,IAAI;IACrB,qBAAqB,EAAE,IAAI;IAC3B,WAAW,EAAE,IAAI;IACjB,UAAU,EAAE,IAAI;IAChB,iBAAiB,EAAE,IAAI;IACvB,gBAAgB,EAAE,IAAI;IACtB,sBAAsB,EAAE,IAAI;IAC5B,UAAU,EAAE,IAAI;IAChB,SAAS,EAAE,IAAI;IACf,YAAY,EAAE,IAAI;IAClB,aAAa,EAAE,IAAI;IACnB,cAAc,EAAE,IAAI;IACpB,gBAAgB,EAAE,IAAI;IACtB,eAAe,EAAE,IAAI;IACrB,mBAAmB,EAAE,IAAI;IACzB,KAAK,EAAE,IAAI;IACX,GAAG,EAAE,IAAI;IACT,cAAc,EAAE,IAAI;IACpB,eAAe,EAAE,IAAI;IACrB,cAAc,EAAE,IAAI;IACpB,YAAY,EAAE,IAAI;IAClB,cAAc,EAAE,IAAI;IACpB,oBAAoB,EAAE,IAAI;IAC1B,kBAAkB,EAAE,IAAI;IACxB,kBAAkB,EAAE,IAAI;IACxB,oBAAoB,EAAE,IAAI;IAC1B,6BAA6B,EAAE,IAAI;IACnC,uBAAuB,EAAE,IAAI;IAC7B,wBAAwB,EAAE,IAAI;IAC9B,MAAM,EAAE,IAAI;CACb,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAmB,CAAA"}
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAiBA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,SAAS;IACT,YAAY;IACZ,eAAe;IACf,aAAa;IACb,eAAe;IACf,iBAAiB;IACjB,uBAAuB;IACvB,uBAAuB;IACvB,YAAY;CACJ,CAAA;AA8SV;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAA8B,IAAI,GAAG,CAAC;IACtE,KAAK;IACL,gBAAgB;IAChB,iBAAiB;IACjB,gBAAgB;IAChB,cAAc;IACd,gBAAgB;IAChB,uBAAuB;IACvB,aAAa;IACb,YAAY;IACZ,wBAAwB;IACxB,sBAAsB;IACtB,oBAAoB;IACpB,oBAAoB;IACpB,sBAAsB;IACtB,+BAA+B;IAC/B,yBAAyB;IACzB,0BAA0B;CAC3B,CAAC,CAAA;AAOF;;;;;GAKG;AACH,MAAM,gBAAgB,GAA+B;IACnD,KAAK,EAAE,IAAI;IACX,eAAe,EAAE,IAAI;IACrB,qBAAqB,EAAE,IAAI;IAC3B,WAAW,EAAE,IAAI;IACjB,UAAU,EAAE,IAAI;IAChB,sBAAsB,EAAE,IAAI;IAC5B,UAAU,EAAE,IAAI;IAChB,SAAS,EAAE,IAAI;IACf,YAAY,EAAE,IAAI;IAClB,aAAa,EAAE,IAAI;IACnB,cAAc,EAAE,IAAI;IACpB,gBAAgB,EAAE,IAAI;IACtB,eAAe,EAAE,IAAI;IACrB,mBAAmB,EAAE,IAAI;IACzB,KAAK,EAAE,IAAI;IACX,GAAG,EAAE,IAAI;IACT,cAAc,EAAE,IAAI;IACpB,eAAe,EAAE,IAAI;IACrB,cAAc,EAAE,IAAI;IACpB,YAAY,EAAE,IAAI;IAClB,cAAc,EAAE,IAAI;IACpB,oBAAoB,EAAE,IAAI;IAC1B,kBAAkB,EAAE,IAAI;IACxB,kBAAkB,EAAE,IAAI;IACxB,oBAAoB,EAAE,IAAI;IAC1B,6BAA6B,EAAE,IAAI;IACnC,uBAAuB,EAAE,IAAI;IAC7B,wBAAwB,EAAE,IAAI;IAC9B,MAAM,EAAE,IAAI;CACb,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAmB,CAAA"}
@@ -20,9 +20,19 @@ export interface AttachLifecycleOptions {
20
20
  * The active connector's `onLifecycleEvent` (already bound). `undefined` when the
21
21
  * connector can't observe lifecycle at all; the value it returns is `undefined`
22
22
  * when THIS session can't be observed (e.g. no live `.on`). Either way the
23
- * bridge emits `lifecycleTelemetryUnavailable` and becomes a no-op.
23
+ * bridge emits `lifecycleTelemetryUnavailable` and becomes a no-op FOR THIS
24
+ * STREAM — `subscribeAccounts` below is attached independently.
24
25
  */
25
26
  subscribe: ((l: (e: WalletLifecycleEvent) => void) => (() => void) | undefined) | undefined;
27
+ /**
28
+ * The active connector's `onAccountsChanged` (already bound), carrying the
29
+ * REAL account list — a separate concern from `subscribe` above (some
30
+ * connectors, e.g. Tron today, implement one without the other). Absent
31
+ * entirely when the connector doesn't support real account-sync.
32
+ */
33
+ subscribeAccounts?: ((l: (accounts: string[]) => void) => (() => void) | undefined) | undefined;
34
+ /** Invoked with the resolved (post-echo-filter) real account list whenever `subscribeAccounts` delivers one. Required whenever `subscribeAccounts` is provided. */
35
+ onAccountsChanged?: (accounts: string[]) => void;
26
36
  /** Resolved per-event so a mid-session account/chain change is reflected. */
27
37
  getRouting: () => LifecycleRouting;
28
38
  connectionMode: ConnectionMode;
@@ -31,8 +41,9 @@ export interface AttachLifecycleOptions {
31
41
  /** Direct page vs production iframe — stamped on `lifecycleTelemetryUnavailable`. */
32
42
  runtime?: 'direct' | 'iframe';
33
43
  /**
34
- * Window (ms) within which a wallet `chainChanged` is treated as the echo of a
35
- * UWC-initiated `switchNetwork` and suppressed. Default 3000.
44
+ * Window (ms) within which a wallet `chainChanged`/`accountsChanged` is
45
+ * treated as the echo of a UWC-initiated `switchNetwork` and suppressed.
46
+ * Default 3000.
36
47
  */
37
48
  echoWindowMs?: number;
38
49
  /**
@@ -44,6 +55,7 @@ export interface AttachLifecycleOptions {
44
55
  */
45
56
  initialSwitch?: {
46
57
  chainId: NetworkId;
58
+ address?: string;
47
59
  at: number;
48
60
  } | undefined;
49
61
  now?: () => number;
@@ -51,19 +63,25 @@ export interface AttachLifecycleOptions {
51
63
  /**
52
64
  * Bridge a connector's PII-safe `WalletLifecycleEvent` stream onto the event bus
53
65
  * as `walletAccountChanged` / `walletChainChanged` / `walletDisconnected` /
54
- * `walletSessionExpired`.
66
+ * `walletSessionExpired`, AND (separately) forward the connector's real
67
+ * account list to `onAccountsChanged` for session-sync.
55
68
  *
56
- * Two correctness concerns are handled here:
69
+ * Three correctness concerns are handled here:
57
70
  * - **Echo suppression.** When UWC drives a `switchNetwork`, the wallet emits its
58
- * own `chainChanged` for the same chain — that's already captured by UWC's
59
- * `networkSwitched` / the switch handoff, so re-emitting it as a wallet-
60
- * initiated `walletChainChanged` would double-count. We watch the bus for
61
- * `networkSwitched` and drop a matching `chainChanged` inside `echoWindowMs`.
62
- * - **Availability is signal.** If the connector can't observe lifecycle, we emit
63
- * `lifecycleTelemetryUnavailable` ONCE so a dashboard can tell "silent" from
64
- * "unwired".
71
+ * own `chainChanged`/`accountsChanged` for the same change — that's already
72
+ * captured by UWC's `networkSwitched` / the switch handoff, so re-emitting it
73
+ * would double-count. We watch the bus for `networkSwitched` and drop a
74
+ * matching echo of either kind inside `echoWindowMs`.
75
+ * - **Availability is signal, per stream.** If the connector can't observe
76
+ * telemetry lifecycle, we emit `lifecycleTelemetryUnavailable` ONCE but
77
+ * that signal is specific to the TELEMETRY stream. A connector missing
78
+ * `onLifecycleEvent` but implementing `onAccountsChanged` (e.g. Tron today)
79
+ * still gets real account-sync; the two streams are independently attached.
80
+ * - **Shared emission budget.** Both streams count against the same
81
+ * `MAX_LIFECYCLE_EVENTS_PER_ATTACHMENT` ceiling — a storming provider
82
+ * doesn't get double budget just because two streams exist.
65
83
  *
66
- * @returns a teardown that removes the connector subscription AND the bus watcher.
84
+ * @returns a teardown that removes both connector subscriptions AND the bus watcher.
67
85
  */
68
86
  export declare function attachLifecycle(opts: AttachLifecycleOptions): () => void;
69
87
  //# sourceMappingURL=lifecycle-bridge.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle-bridge.d.ts","sourceRoot":"","sources":["../../src/observability/lifecycle-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,cAAc,EACd,SAAS,EACT,SAAS,EAEV,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE7D,mEAAmE;AACnE,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,cAAc,CAAA;IAC9B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,CAAA;CAClC;AAED;;;;;;GAMG;AACH,eAAO,MAAM,mCAAmC,MAAM,CAAA;AAEtD,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,YAAY,CAAA;IAC1B;;;;;OAKG;IACH,SAAS,EACL,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,oBAAoB,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC,GACpE,SAAS,CAAA;IACb,6EAA6E;IAC7E,UAAU,EAAE,MAAM,gBAAgB,CAAA;IAClC,cAAc,EAAE,cAAc,CAAA;IAC9B,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,CAAA;IACjC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,qFAAqF;IACrF,OAAO,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAC7B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE;QAAE,OAAO,EAAE,SAAS,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAA;IAC9D,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CACnB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,sBAAsB,GAAG,MAAM,IAAI,CA2IxE"}
1
+ {"version":3,"file":"lifecycle-bridge.d.ts","sourceRoot":"","sources":["../../src/observability/lifecycle-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,cAAc,EACd,SAAS,EACT,SAAS,EAEV,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE7D,mEAAmE;AACnE,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,cAAc,CAAA;IAC9B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,CAAA;CAClC;AAED;;;;;;GAMG;AACH,eAAO,MAAM,mCAAmC,MAAM,CAAA;AAEtD,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,YAAY,CAAA;IAC1B;;;;;;OAMG;IACH,SAAS,EACL,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,oBAAoB,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC,GACpE,SAAS,CAAA;IACb;;;;;OAKG;IACH,iBAAiB,CAAC,EACd,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC,GAC/D,SAAS,CAAA;IACb,mKAAmK;IACnK,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,IAAI,CAAA;IAChD,6EAA6E;IAC7E,UAAU,EAAE,MAAM,gBAAgB,CAAA;IAClC,cAAc,EAAE,cAAc,CAAA;IAC9B,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,CAAA;IACjC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,qFAAqF;IACrF,OAAO,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAC7B;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;;;;OAMG;IACH,aAAa,CAAC,EACV;QAAE,OAAO,EAAE,SAAS,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,GACpD,SAAS,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,sBAAsB,GAAG,MAAM,IAAI,CAsOxE"}
@@ -9,22 +9,28 @@ export const MAX_LIFECYCLE_EVENTS_PER_ATTACHMENT = 100;
9
9
  /**
10
10
  * Bridge a connector's PII-safe `WalletLifecycleEvent` stream onto the event bus
11
11
  * as `walletAccountChanged` / `walletChainChanged` / `walletDisconnected` /
12
- * `walletSessionExpired`.
12
+ * `walletSessionExpired`, AND (separately) forward the connector's real
13
+ * account list to `onAccountsChanged` for session-sync.
13
14
  *
14
- * Two correctness concerns are handled here:
15
+ * Three correctness concerns are handled here:
15
16
  * - **Echo suppression.** When UWC drives a `switchNetwork`, the wallet emits its
16
- * own `chainChanged` for the same chain — that's already captured by UWC's
17
- * `networkSwitched` / the switch handoff, so re-emitting it as a wallet-
18
- * initiated `walletChainChanged` would double-count. We watch the bus for
19
- * `networkSwitched` and drop a matching `chainChanged` inside `echoWindowMs`.
20
- * - **Availability is signal.** If the connector can't observe lifecycle, we emit
21
- * `lifecycleTelemetryUnavailable` ONCE so a dashboard can tell "silent" from
22
- * "unwired".
17
+ * own `chainChanged`/`accountsChanged` for the same change — that's already
18
+ * captured by UWC's `networkSwitched` / the switch handoff, so re-emitting it
19
+ * would double-count. We watch the bus for `networkSwitched` and drop a
20
+ * matching echo of either kind inside `echoWindowMs`.
21
+ * - **Availability is signal, per stream.** If the connector can't observe
22
+ * telemetry lifecycle, we emit `lifecycleTelemetryUnavailable` ONCE but
23
+ * that signal is specific to the TELEMETRY stream. A connector missing
24
+ * `onLifecycleEvent` but implementing `onAccountsChanged` (e.g. Tron today)
25
+ * still gets real account-sync; the two streams are independently attached.
26
+ * - **Shared emission budget.** Both streams count against the same
27
+ * `MAX_LIFECYCLE_EVENTS_PER_ATTACHMENT` ceiling — a storming provider
28
+ * doesn't get double budget just because two streams exist.
23
29
  *
24
- * @returns a teardown that removes the connector subscription AND the bus watcher.
30
+ * @returns a teardown that removes both connector subscriptions AND the bus watcher.
25
31
  */
26
32
  export function attachLifecycle(opts) {
27
- const { eventManager, subscribe, getRouting } = opts;
33
+ const { eventManager, subscribe, subscribeAccounts, getRouting } = opts;
28
34
  const runtime = opts.runtime ?? 'direct';
29
35
  const now = opts.now ?? Date.now;
30
36
  const echoWindowMs = opts.echoWindowMs ?? 3000;
@@ -35,121 +41,190 @@ export function attachLifecycle(opts) {
35
41
  walletId: opts.walletId,
36
42
  runtime
37
43
  });
38
- if (!subscribe) {
44
+ if (!subscribe && !subscribeAccounts) {
39
45
  // In the production iframe the injected subscription is deliberately not
40
46
  // attempted (the provider is a Comlink proxy) — the BRIDGE, not the connector,
41
- // is why lifecycle is unobservable. On the direct page, a connector with no
42
- // `onLifecycleEvent` simply has no lifecycle support for this namespace yet.
47
+ // is why lifecycle is unobservable. On the direct page, a connector with
48
+ // neither stream simply has no lifecycle support for this namespace yet.
43
49
  emitUnavailable(runtime === 'iframe'
44
50
  ? 'bridge_subscription_unavailable'
45
51
  : 'unsupported_namespace');
46
52
  return () => { };
47
53
  }
48
- // Record UWC-initiated switches so the wallet's chainChanged echo can be
49
- // dropped. Armed from BOTH signals: `awaitingWallet` (operation switchNetwork)
50
- // arms at the handoff START, because some providers emit their chainChanged
51
- // BEFORE the switch request resolves — i.e. before `networkSwitched` exists —
52
- // and `networkSwitched` re-arms at completion for the late-echo case. The
53
- // re-arm means one extra suppression window can follow an early echo; the
54
- // only event it could swallow is a sub-window user re-switch to the chain
55
- // that just became activeaccepted over double-counting every early echo.
56
- let lastSwitch = opts.initialSwitch;
54
+ let pendingSwitches = opts.initialSwitch
55
+ ? [opts.initialSwitch]
56
+ : [];
57
+ const pruneExpired = () => {
58
+ pendingSwitches = pendingSwitches.filter(p => now() - p.at <= echoWindowMs);
59
+ };
60
+ // `awaitingWallet` then `networkSwitched` are usually the START and
61
+ // COMPLETION of the SAME switch re-arming updates that existing entry
62
+ // (refreshing `at`, adding the resolved address) rather than pushing a
63
+ // duplicate, which would otherwise leave a phantom entry behind after only
64
+ // one of the two is consumed by a single wallet echo.
65
+ const armOrRearm = (partial) => {
66
+ pruneExpired();
67
+ if (partial.chainId !== undefined) {
68
+ const idx = pendingSwitches.findIndex(p => p.chainId === partial.chainId);
69
+ if (idx !== -1) {
70
+ pendingSwitches[idx] = {
71
+ ...pendingSwitches[idx],
72
+ ...partial,
73
+ at: now()
74
+ };
75
+ return;
76
+ }
77
+ }
78
+ pendingSwitches.push({ ...partial, at: now() });
79
+ };
57
80
  const offAwaiting = eventManager.on('awaitingWallet', data => {
58
81
  if (data.operation === 'switchNetwork' && data.chainId !== undefined) {
59
- lastSwitch = { chainId: data.chainId, at: now() };
82
+ armOrRearm({ chainId: data.chainId });
60
83
  }
61
84
  });
62
85
  const offSwitched = eventManager.on('networkSwitched', data => {
63
- lastSwitch = { chainId: data.network.id, at: now() };
86
+ armOrRearm({ chainId: data.network.id, address: data.address });
64
87
  });
65
88
  const detachBusWatchers = () => {
66
89
  offAwaiting();
67
90
  offSwitched();
68
91
  };
92
+ // Emission budget for THIS attachment, shared across both streams —
93
+ // suppressed echoes don't spend it.
94
+ let emitted = 0;
95
+ let capNotified = false;
96
+ const overCap = () => {
97
+ if (emitted >= MAX_LIFECYCLE_EVENTS_PER_ATTACHMENT) {
98
+ // Mark the trip ONCE — a silent cap would be indistinguishable from a
99
+ // provider that simply went quiet.
100
+ if (!capNotified) {
101
+ capNotified = true;
102
+ emitUnavailable('emission_cap');
103
+ }
104
+ return true;
105
+ }
106
+ return false;
107
+ };
69
108
  // Defense-in-depth: a connector whose subscribe THROWS (e.g. a provider whose
70
109
  // `.on` rejects an un-proxied handler across the iframe bridge) must degrade to
71
110
  // "unavailable", never break the connect path that called us.
72
111
  let unsub;
73
- // Emission budget for THIS attachment — suppressed echoes don't spend it.
74
- let emitted = 0;
75
- let capNotified = false;
76
- try {
77
- unsub = subscribe(e => {
78
- // The whole body is guarded: wallet SDKs dispatch their listeners
79
- // unguarded (e.g. TonConnect's bare `forEach`), so a throw here — from
80
- // `getRouting()` or any future edit — would abort delivery to the
81
- // wallet's OWN later subscribers, including one resolving a pending
82
- // connect. Telemetry must never do that.
83
- try {
84
- if (emitted >= MAX_LIFECYCLE_EVENTS_PER_ATTACHMENT) {
85
- // Mark the trip ONCE — a silent cap would be indistinguishable from a
86
- // provider that simply went quiet.
87
- if (!capNotified) {
88
- capNotified = true;
89
- emitUnavailable('emission_cap');
90
- }
91
- return;
92
- }
93
- const routing = getRouting();
94
- switch (e.type) {
95
- case 'accountChanged':
96
- emitted++;
97
- eventManager.emit('walletAccountChanged', routing);
112
+ if (subscribe) {
113
+ try {
114
+ unsub = subscribe(e => {
115
+ // The whole body is guarded: wallet SDKs dispatch their listeners
116
+ // unguarded (e.g. TonConnect's bare `forEach`), so a throw here would
117
+ // abort delivery to the wallet's OWN later subscribers, including one
118
+ // resolving a pending connect. Telemetry must never do that.
119
+ try {
120
+ if (overCap())
98
121
  return;
99
- case 'chainChanged': {
100
- const isEcho = !!lastSwitch &&
101
- e.chainId !== undefined &&
102
- lastSwitch.chainId === e.chainId &&
103
- now() - lastSwitch.at <= echoWindowMs;
104
- if (isEcho) {
105
- // Consume the echo: a UWC switch produces exactly one wallet echo, so
106
- // a LATER chainChanged to the same chain inside the window is a genuine
107
- // user-initiated switch-back and must not be suppressed.
108
- lastSwitch = undefined;
122
+ const routing = getRouting();
123
+ switch (e.type) {
124
+ case 'accountChanged':
125
+ emitted++;
126
+ eventManager.emit('walletAccountChanged', routing);
127
+ return;
128
+ case 'chainChanged': {
129
+ pruneExpired();
130
+ const idx = e.chainId !== undefined
131
+ ? pendingSwitches.findIndex(p => p.chainId !== undefined && p.chainId === e.chainId)
132
+ : -1;
133
+ if (idx !== -1) {
134
+ // Consume the echo: a UWC switch produces exactly one wallet echo, so
135
+ // a LATER chainChanged to the same chain inside the window is a genuine
136
+ // user-initiated switch-back and must not be suppressed. Only the
137
+ // chain half is consumed — a still-pending address echo (if the
138
+ // switch also changed address format) must still be checked; drop the
139
+ // entry entirely once nothing is left pending on it.
140
+ const entry = pendingSwitches[idx];
141
+ if (entry.address !== undefined) {
142
+ pendingSwitches[idx] = { ...entry, chainId: undefined };
143
+ }
144
+ else {
145
+ pendingSwitches.splice(idx, 1);
146
+ }
147
+ return;
148
+ }
149
+ emitted++;
150
+ eventManager.emit('walletChainChanged', {
151
+ ...routing,
152
+ ...(e.chainId !== undefined ? { chainId: e.chainId } : {})
153
+ });
109
154
  return;
110
155
  }
111
- emitted++;
112
- eventManager.emit('walletChainChanged', {
113
- ...routing,
114
- ...(e.chainId !== undefined ? { chainId: e.chainId } : {})
115
- });
116
- return;
156
+ case 'disconnect':
157
+ emitted++;
158
+ eventManager.emit('walletDisconnected', routing);
159
+ return;
160
+ case 'sessionExpired':
161
+ emitted++;
162
+ eventManager.emit('walletSessionExpired', routing);
163
+ return;
117
164
  }
118
- case 'disconnect':
119
- emitted++;
120
- eventManager.emit('walletDisconnected', routing);
165
+ }
166
+ catch {
167
+ // Swallowed: better to drop one lifecycle record than to break the
168
+ // wallet's event dispatch.
169
+ }
170
+ });
171
+ }
172
+ catch {
173
+ unsub = undefined;
174
+ }
175
+ if (!unsub) {
176
+ // The connector accepted the subscribe call but this session has no
177
+ // observable telemetry surface (returned undefined or threw). Over the
178
+ // bridge, that absence is the bridge's doing, not the provider's.
179
+ emitUnavailable(runtime === 'iframe'
180
+ ? 'bridge_subscription_unavailable'
181
+ : 'provider_subscription_unavailable');
182
+ }
183
+ }
184
+ let unsubAccounts;
185
+ if (subscribeAccounts) {
186
+ try {
187
+ unsubAccounts = subscribeAccounts(accounts => {
188
+ try {
189
+ if (overCap())
121
190
  return;
122
- case 'sessionExpired':
123
- emitted++;
124
- eventManager.emit('walletSessionExpired', routing);
191
+ const primary = accounts[0];
192
+ pruneExpired();
193
+ const idx = accounts.length > 0
194
+ ? pendingSwitches.findIndex(p => p.address !== undefined && p.address === primary)
195
+ : -1;
196
+ if (idx !== -1) {
197
+ // Same one-shot consume as the chainChanged echo above, mirrored
198
+ // for the address half.
199
+ const entry = pendingSwitches[idx];
200
+ if (entry.chainId !== undefined) {
201
+ pendingSwitches[idx] = { ...entry, address: undefined };
202
+ }
203
+ else {
204
+ pendingSwitches.splice(idx, 1);
205
+ }
125
206
  return;
207
+ }
208
+ emitted++;
209
+ opts.onAccountsChanged?.(accounts);
126
210
  }
127
- }
128
- catch {
129
- // Swallowed: better to drop one lifecycle record than to break the
130
- // wallet's event dispatch.
131
- }
132
- });
133
- }
134
- catch {
135
- unsub = undefined;
211
+ catch {
212
+ // Swallowed: never break the wallet SDK's own listener dispatch.
213
+ }
214
+ });
215
+ }
216
+ catch {
217
+ unsubAccounts = undefined;
218
+ }
136
219
  }
137
- // The connector accepted the subscribe call but this session has no observable
138
- // surface (returned undefined) or threw — treat as "unavailable" and don't
139
- // leave the bus watchers attached.
140
- if (!unsub) {
220
+ if (!unsub && !unsubAccounts) {
141
221
  detachBusWatchers();
142
- // `onLifecycleEvent` ran but exposed no live subscription surface for this
143
- // session (returned undefined or threw). Over the bridge, that absence is the
144
- // bridge's doing, not the provider's.
145
- emitUnavailable(runtime === 'iframe'
146
- ? 'bridge_subscription_unavailable'
147
- : 'provider_subscription_unavailable');
148
222
  return () => { };
149
223
  }
150
224
  return () => {
151
225
  detachBusWatchers();
152
- unsub();
226
+ unsub?.();
227
+ unsubAccounts?.();
153
228
  };
154
229
  }
155
230
  //# sourceMappingURL=lifecycle-bridge.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle-bridge.js","sourceRoot":"","sources":["../../src/observability/lifecycle-bridge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lifecycle-bridge.js","sourceRoot":"","sources":["../../src/observability/lifecycle-bridge.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../src/observability/telemetry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../src/observability/telemetry.ts"],"names":[],"mappings":"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"}
@@ -308,31 +308,6 @@ function buildTelemetryEvent(name, data, sdkSessionId, now, correlationId) {
308
308
  error: { type: d.error.type, message: scrubMessage(d.error.message) }
309
309
  };
310
310
  }
311
- case 'relayDisconnected': {
312
- const d = data;
313
- // The relay socket dropped. Observational, NOT a failure: a drop only
314
- // matters if a round-trip was in flight — deliberately left without a
315
- // `failureKind` so it never inflates failure metrics. Pair with
316
- // `relayReconnected` (same sdkSessionId) for the dead-window duration.
317
- return {
318
- ...base,
319
- connectionMode: 'walletConnect',
320
- source: 'provider',
321
- ...(d.error
322
- ? {
323
- error: {
324
- type: d.error.type,
325
- message: scrubMessage(d.error.message)
326
- }
327
- }
328
- : {})
329
- };
330
- }
331
- case 'relayReconnected': {
332
- // Socket recovered. Name-only + mode; the diagnostic value is the timestamp
333
- // relative to the paired `relayDisconnected`.
334
- return { ...base, connectionMode: 'walletConnect', source: 'provider' };
335
- }
336
311
  case 'walletConnectInitError': {
337
312
  const d = data;
338
313
  // SignClient.init failed — the WC client never came up. Distinct from