@metamask-previews/account-tree-controller 0.6.0-preview-bd86fa14 → 0.7.0-preview-3f5f144a
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 +21 -1
- package/dist/AccountTreeController.cjs +195 -41
- package/dist/AccountTreeController.cjs.map +1 -1
- package/dist/AccountTreeController.d.cts +31 -40
- package/dist/AccountTreeController.d.cts.map +1 -1
- package/dist/AccountTreeController.d.mts +31 -40
- package/dist/AccountTreeController.d.mts.map +1 -1
- package/dist/AccountTreeController.mjs +193 -39
- package/dist/AccountTreeController.mjs.map +1 -1
- package/dist/AccountTreeGroup.cjs +44 -35
- package/dist/AccountTreeGroup.cjs.map +1 -1
- package/dist/AccountTreeGroup.d.cts +15 -22
- package/dist/AccountTreeGroup.d.cts.map +1 -1
- package/dist/AccountTreeGroup.d.mts +15 -22
- package/dist/AccountTreeGroup.d.mts.map +1 -1
- package/dist/AccountTreeGroup.mjs +42 -33
- package/dist/AccountTreeGroup.mjs.map +1 -1
- package/dist/AccountTreeRule.cjs +37 -0
- package/dist/AccountTreeRule.cjs.map +1 -0
- package/dist/AccountTreeRule.d.cts +53 -0
- package/dist/AccountTreeRule.d.cts.map +1 -0
- package/dist/AccountTreeRule.d.mts +53 -0
- package/dist/AccountTreeRule.d.mts.map +1 -0
- package/dist/AccountTreeRule.mjs +33 -0
- package/dist/AccountTreeRule.mjs.map +1 -0
- package/dist/AccountTreeWallet.cjs +53 -26
- package/dist/AccountTreeWallet.cjs.map +1 -1
- package/dist/AccountTreeWallet.d.cts +26 -21
- package/dist/AccountTreeWallet.d.cts.map +1 -1
- package/dist/AccountTreeWallet.d.mts +26 -21
- package/dist/AccountTreeWallet.d.mts.map +1 -1
- package/dist/AccountTreeWallet.mjs +52 -25
- package/dist/AccountTreeWallet.mjs.map +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/rules/entropy.cjs +68 -0
- package/dist/rules/entropy.cjs.map +1 -0
- package/dist/rules/entropy.d.cts +13 -0
- package/dist/rules/entropy.d.cts.map +1 -0
- package/dist/rules/entropy.d.mts +13 -0
- package/dist/rules/entropy.d.mts.map +1 -0
- package/dist/rules/entropy.mjs +64 -0
- package/dist/rules/entropy.mjs.map +1 -0
- package/dist/rules/keyring.cjs +86 -0
- package/dist/rules/keyring.cjs.map +1 -0
- package/dist/rules/keyring.d.cts +21 -0
- package/dist/rules/keyring.d.cts.map +1 -0
- package/dist/rules/keyring.d.mts +21 -0
- package/dist/rules/keyring.d.mts.map +1 -0
- package/dist/rules/keyring.mjs +81 -0
- package/dist/rules/keyring.mjs.map +1 -0
- package/dist/rules/snap.cjs +58 -0
- package/dist/rules/snap.cjs.map +1 -0
- package/dist/rules/snap.d.cts +22 -0
- package/dist/rules/snap.d.cts.map +1 -0
- package/dist/rules/snap.d.mts +22 -0
- package/dist/rules/snap.d.mts.map +1 -0
- package/dist/rules/snap.mjs +54 -0
- package/dist/rules/snap.mjs.map +1 -0
- package/dist/types.cjs +3 -0
- package/dist/types.cjs.map +1 -0
- package/dist/types.d.cts +83 -0
- package/dist/types.d.cts.map +1 -0
- package/dist/types.d.mts +83 -0
- package/dist/types.d.mts.map +1 -0
- package/dist/types.mjs +2 -0
- package/dist/types.mjs.map +1 -0
- package/package.json +4 -4
- package/dist/rules/EntropySourceWalletRule.cjs +0 -100
- package/dist/rules/EntropySourceWalletRule.cjs.map +0 -1
- package/dist/rules/EntropySourceWalletRule.d.cts +0 -19
- package/dist/rules/EntropySourceWalletRule.d.cts.map +0 -1
- package/dist/rules/EntropySourceWalletRule.d.mts +0 -19
- package/dist/rules/EntropySourceWalletRule.d.mts.map +0 -1
- package/dist/rules/EntropySourceWalletRule.mjs +0 -95
- package/dist/rules/EntropySourceWalletRule.mjs.map +0 -1
- package/dist/rules/KeyringWalletRule.cjs +0 -99
- package/dist/rules/KeyringWalletRule.cjs.map +0 -1
- package/dist/rules/KeyringWalletRule.d.cts +0 -18
- package/dist/rules/KeyringWalletRule.d.cts.map +0 -1
- package/dist/rules/KeyringWalletRule.d.mts +0 -18
- package/dist/rules/KeyringWalletRule.d.mts.map +0 -1
- package/dist/rules/KeyringWalletRule.mjs +0 -94
- package/dist/rules/KeyringWalletRule.mjs.map +0 -1
- package/dist/rules/SnapWalletRule.cjs +0 -70
- package/dist/rules/SnapWalletRule.cjs.map +0 -1
- package/dist/rules/SnapWalletRule.d.cts +0 -10
- package/dist/rules/SnapWalletRule.d.cts.map +0 -1
- package/dist/rules/SnapWalletRule.d.mts +0 -10
- package/dist/rules/SnapWalletRule.d.mts.map +0 -1
- package/dist/rules/SnapWalletRule.mjs +0 -66
- package/dist/rules/SnapWalletRule.mjs.map +0 -1
- package/dist/rules/WalletRule.cjs +0 -13
- package/dist/rules/WalletRule.cjs.map +0 -1
- package/dist/rules/WalletRule.d.cts +0 -37
- package/dist/rules/WalletRule.d.cts.map +0 -1
- package/dist/rules/WalletRule.d.mts +0 -37
- package/dist/rules/WalletRule.d.mts.map +0 -1
- package/dist/rules/WalletRule.mjs +0 -9
- package/dist/rules/WalletRule.mjs.map +0 -1
- package/dist/rules/index.cjs +0 -21
- package/dist/rules/index.cjs.map +0 -1
- package/dist/rules/index.d.cts +0 -5
- package/dist/rules/index.d.cts.map +0 -1
- package/dist/rules/index.d.mts +0 -5
- package/dist/rules/index.d.mts.map +0 -1
- package/dist/rules/index.mjs +0 -5
- package/dist/rules/index.mjs.map +0 -1
- package/dist/rules/utils.cjs +0 -15
- package/dist/rules/utils.cjs.map +0 -1
- package/dist/rules/utils.d.cts +0 -11
- package/dist/rules/utils.d.cts.map +0 -1
- package/dist/rules/utils.d.mts +0 -11
- package/dist/rules/utils.d.mts.map +0 -1
- package/dist/rules/utils.mjs +0 -11
- package/dist/rules/utils.mjs.map +0 -1
|
@@ -9,38 +9,65 @@ 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
|
|
13
|
-
import {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
export class
|
|
18
|
-
constructor(messenger,
|
|
19
|
-
|
|
20
|
-
this.id = toAccountWalletId(category, id);
|
|
21
|
-
this.category = category;
|
|
12
|
+
var _AccountTreeWallet_wallet;
|
|
13
|
+
import { AccountTreeGroup } from "./AccountTreeGroup.mjs";
|
|
14
|
+
/**
|
|
15
|
+
* Account wallet coming from the {@link AccountTreeController}.
|
|
16
|
+
*/
|
|
17
|
+
export class AccountTreeWallet {
|
|
18
|
+
constructor({ messenger, wallet, }) {
|
|
19
|
+
_AccountTreeWallet_wallet.set(this, void 0);
|
|
22
20
|
this.messenger = messenger;
|
|
23
|
-
__classPrivateFieldSet(this,
|
|
21
|
+
__classPrivateFieldSet(this, _AccountTreeWallet_wallet, wallet, "f");
|
|
22
|
+
this.groups = new Map();
|
|
23
|
+
for (const [groupId, group] of Object.entries(__classPrivateFieldGet(this, _AccountTreeWallet_wallet, "f").groups)) {
|
|
24
|
+
this.groups.set(groupId, new AccountTreeGroup({
|
|
25
|
+
messenger: this.messenger,
|
|
26
|
+
wallet: this,
|
|
27
|
+
group,
|
|
28
|
+
}));
|
|
29
|
+
}
|
|
24
30
|
}
|
|
25
|
-
|
|
26
|
-
return __classPrivateFieldGet(this,
|
|
31
|
+
get id() {
|
|
32
|
+
return __classPrivateFieldGet(this, _AccountTreeWallet_wallet, "f").id;
|
|
27
33
|
}
|
|
28
|
-
|
|
29
|
-
return
|
|
34
|
+
get category() {
|
|
35
|
+
return __classPrivateFieldGet(this, _AccountTreeWallet_wallet, "f").metadata.type;
|
|
36
|
+
}
|
|
37
|
+
get name() {
|
|
38
|
+
return __classPrivateFieldGet(this, _AccountTreeWallet_wallet, "f").metadata.name;
|
|
30
39
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
40
|
+
/**
|
|
41
|
+
* Gets account tree group for a given ID.
|
|
42
|
+
*
|
|
43
|
+
* @param groupId - Group ID.
|
|
44
|
+
* @returns Account tree group, or undefined if not found.
|
|
45
|
+
*/
|
|
46
|
+
getAccountGroup(groupId) {
|
|
47
|
+
return this.groups.get(groupId);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Gets account tree group for a given ID.
|
|
51
|
+
*
|
|
52
|
+
* @param groupId - Group ID.
|
|
53
|
+
* @throws If the account group is not found.
|
|
54
|
+
* @returns Account tree group.
|
|
55
|
+
*/
|
|
56
|
+
getAccountGroupOrThrow(groupId) {
|
|
57
|
+
const group = this.getAccountGroup(groupId);
|
|
36
58
|
if (!group) {
|
|
37
|
-
|
|
38
|
-
group = new MutableAccountTreeGroup(this.messenger, this, id);
|
|
39
|
-
__classPrivateFieldGet(this, _MutableAccountTreeWallet_groups, "f").set(group.id, group);
|
|
59
|
+
throw new Error('Unable to get account group');
|
|
40
60
|
}
|
|
41
|
-
group.addAccount(account);
|
|
42
61
|
return group;
|
|
43
62
|
}
|
|
63
|
+
/**
|
|
64
|
+
* Gets all account tree groups.
|
|
65
|
+
*
|
|
66
|
+
* @returns Account tree groups.
|
|
67
|
+
*/
|
|
68
|
+
getAccountGroups() {
|
|
69
|
+
return Array.from(this.groups.values());
|
|
70
|
+
}
|
|
44
71
|
}
|
|
45
|
-
|
|
72
|
+
_AccountTreeWallet_wallet = new WeakMap();
|
|
46
73
|
//# sourceMappingURL=AccountTreeWallet.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccountTreeWallet.mjs","sourceRoot":"","sources":["../src/AccountTreeWallet.ts"],"names":[],"mappings":";;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"AccountTreeWallet.mjs","sourceRoot":"","sources":["../src/AccountTreeWallet.ts"],"names":[],"mappings":";;;;;;;;;;;;AAOA,OAAO,EAAE,gBAAgB,EAAE,+BAA2B;AAItD;;GAEG;AACH,MAAM,OAAO,iBAAiB;IAO5B,YAAY,EACV,SAAS,EACT,MAAM,GAIP;QAZQ,4CAA6B;QAapC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,uBAAA,IAAI,6BAAW,MAAM,MAAA,CAAC;QACtB,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;QAExB,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,uBAAA,IAAI,iCAAQ,CAAC,MAAM,CAAC,EAAE;YAClE,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,OAAyB,EACzB,IAAI,gBAAgB,CAAC;gBACnB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,MAAM,EAAE,IAAI;gBACZ,KAAK;aACN,CAAC,CACH,CAAC;SACH;IACH,CAAC;IAED,IAAI,EAAE;QACJ,OAAO,uBAAA,IAAI,iCAAQ,CAAC,EAAE,CAAC;IACzB,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,uBAAA,IAAI,iCAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;IACpC,CAAC;IAED,IAAI,IAAI;QACN,OAAO,uBAAA,IAAI,iCAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;IACpC,CAAC;IAED;;;;;OAKG;IACH,eAAe,CAAC,OAAuB;QACrC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAED;;;;;;OAMG;IACH,sBAAsB,CAAC,OAAuB;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,KAAK,EAAE;YACV,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;SAChD;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;OAIG;IACH,gBAAgB;QACd,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1C,CAAC;CACF","sourcesContent":["import type {\n AccountWalletCategory,\n AccountWalletId,\n} from '@metamask/account-api';\nimport { type AccountGroupId, type AccountWallet } from '@metamask/account-api';\nimport type { InternalAccount } from '@metamask/keyring-internal-api';\n\nimport { AccountTreeGroup } from './AccountTreeGroup';\nimport type { AccountWalletObject } from './types';\nimport { type AccountTreeControllerMessenger } from './types';\n\n/**\n * Account wallet coming from the {@link AccountTreeController}.\n */\nexport class AccountTreeWallet implements AccountWallet<InternalAccount> {\n readonly #wallet: AccountWalletObject;\n\n protected messenger: AccountTreeControllerMessenger;\n\n protected groups: Map<AccountGroupId, AccountTreeGroup>;\n\n constructor({\n messenger,\n wallet,\n }: {\n messenger: AccountTreeControllerMessenger;\n wallet: AccountWalletObject;\n }) {\n this.messenger = messenger;\n this.#wallet = wallet;\n this.groups = new Map();\n\n for (const [groupId, group] of Object.entries(this.#wallet.groups)) {\n this.groups.set(\n groupId as AccountGroupId,\n new AccountTreeGroup({\n messenger: this.messenger,\n wallet: this,\n group,\n }),\n );\n }\n }\n\n get id(): AccountWalletId {\n return this.#wallet.id;\n }\n\n get category(): AccountWalletCategory {\n return this.#wallet.metadata.type;\n }\n\n get name(): string {\n return this.#wallet.metadata.name;\n }\n\n /**\n * Gets account tree group for a given ID.\n *\n * @param groupId - Group ID.\n * @returns Account tree group, or undefined if not found.\n */\n getAccountGroup(groupId: AccountGroupId): AccountTreeGroup | undefined {\n return this.groups.get(groupId);\n }\n\n /**\n * Gets account tree group for a given ID.\n *\n * @param groupId - Group ID.\n * @throws If the account group is not found.\n * @returns Account tree group.\n */\n getAccountGroupOrThrow(groupId: AccountGroupId): AccountTreeGroup {\n const group = this.getAccountGroup(groupId);\n if (!group) {\n throw new Error('Unable to get account group');\n }\n\n return group;\n }\n\n /**\n * Gets all account tree groups.\n *\n * @returns Account tree groups.\n */\n getAccountGroups(): AccountTreeGroup[] {\n return Array.from(this.groups.values());\n }\n}\n"]}
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAkBA,qEAGiC;AAF/B,8HAAA,qBAAqB,OAAA;AACrB,6IAAA,oCAAoC,OAAA","sourcesContent":["export type {\n AccountTreeControllerState,\n AccountTreeControllerGetStateAction,\n AccountTreeControllerActions,\n AccountTreeControllerSetSelectedAccountGroupAction,\n AccountTreeControllerGetSelectedAccountGroupAction,\n AccountTreeControllerStateChangeEvent,\n AccountTreeControllerEvents,\n AccountTreeControllerMessenger,\n AccountWalletObject,\n AccountWalletMetadata,\n AccountWalletCategoryMetadata,\n AccountWalletEntropyMetadata,\n AccountWalletKeyringMetadata,\n AccountWalletSnapMetadata,\n AccountGroupObject,\n AccountGroupMetadata,\n} from './types';\nexport {\n AccountTreeController,\n getDefaultAccountTreeControllerState,\n} from './AccountTreeController';\nexport type { AccountTreeWallet } from './AccountTreeWallet';\nexport type { AccountTreeGroup } from './AccountTreeGroup';\n"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type { AccountTreeControllerState, AccountTreeControllerGetStateAction, AccountTreeControllerActions, AccountTreeControllerStateChangeEvent, AccountTreeControllerEvents, AccountTreeControllerMessenger, AccountWalletObject, AccountWalletMetadata, AccountGroupObject, AccountGroupMetadata, } from "./
|
|
1
|
+
export type { AccountTreeControllerState, AccountTreeControllerGetStateAction, AccountTreeControllerActions, AccountTreeControllerSetSelectedAccountGroupAction, AccountTreeControllerGetSelectedAccountGroupAction, AccountTreeControllerStateChangeEvent, AccountTreeControllerEvents, AccountTreeControllerMessenger, AccountWalletObject, AccountWalletMetadata, AccountWalletCategoryMetadata, AccountWalletEntropyMetadata, AccountWalletKeyringMetadata, AccountWalletSnapMetadata, AccountGroupObject, AccountGroupMetadata, } from "./types.cjs";
|
|
2
2
|
export { AccountTreeController, getDefaultAccountTreeControllerState, } from "./AccountTreeController.cjs";
|
|
3
3
|
export type { AccountTreeWallet } from "./AccountTreeWallet.cjs";
|
|
4
4
|
export type { AccountTreeGroup } from "./AccountTreeGroup.cjs";
|
package/dist/index.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,0BAA0B,EAC1B,mCAAmC,EACnC,4BAA4B,EAC5B,qCAAqC,EACrC,2BAA2B,EAC3B,8BAA8B,EAC9B,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,GACrB,
|
|
1
|
+
{"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,0BAA0B,EAC1B,mCAAmC,EACnC,4BAA4B,EAC5B,kDAAkD,EAClD,kDAAkD,EAClD,qCAAqC,EACrC,2BAA2B,EAC3B,8BAA8B,EAC9B,mBAAmB,EACnB,qBAAqB,EACrB,6BAA6B,EAC7B,4BAA4B,EAC5B,4BAA4B,EAC5B,yBAAyB,EACzB,kBAAkB,EAClB,oBAAoB,GACrB,oBAAgB;AACjB,OAAO,EACL,qBAAqB,EACrB,oCAAoC,GACrC,oCAAgC;AACjC,YAAY,EAAE,iBAAiB,EAAE,gCAA4B;AAC7D,YAAY,EAAE,gBAAgB,EAAE,+BAA2B"}
|
package/dist/index.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type { AccountTreeControllerState, AccountTreeControllerGetStateAction, AccountTreeControllerActions, AccountTreeControllerStateChangeEvent, AccountTreeControllerEvents, AccountTreeControllerMessenger, AccountWalletObject, AccountWalletMetadata, AccountGroupObject, AccountGroupMetadata, } from "./
|
|
1
|
+
export type { AccountTreeControllerState, AccountTreeControllerGetStateAction, AccountTreeControllerActions, AccountTreeControllerSetSelectedAccountGroupAction, AccountTreeControllerGetSelectedAccountGroupAction, AccountTreeControllerStateChangeEvent, AccountTreeControllerEvents, AccountTreeControllerMessenger, AccountWalletObject, AccountWalletMetadata, AccountWalletCategoryMetadata, AccountWalletEntropyMetadata, AccountWalletKeyringMetadata, AccountWalletSnapMetadata, AccountGroupObject, AccountGroupMetadata, } from "./types.mjs";
|
|
2
2
|
export { AccountTreeController, getDefaultAccountTreeControllerState, } from "./AccountTreeController.mjs";
|
|
3
3
|
export type { AccountTreeWallet } from "./AccountTreeWallet.mjs";
|
|
4
4
|
export type { AccountTreeGroup } from "./AccountTreeGroup.mjs";
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,0BAA0B,EAC1B,mCAAmC,EACnC,4BAA4B,EAC5B,qCAAqC,EACrC,2BAA2B,EAC3B,8BAA8B,EAC9B,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,GACrB,
|
|
1
|
+
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,0BAA0B,EAC1B,mCAAmC,EACnC,4BAA4B,EAC5B,kDAAkD,EAClD,kDAAkD,EAClD,qCAAqC,EACrC,2BAA2B,EAC3B,8BAA8B,EAC9B,mBAAmB,EACnB,qBAAqB,EACrB,6BAA6B,EAC7B,4BAA4B,EAC5B,4BAA4B,EAC5B,yBAAyB,EACzB,kBAAkB,EAClB,oBAAoB,GACrB,oBAAgB;AACjB,OAAO,EACL,qBAAqB,EACrB,oCAAoC,GACrC,oCAAgC;AACjC,YAAY,EAAE,iBAAiB,EAAE,gCAA4B;AAC7D,YAAY,EAAE,gBAAgB,EAAE,+BAA2B"}
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAkBA,OAAO,EACL,qBAAqB,EACrB,oCAAoC,EACrC,oCAAgC","sourcesContent":["export type {\n AccountTreeControllerState,\n AccountTreeControllerGetStateAction,\n AccountTreeControllerActions,\n AccountTreeControllerSetSelectedAccountGroupAction,\n AccountTreeControllerGetSelectedAccountGroupAction,\n AccountTreeControllerStateChangeEvent,\n AccountTreeControllerEvents,\n AccountTreeControllerMessenger,\n AccountWalletObject,\n AccountWalletMetadata,\n AccountWalletCategoryMetadata,\n AccountWalletEntropyMetadata,\n AccountWalletKeyringMetadata,\n AccountWalletSnapMetadata,\n AccountGroupObject,\n AccountGroupMetadata,\n} from './types';\nexport {\n AccountTreeController,\n getDefaultAccountTreeControllerState,\n} from './AccountTreeController';\nexport type { AccountTreeWallet } from './AccountTreeWallet';\nexport type { AccountTreeGroup } from './AccountTreeGroup';\n"]}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EntropyRule = void 0;
|
|
4
|
+
const account_api_1 = require("@metamask/account-api");
|
|
5
|
+
const keyring_api_1 = require("@metamask/keyring-api");
|
|
6
|
+
const keyring_controller_1 = require("@metamask/keyring-controller");
|
|
7
|
+
const AccountTreeRule_1 = require("../AccountTreeRule.cjs");
|
|
8
|
+
class EntropyRule extends AccountTreeRule_1.AccountTreeRule {
|
|
9
|
+
constructor() {
|
|
10
|
+
super(...arguments);
|
|
11
|
+
this.category = account_api_1.AccountWalletCategory.Entropy;
|
|
12
|
+
}
|
|
13
|
+
getEntropySourceIndex(entropySource) {
|
|
14
|
+
const { keyrings } = this.messenger.call('KeyringController:getState');
|
|
15
|
+
return keyrings
|
|
16
|
+
.filter((keyring) => keyring.type === keyring_controller_1.KeyringTypes.hd)
|
|
17
|
+
.findIndex((keyring) => keyring.metadata.id === entropySource);
|
|
18
|
+
}
|
|
19
|
+
match(account) {
|
|
20
|
+
if (!(0, account_api_1.isBip44Account)(account)) {
|
|
21
|
+
return undefined;
|
|
22
|
+
}
|
|
23
|
+
const entropySource = account.options.entropy.id;
|
|
24
|
+
const entropySourceIndex = this.getEntropySourceIndex(entropySource);
|
|
25
|
+
if (entropySourceIndex === -1) {
|
|
26
|
+
console.warn(`! Found an unknown entropy ID: "${entropySource}", account "${account.id}" won't be grouped by entropy.`);
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
const walletId = (0, account_api_1.toMultichainAccountWalletId)(account.options.entropy.id);
|
|
30
|
+
const wallet = {
|
|
31
|
+
id: walletId,
|
|
32
|
+
metadata: {
|
|
33
|
+
type: account_api_1.AccountWalletCategory.Entropy,
|
|
34
|
+
entropy: {
|
|
35
|
+
id: entropySource,
|
|
36
|
+
// QUESTION: Should we re-compute the index everytime instead?
|
|
37
|
+
index: entropySourceIndex,
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
const group = {
|
|
42
|
+
id: (0, account_api_1.toMultichainAccountId)(walletId, account.options.entropy.groupIndex),
|
|
43
|
+
};
|
|
44
|
+
return {
|
|
45
|
+
wallet,
|
|
46
|
+
group,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
getDefaultAccountWalletName(wallet) {
|
|
50
|
+
// Precondition: We assume the AccountTreeController will always use
|
|
51
|
+
// the proper wallet instance.
|
|
52
|
+
const options = wallet.metadata;
|
|
53
|
+
return `Wallet ${options.entropy.index + 1}`; // Use human indexing (starts at 1).
|
|
54
|
+
}
|
|
55
|
+
getDefaultAccountGroupName(group) {
|
|
56
|
+
// EVM account name has a highest priority.
|
|
57
|
+
const accounts = this.getAccountsFrom(group);
|
|
58
|
+
const evmAccount = accounts.find((account) => (0, keyring_api_1.isEvmAccountType)(account.type));
|
|
59
|
+
if (evmAccount) {
|
|
60
|
+
return evmAccount.metadata.name;
|
|
61
|
+
}
|
|
62
|
+
// We should always have an account, since this function will be called only
|
|
63
|
+
// if an account got a match.
|
|
64
|
+
return accounts[0].metadata.name;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
exports.EntropyRule = EntropyRule;
|
|
68
|
+
//# sourceMappingURL=entropy.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entropy.cjs","sourceRoot":"","sources":["../../src/rules/entropy.ts"],"names":[],"mappings":";;;AAAA,uDAK+B;AAC/B,uDAAyD;AACzD,qEAA4D;AAS5D,4DAAqD;AAErD,MAAa,WAAY,SAAQ,iCAAe;IAAhD;;QACW,aAAQ,GAAG,mCAAqB,CAAC,OAAO,CAAC;IAqEpD,CAAC;IAnEC,qBAAqB,CAAC,aAAqB;QACzC,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAEvE,OAAO,QAAQ;aACZ,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAM,iCAAY,CAAC,EAAa,CAAC;aACjE,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,KAAK,aAAa,CAAC,CAAC;IACnE,CAAC;IAED,KAAK,CAAC,OAAwB;QAC5B,IAAI,CAAC,IAAA,4BAAc,EAAC,OAAO,CAAC,EAAE;YAC5B,OAAO,SAAS,CAAC;SAClB;QAED,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACjD,MAAM,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC;QACrE,IAAI,kBAAkB,KAAK,CAAC,CAAC,EAAE;YAC7B,OAAO,CAAC,IAAI,CACV,mCAAmC,aAAa,eAAe,OAAO,CAAC,EAAE,gCAAgC,CAC1G,CAAC;YACF,OAAO,SAAS,CAAC;SAClB;QAED,MAAM,QAAQ,GAAG,IAAA,yCAA2B,EAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACzE,MAAM,MAAM,GAAoC;YAC9C,EAAE,EAAE,QAAQ;YACZ,QAAQ,EAAE;gBACR,IAAI,EAAE,mCAAqB,CAAC,OAAO;gBACnC,OAAO,EAAE;oBACP,EAAE,EAAE,aAAa;oBACjB,8DAA8D;oBAC9D,KAAK,EAAE,kBAAkB;iBAC1B;aACF;SACF,CAAC;QAEF,MAAM,KAAK,GAAmC;YAC5C,EAAE,EAAE,IAAA,mCAAqB,EAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC;SACxE,CAAC;QAEF,OAAO;YACL,MAAM;YACN,KAAK;SACN,CAAC;IACJ,CAAC;IAED,2BAA2B,CAAC,MAA2B;QACrD,oEAAoE;QACpE,8BAA8B;QAC9B,MAAM,OAAO,GAAG,MAAM,CAAC,QAAwC,CAAC;QAEhE,OAAO,UAAU,OAAO,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,oCAAoC;IACpF,CAAC;IAED,0BAA0B,CAAC,KAAyB;QAClD,2CAA2C;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC7C,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAC3C,IAAA,8BAAgB,EAAC,OAAO,CAAC,IAAI,CAAC,CAC/B,CAAC;QACF,IAAI,UAAU,EAAE;YACd,OAAO,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC;SACjC;QAED,4EAA4E;QAC5E,6BAA6B;QAC7B,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;IACnC,CAAC;CACF;AAtED,kCAsEC","sourcesContent":["import {\n AccountWalletCategory,\n isBip44Account,\n toMultichainAccountId,\n toMultichainAccountWalletId,\n} from '@metamask/account-api';\nimport { isEvmAccountType } from '@metamask/keyring-api';\nimport { KeyringTypes } from '@metamask/keyring-controller';\nimport type { InternalAccount } from '@metamask/keyring-internal-api';\n\nimport type {\n AccountGroupObject,\n AccountWalletEntropyMetadata,\n AccountWalletObject,\n} from '..';\nimport type { AccountTreeRuleResult } from '../AccountTreeRule';\nimport { AccountTreeRule } from '../AccountTreeRule';\n\nexport class EntropyRule extends AccountTreeRule {\n readonly category = AccountWalletCategory.Entropy;\n\n getEntropySourceIndex(entropySource: string) {\n const { keyrings } = this.messenger.call('KeyringController:getState');\n\n return keyrings\n .filter((keyring) => keyring.type === (KeyringTypes.hd as string))\n .findIndex((keyring) => keyring.metadata.id === entropySource);\n }\n\n match(account: InternalAccount): AccountTreeRuleResult | undefined {\n if (!isBip44Account(account)) {\n return undefined;\n }\n\n const entropySource = account.options.entropy.id;\n const entropySourceIndex = this.getEntropySourceIndex(entropySource);\n if (entropySourceIndex === -1) {\n console.warn(\n `! Found an unknown entropy ID: \"${entropySource}\", account \"${account.id}\" won't be grouped by entropy.`,\n );\n return undefined;\n }\n\n const walletId = toMultichainAccountWalletId(account.options.entropy.id);\n const wallet: AccountTreeRuleResult['wallet'] = {\n id: walletId,\n metadata: {\n type: AccountWalletCategory.Entropy,\n entropy: {\n id: entropySource,\n // QUESTION: Should we re-compute the index everytime instead?\n index: entropySourceIndex,\n },\n },\n };\n\n const group: AccountTreeRuleResult['group'] = {\n id: toMultichainAccountId(walletId, account.options.entropy.groupIndex),\n };\n\n return {\n wallet,\n group,\n };\n }\n\n getDefaultAccountWalletName(wallet: AccountWalletObject): string {\n // Precondition: We assume the AccountTreeController will always use\n // the proper wallet instance.\n const options = wallet.metadata as AccountWalletEntropyMetadata;\n\n return `Wallet ${options.entropy.index + 1}`; // Use human indexing (starts at 1).\n }\n\n getDefaultAccountGroupName(group: AccountGroupObject): string {\n // EVM account name has a highest priority.\n const accounts = this.getAccountsFrom(group);\n const evmAccount = accounts.find((account) =>\n isEvmAccountType(account.type),\n );\n if (evmAccount) {\n return evmAccount.metadata.name;\n }\n\n // We should always have an account, since this function will be called only\n // if an account got a match.\n return accounts[0].metadata.name;\n }\n}\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { AccountWalletCategory } from "@metamask/account-api";
|
|
2
|
+
import type { InternalAccount } from "@metamask/keyring-internal-api";
|
|
3
|
+
import type { AccountGroupObject, AccountWalletObject } from "../index.cjs";
|
|
4
|
+
import type { AccountTreeRuleResult } from "../AccountTreeRule.cjs";
|
|
5
|
+
import { AccountTreeRule } from "../AccountTreeRule.cjs";
|
|
6
|
+
export declare class EntropyRule extends AccountTreeRule {
|
|
7
|
+
readonly category = AccountWalletCategory.Entropy;
|
|
8
|
+
getEntropySourceIndex(entropySource: string): number;
|
|
9
|
+
match(account: InternalAccount): AccountTreeRuleResult | undefined;
|
|
10
|
+
getDefaultAccountWalletName(wallet: AccountWalletObject): string;
|
|
11
|
+
getDefaultAccountGroupName(group: AccountGroupObject): string;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=entropy.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entropy.d.cts","sourceRoot":"","sources":["../../src/rules/entropy.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EAItB,8BAA8B;AAG/B,OAAO,KAAK,EAAE,eAAe,EAAE,uCAAuC;AAEtE,OAAO,KAAK,EACV,kBAAkB,EAElB,mBAAmB,EACpB,qBAAW;AACZ,OAAO,KAAK,EAAE,qBAAqB,EAAE,+BAA2B;AAChE,OAAO,EAAE,eAAe,EAAE,+BAA2B;AAErD,qBAAa,WAAY,SAAQ,eAAe;IAC9C,QAAQ,CAAC,QAAQ,iCAAiC;IAElD,qBAAqB,CAAC,aAAa,EAAE,MAAM;IAQ3C,KAAK,CAAC,OAAO,EAAE,eAAe,GAAG,qBAAqB,GAAG,SAAS;IAqClE,2BAA2B,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM;IAQhE,0BAA0B,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM;CAc9D"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { AccountWalletCategory } from "@metamask/account-api";
|
|
2
|
+
import type { InternalAccount } from "@metamask/keyring-internal-api";
|
|
3
|
+
import type { AccountGroupObject, AccountWalletObject } from "../index.mjs";
|
|
4
|
+
import type { AccountTreeRuleResult } from "../AccountTreeRule.mjs";
|
|
5
|
+
import { AccountTreeRule } from "../AccountTreeRule.mjs";
|
|
6
|
+
export declare class EntropyRule extends AccountTreeRule {
|
|
7
|
+
readonly category = AccountWalletCategory.Entropy;
|
|
8
|
+
getEntropySourceIndex(entropySource: string): number;
|
|
9
|
+
match(account: InternalAccount): AccountTreeRuleResult | undefined;
|
|
10
|
+
getDefaultAccountWalletName(wallet: AccountWalletObject): string;
|
|
11
|
+
getDefaultAccountGroupName(group: AccountGroupObject): string;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=entropy.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entropy.d.mts","sourceRoot":"","sources":["../../src/rules/entropy.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EAItB,8BAA8B;AAG/B,OAAO,KAAK,EAAE,eAAe,EAAE,uCAAuC;AAEtE,OAAO,KAAK,EACV,kBAAkB,EAElB,mBAAmB,EACpB,qBAAW;AACZ,OAAO,KAAK,EAAE,qBAAqB,EAAE,+BAA2B;AAChE,OAAO,EAAE,eAAe,EAAE,+BAA2B;AAErD,qBAAa,WAAY,SAAQ,eAAe;IAC9C,QAAQ,CAAC,QAAQ,iCAAiC;IAElD,qBAAqB,CAAC,aAAa,EAAE,MAAM;IAQ3C,KAAK,CAAC,OAAO,EAAE,eAAe,GAAG,qBAAqB,GAAG,SAAS;IAqClE,2BAA2B,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM;IAQhE,0BAA0B,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM;CAc9D"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { AccountWalletCategory, isBip44Account, toMultichainAccountId, toMultichainAccountWalletId } from "@metamask/account-api";
|
|
2
|
+
import { isEvmAccountType } from "@metamask/keyring-api";
|
|
3
|
+
import { KeyringTypes } from "@metamask/keyring-controller";
|
|
4
|
+
import { AccountTreeRule } from "../AccountTreeRule.mjs";
|
|
5
|
+
export class EntropyRule extends AccountTreeRule {
|
|
6
|
+
constructor() {
|
|
7
|
+
super(...arguments);
|
|
8
|
+
this.category = AccountWalletCategory.Entropy;
|
|
9
|
+
}
|
|
10
|
+
getEntropySourceIndex(entropySource) {
|
|
11
|
+
const { keyrings } = this.messenger.call('KeyringController:getState');
|
|
12
|
+
return keyrings
|
|
13
|
+
.filter((keyring) => keyring.type === KeyringTypes.hd)
|
|
14
|
+
.findIndex((keyring) => keyring.metadata.id === entropySource);
|
|
15
|
+
}
|
|
16
|
+
match(account) {
|
|
17
|
+
if (!isBip44Account(account)) {
|
|
18
|
+
return undefined;
|
|
19
|
+
}
|
|
20
|
+
const entropySource = account.options.entropy.id;
|
|
21
|
+
const entropySourceIndex = this.getEntropySourceIndex(entropySource);
|
|
22
|
+
if (entropySourceIndex === -1) {
|
|
23
|
+
console.warn(`! Found an unknown entropy ID: "${entropySource}", account "${account.id}" won't be grouped by entropy.`);
|
|
24
|
+
return undefined;
|
|
25
|
+
}
|
|
26
|
+
const walletId = toMultichainAccountWalletId(account.options.entropy.id);
|
|
27
|
+
const wallet = {
|
|
28
|
+
id: walletId,
|
|
29
|
+
metadata: {
|
|
30
|
+
type: AccountWalletCategory.Entropy,
|
|
31
|
+
entropy: {
|
|
32
|
+
id: entropySource,
|
|
33
|
+
// QUESTION: Should we re-compute the index everytime instead?
|
|
34
|
+
index: entropySourceIndex,
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
const group = {
|
|
39
|
+
id: toMultichainAccountId(walletId, account.options.entropy.groupIndex),
|
|
40
|
+
};
|
|
41
|
+
return {
|
|
42
|
+
wallet,
|
|
43
|
+
group,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
getDefaultAccountWalletName(wallet) {
|
|
47
|
+
// Precondition: We assume the AccountTreeController will always use
|
|
48
|
+
// the proper wallet instance.
|
|
49
|
+
const options = wallet.metadata;
|
|
50
|
+
return `Wallet ${options.entropy.index + 1}`; // Use human indexing (starts at 1).
|
|
51
|
+
}
|
|
52
|
+
getDefaultAccountGroupName(group) {
|
|
53
|
+
// EVM account name has a highest priority.
|
|
54
|
+
const accounts = this.getAccountsFrom(group);
|
|
55
|
+
const evmAccount = accounts.find((account) => isEvmAccountType(account.type));
|
|
56
|
+
if (evmAccount) {
|
|
57
|
+
return evmAccount.metadata.name;
|
|
58
|
+
}
|
|
59
|
+
// We should always have an account, since this function will be called only
|
|
60
|
+
// if an account got a match.
|
|
61
|
+
return accounts[0].metadata.name;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=entropy.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entropy.mjs","sourceRoot":"","sources":["../../src/rules/entropy.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,qBAAqB,EACrB,2BAA2B,EAC5B,8BAA8B;AAC/B,OAAO,EAAE,gBAAgB,EAAE,8BAA8B;AACzD,OAAO,EAAE,YAAY,EAAE,qCAAqC;AAS5D,OAAO,EAAE,eAAe,EAAE,+BAA2B;AAErD,MAAM,OAAO,WAAY,SAAQ,eAAe;IAAhD;;QACW,aAAQ,GAAG,qBAAqB,CAAC,OAAO,CAAC;IAqEpD,CAAC;IAnEC,qBAAqB,CAAC,aAAqB;QACzC,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAEvE,OAAO,QAAQ;aACZ,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAM,YAAY,CAAC,EAAa,CAAC;aACjE,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,KAAK,aAAa,CAAC,CAAC;IACnE,CAAC;IAED,KAAK,CAAC,OAAwB;QAC5B,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;YAC5B,OAAO,SAAS,CAAC;SAClB;QAED,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACjD,MAAM,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC;QACrE,IAAI,kBAAkB,KAAK,CAAC,CAAC,EAAE;YAC7B,OAAO,CAAC,IAAI,CACV,mCAAmC,aAAa,eAAe,OAAO,CAAC,EAAE,gCAAgC,CAC1G,CAAC;YACF,OAAO,SAAS,CAAC;SAClB;QAED,MAAM,QAAQ,GAAG,2BAA2B,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACzE,MAAM,MAAM,GAAoC;YAC9C,EAAE,EAAE,QAAQ;YACZ,QAAQ,EAAE;gBACR,IAAI,EAAE,qBAAqB,CAAC,OAAO;gBACnC,OAAO,EAAE;oBACP,EAAE,EAAE,aAAa;oBACjB,8DAA8D;oBAC9D,KAAK,EAAE,kBAAkB;iBAC1B;aACF;SACF,CAAC;QAEF,MAAM,KAAK,GAAmC;YAC5C,EAAE,EAAE,qBAAqB,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC;SACxE,CAAC;QAEF,OAAO;YACL,MAAM;YACN,KAAK;SACN,CAAC;IACJ,CAAC;IAED,2BAA2B,CAAC,MAA2B;QACrD,oEAAoE;QACpE,8BAA8B;QAC9B,MAAM,OAAO,GAAG,MAAM,CAAC,QAAwC,CAAC;QAEhE,OAAO,UAAU,OAAO,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,oCAAoC;IACpF,CAAC;IAED,0BAA0B,CAAC,KAAyB;QAClD,2CAA2C;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC7C,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAC3C,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,CAC/B,CAAC;QACF,IAAI,UAAU,EAAE;YACd,OAAO,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC;SACjC;QAED,4EAA4E;QAC5E,6BAA6B;QAC7B,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;IACnC,CAAC;CACF","sourcesContent":["import {\n AccountWalletCategory,\n isBip44Account,\n toMultichainAccountId,\n toMultichainAccountWalletId,\n} from '@metamask/account-api';\nimport { isEvmAccountType } from '@metamask/keyring-api';\nimport { KeyringTypes } from '@metamask/keyring-controller';\nimport type { InternalAccount } from '@metamask/keyring-internal-api';\n\nimport type {\n AccountGroupObject,\n AccountWalletEntropyMetadata,\n AccountWalletObject,\n} from '..';\nimport type { AccountTreeRuleResult } from '../AccountTreeRule';\nimport { AccountTreeRule } from '../AccountTreeRule';\n\nexport class EntropyRule extends AccountTreeRule {\n readonly category = AccountWalletCategory.Entropy;\n\n getEntropySourceIndex(entropySource: string) {\n const { keyrings } = this.messenger.call('KeyringController:getState');\n\n return keyrings\n .filter((keyring) => keyring.type === (KeyringTypes.hd as string))\n .findIndex((keyring) => keyring.metadata.id === entropySource);\n }\n\n match(account: InternalAccount): AccountTreeRuleResult | undefined {\n if (!isBip44Account(account)) {\n return undefined;\n }\n\n const entropySource = account.options.entropy.id;\n const entropySourceIndex = this.getEntropySourceIndex(entropySource);\n if (entropySourceIndex === -1) {\n console.warn(\n `! Found an unknown entropy ID: \"${entropySource}\", account \"${account.id}\" won't be grouped by entropy.`,\n );\n return undefined;\n }\n\n const walletId = toMultichainAccountWalletId(account.options.entropy.id);\n const wallet: AccountTreeRuleResult['wallet'] = {\n id: walletId,\n metadata: {\n type: AccountWalletCategory.Entropy,\n entropy: {\n id: entropySource,\n // QUESTION: Should we re-compute the index everytime instead?\n index: entropySourceIndex,\n },\n },\n };\n\n const group: AccountTreeRuleResult['group'] = {\n id: toMultichainAccountId(walletId, account.options.entropy.groupIndex),\n };\n\n return {\n wallet,\n group,\n };\n }\n\n getDefaultAccountWalletName(wallet: AccountWalletObject): string {\n // Precondition: We assume the AccountTreeController will always use\n // the proper wallet instance.\n const options = wallet.metadata as AccountWalletEntropyMetadata;\n\n return `Wallet ${options.entropy.index + 1}`; // Use human indexing (starts at 1).\n }\n\n getDefaultAccountGroupName(group: AccountGroupObject): string {\n // EVM account name has a highest priority.\n const accounts = this.getAccountsFrom(group);\n const evmAccount = accounts.find((account) =>\n isEvmAccountType(account.type),\n );\n if (evmAccount) {\n return evmAccount.metadata.name;\n }\n\n // We should always have an account, since this function will be called only\n // if an account got a match.\n return accounts[0].metadata.name;\n }\n}\n"]}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.KeyringRule = exports.getAccountWalletNameFromKeyringType = void 0;
|
|
4
|
+
const account_api_1 = require("@metamask/account-api");
|
|
5
|
+
const keyring_controller_1 = require("@metamask/keyring-controller");
|
|
6
|
+
const AccountTreeRule_1 = require("../AccountTreeRule.cjs");
|
|
7
|
+
/**
|
|
8
|
+
* Get wallet name from a keyring type.
|
|
9
|
+
*
|
|
10
|
+
* @param type - Keyring's type.
|
|
11
|
+
* @returns Wallet name.
|
|
12
|
+
*/
|
|
13
|
+
function getAccountWalletNameFromKeyringType(type) {
|
|
14
|
+
switch (type) {
|
|
15
|
+
case keyring_controller_1.KeyringTypes.simple: {
|
|
16
|
+
return 'Imported accounts';
|
|
17
|
+
}
|
|
18
|
+
case keyring_controller_1.KeyringTypes.trezor: {
|
|
19
|
+
return 'Trezor';
|
|
20
|
+
}
|
|
21
|
+
case keyring_controller_1.KeyringTypes.oneKey: {
|
|
22
|
+
return 'OneKey';
|
|
23
|
+
}
|
|
24
|
+
case keyring_controller_1.KeyringTypes.ledger: {
|
|
25
|
+
return 'Ledger';
|
|
26
|
+
}
|
|
27
|
+
case keyring_controller_1.KeyringTypes.lattice: {
|
|
28
|
+
return 'Lattice';
|
|
29
|
+
}
|
|
30
|
+
case keyring_controller_1.KeyringTypes.qr: {
|
|
31
|
+
return 'QR';
|
|
32
|
+
}
|
|
33
|
+
// Those keyrings should never really be used in such context since they
|
|
34
|
+
// should be used by other grouping rules.
|
|
35
|
+
case keyring_controller_1.KeyringTypes.hd: {
|
|
36
|
+
return 'HD Wallet';
|
|
37
|
+
}
|
|
38
|
+
case keyring_controller_1.KeyringTypes.snap: {
|
|
39
|
+
return 'Snap Wallet';
|
|
40
|
+
}
|
|
41
|
+
// ------------------------------------------------------------------------
|
|
42
|
+
default: {
|
|
43
|
+
return 'Unknown';
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
exports.getAccountWalletNameFromKeyringType = getAccountWalletNameFromKeyringType;
|
|
48
|
+
class KeyringRule extends AccountTreeRule_1.AccountTreeRule {
|
|
49
|
+
constructor() {
|
|
50
|
+
super(...arguments);
|
|
51
|
+
this.category = account_api_1.AccountWalletCategory.Keyring;
|
|
52
|
+
}
|
|
53
|
+
match(account) {
|
|
54
|
+
// We assume that `type` is really a `KeyringTypes`.
|
|
55
|
+
const type = account.metadata.keyring.type;
|
|
56
|
+
const wallet = {
|
|
57
|
+
id: (0, account_api_1.toAccountWalletId)(this.category, type),
|
|
58
|
+
metadata: {
|
|
59
|
+
type: account_api_1.AccountWalletCategory.Keyring,
|
|
60
|
+
keyring: {
|
|
61
|
+
type,
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
const group = {
|
|
66
|
+
id: (0, account_api_1.toAccountGroupId)(wallet.id, account.address),
|
|
67
|
+
};
|
|
68
|
+
// This rule cannot fail.
|
|
69
|
+
return {
|
|
70
|
+
wallet,
|
|
71
|
+
group,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
getDefaultAccountWalletName(wallet) {
|
|
75
|
+
// Precondition: We assume the AccountTreeController will always use
|
|
76
|
+
// the proper wallet instance.
|
|
77
|
+
const metadata = wallet.metadata;
|
|
78
|
+
return getAccountWalletNameFromKeyringType(metadata.keyring.type);
|
|
79
|
+
}
|
|
80
|
+
getDefaultAccountGroupName(group) {
|
|
81
|
+
// Precondition: This account group should contain only 1 account.
|
|
82
|
+
return this.getOnlyAccountFrom(group).metadata.name;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
exports.KeyringRule = KeyringRule;
|
|
86
|
+
//# sourceMappingURL=keyring.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyring.cjs","sourceRoot":"","sources":["../../src/rules/keyring.ts"],"names":[],"mappings":";;;AAAA,uDAI+B;AAC/B,qEAA4D;AAS5D,4DAAqD;AAErD;;;;;GAKG;AACH,SAAgB,mCAAmC,CAAC,IAAkB;IACpE,QAAQ,IAAI,EAAE;QACZ,KAAK,iCAAY,CAAC,MAAM,CAAC,CAAC;YACxB,OAAO,mBAAmB,CAAC;SAC5B;QACD,KAAK,iCAAY,CAAC,MAAM,CAAC,CAAC;YACxB,OAAO,QAAQ,CAAC;SACjB;QACD,KAAK,iCAAY,CAAC,MAAM,CAAC,CAAC;YACxB,OAAO,QAAQ,CAAC;SACjB;QACD,KAAK,iCAAY,CAAC,MAAM,CAAC,CAAC;YACxB,OAAO,QAAQ,CAAC;SACjB;QACD,KAAK,iCAAY,CAAC,OAAO,CAAC,CAAC;YACzB,OAAO,SAAS,CAAC;SAClB;QACD,KAAK,iCAAY,CAAC,EAAE,CAAC,CAAC;YACpB,OAAO,IAAI,CAAC;SACb;QACD,wEAAwE;QACxE,0CAA0C;QAC1C,KAAK,iCAAY,CAAC,EAAE,CAAC,CAAC;YACpB,OAAO,WAAW,CAAC;SACpB;QACD,KAAK,iCAAY,CAAC,IAAI,CAAC,CAAC;YACtB,OAAO,aAAa,CAAC;SACtB;QACD,2EAA2E;QAC3E,OAAO,CAAC,CAAC;YACP,OAAO,SAAS,CAAC;SAClB;KACF;AACH,CAAC;AAjCD,kFAiCC;AAED,MAAa,WAAY,SAAQ,iCAAe;IAAhD;;QACW,aAAQ,GAAG,mCAAqB,CAAC,OAAO,CAAC;IAuCpD,CAAC;IArCC,KAAK,CAAC,OAAwB;QAC5B,oDAAoD;QACpD,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAoB,CAAC;QAE3D,MAAM,MAAM,GAAoC;YAC9C,EAAE,EAAE,IAAA,+BAAiB,EAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC;YAC1C,QAAQ,EAAE;gBACR,IAAI,EAAE,mCAAqB,CAAC,OAAO;gBACnC,OAAO,EAAE;oBACP,IAAI;iBACL;aACF;SACF,CAAC;QAEF,MAAM,KAAK,GAAmC;YAC5C,EAAE,EAAE,IAAA,8BAAgB,EAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC;SACjD,CAAC;QAEF,yBAAyB;QACzB,OAAO;YACL,MAAM;YACN,KAAK;SACN,CAAC;IACJ,CAAC;IAED,2BAA2B,CAAC,MAA2B;QACrD,oEAAoE;QACpE,8BAA8B;QAC9B,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAwC,CAAC;QAEjE,OAAO,mCAAmC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACpE,CAAC;IAED,0BAA0B,CAAC,KAAyB;QAClD,kEAAkE;QAClE,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;IACtD,CAAC;CACF;AAxCD,kCAwCC","sourcesContent":["import {\n AccountWalletCategory,\n toAccountGroupId,\n toAccountWalletId,\n} from '@metamask/account-api';\nimport { KeyringTypes } from '@metamask/keyring-controller';\nimport type { InternalAccount } from '@metamask/keyring-internal-api';\nimport type {\n AccountGroupObject,\n AccountWalletKeyringMetadata,\n} from 'src/types';\n\nimport type { AccountWalletObject } from '..';\nimport type { AccountTreeRuleResult } from '../AccountTreeRule';\nimport { AccountTreeRule } from '../AccountTreeRule';\n\n/**\n * Get wallet name from a keyring type.\n *\n * @param type - Keyring's type.\n * @returns Wallet name.\n */\nexport function getAccountWalletNameFromKeyringType(type: KeyringTypes) {\n switch (type) {\n case KeyringTypes.simple: {\n return 'Imported accounts';\n }\n case KeyringTypes.trezor: {\n return 'Trezor';\n }\n case KeyringTypes.oneKey: {\n return 'OneKey';\n }\n case KeyringTypes.ledger: {\n return 'Ledger';\n }\n case KeyringTypes.lattice: {\n return 'Lattice';\n }\n case KeyringTypes.qr: {\n return 'QR';\n }\n // Those keyrings should never really be used in such context since they\n // should be used by other grouping rules.\n case KeyringTypes.hd: {\n return 'HD Wallet';\n }\n case KeyringTypes.snap: {\n return 'Snap Wallet';\n }\n // ------------------------------------------------------------------------\n default: {\n return 'Unknown';\n }\n }\n}\n\nexport class KeyringRule extends AccountTreeRule {\n readonly category = AccountWalletCategory.Keyring;\n\n match(account: InternalAccount): AccountTreeRuleResult | undefined {\n // We assume that `type` is really a `KeyringTypes`.\n const type = account.metadata.keyring.type as KeyringTypes;\n\n const wallet: AccountTreeRuleResult['wallet'] = {\n id: toAccountWalletId(this.category, type),\n metadata: {\n type: AccountWalletCategory.Keyring,\n keyring: {\n type,\n },\n },\n };\n\n const group: AccountTreeRuleResult['group'] = {\n id: toAccountGroupId(wallet.id, account.address),\n };\n\n // This rule cannot fail.\n return {\n wallet,\n group,\n };\n }\n\n getDefaultAccountWalletName(wallet: AccountWalletObject): string {\n // Precondition: We assume the AccountTreeController will always use\n // the proper wallet instance.\n const metadata = wallet.metadata as AccountWalletKeyringMetadata;\n\n return getAccountWalletNameFromKeyringType(metadata.keyring.type);\n }\n\n getDefaultAccountGroupName(group: AccountGroupObject): string {\n // Precondition: This account group should contain only 1 account.\n return this.getOnlyAccountFrom(group).metadata.name;\n }\n}\n"]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { AccountWalletCategory } from "@metamask/account-api";
|
|
2
|
+
import { KeyringTypes } from "@metamask/keyring-controller";
|
|
3
|
+
import type { InternalAccount } from "@metamask/keyring-internal-api";
|
|
4
|
+
import type { AccountGroupObject } from "src/types";
|
|
5
|
+
import type { AccountWalletObject } from "../index.cjs";
|
|
6
|
+
import type { AccountTreeRuleResult } from "../AccountTreeRule.cjs";
|
|
7
|
+
import { AccountTreeRule } from "../AccountTreeRule.cjs";
|
|
8
|
+
/**
|
|
9
|
+
* Get wallet name from a keyring type.
|
|
10
|
+
*
|
|
11
|
+
* @param type - Keyring's type.
|
|
12
|
+
* @returns Wallet name.
|
|
13
|
+
*/
|
|
14
|
+
export declare function getAccountWalletNameFromKeyringType(type: KeyringTypes): "Imported accounts" | "Trezor" | "OneKey" | "Ledger" | "Lattice" | "QR" | "HD Wallet" | "Snap Wallet" | "Unknown";
|
|
15
|
+
export declare class KeyringRule extends AccountTreeRule {
|
|
16
|
+
readonly category = AccountWalletCategory.Keyring;
|
|
17
|
+
match(account: InternalAccount): AccountTreeRuleResult | undefined;
|
|
18
|
+
getDefaultAccountWalletName(wallet: AccountWalletObject): string;
|
|
19
|
+
getDefaultAccountGroupName(group: AccountGroupObject): string;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=keyring.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyring.d.cts","sourceRoot":"","sources":["../../src/rules/keyring.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EAGtB,8BAA8B;AAC/B,OAAO,EAAE,YAAY,EAAE,qCAAqC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,uCAAuC;AACtE,OAAO,KAAK,EACV,kBAAkB,EAEnB,kBAAkB;AAEnB,OAAO,KAAK,EAAE,mBAAmB,EAAE,qBAAW;AAC9C,OAAO,KAAK,EAAE,qBAAqB,EAAE,+BAA2B;AAChE,OAAO,EAAE,eAAe,EAAE,+BAA2B;AAErD;;;;;GAKG;AACH,wBAAgB,mCAAmC,CAAC,IAAI,EAAE,YAAY,qHAiCrE;AAED,qBAAa,WAAY,SAAQ,eAAe;IAC9C,QAAQ,CAAC,QAAQ,iCAAiC;IAElD,KAAK,CAAC,OAAO,EAAE,eAAe,GAAG,qBAAqB,GAAG,SAAS;IAyBlE,2BAA2B,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM;IAQhE,0BAA0B,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM;CAI9D"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { AccountWalletCategory } from "@metamask/account-api";
|
|
2
|
+
import { KeyringTypes } from "@metamask/keyring-controller";
|
|
3
|
+
import type { InternalAccount } from "@metamask/keyring-internal-api";
|
|
4
|
+
import type { AccountGroupObject } from "src/types";
|
|
5
|
+
import type { AccountWalletObject } from "../index.mjs";
|
|
6
|
+
import type { AccountTreeRuleResult } from "../AccountTreeRule.mjs";
|
|
7
|
+
import { AccountTreeRule } from "../AccountTreeRule.mjs";
|
|
8
|
+
/**
|
|
9
|
+
* Get wallet name from a keyring type.
|
|
10
|
+
*
|
|
11
|
+
* @param type - Keyring's type.
|
|
12
|
+
* @returns Wallet name.
|
|
13
|
+
*/
|
|
14
|
+
export declare function getAccountWalletNameFromKeyringType(type: KeyringTypes): "Imported accounts" | "Trezor" | "OneKey" | "Ledger" | "Lattice" | "QR" | "HD Wallet" | "Snap Wallet" | "Unknown";
|
|
15
|
+
export declare class KeyringRule extends AccountTreeRule {
|
|
16
|
+
readonly category = AccountWalletCategory.Keyring;
|
|
17
|
+
match(account: InternalAccount): AccountTreeRuleResult | undefined;
|
|
18
|
+
getDefaultAccountWalletName(wallet: AccountWalletObject): string;
|
|
19
|
+
getDefaultAccountGroupName(group: AccountGroupObject): string;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=keyring.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyring.d.mts","sourceRoot":"","sources":["../../src/rules/keyring.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EAGtB,8BAA8B;AAC/B,OAAO,EAAE,YAAY,EAAE,qCAAqC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,uCAAuC;AACtE,OAAO,KAAK,EACV,kBAAkB,EAEnB,kBAAkB;AAEnB,OAAO,KAAK,EAAE,mBAAmB,EAAE,qBAAW;AAC9C,OAAO,KAAK,EAAE,qBAAqB,EAAE,+BAA2B;AAChE,OAAO,EAAE,eAAe,EAAE,+BAA2B;AAErD;;;;;GAKG;AACH,wBAAgB,mCAAmC,CAAC,IAAI,EAAE,YAAY,qHAiCrE;AAED,qBAAa,WAAY,SAAQ,eAAe;IAC9C,QAAQ,CAAC,QAAQ,iCAAiC;IAElD,KAAK,CAAC,OAAO,EAAE,eAAe,GAAG,qBAAqB,GAAG,SAAS;IAyBlE,2BAA2B,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM;IAQhE,0BAA0B,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM;CAI9D"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { AccountWalletCategory, toAccountGroupId, toAccountWalletId } from "@metamask/account-api";
|
|
2
|
+
import { KeyringTypes } from "@metamask/keyring-controller";
|
|
3
|
+
import { AccountTreeRule } from "../AccountTreeRule.mjs";
|
|
4
|
+
/**
|
|
5
|
+
* Get wallet name from a keyring type.
|
|
6
|
+
*
|
|
7
|
+
* @param type - Keyring's type.
|
|
8
|
+
* @returns Wallet name.
|
|
9
|
+
*/
|
|
10
|
+
export function getAccountWalletNameFromKeyringType(type) {
|
|
11
|
+
switch (type) {
|
|
12
|
+
case KeyringTypes.simple: {
|
|
13
|
+
return 'Imported accounts';
|
|
14
|
+
}
|
|
15
|
+
case KeyringTypes.trezor: {
|
|
16
|
+
return 'Trezor';
|
|
17
|
+
}
|
|
18
|
+
case KeyringTypes.oneKey: {
|
|
19
|
+
return 'OneKey';
|
|
20
|
+
}
|
|
21
|
+
case KeyringTypes.ledger: {
|
|
22
|
+
return 'Ledger';
|
|
23
|
+
}
|
|
24
|
+
case KeyringTypes.lattice: {
|
|
25
|
+
return 'Lattice';
|
|
26
|
+
}
|
|
27
|
+
case KeyringTypes.qr: {
|
|
28
|
+
return 'QR';
|
|
29
|
+
}
|
|
30
|
+
// Those keyrings should never really be used in such context since they
|
|
31
|
+
// should be used by other grouping rules.
|
|
32
|
+
case KeyringTypes.hd: {
|
|
33
|
+
return 'HD Wallet';
|
|
34
|
+
}
|
|
35
|
+
case KeyringTypes.snap: {
|
|
36
|
+
return 'Snap Wallet';
|
|
37
|
+
}
|
|
38
|
+
// ------------------------------------------------------------------------
|
|
39
|
+
default: {
|
|
40
|
+
return 'Unknown';
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
export class KeyringRule extends AccountTreeRule {
|
|
45
|
+
constructor() {
|
|
46
|
+
super(...arguments);
|
|
47
|
+
this.category = AccountWalletCategory.Keyring;
|
|
48
|
+
}
|
|
49
|
+
match(account) {
|
|
50
|
+
// We assume that `type` is really a `KeyringTypes`.
|
|
51
|
+
const type = account.metadata.keyring.type;
|
|
52
|
+
const wallet = {
|
|
53
|
+
id: toAccountWalletId(this.category, type),
|
|
54
|
+
metadata: {
|
|
55
|
+
type: AccountWalletCategory.Keyring,
|
|
56
|
+
keyring: {
|
|
57
|
+
type,
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
};
|
|
61
|
+
const group = {
|
|
62
|
+
id: toAccountGroupId(wallet.id, account.address),
|
|
63
|
+
};
|
|
64
|
+
// This rule cannot fail.
|
|
65
|
+
return {
|
|
66
|
+
wallet,
|
|
67
|
+
group,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
getDefaultAccountWalletName(wallet) {
|
|
71
|
+
// Precondition: We assume the AccountTreeController will always use
|
|
72
|
+
// the proper wallet instance.
|
|
73
|
+
const metadata = wallet.metadata;
|
|
74
|
+
return getAccountWalletNameFromKeyringType(metadata.keyring.type);
|
|
75
|
+
}
|
|
76
|
+
getDefaultAccountGroupName(group) {
|
|
77
|
+
// Precondition: This account group should contain only 1 account.
|
|
78
|
+
return this.getOnlyAccountFrom(group).metadata.name;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=keyring.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyring.mjs","sourceRoot":"","sources":["../../src/rules/keyring.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EAClB,8BAA8B;AAC/B,OAAO,EAAE,YAAY,EAAE,qCAAqC;AAS5D,OAAO,EAAE,eAAe,EAAE,+BAA2B;AAErD;;;;;GAKG;AACH,MAAM,UAAU,mCAAmC,CAAC,IAAkB;IACpE,QAAQ,IAAI,EAAE;QACZ,KAAK,YAAY,CAAC,MAAM,CAAC,CAAC;YACxB,OAAO,mBAAmB,CAAC;SAC5B;QACD,KAAK,YAAY,CAAC,MAAM,CAAC,CAAC;YACxB,OAAO,QAAQ,CAAC;SACjB;QACD,KAAK,YAAY,CAAC,MAAM,CAAC,CAAC;YACxB,OAAO,QAAQ,CAAC;SACjB;QACD,KAAK,YAAY,CAAC,MAAM,CAAC,CAAC;YACxB,OAAO,QAAQ,CAAC;SACjB;QACD,KAAK,YAAY,CAAC,OAAO,CAAC,CAAC;YACzB,OAAO,SAAS,CAAC;SAClB;QACD,KAAK,YAAY,CAAC,EAAE,CAAC,CAAC;YACpB,OAAO,IAAI,CAAC;SACb;QACD,wEAAwE;QACxE,0CAA0C;QAC1C,KAAK,YAAY,CAAC,EAAE,CAAC,CAAC;YACpB,OAAO,WAAW,CAAC;SACpB;QACD,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC;YACtB,OAAO,aAAa,CAAC;SACtB;QACD,2EAA2E;QAC3E,OAAO,CAAC,CAAC;YACP,OAAO,SAAS,CAAC;SAClB;KACF;AACH,CAAC;AAED,MAAM,OAAO,WAAY,SAAQ,eAAe;IAAhD;;QACW,aAAQ,GAAG,qBAAqB,CAAC,OAAO,CAAC;IAuCpD,CAAC;IArCC,KAAK,CAAC,OAAwB;QAC5B,oDAAoD;QACpD,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAoB,CAAC;QAE3D,MAAM,MAAM,GAAoC;YAC9C,EAAE,EAAE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC;YAC1C,QAAQ,EAAE;gBACR,IAAI,EAAE,qBAAqB,CAAC,OAAO;gBACnC,OAAO,EAAE;oBACP,IAAI;iBACL;aACF;SACF,CAAC;QAEF,MAAM,KAAK,GAAmC;YAC5C,EAAE,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC;SACjD,CAAC;QAEF,yBAAyB;QACzB,OAAO;YACL,MAAM;YACN,KAAK;SACN,CAAC;IACJ,CAAC;IAED,2BAA2B,CAAC,MAA2B;QACrD,oEAAoE;QACpE,8BAA8B;QAC9B,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAwC,CAAC;QAEjE,OAAO,mCAAmC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACpE,CAAC;IAED,0BAA0B,CAAC,KAAyB;QAClD,kEAAkE;QAClE,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;IACtD,CAAC;CACF","sourcesContent":["import {\n AccountWalletCategory,\n toAccountGroupId,\n toAccountWalletId,\n} from '@metamask/account-api';\nimport { KeyringTypes } from '@metamask/keyring-controller';\nimport type { InternalAccount } from '@metamask/keyring-internal-api';\nimport type {\n AccountGroupObject,\n AccountWalletKeyringMetadata,\n} from 'src/types';\n\nimport type { AccountWalletObject } from '..';\nimport type { AccountTreeRuleResult } from '../AccountTreeRule';\nimport { AccountTreeRule } from '../AccountTreeRule';\n\n/**\n * Get wallet name from a keyring type.\n *\n * @param type - Keyring's type.\n * @returns Wallet name.\n */\nexport function getAccountWalletNameFromKeyringType(type: KeyringTypes) {\n switch (type) {\n case KeyringTypes.simple: {\n return 'Imported accounts';\n }\n case KeyringTypes.trezor: {\n return 'Trezor';\n }\n case KeyringTypes.oneKey: {\n return 'OneKey';\n }\n case KeyringTypes.ledger: {\n return 'Ledger';\n }\n case KeyringTypes.lattice: {\n return 'Lattice';\n }\n case KeyringTypes.qr: {\n return 'QR';\n }\n // Those keyrings should never really be used in such context since they\n // should be used by other grouping rules.\n case KeyringTypes.hd: {\n return 'HD Wallet';\n }\n case KeyringTypes.snap: {\n return 'Snap Wallet';\n }\n // ------------------------------------------------------------------------\n default: {\n return 'Unknown';\n }\n }\n}\n\nexport class KeyringRule extends AccountTreeRule {\n readonly category = AccountWalletCategory.Keyring;\n\n match(account: InternalAccount): AccountTreeRuleResult | undefined {\n // We assume that `type` is really a `KeyringTypes`.\n const type = account.metadata.keyring.type as KeyringTypes;\n\n const wallet: AccountTreeRuleResult['wallet'] = {\n id: toAccountWalletId(this.category, type),\n metadata: {\n type: AccountWalletCategory.Keyring,\n keyring: {\n type,\n },\n },\n };\n\n const group: AccountTreeRuleResult['group'] = {\n id: toAccountGroupId(wallet.id, account.address),\n };\n\n // This rule cannot fail.\n return {\n wallet,\n group,\n };\n }\n\n getDefaultAccountWalletName(wallet: AccountWalletObject): string {\n // Precondition: We assume the AccountTreeController will always use\n // the proper wallet instance.\n const metadata = wallet.metadata as AccountWalletKeyringMetadata;\n\n return getAccountWalletNameFromKeyringType(metadata.keyring.type);\n }\n\n getDefaultAccountGroupName(group: AccountGroupObject): string {\n // Precondition: This account group should contain only 1 account.\n return this.getOnlyAccountFrom(group).metadata.name;\n }\n}\n"]}
|