@metamask-previews/account-tree-controller 0.6.0-preview-ed2a2e6 → 0.6.0-preview-b3ea3f86
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 +0 -12
- package/dist/AccountTreeController.cjs +25 -86
- package/dist/AccountTreeController.cjs.map +1 -1
- package/dist/AccountTreeController.d.cts +1 -3
- package/dist/AccountTreeController.d.cts.map +1 -1
- package/dist/AccountTreeController.d.mts +1 -3
- package/dist/AccountTreeController.d.mts.map +1 -1
- package/dist/AccountTreeController.mjs +26 -87
- package/dist/AccountTreeController.mjs.map +1 -1
- package/dist/AccountTreeGroup.cjs +35 -51
- package/dist/AccountTreeGroup.cjs.map +1 -1
- package/dist/AccountTreeGroup.d.cts +22 -15
- package/dist/AccountTreeGroup.d.cts.map +1 -1
- package/dist/AccountTreeGroup.d.mts +22 -15
- package/dist/AccountTreeGroup.d.mts.map +1 -1
- package/dist/AccountTreeGroup.mjs +33 -49
- package/dist/AccountTreeGroup.mjs.map +1 -1
- package/dist/AccountTreeWallet.cjs +27 -61
- package/dist/AccountTreeWallet.cjs.map +1 -1
- package/dist/AccountTreeWallet.d.cts +17 -24
- package/dist/AccountTreeWallet.d.cts.map +1 -1
- package/dist/AccountTreeWallet.d.mts +17 -24
- package/dist/AccountTreeWallet.d.mts.map +1 -1
- package/dist/AccountTreeWallet.mjs +26 -60
- package/dist/AccountTreeWallet.mjs.map +1 -1
- package/dist/rules/EntropySourceWalletRule.cjs +100 -0
- package/dist/rules/EntropySourceWalletRule.cjs.map +1 -0
- package/dist/rules/EntropySourceWalletRule.d.cts +19 -0
- package/dist/rules/EntropySourceWalletRule.d.cts.map +1 -0
- package/dist/rules/EntropySourceWalletRule.d.mts +19 -0
- package/dist/rules/EntropySourceWalletRule.d.mts.map +1 -0
- package/dist/rules/EntropySourceWalletRule.mjs +95 -0
- package/dist/rules/EntropySourceWalletRule.mjs.map +1 -0
- package/dist/rules/KeyringWalletRule.cjs +99 -0
- package/dist/rules/KeyringWalletRule.cjs.map +1 -0
- package/dist/rules/KeyringWalletRule.d.cts +18 -0
- package/dist/rules/KeyringWalletRule.d.cts.map +1 -0
- package/dist/rules/KeyringWalletRule.d.mts +18 -0
- package/dist/rules/KeyringWalletRule.d.mts.map +1 -0
- package/dist/rules/KeyringWalletRule.mjs +94 -0
- package/dist/rules/KeyringWalletRule.mjs.map +1 -0
- package/dist/rules/SnapWalletRule.cjs +70 -0
- package/dist/rules/SnapWalletRule.cjs.map +1 -0
- package/dist/rules/SnapWalletRule.d.cts +10 -0
- package/dist/rules/SnapWalletRule.d.cts.map +1 -0
- package/dist/rules/SnapWalletRule.d.mts +10 -0
- package/dist/rules/SnapWalletRule.d.mts.map +1 -0
- package/dist/rules/SnapWalletRule.mjs +66 -0
- package/dist/rules/SnapWalletRule.mjs.map +1 -0
- package/dist/rules/WalletRule.cjs +13 -0
- package/dist/rules/WalletRule.cjs.map +1 -0
- package/dist/rules/WalletRule.d.cts +37 -0
- package/dist/rules/WalletRule.d.cts.map +1 -0
- package/dist/rules/WalletRule.d.mts +37 -0
- package/dist/rules/WalletRule.d.mts.map +1 -0
- package/dist/rules/WalletRule.mjs +9 -0
- package/dist/rules/WalletRule.mjs.map +1 -0
- package/dist/rules/index.cjs +4 -4
- package/dist/rules/index.cjs.map +1 -1
- package/dist/rules/index.d.cts +4 -4
- package/dist/rules/index.d.cts.map +1 -1
- package/dist/rules/index.d.mts +4 -4
- package/dist/rules/index.d.mts.map +1 -1
- package/dist/rules/index.mjs +4 -4
- package/dist/rules/index.mjs.map +1 -1
- package/dist/rules/utils.cjs +15 -0
- package/dist/rules/utils.cjs.map +1 -0
- package/dist/rules/utils.d.cts +11 -0
- package/dist/rules/utils.d.cts.map +1 -0
- package/dist/rules/utils.d.mts +11 -0
- package/dist/rules/utils.d.mts.map +1 -0
- package/dist/rules/utils.mjs +11 -0
- package/dist/rules/utils.mjs.map +1 -0
- package/package.json +3 -3
- package/dist/rules/entropy.cjs +0 -57
- package/dist/rules/entropy.cjs.map +0 -1
- package/dist/rules/entropy.d.cts +0 -13
- package/dist/rules/entropy.d.cts.map +0 -1
- package/dist/rules/entropy.d.mts +0 -13
- package/dist/rules/entropy.d.mts.map +0 -1
- package/dist/rules/entropy.mjs +0 -53
- package/dist/rules/entropy.mjs.map +0 -1
- package/dist/rules/keyring.cjs +0 -80
- package/dist/rules/keyring.cjs.map +0 -1
- package/dist/rules/keyring.d.cts +0 -20
- package/dist/rules/keyring.d.cts.map +0 -1
- package/dist/rules/keyring.d.mts +0 -20
- package/dist/rules/keyring.d.mts.map +0 -1
- package/dist/rules/keyring.mjs +0 -75
- package/dist/rules/keyring.mjs.map +0 -1
- package/dist/rules/rule.cjs +0 -10
- package/dist/rules/rule.cjs.map +0 -1
- package/dist/rules/rule.d.cts +0 -42
- package/dist/rules/rule.d.cts.map +0 -1
- package/dist/rules/rule.d.mts +0 -42
- package/dist/rules/rule.d.mts.map +0 -1
- package/dist/rules/rule.mjs +0 -6
- package/dist/rules/rule.mjs.map +0 -1
- package/dist/rules/snap.cjs +0 -53
- package/dist/rules/snap.cjs.map +0 -1
- package/dist/rules/snap.d.cts +0 -23
- package/dist/rules/snap.d.cts.map +0 -1
- package/dist/rules/snap.d.mts +0 -23
- package/dist/rules/snap.d.mts.map +0 -1
- package/dist/rules/snap.mjs +0 -49
- package/dist/rules/snap.mjs.map +0 -1
- package/dist/types.cjs +0 -3
- package/dist/types.cjs.map +0 -1
- package/dist/types.d.cts +0 -15
- package/dist/types.d.cts.map +0 -1
- package/dist/types.d.mts +0 -15
- package/dist/types.d.mts.map +0 -1
- package/dist/types.mjs +0 -2
- package/dist/types.mjs.map +0 -1
|
@@ -10,65 +10,49 @@ 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
|
|
13
|
+
var _MutableAccountTreeGroup_accounts;
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.
|
|
15
|
+
exports.MutableAccountTreeGroup = exports.DEFAULT_ACCOUNT_GROUP_NAME = void 0;
|
|
16
|
+
const account_api_1 = require("@metamask/account-api");
|
|
16
17
|
exports.DEFAULT_ACCOUNT_GROUP_NAME = 'Default';
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
__classPrivateFieldSet(this, _AccountTreeGroup_messenger, messenger, "f");
|
|
27
|
-
__classPrivateFieldSet(this, _AccountTreeGroup_group, group, "f");
|
|
28
|
-
__classPrivateFieldSet(this, _AccountTreeGroup_wallet, wallet, "f");
|
|
29
|
-
}
|
|
30
|
-
get id() {
|
|
31
|
-
return __classPrivateFieldGet(this, _AccountTreeGroup_group, "f").id;
|
|
32
|
-
}
|
|
33
|
-
get wallet() {
|
|
34
|
-
return __classPrivateFieldGet(this, _AccountTreeGroup_wallet, "f");
|
|
35
|
-
}
|
|
36
|
-
get name() {
|
|
37
|
-
return __classPrivateFieldGet(this, _AccountTreeGroup_group, "f").metadata.name;
|
|
18
|
+
// This class is meant to be used internally by every rules. It exposes mutable operations
|
|
19
|
+
// which should not leak outside of this package.
|
|
20
|
+
class MutableAccountTreeGroup {
|
|
21
|
+
constructor(messenger, wallet, id) {
|
|
22
|
+
_MutableAccountTreeGroup_accounts.set(this, void 0);
|
|
23
|
+
this.id = (0, account_api_1.toAccountGroupId)(wallet.id, id);
|
|
24
|
+
this.wallet = wallet;
|
|
25
|
+
this.messenger = messenger;
|
|
26
|
+
__classPrivateFieldSet(this, _MutableAccountTreeGroup_accounts, new Set(), "f");
|
|
38
27
|
}
|
|
39
28
|
getAccountIds() {
|
|
40
|
-
return __classPrivateFieldGet(this,
|
|
41
|
-
}
|
|
42
|
-
getAccount(id) {
|
|
43
|
-
return __classPrivateFieldGet(this, _AccountTreeGroup_messenger, "f").call('AccountsController:getAccount', id);
|
|
29
|
+
return Array.from(__classPrivateFieldGet(this, _MutableAccountTreeGroup_accounts, "f")); // FIXME: Should we force the copy here?
|
|
44
30
|
}
|
|
45
31
|
getAccounts() {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
32
|
+
const accounts = [];
|
|
33
|
+
for (const id of __classPrivateFieldGet(this, _MutableAccountTreeGroup_accounts, "f")) {
|
|
34
|
+
const account = this.getAccount(id);
|
|
35
|
+
// FIXME: I'm really not sure we should skip those but... We could be
|
|
36
|
+
// "de-sync" with the AccountsController and might have some dangling
|
|
37
|
+
// account IDs.
|
|
38
|
+
if (!account) {
|
|
39
|
+
console.warn(`! Unable to get account: "${id}"`);
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
accounts.push(account);
|
|
52
43
|
}
|
|
53
|
-
return
|
|
44
|
+
return accounts;
|
|
54
45
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
if (accountIds.length === 0) {
|
|
58
|
-
throw new Error('Group contains no account');
|
|
59
|
-
}
|
|
60
|
-
if (accountIds.length > 1) {
|
|
61
|
-
throw new Error('Group contains more than 1 account');
|
|
62
|
-
}
|
|
63
|
-
return __classPrivateFieldGet(this, _AccountTreeGroup_instances, "m", _AccountTreeGroup_getAccount).call(this, accountIds[0]);
|
|
46
|
+
getAccount(id) {
|
|
47
|
+
return this.messenger.call('AccountsController:getAccount', id);
|
|
64
48
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
_AccountTreeGroup_messenger = new WeakMap(), _AccountTreeGroup_group = new WeakMap(), _AccountTreeGroup_wallet = new WeakMap(), _AccountTreeGroup_instances = new WeakSet(), _AccountTreeGroup_getAccount = function _AccountTreeGroup_getAccount(id) {
|
|
68
|
-
const account = this.getAccount(id);
|
|
69
|
-
if (!account) {
|
|
70
|
-
throw new Error(`Unable to get account with ID: "${id}"`);
|
|
49
|
+
addAccount(account) {
|
|
50
|
+
__classPrivateFieldGet(this, _MutableAccountTreeGroup_accounts, "f").add(account.id);
|
|
71
51
|
}
|
|
72
|
-
|
|
73
|
-
|
|
52
|
+
getDefaultName() {
|
|
53
|
+
return exports.DEFAULT_ACCOUNT_GROUP_NAME;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
exports.MutableAccountTreeGroup = MutableAccountTreeGroup;
|
|
57
|
+
_MutableAccountTreeGroup_accounts = new WeakMap();
|
|
74
58
|
//# sourceMappingURL=AccountTreeGroup.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccountTreeGroup.cjs","sourceRoot":"","sources":["../src/AccountTreeGroup.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"AccountTreeGroup.cjs","sourceRoot":"","sources":["../src/AccountTreeGroup.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,uDAK+B;AAKlB,QAAA,0BAA0B,GAAW,SAAS,CAAC;AAiB5D,0FAA0F;AAC1F,iDAAiD;AACjD,MAAa,uBAAuB;IASlC,YACE,SAAyC,EACzC,MAAsC,EACtC,EAAU;QALH,oDAA0B;QAOjC,IAAI,CAAC,EAAE,GAAG,IAAA,8BAAgB,EAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAC1C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAE3B,uBAAA,IAAI,qCAAa,IAAI,GAAG,EAAE,MAAA,CAAC;IAC7B,CAAC;IAED,aAAa;QACX,OAAO,KAAK,CAAC,IAAI,CAAC,uBAAA,IAAI,yCAAU,CAAC,CAAC,CAAC,wCAAwC;IAC7E,CAAC;IAED,WAAW;QACT,MAAM,QAAQ,GAAG,EAAE,CAAC;QAEpB,KAAK,MAAM,EAAE,IAAI,uBAAA,IAAI,yCAAU,EAAE;YAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YAEpC,qEAAqE;YACrE,qEAAqE;YACrE,eAAe;YACf,IAAI,CAAC,OAAO,EAAE;gBACZ,OAAO,CAAC,IAAI,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;gBACjD,SAAS;aACV;YACD,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACxB;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,UAAU,CAAC,EAAa;QACtB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,+BAA+B,EAAE,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,UAAU,CAAC,OAAwB;QACjC,uBAAA,IAAI,yCAAU,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC;IAED,cAAc;QACZ,OAAO,kCAA0B,CAAC;IACpC,CAAC;CACF;AAtDD,0DAsDC","sourcesContent":["import {\n toAccountGroupId,\n type AccountGroup,\n type AccountGroupId,\n type AccountWallet,\n} from '@metamask/account-api';\nimport type { InternalAccount } from '@metamask/keyring-internal-api';\nimport type { AccountId } from '@metamask/keyring-utils';\nimport type { AccountTreeControllerMessenger } from 'src';\n\nexport const DEFAULT_ACCOUNT_GROUP_NAME: string = 'Default';\n\n/**\n * Account group coming from the {@link AccountTreeController}.\n */\nexport type AccountTreeGroup = {\n /**\n * Account IDs for that account group.\n */\n getAccountIds(): AccountId[];\n\n /**\n * Gets the default name for that account group.\n */\n getDefaultName(): string;\n} & AccountGroup<InternalAccount>;\n\n// This class is meant to be used internally by every rules. It exposes mutable operations\n// which should not leak outside of this package.\nexport class MutableAccountTreeGroup implements AccountTreeGroup {\n readonly id: AccountGroupId;\n\n readonly wallet: AccountWallet<InternalAccount>;\n\n readonly messenger: AccountTreeControllerMessenger;\n\n readonly #accounts: Set<AccountId>;\n\n constructor(\n messenger: AccountTreeControllerMessenger,\n wallet: AccountWallet<InternalAccount>,\n id: string,\n ) {\n this.id = toAccountGroupId(wallet.id, id);\n this.wallet = wallet;\n this.messenger = messenger;\n\n this.#accounts = new Set();\n }\n\n getAccountIds(): AccountId[] {\n return Array.from(this.#accounts); // FIXME: Should we force the copy here?\n }\n\n getAccounts(): InternalAccount[] {\n const accounts = [];\n\n for (const id of this.#accounts) {\n const account = this.getAccount(id);\n\n // FIXME: I'm really not sure we should skip those but... We could be\n // \"de-sync\" with the AccountsController and might have some dangling\n // account IDs.\n if (!account) {\n console.warn(`! Unable to get account: \"${id}\"`);\n continue;\n }\n accounts.push(account);\n }\n return accounts;\n }\n\n getAccount(id: AccountId): InternalAccount | undefined {\n return this.messenger.call('AccountsController:getAccount', id);\n }\n\n addAccount(account: InternalAccount) {\n this.#accounts.add(account.id);\n }\n\n getDefaultName(): string {\n return DEFAULT_ACCOUNT_GROUP_NAME;\n }\n}\n"]}
|
|
@@ -1,24 +1,31 @@
|
|
|
1
|
-
import { type AccountGroup, type AccountGroupId } from "@metamask/account-api";
|
|
1
|
+
import { type AccountGroup, type AccountGroupId, type AccountWallet } from "@metamask/account-api";
|
|
2
2
|
import type { InternalAccount } from "@metamask/keyring-internal-api";
|
|
3
|
-
import type {
|
|
3
|
+
import type { AccountId } from "@metamask/keyring-utils";
|
|
4
|
+
import type { AccountTreeControllerMessenger } from "src";
|
|
4
5
|
export declare const DEFAULT_ACCOUNT_GROUP_NAME: string;
|
|
5
6
|
/**
|
|
6
7
|
* Account group coming from the {@link AccountTreeController}.
|
|
7
8
|
*/
|
|
8
|
-
export
|
|
9
|
+
export type AccountTreeGroup = {
|
|
10
|
+
/**
|
|
11
|
+
* Account IDs for that account group.
|
|
12
|
+
*/
|
|
13
|
+
getAccountIds(): AccountId[];
|
|
14
|
+
/**
|
|
15
|
+
* Gets the default name for that account group.
|
|
16
|
+
*/
|
|
17
|
+
getDefaultName(): string;
|
|
18
|
+
} & AccountGroup<InternalAccount>;
|
|
19
|
+
export declare class MutableAccountTreeGroup implements AccountTreeGroup {
|
|
9
20
|
#private;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
get id(): AccountGroupId;
|
|
16
|
-
get wallet(): AccountTreeWallet;
|
|
17
|
-
get name(): string;
|
|
18
|
-
getAccountIds(): InternalAccount['id'][];
|
|
19
|
-
getAccount(id: string): InternalAccount | undefined;
|
|
21
|
+
readonly id: AccountGroupId;
|
|
22
|
+
readonly wallet: AccountWallet<InternalAccount>;
|
|
23
|
+
readonly messenger: AccountTreeControllerMessenger;
|
|
24
|
+
constructor(messenger: AccountTreeControllerMessenger, wallet: AccountWallet<InternalAccount>, id: string);
|
|
25
|
+
getAccountIds(): AccountId[];
|
|
20
26
|
getAccounts(): InternalAccount[];
|
|
21
|
-
|
|
22
|
-
|
|
27
|
+
getAccount(id: AccountId): InternalAccount | undefined;
|
|
28
|
+
addAccount(account: InternalAccount): void;
|
|
29
|
+
getDefaultName(): string;
|
|
23
30
|
}
|
|
24
31
|
//# sourceMappingURL=AccountTreeGroup.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccountTreeGroup.d.cts","sourceRoot":"","sources":["../src/AccountTreeGroup.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"AccountTreeGroup.d.cts","sourceRoot":"","sources":["../src/AccountTreeGroup.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,8BAA8B;AAC/B,OAAO,KAAK,EAAE,eAAe,EAAE,uCAAuC;AACtE,OAAO,KAAK,EAAE,SAAS,EAAE,gCAAgC;AACzD,OAAO,KAAK,EAAE,8BAA8B,EAAE,YAAY;AAE1D,eAAO,MAAM,0BAA0B,EAAE,MAAkB,CAAC;AAE5D;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;OAEG;IACH,aAAa,IAAI,SAAS,EAAE,CAAC;IAE7B;;OAEG;IACH,cAAc,IAAI,MAAM,CAAC;CAC1B,GAAG,YAAY,CAAC,eAAe,CAAC,CAAC;AAIlC,qBAAa,uBAAwB,YAAW,gBAAgB;;IAC9D,QAAQ,CAAC,EAAE,EAAE,cAAc,CAAC;IAE5B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;IAEhD,QAAQ,CAAC,SAAS,EAAE,8BAA8B,CAAC;gBAKjD,SAAS,EAAE,8BAA8B,EACzC,MAAM,EAAE,aAAa,CAAC,eAAe,CAAC,EACtC,EAAE,EAAE,MAAM;IASZ,aAAa,IAAI,SAAS,EAAE;IAI5B,WAAW,IAAI,eAAe,EAAE;IAkBhC,UAAU,CAAC,EAAE,EAAE,SAAS,GAAG,eAAe,GAAG,SAAS;IAItD,UAAU,CAAC,OAAO,EAAE,eAAe;IAInC,cAAc,IAAI,MAAM;CAGzB"}
|
|
@@ -1,24 +1,31 @@
|
|
|
1
|
-
import { type AccountGroup, type AccountGroupId } from "@metamask/account-api";
|
|
1
|
+
import { type AccountGroup, type AccountGroupId, type AccountWallet } from "@metamask/account-api";
|
|
2
2
|
import type { InternalAccount } from "@metamask/keyring-internal-api";
|
|
3
|
-
import type {
|
|
3
|
+
import type { AccountId } from "@metamask/keyring-utils";
|
|
4
|
+
import type { AccountTreeControllerMessenger } from "src";
|
|
4
5
|
export declare const DEFAULT_ACCOUNT_GROUP_NAME: string;
|
|
5
6
|
/**
|
|
6
7
|
* Account group coming from the {@link AccountTreeController}.
|
|
7
8
|
*/
|
|
8
|
-
export
|
|
9
|
+
export type AccountTreeGroup = {
|
|
10
|
+
/**
|
|
11
|
+
* Account IDs for that account group.
|
|
12
|
+
*/
|
|
13
|
+
getAccountIds(): AccountId[];
|
|
14
|
+
/**
|
|
15
|
+
* Gets the default name for that account group.
|
|
16
|
+
*/
|
|
17
|
+
getDefaultName(): string;
|
|
18
|
+
} & AccountGroup<InternalAccount>;
|
|
19
|
+
export declare class MutableAccountTreeGroup implements AccountTreeGroup {
|
|
9
20
|
#private;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
get id(): AccountGroupId;
|
|
16
|
-
get wallet(): AccountTreeWallet;
|
|
17
|
-
get name(): string;
|
|
18
|
-
getAccountIds(): InternalAccount['id'][];
|
|
19
|
-
getAccount(id: string): InternalAccount | undefined;
|
|
21
|
+
readonly id: AccountGroupId;
|
|
22
|
+
readonly wallet: AccountWallet<InternalAccount>;
|
|
23
|
+
readonly messenger: AccountTreeControllerMessenger;
|
|
24
|
+
constructor(messenger: AccountTreeControllerMessenger, wallet: AccountWallet<InternalAccount>, id: string);
|
|
25
|
+
getAccountIds(): AccountId[];
|
|
20
26
|
getAccounts(): InternalAccount[];
|
|
21
|
-
|
|
22
|
-
|
|
27
|
+
getAccount(id: AccountId): InternalAccount | undefined;
|
|
28
|
+
addAccount(account: InternalAccount): void;
|
|
29
|
+
getDefaultName(): string;
|
|
23
30
|
}
|
|
24
31
|
//# sourceMappingURL=AccountTreeGroup.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccountTreeGroup.d.mts","sourceRoot":"","sources":["../src/AccountTreeGroup.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"AccountTreeGroup.d.mts","sourceRoot":"","sources":["../src/AccountTreeGroup.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,8BAA8B;AAC/B,OAAO,KAAK,EAAE,eAAe,EAAE,uCAAuC;AACtE,OAAO,KAAK,EAAE,SAAS,EAAE,gCAAgC;AACzD,OAAO,KAAK,EAAE,8BAA8B,EAAE,YAAY;AAE1D,eAAO,MAAM,0BAA0B,EAAE,MAAkB,CAAC;AAE5D;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;OAEG;IACH,aAAa,IAAI,SAAS,EAAE,CAAC;IAE7B;;OAEG;IACH,cAAc,IAAI,MAAM,CAAC;CAC1B,GAAG,YAAY,CAAC,eAAe,CAAC,CAAC;AAIlC,qBAAa,uBAAwB,YAAW,gBAAgB;;IAC9D,QAAQ,CAAC,EAAE,EAAE,cAAc,CAAC;IAE5B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;IAEhD,QAAQ,CAAC,SAAS,EAAE,8BAA8B,CAAC;gBAKjD,SAAS,EAAE,8BAA8B,EACzC,MAAM,EAAE,aAAa,CAAC,eAAe,CAAC,EACtC,EAAE,EAAE,MAAM;IASZ,aAAa,IAAI,SAAS,EAAE;IAI5B,WAAW,IAAI,eAAe,EAAE;IAkBhC,UAAU,CAAC,EAAE,EAAE,SAAS,GAAG,eAAe,GAAG,SAAS;IAItD,UAAU,CAAC,OAAO,EAAE,eAAe;IAInC,cAAc,IAAI,MAAM;CAGzB"}
|
|
@@ -9,62 +9,46 @@ 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
|
|
12
|
+
var _MutableAccountTreeGroup_accounts;
|
|
13
|
+
import { toAccountGroupId } from "@metamask/account-api";
|
|
13
14
|
export const DEFAULT_ACCOUNT_GROUP_NAME = 'Default';
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
__classPrivateFieldSet(this, _AccountTreeGroup_messenger, messenger, "f");
|
|
24
|
-
__classPrivateFieldSet(this, _AccountTreeGroup_group, group, "f");
|
|
25
|
-
__classPrivateFieldSet(this, _AccountTreeGroup_wallet, wallet, "f");
|
|
26
|
-
}
|
|
27
|
-
get id() {
|
|
28
|
-
return __classPrivateFieldGet(this, _AccountTreeGroup_group, "f").id;
|
|
29
|
-
}
|
|
30
|
-
get wallet() {
|
|
31
|
-
return __classPrivateFieldGet(this, _AccountTreeGroup_wallet, "f");
|
|
32
|
-
}
|
|
33
|
-
get name() {
|
|
34
|
-
return __classPrivateFieldGet(this, _AccountTreeGroup_group, "f").metadata.name;
|
|
15
|
+
// This class is meant to be used internally by every rules. It exposes mutable operations
|
|
16
|
+
// which should not leak outside of this package.
|
|
17
|
+
export class MutableAccountTreeGroup {
|
|
18
|
+
constructor(messenger, wallet, id) {
|
|
19
|
+
_MutableAccountTreeGroup_accounts.set(this, void 0);
|
|
20
|
+
this.id = toAccountGroupId(wallet.id, id);
|
|
21
|
+
this.wallet = wallet;
|
|
22
|
+
this.messenger = messenger;
|
|
23
|
+
__classPrivateFieldSet(this, _MutableAccountTreeGroup_accounts, new Set(), "f");
|
|
35
24
|
}
|
|
36
25
|
getAccountIds() {
|
|
37
|
-
return __classPrivateFieldGet(this,
|
|
38
|
-
}
|
|
39
|
-
getAccount(id) {
|
|
40
|
-
return __classPrivateFieldGet(this, _AccountTreeGroup_messenger, "f").call('AccountsController:getAccount', id);
|
|
26
|
+
return Array.from(__classPrivateFieldGet(this, _MutableAccountTreeGroup_accounts, "f")); // FIXME: Should we force the copy here?
|
|
41
27
|
}
|
|
42
28
|
getAccounts() {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
29
|
+
const accounts = [];
|
|
30
|
+
for (const id of __classPrivateFieldGet(this, _MutableAccountTreeGroup_accounts, "f")) {
|
|
31
|
+
const account = this.getAccount(id);
|
|
32
|
+
// FIXME: I'm really not sure we should skip those but... We could be
|
|
33
|
+
// "de-sync" with the AccountsController and might have some dangling
|
|
34
|
+
// account IDs.
|
|
35
|
+
if (!account) {
|
|
36
|
+
console.warn(`! Unable to get account: "${id}"`);
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
accounts.push(account);
|
|
49
40
|
}
|
|
50
|
-
return
|
|
41
|
+
return accounts;
|
|
51
42
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
if (accountIds.length === 0) {
|
|
55
|
-
throw new Error('Group contains no account');
|
|
56
|
-
}
|
|
57
|
-
if (accountIds.length > 1) {
|
|
58
|
-
throw new Error('Group contains more than 1 account');
|
|
59
|
-
}
|
|
60
|
-
return __classPrivateFieldGet(this, _AccountTreeGroup_instances, "m", _AccountTreeGroup_getAccount).call(this, accountIds[0]);
|
|
43
|
+
getAccount(id) {
|
|
44
|
+
return this.messenger.call('AccountsController:getAccount', id);
|
|
61
45
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
const account = this.getAccount(id);
|
|
65
|
-
if (!account) {
|
|
66
|
-
throw new Error(`Unable to get account with ID: "${id}"`);
|
|
46
|
+
addAccount(account) {
|
|
47
|
+
__classPrivateFieldGet(this, _MutableAccountTreeGroup_accounts, "f").add(account.id);
|
|
67
48
|
}
|
|
68
|
-
|
|
69
|
-
|
|
49
|
+
getDefaultName() {
|
|
50
|
+
return DEFAULT_ACCOUNT_GROUP_NAME;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
_MutableAccountTreeGroup_accounts = new WeakMap();
|
|
70
54
|
//# sourceMappingURL=AccountTreeGroup.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccountTreeGroup.mjs","sourceRoot":"","sources":["../src/AccountTreeGroup.ts"],"names":[],"mappings":";;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"AccountTreeGroup.mjs","sourceRoot":"","sources":["../src/AccountTreeGroup.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EACL,gBAAgB,EAIjB,8BAA8B;AAK/B,MAAM,CAAC,MAAM,0BAA0B,GAAW,SAAS,CAAC;AAiB5D,0FAA0F;AAC1F,iDAAiD;AACjD,MAAM,OAAO,uBAAuB;IASlC,YACE,SAAyC,EACzC,MAAsC,EACtC,EAAU;QALH,oDAA0B;QAOjC,IAAI,CAAC,EAAE,GAAG,gBAAgB,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAC1C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAE3B,uBAAA,IAAI,qCAAa,IAAI,GAAG,EAAE,MAAA,CAAC;IAC7B,CAAC;IAED,aAAa;QACX,OAAO,KAAK,CAAC,IAAI,CAAC,uBAAA,IAAI,yCAAU,CAAC,CAAC,CAAC,wCAAwC;IAC7E,CAAC;IAED,WAAW;QACT,MAAM,QAAQ,GAAG,EAAE,CAAC;QAEpB,KAAK,MAAM,EAAE,IAAI,uBAAA,IAAI,yCAAU,EAAE;YAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YAEpC,qEAAqE;YACrE,qEAAqE;YACrE,eAAe;YACf,IAAI,CAAC,OAAO,EAAE;gBACZ,OAAO,CAAC,IAAI,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;gBACjD,SAAS;aACV;YACD,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACxB;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,UAAU,CAAC,EAAa;QACtB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,+BAA+B,EAAE,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,UAAU,CAAC,OAAwB;QACjC,uBAAA,IAAI,yCAAU,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC;IAED,cAAc;QACZ,OAAO,0BAA0B,CAAC;IACpC,CAAC;CACF","sourcesContent":["import {\n toAccountGroupId,\n type AccountGroup,\n type AccountGroupId,\n type AccountWallet,\n} from '@metamask/account-api';\nimport type { InternalAccount } from '@metamask/keyring-internal-api';\nimport type { AccountId } from '@metamask/keyring-utils';\nimport type { AccountTreeControllerMessenger } from 'src';\n\nexport const DEFAULT_ACCOUNT_GROUP_NAME: string = 'Default';\n\n/**\n * Account group coming from the {@link AccountTreeController}.\n */\nexport type AccountTreeGroup = {\n /**\n * Account IDs for that account group.\n */\n getAccountIds(): AccountId[];\n\n /**\n * Gets the default name for that account group.\n */\n getDefaultName(): string;\n} & AccountGroup<InternalAccount>;\n\n// This class is meant to be used internally by every rules. It exposes mutable operations\n// which should not leak outside of this package.\nexport class MutableAccountTreeGroup implements AccountTreeGroup {\n readonly id: AccountGroupId;\n\n readonly wallet: AccountWallet<InternalAccount>;\n\n readonly messenger: AccountTreeControllerMessenger;\n\n readonly #accounts: Set<AccountId>;\n\n constructor(\n messenger: AccountTreeControllerMessenger,\n wallet: AccountWallet<InternalAccount>,\n id: string,\n ) {\n this.id = toAccountGroupId(wallet.id, id);\n this.wallet = wallet;\n this.messenger = messenger;\n\n this.#accounts = new Set();\n }\n\n getAccountIds(): AccountId[] {\n return Array.from(this.#accounts); // FIXME: Should we force the copy here?\n }\n\n getAccounts(): InternalAccount[] {\n const accounts = [];\n\n for (const id of this.#accounts) {\n const account = this.getAccount(id);\n\n // FIXME: I'm really not sure we should skip those but... We could be\n // \"de-sync\" with the AccountsController and might have some dangling\n // account IDs.\n if (!account) {\n console.warn(`! Unable to get account: \"${id}\"`);\n continue;\n }\n accounts.push(account);\n }\n return accounts;\n }\n\n getAccount(id: AccountId): InternalAccount | undefined {\n return this.messenger.call('AccountsController:getAccount', id);\n }\n\n addAccount(account: InternalAccount) {\n this.#accounts.add(account.id);\n }\n\n getDefaultName(): string {\n return DEFAULT_ACCOUNT_GROUP_NAME;\n }\n}\n"]}
|
|
@@ -10,75 +10,41 @@ 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
|
|
13
|
+
var _MutableAccountTreeWallet_groups;
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.
|
|
15
|
+
exports.MutableAccountTreeWallet = void 0;
|
|
16
|
+
const account_api_1 = require("@metamask/account-api");
|
|
16
17
|
const AccountTreeGroup_1 = require("./AccountTreeGroup.cjs");
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
__classPrivateFieldSet(this,
|
|
26
|
-
__classPrivateFieldSet(this, _AccountTreeWallet_wallet, wallet, "f");
|
|
27
|
-
__classPrivateFieldSet(this, _AccountTreeWallet_groups, new Map(), "f");
|
|
28
|
-
for (const [groupId, group] of Object.entries(__classPrivateFieldGet(this, _AccountTreeWallet_wallet, "f").groups)) {
|
|
29
|
-
__classPrivateFieldGet(this, _AccountTreeWallet_groups, "f").set(groupId, new AccountTreeGroup_1.AccountTreeGroup({
|
|
30
|
-
messenger: __classPrivateFieldGet(this, _AccountTreeWallet_messenger, "f"),
|
|
31
|
-
wallet: this,
|
|
32
|
-
group,
|
|
33
|
-
}));
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
get id() {
|
|
37
|
-
return __classPrivateFieldGet(this, _AccountTreeWallet_wallet, "f").id;
|
|
38
|
-
}
|
|
39
|
-
get category() {
|
|
40
|
-
return __classPrivateFieldGet(this, _AccountTreeWallet_wallet, "f").category;
|
|
41
|
-
}
|
|
42
|
-
get name() {
|
|
43
|
-
return __classPrivateFieldGet(this, _AccountTreeWallet_wallet, "f").metadata.name;
|
|
18
|
+
// This class is meant to be used internally by every rules. It exposes mutable operations
|
|
19
|
+
// which should not leak outside of this package.
|
|
20
|
+
class MutableAccountTreeWallet {
|
|
21
|
+
constructor(messenger, category, id) {
|
|
22
|
+
_MutableAccountTreeWallet_groups.set(this, void 0);
|
|
23
|
+
this.id = (0, account_api_1.toAccountWalletId)(category, id);
|
|
24
|
+
this.category = category;
|
|
25
|
+
this.messenger = messenger;
|
|
26
|
+
__classPrivateFieldSet(this, _MutableAccountTreeWallet_groups, new Map(), "f");
|
|
44
27
|
}
|
|
45
|
-
/**
|
|
46
|
-
* Gets account tree group for a given ID.
|
|
47
|
-
*
|
|
48
|
-
* @param groupId - Group ID.
|
|
49
|
-
* @returns Account tree group.
|
|
50
|
-
*/
|
|
51
28
|
getAccountGroup(groupId) {
|
|
52
|
-
return __classPrivateFieldGet(this,
|
|
29
|
+
return __classPrivateFieldGet(this, _MutableAccountTreeWallet_groups, "f").get(groupId);
|
|
53
30
|
}
|
|
54
|
-
/**
|
|
55
|
-
* Gets all account tree groups.
|
|
56
|
-
*
|
|
57
|
-
* @returns Account tree groups.
|
|
58
|
-
*/
|
|
59
31
|
getAccountGroups() {
|
|
60
|
-
return Array.from(__classPrivateFieldGet(this,
|
|
32
|
+
return Array.from(__classPrivateFieldGet(this, _MutableAccountTreeWallet_groups, "f").values()); // TODO: Should we avoid the copy here?
|
|
61
33
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
* rule that has been used.
|
|
72
|
-
*/
|
|
73
|
-
getAnyAccount() {
|
|
74
|
-
if (__classPrivateFieldGet(this, _AccountTreeWallet_groups, "f").size === 0) {
|
|
75
|
-
throw new Error('Wallet contains no account group');
|
|
34
|
+
// NOTE: This method SHOULD BE overriden if a rule need to group things differently.
|
|
35
|
+
addAccount(account) {
|
|
36
|
+
const id = account_api_1.DEFAULT_ACCOUNT_GROUP_UNIQUE_ID;
|
|
37
|
+
// Use a single-group by default.
|
|
38
|
+
let group = __classPrivateFieldGet(this, _MutableAccountTreeWallet_groups, "f").get((0, account_api_1.toAccountGroupId)(this.id, id));
|
|
39
|
+
if (!group) {
|
|
40
|
+
// We create the account group and attach it to this wallet.
|
|
41
|
+
group = new AccountTreeGroup_1.MutableAccountTreeGroup(this.messenger, this, id);
|
|
42
|
+
__classPrivateFieldGet(this, _MutableAccountTreeWallet_groups, "f").set(group.id, group);
|
|
76
43
|
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
return group.getAnyAccount();
|
|
44
|
+
group.addAccount(account);
|
|
45
|
+
return group;
|
|
80
46
|
}
|
|
81
47
|
}
|
|
82
|
-
exports.
|
|
83
|
-
|
|
48
|
+
exports.MutableAccountTreeWallet = MutableAccountTreeWallet;
|
|
49
|
+
_MutableAccountTreeWallet_groups = new WeakMap();
|
|
84
50
|
//# sourceMappingURL=AccountTreeWallet.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccountTreeWallet.cjs","sourceRoot":"","sources":["../src/AccountTreeWallet.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"AccountTreeWallet.cjs","sourceRoot":"","sources":["../src/AccountTreeWallet.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,uDAQ+B;AAK/B,6DAA6D;AA0B7D,0FAA0F;AAC1F,iDAAiD;AACjD,MAAsB,wBAAwB;IAS5C,YACE,SAAyC,EACzC,QAA+B,EAC/B,EAAU;QALH,mDAAsD;QAO7D,IAAI,CAAC,EAAE,GAAG,IAAA,+BAAiB,EAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAE3B,uBAAA,IAAI,oCAAW,IAAI,GAAG,EAAE,MAAA,CAAC;IAC3B,CAAC;IAED,eAAe,CAAC,OAAuB;QACrC,OAAO,uBAAA,IAAI,wCAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAED,gBAAgB;QACd,OAAO,KAAK,CAAC,IAAI,CAAC,uBAAA,IAAI,wCAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,uCAAuC;IACnF,CAAC;IAED,oFAAoF;IACpF,UAAU,CAAC,OAAwB;QACjC,MAAM,EAAE,GAAG,6CAA+B,CAAC;QAE3C,iCAAiC;QACjC,IAAI,KAAK,GAAG,uBAAA,IAAI,wCAAQ,CAAC,GAAG,CAAC,IAAA,8BAAgB,EAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5D,IAAI,CAAC,KAAK,EAAE;YACV,4DAA4D;YAC5D,KAAK,GAAG,IAAI,0CAAuB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;YAC9D,uBAAA,IAAI,wCAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;SACnC;QAED,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAE1B,OAAO,KAAK,CAAC;IACf,CAAC;CAGF;AA/CD,4DA+CC","sourcesContent":["import {\n toAccountGroupId,\n toAccountWalletId,\n DEFAULT_ACCOUNT_GROUP_UNIQUE_ID,\n type AccountGroupId,\n type AccountWallet,\n type AccountWalletCategory,\n type AccountWalletId,\n} from '@metamask/account-api';\nimport type { InternalAccount } from '@metamask/keyring-internal-api';\n\nimport { type AccountTreeControllerMessenger } from './AccountTreeController';\nimport type { AccountTreeGroup } from './AccountTreeGroup';\nimport { MutableAccountTreeGroup } from './AccountTreeGroup';\n\n/**\n * Account wallet coming from the {@link AccountTreeController}.\n */\nexport type AccountTreeWallet = {\n /**\n * Gets account tree group for a given ID.\n *\n * @returns Account tree group.\n */\n getAccountGroup(groupId: AccountGroupId): AccountTreeGroup | undefined;\n\n /**\n * Gets all account tree groups.\n *\n * @returns Account tree groups.\n */\n getAccountGroups(): AccountTreeGroup[];\n\n /**\n * Gets the default name for that account wallet.\n */\n getDefaultName(): string;\n} & AccountWallet<InternalAccount>;\n\n// This class is meant to be used internally by every rules. It exposes mutable operations\n// which should not leak outside of this package.\nexport abstract class MutableAccountTreeWallet implements AccountTreeWallet {\n readonly id: AccountWalletId;\n\n readonly category: AccountWalletCategory;\n\n readonly messenger: AccountTreeControllerMessenger;\n\n readonly #groups: Map<AccountGroupId, MutableAccountTreeGroup>;\n\n constructor(\n messenger: AccountTreeControllerMessenger,\n category: AccountWalletCategory,\n id: string,\n ) {\n this.id = toAccountWalletId(category, id);\n this.category = category;\n this.messenger = messenger;\n\n this.#groups = new Map();\n }\n\n getAccountGroup(groupId: AccountGroupId): AccountTreeGroup | undefined {\n return this.#groups.get(groupId);\n }\n\n getAccountGroups(): AccountTreeGroup[] {\n return Array.from(this.#groups.values()); // TODO: Should we avoid the copy here?\n }\n\n // NOTE: This method SHOULD BE overriden if a rule need to group things differently.\n addAccount(account: InternalAccount): MutableAccountTreeGroup {\n const id = DEFAULT_ACCOUNT_GROUP_UNIQUE_ID;\n\n // Use a single-group by default.\n let group = this.#groups.get(toAccountGroupId(this.id, id));\n if (!group) {\n // We create the account group and attach it to this wallet.\n group = new MutableAccountTreeGroup(this.messenger, this, id);\n this.#groups.set(group.id, group);\n }\n\n group.addAccount(account);\n\n return group;\n }\n\n abstract getDefaultName(): string;\n}\n"]}
|
|
@@ -1,25 +1,15 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import { type AccountGroupId, type AccountWallet } from "@metamask/account-api";
|
|
1
|
+
import { type AccountGroupId, type AccountWallet, type AccountWalletCategory, type AccountWalletId } from "@metamask/account-api";
|
|
3
2
|
import type { InternalAccount } from "@metamask/keyring-internal-api";
|
|
4
|
-
import type { AccountWalletObject } from "./AccountTreeController.cjs";
|
|
5
3
|
import { type AccountTreeControllerMessenger } from "./AccountTreeController.cjs";
|
|
6
|
-
import { AccountTreeGroup } from "./AccountTreeGroup.cjs";
|
|
4
|
+
import type { AccountTreeGroup } from "./AccountTreeGroup.cjs";
|
|
5
|
+
import { MutableAccountTreeGroup } from "./AccountTreeGroup.cjs";
|
|
7
6
|
/**
|
|
8
7
|
* Account wallet coming from the {@link AccountTreeController}.
|
|
9
8
|
*/
|
|
10
|
-
export
|
|
11
|
-
#private;
|
|
12
|
-
constructor({ messenger, wallet, }: {
|
|
13
|
-
messenger: AccountTreeControllerMessenger;
|
|
14
|
-
wallet: AccountWalletObject;
|
|
15
|
-
});
|
|
16
|
-
get id(): AccountWalletId;
|
|
17
|
-
get category(): AccountWalletCategory;
|
|
18
|
-
get name(): string;
|
|
9
|
+
export type AccountTreeWallet = {
|
|
19
10
|
/**
|
|
20
11
|
* Gets account tree group for a given ID.
|
|
21
12
|
*
|
|
22
|
-
* @param groupId - Group ID.
|
|
23
13
|
* @returns Account tree group.
|
|
24
14
|
*/
|
|
25
15
|
getAccountGroup(groupId: AccountGroupId): AccountTreeGroup | undefined;
|
|
@@ -30,16 +20,19 @@ export declare class AccountTreeWallet implements AccountWallet<InternalAccount>
|
|
|
30
20
|
*/
|
|
31
21
|
getAccountGroups(): AccountTreeGroup[];
|
|
32
22
|
/**
|
|
33
|
-
* Gets
|
|
34
|
-
*
|
|
35
|
-
* This can be useful if the accounts from this wallet have been grouped some
|
|
36
|
-
* common criteria, so you expect some commonly defined information on any of
|
|
37
|
-
* those accounts.
|
|
38
|
-
*
|
|
39
|
-
* @throws If the wallet has no account group (which should not be possible).
|
|
40
|
-
* @returns Any account that share the same information based on the grouping
|
|
41
|
-
* rule that has been used.
|
|
23
|
+
* Gets the default name for that account wallet.
|
|
42
24
|
*/
|
|
43
|
-
|
|
25
|
+
getDefaultName(): string;
|
|
26
|
+
} & AccountWallet<InternalAccount>;
|
|
27
|
+
export declare abstract class MutableAccountTreeWallet implements AccountTreeWallet {
|
|
28
|
+
#private;
|
|
29
|
+
readonly id: AccountWalletId;
|
|
30
|
+
readonly category: AccountWalletCategory;
|
|
31
|
+
readonly messenger: AccountTreeControllerMessenger;
|
|
32
|
+
constructor(messenger: AccountTreeControllerMessenger, category: AccountWalletCategory, id: string);
|
|
33
|
+
getAccountGroup(groupId: AccountGroupId): AccountTreeGroup | undefined;
|
|
34
|
+
getAccountGroups(): AccountTreeGroup[];
|
|
35
|
+
addAccount(account: InternalAccount): MutableAccountTreeGroup;
|
|
36
|
+
abstract getDefaultName(): string;
|
|
44
37
|
}
|
|
45
38
|
//# sourceMappingURL=AccountTreeWallet.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccountTreeWallet.d.cts","sourceRoot":"","sources":["../src/AccountTreeWallet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"AccountTreeWallet.d.cts","sourceRoot":"","sources":["../src/AccountTreeWallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACrB,8BAA8B;AAC/B,OAAO,KAAK,EAAE,eAAe,EAAE,uCAAuC;AAEtE,OAAO,EAAE,KAAK,8BAA8B,EAAE,oCAAgC;AAC9E,OAAO,KAAK,EAAE,gBAAgB,EAAE,+BAA2B;AAC3D,OAAO,EAAE,uBAAuB,EAAE,+BAA2B;AAE7D;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;;;OAIG;IACH,eAAe,CAAC,OAAO,EAAE,cAAc,GAAG,gBAAgB,GAAG,SAAS,CAAC;IAEvE;;;;OAIG;IACH,gBAAgB,IAAI,gBAAgB,EAAE,CAAC;IAEvC;;OAEG;IACH,cAAc,IAAI,MAAM,CAAC;CAC1B,GAAG,aAAa,CAAC,eAAe,CAAC,CAAC;AAInC,8BAAsB,wBAAyB,YAAW,iBAAiB;;IACzE,QAAQ,CAAC,EAAE,EAAE,eAAe,CAAC;IAE7B,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,CAAC;IAEzC,QAAQ,CAAC,SAAS,EAAE,8BAA8B,CAAC;gBAKjD,SAAS,EAAE,8BAA8B,EACzC,QAAQ,EAAE,qBAAqB,EAC/B,EAAE,EAAE,MAAM;IASZ,eAAe,CAAC,OAAO,EAAE,cAAc,GAAG,gBAAgB,GAAG,SAAS;IAItE,gBAAgB,IAAI,gBAAgB,EAAE;IAKtC,UAAU,CAAC,OAAO,EAAE,eAAe,GAAG,uBAAuB;IAgB7D,QAAQ,CAAC,cAAc,IAAI,MAAM;CAClC"}
|