@metamask-previews/keyring-controller 19.0.2-preview-e218ba33 → 19.0.2-preview-9e831370

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.
@@ -36,7 +36,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
36
36
  var __importDefault = (this && this.__importDefault) || function (mod) {
37
37
  return (mod && mod.__esModule) ? mod : { "default": mod };
38
38
  };
39
- var _KeyringController_instances, _KeyringController_controllerOperationMutex, _KeyringController_vaultOperationMutex, _KeyringController_keyringBuilders, _KeyringController_keyrings, _KeyringController_unsupportedKeyrings, _KeyringController_password, _KeyringController_encryptor, _KeyringController_cacheEncryptionKey, _KeyringController_qrKeyringStateListener, _KeyringController_registerMessageHandlers, _KeyringController_getKeyringBuilderForType, _KeyringController_addQRKeyring, _KeyringController_subscribeToQRKeyringEvents, _KeyringController_unsubscribeFromQRKeyringsEvents, _KeyringController_createNewVaultWithKeyring, _KeyringController_verifySeedPhrase, _KeyringController_getUpdatedKeyrings, _KeyringController_getSerializedKeyrings, _KeyringController_restoreSerializedKeyrings, _KeyringController_unlockKeyrings, _KeyringController_updateVault, _KeyringController_getAccountsFromKeyrings, _KeyringController_createKeyringWithFirstAccount, _KeyringController_newKeyring, _KeyringController_clearKeyrings, _KeyringController_restoreKeyring, _KeyringController_destroyKeyring, _KeyringController_removeEmptyKeyrings, _KeyringController_checkForDuplicate, _KeyringController_setUnlocked, _KeyringController_persistOrRollback, _KeyringController_withRollback, _KeyringController_assertControllerMutexIsLocked, _KeyringController_withControllerLock, _KeyringController_withVaultLock;
39
+ var _KeyringController_instances, _KeyringController_controllerOperationMutex, _KeyringController_vaultOperationMutex, _KeyringController_keyringBuilders, _KeyringController_keyrings, _KeyringController_unsupportedKeyrings, _KeyringController_password, _KeyringController_encryptor, _KeyringController_cacheEncryptionKey, _KeyringController_qrKeyringStateListener, _KeyringController_registerMessageHandlers, _KeyringController_getKeyringBuilderForType, _KeyringController_addQRKeyring, _KeyringController_subscribeToQRKeyringEvents, _KeyringController_unsubscribeFromQRKeyringsEvents, _KeyringController_createNewVaultWithKeyring, _KeyringController_getUpdatedKeyrings, _KeyringController_getSerializedKeyrings, _KeyringController_restoreSerializedKeyrings, _KeyringController_unlockKeyrings, _KeyringController_updateVault, _KeyringController_getAccountsFromKeyrings, _KeyringController_createKeyringWithFirstAccount, _KeyringController_newKeyring, _KeyringController_clearKeyrings, _KeyringController_restoreKeyring, _KeyringController_destroyKeyring, _KeyringController_removeEmptyKeyrings, _KeyringController_checkForDuplicate, _KeyringController_setUnlocked, _KeyringController_persistOrRollback, _KeyringController_withRollback, _KeyringController_assertControllerMutexIsLocked, _KeyringController_withControllerLock, _KeyringController_withVaultLock;
40
40
  Object.defineProperty(exports, "__esModule", { value: true });
41
41
  exports.KeyringController = exports.getDefaultKeyringState = exports.keyringBuilderFactory = exports.SignTypedDataVersion = exports.AccountImportStrategy = exports.isCustodyKeyring = exports.KeyringTypes = void 0;
42
42
  const util_1 = require("@ethereumjs/util");
@@ -322,7 +322,7 @@ class KeyringController extends base_controller_1.BaseController {
322
322
  return existingAccount;
323
323
  }
324
324
  const [addedAccountAddress] = await primaryKeyring.addAccounts(1);
325
- await __classPrivateFieldGet(this, _KeyringController_instances, "m", _KeyringController_verifySeedPhrase).call(this);
325
+ await this.verifySeedPhrase();
326
326
  return addedAccountAddress;
327
327
  });
328
328
  }
