Skip to content

Commit f063652

Browse files
committed
feat!: make getAccount() synchronous
1 parent 03d8fd0 commit f063652

File tree

13 files changed

+66
-69
lines changed

13 files changed

+66
-69
lines changed

packages/keyring-eth-hd/src/hd-keyring.test.ts

Lines changed: 21 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,8 @@ const sampleMnemonicSeed = mnemonicToSeedSync(sampleMnemonic);
4545

4646
const notKeyringAddress = '0xbD20F6F5F1616947a39E11926E78ec94817B3931';
4747

48-
const getAddressAtIndex = async (
49-
keyring: HdKeyring,
50-
index: number,
51-
): Promise<Hex> => {
52-
const accounts = await keyring.getAccounts();
48+
const getAddressAtIndex = (keyring: HdKeyring, index: number): Hex => {
49+
const accounts = keyring.getAccounts();
5350
assert(accounts[index], `Account not found at index ${index}`);
5451
return accounts[index];
5552
};
@@ -78,7 +75,7 @@ describe('hd-keyring', () => {
7875
mnemonic,
7976
numberOfAccounts: 3,
8077
});
81-
const newAccounts = await newHDKeyring.getAccounts();
78+
const newAccounts = newHDKeyring.getAccounts();
8279
const oldAccounts = await oldHDKeyring.getAccounts();
8380
expect(newAccounts[0]).toStrictEqual(oldAccounts[0]);
8481

@@ -181,7 +178,7 @@ describe('hd-keyring', () => {
181178
numberOfAccounts: 2,
182179
});
183180

184-
const accounts = await keyring.getAccounts();
181+
const accounts = keyring.getAccounts();
185182
expect(accounts[0]).toStrictEqual(firstAcct);
186183
expect(accounts[1]).toStrictEqual(secondAcct);
187184
expect(keyring.mnemonic).toStrictEqual(sampleMnemonicBytes);
@@ -196,7 +193,7 @@ describe('hd-keyring', () => {
196193
numberOfAccounts: 2,
197194
});
198195

199-
const accounts = await keyring.getAccounts();
196+
const accounts = keyring.getAccounts();
200197
expect(accounts[0]).toStrictEqual(firstAcct);
201198
expect(accounts[1]).toStrictEqual(secondAcct);
202199
expect(keyring.mnemonic).toStrictEqual(sampleMnemonicBytes);
@@ -242,7 +239,7 @@ describe('hd-keyring', () => {
242239
numberOfAccounts: 2,
243240
});
244241

245-
const accounts = await keyring.getAccounts();
242+
const accounts = keyring.getAccounts();
246243
expect(accounts[0]).toStrictEqual(firstAcct);
247244
expect(accounts[1]).toStrictEqual(secondAcct);
248245
expect(keyring.mnemonic).toStrictEqual(sampleMnemonicBytes);
@@ -281,11 +278,11 @@ describe('hd-keyring', () => {
281278
mnemonic: sampleMnemonic,
282279
numberOfAccounts: 1,
283280
});
284-
const accountsFirstCheck = await keyring.getAccounts();
281+
const accountsFirstCheck = keyring.getAccounts();
285282

286283
expect(accountsFirstCheck).toHaveLength(1);
287284
await keyring.addAccounts(1);
288-
const accountsSecondCheck = await keyring.getAccounts();
285+
const accountsSecondCheck = keyring.getAccounts();
289286
expect(accountsSecondCheck[0]).toStrictEqual(firstAcct);
290287
expect(accountsSecondCheck[1]).toStrictEqual(secondAcct);
291288
expect(accountsSecondCheck).toHaveLength(2);
@@ -303,7 +300,7 @@ describe('hd-keyring', () => {
303300
await keyring.deserialize({});
304301
await keyring.generateRandomMnemonic();
305302
await keyring.addAccounts();
306-
const accounts = await keyring.getAccounts();
303+
const accounts = keyring.getAccounts();
307304
expect(accounts).toHaveLength(1);
308305
});
309306

@@ -321,7 +318,7 @@ describe('hd-keyring', () => {
321318
await keyring.deserialize({});
322319
await keyring.generateRandomMnemonic();
323320
await keyring.addAccounts(3);
324-
const accounts = await keyring.getAccounts();
321+
const accounts = keyring.getAccounts();
325322
expect(accounts).toHaveLength(3);
326323
});
327324
});
@@ -364,7 +361,7 @@ describe('hd-keyring', () => {
364361
await keyring.deserialize({});
365362
await keyring.generateRandomMnemonic();
366363
await keyring.addAccounts(1);
367-
const address = await getAddressAtIndex(keyring, 0);
364+
const address = getAddressAtIndex(keyring, 0);
368365
const signature = await keyring.signTypedData(address, typedData);
369366
const restored = recoverTypedSignature({
370367
data: typedData,
@@ -389,7 +386,7 @@ describe('hd-keyring', () => {
389386
await keyring.deserialize({});
390387
await keyring.generateRandomMnemonic();
391388
await keyring.addAccounts(1);
392-
const address = await getAddressAtIndex(keyring, 0);
389+
const address = getAddressAtIndex(keyring, 0);
393390
const signature = await keyring.signTypedData(address, typedData, {
394391
version: SignTypedDataVersion.V1,
395392
});
@@ -418,7 +415,7 @@ describe('hd-keyring', () => {
418415
mnemonic: sampleMnemonic,
419416
numberOfAccounts: 1,
420417
});
421-
const address = await getAddressAtIndex(keyring, 0);
418+
const address = getAddressAtIndex(keyring, 0);
422419
const signature = await keyring.signTypedData(address, typedData, {
423420
version: SignTypedDataVersion.V3,
424421
});
@@ -475,7 +472,7 @@ describe('hd-keyring', () => {
475472
await keyring.deserialize({});
476473
await keyring.generateRandomMnemonic();
477474
await keyring.addAccounts(1);
478-
const address = await getAddressAtIndex(keyring, 0);
475+
const address = getAddressAtIndex(keyring, 0);
479476
const signature = await keyring.signTypedData(address, typedData, {
480477
version: SignTypedDataVersion.V3,
481478
});
@@ -497,7 +494,7 @@ describe('hd-keyring', () => {
497494
numberOfAccounts: 1,
498495
hdPath: hdPathString,
499496
});
500-
const addresses = await keyring.getAccounts();
497+
const addresses = keyring.getAccounts();
501498
expect(addresses[0]).toStrictEqual(firstAcct);
502499
const serialized = await keyring.serialize();
503500
expect(serialized.hdPath).toStrictEqual(hdPathString);
@@ -511,7 +508,7 @@ describe('hd-keyring', () => {
511508
numberOfAccounts: 1,
512509
hdPath: hdPathString,
513510
});
514-
const addresses = await keyring.getAccounts();
511+
const addresses = keyring.getAccounts();
515512
expect(addresses[0]).not.toBe(firstAcct);
516513
const serialized = await keyring.serialize();
517514
expect(serialized.hdPath).toStrictEqual(hdPathString);
@@ -640,7 +637,7 @@ describe('hd-keyring', () => {
640637
Buffer.from(keccak256(Buffer.from(localMessage))),
641638
);
642639
await keyring.addAccounts(9);
643-
const addresses = await keyring.getAccounts();
640+
const addresses = keyring.getAccounts();
644641
const signatures = await Promise.all(
645642
addresses.map(async (accountAddress) => {
646643
return await keyring.signMessage(accountAddress, msgHashHex);
@@ -767,10 +764,10 @@ describe('hd-keyring', () => {
767764

768765
describe('if the account exists', function () {
769766
it('should remove that account', async function () {
770-
const addresses = await keyring.getAccounts();
767+
const addresses = keyring.getAccounts();
771768
expect(addresses).toHaveLength(1);
772-
keyring.removeAccount(await getAddressAtIndex(keyring, 0));
773-
const addressesAfterRemoval = await keyring.getAccounts();
769+
keyring.removeAccount(getAddressAtIndex(keyring, 0));
770+
const addressesAfterRemoval = keyring.getAccounts();
774771
expect(addressesAfterRemoval).toHaveLength(0);
775772
});
776773
});
@@ -979,7 +976,7 @@ describe('hd-keyring', () => {
979976
},
980977
};
981978

982-
const address = await getAddressAtIndex(keyring, 0);
979+
const address = getAddressAtIndex(keyring, 0);
983980

984981
const signature = await keyring.signTypedData(address, typedData, {
985982
version: SignTypedDataVersion.V4,

packages/keyring-eth-hd/src/hd-keyring.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,7 @@ export class HdKeyring implements Keyring {
232232
*
233233
* @returns The addresses of all accounts in the keyring.
234234
*/
235-
async getAccounts(): Promise<Hex[]> {
235+
getAccounts(): Hex[] {
236236
return Array.from(this.#walletMap.keys());
237237
}
238238

packages/keyring-eth-ledger-bridge/src/ledger-keyring.test.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ describe('LedgerKeyring', function () {
134134
});
135135
expect(typeof ledgerKeyring).toBe('object');
136136

137-
const accounts = await ledgerKeyring.getAccounts();
137+
const accounts = ledgerKeyring.getAccounts();
138138
expect(Array.isArray(accounts)).toBe(true);
139139
});
140140

@@ -441,7 +441,7 @@ describe('LedgerKeyring', function () {
441441
keyring.setAccountToUnlock(1);
442442
const secondBatch = await keyring.addAccounts(1);
443443

444-
expect(await keyring.getAccounts()).toHaveLength(2);
444+
expect(keyring.getAccounts()).toHaveLength(2);
445445
expect(firstBatch).toStrictEqual([fakeAccounts[0]]);
446446
expect(secondBatch).toStrictEqual([fakeAccounts[1]]);
447447
});
@@ -455,7 +455,7 @@ describe('LedgerKeyring', function () {
455455
const accounts = await keyring.addAccounts(1);
456456
expect(accounts).toHaveLength(1);
457457
keyring.removeAccount(fakeAccounts[0]);
458-
const accountsAfterRemoval = await keyring.getAccounts();
458+
const accountsAfterRemoval = keyring.getAccounts();
459459
expect(accountsAfterRemoval).toHaveLength(0);
460460
});
461461
});
@@ -546,7 +546,7 @@ describe('LedgerKeyring', function () {
546546
beforeEach(async function () {
547547
keyring.setAccountToUnlock(accountIndex);
548548
await keyring.addAccounts(1);
549-
accounts = await keyring.getAccounts();
549+
accounts = keyring.getAccounts();
550550
});
551551

552552
it('returns an array of accounts', function () {
@@ -569,7 +569,7 @@ describe('LedgerKeyring', function () {
569569
// Wipe the keyring
570570
keyring.forgetDevice();
571571

572-
const accounts = await keyring.getAccounts();
572+
const accounts = keyring.getAccounts();
573573

574574
expect(keyring.isUnlocked()).toBe(false);
575575
expect(accounts).toHaveLength(0);

packages/keyring-eth-ledger-bridge/src/ledger-keyring.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -304,8 +304,8 @@ export class LedgerKeyring implements Keyring {
304304
return this.#getPage(-1);
305305
}
306306

307-
async getAccounts(): Promise<Hex[]> {
308-
return Promise.resolve(this.accounts.slice());
307+
getAccounts(): Hex[] {
308+
return this.accounts.slice();
309309
}
310310

311311
removeAccount(address: string): void {

packages/keyring-eth-qr/src/qr-keyring.test.ts

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ describe('QrKeyring', () => {
195195

196196
await keyring.deserialize({});
197197

198-
expect(await keyring.getAccounts()).toStrictEqual([]);
198+
expect(keyring.getAccounts()).toStrictEqual([]);
199199
expect(await getXPUBFromKeyring(keyring)).toBeUndefined();
200200
});
201201
});
@@ -208,7 +208,7 @@ describe('QrKeyring', () => {
208208

209209
await keyring.deserialize(HDKEY_SERIALIZED_KEYRING_WITH_NO_ACCOUNTS);
210210

211-
expect(await keyring.getAccounts()).toStrictEqual([]);
211+
expect(keyring.getAccounts()).toStrictEqual([]);
212212
expect(await getXPUBFromKeyring(keyring)).toStrictEqual(
213213
HDKEY_SERIALIZED_KEYRING_WITH_NO_ACCOUNTS.xpub,
214214
);
@@ -225,8 +225,8 @@ describe('QrKeyring', () => {
225225
// @ts-expect-error QrKeyring types are stricter than Keystone ones
226226
await keyring.deserialize(await keystoneKeyring.serialize());
227227

228-
expect(await keystoneKeyring.getAccounts()).toStrictEqual(
229-
await keystoneKeyring.getAccounts(),
228+
expect(keystoneKeyring.getAccounts()).toStrictEqual(
229+
keystoneKeyring.getAccounts(),
230230
);
231231
expect(await getXPUBFromKeyring(keyring)).toStrictEqual(
232232
await getXPUBFromKeyring(keystoneKeyring),
@@ -270,7 +270,7 @@ describe('QrKeyring', () => {
270270

271271
expect(firstAddition).toStrictEqual(expectedAccounts.slice(0, 1));
272272
expect(secondAddition).toStrictEqual([]);
273-
expect(await keyring.getAccounts()).toStrictEqual(
273+
expect(keyring.getAccounts()).toStrictEqual(
274274
expectedAccounts.slice(0, 1),
275275
);
276276
});
@@ -328,7 +328,7 @@ describe('QrKeyring', () => {
328328
bridge: getMockBridge(),
329329
ur: KNOWN_HDKEY_UR,
330330
});
331-
expect(await keyring.getAccounts()).toStrictEqual([]);
331+
expect(keyring.getAccounts()).toStrictEqual([]);
332332
});
333333
});
334334

@@ -362,7 +362,7 @@ describe('QrKeyring', () => {
362362

363363
keyring.removeAccount(EXPECTED_ACCOUNTS[1]);
364364

365-
expect(await keyring.getAccounts()).toStrictEqual([
365+
expect(keyring.getAccounts()).toStrictEqual([
366366
EXPECTED_ACCOUNTS[0],
367367
EXPECTED_ACCOUNTS[2],
368368
]);
@@ -374,12 +374,12 @@ describe('QrKeyring', () => {
374374
ur: KNOWN_HDKEY_UR,
375375
});
376376
await keyring.addAccounts(1);
377-
const initialAccounts = await keyring.getAccounts();
377+
const initialAccounts = keyring.getAccounts();
378378

379379
expect(() =>
380380
keyring.removeAccount('0x0000000000000000000000000000000000000000'),
381381
).not.toThrow();
382-
expect(await keyring.getAccounts()).toStrictEqual(initialAccounts);
382+
expect(keyring.getAccounts()).toStrictEqual(initialAccounts);
383383
});
384384
});
385385

@@ -617,7 +617,7 @@ describe('QrKeyring', () => {
617617
});
618618
await keyring.deserialize(HDKEY_SERIALIZED_KEYRING_WITH_ACCOUNTS);
619619
// let's make sure we have an xpub set
620-
expect(await keyring.getAccounts()).toStrictEqual(
620+
expect(keyring.getAccounts()).toStrictEqual(
621621
HDKEY_SERIALIZED_KEYRING_WITH_ACCOUNTS.accounts,
622622
);
623623
expect(await getXPUBFromKeyring(keyring)).toStrictEqual(
@@ -626,7 +626,7 @@ describe('QrKeyring', () => {
626626

627627
await keyring.forgetDevice();
628628

629-
expect(await keyring.getAccounts()).toStrictEqual([]);
629+
expect(keyring.getAccounts()).toStrictEqual([]);
630630
expect(await getXPUBFromKeyring(keyring)).toBeUndefined();
631631
});
632632
});

packages/keyring-eth-qr/src/qr-keyring.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ export class QrKeyring implements Keyring {
191191
*
192192
* @returns The accounts in the QrKeyring
193193
*/
194-
async getAccounts(): Promise<Hex[]> {
194+
getAccounts(): Hex[] {
195195
return this.#accounts.slice();
196196
}
197197

packages/keyring-eth-simple/src/simple-keyring.test.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ describe('simple-keyring', function () {
9494
describe('#constructor with a private key', function () {
9595
it('has the correct addresses', async function () {
9696
const newKeyring = new SimpleKeyring([testAccount.key]);
97-
const accounts = await newKeyring.getAccounts();
97+
const accounts = newKeyring.getAccounts();
9898
expect(accounts).toStrictEqual([testAccount.address]);
9999
});
100100
});
@@ -181,7 +181,7 @@ describe('simple-keyring', function () {
181181
const msgHashHex = bytesToHex(keccak256(Buffer.from(localMessage)));
182182

183183
await keyring.addAccounts(9);
184-
const addresses = await keyring.getAccounts();
184+
const addresses = keyring.getAccounts();
185185
const signatures = await Promise.all(
186186
addresses.map(async (accountAddress: Hex) => {
187187
return await keyring.signMessage(accountAddress, msgHashHex);
@@ -261,7 +261,7 @@ describe('simple-keyring', function () {
261261
// Push a mock wallet
262262
await keyring.deserialize([testAccount.key]);
263263

264-
const output = await keyring.getAccounts();
264+
const output = keyring.getAccounts();
265265
expect(output).toHaveLength(1);
266266
expect(output[0]).toBe(testAccount.address);
267267
});
@@ -271,10 +271,10 @@ describe('simple-keyring', function () {
271271
describe('if the account exists', function () {
272272
it('should remove that account', async function () {
273273
await keyring.addAccounts();
274-
const address = (await keyring.getAccounts())[0];
274+
const address = keyring.getAccounts()[0];
275275
assert(address, 'address is undefined');
276276
keyring.removeAccount(address);
277-
const addressesAfterRemoval = await keyring.getAccounts();
277+
const addressesAfterRemoval = keyring.getAccounts();
278278
expect(addressesAfterRemoval).toHaveLength(0);
279279
});
280280
});
@@ -503,7 +503,7 @@ describe('simple-keyring', function () {
503503
};
504504

505505
await keyring.deserialize([privKeyHex]);
506-
const address = (await keyring.getAccounts())[0];
506+
const address = keyring.getAccounts()[0];
507507
assert(address, 'address is undefined');
508508
const signature = await keyring.signTypedData(address, typedData, {
509509
version: SignTypedDataVersion.V3,
@@ -723,7 +723,7 @@ describe('simple-keyring', function () {
723723

724724
await keyring.deserialize([privKeyHex]);
725725

726-
const address = (await keyring.getAccounts())[0];
726+
const address = keyring.getAccounts()[0];
727727
assert(address, 'address is undefined');
728728
const signature = await keyring.signTypedData(address, typedData, {
729729
version: SignTypedDataVersion.V4,

packages/keyring-eth-simple/src/simple-keyring.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ export default class SimpleKeyring implements Keyring {
8888
return hexWallets;
8989
}
9090

91-
async getAccounts(): Promise<Hex[]> {
91+
getAccounts(): Hex[] {
9292
return this.#wallets.map(({ publicKey }) =>
9393
add0x(bytesToHex(publicToAddress(publicKey))),
9494
);

0 commit comments

Comments
 (0)