@meshconnect/uwc-core 0.10.1 → 1.0.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 +928 -0
- package/dist/events.d.ts +71 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +2 -0
- package/dist/events.js.map +1 -0
- package/dist/index.d.ts +2 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -3
- package/dist/index.js.map +1 -1
- package/dist/managers/event-manager.d.ts +22 -3
- package/dist/managers/event-manager.d.ts.map +1 -1
- package/dist/managers/event-manager.js +63 -7
- package/dist/managers/event-manager.js.map +1 -1
- package/dist/services/connection-service.d.ts +5 -2
- package/dist/services/connection-service.d.ts.map +1 -1
- package/dist/services/connection-service.js +36 -9
- 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 +15 -3
- package/dist/services/network-switch-service.js.map +1 -1
- package/dist/services/signature-service.d.ts +3 -1
- package/dist/services/signature-service.d.ts.map +1 -1
- package/dist/services/signature-service.js +10 -5
- package/dist/services/signature-service.js.map +1 -1
- package/dist/services/transaction-service.d.ts +3 -1
- package/dist/services/transaction-service.d.ts.map +1 -1
- package/dist/services/transaction-service.js +10 -5
- package/dist/services/transaction-service.js.map +1 -1
- package/dist/services/wallet-capabilities-service.d.ts +2 -1
- package/dist/services/wallet-capabilities-service.d.ts.map +1 -1
- package/dist/services/wallet-capabilities-service.js +9 -2
- package/dist/services/wallet-capabilities-service.js.map +1 -1
- package/dist/universal-wallet-connector.d.ts +56 -8
- package/dist/universal-wallet-connector.d.ts.map +1 -1
- package/dist/universal-wallet-connector.js +299 -194
- package/dist/universal-wallet-connector.js.map +1 -1
- package/dist/utils/abort.d.ts +14 -0
- package/dist/utils/abort.d.ts.map +1 -0
- package/dist/utils/abort.js +31 -0
- package/dist/utils/abort.js.map +1 -0
- package/package.json +2 -2
- package/src/events.ts +73 -0
- package/src/index.ts +11 -8
- package/src/managers/event-manager.test.ts +70 -0
- package/src/managers/event-manager.ts +80 -9
- package/src/services/connection-service.test.ts +148 -19
- package/src/services/connection-service.ts +63 -12
- package/src/services/network-switch-service.ts +22 -3
- package/src/services/signature-service.ts +13 -5
- package/src/services/transaction-service.ts +13 -5
- package/src/services/wallet-capabilities-service.ts +14 -2
- package/src/universal-wallet-connector.test.ts +196 -3
- package/src/universal-wallet-connector.ts +430 -222
- package/src/utils/abort.test.ts +68 -0
- package/src/utils/abort.ts +38 -0
package/dist/events.d.ts
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import type { Session, Network, WalletMetadata, ConnectionMode, WalletError, EVMCapabilities } from '@meshconnect/uwc-types';
|
|
2
|
+
/**
|
|
3
|
+
* User-initiated operations that can surface through the `error` event.
|
|
4
|
+
*/
|
|
5
|
+
export type UWCOperation = 'connect' | 'disconnect' | 'switchNetwork' | 'signMessage' | 'sendTransaction' | 'getWalletCapabilities' | 'initialize';
|
|
6
|
+
/**
|
|
7
|
+
* Typed event map emitted by UniversalWalletConnector.
|
|
8
|
+
*
|
|
9
|
+
* Subscribe with `on(event, listener)` to react to a single kind of change
|
|
10
|
+
* instead of re-reading `getSession()` on every notification.
|
|
11
|
+
*
|
|
12
|
+
* Every typed event also triggers the `change` event, so legacy
|
|
13
|
+
* `subscribe(listener)` callers continue to fire.
|
|
14
|
+
*/
|
|
15
|
+
export interface UWCEventMap {
|
|
16
|
+
/** Wallet detection finished; `getWallets()` now reflects which are installed. */
|
|
17
|
+
ready: void;
|
|
18
|
+
/** Emitted once detection finishes, with the final wallet list. */
|
|
19
|
+
walletsDetected: {
|
|
20
|
+
wallets: WalletMetadata[];
|
|
21
|
+
};
|
|
22
|
+
/** `connect()` has started. */
|
|
23
|
+
connecting: {
|
|
24
|
+
connectionMode: ConnectionMode;
|
|
25
|
+
walletId: string;
|
|
26
|
+
};
|
|
27
|
+
/** `connect()` completed successfully. */
|
|
28
|
+
connected: {
|
|
29
|
+
session: Session;
|
|
30
|
+
};
|
|
31
|
+
/** `disconnect()` completed and the session was cleared. */
|
|
32
|
+
disconnected: void;
|
|
33
|
+
/**
|
|
34
|
+
* A pairing URI became available for WalletConnect / TonConnect flows.
|
|
35
|
+
* Prefer this over polling `getConnectionURI()`.
|
|
36
|
+
*/
|
|
37
|
+
connectionUri: {
|
|
38
|
+
uri: string;
|
|
39
|
+
connectionMode: ConnectionMode;
|
|
40
|
+
};
|
|
41
|
+
/** The active session changed (address, network, capabilities, …). */
|
|
42
|
+
sessionChanged: {
|
|
43
|
+
session: Session;
|
|
44
|
+
};
|
|
45
|
+
/** Network switching is in progress. Fires on start and end. */
|
|
46
|
+
networkSwitching: {
|
|
47
|
+
isLoading: boolean;
|
|
48
|
+
isWaitingForUserApproval: boolean;
|
|
49
|
+
};
|
|
50
|
+
/** Network switch succeeded. */
|
|
51
|
+
networkSwitched: {
|
|
52
|
+
network: Network;
|
|
53
|
+
};
|
|
54
|
+
/** Wallet capabilities were refreshed. */
|
|
55
|
+
capabilitiesUpdated: {
|
|
56
|
+
capabilities: Record<string, EVMCapabilities>;
|
|
57
|
+
};
|
|
58
|
+
/** A user-initiated operation failed. */
|
|
59
|
+
error: {
|
|
60
|
+
error: WalletError;
|
|
61
|
+
operation: UWCOperation;
|
|
62
|
+
};
|
|
63
|
+
/**
|
|
64
|
+
* Back-compat catch-all. Fires after every other event above.
|
|
65
|
+
* New code should prefer the specific events.
|
|
66
|
+
*/
|
|
67
|
+
change: void;
|
|
68
|
+
}
|
|
69
|
+
export type UWCEventName = keyof UWCEventMap;
|
|
70
|
+
export type UWCEventListener<K extends UWCEventName> = (data: UWCEventMap[K]) => void;
|
|
71
|
+
//# sourceMappingURL=events.d.ts.map
|
|
@@ -0,0 +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,EAChB,MAAM,wBAAwB,CAAA;AAE/B;;GAEG;AACH,MAAM,MAAM,YAAY,GACpB,SAAS,GACT,YAAY,GACZ,eAAe,GACf,aAAa,GACb,iBAAiB,GACjB,uBAAuB,GACvB,YAAY,CAAA;AAEhB;;;;;;;;GAQG;AACH,MAAM,WAAW,WAAW;IAC1B,kFAAkF;IAClF,KAAK,EAAE,IAAI,CAAA;IACX,mEAAmE;IACnE,eAAe,EAAE;QAAE,OAAO,EAAE,cAAc,EAAE,CAAA;KAAE,CAAA;IAE9C,+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,gCAAgC;IAChC,eAAe,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAA;IAErC,0CAA0C;IAC1C,mBAAmB,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;KAAE,CAAA;IAEtE,yCAAyC;IACzC,KAAK,EAAE;QAAE,KAAK,EAAE,WAAW,CAAC;QAAC,SAAS,EAAE,YAAY,CAAA;KAAE,CAAA;IAEtD;;;OAGG;IACH,MAAM,EAAE,IAAI,CAAA;CACb;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,WAAW,CAAA;AAC5C,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,YAAY,IAAI,CACrD,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,KACjB,IAAI,CAAA"}
|
package/dist/events.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":""}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
3
|
-
export * from './services';
|
|
1
|
+
export { UniversalWalletConnector, type UWCConfig, type OperationOptions } from './universal-wallet-connector';
|
|
2
|
+
export type { UWCEventMap, UWCEventName, UWCEventListener, UWCOperation } from './events';
|
|
4
3
|
export { toBaseUnits } from './utils/to-base-units';
|
|
5
|
-
export type { TronConnectorConfig, TronGridConfig, TronWalletId } from '@meshconnect/uwc-types';
|
|
6
4
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,KAAK,SAAS,EACd,KAAK,gBAAgB,EACtB,MAAM,8BAA8B,CAAA;AACrC,YAAY,EACV,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACb,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
export
|
|
2
|
-
export * from './managers';
|
|
3
|
-
export * from './services';
|
|
1
|
+
export { UniversalWalletConnector } from './universal-wallet-connector';
|
|
4
2
|
export { toBaseUnits } from './utils/to-base-units';
|
|
5
3
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EAGzB,MAAM,8BAA8B,CAAA;AAOrC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA"}
|
|
@@ -1,8 +1,27 @@
|
|
|
1
|
-
type
|
|
2
|
-
type
|
|
1
|
+
import type { UWCEventMap, UWCEventName, UWCEventListener } from '../events';
|
|
2
|
+
type LegacyListener = () => void;
|
|
3
|
+
/**
|
|
4
|
+
* Typed event emitter used by UniversalWalletConnector.
|
|
5
|
+
*
|
|
6
|
+
* Each event has its own listener set. Emitting any typed event also
|
|
7
|
+
* dispatches the legacy `change` event, so `subscribe()` callers keep
|
|
8
|
+
* receiving a notification on every state change.
|
|
9
|
+
*/
|
|
3
10
|
export declare class EventManager {
|
|
4
11
|
private listeners;
|
|
5
|
-
|
|
12
|
+
/** Subscribe to a typed event. Returns an unsubscribe function. */
|
|
13
|
+
on<K extends UWCEventName>(event: K, listener: UWCEventListener<K>): () => void;
|
|
14
|
+
/** Subscribe once; the listener is removed after the first dispatch. */
|
|
15
|
+
once<K extends UWCEventName>(event: K, listener: UWCEventListener<K>): () => void;
|
|
16
|
+
off<K extends UWCEventName>(event: K, listener: UWCEventListener<K>): void;
|
|
17
|
+
emit<K extends UWCEventName>(event: K, data: UWCEventMap[K]): void;
|
|
18
|
+
private dispatch;
|
|
19
|
+
/**
|
|
20
|
+
* @deprecated Prefer `on(eventName, listener)` for targeted updates.
|
|
21
|
+
* Subscribes to the catch-all `change` event.
|
|
22
|
+
*/
|
|
23
|
+
subscribe(listener: LegacyListener): () => void;
|
|
24
|
+
/** @deprecated Prefer `emit(eventName, data)`. Emits `change` with no payload. */
|
|
6
25
|
notify(): void;
|
|
7
26
|
getListenerCount(): number;
|
|
8
27
|
clearAllListeners(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-manager.d.ts","sourceRoot":"","sources":["../../src/managers/event-manager.ts"],"names":[],"mappings":"AAAA,KAAK,
|
|
1
|
+
{"version":3,"file":"event-manager.d.ts","sourceRoot":"","sources":["../../src/managers/event-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAE5E,KAAK,cAAc,GAAG,MAAM,IAAI,CAAA;AAGhC;;;;;;GAMG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,SAAS,CAAqD;IAEtE,mEAAmE;IACnE,EAAE,CAAC,CAAC,SAAS,YAAY,EACvB,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAC5B,MAAM,IAAI;IAUb,wEAAwE;IACxE,IAAI,CAAC,CAAC,SAAS,YAAY,EACzB,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAC5B,MAAM,IAAI;IAQb,GAAG,CAAC,CAAC,SAAS,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI;IAK1E,IAAI,CAAC,CAAC,SAAS,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI;IAOlE,OAAO,CAAC,QAAQ;IAkBhB;;;OAGG;IACH,SAAS,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,IAAI;IAI/C,kFAAkF;IAClF,MAAM,IAAI,IAAI;IAId,gBAAgB,IAAI,MAAM;IAQ1B,iBAAiB,IAAI,IAAI;CAG1B"}
|
|
@@ -1,16 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Typed event emitter used by UniversalWalletConnector.
|
|
3
|
+
*
|
|
4
|
+
* Each event has its own listener set. Emitting any typed event also
|
|
5
|
+
* dispatches the legacy `change` event, so `subscribe()` callers keep
|
|
6
|
+
* receiving a notification on every state change.
|
|
7
|
+
*/
|
|
1
8
|
export class EventManager {
|
|
2
|
-
listeners = new
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
9
|
+
listeners = new Map();
|
|
10
|
+
/** Subscribe to a typed event. Returns an unsubscribe function. */
|
|
11
|
+
on(event, listener) {
|
|
12
|
+
let set = this.listeners.get(event);
|
|
13
|
+
if (!set) {
|
|
14
|
+
set = new Set();
|
|
15
|
+
this.listeners.set(event, set);
|
|
16
|
+
}
|
|
17
|
+
set.add(listener);
|
|
18
|
+
return () => this.off(event, listener);
|
|
19
|
+
}
|
|
20
|
+
/** Subscribe once; the listener is removed after the first dispatch. */
|
|
21
|
+
once(event, listener) {
|
|
22
|
+
const wrapper = data => {
|
|
23
|
+
this.off(event, wrapper);
|
|
24
|
+
listener(data);
|
|
7
25
|
};
|
|
26
|
+
return this.on(event, wrapper);
|
|
27
|
+
}
|
|
28
|
+
off(event, listener) {
|
|
29
|
+
const set = this.listeners.get(event);
|
|
30
|
+
set?.delete(listener);
|
|
31
|
+
}
|
|
32
|
+
emit(event, data) {
|
|
33
|
+
this.dispatch(event, data);
|
|
34
|
+
if (event !== 'change') {
|
|
35
|
+
this.dispatch('change', undefined);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
dispatch(event, data) {
|
|
39
|
+
const set = this.listeners.get(event);
|
|
40
|
+
if (!set || set.size === 0)
|
|
41
|
+
return;
|
|
42
|
+
// Clone to guard against mutation during dispatch.
|
|
43
|
+
for (const listener of [...set]) {
|
|
44
|
+
try {
|
|
45
|
+
listener(data);
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
// A bad listener shouldn't break the rest of the dispatch chain.
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
// ---- legacy API (still used by the React ConnectionProvider) ----
|
|
53
|
+
/**
|
|
54
|
+
* @deprecated Prefer `on(eventName, listener)` for targeted updates.
|
|
55
|
+
* Subscribes to the catch-all `change` event.
|
|
56
|
+
*/
|
|
57
|
+
subscribe(listener) {
|
|
58
|
+
return this.on('change', listener);
|
|
8
59
|
}
|
|
60
|
+
/** @deprecated Prefer `emit(eventName, data)`. Emits `change` with no payload. */
|
|
9
61
|
notify() {
|
|
10
|
-
this.
|
|
62
|
+
this.dispatch('change', undefined);
|
|
11
63
|
}
|
|
12
64
|
getListenerCount() {
|
|
13
|
-
|
|
65
|
+
let count = 0;
|
|
66
|
+
for (const set of this.listeners.values()) {
|
|
67
|
+
count += set.size;
|
|
68
|
+
}
|
|
69
|
+
return count;
|
|
14
70
|
}
|
|
15
71
|
clearAllListeners() {
|
|
16
72
|
this.listeners.clear();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-manager.js","sourceRoot":"","sources":["../../src/managers/event-manager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"event-manager.js","sourceRoot":"","sources":["../../src/managers/event-manager.ts"],"names":[],"mappings":"AAKA;;;;;;GAMG;AACH,MAAM,OAAO,YAAY;IACf,SAAS,GAA4C,IAAI,GAAG,EAAE,CAAA;IAEtE,mEAAmE;IACnE,EAAE,CACA,KAAQ,EACR,QAA6B;QAE7B,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACnC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,GAAG,GAAG,IAAI,GAAG,EAAE,CAAA;YACf,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;QAChC,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,QAA2B,CAAC,CAAA;QACpC,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;IACxC,CAAC;IAED,wEAAwE;IACxE,IAAI,CACF,KAAQ,EACR,QAA6B;QAE7B,MAAM,OAAO,GAAwB,IAAI,CAAC,EAAE;YAC1C,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;YACxB,QAAQ,CAAC,IAAI,CAAC,CAAA;QAChB,CAAC,CAAA;QACD,OAAO,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IAChC,CAAC;IAED,GAAG,CAAyB,KAAQ,EAAE,QAA6B;QACjE,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACrC,GAAG,EAAE,MAAM,CAAC,QAA2B,CAAC,CAAA;IAC1C,CAAC;IAED,IAAI,CAAyB,KAAQ,EAAE,IAAoB;QACzD,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QAC1B,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;YACvB,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,SAAkC,CAAC,CAAA;QAC7D,CAAC;IACH,CAAC;IAEO,QAAQ,CACd,KAAQ,EACR,IAAoB;QAEpB,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACrC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC;YAAE,OAAM;QAClC,mDAAmD;QACnD,KAAK,MAAM,QAAQ,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC;gBACH,QAAQ,CAAC,IAAI,CAAC,CAAA;YAChB,CAAC;YAAC,MAAM,CAAC;gBACP,iEAAiE;YACnE,CAAC;QACH,CAAC;IACH,CAAC;IAED,oEAAoE;IAEpE;;;OAGG;IACH,SAAS,CAAC,QAAwB;QAChC,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IACpC,CAAC;IAED,kFAAkF;IAClF,MAAM;QACJ,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,SAAkC,CAAC,CAAA;IAC7D,CAAC;IAED,gBAAgB;QACd,IAAI,KAAK,GAAG,CAAC,CAAA;QACb,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1C,KAAK,IAAI,GAAG,CAAC,IAAI,CAAA;QACnB,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAA;IACxB,CAAC;CACF"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import type { Network, NetworkId, WalletMetadata, ConnectionMode, Connector } from '@meshconnect/uwc-types';
|
|
2
2
|
import type { SessionManager } from '../managers/session-manager';
|
|
3
3
|
import type { EventManager } from '../managers/event-manager';
|
|
4
|
+
export interface ServiceOptions {
|
|
5
|
+
signal?: AbortSignal;
|
|
6
|
+
}
|
|
4
7
|
export declare class ConnectionService {
|
|
5
8
|
private networks;
|
|
6
9
|
private wallets;
|
|
@@ -10,13 +13,13 @@ export declare class ConnectionService {
|
|
|
10
13
|
private eventManager;
|
|
11
14
|
private activeConnector;
|
|
12
15
|
constructor(networks: Network[], wallets: WalletMetadata[], sessionManager: SessionManager, connectors: Map<ConnectionMode, Connector>, usingIntegratedBrowser: boolean, eventManager: EventManager);
|
|
13
|
-
connect(connectionMode: ConnectionMode, walletId: string, networkId?: NetworkId): Promise<void>;
|
|
16
|
+
connect(connectionMode: ConnectionMode, walletId: string, networkId?: NetworkId, options?: ServiceOptions): Promise<void>;
|
|
14
17
|
private connectWithURIPoll;
|
|
15
18
|
private getConnector;
|
|
16
19
|
private findWallet;
|
|
17
20
|
private getProviderForMode;
|
|
18
21
|
private validateAndDetermineNetwork;
|
|
19
|
-
disconnect(): Promise<void>;
|
|
22
|
+
disconnect(options?: ServiceOptions): Promise<void>;
|
|
20
23
|
getConnectionURI(): string | undefined;
|
|
21
24
|
getWallets(): WalletMetadata[];
|
|
22
25
|
updateWallets(wallets: WalletMetadata[]): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection-service.d.ts","sourceRoot":"","sources":["../../src/services/connection-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,SAAS,EACT,cAAc,EACd,cAAc,EACd,SAAS,EAMV,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"connection-service.d.ts","sourceRoot":"","sources":["../../src/services/connection-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,SAAS,EACT,cAAc,EACd,cAAc,EACd,SAAS,EAMV,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAG7D,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB;AAED,qBAAa,iBAAiB;IAI1B,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,sBAAsB;IAC9B,OAAO,CAAC,YAAY;IARtB,OAAO,CAAC,eAAe,CAAyB;gBAGtC,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,EAAE,cAAc,EAAE,EACzB,cAAc,EAAE,cAAc,EAC9B,UAAU,EAAE,GAAG,CAAC,cAAc,EAAE,SAAS,CAAC,EAC1C,sBAAsB,EAAE,OAAO,EAC/B,YAAY,EAAE,YAAY;IAG9B,OAAO,CACX,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,SAAS,EACrB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,IAAI,CAAC;YAuFF,kBAAkB;IAqDhC,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,kBAAkB;IA2C1B,OAAO,CAAC,2BAA2B;IA6C7B,UAAU,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBzD,gBAAgB,IAAI,MAAM,GAAG,SAAS;IAiBtC,UAAU,IAAI,cAAc,EAAE;IAI9B,aAAa,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,IAAI;IAI9C,WAAW,IAAI,OAAO,EAAE;IAIxB;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,wBAAwB;CAiBjC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { raceAbort } from '../utils/abort';
|
|
1
2
|
export class ConnectionService {
|
|
2
3
|
networks;
|
|
3
4
|
wallets;
|
|
@@ -14,7 +15,8 @@ export class ConnectionService {
|
|
|
14
15
|
this.usingIntegratedBrowser = usingIntegratedBrowser;
|
|
15
16
|
this.eventManager = eventManager;
|
|
16
17
|
}
|
|
17
|
-
async connect(connectionMode, walletId, networkId) {
|
|
18
|
+
async connect(connectionMode, walletId, networkId, options) {
|
|
19
|
+
options?.signal?.throwIfAborted();
|
|
18
20
|
// Find the wallet
|
|
19
21
|
const wallet = this.findWallet(walletId);
|
|
20
22
|
// Get the appropriate provider based on connection mode
|
|
@@ -23,17 +25,24 @@ export class ConnectionService {
|
|
|
23
25
|
const network = this.validateAndDetermineNetwork(networkId, provider);
|
|
24
26
|
// Get the appropriate connector
|
|
25
27
|
const connector = this.getConnector(connectionMode);
|
|
28
|
+
// Emit AFTER validation so a thrown lookup/validation error doesn't leave
|
|
29
|
+
// listeners seeing a "connecting" state for an attempt that never started.
|
|
30
|
+
this.eventManager.emit('connecting', { connectionMode, walletId });
|
|
26
31
|
// Store the active connector BEFORE starting connection
|
|
27
32
|
// This allows getConnectionURI to work while connection is in progress
|
|
28
33
|
this.activeConnector = connector;
|
|
29
34
|
let result;
|
|
30
35
|
try {
|
|
36
|
+
// Race the connector call against the AbortSignal so a mid-flight abort
|
|
37
|
+
// (e.g. user cancels the WalletConnect QR while the prompt is open)
|
|
38
|
+
// rejects the caller's await promptly. The underlying wallet prompt
|
|
39
|
+
// itself can't be cancelled, but the dapp UI is no longer blocked on it.
|
|
31
40
|
if (connectionMode === 'injected') {
|
|
32
|
-
result = await connector.connect(network, provider);
|
|
41
|
+
result = await raceAbort(connector.connect(network, provider), options?.signal);
|
|
33
42
|
}
|
|
34
43
|
else if (connectionMode === 'tonConnect' ||
|
|
35
44
|
connectionMode === 'walletConnect') {
|
|
36
|
-
result = await this.connectWithURIPoll(connector, network, provider);
|
|
45
|
+
result = await raceAbort(this.connectWithURIPoll(connector, network, provider, connectionMode, options?.signal), options?.signal);
|
|
37
46
|
}
|
|
38
47
|
else {
|
|
39
48
|
throw new Error(`Unsupported connection mode: ${connectionMode}`);
|
|
@@ -43,6 +52,9 @@ export class ConnectionService {
|
|
|
43
52
|
this.activeConnector = null;
|
|
44
53
|
throw error;
|
|
45
54
|
}
|
|
55
|
+
// Belt-and-suspenders: if the signal fired between raceAbort resolving
|
|
56
|
+
// and this point, still bail before mutating session.
|
|
57
|
+
options?.signal?.throwIfAborted();
|
|
46
58
|
// Filter available addresses to only include those for configured networks
|
|
47
59
|
const filteredAvailableAddresses = result.availableAddresses.filter(addr => this.networks.some(n => n.id === addr.networkId));
|
|
48
60
|
this.sessionManager.updateSession({
|
|
@@ -54,15 +66,19 @@ export class ConnectionService {
|
|
|
54
66
|
availableNetworks: this.networks.filter(n => provider.supportedNetworkIds.includes(n.id)),
|
|
55
67
|
availableAddresses: filteredAvailableAddresses
|
|
56
68
|
});
|
|
69
|
+
const session = this.sessionManager.getSession();
|
|
70
|
+
this.eventManager.emit('connected', { session });
|
|
71
|
+
this.eventManager.emit('sessionChanged', { session });
|
|
57
72
|
}
|
|
58
|
-
async connectWithURIPoll(connector, network, provider) {
|
|
73
|
+
async connectWithURIPoll(connector, network, provider, connectionMode, signal) {
|
|
59
74
|
const connectPromise = connector.connect(network, provider);
|
|
60
75
|
let pollingStopped = false;
|
|
76
|
+
let emittedUri;
|
|
61
77
|
const pollForURI = setInterval(() => {
|
|
62
78
|
const uri = this.getConnectionURI();
|
|
63
|
-
if (uri) {
|
|
64
|
-
|
|
65
|
-
this.eventManager.
|
|
79
|
+
if (uri && uri !== emittedUri) {
|
|
80
|
+
emittedUri = uri;
|
|
81
|
+
this.eventManager.emit('connectionUri', { uri, connectionMode });
|
|
66
82
|
}
|
|
67
83
|
}, 100);
|
|
68
84
|
// Additional safeguard to stop polling after a reasonable timeout (e.g. 5 minutes)
|
|
@@ -76,7 +92,14 @@ export class ConnectionService {
|
|
|
76
92
|
pollingStopped = true;
|
|
77
93
|
clearInterval(pollForURI);
|
|
78
94
|
clearTimeout(watchdogTimeoutId);
|
|
79
|
-
|
|
95
|
+
signal?.removeEventListener('abort', stopPolling);
|
|
96
|
+
}
|
|
97
|
+
// raceAbort unblocks the caller on abort, but the underlying connectPromise
|
|
98
|
+
// can stay pending (the wallet popup isn't cancellable). Without this the
|
|
99
|
+
// interval lives until the watchdog and — once a later connect re-sets
|
|
100
|
+
// activeConnector — emits the new session's URI tagged with this session's
|
|
101
|
+
// connectionMode.
|
|
102
|
+
signal?.addEventListener('abort', stopPolling, { once: true });
|
|
80
103
|
try {
|
|
81
104
|
return await connectPromise;
|
|
82
105
|
}
|
|
@@ -158,7 +181,8 @@ export class ConnectionService {
|
|
|
158
181
|
}
|
|
159
182
|
return network;
|
|
160
183
|
}
|
|
161
|
-
async disconnect() {
|
|
184
|
+
async disconnect(options) {
|
|
185
|
+
options?.signal?.throwIfAborted();
|
|
162
186
|
try {
|
|
163
187
|
if (this.activeConnector &&
|
|
164
188
|
typeof this.activeConnector.disconnect === 'function') {
|
|
@@ -168,6 +192,9 @@ export class ConnectionService {
|
|
|
168
192
|
finally {
|
|
169
193
|
this.activeConnector = null;
|
|
170
194
|
this.sessionManager.clearSession();
|
|
195
|
+
const session = this.sessionManager.getSession();
|
|
196
|
+
this.eventManager.emit('disconnected', undefined);
|
|
197
|
+
this.eventManager.emit('sessionChanged', { session });
|
|
171
198
|
}
|
|
172
199
|
}
|
|
173
200
|
getConnectionURI() {
|
|
@@ -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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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Network, NetworkId, Connector, ConnectionMode } from '@meshconnect/uwc-types';
|
|
2
2
|
import type { SessionManager } from '../managers/session-manager';
|
|
3
3
|
import type { EventManager } from '../managers/event-manager';
|
|
4
|
+
import type { ServiceOptions } from './connection-service';
|
|
4
5
|
export declare class NetworkSwitchService {
|
|
5
6
|
private networks;
|
|
6
7
|
private sessionManager;
|
|
@@ -14,7 +15,7 @@ export declare class NetworkSwitchService {
|
|
|
14
15
|
isLoading: boolean;
|
|
15
16
|
isWaitingForUserApproval: boolean;
|
|
16
17
|
};
|
|
17
|
-
switchNetwork(networkId: NetworkId): Promise<void>;
|
|
18
|
+
switchNetwork(networkId: NetworkId, options?: ServiceOptions): Promise<void>;
|
|
18
19
|
private checkIfApprovalRequired;
|
|
19
20
|
}
|
|
20
21
|
//# sourceMappingURL=network-switch-service.d.ts.map
|
|
@@ -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;
|
|
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;AAE1D,qBAAa,oBAAoB;IAK7B,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,sBAAsB;IAC9B,OAAO,CAAC,YAAY;IARtB,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;IAGpC,eAAe;;;;IAOT,aAAa,CACjB,SAAS,EAAE,SAAS,EACpB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,IAAI,CAAC;IAwIhB,OAAO,CAAC,uBAAuB;CAyChC"}
|
|
@@ -19,7 +19,8 @@ export class NetworkSwitchService {
|
|
|
19
19
|
isWaitingForUserApproval: this.isWaitingForUserApproval
|
|
20
20
|
};
|
|
21
21
|
}
|
|
22
|
-
async switchNetwork(networkId) {
|
|
22
|
+
async switchNetwork(networkId, options) {
|
|
23
|
+
options?.signal?.throwIfAborted();
|
|
23
24
|
// Check if there's an active connection
|
|
24
25
|
const session = this.sessionManager.getSession();
|
|
25
26
|
if (!session) {
|
|
@@ -70,7 +71,10 @@ export class NetworkSwitchService {
|
|
|
70
71
|
// Set loading states
|
|
71
72
|
this.isLoading = true;
|
|
72
73
|
this.isWaitingForUserApproval = requiresApproval;
|
|
73
|
-
this.eventManager.
|
|
74
|
+
this.eventManager.emit('networkSwitching', {
|
|
75
|
+
isLoading: true,
|
|
76
|
+
isWaitingForUserApproval: requiresApproval
|
|
77
|
+
});
|
|
74
78
|
// Perform the network switch and get the new address
|
|
75
79
|
// Pass the appropriate provider based on connection mode
|
|
76
80
|
let result;
|
|
@@ -85,6 +89,7 @@ export class NetworkSwitchService {
|
|
|
85
89
|
else {
|
|
86
90
|
result = await activeConnector.switchNetwork(network);
|
|
87
91
|
}
|
|
92
|
+
options?.signal?.throwIfAborted();
|
|
88
93
|
// Filter available addresses to only include those for configured networks
|
|
89
94
|
const filteredAvailableAddresses = result.availableAddresses
|
|
90
95
|
? result.availableAddresses.filter(addr => this.networks.some(n => n.id === addr.networkId))
|
|
@@ -97,12 +102,19 @@ export class NetworkSwitchService {
|
|
|
97
102
|
availableAddresses: filteredAvailableAddresses
|
|
98
103
|
})
|
|
99
104
|
});
|
|
105
|
+
this.eventManager.emit('networkSwitched', { network });
|
|
106
|
+
this.eventManager.emit('sessionChanged', {
|
|
107
|
+
session: this.sessionManager.getSession()
|
|
108
|
+
});
|
|
100
109
|
}
|
|
101
110
|
finally {
|
|
102
111
|
// Clear loading states
|
|
103
112
|
this.isLoading = false;
|
|
104
113
|
this.isWaitingForUserApproval = false;
|
|
105
|
-
this.eventManager.
|
|
114
|
+
this.eventManager.emit('networkSwitching', {
|
|
115
|
+
isLoading: false,
|
|
116
|
+
isWaitingForUserApproval: false
|
|
117
|
+
});
|
|
106
118
|
}
|
|
107
119
|
}
|
|
108
120
|
checkIfApprovalRequired(wallet, targetNetwork, currentNetwork) {
|
|
@@ -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,5 +1,6 @@
|
|
|
1
1
|
import type { ConnectionMode, Connector, SupportedProvider, SignatureType, EIP712TypedData } from '@meshconnect/uwc-types';
|
|
2
2
|
import type { SessionManager } from '../managers/session-manager';
|
|
3
|
+
import type { ServiceOptions } from './connection-service';
|
|
3
4
|
/**
|
|
4
5
|
* Service for handling signature operations across different connector types
|
|
5
6
|
*/
|
|
@@ -11,9 +12,10 @@ export declare class SignatureService {
|
|
|
11
12
|
* Sign a message with the currently connected wallet
|
|
12
13
|
* @param message The message to sign
|
|
13
14
|
* @param provider The wallet provider to use for signing (required for injected connector)
|
|
15
|
+
* @param options Optional cancellation signal
|
|
14
16
|
* @returns A promise that resolves to the signature
|
|
15
17
|
*/
|
|
16
|
-
signMessage(message: string, provider?: SupportedProvider): Promise<SignatureType>;
|
|
18
|
+
signMessage(message: string, provider?: SupportedProvider, options?: ServiceOptions): Promise<SignatureType>;
|
|
17
19
|
/**
|
|
18
20
|
* Sign EIP-712 typed structured data with the currently connected wallet.
|
|
19
21
|
* EVM-only (eip155); routes by connection mode. Throws for tonConnect.
|
|
@@ -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,iBAAiB,EACjB,aAAa,EACb,eAAe,EAChB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;
|
|
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,iBAAiB,EACjB,aAAa,EACb,eAAe,EAChB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAE1D;;GAEG;AACH,qBAAa,gBAAgB;IAEzB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,UAAU;gBADV,cAAc,EAAE,cAAc,EAC9B,UAAU,EAAE,GAAG,CAAC,cAAc,EAAE,SAAS,CAAC;IAGpD;;;;;;OAMG;IACG,WAAW,CACf,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,iBAAiB,EAC5B,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,aAAa,CAAC;IAwDzB;;;;;;OAMG;IACG,aAAa,CACjB,SAAS,EAAE,eAAe,EAC1B,QAAQ,CAAC,EAAE,iBAAiB,GAC3B,OAAO,CAAC,MAAM,CAAC;CA0CnB"}
|
|
@@ -12,9 +12,11 @@ export class SignatureService {
|
|
|
12
12
|
* Sign a message with the currently connected wallet
|
|
13
13
|
* @param message The message to sign
|
|
14
14
|
* @param provider The wallet provider to use for signing (required for injected connector)
|
|
15
|
+
* @param options Optional cancellation signal
|
|
15
16
|
* @returns A promise that resolves to the signature
|
|
16
17
|
*/
|
|
17
|
-
async signMessage(message, provider) {
|
|
18
|
+
async signMessage(message, provider, options) {
|
|
19
|
+
options?.signal?.throwIfAborted();
|
|
18
20
|
const session = this.sessionManager.getSession();
|
|
19
21
|
if (!session.connectionMode) {
|
|
20
22
|
throw new Error('No active connection');
|
|
@@ -32,25 +34,28 @@ export class SignatureService {
|
|
|
32
34
|
throw new Error(`Connector does not support message signing`);
|
|
33
35
|
}
|
|
34
36
|
// Call the connector's signMessage method with the appropriate provider
|
|
37
|
+
let signature;
|
|
35
38
|
if (session.connectionMode === 'injected') {
|
|
36
39
|
if (!provider) {
|
|
37
40
|
throw new Error('Provider is required for injected connector');
|
|
38
41
|
}
|
|
39
|
-
|
|
42
|
+
signature = await connector.signMessage(message, provider);
|
|
40
43
|
}
|
|
41
44
|
else if (session.connectionMode === 'tonConnect') {
|
|
42
|
-
|
|
45
|
+
signature = await connector.signMessage(message);
|
|
43
46
|
}
|
|
44
47
|
else if (session.connectionMode === 'walletConnect') {
|
|
45
48
|
if (!provider) {
|
|
46
49
|
throw new Error('Provider is required for WalletConnect connector');
|
|
47
50
|
}
|
|
48
|
-
|
|
51
|
+
signature = await connector.signMessage(message, provider);
|
|
49
52
|
}
|
|
50
53
|
else {
|
|
51
54
|
// For other connectors that might not need the provider
|
|
52
|
-
|
|
55
|
+
signature = await connector.signMessage(message);
|
|
53
56
|
}
|
|
57
|
+
options?.signal?.throwIfAborted();
|
|
58
|
+
return signature;
|
|
54
59
|
}
|
|
55
60
|
/**
|
|
56
61
|
* Sign EIP-712 typed structured data with the currently connected wallet.
|
|
@@ -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,5 +1,6 @@
|
|
|
1
1
|
import type { ConnectionMode, Connector, SupportedProvider, TransactionRequest, TransactionResult } from '@meshconnect/uwc-types';
|
|
2
2
|
import type { SessionManager } from '../managers/session-manager';
|
|
3
|
+
import type { ServiceOptions } from './connection-service';
|
|
3
4
|
/**
|
|
4
5
|
* Service for handling transaction operations across different connector types
|
|
5
6
|
*/
|
|
@@ -11,8 +12,9 @@ export declare class TransactionService {
|
|
|
11
12
|
* Send a transaction with the currently connected wallet
|
|
12
13
|
* @param request The transaction request parameters
|
|
13
14
|
* @param provider The wallet provider to use for sending (required for injected connector)
|
|
15
|
+
* @param options Optional cancellation signal
|
|
14
16
|
* @returns A promise that resolves to the transaction result
|
|
15
17
|
*/
|
|
16
|
-
sendTransaction(request: TransactionRequest, provider?: SupportedProvider): Promise<TransactionResult>;
|
|
18
|
+
sendTransaction(request: TransactionRequest, provider?: SupportedProvider, options?: ServiceOptions): Promise<TransactionResult>;
|
|
17
19
|
}
|
|
18
20
|
//# sourceMappingURL=transaction-service.d.ts.map
|