@sidhujag/sysweb3-keyring 2.1.9 → 2.1.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +8 -5
  3. package/cjs/hardware-signing-data.js +85 -0
  4. package/cjs/hardware-signing-data.js.map +1 -0
  5. package/cjs/hardware-wallet-manager.js +36 -13
  6. package/cjs/hardware-wallet-manager.js.map +1 -1
  7. package/cjs/ledger/index.js +41 -51
  8. package/cjs/ledger/index.js.map +1 -1
  9. package/cjs/transactions/ethereum.js +92 -70
  10. package/cjs/transactions/ethereum.js.map +1 -1
  11. package/cjs/transactions/prepared-evm.js.map +1 -1
  12. package/cjs/trezor/connect.js +155 -50
  13. package/cjs/trezor/connect.js.map +1 -1
  14. package/cjs/trezor/index.js +159 -138
  15. package/cjs/trezor/index.js.map +1 -1
  16. package/cjs/types.js.map +1 -1
  17. package/esm/hardware-signing-data.js +82 -0
  18. package/esm/hardware-signing-data.js.map +1 -0
  19. package/esm/hardware-wallet-manager.js +36 -13
  20. package/esm/hardware-wallet-manager.js.map +1 -1
  21. package/esm/ledger/dmk-evm.js +13 -48
  22. package/esm/ledger/dmk-evm.js.map +1 -1
  23. package/esm/ledger/dmk-utxo.js +9 -6
  24. package/esm/ledger/dmk-utxo.js.map +1 -1
  25. package/esm/ledger/index.js +41 -51
  26. package/esm/ledger/index.js.map +1 -1
  27. package/esm/transactions/ethereum.js +92 -70
  28. package/esm/transactions/ethereum.js.map +1 -1
  29. package/esm/transactions/prepared-evm.js.map +1 -1
  30. package/esm/trezor/connect.js +155 -50
  31. package/esm/trezor/connect.js.map +1 -1
  32. package/esm/trezor/index.js +160 -139
  33. package/esm/trezor/index.js.map +1 -1
  34. package/esm/types.js.map +1 -1
  35. package/package.json +1 -1
  36. package/types/hardware-signing-data.d.ts +2 -0
  37. package/types/hardware-wallet-manager.d.ts +3 -1
  38. package/types/ledger/host-types.d.ts +3 -3
  39. package/types/ledger/index.d.ts +2 -1
  40. package/types/ledger/types.d.ts +4 -4
  41. package/types/transactions/ethereum.d.ts +4 -2
  42. package/types/transactions/prepared-evm.d.ts +1 -0
  43. package/types/trezor/connect.d.ts +10 -1
  44. package/types/trezor/index.d.ts +21 -11
  45. package/types/types.d.ts +2 -2
@@ -1,6 +1,12 @@
1
1
  import { captureHardwareTransactionAuthority } from '../hardware-transaction-authority';
2
2
  import { TREZOR_METHODS } from './host-types';
3
- const methods = TREZOR_METHODS.filter((method) => method !== 'ethereumSignTransaction' && method !== 'signTransaction');
3
+ const methods = TREZOR_METHODS.filter((method) => ![
4
+ 'ethereumSignTransaction',
5
+ 'signTransaction',
6
+ 'signMessage',
7
+ 'ethereumSignMessage',
8
+ 'ethereumSignTypedData',
9
+ ].includes(method));
4
10
  const hostOwners = new WeakMap();
