From 7417eb5b597286bb9e54562c55c2482c282844a2 Mon Sep 17 00:00:00 2001 From: Michele Esposito Date: Thu, 4 Sep 2025 12:51:08 +0200 Subject: [PATCH 1/8] migrate `EnsController` messenger --- packages/ens-controller/package.json | 1 + .../ens-controller/src/EnsController.test.ts | 126 ++++++++++-------- packages/ens-controller/src/EnsController.ts | 30 +++-- yarn.lock | 1 + 4 files changed, 92 insertions(+), 66 deletions(-) diff --git a/packages/ens-controller/package.json b/packages/ens-controller/package.json index 5ce60419ec5..afc6992dd6e 100644 --- a/packages/ens-controller/package.json +++ b/packages/ens-controller/package.json @@ -50,6 +50,7 @@ "@ethersproject/providers": "^5.7.0", "@metamask/base-controller": "^8.2.0", "@metamask/controller-utils": "^11.12.0", + "@metamask/messenger": "^0.1.0", "@metamask/utils": "^11.4.2", "punycode": "^2.1.1" }, diff --git a/packages/ens-controller/src/EnsController.test.ts b/packages/ens-controller/src/EnsController.test.ts index 9643074a27d..9c1102632b4 100644 --- a/packages/ens-controller/src/EnsController.test.ts +++ b/packages/ens-controller/src/EnsController.test.ts @@ -1,20 +1,22 @@ import * as providersModule from '@ethersproject/providers'; -import { Messenger } from '@metamask/base-controller'; import { toChecksumHexAddress, toHex, InfuraNetworkType, } from '@metamask/controller-utils'; +import { + Messenger, + MOCK_ANY_NAMESPACE, + type MessengerActions, + type MessengerEvents, + type MockAnyNamespace, +} from '@metamask/messenger'; import { type NetworkController, type NetworkState, getDefaultNetworkControllerState, } from '@metamask/network-controller'; -import type { - ExtractAvailableAction, - ExtractAvailableEvent, -} from '../../base-controller/tests/helpers'; import { buildMockGetNetworkClientById, buildCustomNetworkClientConfiguration, @@ -23,7 +25,6 @@ import { EnsController, DEFAULT_ENS_NETWORK_MAP } from './EnsController'; import type { EnsControllerState, EnsControllerMessenger, - AllowedActions, } from './EnsController'; const defaultState: EnsControllerState = { @@ -54,9 +55,14 @@ jest.mock('@ethersproject/providers', () => { }; }); +type AllEnsControllerActions = MessengerActions; + +type AllEnsControllerEvents = MessengerEvents; + type RootMessenger = Messenger< - ExtractAvailableAction, - ExtractAvailableEvent + MockAnyNamespace, + AllEnsControllerActions, + AllEnsControllerEvents >; const ZERO_X_ERROR_ADDRESS = '0x'; @@ -76,27 +82,24 @@ const name = 'EnsController'; /** * Constructs the root messenger. * - * @returns A restricted messenger. + * @returns A root messenger. */ function getRootMessenger(): RootMessenger { - return new Messenger< - ExtractAvailableAction | AllowedActions, - ExtractAvailableEvent | never - >(); + return new Messenger({ namespace: MOCK_ANY_NAMESPACE }); } /** - * Constructs the messenger restricted to EnsController actions and events. + * Constructs the messenger for EnsController actions and events. * - * @param rootMessenger - The root messenger to base the restricted messenger + * @param rootMessenger - The root messenger to base the controller messenger * off of. * @param getNetworkClientByIdMock - Optional mock version of `getNetworkClientById`. - * @returns A restricted messenger. + * @returns A controller messenger for EnsController. */ -function getRestrictedMessenger( +function getEnsControllerMessenger( rootMessenger: RootMessenger, getNetworkClientByIdMock?: NetworkController['getNetworkClientById'], -) { +): EnsControllerMessenger { const mockNetworkState = jest.fn().mockReturnValue({ ...getDefaultNetworkControllerState(), selectedNetworkClientId: InfuraNetworkType.mainnet, @@ -115,14 +118,23 @@ function getRestrictedMessenger( getNetworkClientByIdMock, ); - return rootMessenger.getRestricted<'EnsController', AllowedActions['type']>({ - name, - allowedActions: [ + const ensControllerMessenger = new Messenger< + 'EnsController', + AllEnsControllerActions, + AllEnsControllerEvents, + RootMessenger + >({ + namespace: name, + parent: rootMessenger, + }); + rootMessenger.delegate({ + messenger: ensControllerMessenger, + actions: [ 'NetworkController:getNetworkClientById', 'NetworkController:getState', ], - allowedEvents: [], }); + return ensControllerMessenger; } /** @@ -137,7 +149,7 @@ function getProvider() { describe('EnsController', () => { it('should set default state', () => { const rootMessenger = getRootMessenger(); - const ensControllerMessenger = getRestrictedMessenger(rootMessenger); + const ensControllerMessenger = getEnsControllerMessenger(rootMessenger); const controller = new EnsController({ messenger: ensControllerMessenger, }); @@ -146,7 +158,7 @@ describe('EnsController', () => { it('should return registry address for `.`', () => { const rootMessenger = getRootMessenger(); - const ensControllerMessenger = getRestrictedMessenger(rootMessenger); + const ensControllerMessenger = getEnsControllerMessenger(rootMessenger); const controller = new EnsController({ messenger: ensControllerMessenger, }); @@ -159,7 +171,7 @@ describe('EnsController', () => { it('should not return registry address for unrecognized chains', () => { const rootMessenger = getRootMessenger(); - const ensControllerMessenger = getRestrictedMessenger(rootMessenger); + const ensControllerMessenger = getEnsControllerMessenger(rootMessenger); const controller = new EnsController({ messenger: ensControllerMessenger, }); @@ -168,7 +180,7 @@ describe('EnsController', () => { it('should add a new ENS entry and return true', () => { const rootMessenger = getRootMessenger(); - const ensControllerMessenger = getRestrictedMessenger(rootMessenger); + const ensControllerMessenger = getEnsControllerMessenger(rootMessenger); const controller = new EnsController({ messenger: ensControllerMessenger, }); @@ -182,7 +194,7 @@ describe('EnsController', () => { it('should clear ensResolutionsByAddress state propery when resetState is called', async () => { const rootMessenger = getRootMessenger(); - const ensControllerMessenger = getRestrictedMessenger(rootMessenger); + const ensControllerMessenger = getEnsControllerMessenger(rootMessenger); const controller = new EnsController({ messenger: ensControllerMessenger, state: { @@ -203,7 +215,7 @@ describe('EnsController', () => { it('should clear ensResolutionsByAddress state propery on networkDidChange', async () => { const rootMessenger = getRootMessenger(); - const ensControllerMessenger = getRestrictedMessenger(rootMessenger); + const ensControllerMessenger = getEnsControllerMessenger(rootMessenger); const controller = new EnsController({ messenger: ensControllerMessenger, state: { @@ -224,7 +236,7 @@ describe('EnsController', () => { it('should add a new ENS entry with null address and return true', () => { const rootMessenger = getRootMessenger(); - const ensControllerMessenger = getRestrictedMessenger(rootMessenger); + const ensControllerMessenger = getEnsControllerMessenger(rootMessenger); const controller = new EnsController({ messenger: ensControllerMessenger, }); @@ -238,7 +250,7 @@ describe('EnsController', () => { it('should update an ENS entry and return true', () => { const rootMessenger = getRootMessenger(); - const ensControllerMessenger = getRestrictedMessenger(rootMessenger); + const ensControllerMessenger = getEnsControllerMessenger(rootMessenger); const controller = new EnsController({ messenger: ensControllerMessenger, }); @@ -253,7 +265,7 @@ describe('EnsController', () => { it('should update an ENS entry with null address and return true', () => { const rootMessenger = getRootMessenger(); - const ensControllerMessenger = getRestrictedMessenger(rootMessenger); + const ensControllerMessenger = getEnsControllerMessenger(rootMessenger); const controller = new EnsController({ messenger: ensControllerMessenger, }); @@ -268,7 +280,7 @@ describe('EnsController', () => { it('should not update an ENS entry if the address is the same (valid address) and return false', () => { const rootMessenger = getRootMessenger(); - const ensControllerMessenger = getRestrictedMessenger(rootMessenger); + const ensControllerMessenger = getEnsControllerMessenger(rootMessenger); const controller = new EnsController({ messenger: ensControllerMessenger, }); @@ -283,7 +295,7 @@ describe('EnsController', () => { it('should not update an ENS entry if the address is the same (null) and return false', () => { const rootMessenger = getRootMessenger(); - const ensControllerMessenger = getRestrictedMessenger(rootMessenger); + const ensControllerMessenger = getEnsControllerMessenger(rootMessenger); const controller = new EnsController({ messenger: ensControllerMessenger, }); @@ -298,7 +310,7 @@ describe('EnsController', () => { it('should add multiple ENS entries and update without side effects', () => { const rootMessenger = getRootMessenger(); - const ensControllerMessenger = getRestrictedMessenger(rootMessenger); + const ensControllerMessenger = getEnsControllerMessenger(rootMessenger); const controller = new EnsController({ messenger: ensControllerMessenger, }); @@ -325,7 +337,7 @@ describe('EnsController', () => { it('should get ENS default registry by chainId when asking for `.`', () => { const rootMessenger = getRootMessenger(); - const ensControllerMessenger = getRestrictedMessenger(rootMessenger); + const ensControllerMessenger = getEnsControllerMessenger(rootMessenger); const controller = new EnsController({ messenger: ensControllerMessenger, }); @@ -339,7 +351,7 @@ describe('EnsController', () => { it('should get ENS entry by chainId and ensName', () => { const rootMessenger = getRootMessenger(); - const ensControllerMessenger = getRestrictedMessenger(rootMessenger); + const ensControllerMessenger = getEnsControllerMessenger(rootMessenger); const controller = new EnsController({ messenger: ensControllerMessenger, }); @@ -353,7 +365,7 @@ describe('EnsController', () => { it('should return null when getting nonexistent name', () => { const rootMessenger = getRootMessenger(); - const ensControllerMessenger = getRestrictedMessenger(rootMessenger); + const ensControllerMessenger = getEnsControllerMessenger(rootMessenger); const controller = new EnsController({ messenger: ensControllerMessenger, }); @@ -363,7 +375,7 @@ describe('EnsController', () => { it('should return null when getting nonexistent chainId', () => { const rootMessenger = getRootMessenger(); - const ensControllerMessenger = getRestrictedMessenger(rootMessenger); + const ensControllerMessenger = getEnsControllerMessenger(rootMessenger); const controller = new EnsController({ messenger: ensControllerMessenger, }); @@ -373,7 +385,7 @@ describe('EnsController', () => { it('should throw on attempt to set invalid ENS entry: chainId', () => { const rootMessenger = getRootMessenger(); - const ensControllerMessenger = getRestrictedMessenger(rootMessenger); + const ensControllerMessenger = getEnsControllerMessenger(rootMessenger); const controller = new EnsController({ messenger: ensControllerMessenger, }); @@ -388,7 +400,7 @@ describe('EnsController', () => { it('should throw on attempt to set invalid ENS entry: ENS name', () => { const rootMessenger = getRootMessenger(); - const ensControllerMessenger = getRestrictedMessenger(rootMessenger); + const ensControllerMessenger = getEnsControllerMessenger(rootMessenger); const controller = new EnsController({ messenger: ensControllerMessenger, }); @@ -400,7 +412,7 @@ describe('EnsController', () => { it('should throw on attempt to set invalid ENS entry: address', () => { const rootMessenger = getRootMessenger(); - const ensControllerMessenger = getRestrictedMessenger(rootMessenger); + const ensControllerMessenger = getEnsControllerMessenger(rootMessenger); const controller = new EnsController({ messenger: ensControllerMessenger, }); @@ -414,7 +426,7 @@ describe('EnsController', () => { it('should remove an ENS entry and return true', () => { const rootMessenger = getRootMessenger(); - const ensControllerMessenger = getRestrictedMessenger(rootMessenger); + const ensControllerMessenger = getEnsControllerMessenger(rootMessenger); const controller = new EnsController({ messenger: ensControllerMessenger, }); @@ -425,7 +437,7 @@ describe('EnsController', () => { it('should remove chain entries completely when all entries are removed', () => { const rootMessenger = getRootMessenger(); - const ensControllerMessenger = getRestrictedMessenger(rootMessenger); + const ensControllerMessenger = getEnsControllerMessenger(rootMessenger); const controller = new EnsController({ messenger: ensControllerMessenger, }); @@ -440,7 +452,7 @@ describe('EnsController', () => { it('should return false if an ENS entry was NOT deleted due to unsafe input', () => { const rootMessenger = getRootMessenger(); - const ensControllerMessenger = getRestrictedMessenger(rootMessenger); + const ensControllerMessenger = getEnsControllerMessenger(rootMessenger); const controller = new EnsController({ messenger: ensControllerMessenger, }); @@ -451,7 +463,7 @@ describe('EnsController', () => { it('should return false if an ENS entry was NOT deleted', () => { const rootMessenger = getRootMessenger(); - const ensControllerMessenger = getRestrictedMessenger(rootMessenger); + const ensControllerMessenger = getEnsControllerMessenger(rootMessenger); const controller = new EnsController({ messenger: ensControllerMessenger, }); @@ -467,7 +479,7 @@ describe('EnsController', () => { it('should add multiple ENS entries and remove without side effects', () => { const rootMessenger = getRootMessenger(); - const ensControllerMessenger = getRestrictedMessenger(rootMessenger); + const ensControllerMessenger = getEnsControllerMessenger(rootMessenger); const controller = new EnsController({ messenger: ensControllerMessenger, }); @@ -489,7 +501,7 @@ describe('EnsController', () => { it('should clear all ENS entries', () => { const rootMessenger = getRootMessenger(); - const ensControllerMessenger = getRestrictedMessenger(rootMessenger); + const ensControllerMessenger = getEnsControllerMessenger(rootMessenger); const controller = new EnsController({ messenger: ensControllerMessenger, }); @@ -506,7 +518,7 @@ describe('EnsController', () => { describe('reverseResolveName', () => { it('should return undefined when eth provider is not defined', async () => { const rootMessenger = getRootMessenger(); - const ensControllerMessenger = getRestrictedMessenger(rootMessenger); + const ensControllerMessenger = getEnsControllerMessenger(rootMessenger); const ens = new EnsController({ messenger: ensControllerMessenger, }); @@ -515,7 +527,7 @@ describe('EnsController', () => { it('should return undefined when network is loading', async function () { const rootMessenger = getRootMessenger(); - const ensControllerMessenger = getRestrictedMessenger(rootMessenger); + const ensControllerMessenger = getEnsControllerMessenger(rootMessenger); const ens = new EnsController({ messenger: ensControllerMessenger, onNetworkDidChange: (listener) => { @@ -535,7 +547,7 @@ describe('EnsController', () => { chainId: '0x9999999', }), }); - const ensControllerMessenger = getRestrictedMessenger( + const ensControllerMessenger = getEnsControllerMessenger( rootMessenger, getNetworkClientById, ); @@ -553,7 +565,7 @@ describe('EnsController', () => { it('should only resolve an ENS name once', async () => { const rootMessenger = getRootMessenger(); - const ensControllerMessenger = getRestrictedMessenger(rootMessenger); + const ensControllerMessenger = getEnsControllerMessenger(rootMessenger); const ethProvider = new providersModule.Web3Provider(getProvider()); jest.spyOn(ethProvider, 'resolveName').mockResolvedValue(address1); jest @@ -577,7 +589,7 @@ describe('EnsController', () => { it('should fail if lookupAddress through an error', async () => { const rootMessenger = getRootMessenger(); - const ensControllerMessenger = getRestrictedMessenger(rootMessenger); + const ensControllerMessenger = getEnsControllerMessenger(rootMessenger); const ethProvider = new providersModule.Web3Provider(getProvider()); jest.spyOn(ethProvider, 'lookupAddress').mockRejectedValue('error'); jest.spyOn(providersModule, 'Web3Provider').mockReturnValue(ethProvider); @@ -596,7 +608,7 @@ describe('EnsController', () => { it('should fail if lookupAddress returns a null value', async () => { const rootMessenger = getRootMessenger(); - const ensControllerMessenger = getRestrictedMessenger(rootMessenger); + const ensControllerMessenger = getEnsControllerMessenger(rootMessenger); const ethProvider = new providersModule.Web3Provider(getProvider()); jest.spyOn(ethProvider, 'lookupAddress').mockResolvedValue(null); jest.spyOn(providersModule, 'Web3Provider').mockReturnValue(ethProvider); @@ -615,7 +627,7 @@ describe('EnsController', () => { it('should fail if resolveName through an error', async () => { const rootMessenger = getRootMessenger(); - const ensControllerMessenger = getRestrictedMessenger(rootMessenger); + const ensControllerMessenger = getEnsControllerMessenger(rootMessenger); const ethProvider = new providersModule.Web3Provider(getProvider()); jest .spyOn(ethProvider, 'lookupAddress') @@ -637,7 +649,7 @@ describe('EnsController', () => { it('should fail if resolveName returns a null value', async () => { const rootMessenger = getRootMessenger(); - const ensControllerMessenger = getRestrictedMessenger(rootMessenger); + const ensControllerMessenger = getEnsControllerMessenger(rootMessenger); const ethProvider = new providersModule.Web3Provider(getProvider()); jest.spyOn(ethProvider, 'resolveName').mockResolvedValue(null); jest @@ -659,7 +671,7 @@ describe('EnsController', () => { it('should fail if registred address is zero x error address', async () => { const rootMessenger = getRootMessenger(); - const ensControllerMessenger = getRestrictedMessenger(rootMessenger); + const ensControllerMessenger = getEnsControllerMessenger(rootMessenger); const ethProvider = new providersModule.Web3Provider(getProvider()); jest .spyOn(ethProvider, 'resolveName') @@ -683,7 +695,7 @@ describe('EnsController', () => { it('should fail if the name is registered to a different address than the reverse resolved', async () => { const rootMessenger = getRootMessenger(); - const ensControllerMessenger = getRestrictedMessenger(rootMessenger); + const ensControllerMessenger = getEnsControllerMessenger(rootMessenger); const ethProvider = new providersModule.Web3Provider(getProvider()); jest.spyOn(ethProvider, 'resolveName').mockResolvedValue(address2); diff --git a/packages/ens-controller/src/EnsController.ts b/packages/ens-controller/src/EnsController.ts index 1dba71cb6ae..5690bb08a55 100644 --- a/packages/ens-controller/src/EnsController.ts +++ b/packages/ens-controller/src/EnsController.ts @@ -1,6 +1,9 @@ import { Web3Provider } from '@ethersproject/providers'; -import type { RestrictedMessenger } from '@metamask/base-controller'; -import { BaseController } from '@metamask/base-controller'; +import { + BaseController, + type ControllerGetStateAction, + type ControllerStateChangeEvent, +} from '@metamask/base-controller/next'; import type { ChainId } from '@metamask/controller-utils'; import { normalizeEnsName, @@ -11,6 +14,7 @@ import { convertHexToDecimal, toHex, } from '@metamask/controller-utils'; +import type { Messenger } from '@metamask/messenger'; import type { NetworkControllerGetNetworkClientByIdAction, NetworkControllerGetStateAction, @@ -69,16 +73,24 @@ export type EnsControllerState = { ensResolutionsByAddress: { [key: string]: string }; }; +export type EnsControllerActions = ControllerGetStateAction< + typeof name, + EnsControllerState +>; + +export type EnsControllerEvents = ControllerStateChangeEvent< + typeof name, + EnsControllerState +>; + export type AllowedActions = | NetworkControllerGetNetworkClientByIdAction | NetworkControllerGetStateAction; -export type EnsControllerMessenger = RestrictedMessenger< +export type EnsControllerMessenger = Messenger< typeof name, - AllowedActions, - never, - AllowedActions['type'], - never + EnsControllerActions | AllowedActions, + EnsControllerEvents >; const metadata = { @@ -278,7 +290,7 @@ export class EnsController extends BaseController< } #setDefaultEthProvider(registriesByChainId?: Record) { - const { selectedNetworkClientId } = this.messagingSystem.call( + const { selectedNetworkClientId } = this.messenger.call( 'NetworkController:getState', ); this.#setEthProvider(selectedNetworkClientId, registriesByChainId); @@ -291,7 +303,7 @@ export class EnsController extends BaseController< const { configuration: { chainId: currentChainId }, provider, - } = this.messagingSystem.call( + } = this.messenger.call( 'NetworkController:getNetworkClientById', selectedNetworkClientId, ); diff --git a/yarn.lock b/yarn.lock index 6ba685274fa..a124074cdbe 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3103,6 +3103,7 @@ __metadata: "@metamask/auto-changelog": "npm:^3.4.4" "@metamask/base-controller": "npm:^8.2.0" "@metamask/controller-utils": "npm:^11.12.0" + "@metamask/messenger": "npm:^0.1.0" "@metamask/network-controller": "npm:^24.1.0" "@metamask/utils": "npm:^11.4.2" "@types/jest": "npm:^27.4.1" From 6a944a21482c7bcf9e88d4f94bcdd282eb9ca180 Mon Sep 17 00:00:00 2001 From: Michele Esposito Date: Thu, 4 Sep 2025 12:52:50 +0200 Subject: [PATCH 2/8] update changelog --- packages/ens-controller/CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/ens-controller/CHANGELOG.md b/packages/ens-controller/CHANGELOG.md index ed612d7bed9..49db20572f3 100644 --- a/packages/ens-controller/CHANGELOG.md +++ b/packages/ens-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` ([#6459](https://github.com/MetaMask/core/pull/6460)) + - Previously, `EnsController` accepted a `RestrictedMessenger` instance from `@metamask/base-controller`. - Bump `@metamask/base-controller` from `^8.0.1` to `^8.2.0` ([#6284](https://github.com/MetaMask/core/pull/6284), [#6355](https://github.com/MetaMask/core/pull/6355)) - Bump `@metamask/controller-utils` from `^11.11.0` to `^11.12.0` ([#6303](https://github.com/MetaMask/core/pull/6303)) From fd4148a618e182d54729c6a00f3acec0695ea380 Mon Sep 17 00:00:00 2001 From: Michele Esposito Date: Tue, 23 Sep 2025 15:40:56 +0200 Subject: [PATCH 3/8] update tsconfig files and readme --- README.md | 2 ++ packages/ens-controller/tsconfig.build.json | 3 ++- packages/ens-controller/tsconfig.json | 3 ++- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 4eab983a1dc..25ade47e4f7 100644 --- a/README.md +++ b/README.md @@ -208,6 +208,7 @@ linkStyle default opacity:0.5 eip1193_permission_middleware --> permission_controller; ens_controller --> base_controller; ens_controller --> controller_utils; + ens_controller --> messenger; ens_controller --> network_controller; error_reporting_service --> base_controller; eth_json_rpc_provider --> json_rpc_engine; @@ -292,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; diff --git a/packages/ens-controller/tsconfig.build.json b/packages/ens-controller/tsconfig.build.json index ac0df4920c6..c55f67af5af 100644 --- a/packages/ens-controller/tsconfig.build.json +++ b/packages/ens-controller/tsconfig.build.json @@ -8,7 +8,8 @@ "references": [ { "path": "../base-controller/tsconfig.build.json" }, { "path": "../controller-utils/tsconfig.build.json" }, - { "path": "../network-controller/tsconfig.build.json" } + { "path": "../network-controller/tsconfig.build.json" }, + { "path": "../messenger/tsconfig.build.json" } ], "include": ["../../types", "./src"] } diff --git a/packages/ens-controller/tsconfig.json b/packages/ens-controller/tsconfig.json index 4bbb0be81b1..f62c7c2e078 100644 --- a/packages/ens-controller/tsconfig.json +++ b/packages/ens-controller/tsconfig.json @@ -6,7 +6,8 @@ "references": [ { "path": "../base-controller" }, { "path": "../controller-utils" }, - { "path": "../network-controller" } + { "path": "../network-controller" }, + { "path": "../messenger" }, ], "include": ["../../types", "./src"] } From 954867d18a26bda6d76301fbec077d50b42c954c Mon Sep 17 00:00:00 2001 From: Michele Esposito Date: Tue, 23 Sep 2025 15:42:20 +0200 Subject: [PATCH 4/8] rename `anonymous` to `includeInDebugSnapshot` --- packages/ens-controller/src/EnsController.test.ts | 2 +- packages/ens-controller/src/EnsController.ts | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/ens-controller/src/EnsController.test.ts b/packages/ens-controller/src/EnsController.test.ts index 01e55925463..52bd47d6875 100644 --- a/packages/ens-controller/src/EnsController.test.ts +++ b/packages/ens-controller/src/EnsController.test.ts @@ -730,7 +730,7 @@ describe('EnsController', () => { deriveStateFromMetadata( controller.state, controller.metadata, - 'anonymous', + 'includeInDebugSnapshot', ), ).toMatchInlineSnapshot(`Object {}`); }); diff --git a/packages/ens-controller/src/EnsController.ts b/packages/ens-controller/src/EnsController.ts index 8bffe59be21..0f8f6aa79b5 100644 --- a/packages/ens-controller/src/EnsController.ts +++ b/packages/ens-controller/src/EnsController.ts @@ -1,6 +1,7 @@ import { Web3Provider } from '@ethersproject/providers'; import { BaseController, + StateMetadata, type ControllerGetStateAction, type ControllerStateChangeEvent, } from '@metamask/base-controller/next'; @@ -93,17 +94,17 @@ export type EnsControllerMessenger = Messenger< EnsControllerEvents >; -const metadata = { +const metadata: StateMetadata = { ensEntries: { includeInStateLogs: true, persist: true, - anonymous: false, + includeInDebugSnapshot: false, usedInUi: true, }, ensResolutionsByAddress: { includeInStateLogs: true, persist: true, - anonymous: false, + includeInDebugSnapshot: false, usedInUi: true, }, }; From b9b5db6c1fc3c11bb3d1ced1aef3cd363a46fb31 Mon Sep 17 00:00:00 2001 From: Michele Esposito Date: Thu, 23 Oct 2025 17:01:16 +0200 Subject: [PATCH 5/8] fix lint --- eslint-warning-thresholds.json | 2 +- packages/ens-controller/src/EnsController.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/eslint-warning-thresholds.json b/eslint-warning-thresholds.json index a16cd0d14f3..ee30b9a332f 100644 --- a/eslint-warning-thresholds.json +++ b/eslint-warning-thresholds.json @@ -137,7 +137,7 @@ "@typescript-eslint/no-misused-promises": 1 }, "packages/ens-controller/src/EnsController.test.ts": { - "import-x/order": 2 + "import-x/order": 1 }, "packages/ens-controller/src/EnsController.ts": { "jsdoc/check-tag-names": 6 diff --git a/packages/ens-controller/src/EnsController.ts b/packages/ens-controller/src/EnsController.ts index 0f8f6aa79b5..f7659ba3343 100644 --- a/packages/ens-controller/src/EnsController.ts +++ b/packages/ens-controller/src/EnsController.ts @@ -1,7 +1,7 @@ import { Web3Provider } from '@ethersproject/providers'; import { BaseController, - StateMetadata, + type StateMetadata, type ControllerGetStateAction, type ControllerStateChangeEvent, } from '@metamask/base-controller/next'; From 03d8a95ea0f0da26d2e8856d0663a527924d1118 Mon Sep 17 00:00:00 2001 From: Michele Esposito Date: Thu, 23 Oct 2025 17:09:42 +0200 Subject: [PATCH 6/8] run prettier --- packages/ens-controller/tsconfig.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/ens-controller/tsconfig.json b/packages/ens-controller/tsconfig.json index f62c7c2e078..c6a3a4c830a 100644 --- a/packages/ens-controller/tsconfig.json +++ b/packages/ens-controller/tsconfig.json @@ -7,7 +7,7 @@ { "path": "../base-controller" }, { "path": "../controller-utils" }, { "path": "../network-controller" }, - { "path": "../messenger" }, + { "path": "../messenger" } ], "include": ["../../types", "./src"] } From b46b67c90a09ef433599cdb1b9d8482f390d12a0 Mon Sep 17 00:00:00 2001 From: Mark Stacey Date: Fri, 24 Oct 2025 16:12:16 -0230 Subject: [PATCH 7/8] Fix changelog typo --- packages/ens-controller/CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/ens-controller/CHANGELOG.md b/packages/ens-controller/CHANGELOG.md index 1ddb8e0630c..8a8be3f6fc3 100644 --- a/packages/ens-controller/CHANGELOG.md +++ b/packages/ens-controller/CHANGELOG.md @@ -9,9 +9,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed -- **BREAKING:** Use new `Messenger` from `@metamask/messenger` ([#6459](https://github.com/MetaMask/core/pull/6460)) +- **BREAKING:** Use new `Messenger` from `@metamask/messenger` ([#6460](https://github.com/MetaMask/core/pull/6460)) - Previously, `EnsController` accepted a `RestrictedMessenger` instance from `@metamask/base-controller`. -- **BREAKING:** Metadata property `anonymous` renamed to `includeInDebugSnapshot` ([#6459](https://github.com/MetaMask/core/pull/6460)) +- **BREAKING:** Metadata property `anonymous` renamed to `includeInDebugSnapshot` ([#6460](https://github.com/MetaMask/core/pull/6460)) ## [17.1.1] From e37bf9a930b837b3ca850e3d5499418d1c3760e4 Mon Sep 17 00:00:00 2001 From: Mark Stacey Date: Fri, 24 Oct 2025 16:28:34 -0230 Subject: [PATCH 8/8] Add new exports to changelog --- packages/ens-controller/CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/ens-controller/CHANGELOG.md b/packages/ens-controller/CHANGELOG.md index 8a8be3f6fc3..e36011718c1 100644 --- a/packages/ens-controller/CHANGELOG.md +++ b/packages/ens-controller/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Added + +- Export types `EnsControllerActions` and `EnsControllerEvents` ([#6460](https://github.com/MetaMask/core/pull/6460)) + ### Changed - **BREAKING:** Use new `Messenger` from `@metamask/messenger` ([#6460](https://github.com/MetaMask/core/pull/6460))