Skip to content

Commit b5aa379

Browse files
authored
feat: New base-controller API (#6926)
## Explanation The `@metamask/base-controller` package has been updated to use the new API that had previously been exposed under the `next` export. Major changes include: - Remove `Messenger` and `RestrictedMessenger` - Replaced by the `@metamask/messenger` library - Update `BaseController` to require `@metamask/messenger` instance - Rename `anonymous` metadata property to `includeInDebugLogs` - Make `includeInStateLogs` and `usedInUi` metadata properties required - Remove `getPersistentState` and `getAnonymizedState` - Remove `isBaseController` - Rename `ListenerV2` to `StateChangeListener` - Rename `messagingSystem` protected instance variable to `messenger` - Remove `next` export ## References Relates to #5626 ## Checklist - [x] I've updated the test suite for new or updated code as appropriate - [x] I've updated documentation (JSDoc, Markdown, etc.) for new or updated code as appropriate - [x] I've communicated my changes to consumers by [updating changelogs for packages I've changed](https://github.com/MetaMask/core/tree/main/docs/contributing.md#updating-changelogs), highlighting breaking changes as necessary - [x] I've prepared draft pull requests for clients and consumer packages to resolve any breaking changes <!-- CURSOR_SUMMARY --> --- > [!NOTE] > Migrate all packages to the new `@metamask/base-controller` API using `@metamask/messenger`, remove the `/next` export and legacy messenger, and update metadata types and configs accordingly. > > - **base-controller (BREAKING)**: > - Replace internal `Messenger`/`RestrictedMessenger` with `@metamask/messenger`; `BaseController` now requires a `Messenger` instance. > - Remove `/next` export and legacy files (`src/next/*`, `next.js`, `next.d.ts`). > - Rename metadata `anonymous` -> `includeInDebugSnapshot`; require `includeInStateLogs` and `usedInUi`. > - Rename `ListenerV2` -> `StateChangeListener`; rename `messagingSystem` -> `messenger`. > - Remove `getPersistentState`, `getAnonymizedState`, and `isBaseController`. > - Update types and implementation to new messenger integration and events. > - Update `CHANGELOG.md` with breaking changes. > - **Repo-wide refactor**: > - Change imports from `@metamask/base-controller/next` to `@metamask/base-controller` across controllers/tests (accounts, assets, network, permissions, transactions, etc.). > - Update tests to use `@metamask/messenger` and new metadata keys. > - **Config/build**: > - Remove Jest `moduleNameMapper` for `/next`; adjust TypeScript `paths` and add `skipLibCheck` in `tsconfig.packages.build.json`. > - Update `eslint-warning-thresholds.json` accordingly. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 61b5206. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY -->
1 parent 93ab3b4 commit b5aa379

File tree

141 files changed

+482
-5621
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

141 files changed

+482
-5621
lines changed

eslint-warning-thresholds.json

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -93,9 +93,6 @@
9393
"jsdoc/tag-lines": 2
9494
},
9595
"packages/base-controller/src/BaseController.test.ts": {
96-
"import-x/namespace": 15
97-
},
98-
"packages/base-controller/src/next/BaseController.test.ts": {
9996
"import-x/namespace": 13
10097
},
10198
"packages/build-utils/src/transforms/remove-fenced-code.test.ts": {

jest.config.packages.js

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,9 +80,6 @@ module.exports = {
8080
// Here we ensure that Jest resolves `@metamask/*` imports to the uncompiled source code for packages that live in this repo.
8181
// NOTE: This must be synchronized with the `paths` option in `tsconfig.packages.json`.
8282
moduleNameMapper: {
83-
'^@metamask/base-controller/next': [
84-
'<rootDir>/../base-controller/src/next',
85-
],
8683
'^@metamask/(.+)$': [
8784
'<rootDir>/../$1/src',
8885
// Some @metamask/* packages we are referencing aren't in this monorepo,

packages/account-tree-controller/src/AccountTreeController.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import {
99
type AccountGroupId,
1010
} from '@metamask/account-api';
1111
import type { AccountId } from '@metamask/accounts-controller';
12-
import { deriveStateFromMetadata } from '@metamask/base-controller/next';
12+
import { deriveStateFromMetadata } from '@metamask/base-controller';
1313
import {
1414
BtcAccountType,
1515
EthAccountType,

packages/account-tree-controller/src/AccountTreeController.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ import type {
88
} from '@metamask/account-api';
99
import type { MultichainAccountWalletStatus } from '@metamask/account-api';
1010
import { type AccountId } from '@metamask/accounts-controller';
11-
import type { StateMetadata } from '@metamask/base-controller/next';
12-
import { BaseController } from '@metamask/base-controller/next';
11+
import type { StateMetadata } from '@metamask/base-controller';
12+
import { BaseController } from '@metamask/base-controller';
1313
import type { TraceCallback } from '@metamask/controller-utils';
1414
import { isEvmAccountType } from '@metamask/keyring-api';
1515
import type { InternalAccount } from '@metamask/keyring-internal-api';

packages/accounts-controller/src/AccountsController.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { deriveStateFromMetadata } from '@metamask/base-controller/next';
1+
import { deriveStateFromMetadata } from '@metamask/base-controller';
22
import { InfuraNetworkType } from '@metamask/controller-utils';
33
import type {
44
AccountAssetListUpdatedEventPayload,

packages/accounts-controller/src/AccountsController.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import {
22
type ControllerGetStateAction,
33
type ControllerStateChangeEvent,
44
BaseController,
5-
} from '@metamask/base-controller/next';
5+
} from '@metamask/base-controller';
66
import {
77
type SnapKeyringAccountAssetListUpdatedEvent,
88
type SnapKeyringAccountBalancesUpdatedEvent,

packages/address-book-controller/src/AddressBookController.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { deriveStateFromMetadata } from '@metamask/base-controller/next';
1+
import { deriveStateFromMetadata } from '@metamask/base-controller';
22
import { toHex } from '@metamask/controller-utils';
33
import {
44
Messenger,

packages/address-book-controller/src/AddressBookController.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import type {
22
ControllerGetStateAction,
33
ControllerStateChangeEvent,
4-
} from '@metamask/base-controller/next';
5-
import { BaseController } from '@metamask/base-controller/next';
4+
} from '@metamask/base-controller';
5+
import { BaseController } from '@metamask/base-controller';
66
import {
77
normalizeEnsName,
88
isValidHexAddress,

packages/announcement-controller/src/AnnouncementController.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { deriveStateFromMetadata } from '@metamask/base-controller/next';
1+
import { deriveStateFromMetadata } from '@metamask/base-controller';
22
import {
33
Messenger,
44
MOCK_ANY_NAMESPACE,

packages/announcement-controller/src/AnnouncementController.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ import type {
22
ControllerGetStateAction,
33
ControllerStateChangeEvent,
44
StateMetadata,
5-
} from '@metamask/base-controller/next';
6-
import { BaseController } from '@metamask/base-controller/next';
5+
} from '@metamask/base-controller';
6+
import { BaseController } from '@metamask/base-controller';
77
import type { Messenger } from '@metamask/messenger';
88

99
type ViewedAnnouncement = {

0 commit comments

Comments
 (0)