@meshconnect/uwc-core 1.2.3-snapshot.dcfdbbf → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/events.d.ts +40 -5
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +4 -0
- package/dist/events.js.map +1 -1
- package/dist/observability/focus-tracker.d.ts +30 -11
- package/dist/observability/focus-tracker.d.ts.map +1 -1
- package/dist/observability/focus-tracker.js +54 -18
- package/dist/observability/focus-tracker.js.map +1 -1
- package/dist/observability/instrument-handoff.d.ts.map +1 -1
- package/dist/observability/instrument-handoff.js +25 -6
- package/dist/observability/instrument-handoff.js.map +1 -1
- package/dist/observability/lifecycle-bridge.d.ts +13 -31
- package/dist/observability/lifecycle-bridge.d.ts.map +1 -1
- package/dist/observability/lifecycle-bridge.js +92 -167
- package/dist/observability/lifecycle-bridge.js.map +1 -1
- package/dist/observability/relay-drop-tracker.d.ts +37 -0
- package/dist/observability/relay-drop-tracker.d.ts.map +1 -0
- package/dist/observability/relay-drop-tracker.js +30 -0
- package/dist/observability/relay-drop-tracker.js.map +1 -0
- package/dist/observability/telemetry.d.ts +8 -0
- package/dist/observability/telemetry.d.ts.map +1 -1
- package/dist/observability/telemetry.js +32 -5
- package/dist/observability/telemetry.js.map +1 -1
- package/dist/services/connection-service.d.ts +0 -43
- package/dist/services/connection-service.d.ts.map +1 -1
- package/dist/services/connection-service.js +9 -163
- package/dist/services/connection-service.js.map +1 -1
- package/dist/services/network-switch-service.d.ts.map +1 -1
- package/dist/services/network-switch-service.js +1 -4
- package/dist/services/network-switch-service.js.map +1 -1
- package/dist/universal-wallet-connector.d.ts.map +1 -1
- package/dist/universal-wallet-connector.js +18 -11
- package/dist/universal-wallet-connector.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +5 -5
- package/src/events.ts +50 -6
- package/src/observability/focus-tracker.test.ts +95 -8
- package/src/observability/focus-tracker.ts +72 -22
- package/src/observability/instrument-handoff.test.ts +62 -0
- package/src/observability/instrument-handoff.ts +37 -6
- package/src/observability/lifecycle-bridge.test.ts +0 -197
- package/src/observability/lifecycle-bridge.ts +99 -211
- package/src/observability/relay-drop-tracker.test.ts +84 -0
- package/src/observability/relay-drop-tracker.ts +53 -0
- package/src/observability/telemetry.test.ts +18 -0
- package/src/observability/telemetry.ts +41 -6
- package/src/services/connection-service.test.ts +0 -272
- package/src/services/connection-service.ts +10 -190
- package/src/services/network-switch-service.test.ts +0 -33
- package/src/services/network-switch-service.ts +1 -4
- package/src/universal-wallet-connector.observability.test.ts +54 -8
- package/src/universal-wallet-connector.ts +22 -12
- package/src/version.ts +1 -1
package/dist/events.d.ts
CHANGED
|
@@ -65,6 +65,23 @@ export interface UWCEventMap {
|
|
|
65
65
|
relayError: {
|
|
66
66
|
error: WalletError;
|
|
67
67
|
};
|
|
68
|
+
/**
|
|
69
|
+
* The WalletConnect relay transport socket dropped (relayer `disconnect`) — e.g.
|
|
70
|
+
* iOS suspending the WebView during a wallet deep-link silently kills the socket.
|
|
71
|
+
* Distinct from `relayError` (an abnormal close that surfaced an ERROR): this is
|
|
72
|
+
* the lifecycle FACT of the socket going down. Emitted once per outage (WC core
|
|
73
|
+
* re-emits `disconnect` on each failed reconnect); pair with `relayReconnected`
|
|
74
|
+
* to measure the dead window that leaves an in-flight sign/connect response
|
|
75
|
+
* undelivered (CARE-263). The relayer passes no payload, so this carries no
|
|
76
|
+
* reason. Telemetry-only.
|
|
77
|
+
*/
|
|
78
|
+
relayDisconnected: void;
|
|
79
|
+
/**
|
|
80
|
+
* The WalletConnect relay transport reconnected after a `relayDisconnected`.
|
|
81
|
+
* The elapsed time since the paired disconnect is the socket's dead window.
|
|
82
|
+
* Telemetry-only.
|
|
83
|
+
*/
|
|
84
|
+
relayReconnected: void;
|
|
68
85
|
/**
|
|
69
86
|
* `SignClient.init` (WalletConnect) rejected — the client could not be created, so
|
|
70
87
|
* no connect could proceed. Rejects on a storage (IndexedDB) or crypto init failure,
|
|
@@ -106,13 +123,9 @@ export interface UWCEventMap {
|
|
|
106
123
|
isLoading: boolean;
|
|
107
124
|
isWaitingForUserApproval: boolean;
|
|
108
125
|
};
|
|
109
|
-
/** Network switch succeeded.
|
|
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). */
|
|
126
|
+
/** Network switch succeeded. */
|
|
113
127
|
networkSwitched: {
|
|
114
128
|
network: Network;
|
|
115
|
-
address?: string;
|
|
116
129
|
};
|
|
117
130
|
/** Wallet capabilities were refreshed. */
|
|
118
131
|
capabilitiesUpdated: {
|
|
@@ -190,6 +203,11 @@ export interface UWCEventMap {
|
|
|
190
203
|
timeoutMs?: number | undefined;
|
|
191
204
|
/** switchNetwork only: target chain already the active one (no-op switch). */
|
|
192
205
|
targetAlreadyActive?: boolean | undefined;
|
|
206
|
+
/** Backgrounding during this handoff: cumulative hidden time (ms) + transition count. */
|
|
207
|
+
backgroundedMs?: number | undefined;
|
|
208
|
+
backgroundCount?: number | undefined;
|
|
209
|
+
/** WalletConnect only: relay-socket drops seen while this handoff was pending. */
|
|
210
|
+
relayDropCount?: number | undefined;
|
|
193
211
|
};
|
|
194
212
|
/** The user explicitly rejected (4001 / WalletError.type === 'rejected'). Closes a handoff. */
|
|
195
213
|
walletRejected: {
|
|
@@ -207,6 +225,11 @@ export interface UWCEventMap {
|
|
|
207
225
|
errorCode?: string | undefined;
|
|
208
226
|
failureKind?: FailureKind | undefined;
|
|
209
227
|
source?: ErrorSource | undefined;
|
|
228
|
+
/** Backgrounding during this handoff: cumulative hidden time (ms) + transition count. */
|
|
229
|
+
backgroundedMs?: number | undefined;
|
|
230
|
+
backgroundCount?: number | undefined;
|
|
231
|
+
/** WalletConnect only: relay-socket drops seen while this handoff was pending. */
|
|
232
|
+
relayDropCount?: number | undefined;
|
|
210
233
|
};
|
|
211
234
|
/** The op failed for any non-rejection reason. Closes a handoff. */
|
|
212
235
|
walletFailed: {
|
|
@@ -225,6 +248,11 @@ export interface UWCEventMap {
|
|
|
225
248
|
errorCode?: string | undefined;
|
|
226
249
|
failureKind?: FailureKind | undefined;
|
|
227
250
|
source?: ErrorSource | undefined;
|
|
251
|
+
/** Backgrounding during this handoff: cumulative hidden time (ms) + transition count. */
|
|
252
|
+
backgroundedMs?: number | undefined;
|
|
253
|
+
backgroundCount?: number | undefined;
|
|
254
|
+
/** WalletConnect only: relay-socket drops seen while this handoff was pending. */
|
|
255
|
+
relayDropCount?: number | undefined;
|
|
228
256
|
};
|
|
229
257
|
/**
|
|
230
258
|
* Side marker: the deadline passed with the op still pending. OBSERVATIONAL —
|
|
@@ -244,6 +272,11 @@ export interface UWCEventMap {
|
|
|
244
272
|
timeoutMs: number;
|
|
245
273
|
/** switchNetwork only: target chain already the active one (no-op switch). */
|
|
246
274
|
targetAlreadyActive?: boolean | undefined;
|
|
275
|
+
/** Backgrounding so far (marker fires mid-flight): hidden time (ms) + transition count. */
|
|
276
|
+
backgroundedMs?: number | undefined;
|
|
277
|
+
backgroundCount?: number | undefined;
|
|
278
|
+
/** WalletConnect only: relay-socket drops seen so far while this handoff was pending. */
|
|
279
|
+
relayDropCount?: number | undefined;
|
|
247
280
|
};
|
|
248
281
|
/** The wallet's active account/list changed. Signals THAT it changed, not which. */
|
|
249
282
|
walletAccountChanged: {
|
|
@@ -305,6 +338,8 @@ export interface UWCEventMap {
|
|
|
305
338
|
pageVisibleDuringHandoff: {
|
|
306
339
|
handoffId: string;
|
|
307
340
|
platform: Platform;
|
|
341
|
+
/** Duration the page was hidden for THIS hide→show segment (ms). */
|
|
342
|
+
hiddenMs?: number | undefined;
|
|
308
343
|
};
|
|
309
344
|
/**
|
|
310
345
|
* Back-compat catch-all. Fires after every other event above.
|
package/dist/events.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,OAAO,EACP,cAAc,EACd,cAAc,EACd,WAAW,EACX,eAAe,EACf,QAAQ,EACR,cAAc,EACd,QAAQ,EACR,SAAS,EACT,SAAS,EACT,WAAW,EACX,WAAW,EACX,0BAA0B,EAC3B,MAAM,wBAAwB,CAAA;AAE/B;;;;;GAKG;AACH,eAAO,MAAM,cAAc,wKAUjB,CAAA;AAEV,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAA;AAE1D;;;;;;;;GAQG;AACH,MAAM,WAAW,WAAW;IAC1B,kFAAkF;IAClF,KAAK,EAAE,IAAI,CAAA;IACX;;;;;OAKG;IACH,eAAe,EAAE;QACf,OAAO,EAAE,cAAc,EAAE,CAAA;QACzB,SAAS,CAAC,EACN,MAAM,CAAC,MAAM,EAAE;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,GACtD,SAAS,CAAA;KACd,CAAA;IACD;;;;;OAKG;IACH,qBAAqB,EAAE;QACrB,SAAS,EAAE,SAAS,CAAA;QACpB,cAAc,EAAE,cAAc,CAAA;QAC9B,KAAK,EAAE,WAAW,CAAA;KACnB,CAAA;IACD;;;;;;OAMG;IACH,WAAW,EAAE;QACX,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,CAAA;QACjC,KAAK,EAAE,WAAW,CAAA;KACnB,CAAA;IAED;;;;;;;OAOG;IACH,UAAU,EAAE;QACV,KAAK,EAAE,WAAW,CAAA;KACnB,CAAA;IAED;;;;;;;;;OASG;IACH,sBAAsB,EAAE;QACtB,KAAK,EAAE,WAAW,CAAA;KACnB,CAAA;IAED,+BAA+B;IAC/B,UAAU,EAAE;QAAE,cAAc,EAAE,cAAc,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAA;IAChE,0CAA0C;IAC1C,SAAS,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAA;IAC/B,4DAA4D;IAC5D,YAAY,EAAE,IAAI,CAAA;IAClB;;;OAGG;IACH,aAAa,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,cAAc,CAAA;KAAE,CAAA;IAE9D,sEAAsE;IACtE,cAAc,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAA;IAEpC,gEAAgE;IAChE,gBAAgB,EAAE;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,wBAAwB,EAAE,OAAO,CAAA;KAAE,CAAA;IAC3E
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}
|
package/dist/events.js
CHANGED
|
@@ -30,6 +30,8 @@ export const TELEMETRY_ONLY_EVENTS = new Set([
|
|
|
30
30
|
'walletDiscoveryFailed',
|
|
31
31
|
'bridgeError',
|
|
32
32
|
'relayError',
|
|
33
|
+
'relayDisconnected',
|
|
34
|
+
'relayReconnected',
|
|
33
35
|
'walletConnectInitError',
|
|
34
36
|
'walletAccountChanged',
|
|
35
37
|
'walletChainChanged',
|
|
@@ -51,6 +53,8 @@ const EVENT_NAME_FLAGS = {
|
|
|
51
53
|
walletDiscoveryFailed: true,
|
|
52
54
|
bridgeError: true,
|
|
53
55
|
relayError: true,
|
|
56
|
+
relayDisconnected: true,
|
|
57
|
+
relayReconnected: true,
|
|
54
58
|
walletConnectInitError: true,
|
|
55
59
|
connecting: true,
|
|
56
60
|
connected: true,
|
package/dist/events.js.map
CHANGED
|
@@ -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;
|
|
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;AAsVV;;;;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"}
|
|
@@ -22,21 +22,40 @@ export interface FocusWindowLike {
|
|
|
22
22
|
addEventListener(type: string, listener: () => void): void;
|
|
23
23
|
removeEventListener(type: string, listener: () => void): void;
|
|
24
24
|
}
|
|
25
|
+
/** Handle returned by `trackFocusDuringHandoff`. */
|
|
26
|
+
export interface FocusHandoffTracker {
|
|
27
|
+
/** Remove the visibility listeners. Always call on settle (no-op if none attached). */
|
|
28
|
+
stop: () => void;
|
|
29
|
+
/**
|
|
30
|
+
* Backgrounding summary at call time: how many times the page was hidden and the
|
|
31
|
+
* cumulative hidden duration (ms) during the handoff — including an in-progress
|
|
32
|
+
* hidden segment if the handoff settles while still backgrounded.
|
|
33
|
+
*/
|
|
34
|
+
summary: () => {
|
|
35
|
+
backgroundCount: number;
|
|
36
|
+
backgroundedMs: number;
|
|
37
|
+
};
|
|
38
|
+
}
|
|
25
39
|
/**
|
|
26
40
|
* While a wallet handoff is pending, emit a FACT on every tab-visibility
|
|
27
41
|
* transition — `pageHiddenDuringHandoff` when the page is backgrounded (the user
|
|
28
|
-
* likely left for the wallet app), `pageVisibleDuringHandoff`
|
|
29
|
-
* (including a bfcache `pageshow`, which iOS uses when
|
|
42
|
+
* likely left for the wallet app), `pageVisibleDuringHandoff` (with the segment's
|
|
43
|
+
* `hiddenMs`) when it returns (including a bfcache `pageshow`, which iOS uses when
|
|
44
|
+
* coming back from a wallet).
|
|
30
45
|
*
|
|
31
|
-
* This is the raw signal behind "did the user actually app-switch to the wallet
|
|
32
|
-
* for deep-link flows — it does NOT interpret abandonment. The
|
|
33
|
-
* scoped to the single handoff: attach right after `awaitingWallet`,
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
46
|
+
* This is the raw signal behind "did the user actually app-switch to the wallet,
|
|
47
|
+
* and for how long?" for deep-link flows — it does NOT interpret abandonment. The
|
|
48
|
+
* listeners are scoped to the single handoff: attach right after `awaitingWallet`,
|
|
49
|
+
* and `stop()` (called the instant the op settles) removes them, so the page's
|
|
50
|
+
* visibility is only observed during the blind window. SSR-safe (no-op when there
|
|
51
|
+
* is neither `document` nor `window`). `summary()` lets the handoff stamp the
|
|
52
|
+
* cumulative backgrounding onto its terminal.
|
|
37
53
|
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
54
|
+
* One non-transition case: if the tracker attaches while the page is ALREADY
|
|
55
|
+
* hidden (handoff initiated from a backgrounded tab), it emits an initial
|
|
56
|
+
* synthetic `pageHiddenDuringHandoff` at attach time so the eventual return pairs
|
|
57
|
+
* 1:1 and the hidden segment is counted. So `pageHiddenDuringHandoff` is "every
|
|
58
|
+
* transition into hidden, plus an already-hidden start", not strictly transitions.
|
|
40
59
|
*/
|
|
41
|
-
export declare function trackFocusDuringHandoff(eventManager: EventManager, handoffId: string, platform: Platform, doc?: FocusDocumentLike | undefined, win?: FocusWindowLike | undefined
|
|
60
|
+
export declare function trackFocusDuringHandoff(eventManager: EventManager, handoffId: string, platform: Platform, doc?: FocusDocumentLike | undefined, win?: FocusWindowLike | undefined, now?: () => number): FocusHandoffTracker;
|
|
42
61
|
//# sourceMappingURL=focus-tracker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"focus-tracker.d.ts","sourceRoot":"","sources":["../../src/observability/focus-tracker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE7D;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAAA;IAC1D,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAAA;CAC9D;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAAA;IAC1D,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAAA;CAC9D;AAYD
|
|
1
|
+
{"version":3,"file":"focus-tracker.d.ts","sourceRoot":"","sources":["../../src/observability/focus-tracker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE7D;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAAA;IAC1D,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAAA;CAC9D;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAAA;IAC1D,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAAA;CAC9D;AAYD,oDAAoD;AACpD,MAAM,WAAW,mBAAmB;IAClC,uFAAuF;IACvF,IAAI,EAAE,MAAM,IAAI,CAAA;IAChB;;;;OAIG;IACH,OAAO,EAAE,MAAM;QAAE,eAAe,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAA;CACnE;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,uBAAuB,CACrC,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,QAAQ,EAClB,GAAG,GAAE,iBAAiB,GAAG,SAA6B,EACtD,GAAG,GAAE,eAAe,GAAG,SAA2B,EAClD,GAAG,GAAE,MAAM,MAAiB,GAC3B,mBAAmB,CAoErB"}
|
|
@@ -9,22 +9,34 @@ function resolveWindow() {
|
|
|
9
9
|
/**
|
|
10
10
|
* While a wallet handoff is pending, emit a FACT on every tab-visibility
|
|
11
11
|
* transition — `pageHiddenDuringHandoff` when the page is backgrounded (the user
|
|
12
|
-
* likely left for the wallet app), `pageVisibleDuringHandoff`
|
|
13
|
-
* (including a bfcache `pageshow`, which iOS uses when
|
|
12
|
+
* likely left for the wallet app), `pageVisibleDuringHandoff` (with the segment's
|
|
13
|
+
* `hiddenMs`) when it returns (including a bfcache `pageshow`, which iOS uses when
|
|
14
|
+
* coming back from a wallet).
|
|
14
15
|
*
|
|
15
|
-
* This is the raw signal behind "did the user actually app-switch to the wallet
|
|
16
|
-
* for deep-link flows — it does NOT interpret abandonment. The
|
|
17
|
-
* scoped to the single handoff: attach right after `awaitingWallet`,
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
16
|
+
* This is the raw signal behind "did the user actually app-switch to the wallet,
|
|
17
|
+
* and for how long?" for deep-link flows — it does NOT interpret abandonment. The
|
|
18
|
+
* listeners are scoped to the single handoff: attach right after `awaitingWallet`,
|
|
19
|
+
* and `stop()` (called the instant the op settles) removes them, so the page's
|
|
20
|
+
* visibility is only observed during the blind window. SSR-safe (no-op when there
|
|
21
|
+
* is neither `document` nor `window`). `summary()` lets the handoff stamp the
|
|
22
|
+
* cumulative backgrounding onto its terminal.
|
|
21
23
|
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
+
* One non-transition case: if the tracker attaches while the page is ALREADY
|
|
25
|
+
* hidden (handoff initiated from a backgrounded tab), it emits an initial
|
|
26
|
+
* synthetic `pageHiddenDuringHandoff` at attach time so the eventual return pairs
|
|
27
|
+
* 1:1 and the hidden segment is counted. So `pageHiddenDuringHandoff` is "every
|
|
28
|
+
* transition into hidden, plus an already-hidden start", not strictly transitions.
|
|
24
29
|
*/
|
|
25
|
-
export function trackFocusDuringHandoff(eventManager, handoffId, platform, doc = resolveDocument(), win = resolveWindow()) {
|
|
30
|
+
export function trackFocusDuringHandoff(eventManager, handoffId, platform, doc = resolveDocument(), win = resolveWindow(), now = Date.now) {
|
|
31
|
+
let backgroundCount = 0;
|
|
32
|
+
let totalHiddenMs = 0;
|
|
33
|
+
let hiddenSince;
|
|
34
|
+
const summary = () => ({
|
|
35
|
+
backgroundCount,
|
|
36
|
+
backgroundedMs: totalHiddenMs + (hiddenSince !== undefined ? now() - hiddenSince : 0)
|
|
37
|
+
});
|
|
26
38
|
if (!doc && !win)
|
|
27
|
-
return () => { };
|
|
39
|
+
return { stop: () => { }, summary };
|
|
28
40
|
// One physical return can fire BOTH `pageshow` (window) and a
|
|
29
41
|
// `visibilitychange`→visible (document) — an iOS bfcache restore does. Dedupe
|
|
30
42
|
// consecutive same-state emits so the hidden/visible events actually pair.
|
|
@@ -33,9 +45,23 @@ export function trackFocusDuringHandoff(eventManager, handoffId, platform, doc =
|
|
|
33
45
|
if (state === lastState)
|
|
34
46
|
return;
|
|
35
47
|
lastState = state;
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
48
|
+
if (state === 'hidden') {
|
|
49
|
+
hiddenSince = now();
|
|
50
|
+
backgroundCount++;
|
|
51
|
+
eventManager.emit('pageHiddenDuringHandoff', { handoffId, platform });
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
let hiddenMs;
|
|
55
|
+
if (hiddenSince !== undefined) {
|
|
56
|
+
hiddenMs = now() - hiddenSince;
|
|
57
|
+
totalHiddenMs += hiddenMs;
|
|
58
|
+
hiddenSince = undefined;
|
|
59
|
+
}
|
|
60
|
+
eventManager.emit('pageVisibleDuringHandoff', {
|
|
61
|
+
handoffId,
|
|
62
|
+
platform,
|
|
63
|
+
...(hiddenMs !== undefined ? { hiddenMs } : {})
|
|
64
|
+
});
|
|
39
65
|
};
|
|
40
66
|
const onVisibility = () => {
|
|
41
67
|
const hidden = doc?.visibilityState === 'hidden' || doc?.hidden === true;
|
|
@@ -49,9 +75,19 @@ export function trackFocusDuringHandoff(eventManager, handoffId, platform, doc =
|
|
|
49
75
|
};
|
|
50
76
|
doc?.addEventListener('visibilitychange', onVisibility);
|
|
51
77
|
win?.addEventListener('pageshow', onPageShow);
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
78
|
+
// Handoff started while ALREADY hidden (initiated from a backgrounded tab):
|
|
79
|
+
// record it as a real hidden transition so the eventual `pageVisibleDuringHandoff`
|
|
80
|
+
// pairs 1:1 and summary()/hiddenMs count the segment. `emitState`'s dedup makes
|
|
81
|
+
// the first subsequent visibilitychange→hidden a no-op.
|
|
82
|
+
if (doc?.visibilityState === 'hidden' || doc?.hidden === true) {
|
|
83
|
+
emitState('hidden');
|
|
84
|
+
}
|
|
85
|
+
return {
|
|
86
|
+
stop: () => {
|
|
87
|
+
doc?.removeEventListener('visibilitychange', onVisibility);
|
|
88
|
+
win?.removeEventListener('pageshow', onPageShow);
|
|
89
|
+
},
|
|
90
|
+
summary
|
|
55
91
|
};
|
|
56
92
|
}
|
|
57
93
|
//# sourceMappingURL=focus-tracker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"focus-tracker.js","sourceRoot":"","sources":["../../src/observability/focus-tracker.ts"],"names":[],"mappings":"AA2BA,SAAS,eAAe;IACtB,MAAM,GAAG,GAAI,UAA+C,CAAC,QAAQ,CAAA;IACrE,OAAO,GAAG,IAAI,OAAO,GAAG,CAAC,gBAAgB,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAA;AAC5E,CAAC;AAED,SAAS,aAAa;IACpB,MAAM,GAAG,GAAI,UAA2C,CAAC,MAAM,CAAA;IAC/D,OAAO,GAAG,IAAI,OAAO,GAAG,CAAC,gBAAgB,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAA;AAC5E,CAAC;
|
|
1
|
+
{"version":3,"file":"focus-tracker.js","sourceRoot":"","sources":["../../src/observability/focus-tracker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instrument-handoff.d.ts","sourceRoot":"","sources":["../../src/observability/instrument-handoff.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,SAAS,EACT,SAAS,EACT,OAAO,EACR,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"instrument-handoff.d.ts","sourceRoot":"","sources":["../../src/observability/instrument-handoff.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,SAAS,EACT,SAAS,EACT,OAAO,EACR,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAY7C,sFAAsF;AACtF,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,YAAY,CAAA;IACvB,cAAc,EAAE,cAAc,CAAA;IAC9B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,CAAA;IACjC,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,CAAA;IAC/B,8EAA8E;IAC9E,mBAAmB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CAC1C;AAED,yEAAyE;AACzE,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,YAAY,EACvB,OAAO,EAAE,OAAO,GACf,cAAc,CAQhB;AAmBD,qEAAqE;AACrE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAM1D;AAQD,MAAM,WAAW,wBAAwB;IACvC,YAAY,EAAE,YAAY,CAAA;IAC1B;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAA;IACjB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAA;IAChC,gDAAgD;IAChD,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CACnB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,iBAAiB,CAAC,CAAC,EACvC,OAAO,EAAE,wBAAwB,EACjC,OAAO,EAAE,cAAc,EACvB,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CAiJZ"}
|
|
@@ -2,6 +2,7 @@ import { generateId } from '../utils/id';
|
|
|
2
2
|
import { classifyError, isAbortError, isUserRejection, toWalletError } from '../utils/to-wallet-error';
|
|
3
3
|
import { derivePlatform, deriveWalletFlowType } from './telemetry';
|
|
4
4
|
import { trackFocusDuringHandoff } from './focus-tracker';
|
|
5
|
+
import { trackRelayDropsDuringHandoff } from './relay-drop-tracker';
|
|
5
6
|
/** Build handoff routing facets from the active session (no address). */
|
|
6
7
|
export function sessionHandoffContext(operation, session) {
|
|
7
8
|
return {
|
|
@@ -81,7 +82,20 @@ export async function instrumentHandoff(options, context, fn) {
|
|
|
81
82
|
// Observe page-visibility transitions ONLY while this handoff is pending — the
|
|
82
83
|
// app-switch signal for deep-link flows (left for the wallet / came back). The
|
|
83
84
|
// teardown in `finally` removes the listeners the instant the op settles.
|
|
84
|
-
|
|
85
|
+
// Pass `now` through so backgroundedMs shares the same clock as durationMs
|
|
86
|
+
// (consistent, and deterministic under an injected clock in tests).
|
|
87
|
+
const focus = trackFocusDuringHandoff(eventManager, handoffId, platform, undefined, undefined, now);
|
|
88
|
+
// Count relay-socket drops seen while this handoff is pending (WalletConnect
|
|
89
|
+
// only — the tracker is a no-op for other modes so a WC relay flap isn't
|
|
90
|
+
// misattributed to an injected/TON handoff in flight at the same time).
|
|
91
|
+
const relayDrops = trackRelayDropsDuringHandoff(eventManager, context.connectionMode);
|
|
92
|
+
// Backgrounding + relay-drop summary, snapshotted onto each terminal so ONE
|
|
93
|
+
// event answers "backgrounded? how long? socket dropped? recovered?".
|
|
94
|
+
// `relayDropCount` is undefined off WalletConnect so `compactUndefined` drops it.
|
|
95
|
+
const handoffMetrics = () => ({
|
|
96
|
+
...focus.summary(),
|
|
97
|
+
...relayDrops.summary()
|
|
98
|
+
});
|
|
85
99
|
// Same routing facets as `awaitingWallet` so every terminal is self-describing
|
|
86
100
|
// (no handoffId self-join needed to know which wallet / chain / mode it closed).
|
|
87
101
|
const routing = {
|
|
@@ -102,7 +116,8 @@ export async function instrumentHandoff(options, context, fn) {
|
|
|
102
116
|
operation: context.operation,
|
|
103
117
|
durationMs: now() - start,
|
|
104
118
|
timeoutMs,
|
|
105
|
-
...routing
|
|
119
|
+
...routing,
|
|
120
|
+
...handoffMetrics()
|
|
106
121
|
});
|
|
107
122
|
}, timeoutMs)
|
|
108
123
|
: undefined;
|
|
@@ -114,7 +129,8 @@ export async function instrumentHandoff(options, context, fn) {
|
|
|
114
129
|
durationMs: now() - start,
|
|
115
130
|
timedOut,
|
|
116
131
|
timeoutMs: timedOut ? timeoutMs : undefined,
|
|
117
|
-
...routing
|
|
132
|
+
...routing,
|
|
133
|
+
...handoffMetrics()
|
|
118
134
|
});
|
|
119
135
|
return result;
|
|
120
136
|
}
|
|
@@ -145,7 +161,8 @@ export async function instrumentHandoff(options, context, fn) {
|
|
|
145
161
|
errorCode,
|
|
146
162
|
failureKind,
|
|
147
163
|
source,
|
|
148
|
-
...routing
|
|
164
|
+
...routing,
|
|
165
|
+
...handoffMetrics()
|
|
149
166
|
});
|
|
150
167
|
}
|
|
151
168
|
else {
|
|
@@ -159,7 +176,8 @@ export async function instrumentHandoff(options, context, fn) {
|
|
|
159
176
|
errorCode,
|
|
160
177
|
failureKind,
|
|
161
178
|
source,
|
|
162
|
-
...routing
|
|
179
|
+
...routing,
|
|
180
|
+
...handoffMetrics()
|
|
163
181
|
});
|
|
164
182
|
}
|
|
165
183
|
throw error;
|
|
@@ -167,7 +185,8 @@ export async function instrumentHandoff(options, context, fn) {
|
|
|
167
185
|
finally {
|
|
168
186
|
if (timer)
|
|
169
187
|
clearTimeout(timer);
|
|
170
|
-
|
|
188
|
+
relayDrops.stop();
|
|
189
|
+
focus.stop();
|
|
171
190
|
}
|
|
172
191
|
}
|
|
173
192
|
//# sourceMappingURL=instrument-handoff.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instrument-handoff.js","sourceRoot":"","sources":["../../src/observability/instrument-handoff.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EACL,aAAa,EACb,YAAY,EACZ,eAAe,EACf,aAAa,EACd,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"instrument-handoff.js","sourceRoot":"","sources":["../../src/observability/instrument-handoff.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,19 +20,9 @@ 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
|
|
24
|
-
* STREAM — `subscribeAccounts` below is attached independently.
|
|
23
|
+
* bridge emits `lifecycleTelemetryUnavailable` and becomes a no-op.
|
|
25
24
|
*/
|
|
26
25
|
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;
|
|
36
26
|
/** Resolved per-event so a mid-session account/chain change is reflected. */
|
|
37
27
|
getRouting: () => LifecycleRouting;
|
|
38
28
|
connectionMode: ConnectionMode;
|
|
@@ -41,9 +31,8 @@ export interface AttachLifecycleOptions {
|
|
|
41
31
|
/** Direct page vs production iframe — stamped on `lifecycleTelemetryUnavailable`. */
|
|
42
32
|
runtime?: 'direct' | 'iframe';
|
|
43
33
|
/**
|
|
44
|
-
* Window (ms) within which a wallet `chainChanged
|
|
45
|
-
*
|
|
46
|
-
* Default 3000.
|
|
34
|
+
* Window (ms) within which a wallet `chainChanged` is treated as the echo of a
|
|
35
|
+
* UWC-initiated `switchNetwork` and suppressed. Default 3000.
|
|
47
36
|
*/
|
|
48
37
|
echoWindowMs?: number;
|
|
49
38
|
/**
|
|
@@ -55,7 +44,6 @@ export interface AttachLifecycleOptions {
|
|
|
55
44
|
*/
|
|
56
45
|
initialSwitch?: {
|
|
57
46
|
chainId: NetworkId;
|
|
58
|
-
address?: string;
|
|
59
47
|
at: number;
|
|
60
48
|
} | undefined;
|
|
61
49
|
now?: () => number;
|
|
@@ -63,25 +51,19 @@ export interface AttachLifecycleOptions {
|
|
|
63
51
|
/**
|
|
64
52
|
* Bridge a connector's PII-safe `WalletLifecycleEvent` stream onto the event bus
|
|
65
53
|
* as `walletAccountChanged` / `walletChainChanged` / `walletDisconnected` /
|
|
66
|
-
* `walletSessionExpired
|
|
67
|
-
* account list to `onAccountsChanged` for session-sync.
|
|
54
|
+
* `walletSessionExpired`.
|
|
68
55
|
*
|
|
69
|
-
*
|
|
56
|
+
* Two correctness concerns are handled here:
|
|
70
57
|
* - **Echo suppression.** When UWC drives a `switchNetwork`, the wallet emits its
|
|
71
|
-
* own `chainChanged
|
|
72
|
-
*
|
|
73
|
-
* would double-count. We watch the bus for
|
|
74
|
-
*
|
|
75
|
-
* - **Availability is signal
|
|
76
|
-
*
|
|
77
|
-
*
|
|
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.
|
|
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".
|
|
83
65
|
*
|
|
84
|
-
* @returns a teardown that removes
|
|
66
|
+
* @returns a teardown that removes the connector subscription AND the bus watcher.
|
|
85
67
|
*/
|
|
86
68
|
export declare function attachLifecycle(opts: AttachLifecycleOptions): () => void;
|
|
87
69
|
//# 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
|
|
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"}
|