@@ -840,7 +840,39 @@ class KeyringController extends base_controller_1.BaseController {
840
840
  * @returns Promise resolving to the seed phrase as Uint8Array.
841
841
  */
842
842
  async verifySeedPhrase() {
843
- return __classPrivateFieldGet(this, _KeyringController_instances, "m", _KeyringController_withControllerLock).call(this, async () => __classPrivateFieldGet(this, _KeyringController_instances, "m", _KeyringController_verifySeedPhrase).call(this));
843
+ const primaryKeyring = this.getKeyringsByType(KeyringTypes.hd)[0];
844
+ if (!primaryKeyring) {
845
+ throw new Error('No HD keyring found.');
846
+ }
847
+ assertHasUint8ArrayMnemonic(primaryKeyring);
848
+ const seedWords = primaryKeyring.mnemonic;
849
+ const accounts = await primaryKeyring.getAccounts();
850
+ /* istanbul ignore if */
851
+ if (accounts.length === 0) {
852
+ throw new Error('Cannot verify an empty keyring.');
853
+ }
854
+ // The HD Keyring Builder is a default keyring builder
855
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
856
+ const hdKeyringBuilder = __classPrivateFieldGet(this, _KeyringController_instances, "m", _KeyringController_getKeyringBuilderForType).call(this, KeyringTypes.hd);
857
+ const hdKeyring = hdKeyringBuilder();
858
+ // @ts-expect-error @metamask/eth-hd-keyring correctly handles
859
+ // Uint8Array seed phrases in the `deserialize` method.
860
+ await hdKeyring.deserialize({
861
+ mnemonic: seedWords,
862
+ numberOfAccounts: accounts.length,
863
+ });
864
+ const testAccounts = await hdKeyring.getAccounts();
865
+ /* istanbul ignore if */
866
+ if (testAccounts.length !== accounts.length) {
867
+ throw new Error('Seed phrase imported incorrect number of accounts.');
868
+ }
869
+ testAccounts.forEach((account, i) => {
870
+ /* istanbul ignore if */
871
+ if (account.toLowerCase() !== accounts[i].toLowerCase()) {
872
+ throw new Error('Seed phrase imported different accounts.');
873
+ }
874
+ });
875
+ return seedWords;
844
876
  }
845
877
  async withKeyring(selector, operation, options = {
846
878
  createIfMissing: false,
@@ -1124,47 +1156,6 @@ async function _KeyringController_createNewVaultWithKeyring(password, keyring) {
1124
1156
  await __classPrivateFieldGet(this, _KeyringController_instances, "m", _KeyringController_clearKeyrings).call(this);
1125
1157
  await __classPrivateFieldGet(this, _KeyringController_instances, "m", _KeyringController_createKeyringWithFirstAccount).call(this, keyring.type, keyring.opts);
1126
1158
  __classPrivateFieldGet(this, _KeyringController_instances, "m", _KeyringController_setUnlocked).call(this);
1127
- }, _KeyringController_verifySeedPhrase =
1128
- /**
1129
- * Internal non-exclusive method to verify the seed phrase.
1130
- *
1131
- * @returns A promise resolving to the seed phrase as Uint8Array.
1132
- */
1133
- async function _KeyringController_verifySeedPhrase() {
1134
- __classPrivateFieldGet(this, _KeyringController_instances, "m", _KeyringController_assertControllerMutexIsLocked).call(this);
1135
- const primaryKeyring = this.getKeyringsByType(KeyringTypes.hd)[0];
1136
- if (!primaryKeyring) {
1137
- throw new Error('No HD keyring found.');
1138
- }
1139
- assertHasUint8ArrayMnemonic(primaryKeyring);
1140
- const seedWords = primaryKeyring.mnemonic;
1141
- const accounts = await primaryKeyring.getAccounts();
1142
- /* istanbul ignore if */
1143
- if (accounts.length === 0) {
1144
- throw new Error('Cannot verify an empty keyring.');
1145
- }
1146
- // The HD Keyring Builder is a default keyring builder
1147
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
1148
- const hdKeyringBuilder = __classPrivateFieldGet(this, _KeyringController_instances, "m", _KeyringController_getKeyringBuilderForType).call(this, KeyringTypes.hd);
1149
- const hdKeyring = hdKeyringBuilder();
1150
- // @ts-expect-error @metamask/eth-hd-keyring correctly handles
1151
- // Uint8Array seed phrases in the `deserialize` method.
1152
- await hdKeyring.deserialize({
1153
- mnemonic: seedWords,
1154
- numberOfAccounts: accounts.length,
1155
- });
1156
- const testAccounts = await hdKeyring.getAccounts();
1157
- /* istanbul ignore if */
1158
- if (testAccounts.length !== accounts.length) {
1159
- throw new Error('Seed phrase imported incorrect number of accounts.');
1160
- }
1161
- testAccounts.forEach((account, i) => {
1162
- /* istanbul ignore if */
1163
- if (account.toLowerCase() !== accounts[i].toLowerCase()) {
1164
- throw new Error('Seed phrase imported different accounts.');
1165
- }
1166
- });
1167
- return seedWords;
1168
1159
  }, _KeyringController_getUpdatedKeyrings =
1169
1160
  /**
1170
1161
  * Get the updated array of each keyring's type and