Skip to content
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

### Changed

- **BREAKING:** Migrate `PPOMController` to new `Messenger` from `@metamask/messenger` ([#249](https://github.com/MetaMask/ppom-validator/pull/249))
- **BREAKING:** Metadata property `anonymous` renamed to `includeInDebugSnapshot` ([#249](https://github.com/MetaMask/ppom-validator/pull/249))
- **BREAKING:** Bump `@metamask/network-controller` peer dependency from `^24.0.O` to `^25.0.0` ([#249](https://github.com/MetaMask/ppom-validator/pull/249))
- **BREAKING:** Bump `@metamask/error-reporting-service` peer dependency from `^2.0.0` to `^3.0.0` ([#249](https://github.com/MetaMask/ppom-validator/pull/249))
- Bump `@metamask/base-controller` from `^8.3.0` to `^9.0.0`([#249](https://github.com/MetaMask/ppom-validator/pull/249))
- Set `module` and `moduleResolution` option to `Node16` ([#251](https://github.com/MetaMask/ppom-validator/pull/251))

## [0.38.0]

### Added
Expand Down
11 changes: 6 additions & 5 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,9 @@
"test:watch": "jest --watch"
},
"dependencies": {
"@metamask/base-controller": "^8.3.0",
"@metamask/base-controller": "^9.0.0",
"@metamask/controller-utils": "^11.3.0",
"@metamask/messenger": "^0.3.0",
"@metamask/utils": "^9.2.1",
"await-semaphore": "^0.1.3",
"crypto-js": "^4.2.0",
Expand All @@ -44,12 +45,12 @@
"@lavamoat/allow-scripts": "^2.3.1",
"@lavamoat/preinstall-always-fail": "^1.0.0",
"@metamask/auto-changelog": "^3.1.0",
"@metamask/error-reporting-service": "^2.0.0",
"@metamask/error-reporting-service": "^3.0.0",
"@metamask/eslint-config": "^12.2.0",
"@metamask/eslint-config-jest": "^12.0.0",
"@metamask/eslint-config-nodejs": "^12.1.0",
"@metamask/eslint-config-typescript": "^12.1.0",
"@metamask/network-controller": "^24.1.0",
"@metamask/network-controller": "^25.0.0",
"@types/crypto-js": "^4.2.1",
"@types/elliptic": "^6.4.14",
"@types/jest": "^28.1.6",
Expand All @@ -76,8 +77,8 @@
"typescript": "~5.5.4"
},
"peerDependencies": {
"@metamask/error-reporting-service": "^2.0.0",
"@metamask/network-controller": "^24.0.0"
"@metamask/error-reporting-service": "^3.0.0",
"@metamask/network-controller": "^25.0.0"
},
"packageManager": "yarn@3.2.1",
"engines": {
Expand Down
2 changes: 1 addition & 1 deletion src/ppom-controller.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -633,7 +633,7 @@ describe('PPOMController', () => {
deriveStateFromMetadata(
controller.state,
controller.metadata,
'anonymous',
'includeInDebugSnapshot',
),
).toMatchInlineSnapshot(`Object {}`);
});
Expand Down
21 changes: 10 additions & 11 deletions src/ppom-controller.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import type {
ControllerGetStateAction,
ControllerStateChangeEvent,
RestrictedMessenger,
StateMetadata,
} from '@metamask/base-controller';
import { BaseController } from '@metamask/base-controller';
import { safelyExecute, timeoutFetch } from '@metamask/controller-utils';
import type { Messenger } from '@metamask/messenger';
import type {
NetworkControllerGetNetworkClientByIdAction,
NetworkControllerNetworkDidChangeEvent,
Expand Down Expand Up @@ -111,17 +112,17 @@ export type PPOMState = {
storageMetadata: FileMetadataList;
};

const stateMetaData = {
const stateMetaData: StateMetadata<PPOMState> = {
versionInfo: {
includeInStateLogs: true,
persist: true,
anonymous: false,
includeInDebugSnapshot: false,
usedInUi: false,
},
storageMetadata: {
includeInStateLogs: false,
persist: true,
anonymous: false,
includeInDebugSnapshot: false,
usedInUi: false,
},
};
Expand Down Expand Up @@ -158,12 +159,10 @@ export type AllowedEvents = NetworkControllerNetworkDidChangeEvent;

export type AllowedActions = NetworkControllerGetNetworkClientByIdAction;

export type PPOMControllerMessenger = RestrictedMessenger<
export type PPOMControllerMessenger = Messenger<
typeof controllerName,
PPOMControllerActions | AllowedActions,
PPOMControllerEvents | AllowedEvents,
AllowedActions['type'],
AllowedEvents['type']
PPOMControllerEvents | AllowedEvents
>;

// eslint-disable-next-line @typescript-eslint/naming-convention
Expand Down Expand Up @@ -405,7 +404,7 @@ export class PPOMController extends BaseController<
* 2. reset PPOM
*/
#onNetworkChange(networkControllerState: NetworkState): void {
const selectedNetworkClient = this.messagingSystem.call(
const selectedNetworkClient = this.messenger.call(
'NetworkController:getNetworkClientById',
networkControllerState.selectedNetworkClientId,
);
Expand Down Expand Up @@ -444,7 +443,7 @@ export class PPOMController extends BaseController<
* Constructor helper for registering this controller's messaging system actions.
*/
#registerMessageHandlers(): void {
this.messagingSystem.registerActionHandler(
this.messenger.registerActionHandler(
`${controllerName}:usePPOM` as const,
this.usePPOM.bind(this),
);
Expand All @@ -456,7 +455,7 @@ export class PPOMController extends BaseController<
*/
#subscribeMessageEvents(): void {
const onNetworkChange = this.#onNetworkChange.bind(this);
this.messagingSystem.subscribe(
this.messenger.subscribe(
'NetworkController:networkDidChange',
onNetworkChange,
);
Expand Down
53 changes: 34 additions & 19 deletions test/test-utils.ts
Original file line number Diff line number Diff line change
@@ -1,20 +1,27 @@
import { Messenger } from '@metamask/base-controller';
import * as ControllerUtils from '@metamask/controller-utils';
import {
Messenger,
MOCK_ANY_NAMESPACE,
type MessengerActions,
type MessengerEvents,
type MockAnyNamespace,
} from '@metamask/messenger';
import type {
NetworkClientId,
NetworkState,
} from '@metamask/network-controller';

import type {
AllowedActions,
AllowedEvents,
PPOMControllerActions,
PPOMControllerEvents,
} from '../src/ppom-controller';
import type { PPOMControllerMessenger } from '../src/ppom-controller';
import { PPOMController } from '../src/ppom-controller';
import type { StorageKey } from '../src/ppom-storage';
import { SUPPORTED_NETWORK_CHAINIDS } from '../src/util';

type AllActions = MessengerActions<PPOMControllerMessenger>;

type AllEvents = MessengerEvents<PPOMControllerMessenger>;

type RootMessenger = Messenger<MockAnyNamespace, AllActions, AllEvents>;

export const buildDummyResponse = (
resultType = 'DUMMY_RESULT_TYPE',
reason = 'DUMMY_REASON',
Expand Down Expand Up @@ -180,17 +187,25 @@ export class PPOMClass {
}

export const buildPPOMController = (options?: any) => {
const controllerMessenger: Messenger<
PPOMControllerActions | AllowedActions,
PPOMControllerEvents | AllowedEvents
> = new Messenger();
const messenger = controllerMessenger.getRestricted({
name: 'PPOMController',
allowedActions: ['NetworkController:getNetworkClientById'],
allowedEvents: ['NetworkController:networkDidChange'],
const messenger: RootMessenger = new Messenger({
namespace: MOCK_ANY_NAMESPACE,
});
const ppomControllerMessenger = new Messenger<
'PPOMController',
AllActions,
AllEvents,
RootMessenger
>({
namespace: 'PPOMController',
parent: messenger,
});
messenger.delegate({
messenger: ppomControllerMessenger,
actions: ['NetworkController:getNetworkClientById'],
events: ['NetworkController:networkDidChange'],
});
const mockGetNetworkClientById = jest.fn();
controllerMessenger.registerActionHandler(
messenger.registerActionHandler(
'NetworkController:getNetworkClientById',
mockGetNetworkClientById.mockReturnValue({
configuration: { chainId: '0x1' },
Expand All @@ -203,7 +218,7 @@ export const buildPPOMController = (options?: any) => {
storageBackend: storageBackendReturningData,
provider: () => undefined,
chainId: SUPPORTED_NETWORK_CHAINIDS.MAINNET,
messenger,
messenger: ppomControllerMessenger,
securityAlertsEnabled: true,
onPreferencesChange: () => undefined,
state: {},
Expand All @@ -219,14 +234,14 @@ export const buildPPOMController = (options?: any) => {
}: {
selectedNetworkClientId: NetworkClientId;
}) => {
controllerMessenger.publish('NetworkController:networkDidChange', {
messenger.publish('NetworkController:networkDidChange', {
selectedNetworkClientId,
} as NetworkState);
};
return {
changeNetwork,
mockGetNetworkClientById,
controllerMessenger,
messenger,
ppomController,
};
};
Expand Down
Loading
Loading