@metamask-previews/account-tree-controller 4.0.0-preview-5c1b2b1 → 4.0.0-preview-7cfbb337
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/dist/AccountTreeController.cjs.map +1 -1
- package/dist/AccountTreeController.d.cts +1 -1
- package/dist/AccountTreeController.d.cts.map +1 -1
- package/dist/AccountTreeController.d.mts +1 -1
- package/dist/AccountTreeController.d.mts.map +1 -1
- package/dist/AccountTreeController.mjs.map +1 -1
- package/dist/backup-and-sync/syncing/group.cjs.map +1 -1
- package/dist/backup-and-sync/syncing/group.d.cts +1 -1
- package/dist/backup-and-sync/syncing/group.d.cts.map +1 -1
- package/dist/backup-and-sync/syncing/group.d.mts +1 -1
- package/dist/backup-and-sync/syncing/group.d.mts.map +1 -1
- package/dist/backup-and-sync/syncing/group.mjs.map +1 -1
- package/dist/backup-and-sync/syncing/wallet.cjs.map +1 -1
- package/dist/backup-and-sync/syncing/wallet.d.cts +1 -1
- package/dist/backup-and-sync/syncing/wallet.d.cts.map +1 -1
- package/dist/backup-and-sync/syncing/wallet.d.mts +1 -1
- package/dist/backup-and-sync/syncing/wallet.d.mts.map +1 -1
- package/dist/backup-and-sync/syncing/wallet.mjs.map +1 -1
- package/dist/backup-and-sync/types.cjs.map +1 -1
- package/dist/backup-and-sync/types.d.cts +2 -1
- package/dist/backup-and-sync/types.d.cts.map +1 -1
- package/dist/backup-and-sync/types.d.mts +2 -1
- package/dist/backup-and-sync/types.d.mts.map +1 -1
- package/dist/backup-and-sync/types.mjs.map +1 -1
- package/dist/group.cjs.map +1 -1
- package/dist/group.d.cts +2 -2
- package/dist/group.d.cts.map +1 -1
- package/dist/group.d.mts +2 -2
- package/dist/group.d.mts.map +1 -1
- package/dist/group.mjs.map +1 -1
- package/dist/rules/entropy.cjs.map +1 -1
- package/dist/rules/entropy.d.cts +1 -2
- package/dist/rules/entropy.d.cts.map +1 -1
- package/dist/rules/entropy.d.mts +1 -2
- package/dist/rules/entropy.d.mts.map +1 -1
- package/dist/rules/entropy.mjs.map +1 -1
- package/dist/rules/keyring.cjs.map +1 -1
- package/dist/rules/keyring.d.cts +1 -2
- package/dist/rules/keyring.d.cts.map +1 -1
- package/dist/rules/keyring.d.mts +1 -2
- package/dist/rules/keyring.d.mts.map +1 -1
- package/dist/rules/keyring.mjs.map +1 -1
- package/dist/rules/snap.cjs.map +1 -1
- package/dist/rules/snap.d.cts +1 -2
- package/dist/rules/snap.d.cts.map +1 -1
- package/dist/rules/snap.d.mts +1 -2
- package/dist/rules/snap.d.mts.map +1 -1
- package/dist/rules/snap.mjs.map +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +1 -1
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +1 -1
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs.map +1 -1
- package/dist/wallet.cjs.map +1 -1
- package/dist/wallet.d.cts +1 -1
- package/dist/wallet.d.cts.map +1 -1
- package/dist/wallet.d.mts +1 -1
- package/dist/wallet.d.mts.map +1 -1
- package/dist/wallet.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet.cjs","sourceRoot":"","sources":["../../../src/backup-and-sync/syncing/wallet.ts"],"names":[],"mappings":";;;AAAA,6CAAoD;AACpD,6CAAmD;AAEnD,sDAA2D;AAE3D,
|
|
1
|
+
{"version":3,"file":"wallet.cjs","sourceRoot":"","sources":["../../../src/backup-and-sync/syncing/wallet.ts"],"names":[],"mappings":";;;AAAA,6CAAoD;AACpD,6CAAmD;AAEnD,sDAA2D;AAE3D,wCAIkB;AAClB,+EAA6E;AAE7E;;;;;;;;GAQG;AACI,KAAK,UAAU,sCAAsC,CAC1D,OAA6B,EAC7B,WAAuC,EACvC,qBAAiE,EACjE,SAAoB;IAEpB,MAAM,uBAAuB,GAC3B,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,sBAAsB,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IAElE,IACE,CAAC,qBAAqB;QACtB,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,MAAM,KAAK,CAAC,EAC/C,CAAC;QACD,IAAA,4BAAmB,EACjB,UAAU,WAAW,CAAC,EAAE,4DAA4D,CACrF,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IACD,uDAAuD;IACvD,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAE7B,iCAAiC;IACjC,MAAM,iBAAiB,GAAG,MAAM,IAAA,iCAAsB,EAAC;QACrD,OAAO;QACP,aAAa,EAAE,uBAAuB,EAAE,IAAI;QAC5C,mBAAmB,EAAE,qBAAqB,CAAC,IAAI;QAC/C,wBAAwB,EAAE,CAAC,KAAK,EAAE,EAAE,CAClC,qCAA6B,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC;QAClE,gBAAgB,EAAE,CAAC,IAAY,EAAE,EAAE;YACjC,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAChE,CAAC;QACD,SAAS,EAAE;YACT,MAAM,EAAE,uCAA2B,CAAC,aAAa;YACjD,SAAS;SACV;KACF,CAAC,CAAC;IAEH,gBAAgB,KAAhB,gBAAgB,GAAK,iBAAiB,EAAC;IAEvC,kFAAkF;IAClF,kBAAkB;IAClB,MAAM,+BAA+B,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAC3E,qBAAqB,EACrB,gCAAgC,CACjC,CAAC;IAEF,gBAAgB,KAAhB,gBAAgB,GAAK,+BAA+B,EAAC;IAErD,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAjDD,wFAiDC;AAED;;;;;;;GAOG;AACI,KAAK,UAAU,kBAAkB,CACtC,OAA6B,EAC7B,WAAuC,EACvC,qBAAiE,EACjE,SAAoB;IAEpB,MAAM,uBAAuB,GAAG,MAAM,sCAAsC,CAC1E,OAAO,EACP,WAAW,EACX,qBAAqB,EACrB,SAAS,CACV,CAAC;IAEF,IAAI,uBAAuB,EAAE,CAAC;QAC5B,MAAM,IAAA,4CAAuB,EAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACtD,CAAC;AACH,CAAC;AAhBD,gDAgBC","sourcesContent":["import { compareAndSyncMetadata } from './metadata';\nimport { backupAndSyncLogger } from '../../logger';\nimport type { AccountWalletEntropyObject } from '../../wallet';\nimport { BackupAndSyncAnalyticsEvent } from '../analytics';\nimport type { ProfileId } from '../authentication';\nimport {\n UserStorageSyncedWalletSchema,\n type BackupAndSyncContext,\n type UserStorageSyncedWallet,\n} from '../types';\nimport { pushWalletToUserStorage } from '../user-storage/network-operations';\n\n/**\n * Syncs wallet metadata fields and determines if the wallet needs to be pushed to user storage.\n *\n * @param context - The sync context containing controller and messenger.\n * @param localWallet - The local wallet to sync.\n * @param walletFromUserStorage - The wallet data from user storage, if any.\n * @param profileId - The profile ID for analytics.\n * @returns Promise resolving to true if the wallet should be pushed to user storage.\n */\nexport async function syncWalletMetadataAndCheckIfPushNeeded(\n context: BackupAndSyncContext,\n localWallet: AccountWalletEntropyObject,\n walletFromUserStorage: UserStorageSyncedWallet | null | undefined,\n profileId: ProfileId,\n): Promise<boolean> {\n const walletPersistedMetadata =\n context.controller.state.accountWalletsMetadata[localWallet.id];\n\n if (\n !walletFromUserStorage ||\n Object.keys(walletFromUserStorage).length === 0\n ) {\n backupAndSyncLogger(\n `Wallet ${localWallet.id} did not exist in user storage, pushing to user storage...`,\n );\n return true;\n }\n // Track if we need to push this wallet to user storage\n let shouldPushWallet = false;\n\n // Compare and sync name metadata\n const shouldPushForName = await compareAndSyncMetadata({\n context,\n localMetadata: walletPersistedMetadata?.name,\n userStorageMetadata: walletFromUserStorage.name,\n validateUserStorageValue: (value) =>\n UserStorageSyncedWalletSchema.schema.name.schema.value.is(value),\n applyLocalUpdate: (name: string) => {\n context.controller.setAccountWalletName(localWallet.id, name);\n },\n analytics: {\n action: BackupAndSyncAnalyticsEvent.WalletRenamed,\n profileId,\n },\n });\n\n shouldPushWallet ||= shouldPushForName;\n\n // Avoid re-triggering legacy-syncing (in case this field is missing on the remote\n // wallet object).\n const shouldPushForMissingLegacyField = !Object.prototype.hasOwnProperty.call(\n walletFromUserStorage,\n 'isLegacyAccountSyncingDisabled',\n );\n\n shouldPushWallet ||= shouldPushForMissingLegacyField;\n\n return shouldPushWallet;\n}\n\n/**\n * Syncs wallet metadata and pushes it to user storage if needed.\n *\n * @param context - The sync context containing controller and messenger.\n * @param localWallet - The local wallet to sync.\n * @param walletFromUserStorage - The wallet data from user storage, if any.\n * @param profileId - The profile ID for analytics.\n */\nexport async function syncWalletMetadata(\n context: BackupAndSyncContext,\n localWallet: AccountWalletEntropyObject,\n walletFromUserStorage: UserStorageSyncedWallet | null | undefined,\n profileId: ProfileId,\n): Promise<void> {\n const shouldPushToUserStorage = await syncWalletMetadataAndCheckIfPushNeeded(\n context,\n localWallet,\n walletFromUserStorage,\n profileId,\n );\n\n if (shouldPushToUserStorage) {\n await pushWalletToUserStorage(context, localWallet);\n }\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { AccountWalletEntropyObject } from "../../wallet.cjs";
|
|
2
2
|
import type { ProfileId } from "../authentication/index.cjs";
|
|
3
|
-
import type
|
|
3
|
+
import { type BackupAndSyncContext, type UserStorageSyncedWallet } from "../types.cjs";
|
|
4
4
|
/**
|
|
5
5
|
* Syncs wallet metadata fields and determines if the wallet needs to be pushed to user storage.
|
|
6
6
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet.d.cts","sourceRoot":"","sources":["../../../src/backup-and-sync/syncing/wallet.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,0BAA0B,EAAE,yBAAqB;AAE/D,OAAO,KAAK,EAAE,SAAS,EAAE,oCAA0B;
|
|
1
|
+
{"version":3,"file":"wallet.d.cts","sourceRoot":"","sources":["../../../src/backup-and-sync/syncing/wallet.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,0BAA0B,EAAE,yBAAqB;AAE/D,OAAO,KAAK,EAAE,SAAS,EAAE,oCAA0B;AACnD,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC7B,qBAAiB;AAGlB;;;;;;;;GAQG;AACH,wBAAsB,sCAAsC,CAC1D,OAAO,EAAE,oBAAoB,EAC7B,WAAW,EAAE,0BAA0B,EACvC,qBAAqB,EAAE,uBAAuB,GAAG,IAAI,GAAG,SAAS,EACjE,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC,OAAO,CAAC,CA4ClB;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,oBAAoB,EAC7B,WAAW,EAAE,0BAA0B,EACvC,qBAAqB,EAAE,uBAAuB,GAAG,IAAI,GAAG,SAAS,EACjE,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC,IAAI,CAAC,CAWf"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { AccountWalletEntropyObject } from "../../wallet.mjs";
|
|
2
2
|
import type { ProfileId } from "../authentication/index.mjs";
|
|
3
|
-
import type
|
|
3
|
+
import { type BackupAndSyncContext, type UserStorageSyncedWallet } from "../types.mjs";
|
|
4
4
|
/**
|
|
5
5
|
* Syncs wallet metadata fields and determines if the wallet needs to be pushed to user storage.
|
|
6
6
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet.d.mts","sourceRoot":"","sources":["../../../src/backup-and-sync/syncing/wallet.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,0BAA0B,EAAE,yBAAqB;AAE/D,OAAO,KAAK,EAAE,SAAS,EAAE,oCAA0B;
|
|
1
|
+
{"version":3,"file":"wallet.d.mts","sourceRoot":"","sources":["../../../src/backup-and-sync/syncing/wallet.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,0BAA0B,EAAE,yBAAqB;AAE/D,OAAO,KAAK,EAAE,SAAS,EAAE,oCAA0B;AACnD,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC7B,qBAAiB;AAGlB;;;;;;;;GAQG;AACH,wBAAsB,sCAAsC,CAC1D,OAAO,EAAE,oBAAoB,EAC7B,WAAW,EAAE,0BAA0B,EACvC,qBAAqB,EAAE,uBAAuB,GAAG,IAAI,GAAG,SAAS,EACjE,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC,OAAO,CAAC,CA4ClB;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,oBAAoB,EAC7B,WAAW,EAAE,0BAA0B,EACvC,qBAAqB,EAAE,uBAAuB,GAAG,IAAI,GAAG,SAAS,EACjE,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC,IAAI,CAAC,CAWf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet.mjs","sourceRoot":"","sources":["../../../src/backup-and-sync/syncing/wallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,uBAAmB;AACpD,OAAO,EAAE,mBAAmB,EAAE,yBAAqB;AAEnD,OAAO,EAAE,2BAA2B,EAAE,+BAAqB;AAE3D,OAAO,
|
|
1
|
+
{"version":3,"file":"wallet.mjs","sourceRoot":"","sources":["../../../src/backup-and-sync/syncing/wallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,uBAAmB;AACpD,OAAO,EAAE,mBAAmB,EAAE,yBAAqB;AAEnD,OAAO,EAAE,2BAA2B,EAAE,+BAAqB;AAE3D,OAAO,EACL,6BAA6B,EAG9B,qBAAiB;AAClB,OAAO,EAAE,uBAAuB,EAAE,+CAA2C;AAE7E;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,sCAAsC,CAC1D,OAA6B,EAC7B,WAAuC,EACvC,qBAAiE,EACjE,SAAoB;IAEpB,MAAM,uBAAuB,GAC3B,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,sBAAsB,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IAElE,IACE,CAAC,qBAAqB;QACtB,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,MAAM,KAAK,CAAC,EAC/C,CAAC;QACD,mBAAmB,CACjB,UAAU,WAAW,CAAC,EAAE,4DAA4D,CACrF,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IACD,uDAAuD;IACvD,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAE7B,iCAAiC;IACjC,MAAM,iBAAiB,GAAG,MAAM,sBAAsB,CAAC;QACrD,OAAO;QACP,aAAa,EAAE,uBAAuB,EAAE,IAAI;QAC5C,mBAAmB,EAAE,qBAAqB,CAAC,IAAI;QAC/C,wBAAwB,EAAE,CAAC,KAAK,EAAE,EAAE,CAClC,6BAA6B,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC;QAClE,gBAAgB,EAAE,CAAC,IAAY,EAAE,EAAE;YACjC,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAChE,CAAC;QACD,SAAS,EAAE;YACT,MAAM,EAAE,2BAA2B,CAAC,aAAa;YACjD,SAAS;SACV;KACF,CAAC,CAAC;IAEH,gBAAgB,KAAhB,gBAAgB,GAAK,iBAAiB,EAAC;IAEvC,kFAAkF;IAClF,kBAAkB;IAClB,MAAM,+BAA+B,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAC3E,qBAAqB,EACrB,gCAAgC,CACjC,CAAC;IAEF,gBAAgB,KAAhB,gBAAgB,GAAK,+BAA+B,EAAC;IAErD,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAA6B,EAC7B,WAAuC,EACvC,qBAAiE,EACjE,SAAoB;IAEpB,MAAM,uBAAuB,GAAG,MAAM,sCAAsC,CAC1E,OAAO,EACP,WAAW,EACX,qBAAqB,EACrB,SAAS,CACV,CAAC;IAEF,IAAI,uBAAuB,EAAE,CAAC;QAC5B,MAAM,uBAAuB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACtD,CAAC;AACH,CAAC","sourcesContent":["import { compareAndSyncMetadata } from './metadata';\nimport { backupAndSyncLogger } from '../../logger';\nimport type { AccountWalletEntropyObject } from '../../wallet';\nimport { BackupAndSyncAnalyticsEvent } from '../analytics';\nimport type { ProfileId } from '../authentication';\nimport {\n UserStorageSyncedWalletSchema,\n type BackupAndSyncContext,\n type UserStorageSyncedWallet,\n} from '../types';\nimport { pushWalletToUserStorage } from '../user-storage/network-operations';\n\n/**\n * Syncs wallet metadata fields and determines if the wallet needs to be pushed to user storage.\n *\n * @param context - The sync context containing controller and messenger.\n * @param localWallet - The local wallet to sync.\n * @param walletFromUserStorage - The wallet data from user storage, if any.\n * @param profileId - The profile ID for analytics.\n * @returns Promise resolving to true if the wallet should be pushed to user storage.\n */\nexport async function syncWalletMetadataAndCheckIfPushNeeded(\n context: BackupAndSyncContext,\n localWallet: AccountWalletEntropyObject,\n walletFromUserStorage: UserStorageSyncedWallet | null | undefined,\n profileId: ProfileId,\n): Promise<boolean> {\n const walletPersistedMetadata =\n context.controller.state.accountWalletsMetadata[localWallet.id];\n\n if (\n !walletFromUserStorage ||\n Object.keys(walletFromUserStorage).length === 0\n ) {\n backupAndSyncLogger(\n `Wallet ${localWallet.id} did not exist in user storage, pushing to user storage...`,\n );\n return true;\n }\n // Track if we need to push this wallet to user storage\n let shouldPushWallet = false;\n\n // Compare and sync name metadata\n const shouldPushForName = await compareAndSyncMetadata({\n context,\n localMetadata: walletPersistedMetadata?.name,\n userStorageMetadata: walletFromUserStorage.name,\n validateUserStorageValue: (value) =>\n UserStorageSyncedWalletSchema.schema.name.schema.value.is(value),\n applyLocalUpdate: (name: string) => {\n context.controller.setAccountWalletName(localWallet.id, name);\n },\n analytics: {\n action: BackupAndSyncAnalyticsEvent.WalletRenamed,\n profileId,\n },\n });\n\n shouldPushWallet ||= shouldPushForName;\n\n // Avoid re-triggering legacy-syncing (in case this field is missing on the remote\n // wallet object).\n const shouldPushForMissingLegacyField = !Object.prototype.hasOwnProperty.call(\n walletFromUserStorage,\n 'isLegacyAccountSyncingDisabled',\n );\n\n shouldPushWallet ||= shouldPushForMissingLegacyField;\n\n return shouldPushWallet;\n}\n\n/**\n * Syncs wallet metadata and pushes it to user storage if needed.\n *\n * @param context - The sync context containing controller and messenger.\n * @param localWallet - The local wallet to sync.\n * @param walletFromUserStorage - The wallet data from user storage, if any.\n * @param profileId - The profile ID for analytics.\n */\nexport async function syncWalletMetadata(\n context: BackupAndSyncContext,\n localWallet: AccountWalletEntropyObject,\n walletFromUserStorage: UserStorageSyncedWallet | null | undefined,\n profileId: ProfileId,\n): Promise<void> {\n const shouldPushToUserStorage = await syncWalletMetadataAndCheckIfPushNeeded(\n context,\n localWallet,\n walletFromUserStorage,\n profileId,\n );\n\n if (shouldPushToUserStorage) {\n await pushWalletToUserStorage(context, localWallet);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.cjs","sourceRoot":"","sources":["../../src/backup-and-sync/types.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"types.cjs","sourceRoot":"","sources":["../../src/backup-and-sync/types.ts"],"names":[],"mappings":";;;AASA,uDAO+B;AAY/B;;;;;GAKG;AACH,MAAM,oBAAoB,GAAG,CAAI,WAAsB,EAAE,EAAE,CACzD,IAAA,oBAAM,EAAC;IACL,KAAK,EAAE,WAAW;IAClB,aAAa,EAAE,IAAA,oBAAM,GAAE;CACxB,CAAC,CAAC;AAEL;;GAEG;AACU,QAAA,6BAA6B,GAAG,IAAA,oBAAM,EAAC;IAClD,IAAI,EAAE,IAAA,sBAAQ,EAAC,oBAAoB,CAAC,IAAA,oBAAM,GAAE,CAAC,CAAC;IAC9C,8BAA8B,EAAE,IAAA,sBAAQ,EAAC,IAAA,qBAAO,GAAE,CAAC;CACpD,CAAC,CAAC;AAEH;;GAEG;AACU,QAAA,kCAAkC,GAAG,IAAA,oBAAM,EAAC;IACvD,IAAI,EAAE,IAAA,sBAAQ,EAAC,oBAAoB,CAAC,IAAA,oBAAM,GAAE,CAAC,CAAC;IAC9C,MAAM,EAAE,IAAA,sBAAQ,EAAC,oBAAoB,CAAC,IAAA,qBAAO,GAAE,CAAC,CAAC;IACjD,MAAM,EAAE,IAAA,sBAAQ,EAAC,oBAAoB,CAAC,IAAA,qBAAO,GAAE,CAAC,CAAC;IACjD,UAAU,EAAE,IAAA,oBAAM,GAAE;CACrB,CAAC,CAAC;AAEH;;GAEG;AACU,QAAA,oCAAoC,GAAG,IAAA,oBAAM,EAAC;IACzD,CAAC,EAAE,IAAA,sBAAQ,EAAC,IAAA,oBAAM,GAAE,CAAC;IACrB,CAAC,EAAE,IAAA,sBAAQ,EAAC,IAAA,oBAAM,GAAE,CAAC;IACrB,CAAC,EAAE,IAAA,sBAAQ,EAAC,IAAA,oBAAM,GAAE,CAAC;IACrB,CAAC,EAAE,IAAA,sBAAQ,EAAC,IAAA,oBAAM,GAAE,CAAC;IACrB,GAAG,EAAE,IAAA,sBAAQ,EAAC,IAAA,oBAAM,GAAE,CAAC;CACxB,CAAC,CAAC","sourcesContent":["import type {\n AccountGroupId,\n AccountGroupType,\n AccountWalletId,\n AccountWalletType,\n} from '@metamask/account-api';\nimport type { TraceCallback } from '@metamask/controller-utils';\nimport type { InternalAccount } from '@metamask/keyring-internal-api';\nimport type { Infer } from '@metamask/superstruct';\nimport {\n object,\n string,\n boolean,\n number,\n optional,\n type Struct,\n} from '@metamask/superstruct';\n\nimport type { BackupAndSyncEmitAnalyticsEventParams } from './analytics';\nimport type { AccountTreeController } from '../AccountTreeController';\nimport type {\n AccountGroupMultichainAccountObject,\n AccountTreeGroupPersistedMetadata,\n} from '../group';\nimport type { RuleResult } from '../rule';\nimport type { AccountTreeControllerMessenger } from '../types';\nimport type { AccountTreeWalletPersistedMetadata } from '../wallet';\n\n/**\n * Schema for an updatable field with value and timestamp.\n *\n * @param valueSchema - The schema for the value field.\n * @returns A superstruct schema for an updatable field.\n */\nconst UpdatableFieldSchema = <T>(valueSchema: Struct<T>) =>\n object({\n value: valueSchema,\n lastUpdatedAt: number(),\n });\n\n/**\n * Superstruct schema for UserStorageSyncedWallet validation.\n */\nexport const UserStorageSyncedWalletSchema = object({\n name: optional(UpdatableFieldSchema(string())),\n isLegacyAccountSyncingDisabled: optional(boolean()),\n});\n\n/**\n * Superstruct schema for UserStorageSyncedWalletGroup validation.\n */\nexport const UserStorageSyncedWalletGroupSchema = object({\n name: optional(UpdatableFieldSchema(string())),\n pinned: optional(UpdatableFieldSchema(boolean())),\n hidden: optional(UpdatableFieldSchema(boolean())),\n groupIndex: number(),\n});\n\n/**\n * Superstruct schema for LegacyUserStorageSyncedAccount validation.\n */\nexport const LegacyUserStorageSyncedAccountSchema = object({\n v: optional(string()),\n i: optional(string()),\n a: optional(string()),\n n: optional(string()),\n nlu: optional(number()),\n});\n\nexport type UserStorageSyncedWallet = AccountTreeWalletPersistedMetadata &\n Infer<typeof UserStorageSyncedWalletSchema>;\n\nexport type UserStorageSyncedWalletGroup = AccountTreeGroupPersistedMetadata & {\n groupIndex: AccountGroupMultichainAccountObject['metadata']['entropy']['groupIndex'];\n} & Infer<typeof UserStorageSyncedWalletGroupSchema>;\n\nexport type LegacyUserStorageSyncedAccount = Infer<\n typeof LegacyUserStorageSyncedAccountSchema\n>;\n\nexport type BackupAndSyncContext = {\n messenger: AccountTreeControllerMessenger;\n controller: AccountTreeController;\n controllerStateUpdateFn: AccountTreeController['update'];\n traceFn: TraceCallback;\n groupIdToWalletId: Map<AccountGroupId, AccountWalletId>;\n emitAnalyticsEventFn: (event: BackupAndSyncEmitAnalyticsEventParams) => void;\n};\n\nexport type LegacyAccountSyncingContext = {\n listAccounts: () => InternalAccount[];\n getEntropyRule: () => {\n match: (\n account: InternalAccount,\n ) =>\n | RuleResult<\n AccountWalletType.Entropy,\n AccountGroupType.MultichainAccount\n >\n | undefined;\n };\n};\n\nexport type AtomicSyncEvent = {\n execute: () => Promise<void>;\n};\n"]}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { AccountGroupId, AccountGroupType, AccountWalletId, AccountWalletType } from "@metamask/account-api";
|
|
2
2
|
import type { TraceCallback } from "@metamask/controller-utils";
|
|
3
3
|
import type { InternalAccount } from "@metamask/keyring-internal-api";
|
|
4
|
-
import type { Infer
|
|
4
|
+
import type { Infer } from "@metamask/superstruct";
|
|
5
|
+
import { type Struct } from "@metamask/superstruct";
|
|
5
6
|
import type { BackupAndSyncEmitAnalyticsEventParams } from "./analytics/index.cjs";
|
|
6
7
|
import type { AccountTreeController } from "../AccountTreeController.cjs";
|
|
7
8
|
import type { AccountGroupMultichainAccountObject, AccountTreeGroupPersistedMetadata } from "../group.cjs";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.cts","sourceRoot":"","sources":["../../src/backup-and-sync/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EAClB,8BAA8B;AAC/B,OAAO,KAAK,EAAE,aAAa,EAAE,mCAAmC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,uCAAuC;
|
|
1
|
+
{"version":3,"file":"types.d.cts","sourceRoot":"","sources":["../../src/backup-and-sync/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EAClB,8BAA8B;AAC/B,OAAO,KAAK,EAAE,aAAa,EAAE,mCAAmC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,uCAAuC;AACtE,OAAO,KAAK,EAAE,KAAK,EAAE,8BAA8B;AACnD,OAAO,EAML,KAAK,MAAM,EACZ,8BAA8B;AAE/B,OAAO,KAAK,EAAE,qCAAqC,EAAE,8BAAoB;AACzE,OAAO,KAAK,EAAE,qBAAqB,EAAE,qCAAiC;AACtE,OAAO,KAAK,EACV,mCAAmC,EACnC,iCAAiC,EAClC,qBAAiB;AAClB,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAgB;AAC1C,OAAO,KAAK,EAAE,8BAA8B,EAAE,qBAAiB;AAC/D,OAAO,KAAK,EAAE,kCAAkC,EAAE,sBAAkB;AAcpE;;GAEG;AACH,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;EAGxC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAK7C,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,oCAAoC;;;;;;;;;;;;EAM/C,CAAC;AAEH,MAAM,MAAM,uBAAuB,GAAG,kCAAkC,GACtE,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAE9C,MAAM,MAAM,4BAA4B,GAAG,iCAAiC,GAAG;IAC7E,UAAU,EAAE,mCAAmC,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC;CACtF,GAAG,KAAK,CAAC,OAAO,kCAAkC,CAAC,CAAC;AAErD,MAAM,MAAM,8BAA8B,GAAG,KAAK,CAChD,OAAO,oCAAoC,CAC5C,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,EAAE,8BAA8B,CAAC;IAC1C,UAAU,EAAE,qBAAqB,CAAC;IAClC,uBAAuB,EAAE,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IACzD,OAAO,EAAE,aAAa,CAAC;IACvB,iBAAiB,EAAE,GAAG,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;IACxD,oBAAoB,EAAE,CAAC,KAAK,EAAE,qCAAqC,KAAK,IAAI,CAAC;CAC9E,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,YAAY,EAAE,MAAM,eAAe,EAAE,CAAC;IACtC,cAAc,EAAE,MAAM;QACpB,KAAK,EAAE,CACL,OAAO,EAAE,eAAe,KAEtB,UAAU,CACR,iBAAiB,CAAC,OAAO,EACzB,gBAAgB,CAAC,iBAAiB,CACnC,GACD,SAAS,CAAC;KACf,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B,CAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { AccountGroupId, AccountGroupType, AccountWalletId, AccountWalletType } from "@metamask/account-api";
|
|
2
2
|
import type { TraceCallback } from "@metamask/controller-utils";
|
|
3
3
|
import type { InternalAccount } from "@metamask/keyring-internal-api";
|
|
4
|
-
import type { Infer
|
|
4
|
+
import type { Infer } from "@metamask/superstruct";
|
|
5
|
+
import { type Struct } from "@metamask/superstruct";
|
|
5
6
|
import type { BackupAndSyncEmitAnalyticsEventParams } from "./analytics/index.mjs";
|
|
6
7
|
import type { AccountTreeController } from "../AccountTreeController.mjs";
|
|
7
8
|
import type { AccountGroupMultichainAccountObject, AccountTreeGroupPersistedMetadata } from "../group.mjs";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../../src/backup-and-sync/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EAClB,8BAA8B;AAC/B,OAAO,KAAK,EAAE,aAAa,EAAE,mCAAmC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,uCAAuC;
|
|
1
|
+
{"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../../src/backup-and-sync/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EAClB,8BAA8B;AAC/B,OAAO,KAAK,EAAE,aAAa,EAAE,mCAAmC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,uCAAuC;AACtE,OAAO,KAAK,EAAE,KAAK,EAAE,8BAA8B;AACnD,OAAO,EAML,KAAK,MAAM,EACZ,8BAA8B;AAE/B,OAAO,KAAK,EAAE,qCAAqC,EAAE,8BAAoB;AACzE,OAAO,KAAK,EAAE,qBAAqB,EAAE,qCAAiC;AACtE,OAAO,KAAK,EACV,mCAAmC,EACnC,iCAAiC,EAClC,qBAAiB;AAClB,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAgB;AAC1C,OAAO,KAAK,EAAE,8BAA8B,EAAE,qBAAiB;AAC/D,OAAO,KAAK,EAAE,kCAAkC,EAAE,sBAAkB;AAcpE;;GAEG;AACH,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;EAGxC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAK7C,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,oCAAoC;;;;;;;;;;;;EAM/C,CAAC;AAEH,MAAM,MAAM,uBAAuB,GAAG,kCAAkC,GACtE,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAE9C,MAAM,MAAM,4BAA4B,GAAG,iCAAiC,GAAG;IAC7E,UAAU,EAAE,mCAAmC,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC;CACtF,GAAG,KAAK,CAAC,OAAO,kCAAkC,CAAC,CAAC;AAErD,MAAM,MAAM,8BAA8B,GAAG,KAAK,CAChD,OAAO,oCAAoC,CAC5C,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,EAAE,8BAA8B,CAAC;IAC1C,UAAU,EAAE,qBAAqB,CAAC;IAClC,uBAAuB,EAAE,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IACzD,OAAO,EAAE,aAAa,CAAC;IACvB,iBAAiB,EAAE,GAAG,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;IACxD,oBAAoB,EAAE,CAAC,KAAK,EAAE,qCAAqC,KAAK,IAAI,CAAC;CAC9E,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,YAAY,EAAE,MAAM,eAAe,EAAE,CAAC;IACtC,cAAc,EAAE,MAAM;QACpB,KAAK,EAAE,CACL,OAAO,EAAE,eAAe,KAEtB,UAAU,CACR,iBAAiB,CAAC,OAAO,EACzB,gBAAgB,CAAC,iBAAiB,CACnC,GACD,SAAS,CAAC;KACf,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.mjs","sourceRoot":"","sources":["../../src/backup-and-sync/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.mjs","sourceRoot":"","sources":["../../src/backup-and-sync/types.ts"],"names":[],"mappings":"AASA,OAAO,EACL,MAAM,EACN,MAAM,EACN,OAAO,EACP,MAAM,EACN,QAAQ,EAET,8BAA8B;AAY/B;;;;;GAKG;AACH,MAAM,oBAAoB,GAAG,CAAI,WAAsB,EAAE,EAAE,CACzD,MAAM,CAAC;IACL,KAAK,EAAE,WAAW;IAClB,aAAa,EAAE,MAAM,EAAE;CACxB,CAAC,CAAC;AAEL;;GAEG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,MAAM,CAAC;IAClD,IAAI,EAAE,QAAQ,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9C,8BAA8B,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;CACpD,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,MAAM,CAAC;IACvD,IAAI,EAAE,QAAQ,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9C,MAAM,EAAE,QAAQ,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC,CAAC;IACjD,MAAM,EAAE,QAAQ,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC,CAAC;IACjD,UAAU,EAAE,MAAM,EAAE;CACrB,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,MAAM,CAAC;IACzD,CAAC,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IACrB,CAAC,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IACrB,CAAC,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IACrB,CAAC,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IACrB,GAAG,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;CACxB,CAAC,CAAC","sourcesContent":["import type {\n AccountGroupId,\n AccountGroupType,\n AccountWalletId,\n AccountWalletType,\n} from '@metamask/account-api';\nimport type { TraceCallback } from '@metamask/controller-utils';\nimport type { InternalAccount } from '@metamask/keyring-internal-api';\nimport type { Infer } from '@metamask/superstruct';\nimport {\n object,\n string,\n boolean,\n number,\n optional,\n type Struct,\n} from '@metamask/superstruct';\n\nimport type { BackupAndSyncEmitAnalyticsEventParams } from './analytics';\nimport type { AccountTreeController } from '../AccountTreeController';\nimport type {\n AccountGroupMultichainAccountObject,\n AccountTreeGroupPersistedMetadata,\n} from '../group';\nimport type { RuleResult } from '../rule';\nimport type { AccountTreeControllerMessenger } from '../types';\nimport type { AccountTreeWalletPersistedMetadata } from '../wallet';\n\n/**\n * Schema for an updatable field with value and timestamp.\n *\n * @param valueSchema - The schema for the value field.\n * @returns A superstruct schema for an updatable field.\n */\nconst UpdatableFieldSchema = <T>(valueSchema: Struct<T>) =>\n object({\n value: valueSchema,\n lastUpdatedAt: number(),\n });\n\n/**\n * Superstruct schema for UserStorageSyncedWallet validation.\n */\nexport const UserStorageSyncedWalletSchema = object({\n name: optional(UpdatableFieldSchema(string())),\n isLegacyAccountSyncingDisabled: optional(boolean()),\n});\n\n/**\n * Superstruct schema for UserStorageSyncedWalletGroup validation.\n */\nexport const UserStorageSyncedWalletGroupSchema = object({\n name: optional(UpdatableFieldSchema(string())),\n pinned: optional(UpdatableFieldSchema(boolean())),\n hidden: optional(UpdatableFieldSchema(boolean())),\n groupIndex: number(),\n});\n\n/**\n * Superstruct schema for LegacyUserStorageSyncedAccount validation.\n */\nexport const LegacyUserStorageSyncedAccountSchema = object({\n v: optional(string()),\n i: optional(string()),\n a: optional(string()),\n n: optional(string()),\n nlu: optional(number()),\n});\n\nexport type UserStorageSyncedWallet = AccountTreeWalletPersistedMetadata &\n Infer<typeof UserStorageSyncedWalletSchema>;\n\nexport type UserStorageSyncedWalletGroup = AccountTreeGroupPersistedMetadata & {\n groupIndex: AccountGroupMultichainAccountObject['metadata']['entropy']['groupIndex'];\n} & Infer<typeof UserStorageSyncedWalletGroupSchema>;\n\nexport type LegacyUserStorageSyncedAccount = Infer<\n typeof LegacyUserStorageSyncedAccountSchema\n>;\n\nexport type BackupAndSyncContext = {\n messenger: AccountTreeControllerMessenger;\n controller: AccountTreeController;\n controllerStateUpdateFn: AccountTreeController['update'];\n traceFn: TraceCallback;\n groupIdToWalletId: Map<AccountGroupId, AccountWalletId>;\n emitAnalyticsEventFn: (event: BackupAndSyncEmitAnalyticsEventParams) => void;\n};\n\nexport type LegacyAccountSyncingContext = {\n listAccounts: () => InternalAccount[];\n getEntropyRule: () => {\n match: (\n account: InternalAccount,\n ) =>\n | RuleResult<\n AccountWalletType.Entropy,\n AccountGroupType.MultichainAccount\n >\n | undefined;\n };\n};\n\nexport type AtomicSyncEvent = {\n execute: () => Promise<void>;\n};\n"]}
|
package/dist/group.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"group.cjs","sourceRoot":"","sources":["../src/group.ts"],"names":[],"mappings":";;;AAMA,
|
|
1
|
+
{"version":3,"file":"group.cjs","sourceRoot":"","sources":["../src/group.ts"],"names":[],"mappings":";;;AAMA,uDAO+B;AAkBlB,QAAA,cAAc,GAAG,IAAI,CAAC;AAEnC;;GAEG;AACU,QAAA,0BAA0B,GAAuC;IAC5E,CAAC,4BAAc,CAAC,GAAG,CAAC,EAAE,CAAC;IACvB,CAAC,4BAAc,CAAC,OAAO,CAAC,EAAE,CAAC;IAC3B,CAAC,4BAAc,CAAC,WAAW,CAAC,EAAE,CAAC;IAC/B,CAAC,4BAAc,CAAC,KAAK,CAAC,EAAE,CAAC;IACzB,CAAC,4BAAc,CAAC,IAAI,CAAC,EAAE,CAAC;IACxB,CAAC,4BAAc,CAAC,MAAM,CAAC,EAAE,CAAC;IAC1B,CAAC,4BAAc,CAAC,IAAI,CAAC,EAAE,CAAC;IACxB,CAAC,4BAAc,CAAC,GAAG,CAAC,EAAE,CAAC;IACvB,CAAC,4BAAc,CAAC,OAAO,CAAC,EAAE,sBAAc;CACzC,CAAC;AAsEF;;;;;;;GAOG;AACH,SAAgB,kCAAkC,CAChD,MAA2B,EAC3B,OAAuB,EACvB,IAAY;IAEZ,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAEhC,0CAA0C;IAC1C,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACjD,IAAI,KAAK,CAAC,EAAE,KAAK,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,WAAW,EAAE,CAAC;YACvE,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAdD,gFAcC;AAED;;;;;;;;GAQG;AACH,SAAgB,wBAAwB,CACtC,KAAiC,EACjC,OAAuB,EACvB,IAAY;IAEZ,0DAA0D;IAC1D,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9D,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,mDAAmD;YACnD,OAAO,kCAAkC,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,0BAA0B,OAAO,qBAAqB,CAAC,CAAC;AAC1E,CAAC;AAdD,4DAcC","sourcesContent":["import {\n type AccountGroupType,\n type MultichainAccountGroupId,\n} from '@metamask/account-api';\nimport type { AccountGroupId } from '@metamask/account-api';\nimport type { AccountId } from '@metamask/accounts-controller';\nimport {\n AnyAccountType,\n BtcAccountType,\n EthAccountType,\n type KeyringAccountType,\n SolAccountType,\n TrxAccountType,\n} from '@metamask/keyring-api';\n\nimport type { UpdatableField, ExtractFieldValues } from './type-utils';\nimport type { AccountTreeControllerState } from './types';\nimport type { AccountWalletObject } from './wallet';\n\n/**\n * Persisted metadata for account groups (stored in controller state for persistence/sync).\n */\nexport type AccountTreeGroupPersistedMetadata = {\n /** Custom name set by user, overrides default naming logic */\n name?: UpdatableField<string>;\n /** Whether this group is pinned in the UI */\n pinned?: UpdatableField<boolean>;\n /** Whether this group is hidden in the UI */\n hidden?: UpdatableField<boolean>;\n};\n\nexport const MAX_SORT_ORDER = 9999;\n\n/**\n * Order of account types.\n */\nexport const ACCOUNT_TYPE_TO_SORT_ORDER: Record<KeyringAccountType, number> = {\n [EthAccountType.Eoa]: 0,\n [EthAccountType.Erc4337]: 1,\n [SolAccountType.DataAccount]: 2,\n [BtcAccountType.P2pkh]: 3,\n [BtcAccountType.P2sh]: 4,\n [BtcAccountType.P2wpkh]: 5,\n [BtcAccountType.P2tr]: 6,\n [TrxAccountType.Eoa]: 7,\n [AnyAccountType.Account]: MAX_SORT_ORDER,\n};\n\nexport type AccountTypeOrderKey = keyof typeof ACCOUNT_TYPE_TO_SORT_ORDER;\n\n/**\n * Tree metadata for account groups (required plain values extracted from persisted metadata).\n */\nexport type AccountTreeGroupMetadata = Required<\n ExtractFieldValues<AccountTreeGroupPersistedMetadata>\n>;\n\n/**\n * Type constraint for a {@link AccountGroupObject}. If one of its union-members\n * does not match this contraint, {@link AccountGroupObject} will resolve\n * to `never`.\n */\ntype IsAccountGroupObject<\n Type extends {\n type: AccountGroupType;\n id: AccountGroupId;\n accounts: AccountId[];\n metadata: AccountTreeGroupMetadata;\n },\n> = Type;\n\n/**\n * Multichain-account group object.\n */\nexport type AccountGroupMultichainAccountObject = {\n type: AccountGroupType.MultichainAccount;\n id: MultichainAccountGroupId;\n // Blockchain Accounts (at least 1 account per multichain-accounts):\n accounts: [AccountId, ...AccountId[]];\n metadata: AccountTreeGroupMetadata & {\n entropy: {\n groupIndex: number;\n };\n };\n};\n\n/**\n * Multichain-account group object.\n */\nexport type AccountGroupSingleAccountObject = {\n type: AccountGroupType.SingleAccount;\n id: AccountGroupId;\n // Blockchain Accounts (1 account per group):\n accounts: [AccountId];\n metadata: AccountTreeGroupMetadata;\n};\n\n/**\n * Account group object.\n */\nexport type AccountGroupObject = IsAccountGroupObject<\n AccountGroupMultichainAccountObject | AccountGroupSingleAccountObject\n>;\n\nexport type AccountGroupObjectOf<GroupType extends AccountGroupType> = Extract<\n | {\n type: AccountGroupType.MultichainAccount;\n object: AccountGroupMultichainAccountObject;\n }\n | {\n type: AccountGroupType.SingleAccount;\n object: AccountGroupSingleAccountObject;\n },\n { type: GroupType }\n>['object'];\n\n/**\n * Checks if a group name is unique within a specific wallet.\n *\n * @param wallet - The wallet to check within.\n * @param groupId - The account group ID to exclude from the check.\n * @param name - The name to validate for uniqueness.\n * @returns True if the name is unique within the wallet, false otherwise.\n */\nexport function isAccountGroupNameUniqueFromWallet(\n wallet: AccountWalletObject,\n groupId: AccountGroupId,\n name: string,\n): boolean {\n const trimmedName = name.trim();\n\n // Check for duplicates within this wallet\n for (const group of Object.values(wallet.groups)) {\n if (group.id !== groupId && group.metadata.name.trim() === trimmedName) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Checks if an account group name is unique within the same wallet.\n *\n * @param state - The account tree controller state.\n * @param groupId - The account group ID to exclude from the check.\n * @param name - The name to validate for uniqueness.\n * @returns True if the name is unique within the same wallet, false otherwise.\n * @throws Error if the group ID does not exist.\n */\nexport function isAccountGroupNameUnique(\n state: AccountTreeControllerState,\n groupId: AccountGroupId,\n name: string,\n): boolean {\n // Find the wallet that contains the group being validated\n for (const wallet of Object.values(state.accountTree.wallets)) {\n if (wallet.groups[groupId]) {\n // Use the wallet-specific function for consistency\n return isAccountGroupNameUniqueFromWallet(wallet, groupId, name);\n }\n }\n\n throw new Error(`Account group with ID \"${groupId}\" not found in tree`);\n}\n"]}
|
package/dist/group.d.cts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type AccountGroupType, type MultichainAccountGroupId } from "@metamask/account-api";
|
|
2
2
|
import type { AccountGroupId } from "@metamask/account-api";
|
|
3
3
|
import type { AccountId } from "@metamask/accounts-controller";
|
|
4
|
-
import type
|
|
4
|
+
import { type KeyringAccountType } from "@metamask/keyring-api";
|
|
5
5
|
import type { UpdatableField, ExtractFieldValues } from "./type-utils.cjs";
|
|
6
6
|
import type { AccountTreeControllerState } from "./types.cjs";
|
|
7
7
|
import type { AccountWalletObject } from "./wallet.cjs";
|
package/dist/group.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"group.d.cts","sourceRoot":"","sources":["../src/group.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"group.d.cts","sourceRoot":"","sources":["../src/group.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,wBAAwB,EAC9B,8BAA8B;AAC/B,OAAO,KAAK,EAAE,cAAc,EAAE,8BAA8B;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,sCAAsC;AAC/D,OAAO,EAIL,KAAK,kBAAkB,EAGxB,8BAA8B;AAE/B,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,yBAAqB;AACvE,OAAO,KAAK,EAAE,0BAA0B,EAAE,oBAAgB;AAC1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,qBAAiB;AAEpD;;GAEG;AACH,MAAM,MAAM,iCAAiC,GAAG;IAC9C,8DAA8D;IAC9D,IAAI,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IAC9B,6CAA6C;IAC7C,MAAM,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;IACjC,6CAA6C;IAC7C,MAAM,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;CAClC,CAAC;AAEF,eAAO,MAAM,cAAc,OAAO,CAAC;AAEnC;;GAEG;AACH,eAAO,MAAM,0BAA0B,EAAE,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAUzE,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,MAAM,OAAO,0BAA0B,CAAC;AAE1E;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG,QAAQ,CAC7C,kBAAkB,CAAC,iCAAiC,CAAC,CACtD,CAAC;AAEF;;;;GAIG;AACH,KAAK,oBAAoB,CACvB,IAAI,SAAS;IACX,IAAI,EAAE,gBAAgB,CAAC;IACvB,EAAE,EAAE,cAAc,CAAC;IACnB,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtB,QAAQ,EAAE,wBAAwB,CAAC;CACpC,IACC,IAAI,CAAC;AAET;;GAEG;AACH,MAAM,MAAM,mCAAmC,GAAG;IAChD,IAAI,EAAE,gBAAgB,CAAC,iBAAiB,CAAC;IACzC,EAAE,EAAE,wBAAwB,CAAC;IAE7B,QAAQ,EAAE,CAAC,SAAS,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC;IACtC,QAAQ,EAAE,wBAAwB,GAAG;QACnC,OAAO,EAAE;YACP,UAAU,EAAE,MAAM,CAAC;SACpB,CAAC;KACH,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,+BAA+B,GAAG;IAC5C,IAAI,EAAE,gBAAgB,CAAC,aAAa,CAAC;IACrC,EAAE,EAAE,cAAc,CAAC;IAEnB,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC;IACtB,QAAQ,EAAE,wBAAwB,CAAC;CACpC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,oBAAoB,CACnD,mCAAmC,GAAG,+BAA+B,CACtE,CAAC;AAEF,MAAM,MAAM,oBAAoB,CAAC,SAAS,SAAS,gBAAgB,IAAI,OAAO,CAC1E;IACE,IAAI,EAAE,gBAAgB,CAAC,iBAAiB,CAAC;IACzC,MAAM,EAAE,mCAAmC,CAAC;CAC7C,GACD;IACE,IAAI,EAAE,gBAAgB,CAAC,aAAa,CAAC;IACrC,MAAM,EAAE,+BAA+B,CAAC;CACzC,EACH;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CACpB,CAAC,QAAQ,CAAC,CAAC;AAEZ;;;;;;;GAOG;AACH,wBAAgB,kCAAkC,CAChD,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,cAAc,EACvB,IAAI,EAAE,MAAM,GACX,OAAO,CAUT;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,0BAA0B,EACjC,OAAO,EAAE,cAAc,EACvB,IAAI,EAAE,MAAM,GACX,OAAO,CAUT"}
|
package/dist/group.d.mts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type AccountGroupType, type MultichainAccountGroupId } from "@metamask/account-api";
|
|
2
2
|
import type { AccountGroupId } from "@metamask/account-api";
|
|
3
3
|
import type { AccountId } from "@metamask/accounts-controller";
|
|
4
|
-
import type
|
|
4
|
+
import { type KeyringAccountType } from "@metamask/keyring-api";
|
|
5
5
|
import type { UpdatableField, ExtractFieldValues } from "./type-utils.mjs";
|
|
6
6
|
import type { AccountTreeControllerState } from "./types.mjs";
|
|
7
7
|
import type { AccountWalletObject } from "./wallet.mjs";
|
package/dist/group.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"group.d.mts","sourceRoot":"","sources":["../src/group.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"group.d.mts","sourceRoot":"","sources":["../src/group.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,wBAAwB,EAC9B,8BAA8B;AAC/B,OAAO,KAAK,EAAE,cAAc,EAAE,8BAA8B;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,sCAAsC;AAC/D,OAAO,EAIL,KAAK,kBAAkB,EAGxB,8BAA8B;AAE/B,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,yBAAqB;AACvE,OAAO,KAAK,EAAE,0BAA0B,EAAE,oBAAgB;AAC1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,qBAAiB;AAEpD;;GAEG;AACH,MAAM,MAAM,iCAAiC,GAAG;IAC9C,8DAA8D;IAC9D,IAAI,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IAC9B,6CAA6C;IAC7C,MAAM,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;IACjC,6CAA6C;IAC7C,MAAM,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;CAClC,CAAC;AAEF,eAAO,MAAM,cAAc,OAAO,CAAC;AAEnC;;GAEG;AACH,eAAO,MAAM,0BAA0B,EAAE,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAUzE,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,MAAM,OAAO,0BAA0B,CAAC;AAE1E;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG,QAAQ,CAC7C,kBAAkB,CAAC,iCAAiC,CAAC,CACtD,CAAC;AAEF;;;;GAIG;AACH,KAAK,oBAAoB,CACvB,IAAI,SAAS;IACX,IAAI,EAAE,gBAAgB,CAAC;IACvB,EAAE,EAAE,cAAc,CAAC;IACnB,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtB,QAAQ,EAAE,wBAAwB,CAAC;CACpC,IACC,IAAI,CAAC;AAET;;GAEG;AACH,MAAM,MAAM,mCAAmC,GAAG;IAChD,IAAI,EAAE,gBAAgB,CAAC,iBAAiB,CAAC;IACzC,EAAE,EAAE,wBAAwB,CAAC;IAE7B,QAAQ,EAAE,CAAC,SAAS,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC;IACtC,QAAQ,EAAE,wBAAwB,GAAG;QACnC,OAAO,EAAE;YACP,UAAU,EAAE,MAAM,CAAC;SACpB,CAAC;KACH,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,+BAA+B,GAAG;IAC5C,IAAI,EAAE,gBAAgB,CAAC,aAAa,CAAC;IACrC,EAAE,EAAE,cAAc,CAAC;IAEnB,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC;IACtB,QAAQ,EAAE,wBAAwB,CAAC;CACpC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,oBAAoB,CACnD,mCAAmC,GAAG,+BAA+B,CACtE,CAAC;AAEF,MAAM,MAAM,oBAAoB,CAAC,SAAS,SAAS,gBAAgB,IAAI,OAAO,CAC1E;IACE,IAAI,EAAE,gBAAgB,CAAC,iBAAiB,CAAC;IACzC,MAAM,EAAE,mCAAmC,CAAC;CAC7C,GACD;IACE,IAAI,EAAE,gBAAgB,CAAC,aAAa,CAAC;IACrC,MAAM,EAAE,+BAA+B,CAAC;CACzC,EACH;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CACpB,CAAC,QAAQ,CAAC,CAAC;AAEZ;;;;;;;GAOG;AACH,wBAAgB,kCAAkC,CAChD,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,cAAc,EACvB,IAAI,EAAE,MAAM,GACX,OAAO,CAUT;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,0BAA0B,EACjC,OAAO,EAAE,cAAc,EACvB,IAAI,EAAE,MAAM,GACX,OAAO,CAUT"}
|
package/dist/group.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"group.mjs","sourceRoot":"","sources":["../src/group.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,cAAc,EACd,cAAc,EACd,cAAc,
|
|
1
|
+
{"version":3,"file":"group.mjs","sourceRoot":"","sources":["../src/group.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,cAAc,EACd,cAAc,EACd,cAAc,EAEd,cAAc,EACd,cAAc,EACf,8BAA8B;AAkB/B,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC;AAEnC;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAuC;IAC5E,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;IACvB,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;IAC3B,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,CAAC;IAC/B,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;IACzB,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;IACxB,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;IAC1B,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;IACxB,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;IACvB,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,cAAc;CACzC,CAAC;AAsEF;;;;;;;GAOG;AACH,MAAM,UAAU,kCAAkC,CAChD,MAA2B,EAC3B,OAAuB,EACvB,IAAY;IAEZ,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAEhC,0CAA0C;IAC1C,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACjD,IAAI,KAAK,CAAC,EAAE,KAAK,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,WAAW,EAAE,CAAC;YACvE,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,wBAAwB,CACtC,KAAiC,EACjC,OAAuB,EACvB,IAAY;IAEZ,0DAA0D;IAC1D,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9D,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,mDAAmD;YACnD,OAAO,kCAAkC,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,0BAA0B,OAAO,qBAAqB,CAAC,CAAC;AAC1E,CAAC","sourcesContent":["import {\n type AccountGroupType,\n type MultichainAccountGroupId,\n} from '@metamask/account-api';\nimport type { AccountGroupId } from '@metamask/account-api';\nimport type { AccountId } from '@metamask/accounts-controller';\nimport {\n AnyAccountType,\n BtcAccountType,\n EthAccountType,\n type KeyringAccountType,\n SolAccountType,\n TrxAccountType,\n} from '@metamask/keyring-api';\n\nimport type { UpdatableField, ExtractFieldValues } from './type-utils';\nimport type { AccountTreeControllerState } from './types';\nimport type { AccountWalletObject } from './wallet';\n\n/**\n * Persisted metadata for account groups (stored in controller state for persistence/sync).\n */\nexport type AccountTreeGroupPersistedMetadata = {\n /** Custom name set by user, overrides default naming logic */\n name?: UpdatableField<string>;\n /** Whether this group is pinned in the UI */\n pinned?: UpdatableField<boolean>;\n /** Whether this group is hidden in the UI */\n hidden?: UpdatableField<boolean>;\n};\n\nexport const MAX_SORT_ORDER = 9999;\n\n/**\n * Order of account types.\n */\nexport const ACCOUNT_TYPE_TO_SORT_ORDER: Record<KeyringAccountType, number> = {\n [EthAccountType.Eoa]: 0,\n [EthAccountType.Erc4337]: 1,\n [SolAccountType.DataAccount]: 2,\n [BtcAccountType.P2pkh]: 3,\n [BtcAccountType.P2sh]: 4,\n [BtcAccountType.P2wpkh]: 5,\n [BtcAccountType.P2tr]: 6,\n [TrxAccountType.Eoa]: 7,\n [AnyAccountType.Account]: MAX_SORT_ORDER,\n};\n\nexport type AccountTypeOrderKey = keyof typeof ACCOUNT_TYPE_TO_SORT_ORDER;\n\n/**\n * Tree metadata for account groups (required plain values extracted from persisted metadata).\n */\nexport type AccountTreeGroupMetadata = Required<\n ExtractFieldValues<AccountTreeGroupPersistedMetadata>\n>;\n\n/**\n * Type constraint for a {@link AccountGroupObject}. If one of its union-members\n * does not match this contraint, {@link AccountGroupObject} will resolve\n * to `never`.\n */\ntype IsAccountGroupObject<\n Type extends {\n type: AccountGroupType;\n id: AccountGroupId;\n accounts: AccountId[];\n metadata: AccountTreeGroupMetadata;\n },\n> = Type;\n\n/**\n * Multichain-account group object.\n */\nexport type AccountGroupMultichainAccountObject = {\n type: AccountGroupType.MultichainAccount;\n id: MultichainAccountGroupId;\n // Blockchain Accounts (at least 1 account per multichain-accounts):\n accounts: [AccountId, ...AccountId[]];\n metadata: AccountTreeGroupMetadata & {\n entropy: {\n groupIndex: number;\n };\n };\n};\n\n/**\n * Multichain-account group object.\n */\nexport type AccountGroupSingleAccountObject = {\n type: AccountGroupType.SingleAccount;\n id: AccountGroupId;\n // Blockchain Accounts (1 account per group):\n accounts: [AccountId];\n metadata: AccountTreeGroupMetadata;\n};\n\n/**\n * Account group object.\n */\nexport type AccountGroupObject = IsAccountGroupObject<\n AccountGroupMultichainAccountObject | AccountGroupSingleAccountObject\n>;\n\nexport type AccountGroupObjectOf<GroupType extends AccountGroupType> = Extract<\n | {\n type: AccountGroupType.MultichainAccount;\n object: AccountGroupMultichainAccountObject;\n }\n | {\n type: AccountGroupType.SingleAccount;\n object: AccountGroupSingleAccountObject;\n },\n { type: GroupType }\n>['object'];\n\n/**\n * Checks if a group name is unique within a specific wallet.\n *\n * @param wallet - The wallet to check within.\n * @param groupId - The account group ID to exclude from the check.\n * @param name - The name to validate for uniqueness.\n * @returns True if the name is unique within the wallet, false otherwise.\n */\nexport function isAccountGroupNameUniqueFromWallet(\n wallet: AccountWalletObject,\n groupId: AccountGroupId,\n name: string,\n): boolean {\n const trimmedName = name.trim();\n\n // Check for duplicates within this wallet\n for (const group of Object.values(wallet.groups)) {\n if (group.id !== groupId && group.metadata.name.trim() === trimmedName) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Checks if an account group name is unique within the same wallet.\n *\n * @param state - The account tree controller state.\n * @param groupId - The account group ID to exclude from the check.\n * @param name - The name to validate for uniqueness.\n * @returns True if the name is unique within the same wallet, false otherwise.\n * @throws Error if the group ID does not exist.\n */\nexport function isAccountGroupNameUnique(\n state: AccountTreeControllerState,\n groupId: AccountGroupId,\n name: string,\n): boolean {\n // Find the wallet that contains the group being validated\n for (const wallet of Object.values(state.accountTree.wallets)) {\n if (wallet.groups[groupId]) {\n // Use the wallet-specific function for consistency\n return isAccountGroupNameUniqueFromWallet(wallet, groupId, name);\n }\n }\n\n throw new Error(`Account group with ID \"${groupId}\" not found in tree`);\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entropy.cjs","sourceRoot":"","sources":["../../src/rules/entropy.ts"],"names":[],"mappings":";;;AAAA,uDAM+B;AAC/B,uDAAyD;AACzD,qEAA4D;AAI5D,
|
|
1
|
+
{"version":3,"file":"entropy.cjs","sourceRoot":"","sources":["../../src/rules/entropy.ts"],"names":[],"mappings":";;;AAAA,uDAM+B;AAC/B,uDAAyD;AACzD,qEAA4D;AAI5D,sCAA+D;AAG/D,MAAa,WACX,SAAQ,eAAQ;IADlB;;QAIW,eAAU,GAAG,+BAAiB,CAAC,OAAO,CAAC;QAEvC,cAAS,GAAG,8BAAgB,CAAC,iBAAiB,CAAC;IA4F1D,CAAC;IA1FC,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,CACH,OAAwB;QAIxB,IAAI,CAAC,IAAA,4BAAc,EAAC,OAAO,CAAC,EAAE,CAAC;YAC7B,OAAO,SAAS,CAAC;QACnB,CAAC;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,CAAC;YAC9B,OAAO,CAAC,IAAI,CACV,mCAAmC,aAAa,eAAe,OAAO,CAAC,EAAE,gCAAgC,CAC1G,CAAC;YACF,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,QAAQ,GAAG,IAAA,yCAA2B,EAAC,aAAa,CAAC,CAAC;QAC5D,MAAM,OAAO,GAAG,IAAA,wCAA0B,EACxC,QAAQ,EACR,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CACnC,CAAC;QAEF,OAAO;YACL,MAAM,EAAE;gBACN,IAAI,EAAE,IAAI,CAAC,UAAU;gBACrB,EAAE,EAAE,QAAQ;gBACZ,QAAQ,EAAE;oBACR,OAAO,EAAE;wBACP,EAAE,EAAE,aAAa;qBAClB;iBACF;aACF;YAED,KAAK,EAAE;gBACL,IAAI,EAAE,IAAI,CAAC,SAAS;gBACpB,EAAE,EAAE,OAAO;gBACX,QAAQ,EAAE;oBACR,OAAO,EAAE;wBACP,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU;qBAC/C;oBACD,MAAM,EAAE,KAAK;oBACb,MAAM,EAAE,KAAK;iBACd;aACF;SACF,CAAC;IACJ,CAAC;IAED,2BAA2B,CACzB,MAAwD;QAExD,kFAAkF;QAClF,qBAAqB;QACrB,MAAM,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,CACnD,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAC3B,CAAC;QAEF,OAAO,UAAU,kBAAkB,GAAG,CAAC,EAAE,CAAC,CAAC,oCAAoC;IACjF,CAAC;IAED,2BAA2B,CACzB,KAA+D;QAE/D,uGAAuG;QACvG,yGAAyG;QACzG,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YAChC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,+BAA+B,EAAE,EAAE,CAAC,CAAC;YAEzE,IAAI,OAAO,IAAI,IAAA,8BAAgB,EAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9C,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;YAC/B,CAAC;QACH,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,4BAA4B,CAC1B,OAAyD;QAEzD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AAlGD,kCAkGC","sourcesContent":["import {\n AccountGroupType,\n AccountWalletType,\n isBip44Account,\n toMultichainAccountGroupId,\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 { AccountGroupObjectOf } from '../group';\nimport { BaseRule, type Rule, type RuleResult } from '../rule';\nimport type { AccountWalletObjectOf } from '../wallet';\n\nexport class EntropyRule\n extends BaseRule\n implements Rule<AccountWalletType.Entropy, AccountGroupType.MultichainAccount>\n{\n readonly walletType = AccountWalletType.Entropy;\n\n readonly groupType = AccountGroupType.MultichainAccount;\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(\n account: InternalAccount,\n ):\n | RuleResult<AccountWalletType.Entropy, AccountGroupType.MultichainAccount>\n | 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(entropySource);\n const groupId = toMultichainAccountGroupId(\n walletId,\n account.options.entropy.groupIndex,\n );\n\n return {\n wallet: {\n type: this.walletType,\n id: walletId,\n metadata: {\n entropy: {\n id: entropySource,\n },\n },\n },\n\n group: {\n type: this.groupType,\n id: groupId,\n metadata: {\n entropy: {\n groupIndex: account.options.entropy.groupIndex,\n },\n pinned: false,\n hidden: false,\n },\n },\n };\n }\n\n getDefaultAccountWalletName(\n wallet: AccountWalletObjectOf<AccountWalletType.Entropy>,\n ): string {\n // NOTE: We have checked during the rule matching, so we can safely assume it will\n // well-defined here.\n const entropySourceIndex = this.getEntropySourceIndex(\n wallet.metadata.entropy.id,\n );\n\n return `Wallet ${entropySourceIndex + 1}`; // Use human indexing (starts at 1).\n }\n\n getComputedAccountGroupName(\n group: AccountGroupObjectOf<AccountGroupType.MultichainAccount>,\n ): string {\n // Only use EVM account names for multichain groups to avoid chain-specific names becoming group names.\n // Non-EVM account names should not be used as group names since groups represent multichain collections.\n for (const id of group.accounts) {\n const account = this.messenger.call('AccountsController:getAccount', id);\n\n if (account && isEvmAccountType(account.type)) {\n return account.metadata.name;\n }\n }\n\n return '';\n }\n\n getDefaultAccountGroupPrefix(\n _wallet: AccountWalletObjectOf<AccountWalletType.Entropy>,\n ): string {\n return 'Account';\n }\n}\n"]}
|
package/dist/rules/entropy.d.cts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { AccountGroupType, AccountWalletType } from "@metamask/account-api";
|
|
2
2
|
import type { InternalAccount } from "@metamask/keyring-internal-api";
|
|
3
3
|
import type { AccountGroupObjectOf } from "../group.cjs";
|
|
4
|
-
import { BaseRule } from "../rule.cjs";
|
|
5
|
-
import type { Rule, RuleResult } from "../rule.cjs";
|
|
4
|
+
import { BaseRule, type Rule, type RuleResult } from "../rule.cjs";
|
|
6
5
|
import type { AccountWalletObjectOf } from "../wallet.cjs";
|
|
7
6
|
export declare class EntropyRule extends BaseRule implements Rule<AccountWalletType.Entropy, AccountGroupType.MultichainAccount> {
|
|
8
7
|
readonly walletType = AccountWalletType.Entropy;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entropy.d.cts","sourceRoot":"","sources":["../../src/rules/entropy.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EAIlB,8BAA8B;AAG/B,OAAO,KAAK,EAAE,eAAe,EAAE,uCAAuC;AAEtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAiB;AACrD,OAAO,EAAE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"entropy.d.cts","sourceRoot":"","sources":["../../src/rules/entropy.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EAIlB,8BAA8B;AAG/B,OAAO,KAAK,EAAE,eAAe,EAAE,uCAAuC;AAEtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAiB;AACrD,OAAO,EAAE,QAAQ,EAAE,KAAK,IAAI,EAAE,KAAK,UAAU,EAAE,oBAAgB;AAC/D,OAAO,KAAK,EAAE,qBAAqB,EAAE,sBAAkB;AAEvD,qBAAa,WACX,SAAQ,QACR,YAAW,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,CAAC,iBAAiB,CAAC;IAE9E,QAAQ,CAAC,UAAU,6BAA6B;IAEhD,QAAQ,CAAC,SAAS,sCAAsC;IAExD,qBAAqB,CAAC,aAAa,EAAE,MAAM;IAQ3C,KAAK,CACH,OAAO,EAAE,eAAe,GAEtB,UAAU,CAAC,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,CAAC,iBAAiB,CAAC,GACzE,SAAS;IA6Cb,2BAA2B,CACzB,MAAM,EAAE,qBAAqB,CAAC,iBAAiB,CAAC,OAAO,CAAC,GACvD,MAAM;IAUT,2BAA2B,CACzB,KAAK,EAAE,oBAAoB,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,GAC9D,MAAM;IAcT,4BAA4B,CAC1B,OAAO,EAAE,qBAAqB,CAAC,iBAAiB,CAAC,OAAO,CAAC,GACxD,MAAM;CAGV"}
|
package/dist/rules/entropy.d.mts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { AccountGroupType, AccountWalletType } from "@metamask/account-api";
|
|
2
2
|
import type { InternalAccount } from "@metamask/keyring-internal-api";
|
|
3
3
|
import type { AccountGroupObjectOf } from "../group.mjs";
|
|
4
|
-
import { BaseRule } from "../rule.mjs";
|
|
5
|
-
import type { Rule, RuleResult } from "../rule.mjs";
|
|
4
|
+
import { BaseRule, type Rule, type RuleResult } from "../rule.mjs";
|
|
6
5
|
import type { AccountWalletObjectOf } from "../wallet.mjs";
|
|
7
6
|
export declare class EntropyRule extends BaseRule implements Rule<AccountWalletType.Entropy, AccountGroupType.MultichainAccount> {
|
|
8
7
|
readonly walletType = AccountWalletType.Entropy;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entropy.d.mts","sourceRoot":"","sources":["../../src/rules/entropy.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EAIlB,8BAA8B;AAG/B,OAAO,KAAK,EAAE,eAAe,EAAE,uCAAuC;AAEtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAiB;AACrD,OAAO,EAAE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"entropy.d.mts","sourceRoot":"","sources":["../../src/rules/entropy.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EAIlB,8BAA8B;AAG/B,OAAO,KAAK,EAAE,eAAe,EAAE,uCAAuC;AAEtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAiB;AACrD,OAAO,EAAE,QAAQ,EAAE,KAAK,IAAI,EAAE,KAAK,UAAU,EAAE,oBAAgB;AAC/D,OAAO,KAAK,EAAE,qBAAqB,EAAE,sBAAkB;AAEvD,qBAAa,WACX,SAAQ,QACR,YAAW,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,CAAC,iBAAiB,CAAC;IAE9E,QAAQ,CAAC,UAAU,6BAA6B;IAEhD,QAAQ,CAAC,SAAS,sCAAsC;IAExD,qBAAqB,CAAC,aAAa,EAAE,MAAM;IAQ3C,KAAK,CACH,OAAO,EAAE,eAAe,GAEtB,UAAU,CAAC,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,CAAC,iBAAiB,CAAC,GACzE,SAAS;IA6Cb,2BAA2B,CACzB,MAAM,EAAE,qBAAqB,CAAC,iBAAiB,CAAC,OAAO,CAAC,GACvD,MAAM;IAUT,2BAA2B,CACzB,KAAK,EAAE,oBAAoB,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,GAC9D,MAAM;IAcT,4BAA4B,CAC1B,OAAO,EAAE,qBAAqB,CAAC,iBAAiB,CAAC,OAAO,CAAC,GACxD,MAAM;CAGV"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entropy.mjs","sourceRoot":"","sources":["../../src/rules/entropy.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,0BAA0B,EAC1B,2BAA2B,EAC5B,8BAA8B;AAC/B,OAAO,EAAE,gBAAgB,EAAE,8BAA8B;AACzD,OAAO,EAAE,YAAY,EAAE,qCAAqC;AAI5D,OAAO,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"entropy.mjs","sourceRoot":"","sources":["../../src/rules/entropy.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AccountGroupType,\n AccountWalletType,\n isBip44Account,\n toMultichainAccountGroupId,\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 { AccountGroupObjectOf } from '../group';\nimport { BaseRule, type Rule, type RuleResult } from '../rule';\nimport type { AccountWalletObjectOf } from '../wallet';\n\nexport class EntropyRule\n extends BaseRule\n implements Rule<AccountWalletType.Entropy, AccountGroupType.MultichainAccount>\n{\n readonly walletType = AccountWalletType.Entropy;\n\n readonly groupType = AccountGroupType.MultichainAccount;\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(\n account: InternalAccount,\n ):\n | RuleResult<AccountWalletType.Entropy, AccountGroupType.MultichainAccount>\n | 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(entropySource);\n const groupId = toMultichainAccountGroupId(\n walletId,\n account.options.entropy.groupIndex,\n );\n\n return {\n wallet: {\n type: this.walletType,\n id: walletId,\n metadata: {\n entropy: {\n id: entropySource,\n },\n },\n },\n\n group: {\n type: this.groupType,\n id: groupId,\n metadata: {\n entropy: {\n groupIndex: account.options.entropy.groupIndex,\n },\n pinned: false,\n hidden: false,\n },\n },\n };\n }\n\n getDefaultAccountWalletName(\n wallet: AccountWalletObjectOf<AccountWalletType.Entropy>,\n ): string {\n // NOTE: We have checked during the rule matching, so we can safely assume it will\n // well-defined here.\n const entropySourceIndex = this.getEntropySourceIndex(\n wallet.metadata.entropy.id,\n );\n\n return `Wallet ${entropySourceIndex + 1}`; // Use human indexing (starts at 1).\n }\n\n getComputedAccountGroupName(\n group: AccountGroupObjectOf<AccountGroupType.MultichainAccount>,\n ): string {\n // Only use EVM account names for multichain groups to avoid chain-specific names becoming group names.\n // Non-EVM account names should not be used as group names since groups represent multichain collections.\n for (const id of group.accounts) {\n const account = this.messenger.call('AccountsController:getAccount', id);\n\n if (account && isEvmAccountType(account.type)) {\n return account.metadata.name;\n }\n }\n\n return '';\n }\n\n getDefaultAccountGroupPrefix(\n _wallet: AccountWalletObjectOf<AccountWalletType.Entropy>,\n ): string {\n return 'Account';\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyring.cjs","sourceRoot":"","sources":["../../src/rules/keyring.ts"],"names":[],"mappings":";;;AAAA,uDAAyD;AACzD,uDAA0D;AAC1D,uDAA4E;AAC5E,qEAA4D;AAI5D,
|
|
1
|
+
{"version":3,"file":"keyring.cjs","sourceRoot":"","sources":["../../src/rules/keyring.ts"],"names":[],"mappings":"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","sourcesContent":["import { AccountGroupType } from '@metamask/account-api';\nimport { AccountWalletType } from '@metamask/account-api';\nimport { toAccountGroupId, toAccountWalletId } from '@metamask/account-api';\nimport { KeyringTypes } from '@metamask/keyring-controller';\nimport type { InternalAccount } from '@metamask/keyring-internal-api';\n\nimport type { AccountGroupObjectOf } from '../group';\nimport { BaseRule, type Rule, type RuleResult } from '../rule';\nimport type { AccountWalletObjectOf } from '../wallet';\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\n/**\n * Get group name prefix from a keyring type.\n *\n * @param type - Keyring's type.\n * @returns Wallet name.\n */\nexport function getAccountGroupPrefixFromKeyringType(type: KeyringTypes) {\n switch (type) {\n case KeyringTypes.simple: {\n return 'Imported Account';\n }\n case KeyringTypes.trezor: {\n return 'Trezor Account';\n }\n case KeyringTypes.oneKey: {\n return 'OneKey Account';\n }\n case KeyringTypes.ledger: {\n return 'Ledger Account';\n }\n case KeyringTypes.lattice: {\n return 'Lattice Account';\n }\n case KeyringTypes.qr: {\n return 'QR Account';\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 'Account';\n }\n case KeyringTypes.snap: {\n return 'Snap Account';\n }\n // ------------------------------------------------------------------------\n default: {\n return 'Unknown Account';\n }\n }\n}\n\nexport class KeyringRule\n extends BaseRule\n implements Rule<AccountWalletType.Keyring, AccountGroupType.SingleAccount>\n{\n readonly walletType = AccountWalletType.Keyring;\n\n readonly groupType = AccountGroupType.SingleAccount;\n\n match(\n account: InternalAccount,\n // No `| undefined` return type for this rule, as it cannot fail.\n ): RuleResult<AccountWalletType.Keyring, AccountGroupType.SingleAccount> {\n // We assume that `type` is really a `KeyringTypes`.\n const keyringType = account.metadata.keyring.type as KeyringTypes;\n\n const walletId = toAccountWalletId(this.walletType, keyringType);\n const groupId = toAccountGroupId(walletId, account.address);\n\n return {\n wallet: {\n type: this.walletType,\n id: walletId,\n metadata: {\n keyring: {\n type: keyringType,\n },\n },\n },\n\n group: {\n type: this.groupType,\n id: groupId,\n metadata: {\n pinned: false,\n hidden: false,\n },\n },\n };\n }\n\n getDefaultAccountWalletName(\n wallet: AccountWalletObjectOf<AccountWalletType.Keyring>,\n ): string {\n return getAccountWalletNameFromKeyringType(wallet.metadata.keyring.type);\n }\n\n getComputedAccountGroupName(\n group: AccountGroupObjectOf<AccountGroupType.SingleAccount>,\n ): string {\n return super.getComputedAccountGroupName(group);\n }\n\n getDefaultAccountGroupPrefix(\n wallet: AccountWalletObjectOf<AccountWalletType.Keyring>,\n ): string {\n return getAccountGroupPrefixFromKeyringType(wallet.metadata.keyring.type);\n }\n}\n"]}
|
package/dist/rules/keyring.d.cts
CHANGED
|
@@ -3,8 +3,7 @@ import { AccountWalletType } from "@metamask/account-api";
|
|
|
3
3
|
import { KeyringTypes } from "@metamask/keyring-controller";
|
|
4
4
|
import type { InternalAccount } from "@metamask/keyring-internal-api";
|
|
5
5
|
import type { AccountGroupObjectOf } from "../group.cjs";
|
|
6
|
-
import { BaseRule } from "../rule.cjs";
|
|
7
|
-
import type { Rule, RuleResult } from "../rule.cjs";
|
|
6
|
+
import { BaseRule, type Rule, type RuleResult } from "../rule.cjs";
|
|
8
7
|
import type { AccountWalletObjectOf } from "../wallet.cjs";
|
|
9
8
|
/**
|
|
10
9
|
* Get wallet name from a keyring type.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyring.d.cts","sourceRoot":"","sources":["../../src/rules/keyring.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,8BAA8B;AACzD,OAAO,EAAE,iBAAiB,EAAE,8BAA8B;AAE1D,OAAO,EAAE,YAAY,EAAE,qCAAqC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,uCAAuC;AAEtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAiB;AACrD,OAAO,EAAE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"keyring.d.cts","sourceRoot":"","sources":["../../src/rules/keyring.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,8BAA8B;AACzD,OAAO,EAAE,iBAAiB,EAAE,8BAA8B;AAE1D,OAAO,EAAE,YAAY,EAAE,qCAAqC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,uCAAuC;AAEtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAiB;AACrD,OAAO,EAAE,QAAQ,EAAE,KAAK,IAAI,EAAE,KAAK,UAAU,EAAE,oBAAgB;AAC/D,OAAO,KAAK,EAAE,qBAAqB,EAAE,sBAAkB;AAEvD;;;;;GAKG;AACH,wBAAgB,mCAAmC,CAAC,IAAI,EAAE,YAAY,qHAiCrE;AAED;;;;;GAKG;AACH,wBAAgB,oCAAoC,CAAC,IAAI,EAAE,YAAY,mKAiCtE;AAED,qBAAa,WACX,SAAQ,QACR,YAAW,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,CAAC,aAAa,CAAC;IAE1E,QAAQ,CAAC,UAAU,6BAA6B;IAEhD,QAAQ,CAAC,SAAS,kCAAkC;IAEpD,KAAK,CACH,OAAO,EAAE,eAAe,GAEvB,UAAU,CAAC,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,CAAC,aAAa,CAAC;IA6BxE,2BAA2B,CACzB,MAAM,EAAE,qBAAqB,CAAC,iBAAiB,CAAC,OAAO,CAAC,GACvD,MAAM;IAIT,2BAA2B,CACzB,KAAK,EAAE,oBAAoB,CAAC,gBAAgB,CAAC,aAAa,CAAC,GAC1D,MAAM;IAIT,4BAA4B,CAC1B,MAAM,EAAE,qBAAqB,CAAC,iBAAiB,CAAC,OAAO,CAAC,GACvD,MAAM;CAGV"}
|
package/dist/rules/keyring.d.mts
CHANGED
|
@@ -3,8 +3,7 @@ import { AccountWalletType } from "@metamask/account-api";
|
|
|
3
3
|
import { KeyringTypes } from "@metamask/keyring-controller";
|
|
4
4
|
import type { InternalAccount } from "@metamask/keyring-internal-api";
|
|
5
5
|
import type { AccountGroupObjectOf } from "../group.mjs";
|
|
6
|
-
import { BaseRule } from "../rule.mjs";
|
|
7
|
-
import type { Rule, RuleResult } from "../rule.mjs";
|
|
6
|
+
import { BaseRule, type Rule, type RuleResult } from "../rule.mjs";
|
|
8
7
|
import type { AccountWalletObjectOf } from "../wallet.mjs";
|
|
9
8
|
/**
|
|
10
9
|
* Get wallet name from a keyring type.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyring.d.mts","sourceRoot":"","sources":["../../src/rules/keyring.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,8BAA8B;AACzD,OAAO,EAAE,iBAAiB,EAAE,8BAA8B;AAE1D,OAAO,EAAE,YAAY,EAAE,qCAAqC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,uCAAuC;AAEtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAiB;AACrD,OAAO,EAAE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"keyring.d.mts","sourceRoot":"","sources":["../../src/rules/keyring.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,8BAA8B;AACzD,OAAO,EAAE,iBAAiB,EAAE,8BAA8B;AAE1D,OAAO,EAAE,YAAY,EAAE,qCAAqC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,uCAAuC;AAEtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAiB;AACrD,OAAO,EAAE,QAAQ,EAAE,KAAK,IAAI,EAAE,KAAK,UAAU,EAAE,oBAAgB;AAC/D,OAAO,KAAK,EAAE,qBAAqB,EAAE,sBAAkB;AAEvD;;;;;GAKG;AACH,wBAAgB,mCAAmC,CAAC,IAAI,EAAE,YAAY,qHAiCrE;AAED;;;;;GAKG;AACH,wBAAgB,oCAAoC,CAAC,IAAI,EAAE,YAAY,mKAiCtE;AAED,qBAAa,WACX,SAAQ,QACR,YAAW,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,CAAC,aAAa,CAAC;IAE1E,QAAQ,CAAC,UAAU,6BAA6B;IAEhD,QAAQ,CAAC,SAAS,kCAAkC;IAEpD,KAAK,CACH,OAAO,EAAE,eAAe,GAEvB,UAAU,CAAC,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,CAAC,aAAa,CAAC;IA6BxE,2BAA2B,CACzB,MAAM,EAAE,qBAAqB,CAAC,iBAAiB,CAAC,OAAO,CAAC,GACvD,MAAM;IAIT,2BAA2B,CACzB,KAAK,EAAE,oBAAoB,CAAC,gBAAgB,CAAC,aAAa,CAAC,GAC1D,MAAM;IAIT,4BAA4B,CAC1B,MAAM,EAAE,qBAAqB,CAAC,iBAAiB,CAAC,OAAO,CAAC,GACvD,MAAM;CAGV"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyring.mjs","sourceRoot":"","sources":["../../src/rules/keyring.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,8BAA8B;AACzD,OAAO,EAAE,iBAAiB,EAAE,8BAA8B;AAC1D,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,8BAA8B;AAC5E,OAAO,EAAE,YAAY,EAAE,qCAAqC;AAI5D,OAAO,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"keyring.mjs","sourceRoot":"","sources":["../../src/rules/keyring.ts"],"names":[],"mappings":"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","sourcesContent":["import { AccountGroupType } from '@metamask/account-api';\nimport { AccountWalletType } from '@metamask/account-api';\nimport { toAccountGroupId, toAccountWalletId } from '@metamask/account-api';\nimport { KeyringTypes } from '@metamask/keyring-controller';\nimport type { InternalAccount } from '@metamask/keyring-internal-api';\n\nimport type { AccountGroupObjectOf } from '../group';\nimport { BaseRule, type Rule, type RuleResult } from '../rule';\nimport type { AccountWalletObjectOf } from '../wallet';\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\n/**\n * Get group name prefix from a keyring type.\n *\n * @param type - Keyring's type.\n * @returns Wallet name.\n */\nexport function getAccountGroupPrefixFromKeyringType(type: KeyringTypes) {\n switch (type) {\n case KeyringTypes.simple: {\n return 'Imported Account';\n }\n case KeyringTypes.trezor: {\n return 'Trezor Account';\n }\n case KeyringTypes.oneKey: {\n return 'OneKey Account';\n }\n case KeyringTypes.ledger: {\n return 'Ledger Account';\n }\n case KeyringTypes.lattice: {\n return 'Lattice Account';\n }\n case KeyringTypes.qr: {\n return 'QR Account';\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 'Account';\n }\n case KeyringTypes.snap: {\n return 'Snap Account';\n }\n // ------------------------------------------------------------------------\n default: {\n return 'Unknown Account';\n }\n }\n}\n\nexport class KeyringRule\n extends BaseRule\n implements Rule<AccountWalletType.Keyring, AccountGroupType.SingleAccount>\n{\n readonly walletType = AccountWalletType.Keyring;\n\n readonly groupType = AccountGroupType.SingleAccount;\n\n match(\n account: InternalAccount,\n // No `| undefined` return type for this rule, as it cannot fail.\n ): RuleResult<AccountWalletType.Keyring, AccountGroupType.SingleAccount> {\n // We assume that `type` is really a `KeyringTypes`.\n const keyringType = account.metadata.keyring.type as KeyringTypes;\n\n const walletId = toAccountWalletId(this.walletType, keyringType);\n const groupId = toAccountGroupId(walletId, account.address);\n\n return {\n wallet: {\n type: this.walletType,\n id: walletId,\n metadata: {\n keyring: {\n type: keyringType,\n },\n },\n },\n\n group: {\n type: this.groupType,\n id: groupId,\n metadata: {\n pinned: false,\n hidden: false,\n },\n },\n };\n }\n\n getDefaultAccountWalletName(\n wallet: AccountWalletObjectOf<AccountWalletType.Keyring>,\n ): string {\n return getAccountWalletNameFromKeyringType(wallet.metadata.keyring.type);\n }\n\n getComputedAccountGroupName(\n group: AccountGroupObjectOf<AccountGroupType.SingleAccount>,\n ): string {\n return super.getComputedAccountGroupName(group);\n }\n\n getDefaultAccountGroupPrefix(\n wallet: AccountWalletObjectOf<AccountWalletType.Keyring>,\n ): string {\n return getAccountGroupPrefixFromKeyringType(wallet.metadata.keyring.type);\n }\n}\n"]}
|
package/dist/rules/snap.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snap.cjs","sourceRoot":"","sources":["../../src/rules/snap.ts"],"names":[],"mappings":";;;AAAA,uDAA4E;AAC5E,uDAA4E;AAC5E,qEAA4D;AAG5D,uDAAwD;AAExD,2CAAiE;AACjE,
|
|
1
|
+
{"version":3,"file":"snap.cjs","sourceRoot":"","sources":["../../src/rules/snap.ts"],"names":[],"mappings":";;;AAAA,uDAA4E;AAC5E,uDAA4E;AAC5E,qEAA4D;AAG5D,uDAAwD;AAExD,2CAAiE;AACjE,sCAA+D;AAc/D;;;;;GAKG;AACH,SAAS,aAAa,CACpB,OAAwB;IAExB,OAAO,CACL,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAM,iCAAY,CAAC,IAAe;QAC/D,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS;QACnC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAC9B,CAAC;AACJ,CAAC;AAED,MAAa,QACX,SAAQ,eAAQ;IADlB;;QAIW,eAAU,GAAG,+BAAiB,CAAC,IAAI,CAAC;QAEpC,cAAS,GAAG,8BAAgB,CAAC,aAAa,CAAC;IAyDtD,CAAC;IAvDC,KAAK,CACH,OAAwB;QAIxB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;QAE7C,MAAM,QAAQ,GAAG,IAAA,+BAAiB,EAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAC5D,MAAM,OAAO,GAAG,IAAA,8BAAgB,EAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAE5D,OAAO;YACL,MAAM,EAAE;gBACN,IAAI,EAAE,IAAI,CAAC,UAAU;gBACrB,EAAE,EAAE,QAAQ;gBACZ,QAAQ,EAAE;oBACR,IAAI,EAAE;wBACJ,EAAE,EAAE,MAAM;qBACX;iBACF;aACF;YAED,KAAK,EAAE;gBACL,IAAI,EAAE,IAAI,CAAC,SAAS;gBACpB,EAAE,EAAE,OAAO;gBACX,QAAQ,EAAE;oBACR,MAAM,EAAE,KAAK;oBACb,MAAM,EAAE,KAAK;iBACd;aACF;SACF,CAAC;IACJ,CAAC;IAED,2BAA2B,CACzB,MAAqD;QAErD,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,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,4BAA4B,CAC1B,OAAsD;QAEtD,OAAO,IAAA,8CAAoC,EAAC,iCAAY,CAAC,IAAI,CAAC,CAAC;IACjE,CAAC;CACF;AA/DD,4BA+DC","sourcesContent":["import { AccountGroupType, AccountWalletType } from '@metamask/account-api';\nimport { toAccountWalletId, toAccountGroupId } 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';\n\nimport { getAccountGroupPrefixFromKeyringType } from './keyring';\nimport { BaseRule, type Rule, type RuleResult } from '../rule';\nimport type { AccountWalletObjectOf } from '../wallet';\n\n/**\n * Snap account type.\n */\ntype SnapAccount<Account extends InternalAccount> = Account & {\n metadata: Account['metadata'] & {\n snap: {\n id: SnapId;\n };\n };\n};\n\n/**\n * Check if an account is a Snap account.\n *\n * @param account - The account to check.\n * @returns True if the account is a Snap account, false otherwise.\n */\nfunction 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\nexport class SnapRule\n extends BaseRule\n implements Rule<AccountWalletType.Snap, AccountGroupType.SingleAccount>\n{\n readonly walletType = AccountWalletType.Snap;\n\n readonly groupType = AccountGroupType.SingleAccount;\n\n match(\n account: InternalAccount,\n ):\n | RuleResult<AccountWalletType.Snap, AccountGroupType.SingleAccount>\n | undefined {\n if (!isSnapAccount(account)) {\n return undefined;\n }\n\n const { id: snapId } = account.metadata.snap;\n\n const walletId = toAccountWalletId(this.walletType, snapId);\n const groupId = toAccountGroupId(walletId, account.address);\n\n return {\n wallet: {\n type: this.walletType,\n id: walletId,\n metadata: {\n snap: {\n id: snapId,\n },\n },\n },\n\n group: {\n type: this.groupType,\n id: groupId,\n metadata: {\n pinned: false,\n hidden: false,\n },\n },\n };\n }\n\n getDefaultAccountWalletName(\n wallet: AccountWalletObjectOf<AccountWalletType.Snap>,\n ): string {\n const snapId = wallet.metadata.snap.id;\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 getDefaultAccountGroupPrefix(\n _wallet: AccountWalletObjectOf<AccountWalletType.Snap>,\n ): string {\n return getAccountGroupPrefixFromKeyringType(KeyringTypes.snap);\n }\n}\n"]}
|
package/dist/rules/snap.d.cts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { AccountGroupType, AccountWalletType } from "@metamask/account-api";
|
|
2
2
|
import type { InternalAccount } from "@metamask/keyring-internal-api";
|
|
3
|
-
import { BaseRule } from "../rule.cjs";
|
|
4
|
-
import type { Rule, RuleResult } from "../rule.cjs";
|
|
3
|
+
import { BaseRule, type Rule, type RuleResult } from "../rule.cjs";
|
|
5
4
|
import type { AccountWalletObjectOf } from "../wallet.cjs";
|
|
6
5
|
export declare class SnapRule extends BaseRule implements Rule<AccountWalletType.Snap, AccountGroupType.SingleAccount> {
|
|
7
6
|
readonly walletType = AccountWalletType.Snap;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snap.d.cts","sourceRoot":"","sources":["../../src/rules/snap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,8BAA8B;AAG5E,OAAO,KAAK,EAAE,eAAe,EAAE,uCAAuC;AAKtE,OAAO,EAAE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"snap.d.cts","sourceRoot":"","sources":["../../src/rules/snap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,8BAA8B;AAG5E,OAAO,KAAK,EAAE,eAAe,EAAE,uCAAuC;AAKtE,OAAO,EAAE,QAAQ,EAAE,KAAK,IAAI,EAAE,KAAK,UAAU,EAAE,oBAAgB;AAC/D,OAAO,KAAK,EAAE,qBAAqB,EAAE,sBAAkB;AA6BvD,qBAAa,QACX,SAAQ,QACR,YAAW,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,gBAAgB,CAAC,aAAa,CAAC;IAEvE,QAAQ,CAAC,UAAU,0BAA0B;IAE7C,QAAQ,CAAC,SAAS,kCAAkC;IAEpD,KAAK,CACH,OAAO,EAAE,eAAe,GAEtB,UAAU,CAAC,iBAAiB,CAAC,IAAI,EAAE,gBAAgB,CAAC,aAAa,CAAC,GAClE,SAAS;IAgCb,2BAA2B,CACzB,MAAM,EAAE,qBAAqB,CAAC,iBAAiB,CAAC,IAAI,CAAC,GACpD,MAAM;IAYT,4BAA4B,CAC1B,OAAO,EAAE,qBAAqB,CAAC,iBAAiB,CAAC,IAAI,CAAC,GACrD,MAAM;CAGV"}
|