@metamask-previews/account-tree-controller 7.5.3-preview-ea5e7f6d0 → 7.5.3-preview-34f2bcbf7
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 +10 -1
- package/dist/AccountTreeController.cjs +40 -13
- package/dist/AccountTreeController.cjs.map +1 -1
- package/dist/AccountTreeController.d.cts +0 -6
- package/dist/AccountTreeController.d.cts.map +1 -1
- package/dist/AccountTreeController.d.mts +0 -6
- package/dist/AccountTreeController.d.mts.map +1 -1
- package/dist/AccountTreeController.mjs +42 -15
- package/dist/AccountTreeController.mjs.map +1 -1
- package/dist/backup-and-sync/service/index.cjs +25 -5
- package/dist/backup-and-sync/service/index.cjs.map +1 -1
- package/dist/backup-and-sync/service/index.d.cts.map +1 -1
- package/dist/backup-and-sync/service/index.d.mts.map +1 -1
- package/dist/backup-and-sync/service/index.mjs +25 -5
- package/dist/backup-and-sync/service/index.mjs.map +1 -1
- package/dist/backup-and-sync/syncing/group.cjs +1 -0
- package/dist/backup-and-sync/syncing/group.cjs.map +1 -1
- package/dist/backup-and-sync/syncing/group.d.cts.map +1 -1
- package/dist/backup-and-sync/syncing/group.d.mts.map +1 -1
- package/dist/backup-and-sync/syncing/group.mjs +1 -0
- package/dist/backup-and-sync/syncing/group.mjs.map +1 -1
- package/dist/backup-and-sync/syncing/legacy.cjs +1 -0
- package/dist/backup-and-sync/syncing/legacy.cjs.map +1 -1
- package/dist/backup-and-sync/syncing/legacy.d.cts.map +1 -1
- package/dist/backup-and-sync/syncing/legacy.d.mts.map +1 -1
- package/dist/backup-and-sync/syncing/legacy.mjs +1 -0
- package/dist/backup-and-sync/syncing/legacy.mjs.map +1 -1
- package/dist/backup-and-sync/syncing/metadata.cjs +1 -0
- package/dist/backup-and-sync/syncing/metadata.cjs.map +1 -1
- package/dist/backup-and-sync/syncing/metadata.d.cts.map +1 -1
- package/dist/backup-and-sync/syncing/metadata.d.mts.map +1 -1
- package/dist/backup-and-sync/syncing/metadata.mjs +1 -0
- package/dist/backup-and-sync/syncing/metadata.mjs.map +1 -1
- package/dist/backup-and-sync/types.cjs.map +1 -1
- package/dist/backup-and-sync/types.d.cts +22 -0
- package/dist/backup-and-sync/types.d.cts.map +1 -1
- package/dist/backup-and-sync/types.d.mts +22 -0
- package/dist/backup-and-sync/types.d.mts.map +1 -1
- package/dist/backup-and-sync/types.mjs.map +1 -1
- package/dist/backup-and-sync/user-storage/network-operations.cjs +9 -3
- package/dist/backup-and-sync/user-storage/network-operations.cjs.map +1 -1
- package/dist/backup-and-sync/user-storage/network-operations.d.cts.map +1 -1
- package/dist/backup-and-sync/user-storage/network-operations.d.mts.map +1 -1
- package/dist/backup-and-sync/user-storage/network-operations.mjs +9 -3
- package/dist/backup-and-sync/user-storage/network-operations.mjs.map +1 -1
- package/dist/backup-and-sync/utils/index.cjs +3 -1
- package/dist/backup-and-sync/utils/index.cjs.map +1 -1
- package/dist/backup-and-sync/utils/index.d.cts +1 -0
- package/dist/backup-and-sync/utils/index.d.cts.map +1 -1
- package/dist/backup-and-sync/utils/index.d.mts +1 -0
- package/dist/backup-and-sync/utils/index.d.mts.map +1 -1
- package/dist/backup-and-sync/utils/index.mjs +1 -0
- package/dist/backup-and-sync/utils/index.mjs.map +1 -1
- package/dist/backup-and-sync/utils/mutation-tracker.cjs +29 -0
- package/dist/backup-and-sync/utils/mutation-tracker.cjs.map +1 -0
- package/dist/backup-and-sync/utils/mutation-tracker.d.cts +9 -0
- package/dist/backup-and-sync/utils/mutation-tracker.d.cts.map +1 -0
- package/dist/backup-and-sync/utils/mutation-tracker.d.mts +9 -0
- package/dist/backup-and-sync/utils/mutation-tracker.d.mts.map +1 -0
- package/dist/backup-and-sync/utils/mutation-tracker.mjs +25 -0
- package/dist/backup-and-sync/utils/mutation-tracker.mjs.map +1 -0
- package/dist/group.cjs +16 -1
- package/dist/group.cjs.map +1 -1
- package/dist/group.d.cts +19 -2
- package/dist/group.d.cts.map +1 -1
- package/dist/group.d.mts +19 -2
- package/dist/group.d.mts.map +1 -1
- package/dist/group.mjs +14 -0
- package/dist/group.mjs.map +1 -1
- package/dist/index.cjs +4 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -1
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +2 -1
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +2 -1
- package/dist/index.mjs.map +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +4 -4
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +4 -4
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs.map +1 -1
- package/dist/wallet.cjs +16 -0
- package/dist/wallet.cjs.map +1 -1
- package/dist/wallet.d.cts +17 -2
- package/dist/wallet.d.cts.map +1 -1
- package/dist/wallet.d.mts +17 -2
- package/dist/wallet.d.mts.map +1 -1
- package/dist/wallet.mjs +14 -1
- package/dist/wallet.mjs.map +1 -1
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -7,10 +7,19 @@ 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
|
+
- **BREAKING:** Expose `status` on `AccountGroupMultichainAccountObject` ([#9104](https://github.com/MetaMask/core/pull/9104))
|
|
13
|
+
- The controller now requires the new event `MultichainAccountService:groupStatusChange`.
|
|
14
|
+
- The field reflects `MultichainAccountGroupStatus` and is kept in sync via the new `MultichainAccountService:groupStatusChange` event subscription.
|
|
15
|
+
|
|
10
16
|
### Changed
|
|
11
17
|
|
|
12
|
-
-
|
|
18
|
+
- The `Multichain Account Syncing - Full` trace is now only emitted when a backup-and-sync run actually mutates local or remote state (rolled-back local changes do not count) ([#9343](https://github.com/MetaMask/core/pull/9343))
|
|
19
|
+
- Bump `@metamask/keyring-api` from `^23.1.0` to `^23.5.0` ([#9249](https://github.com/MetaMask/core/pull/9249), [#9390](https://github.com/MetaMask/core/pull/9390))
|
|
13
20
|
- Bump `@metamask/multichain-account-service` from `^11.0.0` to `^11.1.0` ([#9264](https://github.com/MetaMask/core/pull/9264))
|
|
21
|
+
- Bump `@metamask/accounts-controller` from `^39.0.3` to `^39.0.4` ([#9349](https://github.com/MetaMask/core/pull/9349))
|
|
22
|
+
- Bump `@metamask/messenger` from `^1.2.0` to `^2.0.0` ([#9392](https://github.com/MetaMask/core/pull/9392))
|
|
14
23
|
|
|
15
24
|
## [7.5.3]
|
|
16
25
|
|
|
@@ -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 _AccountTreeController_instances, _AccountTreeController_accountIdToContext, _AccountTreeController_groupIdToWalletId, _AccountTreeController_backupAndSyncService, _AccountTreeController_rules, _AccountTreeController_trace, _AccountTreeController_backupAndSyncConfig, _AccountTreeController_accountOrderCallbacks, _AccountTreeController_initialized, _AccountTreeController_initTreeContext, _AccountTreeController_getEntropyRule, _AccountTreeController_getSnapRule, _AccountTreeController_getKeyringRule, _AccountTreeController_applyAccountWalletMetadata, _AccountTreeController_getRuleForWallet, _AccountTreeController_getComputedAccountGroupName, _AccountTreeController_getDefaultAccountGroupName, _AccountTreeController_applyAccountGroupMetadata, _AccountTreeController_handleAccountsAdded, _AccountTreeController_handleAccountsRemoved, _AccountTreeController_pruneEmptyGroupAndWallet, _AccountTreeController_publishAccountGroupCreated, _AccountTreeController_publishAccountGroupUpdated, _AccountTreeController_publishAccountGroupRemoved, _AccountTreeController_insert, _AccountTreeController_listAccounts, _AccountTreeController_assertAccountGroupExists, _AccountTreeController_assertAccountWalletExists, _AccountTreeController_assertAccountGroupNameIsUnique, _AccountTreeController_setSelectedAccountGroup, _AccountTreeController_getDefaultSelectedAccountGroup, _AccountTreeController_handleSelectedAccountChange, _AccountTreeController_handleMultichainAccountWalletStatusChange, _AccountTreeController_getAccountGroup, _AccountTreeController_getDefaultAccountFromAccountGroupId, _AccountTreeController_getDefaultAccountGroupId, _AccountTreeController_hasEvmAccount, _AccountTreeController_resolveNameConflict, _AccountTreeController_createBackupAndSyncContext;
|
|
13
|
+
var _AccountTreeController_instances, _AccountTreeController_accountIdToContext, _AccountTreeController_groupIdToWalletId, _AccountTreeController_backupAndSyncService, _AccountTreeController_rules, _AccountTreeController_trace, _AccountTreeController_backupAndSyncConfig, _AccountTreeController_accountOrderCallbacks, _AccountTreeController_initialized, _AccountTreeController_initTreeContext, _AccountTreeController_getEntropyRule, _AccountTreeController_getSnapRule, _AccountTreeController_getKeyringRule, _AccountTreeController_applyAccountWalletMetadata, _AccountTreeController_getRuleForWallet, _AccountTreeController_getComputedAccountGroupName, _AccountTreeController_getDefaultAccountGroupName, _AccountTreeController_applyAccountGroupMetadata, _AccountTreeController_handleAccountsAdded, _AccountTreeController_handleAccountsRemoved, _AccountTreeController_pruneEmptyGroupAndWallet, _AccountTreeController_publishAccountGroupCreated, _AccountTreeController_publishAccountGroupUpdated, _AccountTreeController_publishAccountGroupRemoved, _AccountTreeController_insert, _AccountTreeController_listAccounts, _AccountTreeController_assertAccountGroupExists, _AccountTreeController_assertAccountWalletExists, _AccountTreeController_assertAccountGroupNameIsUnique, _AccountTreeController_setSelectedAccountGroup, _AccountTreeController_getDefaultSelectedAccountGroup, _AccountTreeController_handleSelectedAccountChange, _AccountTreeController_handleMultichainAccountWalletStatusChange, _AccountTreeController_handleMultichainAccountGroupStatusChange, _AccountTreeController_getMultichainAccountWalletStatus, _AccountTreeController_getMultichainAccountGroupStatus, _AccountTreeController_getAccountGroup, _AccountTreeController_getDefaultAccountFromAccountGroupId, _AccountTreeController_getDefaultAccountGroupId, _AccountTreeController_hasEvmAccount, _AccountTreeController_resolveNameConflict, _AccountTreeController_createBackupAndSyncContext;
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.AccountTreeController = exports.getDefaultAccountTreeControllerState = exports.controllerName = void 0;
|
|
16
16
|
const account_api_1 = require("@metamask/account-api");
|
|
@@ -19,11 +19,13 @@ const keyring_api_1 = require("@metamask/keyring-api");
|
|
|
19
19
|
const utils_1 = require("@metamask/utils");
|
|
20
20
|
const analytics_1 = require("./backup-and-sync/analytics/index.cjs");
|
|
21
21
|
const service_1 = require("./backup-and-sync/service/index.cjs");
|
|
22
|
+
const utils_2 = require("./backup-and-sync/utils/index.cjs");
|
|
22
23
|
const group_1 = require("./group.cjs");
|
|
23
24
|
const logger_1 = require("./logger.cjs");
|
|
24
25
|
const entropy_1 = require("./rules/entropy.cjs");
|
|
25
26
|
const keyring_1 = require("./rules/keyring.cjs");
|
|
26
27
|
const snap_1 = require("./rules/snap.cjs");
|
|
28
|
+
const wallet_1 = require("./wallet.cjs");
|
|
27
29
|
exports.controllerName = 'AccountTreeController';
|
|
28
30
|
const MESSENGER_EXPOSED_METHODS = [
|
|
29
31
|
'getSelectedAccountGroup',
|
|
@@ -180,6 +182,9 @@ class AccountTreeController extends base_controller_1.BaseController {
|
|
|
180
182
|
this.messenger.subscribe('MultichainAccountService:walletStatusChange', (walletId, status) => {
|
|
181
183
|
__classPrivateFieldGet(this, _AccountTreeController_instances, "m", _AccountTreeController_handleMultichainAccountWalletStatusChange).call(this, walletId, status);
|
|
182
184
|
});
|
|
185
|
+
this.messenger.subscribe('MultichainAccountService:groupStatusChange', (groupId, status) => {
|
|
186
|
+
__classPrivateFieldGet(this, _AccountTreeController_instances, "m", _AccountTreeController_handleMultichainAccountGroupStatusChange).call(this, groupId, status);
|
|
187
|
+
});
|
|
183
188
|
this.messenger.registerMethodActionHandlers(this, MESSENGER_EXPOSED_METHODS);
|
|
184
189
|
}
|
|
185
190
|
/**
|
|
@@ -919,7 +924,9 @@ _AccountTreeController_accountIdToContext = new WeakMap(), _AccountTreeControlle
|
|
|
919
924
|
(0, logger_1.projectLogger)(`[${walletId}] Added as new wallet`);
|
|
920
925
|
wallets[walletId] = {
|
|
921
926
|
...result.wallet,
|
|
922
|
-
status:
|
|
927
|
+
status: (0, wallet_1.isMultichainAccountWallet)(result.wallet)
|
|
928
|
+
? __classPrivateFieldGet(this, _AccountTreeController_instances, "m", _AccountTreeController_getMultichainAccountWalletStatus).call(this, result.wallet.metadata.entropy.id)
|
|
929
|
+
: 'ready',
|
|
923
930
|
groups: {},
|
|
924
931
|
metadata: {
|
|
925
932
|
name: '', // Will get updated later.
|
|
@@ -930,7 +937,7 @@ _AccountTreeController_accountIdToContext = new WeakMap(), _AccountTreeControlle
|
|
|
930
937
|
};
|
|
931
938
|
wallet = wallets[walletId];
|
|
932
939
|
// Trigger atomic sync for new wallet (only for entropy wallets)
|
|
933
|
-
if (
|
|
940
|
+
if ((0, wallet_1.isMultichainAccountWallet)(wallet)) {
|
|
934
941
|
__classPrivateFieldGet(this, _AccountTreeController_backupAndSyncService, "f").enqueueSingleWalletSync(walletId);
|
|
935
942
|
}
|
|
936
943
|
}
|
|
@@ -945,6 +952,10 @@ _AccountTreeController_accountIdToContext = new WeakMap(), _AccountTreeControlle
|
|
|
945
952
|
...result.group,
|
|
946
953
|
// Type-wise, we are guaranteed to always have at least 1 account.
|
|
947
954
|
accounts: [id],
|
|
955
|
+
...((0, group_1.isMultichainAccountGroup)(result.group) &&
|
|
956
|
+
(0, wallet_1.isMultichainAccountWallet)(result.wallet) && {
|
|
957
|
+
status: __classPrivateFieldGet(this, _AccountTreeController_instances, "m", _AccountTreeController_getMultichainAccountGroupStatus).call(this, result.wallet.metadata.entropy.id, result.group.metadata.entropy.groupIndex),
|
|
958
|
+
}),
|
|
948
959
|
metadata: {
|
|
949
960
|
name: '',
|
|
950
961
|
...{ pinned: false, hidden: false, lastSelected: 0 }, // Default UI states
|
|
@@ -957,7 +968,7 @@ _AccountTreeController_accountIdToContext = new WeakMap(), _AccountTreeControlle
|
|
|
957
968
|
// Map group ID to its containing wallet ID for efficient direct access
|
|
958
969
|
__classPrivateFieldGet(this, _AccountTreeController_groupIdToWalletId, "f").set(groupId, walletId);
|
|
959
970
|
// Trigger atomic sync for new group (only for entropy wallets)
|
|
960
|
-
if (
|
|
971
|
+
if ((0, wallet_1.isMultichainAccountWallet)(wallet)) {
|
|
961
972
|
__classPrivateFieldGet(this, _AccountTreeController_backupAndSyncService, "f").enqueueSingleGroupSync(groupId);
|
|
962
973
|
}
|
|
963
974
|
}
|
|
@@ -1014,9 +1025,6 @@ _AccountTreeController_accountIdToContext = new WeakMap(), _AccountTreeControlle
|
|
|
1014
1025
|
if (!accountToSelect) {
|
|
1015
1026
|
throw new Error('No accounts found in group');
|
|
1016
1027
|
}
|
|
1017
|
-
const gutoSetGroupStart = Date.now();
|
|
1018
|
-
console.log('[GUTO PERFORMANCE LOG] AccountTreeController.#setSelectedAccountGroup START');
|
|
1019
|
-
const gutoUpdateStart = Date.now();
|
|
1020
1028
|
this.update((state) => {
|
|
1021
1029
|
// Update our selected account group first.
|
|
1022
1030
|
state.selectedAccountGroup = groupId;
|
|
@@ -1033,20 +1041,14 @@ _AccountTreeController_accountIdToContext = new WeakMap(), _AccountTreeControlle
|
|
|
1033
1041
|
state.accountTree.wallets[walletId].groups[groupId].metadata.lastSelected = now;
|
|
1034
1042
|
}
|
|
1035
1043
|
});
|
|
1036
|
-
console.log(`[GUTO PERFORMANCE LOG] AccountTreeController state.update (sync) took ${Date.now() - gutoUpdateStart}ms`);
|
|
1037
1044
|
(0, logger_1.projectLogger)(`Selected group is now: [${this.state.selectedAccountGroup}]`);
|
|
1038
|
-
const gutoPublishStart = Date.now();
|
|
1039
1045
|
this.messenger.publish(`${exports.controllerName}:selectedAccountGroupChange`, groupId, previousSelectedAccountGroup);
|
|
1040
|
-
console.log(`[GUTO PERFORMANCE LOG] AccountTreeController publish selectedAccountGroupChange (sync subscriber fan-out) took ${Date.now() - gutoPublishStart}ms`);
|
|
1041
1046
|
if (forwardSelectedAccount) {
|
|
1042
1047
|
// Update AccountsController - this will trigger selectedAccountChange event,
|
|
1043
1048
|
// but our handler is idempotent so it won't cause infinite loop
|
|
1044
|
-
const gutoSetAccountStart = Date.now();
|
|
1045
1049
|
this.messenger.call('AccountsController:setSelectedAccount', accountToSelect);
|
|
1046
|
-
console.log(`[GUTO PERFORMANCE LOG] AccountTreeController AccountsController:setSelectedAccount (sync selectedAccountChange fan-out) took ${Date.now() - gutoSetAccountStart}ms`);
|
|
1047
1050
|
(0, logger_1.projectLogger)(`Selected account is now: ${accountToSelect}`);
|
|
1048
1051
|
}
|
|
1049
|
-
console.log(`[GUTO PERFORMANCE LOG] AccountTreeController.#setSelectedAccountGroup END (total, sync) took ${Date.now() - gutoSetGroupStart}ms`);
|
|
1050
1052
|
}, _AccountTreeController_getDefaultSelectedAccountGroup = function _AccountTreeController_getDefaultSelectedAccountGroup(wallets) {
|
|
1051
1053
|
const selectedAccount = this.messenger.call('AccountsController:getSelectedMultichainAccount');
|
|
1052
1054
|
if (selectedAccount?.id) {
|
|
@@ -1075,6 +1077,30 @@ _AccountTreeController_accountIdToContext = new WeakMap(), _AccountTreeControlle
|
|
|
1075
1077
|
wallet.status = walletStatus;
|
|
1076
1078
|
}
|
|
1077
1079
|
});
|
|
1080
|
+
}, _AccountTreeController_handleMultichainAccountGroupStatusChange = function _AccountTreeController_handleMultichainAccountGroupStatusChange(groupId, groupStatus) {
|
|
1081
|
+
this.update((state) => {
|
|
1082
|
+
const walletId = __classPrivateFieldGet(this, _AccountTreeController_groupIdToWalletId, "f").get(groupId);
|
|
1083
|
+
if (walletId) {
|
|
1084
|
+
const group = state.accountTree.wallets[walletId]?.groups[groupId];
|
|
1085
|
+
if (group && (0, group_1.isMultichainAccountGroup)(group)) {
|
|
1086
|
+
group.status = groupStatus;
|
|
1087
|
+
}
|
|
1088
|
+
}
|
|
1089
|
+
});
|
|
1090
|
+
}, _AccountTreeController_getMultichainAccountWalletStatus = function _AccountTreeController_getMultichainAccountWalletStatus(entropySource) {
|
|
1091
|
+
try {
|
|
1092
|
+
return this.messenger.call('MultichainAccountService:getMultichainAccountWallet', { entropySource }).status;
|
|
1093
|
+
}
|
|
1094
|
+
catch {
|
|
1095
|
+
return 'uninitialized';
|
|
1096
|
+
}
|
|
1097
|
+
}, _AccountTreeController_getMultichainAccountGroupStatus = function _AccountTreeController_getMultichainAccountGroupStatus(entropySource, groupIndex) {
|
|
1098
|
+
try {
|
|
1099
|
+
return this.messenger.call('MultichainAccountService:getMultichainAccountGroup', { entropySource, groupIndex }).status;
|
|
1100
|
+
}
|
|
1101
|
+
catch {
|
|
1102
|
+
return 'uninitialized';
|
|
1103
|
+
}
|
|
1078
1104
|
}, _AccountTreeController_getAccountGroup = function _AccountTreeController_getAccountGroup(groupId) {
|
|
1079
1105
|
const found = Object.values(this.state.accountTree.wallets).find((wallet) => wallet.groups[groupId] !== undefined);
|
|
1080
1106
|
return found?.groups[groupId];
|
|
@@ -1143,6 +1169,7 @@ _AccountTreeController_accountIdToContext = new WeakMap(), _AccountTreeControlle
|
|
|
1143
1169
|
controllerStateUpdateFn: this.update.bind(this),
|
|
1144
1170
|
traceFn: __classPrivateFieldGet(this, _AccountTreeController_trace, "f").bind(this),
|
|
1145
1171
|
groupIdToWalletId: __classPrivateFieldGet(this, _AccountTreeController_groupIdToWalletId, "f"),
|
|
1172
|
+
mutationTracker: (0, utils_2.createSyncMutationTracker)(),
|
|
1146
1173
|
};
|
|
1147
1174
|
};
|
|
1148
1175
|
//# sourceMappingURL=AccountTreeController.cjs.map
|