5
11
  export function createTrezorConnection(host) {
6
12
  if (!host ||
@@ -21,6 +27,15 @@ export function createTrezorConnection(host) {
21
27
  let cleanupPromise = Promise.resolve();
22
28
  let cleanupPending = false;
23
29
  const inFlight = new Set();
30
+ let signing;
31
+ const busy = () => Object.assign(new Error('Previous Trezor signing request is still pending'), { code: 'HARDWARE_SIGNER_BUSY' });
32
+ const checkSigning = (scope) => {
33
+ if (signing !== scope || scope.closed || scope.generation !== generation)
34
+ throw interrupted();
35
+ scope.authority.assertCurrent();
36
+ if (signing !== scope || scope.closed || scope.generation !== generation)
37
+ throw interrupted();
38
+ };
24
39
  const pending = new Set();
25
40
  const interrupted = () => Object.assign(new Error('Trezor operation cancelled'), {
26
41
  code: 'Method_Interrupted',
@@ -54,7 +69,7 @@ export function createTrezorConnection(host) {
54
69
  return clientPromise;
55
70
  };
56
71
  /** Keep the SDK's established failure payload while preserving Connect 10 codes. */
57
- const normalize = (response, method) => {
72
+ const normalize = (response, method, scope) => {
58
73
  if (response?.success === false) {
59
74
  const error = response.error;
60
75
  const code = typeof error?.code === 'string' ? error.code : undefined;
@@ -62,7 +77,15 @@ export function createTrezorConnection(host) {
62
77
  code === 'Device_NotFound' ||
63
78
  code === 'Desktop_ConnectionMissing' ||
64
79
  code === 'Transport_Missing') {
65
- invalidate();
80
+ // This failure itself retires the connection, not the caller's approval.
81
+ // Preserve its typed error only for this exact still-owned invalidation.
82
+ const invalidated = invalidate();
83
+ if (scope) {
84
+ scope.authority.assertCurrent();
85
+ if (signing !== scope || scope.closed || generation !== invalidated)
86
+ throw interrupted();
87
+ scope.generation = invalidated;
88
+ }
66
89
  }
67
90
  return {
68
91
  ...response,
@@ -81,9 +104,15 @@ export function createTrezorConnection(host) {
81
104
  }
82
105
  return response;
83
106
  };
84
- const withClient = async (operation, requireInitialized = true) => {
107
+ const withClient = async (operation, requireInitialized = true, scope) => {
85
108
  const captured = generation;
109
+ if (signing && signing !== scope)
110
+ throw busy();
86
111
  const assertCurrent = () => {
112
+ if (scope)
113
+ checkSigning(scope);
114
+ else if (signing)
115
+ throw busy();
87
116
  if (captured !== generation)
88
117
  throw interrupted();
89
118
  if (requireInitialized && !initialized) {
@@ -100,6 +129,16 @@ export function createTrezorConnection(host) {
100
129
  rejectPending = reject;
101
130
  });
102
131
  pending.add(rejectPending);
132
+ const onAbort = () => {
133
+ try {
134
+ scope?.authority.assertCurrent();
135
+ }
136
+ catch (error) {
137
+ rejectPending(error);
138
+ }
139
+ };
140
+ scope?.authority.signal.addEventListener('abort', onAbort, { once: true });
141
+ let raw;
103
142
  try {
104
143
  const result = await Promise.race([
105
144
  (async () => {
@@ -107,7 +146,7 @@ export function createTrezorConnection(host) {
107
146
  assertCurrent();
108
147
  const client = await getClient();
109
148
  assertCurrent();
110
- const request = Promise.resolve(operation(client, assertCurrent));
149
+ const request = (raw = Promise.resolve(operation(client, assertCurrent)));
111
150
  inFlight.add(request);
112
151
  try {
113
152
  return await request;
@@ -124,6 +163,11 @@ export function createTrezorConnection(host) {
124
163
  }
125
164
  finally {
126
165
  pending.delete(rejectPending);
166
+ scope?.authority.signal.removeEventListener('abort', onAbort);
167
+ // Cancellation cannot release an owned device invocation while its raw
168
+ // platform call still exists. A successor must wait for this drain.
169
+ if (scope && raw)
170
+ await Promise.allSettled([raw]);
127
171
  }
128
172
  };
129
173
  const calls = Object.fromEntries(methods.map((method) => [
@@ -139,62 +183,123 @@ export function createTrezorConnection(host) {
139
183
  return normalized;
140
184
  },
141
185
  ]));
142
- async function signOwned(method, authority, call) {
143
- const { assertCurrent } = captureHardwareTransactionAuthority(authority);
144
- const captured = generation;
145
- const response = await withClient((client, assertConnectionCurrent) => {
146
- assertCurrent();
147
- return call(client, () => {
148
- assertConnectionCurrent();
149
- assertCurrent();
150
- assertConnectionCurrent();
151
- });
152
- });
153
- assertCurrent();
154
- if (captured !== generation)
155
- throw interrupted();
156
- const normalized = normalize(response, method);
157
- if (normalized?.success === true) {
158
- assertCurrent();
186
+ const invokeOwned = async (scope, method, args) => {
187
+ checkSigning(scope);
188
+ const response = await withClient((client, assertCurrent) => client[method](assertCurrent, ...args), true, scope);
189
+ checkSigning(scope);
190
+ const normalized = normalize(response, method, scope);
191
+ checkSigning(scope);
192
+ return normalized;
193
+ };
194
+ async function initialize(scope) {
195
+ if (scope)
196
+ checkSigning(scope);
197
+ else if (signing)
198
+ throw busy();
199
+ if (cleanupPending || initializing)
200
+ throw busy();
201
+ const activeOwner = hostOwners.get(host);
202
+ if (activeOwner && activeOwner !== owner)
203
+ throw busy();
204
+ hostOwners.set(host, owner);
205
+ initializing = true;
206
+ const captured = invalidate();
207
+ if (scope)
208
+ scope.generation = captured;
209
+ try {
210
+ if (captured !== generation)
211
+ throw interrupted();
212
+ await withClient((client, assertCurrent) => client.init(assertCurrent), false, scope);
213
+ if (scope)
214
+ checkSigning(scope);
159
215
  if (captured !== generation)
160
216
  throw interrupted();
217
+ initialized = true;
218
+ }
219
+ finally {
220
+ initializing = false;
161
221
  }
162
- return normalized;
163
222
  }
164
223
  const TrezorConnect = {
165
224
  ...calls,
166
- ethereumSignTransactionOwned(request, authority) {
167
- return signOwned('ethereumSignTransaction', authority, (client, assertCurrent) => client.ethereumSignTransaction(assertCurrent, request));
168
- },
169
- signTransactionOwned(request, authority) {
170
- return signOwned('signTransaction', authority, (client, assertCurrent) => client.signTransaction(assertCurrent, request));
171
- },
172
- async init() {
173
- if (cleanupPending || initializing) {
174
- throw Object.assign(new Error('Previous Trezor request is still pending'), {
175
- code: 'HARDWARE_SIGNER_BUSY',
176
- });
177
- }
178
- const activeOwner = hostOwners.get(host);
179
- if (activeOwner && activeOwner !== owner)
180
- throw Object.assign(new Error('Trezor host is owned by another connection'), {
181
- code: 'HARDWARE_SIGNER_BUSY',
182
- });
183
- hostOwners.set(host, owner);
184
- initializing = true;
185
- const captured = invalidate();
225
+ async withOwnedSigning(authority, operation) {
226
+ const captured = captureHardwareTransactionAuthority(authority);
227
+ if (signing ||
228
+ cleanupPending ||
229
+ initializing ||
230
+ pending.size ||
231
+ inFlight.size)
232
+ throw busy();
233
+ const scope = {
234
+ authority: captured,
235
+ generation,
236
+ closed: false,
237
+ calls: new Set(),
238
+ };
239
+ signing = scope;
240
+ const call = (operation) => {
241
+ checkSigning(scope);
242
+ const promise = operation();
243
+ scope.calls.add(promise);
244
+ void promise
245
+ .finally(() => scope.calls.delete(promise))
246
+ .catch(() => undefined);
247
+ return promise;
248
+ };
249
+ const session = Object.freeze({
250
+ ...Object.fromEntries([
251
+ 'ethereumSignTransaction',
252
+ 'signTransaction',
253
+ 'signMessage',
254
+ 'ethereumSignMessage',
255
+ 'ethereumSignTypedData',
256
+ 'getFeatures',
257
+ ].map((method) => [
258
+ method,
259
+ (...args) => call(() => invokeOwned(scope, method, args)),
260
+ ])),
261
+ init: () => call(() => initialize(scope)),
262
+ dispose: () => call(async () => {
263
+ const disposal = TrezorConnect.dispose();
264
+ scope.generation = generation;
265
+ await (cleanupPending ? cleanupPromise : disposal);
266
+ checkSigning(scope);
267
+ }),
268
+ });
269
+ let succeeded = false;
186
270
  try {
187
- if (captured !== generation)
188
- throw interrupted();
189
- await withClient((client, assertCurrent) => client.init(assertCurrent), false);
190
- if (captured !== generation)
191
- throw interrupted();
192
- initialized = true;
271
+ checkSigning(scope);
272
+ const result = await operation(session);
273
+ checkSigning(scope);
274
+ succeeded = true;
275
+ return result;
193
276
  }
194
277
  finally {
195
- initializing = false;
278
+ scope.closed = true;
279
+ try {
280
+ await Promise.allSettled([...scope.calls]);
281
+ if (!succeeded &&
282
+ signing === scope &&
283
+ scope.generation === generation) {
284
+ const disposal = TrezorConnect.dispose();
285
+ await (cleanupPending ? cleanupPromise : disposal);
286
+ }
287
+ else if (cleanupPending)
288
+ await cleanupPromise;
289
+ }
290
+ finally {
291
+ if (signing === scope)
292
+ signing = undefined;
293
+ }
196
294
  }
197
295
  },
296
+ ethereumSignTransactionOwned(request, authority) {
297
+ return TrezorConnect.withOwnedSigning(authority, (session) => session.ethereumSignTransaction(request));
298
+ },
299
+ signTransactionOwned(request, authority) {
300
+ return TrezorConnect.withOwnedSigning(authority, (session) => session.signTransaction(request));
301
+ },
302
+ init: () => initialize(),
198
303
  dispose() {
199
304
  if (cleanupPending) {
200
305
  return inFlight.size ? Promise.resolve() : cleanupPromise;
@@ -1 +1 @@
1
- {"version":3,"file":"connect.js","sourceRoot":"","sources":["../../../src/trezor/connect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connect.js","sourceRoot":"","sources":["../../../src/trezor/connect.ts"],"names":[],"mappings":"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"}