@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
|
@@ -9,18 +9,20 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
9
9
|
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");
|
|
10
10
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
11
11
|
};
|
|
12
|
-
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
|
-
import { AccountWalletType, select } from "@metamask/account-api";
|
|
12
|
+
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;
|
|
13
|
+
import { AccountGroupType, AccountWalletType, select } from "@metamask/account-api";
|
|
14
14
|
import { BaseController } from "@metamask/base-controller";
|
|
15
15
|
import { isEvmAccountType } from "@metamask/keyring-api";
|
|
16
16
|
import { assert } from "@metamask/utils";
|
|
17
17
|
import { formatAnalyticsEvent, traceFallback } from "./backup-and-sync/analytics/index.mjs";
|
|
18
18
|
import { BackupAndSyncService } from "./backup-and-sync/service/index.mjs";
|
|
19
|
-
import {
|
|
19
|
+
import { createSyncMutationTracker } from "./backup-and-sync/utils/index.mjs";
|
|
20
|
+
import { ACCOUNT_TYPE_TO_SORT_ORDER, isAccountGroupNameUnique, isAccountGroupNameUniqueFromWallet, isMultichainAccountGroup, MAX_SORT_ORDER } from "./group.mjs";
|
|
20
21
|
import { projectLogger as log } from "./logger.mjs";
|
|
21
22
|
import { EntropyRule } from "./rules/entropy.mjs";
|
|
22
23
|
import { KeyringRule } from "./rules/keyring.mjs";
|
|
23
24
|
import { SnapRule } from "./rules/snap.mjs";
|
|
25
|
+
import { isMultichainAccountWallet } from "./wallet.mjs";
|
|
24
26
|
export const controllerName = 'AccountTreeController';
|
|
25
27
|
const MESSENGER_EXPOSED_METHODS = [
|
|
26
28
|
'getSelectedAccountGroup',
|
|
@@ -176,6 +178,9 @@ export class AccountTreeController extends BaseController {
|
|
|
176
178
|
this.messenger.subscribe('MultichainAccountService:walletStatusChange', (walletId, status) => {
|
|
177
179
|
__classPrivateFieldGet(this, _AccountTreeController_instances, "m", _AccountTreeController_handleMultichainAccountWalletStatusChange).call(this, walletId, status);
|
|
178
180
|
});
|
|
181
|
+
this.messenger.subscribe('MultichainAccountService:groupStatusChange', (groupId, status) => {
|
|
182
|
+
__classPrivateFieldGet(this, _AccountTreeController_instances, "m", _AccountTreeController_handleMultichainAccountGroupStatusChange).call(this, groupId, status);
|
|
183
|
+
});
|
|
179
184
|
this.messenger.registerMethodActionHandlers(this, MESSENGER_EXPOSED_METHODS);
|
|
180
185
|
}
|
|
181
186
|
/**
|
|
@@ -914,7 +919,9 @@ _AccountTreeController_accountIdToContext = new WeakMap(), _AccountTreeControlle
|
|
|
914
919
|
log(`[${walletId}] Added as new wallet`);
|
|
915
920
|
wallets[walletId] = {
|
|
916
921
|
...result.wallet,
|
|
917
|
-
status:
|
|
922
|
+
status: isMultichainAccountWallet(result.wallet)
|
|
923
|
+
? __classPrivateFieldGet(this, _AccountTreeController_instances, "m", _AccountTreeController_getMultichainAccountWalletStatus).call(this, result.wallet.metadata.entropy.id)
|
|
924
|
+
: 'ready',
|
|
918
925
|
groups: {},
|
|
919
926
|
metadata: {
|
|
920
927
|
name: '', // Will get updated later.
|
|
@@ -925,7 +932,7 @@ _AccountTreeController_accountIdToContext = new WeakMap(), _AccountTreeControlle
|
|
|
925
932
|
};
|
|
926
933
|
wallet = wallets[walletId];
|
|
927
934
|
// Trigger atomic sync for new wallet (only for entropy wallets)
|
|
928
|
-
if (wallet
|
|
935
|
+
if (isMultichainAccountWallet(wallet)) {
|
|
929
936
|
__classPrivateFieldGet(this, _AccountTreeController_backupAndSyncService, "f").enqueueSingleWalletSync(walletId);
|
|
930
937
|
}
|
|
931
938
|
}
|
|
@@ -940,6 +947,10 @@ _AccountTreeController_accountIdToContext = new WeakMap(), _AccountTreeControlle
|
|
|
940
947
|
...result.group,
|
|
941
948
|
// Type-wise, we are guaranteed to always have at least 1 account.
|
|
942
949
|
accounts: [id],
|
|
950
|
+
...(isMultichainAccountGroup(result.group) &&
|
|
951
|
+
isMultichainAccountWallet(result.wallet) && {
|
|
952
|
+
status: __classPrivateFieldGet(this, _AccountTreeController_instances, "m", _AccountTreeController_getMultichainAccountGroupStatus).call(this, result.wallet.metadata.entropy.id, result.group.metadata.entropy.groupIndex),
|
|
953
|
+
}),
|
|
943
954
|
metadata: {
|
|
944
955
|
name: '',
|
|
945
956
|
...{ pinned: false, hidden: false, lastSelected: 0 }, // Default UI states
|
|
@@ -952,7 +963,7 @@ _AccountTreeController_accountIdToContext = new WeakMap(), _AccountTreeControlle
|
|
|
952
963
|
// Map group ID to its containing wallet ID for efficient direct access
|
|
953
964
|
__classPrivateFieldGet(this, _AccountTreeController_groupIdToWalletId, "f").set(groupId, walletId);
|
|
954
965
|
// Trigger atomic sync for new group (only for entropy wallets)
|
|
955
|
-
if (wallet
|
|
966
|
+
if (isMultichainAccountWallet(wallet)) {
|
|
956
967
|
__classPrivateFieldGet(this, _AccountTreeController_backupAndSyncService, "f").enqueueSingleGroupSync(groupId);
|
|
957
968
|
}
|
|
958
969
|
}
|
|
@@ -1009,9 +1020,6 @@ _AccountTreeController_accountIdToContext = new WeakMap(), _AccountTreeControlle
|
|
|
1009
1020
|
if (!accountToSelect) {
|
|
1010
1021
|
throw new Error('No accounts found in group');
|
|
1011
1022
|
}
|
|
1012
|
-
const gutoSetGroupStart = Date.now();
|
|
1013
|
-
console.log('[GUTO PERFORMANCE LOG] AccountTreeController.#setSelectedAccountGroup START');
|
|
1014
|
-
const gutoUpdateStart = Date.now();
|
|
1015
1023
|
this.update((state) => {
|
|
1016
1024
|
// Update our selected account group first.
|
|
1017
1025
|
state.selectedAccountGroup = groupId;
|
|
@@ -1028,20 +1036,14 @@ _AccountTreeController_accountIdToContext = new WeakMap(), _AccountTreeControlle
|
|
|
1028
1036
|
state.accountTree.wallets[walletId].groups[groupId].metadata.lastSelected = now;
|
|
1029
1037
|
}
|
|
1030
1038
|
});
|
|
1031
|
-
console.log(`[GUTO PERFORMANCE LOG] AccountTreeController state.update (sync) took ${Date.now() - gutoUpdateStart}ms`);
|
|
1032
1039
|
log(`Selected group is now: [${this.state.selectedAccountGroup}]`);
|
|
1033
|
-
const gutoPublishStart = Date.now();
|
|
1034
1040
|
this.messenger.publish(`${controllerName}:selectedAccountGroupChange`, groupId, previousSelectedAccountGroup);
|
|
1035
|
-
console.log(`[GUTO PERFORMANCE LOG] AccountTreeController publish selectedAccountGroupChange (sync subscriber fan-out) took ${Date.now() - gutoPublishStart}ms`);
|
|
1036
1041
|
if (forwardSelectedAccount) {
|
|
1037
1042
|
// Update AccountsController - this will trigger selectedAccountChange event,
|
|
1038
1043
|
// but our handler is idempotent so it won't cause infinite loop
|
|
1039
|
-
const gutoSetAccountStart = Date.now();
|
|
1040
1044
|
this.messenger.call('AccountsController:setSelectedAccount', accountToSelect);
|
|
1041
|
-
console.log(`[GUTO PERFORMANCE LOG] AccountTreeController AccountsController:setSelectedAccount (sync selectedAccountChange fan-out) took ${Date.now() - gutoSetAccountStart}ms`);
|
|
1042
1045
|
log(`Selected account is now: ${accountToSelect}`);
|
|
1043
1046
|
}
|
|
1044
|
-
console.log(`[GUTO PERFORMANCE LOG] AccountTreeController.#setSelectedAccountGroup END (total, sync) took ${Date.now() - gutoSetGroupStart}ms`);
|
|
1045
1047
|
}, _AccountTreeController_getDefaultSelectedAccountGroup = function _AccountTreeController_getDefaultSelectedAccountGroup(wallets) {
|
|
1046
1048
|
const selectedAccount = this.messenger.call('AccountsController:getSelectedMultichainAccount');
|
|
1047
1049
|
if (selectedAccount?.id) {
|
|
@@ -1070,6 +1072,30 @@ _AccountTreeController_accountIdToContext = new WeakMap(), _AccountTreeControlle
|
|
|
1070
1072
|
wallet.status = walletStatus;
|
|
1071
1073
|
}
|
|
1072
1074
|
});
|
|
1075
|
+
}, _AccountTreeController_handleMultichainAccountGroupStatusChange = function _AccountTreeController_handleMultichainAccountGroupStatusChange(groupId, groupStatus) {
|
|
1076
|
+
this.update((state) => {
|
|
1077
|
+
const walletId = __classPrivateFieldGet(this, _AccountTreeController_groupIdToWalletId, "f").get(groupId);
|
|
1078
|
+
if (walletId) {
|
|
1079
|
+
const group = state.accountTree.wallets[walletId]?.groups[groupId];
|
|
1080
|
+
if (group && isMultichainAccountGroup(group)) {
|
|
1081
|
+
group.status = groupStatus;
|
|
1082
|
+
}
|
|
1083
|
+
}
|
|
1084
|
+
});
|
|
1085
|
+
}, _AccountTreeController_getMultichainAccountWalletStatus = function _AccountTreeController_getMultichainAccountWalletStatus(entropySource) {
|
|
1086
|
+
try {
|
|
1087
|
+
return this.messenger.call('MultichainAccountService:getMultichainAccountWallet', { entropySource }).status;
|
|
1088
|
+
}
|
|
1089
|
+
catch {
|
|
1090
|
+
return 'uninitialized';
|
|
1091
|
+
}
|
|
1092
|
+
}, _AccountTreeController_getMultichainAccountGroupStatus = function _AccountTreeController_getMultichainAccountGroupStatus(entropySource, groupIndex) {
|
|
1093
|
+
try {
|
|
1094
|
+
return this.messenger.call('MultichainAccountService:getMultichainAccountGroup', { entropySource, groupIndex }).status;
|
|
1095
|
+
}
|
|
1096
|
+
catch {
|
|
1097
|
+
return 'uninitialized';
|
|
1098
|
+
}
|
|
1073
1099
|
}, _AccountTreeController_getAccountGroup = function _AccountTreeController_getAccountGroup(groupId) {
|
|
1074
1100
|
const found = Object.values(this.state.accountTree.wallets).find((wallet) => wallet.groups[groupId] !== undefined);
|
|
1075
1101
|
return found?.groups[groupId];
|
|
@@ -1138,6 +1164,7 @@ _AccountTreeController_accountIdToContext = new WeakMap(), _AccountTreeControlle
|
|
|
1138
1164
|
controllerStateUpdateFn: this.update.bind(this),
|
|
1139
1165
|
traceFn: __classPrivateFieldGet(this, _AccountTreeController_trace, "f").bind(this),
|
|
1140
1166
|
groupIdToWalletId: __classPrivateFieldGet(this, _AccountTreeController_groupIdToWalletId, "f"),
|
|
1167
|
+
mutationTracker: createSyncMutationTracker(),
|
|
1141
1168
|
};
|
|
1142
1169
|
};
|
|
1143
1170
|
//# sourceMappingURL=AccountTreeController.mjs.map
|