From e38749c7ebaca2cce2ce2976db688d725b005224 Mon Sep 17 00:00:00 2001 From: Michele Esposito Date: Tue, 26 Aug 2025 14:31:04 +0200 Subject: [PATCH 01/10] refactor: migrate `AppMetadataController` to `@metamask/messenger` --- packages/app-metadata-controller/package.json | 3 ++- .../src/AppMetadataController.test.ts | 16 ++++++++++------ .../src/AppMetadataController.ts | 10 ++++------ yarn.lock | 1 + 4 files changed, 17 insertions(+), 13 deletions(-) diff --git a/packages/app-metadata-controller/package.json b/packages/app-metadata-controller/package.json index a1ab3d41312..6124821ac84 100644 --- a/packages/app-metadata-controller/package.json +++ b/packages/app-metadata-controller/package.json @@ -47,7 +47,8 @@ "test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch" }, "dependencies": { - "@metamask/base-controller": "^8.2.0" + "@metamask/base-controller": "^8.2.0", + "@metamask/messenger": "^0.1.0" }, "devDependencies": { "@metamask/auto-changelog": "^3.4.4", diff --git a/packages/app-metadata-controller/src/AppMetadataController.test.ts b/packages/app-metadata-controller/src/AppMetadataController.test.ts index 5bef4d66462..1a05b323966 100644 --- a/packages/app-metadata-controller/src/AppMetadataController.test.ts +++ b/packages/app-metadata-controller/src/AppMetadataController.test.ts @@ -1,4 +1,4 @@ -import { Messenger } from '@metamask/base-controller'; +import { Messenger } from '@metamask/messenger'; import { AppMetadataController, @@ -148,12 +148,16 @@ function withController( ): ReturnValue { const [options = {}, fn] = args.length === 2 ? args : [{}, args[0]]; - const messenger = new Messenger(); + const rootMessenger = new Messenger<'Root'>({ namespace: 'Root' }); - const appMetadataControllerMessenger = messenger.getRestricted({ - name: 'AppMetadataController', - allowedActions: [], - allowedEvents: [], + const appMetadataControllerMessenger = new Messenger< + 'AppMetadataController', + never, + never, + typeof rootMessenger + >({ + namespace: 'AppMetadataController', + parent: rootMessenger, }); return fn({ diff --git a/packages/app-metadata-controller/src/AppMetadataController.ts b/packages/app-metadata-controller/src/AppMetadataController.ts index 4f7d2170cd0..e456467fc68 100644 --- a/packages/app-metadata-controller/src/AppMetadataController.ts +++ b/packages/app-metadata-controller/src/AppMetadataController.ts @@ -1,10 +1,10 @@ -import { BaseController } from '@metamask/base-controller'; import type { StateMetadata, ControllerGetStateAction, ControllerStateChangeEvent, - RestrictedMessenger, } from '@metamask/base-controller'; +import { BaseController } from '@metamask/base-controller/next'; +import type { Messenger } from '@metamask/messenger'; // Unique name for the controller const controllerName = 'AppMetadataController'; @@ -88,12 +88,10 @@ type AllowedEvents = never; * @returns A restricted messenger type that defines the allowed actions and events * for the AppMetadataController */ -export type AppMetadataControllerMessenger = RestrictedMessenger< +export type AppMetadataControllerMessenger = Messenger< typeof controllerName, AppMetadataControllerActions | AllowedActions, - AppMetadataControllerEvents | AllowedEvents, - AllowedActions['type'], - AllowedEvents['type'] + AppMetadataControllerEvents | AllowedEvents >; /** diff --git a/yarn.lock b/yarn.lock index a431876c636..1ce17ff6ec7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2530,6 +2530,7 @@ __metadata: dependencies: "@metamask/auto-changelog": "npm:^3.4.4" "@metamask/base-controller": "npm:^8.2.0" + "@metamask/messenger": "npm:^0.1.0" "@types/jest": "npm:^27.4.1" deepmerge: "npm:^4.2.2" jest: "npm:^27.5.1" From ff3989cca92b594190bc0abb27c7b7d22d94adb0 Mon Sep 17 00:00:00 2001 From: Michele Esposito Date: Tue, 26 Aug 2025 14:45:14 +0200 Subject: [PATCH 02/10] update changelog --- packages/app-metadata-controller/CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/app-metadata-controller/CHANGELOG.md b/packages/app-metadata-controller/CHANGELOG.md index f3d87951e95..3b29921b764 100644 --- a/packages/app-metadata-controller/CHANGELOG.md +++ b/packages/app-metadata-controller/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Use new `Messenger` from `@metamask/messenger` ([#6385](https://github.com/MetaMask/core/pull/6385)) + - Previously, `AppMetadataController` accepted a `RestrictedMessenger` instance from `@metamask/base-controller`. - Bump `@metamask/base-controller` from `^8.0.0` to `^8.2.0` ([#5722](https://github.com/MetaMask/core/pull/5722), [#6284](https://github.com/MetaMask/core/pull/6284), [#6355](https://github.com/MetaMask/core/pull/6355)) ## [1.0.0] From 0f6f36052b9b42656778b61d1df3a7d00900a54e Mon Sep 17 00:00:00 2001 From: Michele Esposito Date: Tue, 26 Aug 2025 15:07:49 +0200 Subject: [PATCH 03/10] add `AppMetadataControllerActions` and `AppMetadataControllerEvents` to test messenger --- .../src/AppMetadataController.test.ts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/app-metadata-controller/src/AppMetadataController.test.ts b/packages/app-metadata-controller/src/AppMetadataController.test.ts index 1a05b323966..0d7d8148943 100644 --- a/packages/app-metadata-controller/src/AppMetadataController.test.ts +++ b/packages/app-metadata-controller/src/AppMetadataController.test.ts @@ -4,6 +4,8 @@ import { AppMetadataController, getDefaultAppMetadataControllerState, type AppMetadataControllerOptions, + AppMetadataControllerActions, + AppMetadataControllerEvents, } from './AppMetadataController'; describe('AppMetadataController', () => { @@ -148,12 +150,16 @@ function withController( ): ReturnValue { const [options = {}, fn] = args.length === 2 ? args : [{}, args[0]]; - const rootMessenger = new Messenger<'Root'>({ namespace: 'Root' }); + const rootMessenger = new Messenger< + 'Root', + AppMetadataControllerActions, + AppMetadataControllerEvents + >({ namespace: 'Root' }); const appMetadataControllerMessenger = new Messenger< 'AppMetadataController', - never, - never, + AppMetadataControllerActions, + AppMetadataControllerEvents, typeof rootMessenger >({ namespace: 'AppMetadataController', From 78225500027816137bc42ab798e76e6603410b60 Mon Sep 17 00:00:00 2001 From: Michele Esposito <34438276+mikesposito@users.noreply.github.com> Date: Tue, 26 Aug 2025 15:18:55 +0200 Subject: [PATCH 04/10] mark import as types --- .../app-metadata-controller/src/AppMetadataController.test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/app-metadata-controller/src/AppMetadataController.test.ts b/packages/app-metadata-controller/src/AppMetadataController.test.ts index 0d7d8148943..e906eb7c9e3 100644 --- a/packages/app-metadata-controller/src/AppMetadataController.test.ts +++ b/packages/app-metadata-controller/src/AppMetadataController.test.ts @@ -4,8 +4,8 @@ import { AppMetadataController, getDefaultAppMetadataControllerState, type AppMetadataControllerOptions, - AppMetadataControllerActions, - AppMetadataControllerEvents, + type AppMetadataControllerActions, + type AppMetadataControllerEvents, } from './AppMetadataController'; describe('AppMetadataController', () => { From fd010ee97e34db7dd84aa4d6df411eaba4ef458a Mon Sep 17 00:00:00 2001 From: Michele Esposito Date: Mon, 22 Sep 2025 20:21:37 +0200 Subject: [PATCH 05/10] update messenger to 0.3.0 --- packages/app-metadata-controller/package.json | 2 +- yarn.lock | 9 +-------- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/packages/app-metadata-controller/package.json b/packages/app-metadata-controller/package.json index 768003a6343..145f1027c54 100644 --- a/packages/app-metadata-controller/package.json +++ b/packages/app-metadata-controller/package.json @@ -48,7 +48,7 @@ }, "dependencies": { "@metamask/base-controller": "^8.4.0", - "@metamask/messenger": "^0.1.0" + "@metamask/messenger": "^0.3.0" }, "devDependencies": { "@metamask/auto-changelog": "^3.4.4", diff --git a/yarn.lock b/yarn.lock index 39c8516bf53..5d4452430f4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2543,7 +2543,7 @@ __metadata: dependencies: "@metamask/auto-changelog": "npm:^3.4.4" "@metamask/base-controller": "npm:^8.4.0" - "@metamask/messenger": "npm:^0.1.0" + "@metamask/messenger": "npm:^0.3.0" "@types/jest": "npm:^27.4.1" deepmerge: "npm:^4.2.2" jest: "npm:^27.5.1" @@ -3810,13 +3810,6 @@ __metadata: languageName: unknown linkType: soft -"@metamask/messenger@npm:^0.1.0": - version: 0.1.0 - resolution: "@metamask/messenger@npm:0.1.0" - checksum: 10/5d6105865255e72571df143c648ebfb42b04ead24cd6bade758f0340eafba3790d9ff0818bd06fbda17799e3253ac05df51d9e13ebfd0c710e68fd1c0d1007a9 - languageName: node - linkType: hard - "@metamask/messenger@npm:^0.3.0, @metamask/messenger@workspace:packages/messenger": version: 0.0.0-use.local resolution: "@metamask/messenger@workspace:packages/messenger" From 5a79b84988885a3260ad78cf089ee531bb85963b Mon Sep 17 00:00:00 2001 From: Michele Esposito Date: Mon, 22 Sep 2025 20:23:15 +0200 Subject: [PATCH 06/10] rename `anonymous` to `includeInDebugSnapshot` --- .../src/AppMetadataController.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/app-metadata-controller/src/AppMetadataController.ts b/packages/app-metadata-controller/src/AppMetadataController.ts index b7be4ba2fb3..ffd346aea48 100644 --- a/packages/app-metadata-controller/src/AppMetadataController.ts +++ b/packages/app-metadata-controller/src/AppMetadataController.ts @@ -2,7 +2,7 @@ import type { StateMetadata, ControllerGetStateAction, ControllerStateChangeEvent, -} from '@metamask/base-controller'; +} from '@metamask/base-controller/next'; import { BaseController } from '@metamask/base-controller/next'; import type { Messenger } from '@metamask/messenger'; @@ -103,25 +103,25 @@ const controllerMetadata = { currentAppVersion: { includeInStateLogs: true, persist: true, - anonymous: true, + includeInDebugSnapshot: true, usedInUi: false, }, previousAppVersion: { includeInStateLogs: true, persist: true, - anonymous: true, + includeInDebugSnapshot: true, usedInUi: false, }, previousMigrationVersion: { includeInStateLogs: true, persist: true, - anonymous: true, + includeInDebugSnapshot: true, usedInUi: false, }, currentMigrationVersion: { includeInStateLogs: true, persist: true, - anonymous: true, + includeInDebugSnapshot: true, usedInUi: false, }, } satisfies StateMetadata; From 5b0c7c8fabe9575f74a25e2b3f673cfc31f28374 Mon Sep 17 00:00:00 2001 From: Michele Esposito Date: Mon, 22 Sep 2025 20:24:38 +0200 Subject: [PATCH 07/10] update tsconfig and README --- README.md | 1 + packages/app-metadata-controller/tsconfig.build.json | 5 ++++- packages/app-metadata-controller/tsconfig.json | 5 ++++- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 4eab983a1dc..d5810999c32 100644 --- a/README.md +++ b/README.md @@ -152,6 +152,7 @@ linkStyle default opacity:0.5 address_book_controller --> controller_utils; announcement_controller --> base_controller; app_metadata_controller --> base_controller; + app_metadata_controller --> messenger; approval_controller --> base_controller; assets_controllers --> base_controller; assets_controllers --> controller_utils; diff --git a/packages/app-metadata-controller/tsconfig.build.json b/packages/app-metadata-controller/tsconfig.build.json index e5fd7422b9a..931c4d6594b 100644 --- a/packages/app-metadata-controller/tsconfig.build.json +++ b/packages/app-metadata-controller/tsconfig.build.json @@ -5,6 +5,9 @@ "outDir": "./dist", "rootDir": "./src" }, - "references": [{ "path": "../base-controller/tsconfig.build.json" }], + "references": [ + { "path": "../base-controller/tsconfig.build.json" }, + { "path": "../messenger/tsconfig.build.json" } + ], "include": ["../../types", "./src"] } diff --git a/packages/app-metadata-controller/tsconfig.json b/packages/app-metadata-controller/tsconfig.json index 34354c4b09d..8af2380112d 100644 --- a/packages/app-metadata-controller/tsconfig.json +++ b/packages/app-metadata-controller/tsconfig.json @@ -3,6 +3,9 @@ "compilerOptions": { "baseUrl": "./" }, - "references": [{ "path": "../base-controller" }], + "references": [ + { "path": "../base-controller" }, + { "path": "../messenger" } + ], "include": ["../../types", "./src"] } From ededeb6b935fb84c78424b6204c9ea94cb1cfc8a Mon Sep 17 00:00:00 2001 From: Michele Esposito Date: Mon, 22 Sep 2025 20:28:41 +0200 Subject: [PATCH 08/10] use `MockAnyNamespace` --- .../src/AppMetadataController.test.ts | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/app-metadata-controller/src/AppMetadataController.test.ts b/packages/app-metadata-controller/src/AppMetadataController.test.ts index b19b43dbcb3..25722e514fd 100644 --- a/packages/app-metadata-controller/src/AppMetadataController.test.ts +++ b/packages/app-metadata-controller/src/AppMetadataController.test.ts @@ -1,5 +1,9 @@ import { deriveStateFromMetadata } from '@metamask/base-controller/next'; -import { Messenger } from '@metamask/messenger'; +import { + Messenger, + MOCK_ANY_NAMESPACE, + type MockAnyNamespace, +} from '@metamask/messenger'; import { AppMetadataController, @@ -223,10 +227,10 @@ function withController( const [options = {}, fn] = args.length === 2 ? args : [{}, args[0]]; const rootMessenger = new Messenger< - 'Root', + MockAnyNamespace, AppMetadataControllerActions, AppMetadataControllerEvents - >({ namespace: 'Root' }); + >({ namespace: MOCK_ANY_NAMESPACE }); const appMetadataControllerMessenger = new Messenger< 'AppMetadataController', From e40037f66e2a63661a964345a66b9065e492fb60 Mon Sep 17 00:00:00 2001 From: Michele Esposito Date: Tue, 23 Sep 2025 12:05:01 +0200 Subject: [PATCH 09/10] run prettier --- packages/app-metadata-controller/tsconfig.json | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/packages/app-metadata-controller/tsconfig.json b/packages/app-metadata-controller/tsconfig.json index 8af2380112d..68c3ddfc2cd 100644 --- a/packages/app-metadata-controller/tsconfig.json +++ b/packages/app-metadata-controller/tsconfig.json @@ -3,9 +3,6 @@ "compilerOptions": { "baseUrl": "./" }, - "references": [ - { "path": "../base-controller" }, - { "path": "../messenger" } - ], + "references": [{ "path": "../base-controller" }, { "path": "../messenger" }], "include": ["../../types", "./src"] } From a1a938c862df31c79fbd2c9a252e73f13e4fd040 Mon Sep 17 00:00:00 2001 From: Michele Esposito Date: Tue, 23 Sep 2025 12:15:22 +0200 Subject: [PATCH 10/10] update README --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index d5810999c32..1c4bd5efa12 100644 --- a/README.md +++ b/README.md @@ -293,6 +293,7 @@ linkStyle default opacity:0.5 signature_controller --> controller_utils; signature_controller --> accounts_controller; signature_controller --> approval_controller; + signature_controller --> gator_permissions_controller; signature_controller --> keyring_controller; signature_controller --> logging_controller; signature_controller --> network_controller;