@meshconnect/uwc-core 1.0.3 → 1.1.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/README.md +247 -76
- package/dist/events.d.ts +241 -5
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +77 -1
- package/dist/events.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/logger/create-logger.d.ts +32 -0
- package/dist/logger/create-logger.d.ts.map +1 -0
- package/dist/logger/create-logger.js +79 -0
- package/dist/logger/create-logger.js.map +1 -0
- package/dist/managers/event-manager.d.ts.map +1 -1
- package/dist/managers/event-manager.js +5 -1
- package/dist/managers/event-manager.js.map +1 -1
- package/dist/observability/connect-observer.d.ts +33 -0
- package/dist/observability/connect-observer.d.ts.map +1 -0
- package/dist/observability/connect-observer.js +115 -0
- package/dist/observability/connect-observer.js.map +1 -0
- package/dist/observability/focus-tracker.d.ts +42 -0
- package/dist/observability/focus-tracker.d.ts.map +1 -0
- package/dist/observability/focus-tracker.js +57 -0
- package/dist/observability/focus-tracker.js.map +1 -0
- package/dist/observability/instrument-handoff.d.ts +54 -0
- package/dist/observability/instrument-handoff.d.ts.map +1 -0
- package/dist/observability/instrument-handoff.js +173 -0
- package/dist/observability/instrument-handoff.js.map +1 -0
- package/dist/observability/lifecycle-bridge.d.ts +69 -0
- package/dist/observability/lifecycle-bridge.d.ts.map +1 -0
- package/dist/observability/lifecycle-bridge.js +155 -0
- package/dist/observability/lifecycle-bridge.js.map +1 -0
- package/dist/observability/scrub.d.ts +31 -0
- package/dist/observability/scrub.d.ts.map +1 -0
- package/dist/observability/scrub.js +167 -0
- package/dist/observability/scrub.js.map +1 -0
- package/dist/observability/telemetry.d.ts +157 -0
- package/dist/observability/telemetry.d.ts.map +1 -0
- package/dist/observability/telemetry.js +373 -0
- package/dist/observability/telemetry.js.map +1 -0
- package/dist/services/connection-service.d.ts +23 -1
- package/dist/services/connection-service.d.ts.map +1 -1
- package/dist/services/connection-service.js +128 -19
- package/dist/services/connection-service.js.map +1 -1
- package/dist/services/network-switch-service.d.ts +2 -1
- package/dist/services/network-switch-service.d.ts.map +1 -1
- package/dist/services/network-switch-service.js +45 -16
- package/dist/services/network-switch-service.js.map +1 -1
- package/dist/services/signature-service.d.ts +14 -7
- package/dist/services/signature-service.d.ts.map +1 -1
- package/dist/services/signature-service.js +56 -58
- package/dist/services/signature-service.js.map +1 -1
- package/dist/services/transaction-service.d.ts +19 -5
- package/dist/services/transaction-service.d.ts.map +1 -1
- package/dist/services/transaction-service.js +55 -38
- package/dist/services/transaction-service.js.map +1 -1
- package/dist/universal-wallet-connector.d.ts +56 -1
- package/dist/universal-wallet-connector.d.ts.map +1 -1
- package/dist/universal-wallet-connector.js +207 -110
- package/dist/universal-wallet-connector.js.map +1 -1
- package/dist/utils/id.d.ts +2 -0
- package/dist/utils/id.d.ts.map +1 -0
- package/dist/utils/id.js +41 -0
- package/dist/utils/id.js.map +1 -0
- package/dist/utils/resolve-session-provider.d.ts +10 -0
- package/dist/utils/resolve-session-provider.d.ts.map +1 -0
- package/dist/utils/resolve-session-provider.js +21 -0
- package/dist/utils/resolve-session-provider.js.map +1 -0
- package/dist/utils/to-wallet-error.d.ts +35 -0
- package/dist/utils/to-wallet-error.d.ts.map +1 -0
- package/dist/utils/to-wallet-error.js +130 -0
- package/dist/utils/to-wallet-error.js.map +1 -0
- package/dist/utils/validate-wallet-session.d.ts +15 -0
- package/dist/utils/validate-wallet-session.d.ts.map +1 -0
- package/dist/utils/validate-wallet-session.js +29 -0
- package/dist/utils/validate-wallet-session.js.map +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +3 -0
- package/dist/version.js.map +1 -0
- package/package.json +6 -6
- package/src/events.ts +326 -14
- package/src/index.ts +10 -0
- package/src/logger/create-logger.test.ts +126 -0
- package/src/logger/create-logger.ts +112 -0
- package/src/managers/event-manager.test.ts +55 -0
- package/src/managers/event-manager.ts +5 -1
- package/src/observability/connect-observer.test.ts +214 -0
- package/src/observability/connect-observer.ts +128 -0
- package/src/observability/focus-tracker.test.ts +191 -0
- package/src/observability/focus-tracker.ts +96 -0
- package/src/observability/instrument-handoff.test.ts +397 -0
- package/src/observability/instrument-handoff.ts +231 -0
- package/src/observability/lifecycle-bridge.test.ts +398 -0
- package/src/observability/lifecycle-bridge.ts +216 -0
- package/src/observability/scrub.test.ts +183 -0
- package/src/observability/scrub.ts +174 -0
- package/src/observability/telemetry.test.ts +549 -0
- package/src/observability/telemetry.ts +546 -0
- package/src/services/connection-service.test.ts +261 -1
- package/src/services/connection-service.ts +167 -38
- package/src/services/network-switch-service.test.ts +51 -1
- package/src/services/network-switch-service.ts +56 -24
- package/src/services/signature-service.test.ts +181 -76
- package/src/services/signature-service.ts +75 -85
- package/src/services/transaction-service.test.ts +270 -69
- package/src/services/transaction-service.ts +74 -51
- package/src/universal-wallet-connector.instrumentation-guard.test.ts +199 -0
- package/src/universal-wallet-connector.observability.test.ts +610 -0
- package/src/universal-wallet-connector.test.ts +27 -146
- package/src/universal-wallet-connector.ts +279 -142
- package/src/utils/id.test.ts +15 -0
- package/src/utils/id.ts +48 -0
- package/src/utils/resolve-session-provider.test.ts +54 -0
- package/src/utils/resolve-session-provider.ts +25 -0
- package/src/utils/to-wallet-error.test.ts +181 -0
- package/src/utils/to-wallet-error.ts +152 -0
- package/src/utils/validate-wallet-session.test.ts +77 -0
- package/src/utils/validate-wallet-session.ts +40 -0
- package/src/version.test.ts +11 -0
- package/src/version.ts +2 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection-service.js","sourceRoot":"","sources":["../../src/services/connection-service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"connection-service.js","sourceRoot":"","sources":["../../src/services/connection-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,9 +8,10 @@ export declare class NetworkSwitchService {
|
|
|
8
8
|
private connectors;
|
|
9
9
|
private usingIntegratedBrowser;
|
|
10
10
|
private eventManager;
|
|
11
|
+
private walletResponseTimeoutMs;
|
|
11
12
|
private isLoading;
|
|
12
13
|
private isWaitingForUserApproval;
|
|
13
|
-
constructor(networks: Network[], sessionManager: SessionManager, connectors: Map<ConnectionMode, Connector>, usingIntegratedBrowser: boolean, eventManager: EventManager);
|
|
14
|
+
constructor(networks: Network[], sessionManager: SessionManager, connectors: Map<ConnectionMode, Connector>, usingIntegratedBrowser: boolean, eventManager: EventManager, walletResponseTimeoutMs: number);
|
|
14
15
|
getLoadingState(): {
|
|
15
16
|
isLoading: boolean;
|
|
16
17
|
isWaitingForUserApproval: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network-switch-service.d.ts","sourceRoot":"","sources":["../../src/services/network-switch-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,SAAS,EACT,SAAS,EACT,cAAc,EAMf,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"network-switch-service.d.ts","sourceRoot":"","sources":["../../src/services/network-switch-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,SAAS,EACT,SAAS,EACT,cAAc,EAMf,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAG1D,qBAAa,oBAAoB;IAK7B,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,sBAAsB;IAC9B,OAAO,CAAC,YAAY;IAEpB,OAAO,CAAC,uBAAuB;IAVjC,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,wBAAwB,CAAQ;gBAG9B,QAAQ,EAAE,OAAO,EAAE,EACnB,cAAc,EAAE,cAAc,EAC9B,UAAU,EAAE,GAAG,CAAC,cAAc,EAAE,SAAS,CAAC,EAC1C,sBAAsB,EAAE,OAAO,EAC/B,YAAY,EAAE,YAAY,EAE1B,uBAAuB,EAAE,MAAM;IAGzC,eAAe;;;;IAOT,aAAa,CACjB,SAAS,EAAE,SAAS,EACpB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,IAAI,CAAC;IAqKhB,OAAO,CAAC,uBAAuB;CAyChC"}
|
|
@@ -1,17 +1,22 @@
|
|
|
1
|
+
import { instrumentHandoff } from '../observability/instrument-handoff';
|
|
1
2
|
export class NetworkSwitchService {
|
|
2
3
|
networks;
|
|
3
4
|
sessionManager;
|
|
4
5
|
connectors;
|
|
5
6
|
usingIntegratedBrowser;
|
|
6
7
|
eventManager;
|
|
8
|
+
walletResponseTimeoutMs;
|
|
7
9
|
isLoading = false;
|
|
8
10
|
isWaitingForUserApproval = false;
|
|
9
|
-
constructor(networks, sessionManager, connectors, usingIntegratedBrowser, eventManager
|
|
11
|
+
constructor(networks, sessionManager, connectors, usingIntegratedBrowser, eventManager,
|
|
12
|
+
// Observational wallet-response deadline for the handoff timeout marker.
|
|
13
|
+
walletResponseTimeoutMs) {
|
|
10
14
|
this.networks = networks;
|
|
11
15
|
this.sessionManager = sessionManager;
|
|
12
16
|
this.connectors = connectors;
|
|
13
17
|
this.usingIntegratedBrowser = usingIntegratedBrowser;
|
|
14
18
|
this.eventManager = eventManager;
|
|
19
|
+
this.walletResponseTimeoutMs = walletResponseTimeoutMs;
|
|
15
20
|
}
|
|
16
21
|
getLoadingState() {
|
|
17
22
|
return {
|
|
@@ -40,7 +45,13 @@ export class NetworkSwitchService {
|
|
|
40
45
|
if (!session.connectionMode) {
|
|
41
46
|
throw new Error('No connection mode found in session');
|
|
42
47
|
}
|
|
43
|
-
// Get the provider for the current connection mode
|
|
48
|
+
// Get the provider for the current connection mode.
|
|
49
|
+
// NOTE: deliberately NOT `resolveSessionProvider` (utils) — this
|
|
50
|
+
// pre-existing dispatch groups `tonConnect` with `injected` (a TON switch
|
|
51
|
+
// only proceeds when the wallet also carries injected-provider metadata,
|
|
52
|
+
// whose `supportedNetworkIds` gate below relies on), while the shared
|
|
53
|
+
// helper yields undefined for TON. Unifying them changes TON switch
|
|
54
|
+
// behaviour and needs its own change.
|
|
44
55
|
let provider;
|
|
45
56
|
if (session.connectionMode === 'injected' ||
|
|
46
57
|
session.connectionMode === 'tonConnect') {
|
|
@@ -67,6 +78,9 @@ export class NetworkSwitchService {
|
|
|
67
78
|
}
|
|
68
79
|
// Determine if user approval is required based on wallet metadata
|
|
69
80
|
const requiresApproval = this.checkIfApprovalRequired(currentWallet, network, session.activeNetwork);
|
|
81
|
+
// A no-op switch (target chain already active) still hands off to the wallet
|
|
82
|
+
// on some connectors; flag it so the funnel can separate it from real switches.
|
|
83
|
+
const targetAlreadyActive = networkId === session.activeNetwork?.id;
|
|
70
84
|
try {
|
|
71
85
|
// Set loading states
|
|
72
86
|
this.isLoading = true;
|
|
@@ -75,20 +89,35 @@ export class NetworkSwitchService {
|
|
|
75
89
|
isLoading: true,
|
|
76
90
|
isWaitingForUserApproval: requiresApproval
|
|
77
91
|
});
|
|
78
|
-
// Perform the network switch and get the new address
|
|
79
|
-
//
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
+
// Perform the network switch and get the new address. Instrument the
|
|
93
|
+
// wallet hand-off HERE — after validation + the `networkSwitching` emit —
|
|
94
|
+
// so `awaitingWallet` marks the real wallet boundary; pre-wallet validation
|
|
95
|
+
// failures throw above and never enter the funnel.
|
|
96
|
+
// Pass the appropriate provider based on connection mode.
|
|
97
|
+
const result = await instrumentHandoff({
|
|
98
|
+
eventManager: this.eventManager,
|
|
99
|
+
timeoutMs: this.walletResponseTimeoutMs,
|
|
100
|
+
signal: options?.signal
|
|
101
|
+
}, {
|
|
102
|
+
operation: 'switchNetwork',
|
|
103
|
+
connectionMode: session.connectionMode,
|
|
104
|
+
walletId: currentWallet.id,
|
|
105
|
+
namespace: network.namespace,
|
|
106
|
+
chainId: network.id,
|
|
107
|
+
targetAlreadyActive
|
|
108
|
+
}, async () => {
|
|
109
|
+
if ((session.connectionMode === 'injected' ||
|
|
110
|
+
session.connectionMode === 'tonConnect') &&
|
|
111
|
+
provider) {
|
|
112
|
+
return await activeConnector.switchNetwork(network, provider);
|
|
113
|
+
}
|
|
114
|
+
else if (session.connectionMode === 'walletConnect' && provider) {
|
|
115
|
+
return await activeConnector.switchNetwork(network, provider);
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
return await activeConnector.switchNetwork(network);
|
|
119
|
+
}
|
|
120
|
+
});
|
|
92
121
|
options?.signal?.throwIfAborted();
|
|
93
122
|
// Filter available addresses to only include those for configured networks
|
|
94
123
|
const filteredAvailableAddresses = result.availableAddresses
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network-switch-service.js","sourceRoot":"","sources":["../../src/services/network-switch-service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"network-switch-service.js","sourceRoot":"","sources":["../../src/services/network-switch-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,28 +1,35 @@
|
|
|
1
|
-
import type { ConnectionMode, Connector,
|
|
1
|
+
import type { ConnectionMode, Connector, SignatureType, EIP712TypedData } from '@meshconnect/uwc-types';
|
|
2
2
|
import type { SessionManager } from '../managers/session-manager';
|
|
3
|
+
import type { EventManager } from '../managers/event-manager';
|
|
3
4
|
import type { ServiceOptions } from './connection-service';
|
|
4
5
|
/**
|
|
5
|
-
* Service for handling signature operations across different connector types
|
|
6
|
+
* Service for handling signature operations across different connector types.
|
|
7
|
+
*
|
|
8
|
+
* Owns the WHOLE wallet-boundary op — validation (session guards, connector
|
|
9
|
+
* capability, provider resolution) BEFORE the funnel, then the instrumented
|
|
10
|
+
* connector call — the same layering as ConnectionService / NetworkSwitchService,
|
|
11
|
+
* so a pre-wallet failure never emits an `awaitingWallet`/terminal pair.
|
|
6
12
|
*/
|
|
7
13
|
export declare class SignatureService {
|
|
8
14
|
private sessionManager;
|
|
9
15
|
private connectors;
|
|
10
|
-
|
|
16
|
+
private usingIntegratedBrowser;
|
|
17
|
+
private eventManager;
|
|
18
|
+
private walletResponseTimeoutMs;
|
|
19
|
+
constructor(sessionManager: SessionManager, connectors: Map<ConnectionMode, Connector>, usingIntegratedBrowser: boolean, eventManager: EventManager, walletResponseTimeoutMs: number);
|
|
11
20
|
/**
|
|
12
21
|
* Sign a message with the currently connected wallet
|
|
13
22
|
* @param message The message to sign
|
|
14
|
-
* @param provider The wallet provider to use for signing (required for injected connector)
|
|
15
23
|
* @param options Optional cancellation signal
|
|
16
24
|
* @returns A promise that resolves to the signature
|
|
17
25
|
*/
|
|
18
|
-
signMessage(message: string,
|
|
26
|
+
signMessage(message: string, options?: ServiceOptions): Promise<SignatureType>;
|
|
19
27
|
/**
|
|
20
28
|
* Sign EIP-712 typed structured data with the currently connected wallet.
|
|
21
29
|
* EVM-only (eip155); routes by connection mode. Throws for tonConnect.
|
|
22
30
|
* @param typedData The EIP-712 typed data to sign
|
|
23
|
-
* @param provider The wallet provider (required for the injected connector)
|
|
24
31
|
* @returns A promise that resolves to the 65-byte hex signature
|
|
25
32
|
*/
|
|
26
|
-
signTypedData(typedData: EIP712TypedData
|
|
33
|
+
signTypedData(typedData: EIP712TypedData): Promise<string>;
|
|
27
34
|
}
|
|
28
35
|
//# sourceMappingURL=signature-service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signature-service.d.ts","sourceRoot":"","sources":["../../src/services/signature-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,SAAS,EAIT,
|
|
1
|
+
{"version":3,"file":"signature-service.d.ts","sourceRoot":"","sources":["../../src/services/signature-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,SAAS,EAIT,aAAa,EACb,eAAe,EAChB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAW1D;;;;;;;GAOG;AACH,qBAAa,gBAAgB;IAEzB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,sBAAsB;IAC9B,OAAO,CAAC,YAAY;IAEpB,OAAO,CAAC,uBAAuB;gBALvB,cAAc,EAAE,cAAc,EAC9B,UAAU,EAAE,GAAG,CAAC,cAAc,EAAE,SAAS,CAAC,EAC1C,sBAAsB,EAAE,OAAO,EAC/B,YAAY,EAAE,YAAY,EAE1B,uBAAuB,EAAE,MAAM;IAGzC;;;;;OAKG;IACG,WAAW,CACf,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,aAAa,CAAC;IAqCzB;;;;;OAKG;IACG,aAAa,CAAC,SAAS,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;CAuCjE"}
|
|
@@ -1,59 +1,58 @@
|
|
|
1
|
+
import { instrumentHandoff, sessionHandoffContext } from '../observability/instrument-handoff';
|
|
2
|
+
import { resolveSessionProvider } from '../utils/resolve-session-provider';
|
|
3
|
+
import { validateWalletSession, getSessionConnector } from '../utils/validate-wallet-session';
|
|
1
4
|
/**
|
|
2
|
-
* Service for handling signature operations across different connector types
|
|
5
|
+
* Service for handling signature operations across different connector types.
|
|
6
|
+
*
|
|
7
|
+
* Owns the WHOLE wallet-boundary op — validation (session guards, connector
|
|
8
|
+
* capability, provider resolution) BEFORE the funnel, then the instrumented
|
|
9
|
+
* connector call — the same layering as ConnectionService / NetworkSwitchService,
|
|
10
|
+
* so a pre-wallet failure never emits an `awaitingWallet`/terminal pair.
|
|
3
11
|
*/
|
|
4
12
|
export class SignatureService {
|
|
5
13
|
sessionManager;
|
|
6
14
|
connectors;
|
|
7
|
-
|
|
15
|
+
usingIntegratedBrowser;
|
|
16
|
+
eventManager;
|
|
17
|
+
walletResponseTimeoutMs;
|
|
18
|
+
constructor(sessionManager, connectors, usingIntegratedBrowser, eventManager,
|
|
19
|
+
// Observational wallet-response deadline for the handoff timeout marker.
|
|
20
|
+
walletResponseTimeoutMs) {
|
|
8
21
|
this.sessionManager = sessionManager;
|
|
9
22
|
this.connectors = connectors;
|
|
23
|
+
this.usingIntegratedBrowser = usingIntegratedBrowser;
|
|
24
|
+
this.eventManager = eventManager;
|
|
25
|
+
this.walletResponseTimeoutMs = walletResponseTimeoutMs;
|
|
10
26
|
}
|
|
11
27
|
/**
|
|
12
28
|
* Sign a message with the currently connected wallet
|
|
13
29
|
* @param message The message to sign
|
|
14
|
-
* @param provider The wallet provider to use for signing (required for injected connector)
|
|
15
30
|
* @param options Optional cancellation signal
|
|
16
31
|
* @returns A promise that resolves to the signature
|
|
17
32
|
*/
|
|
18
|
-
async signMessage(message,
|
|
33
|
+
async signMessage(message, options) {
|
|
19
34
|
options?.signal?.throwIfAborted();
|
|
20
|
-
const session = this.sessionManager
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
if (!session.activeAddress) {
|
|
25
|
-
throw new Error('No active wallet address');
|
|
26
|
-
}
|
|
27
|
-
// Get the appropriate connector
|
|
28
|
-
const connector = this.connectors.get(session.connectionMode);
|
|
29
|
-
if (!connector) {
|
|
30
|
-
throw new Error(`No connector found for connection mode: ${session.connectionMode}`);
|
|
31
|
-
}
|
|
32
|
-
// Check if the connector supports signing
|
|
35
|
+
const session = validateWalletSession(this.sessionManager, {
|
|
36
|
+
requireAddress: true
|
|
37
|
+
});
|
|
38
|
+
const connector = getSessionConnector(this.connectors, session);
|
|
33
39
|
if (!connector.signMessage) {
|
|
34
40
|
throw new Error(`Connector does not support message signing`);
|
|
35
41
|
}
|
|
36
|
-
//
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
}
|
|
51
|
-
signature = await connector.signMessage(message, provider);
|
|
52
|
-
}
|
|
53
|
-
else {
|
|
54
|
-
// For other connectors that might not need the provider
|
|
55
|
-
signature = await connector.signMessage(message);
|
|
56
|
-
}
|
|
42
|
+
// Validation, not wallet work — a missing provider must not enter the funnel.
|
|
43
|
+
// undefined only for tonConnect, whose connector resolves its own provider.
|
|
44
|
+
const provider = resolveSessionProvider(session, this.usingIntegratedBrowser);
|
|
45
|
+
const signature = await instrumentHandoff({
|
|
46
|
+
eventManager: this.eventManager,
|
|
47
|
+
timeoutMs: this.walletResponseTimeoutMs,
|
|
48
|
+
signal: options?.signal
|
|
49
|
+
}, sessionHandoffContext('signMessage', session),
|
|
50
|
+
// tonConnect resolves undefined and keeps its message-only call shape.
|
|
51
|
+
() => provider === undefined
|
|
52
|
+
? connector.signMessage(message)
|
|
53
|
+
: connector.signMessage(message, provider));
|
|
54
|
+
// AFTER the funnel: the wallet settled, so its truthful terminal is already
|
|
55
|
+
// recorded; an abort that raced completion still rejects the caller here.
|
|
57
56
|
options?.signal?.throwIfAborted();
|
|
58
57
|
return signature;
|
|
59
58
|
}
|
|
@@ -61,34 +60,33 @@ export class SignatureService {
|
|
|
61
60
|
* Sign EIP-712 typed structured data with the currently connected wallet.
|
|
62
61
|
* EVM-only (eip155); routes by connection mode. Throws for tonConnect.
|
|
63
62
|
* @param typedData The EIP-712 typed data to sign
|
|
64
|
-
* @param provider The wallet provider (required for the injected connector)
|
|
65
63
|
* @returns A promise that resolves to the 65-byte hex signature
|
|
66
64
|
*/
|
|
67
|
-
async signTypedData(typedData
|
|
68
|
-
const session = this.sessionManager
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
if (!connector) {
|
|
77
|
-
throw new Error(`No connector found for connection mode: ${session.connectionMode}`);
|
|
65
|
+
async signTypedData(typedData) {
|
|
66
|
+
const session = validateWalletSession(this.sessionManager, {
|
|
67
|
+
requireAddress: true
|
|
68
|
+
});
|
|
69
|
+
const connector = getSessionConnector(this.connectors, session);
|
|
70
|
+
// TON first: TonConnectConnector has no signTypedData, so the capability
|
|
71
|
+
// guard would otherwise shadow this branch with the generic message.
|
|
72
|
+
if (session.connectionMode === 'tonConnect') {
|
|
73
|
+
throw new Error('signTypedData is not supported for TON wallets');
|
|
78
74
|
}
|
|
79
75
|
if (!connector.signTypedData) {
|
|
80
76
|
throw new Error(`Connector does not support typed data signing`);
|
|
81
77
|
}
|
|
78
|
+
// Only the injected path resolves (and validates) a provider — WalletConnect
|
|
79
|
+
// resolves its own inside the connector.
|
|
80
|
+
let provider;
|
|
82
81
|
if (session.connectionMode === 'injected') {
|
|
83
|
-
|
|
84
|
-
throw new Error('Provider is required for injected connector');
|
|
85
|
-
}
|
|
86
|
-
return await connector.signTypedData(typedData, provider);
|
|
87
|
-
}
|
|
88
|
-
if (session.connectionMode === 'walletConnect') {
|
|
89
|
-
return await connector.signTypedData(typedData);
|
|
82
|
+
provider = resolveSessionProvider(session, this.usingIntegratedBrowser);
|
|
90
83
|
}
|
|
91
|
-
|
|
84
|
+
return await instrumentHandoff({
|
|
85
|
+
eventManager: this.eventManager,
|
|
86
|
+
timeoutMs: this.walletResponseTimeoutMs
|
|
87
|
+
}, sessionHandoffContext('signTypedData', session), () => session.connectionMode === 'injected'
|
|
88
|
+
? connector.signTypedData(typedData, provider)
|
|
89
|
+
: connector.signTypedData(typedData));
|
|
92
90
|
}
|
|
93
91
|
}
|
|
94
92
|
//# sourceMappingURL=signature-service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signature-service.js","sourceRoot":"","sources":["../../src/services/signature-service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"signature-service.js","sourceRoot":"","sources":["../../src/services/signature-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +1,34 @@
|
|
|
1
|
-
import type { ConnectionMode, Connector,
|
|
1
|
+
import type { ConnectionMode, Connector, TransactionRequest, TransactionResult } from '@meshconnect/uwc-types';
|
|
2
2
|
import type { SessionManager } from '../managers/session-manager';
|
|
3
|
+
import type { EventManager } from '../managers/event-manager';
|
|
3
4
|
import type { ServiceOptions } from './connection-service';
|
|
4
5
|
/**
|
|
5
|
-
* Service for handling transaction operations across different connector types
|
|
6
|
+
* Service for handling transaction operations across different connector types.
|
|
7
|
+
*
|
|
8
|
+
* Owns the WHOLE wallet-boundary op — validation (session guards, connector
|
|
9
|
+
* capability, provider resolution) BEFORE the funnel, then the instrumented
|
|
10
|
+
* connector call — the same layering as ConnectionService / NetworkSwitchService,
|
|
11
|
+
* so a pre-wallet failure never emits an `awaitingWallet`/terminal pair.
|
|
6
12
|
*/
|
|
7
13
|
export declare class TransactionService {
|
|
8
14
|
private sessionManager;
|
|
9
15
|
private connectors;
|
|
10
|
-
|
|
16
|
+
private usingIntegratedBrowser;
|
|
17
|
+
private eventManager;
|
|
18
|
+
private walletResponseTimeoutMs;
|
|
19
|
+
constructor(sessionManager: SessionManager, connectors: Map<ConnectionMode, Connector>, usingIntegratedBrowser: boolean, eventManager: EventManager, walletResponseTimeoutMs: number);
|
|
11
20
|
/**
|
|
12
21
|
* Send a transaction with the currently connected wallet
|
|
13
22
|
* @param request The transaction request parameters
|
|
14
|
-
* @param provider The wallet provider to use for sending (required for injected connector)
|
|
15
23
|
* @param options Optional cancellation signal
|
|
16
24
|
* @returns A promise that resolves to the transaction result
|
|
17
25
|
*/
|
|
18
|
-
sendTransaction(request: TransactionRequest,
|
|
26
|
+
sendTransaction(request: TransactionRequest, options?: ServiceOptions): Promise<TransactionResult>;
|
|
27
|
+
/**
|
|
28
|
+
* Sign a Solana tx without broadcasting (raw bytes in/out). Routes to the
|
|
29
|
+
* active connector's optional `signSolanaTransactionBytes`; the capability
|
|
30
|
+
* check is validation and stays OUTSIDE the funnel.
|
|
31
|
+
*/
|
|
32
|
+
signSolanaTransactionBytes(serializedTx: Uint8Array): Promise<Uint8Array>;
|
|
19
33
|
}
|
|
20
34
|
//# sourceMappingURL=transaction-service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction-service.d.ts","sourceRoot":"","sources":["../../src/services/transaction-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,SAAS,
|
|
1
|
+
{"version":3,"file":"transaction-service.d.ts","sourceRoot":"","sources":["../../src/services/transaction-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,SAAS,EACT,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAW1D;;;;;;;GAOG;AACH,qBAAa,kBAAkB;IAE3B,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,sBAAsB;IAC9B,OAAO,CAAC,YAAY;IAEpB,OAAO,CAAC,uBAAuB;gBALvB,cAAc,EAAE,cAAc,EAC9B,UAAU,EAAE,GAAG,CAAC,cAAc,EAAE,SAAS,CAAC,EAC1C,sBAAsB,EAAE,OAAO,EAC/B,YAAY,EAAE,YAAY,EAE1B,uBAAuB,EAAE,MAAM;IAGzC;;;;;OAKG;IACG,eAAe,CACnB,OAAO,EAAE,kBAAkB,EAC3B,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,iBAAiB,CAAC;IAqC7B;;;;OAIG;IACG,0BAA0B,CAC9B,YAAY,EAAE,UAAU,GACvB,OAAO,CAAC,UAAU,CAAC;CAqBvB"}
|
|
@@ -1,61 +1,78 @@
|
|
|
1
|
+
import { instrumentHandoff, sessionHandoffContext } from '../observability/instrument-handoff';
|
|
2
|
+
import { resolveSessionProvider } from '../utils/resolve-session-provider';
|
|
3
|
+
import { validateWalletSession, getSessionConnector } from '../utils/validate-wallet-session';
|
|
1
4
|
/**
|
|
2
|
-
* Service for handling transaction operations across different connector types
|
|
5
|
+
* Service for handling transaction operations across different connector types.
|
|
6
|
+
*
|
|
7
|
+
* Owns the WHOLE wallet-boundary op — validation (session guards, connector
|
|
8
|
+
* capability, provider resolution) BEFORE the funnel, then the instrumented
|
|
9
|
+
* connector call — the same layering as ConnectionService / NetworkSwitchService,
|
|
10
|
+
* so a pre-wallet failure never emits an `awaitingWallet`/terminal pair.
|
|
3
11
|
*/
|
|
4
12
|
export class TransactionService {
|
|
5
13
|
sessionManager;
|
|
6
14
|
connectors;
|
|
7
|
-
|
|
15
|
+
usingIntegratedBrowser;
|
|
16
|
+
eventManager;
|
|
17
|
+
walletResponseTimeoutMs;
|
|
18
|
+
constructor(sessionManager, connectors, usingIntegratedBrowser, eventManager,
|
|
19
|
+
// Observational wallet-response deadline for the handoff timeout marker.
|
|
20
|
+
walletResponseTimeoutMs) {
|
|
8
21
|
this.sessionManager = sessionManager;
|
|
9
22
|
this.connectors = connectors;
|
|
23
|
+
this.usingIntegratedBrowser = usingIntegratedBrowser;
|
|
24
|
+
this.eventManager = eventManager;
|
|
25
|
+
this.walletResponseTimeoutMs = walletResponseTimeoutMs;
|
|
10
26
|
}
|
|
11
27
|
/**
|
|
12
28
|
* Send a transaction with the currently connected wallet
|
|
13
29
|
* @param request The transaction request parameters
|
|
14
|
-
* @param provider The wallet provider to use for sending (required for injected connector)
|
|
15
30
|
* @param options Optional cancellation signal
|
|
16
31
|
* @returns A promise that resolves to the transaction result
|
|
17
32
|
*/
|
|
18
|
-
async sendTransaction(request,
|
|
33
|
+
async sendTransaction(request, options) {
|
|
19
34
|
options?.signal?.throwIfAborted();
|
|
20
|
-
const session = this.sessionManager
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
if (!session.activeAddress) {
|
|
25
|
-
throw new Error('No active wallet address');
|
|
26
|
-
}
|
|
27
|
-
// Get the appropriate connector
|
|
28
|
-
const connector = this.connectors.get(session.connectionMode);
|
|
29
|
-
if (!connector) {
|
|
30
|
-
throw new Error(`No connector found for connection mode: ${session.connectionMode}`);
|
|
31
|
-
}
|
|
32
|
-
// Check if the connector supports transactions
|
|
35
|
+
const session = validateWalletSession(this.sessionManager, {
|
|
36
|
+
requireAddress: true
|
|
37
|
+
});
|
|
38
|
+
const connector = getSessionConnector(this.connectors, session);
|
|
33
39
|
if (!connector.sendTransaction) {
|
|
34
40
|
throw new Error(`Connector does not support transactions`);
|
|
35
41
|
}
|
|
36
|
-
//
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
}
|
|
51
|
-
result = await connector.sendTransaction(request, provider);
|
|
52
|
-
}
|
|
53
|
-
else {
|
|
54
|
-
// For other connectors that might not need the provider
|
|
55
|
-
result = await connector.sendTransaction(request);
|
|
56
|
-
}
|
|
42
|
+
// Validation, not wallet work — a missing provider must not enter the funnel.
|
|
43
|
+
// undefined only for tonConnect, whose connector resolves its own provider.
|
|
44
|
+
const provider = resolveSessionProvider(session, this.usingIntegratedBrowser);
|
|
45
|
+
const result = await instrumentHandoff({
|
|
46
|
+
eventManager: this.eventManager,
|
|
47
|
+
timeoutMs: this.walletResponseTimeoutMs,
|
|
48
|
+
signal: options?.signal
|
|
49
|
+
}, sessionHandoffContext('sendTransaction', session),
|
|
50
|
+
// tonConnect resolves undefined and keeps its request-only call shape.
|
|
51
|
+
() => provider === undefined
|
|
52
|
+
? connector.sendTransaction(request)
|
|
53
|
+
: connector.sendTransaction(request, provider));
|
|
54
|
+
// AFTER the funnel: the tx already broadcast, so its truthful terminal is
|
|
55
|
+
// recorded; an abort that raced completion still rejects the caller here.
|
|
57
56
|
options?.signal?.throwIfAborted();
|
|
58
57
|
return result;
|
|
59
58
|
}
|
|
59
|
+
/**
|
|
60
|
+
* Sign a Solana tx without broadcasting (raw bytes in/out). Routes to the
|
|
61
|
+
* active connector's optional `signSolanaTransactionBytes`; the capability
|
|
62
|
+
* check is validation and stays OUTSIDE the funnel.
|
|
63
|
+
*/
|
|
64
|
+
async signSolanaTransactionBytes(serializedTx) {
|
|
65
|
+
const session = validateWalletSession(this.sessionManager, {
|
|
66
|
+
requireAddress: false
|
|
67
|
+
});
|
|
68
|
+
const connector = this.connectors.get(session.connectionMode);
|
|
69
|
+
if (!connector?.signSolanaTransactionBytes) {
|
|
70
|
+
throw new Error(`signSolanaTransaction is not supported for connection mode "${session.connectionMode}"`);
|
|
71
|
+
}
|
|
72
|
+
return await instrumentHandoff({
|
|
73
|
+
eventManager: this.eventManager,
|
|
74
|
+
timeoutMs: this.walletResponseTimeoutMs
|
|
75
|
+
}, sessionHandoffContext('signSolanaTransaction', session), () => connector.signSolanaTransactionBytes(serializedTx));
|
|
76
|
+
}
|
|
60
77
|
}
|
|
61
78
|
//# sourceMappingURL=transaction-service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction-service.js","sourceRoot":"","sources":["../../src/services/transaction-service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"transaction-service.js","sourceRoot":"","sources":["../../src/services/transaction-service.ts"],"names":[],"mappings":"AASA,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAA;AAC1E,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACpB,MAAM,kCAAkC,CAAA;AAEzC;;;;;;;GAOG;AACH,MAAM,OAAO,kBAAkB;IAEnB;IACA;IACA;IACA;IAEA;IANV,YACU,cAA8B,EAC9B,UAA0C,EAC1C,sBAA+B,EAC/B,YAA0B;IAClC,yEAAyE;IACjE,uBAA+B;QAL/B,mBAAc,GAAd,cAAc,CAAgB;QAC9B,eAAU,GAAV,UAAU,CAAgC;QAC1C,2BAAsB,GAAtB,sBAAsB,CAAS;QAC/B,iBAAY,GAAZ,YAAY,CAAc;QAE1B,4BAAuB,GAAvB,uBAAuB,CAAQ;IACtC,CAAC;IAEJ;;;;;OAKG;IACH,KAAK,CAAC,eAAe,CACnB,OAA2B,EAC3B,OAAwB;QAExB,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAA;QACjC,MAAM,OAAO,GAAG,qBAAqB,CAAC,IAAI,CAAC,cAAc,EAAE;YACzD,cAAc,EAAE,IAAI;SACrB,CAAC,CAAA;QAEF,MAAM,SAAS,GAAG,mBAAmB,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;QAC/D,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;QAC5D,CAAC;QAED,8EAA8E;QAC9E,4EAA4E;QAC5E,MAAM,QAAQ,GAAG,sBAAsB,CACrC,OAAO,EACP,IAAI,CAAC,sBAAsB,CAC5B,CAAA;QAED,MAAM,MAAM,GAAG,MAAM,iBAAiB,CACpC;YACE,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,SAAS,EAAE,IAAI,CAAC,uBAAuB;YACvC,MAAM,EAAE,OAAO,EAAE,MAAM;SACxB,EACD,qBAAqB,CAAC,iBAAiB,EAAE,OAAO,CAAC;QACjD,uEAAuE;QACvE,GAAG,EAAE,CACH,QAAQ,KAAK,SAAS;YACpB,CAAC,CAAC,SAAS,CAAC,eAAgB,CAAC,OAAO,CAAC;YACrC,CAAC,CAAC,SAAS,CAAC,eAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,CACpD,CAAA;QACD,0EAA0E;QAC1E,0EAA0E;QAC1E,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAA;QACjC,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,0BAA0B,CAC9B,YAAwB;QAExB,MAAM,OAAO,GAAG,qBAAqB,CAAC,IAAI,CAAC,cAAc,EAAE;YACzD,cAAc,EAAE,KAAK;SACtB,CAAC,CAAA;QAEF,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,cAAe,CAAC,CAAA;QAC9D,IAAI,CAAC,SAAS,EAAE,0BAA0B,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CACb,+DAA+D,OAAO,CAAC,cAAc,GAAG,CACzF,CAAA;QACH,CAAC;QAED,OAAO,MAAM,iBAAiB,CAC5B;YACE,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,SAAS,EAAE,IAAI,CAAC,uBAAuB;SACxC,EACD,qBAAqB,CAAC,uBAAuB,EAAE,OAAO,CAAC,EACvD,GAAG,EAAE,CAAC,SAAS,CAAC,0BAA2B,CAAC,YAAY,CAAC,CAC1D,CAAA;IACH,CAAC;CACF"}
|