@metamask-previews/seedless-onboarding-controller 3.0.0-preview-c2598d9e → 3.0.0-preview-974a6a01

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/CHANGELOG.md CHANGED
@@ -7,20 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
- ### Added
11
-
12
- - Added `renewRefreshToken` options in SeedlessOnboardingController constructor - A function to renew the refresh token and get new revoke token. ([#6275](https://github.com/MetaMask/core/pull/6275))
13
- - Added `renewRefreshToken` method to renew refresh token from client ([#6275](https://github.com/MetaMask/core/pull/6275))
14
- - Added `revokePendingRefreshTokens` method to revoke all pending old refresh tokens instead from client ([#6275](https://github.com/MetaMask/core/pull/6275))
15
-
16
10
  ### Changed
17
11
 
18
12
  - Bump `@metamask/base-controller` from `^8.1.0` to `^8.2.0` ([#6355](https://github.com/MetaMask/core/pull/6355))
19
13
 
20
- ### Removed
21
-
22
- - Removed `revokeRefreshToken` method ([#6275](https://github.com/MetaMask/core/pull/6275))
23
-
24
14
  ## [3.0.0]
25
15
 
26
16
  ### Changed
@@ -10,7 +10,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
10
10
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
11
11
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
12
  };
13
- var _SeedlessOnboardingController_instances, _SeedlessOnboardingController_vaultEncryptor, _SeedlessOnboardingController_controllerOperationMutex, _SeedlessOnboardingController_vaultOperationMutex, _SeedlessOnboardingController_refreshJWTToken, _SeedlessOnboardingController_revokeRefreshToken, _SeedlessOnboardingController_renewRefreshToken, _SeedlessOnboardingController_passwordOutdatedCacheTTL, _SeedlessOnboardingController_isUnlocked, _SeedlessOnboardingController_cachedDecryptedVaultData, _SeedlessOnboardingController_submitGlobalPassword, _SeedlessOnboardingController_getAccessToken, _SeedlessOnboardingController_setUnlocked, _SeedlessOnboardingController_persistOprfKey, _SeedlessOnboardingController_persistAuthPubKey, _SeedlessOnboardingController_storeKeyringEncryptionKey, _SeedlessOnboardingController_loadKeyringEncryptionKey, _SeedlessOnboardingController_loadSeedlessEncryptionKey, _SeedlessOnboardingController_recoverAuthPubKey, _SeedlessOnboardingController_recoverEncKey, _SeedlessOnboardingController_fetchAllSecretDataFromMetadataStore, _SeedlessOnboardingController_changeEncryptionKey, _SeedlessOnboardingController_encryptAndStoreSecretData, _SeedlessOnboardingController_unlockVaultAndGetVaultData, _SeedlessOnboardingController_decryptAndParseVaultData, _SeedlessOnboardingController_withPersistedSecretMetadataBackupsState, _SeedlessOnboardingController_filterDupesAndUpdateSocialBackupsMetadata, _SeedlessOnboardingController_createNewVaultWithAuthData, _SeedlessOnboardingController_updateVault, _SeedlessOnboardingController_withControllerLock, _SeedlessOnboardingController_withVaultLock, _SeedlessOnboardingController_parseVaultData, _SeedlessOnboardingController_assertIsUnlocked, _SeedlessOnboardingController_assertIsAuthenticatedUser, _SeedlessOnboardingController_assertIsSRPBackedUpUser, _SeedlessOnboardingController_assertPasswordInSync, _SeedlessOnboardingController_resetPasswordOutdatedCache, _SeedlessOnboardingController_addRefreshTokenToRevokeList, _SeedlessOnboardingController_isTokenExpiredError, _SeedlessOnboardingController_isMaxKeyChainLengthError, _SeedlessOnboardingController_executeWithTokenRefresh;
13
+ var _SeedlessOnboardingController_instances, _SeedlessOnboardingController_vaultEncryptor, _SeedlessOnboardingController_controllerOperationMutex, _SeedlessOnboardingController_vaultOperationMutex, _SeedlessOnboardingController_refreshJWTToken, _SeedlessOnboardingController_revokeRefreshToken, _SeedlessOnboardingController_passwordOutdatedCacheTTL, _SeedlessOnboardingController_isUnlocked, _SeedlessOnboardingController_cachedDecryptedVaultData, _SeedlessOnboardingController_submitGlobalPassword, _SeedlessOnboardingController_getAccessToken, _SeedlessOnboardingController_setUnlocked, _SeedlessOnboardingController_persistOprfKey, _SeedlessOnboardingController_persistAuthPubKey, _SeedlessOnboardingController_storeKeyringEncryptionKey, _SeedlessOnboardingController_loadKeyringEncryptionKey, _SeedlessOnboardingController_loadSeedlessEncryptionKey, _SeedlessOnboardingController_recoverAuthPubKey, _SeedlessOnboardingController_recoverEncKey, _SeedlessOnboardingController_fetchAllSecretDataFromMetadataStore, _SeedlessOnboardingController_changeEncryptionKey, _SeedlessOnboardingController_encryptAndStoreSecretData, _SeedlessOnboardingController_unlockVaultAndGetVaultData, _SeedlessOnboardingController_decryptAndParseVaultData, _SeedlessOnboardingController_withPersistedSecretMetadataBackupsState, _SeedlessOnboardingController_filterDupesAndUpdateSocialBackupsMetadata, _SeedlessOnboardingController_createNewVaultWithAuthData, _SeedlessOnboardingController_updateVault, _SeedlessOnboardingController_withControllerLock, _SeedlessOnboardingController_withVaultLock, _SeedlessOnboardingController_parseVaultData, _SeedlessOnboardingController_assertIsUnlocked, _SeedlessOnboardingController_assertIsAuthenticatedUser, _SeedlessOnboardingController_assertIsSRPBackedUpUser, _SeedlessOnboardingController_assertPasswordInSync, _SeedlessOnboardingController_resetPasswordOutdatedCache, _SeedlessOnboardingController_isTokenExpiredError, _SeedlessOnboardingController_isMaxKeyChainLengthError, _SeedlessOnboardingController_executeWithTokenRefresh;
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.SeedlessOnboardingController = exports.getInitialSeedlessOnboardingControllerStateWithDefaults = void 0;
16
16
  const auth_network_utils_1 = require("@metamask/auth-network-utils");
@@ -116,10 +116,6 @@ const seedlessOnboardingMetadata = {
116
116
  persist: false,
117
117
  anonymous: false,
118
118
  },
119
- pendingToBeRevokedTokens: {
120
- persist: true,
121
- anonymous: false,
122
- },
123
119
  // stays in vault
124
120
  accessToken: {
125
121
  persist: false,
@@ -156,10 +152,9 @@ class SeedlessOnboardingController extends base_controller_1.BaseController {
156
152
  * @param options.network - The network to be used for the Seedless Onboarding flow.
157
153
  * @param options.refreshJWTToken - A function to get a new jwt token using refresh token.
158
154
  * @param options.revokeRefreshToken - A function to revoke the refresh token.
159
- * @param options.renewRefreshToken - A function to renew the refresh token and get new revoke token.
160
155
  * @param options.passwordOutdatedCacheTTL - The TTL of the password outdated cache in milliseconds.,
161
156
  */
162
- constructor({ messenger, state, encryptor, toprfKeyDeriver, network = constants_1.Web3AuthNetwork.Mainnet, refreshJWTToken, revokeRefreshToken, renewRefreshToken, passwordOutdatedCacheTTL = constants_1.PASSWORD_OUTDATED_CACHE_TTL_MS, }) {
157
+ constructor({ messenger, state, encryptor, toprfKeyDeriver, network = constants_1.Web3AuthNetwork.Mainnet, refreshJWTToken, revokeRefreshToken, passwordOutdatedCacheTTL = constants_1.PASSWORD_OUTDATED_CACHE_TTL_MS, }) {
163
158
  super({
164
159
  name: constants_1.controllerName,
165
160
  metadata: seedlessOnboardingMetadata,
@@ -172,7 +167,6 @@ class SeedlessOnboardingController extends base_controller_1.BaseController {
172
167
  _SeedlessOnboardingController_vaultOperationMutex.set(this, new async_mutex_1.Mutex());
173
168
  _SeedlessOnboardingController_refreshJWTToken.set(this, void 0);
174
169
  _SeedlessOnboardingController_revokeRefreshToken.set(this, void 0);
175
- _SeedlessOnboardingController_renewRefreshToken.set(this, void 0);
176
170
  /**
177
171
  * The TTL of the password outdated cache in milliseconds.
178
172
  */
@@ -199,7 +193,6 @@ class SeedlessOnboardingController extends base_controller_1.BaseController {
199
193
  });
200
194
  __classPrivateFieldSet(this, _SeedlessOnboardingController_refreshJWTToken, refreshJWTToken, "f");
201
195
  __classPrivateFieldSet(this, _SeedlessOnboardingController_revokeRefreshToken, revokeRefreshToken, "f");
202
- __classPrivateFieldSet(this, _SeedlessOnboardingController_renewRefreshToken, renewRefreshToken, "f");
203
196
  // setup subscriptions to the keyring lock event
204
197
  // when the keyring is locked (wallet is locked), the controller will be cleared of its credentials
205
198
  this.messagingSystem.subscribe('KeyringController:lock', () => {
@@ -703,17 +696,17 @@ class SeedlessOnboardingController extends base_controller_1.BaseController {
703
696
  }
704
697
  }
705
698
  /**
706
- * Renew the refresh token - get new refresh token and new revoke token
699
+ * Revoke the refresh token and get new refresh token and new revoke token
707
700
  * and also updates the vault with the new revoke token.
708
701
  * This method is to be called after user is authenticated.
709
702
  *
710
703
  * @param password - The password to encrypt the vault.
711
704
  * @returns A Promise that resolves to void.
712
705
  */
713
- async renewRefreshToken(password) {
706
+ async revokeRefreshToken(password) {
714
707
  return await __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_withControllerLock).call(this, async () => {
715
708
  __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_assertIsAuthenticatedUser).call(this, this.state);
716
- const { refreshToken, vaultEncryptionKey } = this.state;
709
+ const { vaultEncryptionKey } = this.state;
717
710
  const { toprfEncryptionKey: rawToprfEncryptionKey, toprfPwEncryptionKey: rawToprfPwEncryptionKey, toprfAuthKeyPair: rawToprfAuthKeyPair, revokeToken, } = await __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_unlockVaultAndGetVaultData).call(this, {
718
711
  password,
719
712
  encryptionKey: vaultEncryptionKey,
@@ -721,7 +714,7 @@ class SeedlessOnboardingController extends base_controller_1.BaseController {
721
714
  if (!revokeToken) {
722
715
  throw new Error(constants_1.SeedlessOnboardingControllerErrorMessage.InvalidRevokeToken);
723
716
  }
724
- const { newRevokeToken, newRefreshToken } = await __classPrivateFieldGet(this, _SeedlessOnboardingController_renewRefreshToken, "f").call(this, {
717
+ const { newRevokeToken, newRefreshToken } = await __classPrivateFieldGet(this, _SeedlessOnboardingController_revokeRefreshToken, "f").call(this, {
725
718
  connection: this.state.authConnection,
726
719
  revokeToken,
727
720
  });
@@ -732,11 +725,6 @@ class SeedlessOnboardingController extends base_controller_1.BaseController {
732
725
  // set new refresh token to persist in state
733
726
  state.refreshToken = newRefreshToken;
734
727
  });
735
- // add the old refresh token to the list to be revoked later when possible
736
- __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_addRefreshTokenToRevokeList).call(this, {
737
- refreshToken,
738
- revokeToken,
739
- });
740
728
  await __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_createNewVaultWithAuthData).call(this, {
741
729
  password,
742
730
  rawToprfEncryptionKey,
@@ -746,49 +734,6 @@ class SeedlessOnboardingController extends base_controller_1.BaseController {
746
734
  }
747
735
  });
748
736
  }
749
- /**
750
- * Revoke all pending refresh tokens.
751
- *
752
- * This method is to be called after user is authenticated.
753
- *
754
- * @returns A Promise that resolves to void.
755
- */
756
- async revokePendingRefreshTokens() {
757
- return await __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_withControllerLock).call(this, async () => {
758
- __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_assertIsAuthenticatedUser).call(this, this.state);
759
- const { pendingToBeRevokedTokens } = this.state;
760
- if (!pendingToBeRevokedTokens || pendingToBeRevokedTokens.length === 0) {
761
- return;
762
- }
763
- // revoke all pending refresh tokens in parallel
764
- const promises = pendingToBeRevokedTokens.map(({ revokeToken }) => {
765
- const revokePromise = async () => {
766
- try {
767
- await __classPrivateFieldGet(this, _SeedlessOnboardingController_revokeRefreshToken, "f").call(this, {
768
- connection: this.state.authConnection,
769
- revokeToken,
770
- });
771
- return revokeToken;
772
- }
773
- catch (error) {
774
- log('Error revoking refresh token', error);
775
- return null;
776
- }
777
- };
778
- return revokePromise();
779
- });
780
- const result = await Promise.all(promises); // no need to do Promise.allSettled because the promise already handle try catch
781
- // filter out the null values
782
- const revokedTokens = result.filter((token) => token !== null);
783
- if (revokedTokens.length > 0) {
784
- // update the state to remove the revoked tokens once all concurrent token revoke finish
785
- this.update((state) => {
786
- state.pendingToBeRevokedTokens =
787
- state.pendingToBeRevokedTokens?.filter((token) => !revokedTokens.includes(token.revokeToken));
788
- });
789
- }
790
- });
791
- }
792
737
  /**
793
738
  * Check if the current node auth token is expired.
794
739
  *
@@ -843,7 +788,7 @@ class SeedlessOnboardingController extends base_controller_1.BaseController {
843
788
  }
844
789
  }
845
790
  exports.SeedlessOnboardingController = SeedlessOnboardingController;
846
- _SeedlessOnboardingController_vaultEncryptor = new WeakMap(), _SeedlessOnboardingController_controllerOperationMutex = new WeakMap(), _SeedlessOnboardingController_vaultOperationMutex = new WeakMap(), _SeedlessOnboardingController_refreshJWTToken = new WeakMap(), _SeedlessOnboardingController_revokeRefreshToken = new WeakMap(), _SeedlessOnboardingController_renewRefreshToken = new WeakMap(), _SeedlessOnboardingController_passwordOutdatedCacheTTL = new WeakMap(), _SeedlessOnboardingController_isUnlocked = new WeakMap(), _SeedlessOnboardingController_cachedDecryptedVaultData = new WeakMap(), _SeedlessOnboardingController_instances = new WeakSet(), _SeedlessOnboardingController_submitGlobalPassword =
791
+ _SeedlessOnboardingController_vaultEncryptor = new WeakMap(), _SeedlessOnboardingController_controllerOperationMutex = new WeakMap(), _SeedlessOnboardingController_vaultOperationMutex = new WeakMap(), _SeedlessOnboardingController_refreshJWTToken = new WeakMap(), _SeedlessOnboardingController_revokeRefreshToken = new WeakMap(), _SeedlessOnboardingController_passwordOutdatedCacheTTL = new WeakMap(), _SeedlessOnboardingController_isUnlocked = new WeakMap(), _SeedlessOnboardingController_cachedDecryptedVaultData = new WeakMap(), _SeedlessOnboardingController_instances = new WeakSet(), _SeedlessOnboardingController_submitGlobalPassword =
847
792
  /**
848
793
  * @description Submit the global password to the controller, verify the
849
794
  * password validity and unlock the controller.
@@ -1433,13 +1378,6 @@ async function _SeedlessOnboardingController_assertPasswordInSync(options) {
1433
1378
  this.update((state) => {
1434
1379
  delete state.passwordOutdatedCache;
1435
1380
  });
1436
- }, _SeedlessOnboardingController_addRefreshTokenToRevokeList = function _SeedlessOnboardingController_addRefreshTokenToRevokeList({ refreshToken, revokeToken, }) {
1437
- this.update((state) => {
1438
- state.pendingToBeRevokedTokens = [
1439
- ...(state.pendingToBeRevokedTokens || []),
1440
- { refreshToken, revokeToken },
1441
- ];
1442
- });
1443
1381
  }, _SeedlessOnboardingController_isTokenExpiredError = function _SeedlessOnboardingController_isTokenExpiredError(error) {
1444
1382
  if (error instanceof toprf_secure_backup_1.TOPRFError) {
1445
1383
  // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison