@metamask-previews/account-tree-controller 0.6.0-preview-9b5151c → 0.6.0-preview-b8fffa99

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.
Files changed (114) hide show
  1. package/CHANGELOG.md +0 -12
  2. package/dist/AccountTreeController.cjs +25 -86
  3. package/dist/AccountTreeController.cjs.map +1 -1
  4. package/dist/AccountTreeController.d.cts +3 -5
  5. package/dist/AccountTreeController.d.cts.map +1 -1
  6. package/dist/AccountTreeController.d.mts +3 -5
  7. package/dist/AccountTreeController.d.mts.map +1 -1
  8. package/dist/AccountTreeController.mjs +26 -87
  9. package/dist/AccountTreeController.mjs.map +1 -1
  10. package/dist/AccountTreeGroup.cjs +35 -51
  11. package/dist/AccountTreeGroup.cjs.map +1 -1
  12. package/dist/AccountTreeGroup.d.cts +22 -15
  13. package/dist/AccountTreeGroup.d.cts.map +1 -1
  14. package/dist/AccountTreeGroup.d.mts +22 -15
  15. package/dist/AccountTreeGroup.d.mts.map +1 -1
  16. package/dist/AccountTreeGroup.mjs +33 -49
  17. package/dist/AccountTreeGroup.mjs.map +1 -1
  18. package/dist/AccountTreeWallet.cjs +27 -61
  19. package/dist/AccountTreeWallet.cjs.map +1 -1
  20. package/dist/AccountTreeWallet.d.cts +17 -24
  21. package/dist/AccountTreeWallet.d.cts.map +1 -1
  22. package/dist/AccountTreeWallet.d.mts +17 -24
  23. package/dist/AccountTreeWallet.d.mts.map +1 -1
  24. package/dist/AccountTreeWallet.mjs +26 -60
  25. package/dist/AccountTreeWallet.mjs.map +1 -1
  26. package/dist/rules/EntropySourceWalletRule.cjs +100 -0
  27. package/dist/rules/EntropySourceWalletRule.cjs.map +1 -0
  28. package/dist/rules/EntropySourceWalletRule.d.cts +19 -0
  29. package/dist/rules/EntropySourceWalletRule.d.cts.map +1 -0
  30. package/dist/rules/EntropySourceWalletRule.d.mts +19 -0
  31. package/dist/rules/EntropySourceWalletRule.d.mts.map +1 -0
  32. package/dist/rules/EntropySourceWalletRule.mjs +95 -0
  33. package/dist/rules/EntropySourceWalletRule.mjs.map +1 -0
  34. package/dist/rules/KeyringWalletRule.cjs +99 -0
  35. package/dist/rules/KeyringWalletRule.cjs.map +1 -0
  36. package/dist/rules/KeyringWalletRule.d.cts +18 -0
  37. package/dist/rules/KeyringWalletRule.d.cts.map +1 -0
  38. package/dist/rules/KeyringWalletRule.d.mts +18 -0
  39. package/dist/rules/KeyringWalletRule.d.mts.map +1 -0
  40. package/dist/rules/KeyringWalletRule.mjs +94 -0
  41. package/dist/rules/KeyringWalletRule.mjs.map +1 -0
  42. package/dist/rules/SnapWalletRule.cjs +70 -0
  43. package/dist/rules/SnapWalletRule.cjs.map +1 -0
  44. package/dist/rules/SnapWalletRule.d.cts +10 -0
  45. package/dist/rules/SnapWalletRule.d.cts.map +1 -0
  46. package/dist/rules/SnapWalletRule.d.mts +10 -0
  47. package/dist/rules/SnapWalletRule.d.mts.map +1 -0
  48. package/dist/rules/SnapWalletRule.mjs +66 -0
  49. package/dist/rules/SnapWalletRule.mjs.map +1 -0
  50. package/dist/rules/WalletRule.cjs +13 -0
  51. package/dist/rules/WalletRule.cjs.map +1 -0
  52. package/dist/rules/WalletRule.d.cts +37 -0
  53. package/dist/rules/WalletRule.d.cts.map +1 -0
  54. package/dist/rules/WalletRule.d.mts +37 -0
  55. package/dist/rules/WalletRule.d.mts.map +1 -0
  56. package/dist/rules/WalletRule.mjs +9 -0
  57. package/dist/rules/WalletRule.mjs.map +1 -0
  58. package/dist/rules/index.cjs +4 -4
  59. package/dist/rules/index.cjs.map +1 -1
  60. package/dist/rules/index.d.cts +4 -4
  61. package/dist/rules/index.d.cts.map +1 -1
  62. package/dist/rules/index.d.mts +4 -4
  63. package/dist/rules/index.d.mts.map +1 -1
  64. package/dist/rules/index.mjs +4 -4
  65. package/dist/rules/index.mjs.map +1 -1
  66. package/dist/rules/utils.cjs +15 -0
  67. package/dist/rules/utils.cjs.map +1 -0
  68. package/dist/rules/utils.d.cts +11 -0
  69. package/dist/rules/utils.d.cts.map +1 -0
  70. package/dist/rules/utils.d.mts +11 -0
  71. package/dist/rules/utils.d.mts.map +1 -0
  72. package/dist/rules/utils.mjs +11 -0
  73. package/dist/rules/utils.mjs.map +1 -0
  74. package/package.json +3 -3
  75. package/dist/rules/entropy.cjs +0 -83
  76. package/dist/rules/entropy.cjs.map +0 -1
  77. package/dist/rules/entropy.d.cts +0 -15
  78. package/dist/rules/entropy.d.cts.map +0 -1
  79. package/dist/rules/entropy.d.mts +0 -15
  80. package/dist/rules/entropy.d.mts.map +0 -1
  81. package/dist/rules/entropy.mjs +0 -79
  82. package/dist/rules/entropy.mjs.map +0 -1
  83. package/dist/rules/keyring.cjs +0 -80
  84. package/dist/rules/keyring.cjs.map +0 -1
  85. package/dist/rules/keyring.d.cts +0 -20
  86. package/dist/rules/keyring.d.cts.map +0 -1
  87. package/dist/rules/keyring.d.mts +0 -20
  88. package/dist/rules/keyring.d.mts.map +0 -1
  89. package/dist/rules/keyring.mjs +0 -75
  90. package/dist/rules/keyring.mjs.map +0 -1
  91. package/dist/rules/rule.cjs +0 -10
  92. package/dist/rules/rule.cjs.map +0 -1
  93. package/dist/rules/rule.d.cts +0 -42
  94. package/dist/rules/rule.d.cts.map +0 -1
  95. package/dist/rules/rule.d.mts +0 -42
  96. package/dist/rules/rule.d.mts.map +0 -1
  97. package/dist/rules/rule.mjs +0 -6
  98. package/dist/rules/rule.mjs.map +0 -1
  99. package/dist/rules/snap.cjs +0 -53
  100. package/dist/rules/snap.cjs.map +0 -1
  101. package/dist/rules/snap.d.cts +0 -23
  102. package/dist/rules/snap.d.cts.map +0 -1
  103. package/dist/rules/snap.d.mts +0 -23
  104. package/dist/rules/snap.d.mts.map +0 -1
  105. package/dist/rules/snap.mjs +0 -49
  106. package/dist/rules/snap.mjs.map +0 -1
  107. package/dist/types.cjs +0 -3
  108. package/dist/types.cjs.map +0 -1
  109. package/dist/types.d.cts +0 -15
  110. package/dist/types.d.cts.map +0 -1
  111. package/dist/types.d.mts +0 -15
  112. package/dist/types.d.mts.map +0 -1
  113. package/dist/types.mjs +0 -2
  114. package/dist/types.mjs.map +0 -1
@@ -1,53 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SnapRule = void 0;
4
- const account_api_1 = require("@metamask/account-api");
5
- const keyring_controller_1 = require("@metamask/keyring-controller");
6
- const snaps_utils_1 = require("@metamask/snaps-utils");
7
- const rule_1 = require("./rule.cjs");
8
- class SnapRule extends rule_1.Rule {
9
- constructor() {
10
- super(...arguments);
11
- this.category = account_api_1.AccountWalletCategory.Snap;
12
- }
13
- isSnapAccount(account) {
14
- return (account.metadata.keyring.type === keyring_controller_1.KeyringTypes.snap &&
15
- account.metadata.snap !== undefined &&
16
- account.metadata.snap.enabled);
17
- }
18
- match(account) {
19
- if (!this.isSnapAccount(account)) {
20
- return undefined;
21
- }
22
- const { id: snapId } = account.metadata.snap;
23
- const walletId = (0, account_api_1.toAccountWalletId)(this.category, snapId);
24
- const groupId = (0, account_api_1.toAccountGroupId)(walletId, account.address);
25
- return {
26
- walletId,
27
- groupId,
28
- };
29
- }
30
- getDefaultAccountWalletName(wallet) {
31
- // Precondition: This method is invoked only if there was a match for
32
- // a Snap account, so we can type-cast here.
33
- const account = wallet.getAnyAccount();
34
- const { id: snapId } = account.metadata.snap;
35
- const snap = this.messenger.call('SnapController:get', snapId);
36
- const snapName = snap
37
- ? // TODO: Handle localization here, but that's a "client thing", so we don't have a `core` controller
38
- // to refer to.
39
- snap.manifest.proposedName
40
- : (0, snaps_utils_1.stripSnapPrefix)(snapId);
41
- return snapName;
42
- }
43
- getDefaultAccountGroupName(group) {
44
- // Precondition: This method is invoked only if there was a match for
45
- // a Snap account, so we can type-cast here. Also, each of those
46
- // account groups should contain only 1 account.
47
- const account = group.getOnlyAccount();
48
- // We only have 1 account for this kind of rule.
49
- return account.metadata.name;
50
- }
51
- }
52
- exports.SnapRule = SnapRule;
53
- //# sourceMappingURL=snap.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"snap.cjs","sourceRoot":"","sources":["../../src/rules/snap.ts"],"names":[],"mappings":";;;AAAA,uDAI+B;AAC/B,qEAA4D;AAG5D,uDAAwD;AAKxD,qCAA8B;AAU9B,MAAa,QAAS,SAAQ,WAAI;IAAlC;;QACW,aAAQ,GAAG,mCAAqB,CAAC,IAAI,CAAC;IAqDjD,CAAC;IAnDC,aAAa,CACX,OAAwB;QAExB,OAAO,CACL,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAM,iCAAY,CAAC,IAAe;YAC/D,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS;YACnC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAC9B,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAwB;QAC5B,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE;YAChC,OAAO,SAAS,CAAC;SAClB;QAED,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;QAE7C,MAAM,QAAQ,GAAG,IAAA,+BAAiB,EAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC1D,MAAM,OAAO,GAAG,IAAA,8BAAgB,EAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAE5D,OAAO;YACL,QAAQ;YACR,OAAO;SACR,CAAC;IACJ,CAAC;IAED,2BAA2B,CAAC,MAAyB;QACnD,qEAAqE;QACrE,4CAA4C;QAC5C,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,EAAkC,CAAC;QAEvE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;QAC/D,MAAM,QAAQ,GAAG,IAAI;YACnB,CAAC,CAAC,oGAAoG;gBACpG,eAAe;gBACf,IAAI,CAAC,QAAQ,CAAC,YAAY;YAC5B,CAAC,CAAC,IAAA,6BAAe,EAAC,MAAM,CAAC,CAAC;QAE5B,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,0BAA0B,CAAC,KAAuB;QAChD,qEAAqE;QACrE,gEAAgE;QAChE,gDAAgD;QAChD,MAAM,OAAO,GAAG,KAAK,CAAC,cAAc,EAAkC,CAAC;QAEvE,gDAAgD;QAChD,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC/B,CAAC;CACF;AAtDD,4BAsDC","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 { SnapId } from '@metamask/snaps-sdk';\nimport { stripSnapPrefix } from '@metamask/snaps-utils';\nimport type { AccountTreeGroup } from 'src/AccountTreeGroup';\nimport type { AccountTreeWallet } from 'src/AccountTreeWallet';\nimport type { AccountContext } from 'src/types';\n\nimport { Rule } from './rule';\n\ntype SnapAccount<Account extends InternalAccount> = Account & {\n metadata: Account['metadata'] & {\n snap: {\n id: SnapId;\n };\n };\n};\n\nexport class SnapRule extends Rule {\n readonly category = AccountWalletCategory.Snap;\n\n isSnapAccount(\n account: InternalAccount,\n ): account is SnapAccount<InternalAccount> {\n return (\n account.metadata.keyring.type === (KeyringTypes.snap as string) &&\n account.metadata.snap !== undefined &&\n account.metadata.snap.enabled\n );\n }\n\n match(account: InternalAccount): AccountContext | undefined {\n if (!this.isSnapAccount(account)) {\n return undefined;\n }\n\n const { id: snapId } = account.metadata.snap;\n\n const walletId = toAccountWalletId(this.category, snapId);\n const groupId = toAccountGroupId(walletId, account.address);\n\n return {\n walletId,\n groupId,\n };\n }\n\n getDefaultAccountWalletName(wallet: AccountTreeWallet): string {\n // Precondition: This method is invoked only if there was a match for\n // a Snap account, so we can type-cast here.\n const account = wallet.getAnyAccount() as SnapAccount<InternalAccount>;\n\n const { id: snapId } = account.metadata.snap;\n const snap = this.messenger.call('SnapController:get', snapId);\n const snapName = snap\n ? // TODO: Handle localization here, but that's a \"client thing\", so we don't have a `core` controller\n // to refer to.\n snap.manifest.proposedName\n : stripSnapPrefix(snapId);\n\n return snapName;\n }\n\n getDefaultAccountGroupName(group: AccountTreeGroup): string {\n // Precondition: This method is invoked only if there was a match for\n // a Snap account, so we can type-cast here. Also, each of those\n // account groups should contain only 1 account.\n const account = group.getOnlyAccount() as SnapAccount<InternalAccount>;\n\n // We only have 1 account for this kind of rule.\n return account.metadata.name;\n }\n}\n"]}
@@ -1,23 +0,0 @@
1
- import { AccountWalletCategory } from "@metamask/account-api";
2
- import type { InternalAccount } from "@metamask/keyring-internal-api";
3
- import type { SnapId } from "@metamask/snaps-sdk";
4
- import type { AccountTreeGroup } from "src/AccountTreeGroup";
5
- import type { AccountTreeWallet } from "src/AccountTreeWallet";
6
- import type { AccountContext } from "src/types";
7
- import { Rule } from "./rule.cjs";
8
- type SnapAccount<Account extends InternalAccount> = Account & {
9
- metadata: Account['metadata'] & {
10
- snap: {
11
- id: SnapId;
12
- };
13
- };
14
- };
15
- export declare class SnapRule extends Rule {
16
- readonly category = AccountWalletCategory.Snap;
17
- isSnapAccount(account: InternalAccount): account is SnapAccount<InternalAccount>;
18
- match(account: InternalAccount): AccountContext | undefined;
19
- getDefaultAccountWalletName(wallet: AccountTreeWallet): string;
20
- getDefaultAccountGroupName(group: AccountTreeGroup): string;
21
- }
22
- export {};
23
- //# sourceMappingURL=snap.d.cts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"snap.d.cts","sourceRoot":"","sources":["../../src/rules/snap.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EAGtB,8BAA8B;AAE/B,OAAO,KAAK,EAAE,eAAe,EAAE,uCAAuC;AACtE,OAAO,KAAK,EAAE,MAAM,EAAE,4BAA4B;AAElD,OAAO,KAAK,EAAE,gBAAgB,EAAE,6BAA6B;AAC7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,8BAA8B;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB;AAEhD,OAAO,EAAE,IAAI,EAAE,mBAAe;AAE9B,KAAK,WAAW,CAAC,OAAO,SAAS,eAAe,IAAI,OAAO,GAAG;IAC5D,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG;QAC9B,IAAI,EAAE;YACJ,EAAE,EAAE,MAAM,CAAC;SACZ,CAAC;KACH,CAAC;CACH,CAAC;AAEF,qBAAa,QAAS,SAAQ,IAAI;IAChC,QAAQ,CAAC,QAAQ,8BAA8B;IAE/C,aAAa,CACX,OAAO,EAAE,eAAe,GACvB,OAAO,IAAI,WAAW,CAAC,eAAe,CAAC;IAQ1C,KAAK,CAAC,OAAO,EAAE,eAAe,GAAG,cAAc,GAAG,SAAS;IAgB3D,2BAA2B,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM;IAgB9D,0BAA0B,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM;CAS5D"}
@@ -1,23 +0,0 @@
1
- import { AccountWalletCategory } from "@metamask/account-api";
2
- import type { InternalAccount } from "@metamask/keyring-internal-api";
3
- import type { SnapId } from "@metamask/snaps-sdk";
4
- import type { AccountTreeGroup } from "src/AccountTreeGroup";
5
- import type { AccountTreeWallet } from "src/AccountTreeWallet";
6
- import type { AccountContext } from "src/types";
7
- import { Rule } from "./rule.mjs";
8
- type SnapAccount<Account extends InternalAccount> = Account & {
9
- metadata: Account['metadata'] & {
10
- snap: {
11
- id: SnapId;
12
- };
13
- };
14
- };
15
- export declare class SnapRule extends Rule {
16
- readonly category = AccountWalletCategory.Snap;
17
- isSnapAccount(account: InternalAccount): account is SnapAccount<InternalAccount>;
18
- match(account: InternalAccount): AccountContext | undefined;
19
- getDefaultAccountWalletName(wallet: AccountTreeWallet): string;
20
- getDefaultAccountGroupName(group: AccountTreeGroup): string;
21
- }
22
- export {};
23
- //# sourceMappingURL=snap.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"snap.d.mts","sourceRoot":"","sources":["../../src/rules/snap.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EAGtB,8BAA8B;AAE/B,OAAO,KAAK,EAAE,eAAe,EAAE,uCAAuC;AACtE,OAAO,KAAK,EAAE,MAAM,EAAE,4BAA4B;AAElD,OAAO,KAAK,EAAE,gBAAgB,EAAE,6BAA6B;AAC7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,8BAA8B;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB;AAEhD,OAAO,EAAE,IAAI,EAAE,mBAAe;AAE9B,KAAK,WAAW,CAAC,OAAO,SAAS,eAAe,IAAI,OAAO,GAAG;IAC5D,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG;QAC9B,IAAI,EAAE;YACJ,EAAE,EAAE,MAAM,CAAC;SACZ,CAAC;KACH,CAAC;CACH,CAAC;AAEF,qBAAa,QAAS,SAAQ,IAAI;IAChC,QAAQ,CAAC,QAAQ,8BAA8B;IAE/C,aAAa,CACX,OAAO,EAAE,eAAe,GACvB,OAAO,IAAI,WAAW,CAAC,eAAe,CAAC;IAQ1C,KAAK,CAAC,OAAO,EAAE,eAAe,GAAG,cAAc,GAAG,SAAS;IAgB3D,2BAA2B,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM;IAgB9D,0BAA0B,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM;CAS5D"}
@@ -1,49 +0,0 @@
1
- import { AccountWalletCategory, toAccountGroupId, toAccountWalletId } from "@metamask/account-api";
2
- import { KeyringTypes } from "@metamask/keyring-controller";
3
- import { stripSnapPrefix } from "@metamask/snaps-utils";
4
- import { Rule } from "./rule.mjs";
5
- export class SnapRule extends Rule {
6
- constructor() {
7
- super(...arguments);
8
- this.category = AccountWalletCategory.Snap;
9
- }
10
- isSnapAccount(account) {
11
- return (account.metadata.keyring.type === KeyringTypes.snap &&
12
- account.metadata.snap !== undefined &&
13
- account.metadata.snap.enabled);
14
- }
15
- match(account) {
16
- if (!this.isSnapAccount(account)) {
17
- return undefined;
18
- }
19
- const { id: snapId } = account.metadata.snap;
20
- const walletId = toAccountWalletId(this.category, snapId);
21
- const groupId = toAccountGroupId(walletId, account.address);
22
- return {
23
- walletId,
24
- groupId,
25
- };
26
- }
27
- getDefaultAccountWalletName(wallet) {
28
- // Precondition: This method is invoked only if there was a match for
29
- // a Snap account, so we can type-cast here.
30
- const account = wallet.getAnyAccount();
31
- const { id: snapId } = account.metadata.snap;
32
- const snap = this.messenger.call('SnapController:get', snapId);
33
- const snapName = snap
34
- ? // TODO: Handle localization here, but that's a "client thing", so we don't have a `core` controller
35
- // to refer to.
36
- snap.manifest.proposedName
37
- : stripSnapPrefix(snapId);
38
- return snapName;
39
- }
40
- getDefaultAccountGroupName(group) {
41
- // Precondition: This method is invoked only if there was a match for
42
- // a Snap account, so we can type-cast here. Also, each of those
43
- // account groups should contain only 1 account.
44
- const account = group.getOnlyAccount();
45
- // We only have 1 account for this kind of rule.
46
- return account.metadata.name;
47
- }
48
- }
49
- //# sourceMappingURL=snap.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"snap.mjs","sourceRoot":"","sources":["../../src/rules/snap.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EAClB,8BAA8B;AAC/B,OAAO,EAAE,YAAY,EAAE,qCAAqC;AAG5D,OAAO,EAAE,eAAe,EAAE,8BAA8B;AAKxD,OAAO,EAAE,IAAI,EAAE,mBAAe;AAU9B,MAAM,OAAO,QAAS,SAAQ,IAAI;IAAlC;;QACW,aAAQ,GAAG,qBAAqB,CAAC,IAAI,CAAC;IAqDjD,CAAC;IAnDC,aAAa,CACX,OAAwB;QAExB,OAAO,CACL,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAM,YAAY,CAAC,IAAe;YAC/D,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS;YACnC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAC9B,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAwB;QAC5B,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE;YAChC,OAAO,SAAS,CAAC;SAClB;QAED,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;QAE7C,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC1D,MAAM,OAAO,GAAG,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAE5D,OAAO;YACL,QAAQ;YACR,OAAO;SACR,CAAC;IACJ,CAAC;IAED,2BAA2B,CAAC,MAAyB;QACnD,qEAAqE;QACrE,4CAA4C;QAC5C,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,EAAkC,CAAC;QAEvE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;QAC/D,MAAM,QAAQ,GAAG,IAAI;YACnB,CAAC,CAAC,oGAAoG;gBACpG,eAAe;gBACf,IAAI,CAAC,QAAQ,CAAC,YAAY;YAC5B,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAE5B,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,0BAA0B,CAAC,KAAuB;QAChD,qEAAqE;QACrE,gEAAgE;QAChE,gDAAgD;QAChD,MAAM,OAAO,GAAG,KAAK,CAAC,cAAc,EAAkC,CAAC;QAEvE,gDAAgD;QAChD,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC/B,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 { SnapId } from '@metamask/snaps-sdk';\nimport { stripSnapPrefix } from '@metamask/snaps-utils';\nimport type { AccountTreeGroup } from 'src/AccountTreeGroup';\nimport type { AccountTreeWallet } from 'src/AccountTreeWallet';\nimport type { AccountContext } from 'src/types';\n\nimport { Rule } from './rule';\n\ntype SnapAccount<Account extends InternalAccount> = Account & {\n metadata: Account['metadata'] & {\n snap: {\n id: SnapId;\n };\n };\n};\n\nexport class SnapRule extends Rule {\n readonly category = AccountWalletCategory.Snap;\n\n isSnapAccount(\n account: InternalAccount,\n ): account is SnapAccount<InternalAccount> {\n return (\n account.metadata.keyring.type === (KeyringTypes.snap as string) &&\n account.metadata.snap !== undefined &&\n account.metadata.snap.enabled\n );\n }\n\n match(account: InternalAccount): AccountContext | undefined {\n if (!this.isSnapAccount(account)) {\n return undefined;\n }\n\n const { id: snapId } = account.metadata.snap;\n\n const walletId = toAccountWalletId(this.category, snapId);\n const groupId = toAccountGroupId(walletId, account.address);\n\n return {\n walletId,\n groupId,\n };\n }\n\n getDefaultAccountWalletName(wallet: AccountTreeWallet): string {\n // Precondition: This method is invoked only if there was a match for\n // a Snap account, so we can type-cast here.\n const account = wallet.getAnyAccount() as SnapAccount<InternalAccount>;\n\n const { id: snapId } = account.metadata.snap;\n const snap = this.messenger.call('SnapController:get', snapId);\n const snapName = snap\n ? // TODO: Handle localization here, but that's a \"client thing\", so we don't have a `core` controller\n // to refer to.\n snap.manifest.proposedName\n : stripSnapPrefix(snapId);\n\n return snapName;\n }\n\n getDefaultAccountGroupName(group: AccountTreeGroup): string {\n // Precondition: This method is invoked only if there was a match for\n // a Snap account, so we can type-cast here. Also, each of those\n // account groups should contain only 1 account.\n const account = group.getOnlyAccount() as SnapAccount<InternalAccount>;\n\n // We only have 1 account for this kind of rule.\n return account.metadata.name;\n }\n}\n"]}
package/dist/types.cjs DELETED
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=types.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.cjs","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { AccountGroupId, AccountWalletId } from '@metamask/account-api';\n\n/**\n * Context for an account.\n */\nexport type AccountContext = {\n /**\n * Wallet ID associated to that account.\n */\n walletId: AccountWalletId;\n\n /**\n * Account group ID associated to that account.\n */\n groupId: AccountGroupId;\n};\n"]}
package/dist/types.d.cts DELETED
@@ -1,15 +0,0 @@
1
- import type { AccountGroupId, AccountWalletId } from "@metamask/account-api";
2
- /**
3
- * Context for an account.
4
- */
5
- export type AccountContext = {
6
- /**
7
- * Wallet ID associated to that account.
8
- */
9
- walletId: AccountWalletId;
10
- /**
11
- * Account group ID associated to that account.
12
- */
13
- groupId: AccountGroupId;
14
- };
15
- //# sourceMappingURL=types.d.cts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.cts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,8BAA8B;AAE7E;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B;;OAEG;IACH,QAAQ,EAAE,eAAe,CAAC;IAE1B;;OAEG;IACH,OAAO,EAAE,cAAc,CAAC;CACzB,CAAC"}
package/dist/types.d.mts DELETED
@@ -1,15 +0,0 @@
1
- import type { AccountGroupId, AccountWalletId } from "@metamask/account-api";
2
- /**
3
- * Context for an account.
4
- */
5
- export type AccountContext = {
6
- /**
7
- * Wallet ID associated to that account.
8
- */
9
- walletId: AccountWalletId;
10
- /**
11
- * Account group ID associated to that account.
12
- */
13
- groupId: AccountGroupId;
14
- };
15
- //# sourceMappingURL=types.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,8BAA8B;AAE7E;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B;;OAEG;IACH,QAAQ,EAAE,eAAe,CAAC;IAE1B;;OAEG;IACH,OAAO,EAAE,cAAc,CAAC;CACzB,CAAC"}
package/dist/types.mjs DELETED
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.mjs","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { AccountGroupId, AccountWalletId } from '@metamask/account-api';\n\n/**\n * Context for an account.\n */\nexport type AccountContext = {\n /**\n * Wallet ID associated to that account.\n */\n walletId: AccountWalletId;\n\n /**\n * Account group ID associated to that account.\n */\n groupId: AccountGroupId;\n};\n"]}