Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions packages/keyring-internal-snap-client/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

### Changed

- **BREAKING:** Migrate `KeyringInternalSnapClientMessenger` to new `Messenger` type from `@metamask/messenger` ([#383](https://github.com/MetaMask/accounts/pull/383))

## [7.2.0]

### Changed
Expand Down
4 changes: 2 additions & 2 deletions packages/keyring-internal-snap-client/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,11 +45,11 @@
"test:watch": "jest --watch"
},
"dependencies": {
"@metamask/base-controller": "^8.3.0",
"@metamask/keyring-api": "workspace:^",
"@metamask/keyring-internal-api": "workspace:^",
"@metamask/keyring-snap-client": "workspace:^",
"@metamask/keyring-utils": "workspace:^"
"@metamask/keyring-utils": "workspace:^",
"@metamask/messenger": "^0.3.0"
},
"devDependencies": {
"@lavamoat/allow-scripts": "^3.2.1",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import type { RestrictedMessenger } from '@metamask/base-controller';
import { KeyringRpcMethod } from '@metamask/keyring-api';
import type {
KeyringRequestV1,
Expand All @@ -7,6 +6,7 @@ import type {
import { SubmitRequestResponseV1Struct } from '@metamask/keyring-internal-api';
import { KeyringClient, type Sender } from '@metamask/keyring-snap-client';
import { strictMask, type JsonRpcRequest } from '@metamask/keyring-utils';
import type { Messenger } from '@metamask/messenger';
import type { HandleSnapRequest } from '@metamask/snaps-controllers';
import type { SnapId } from '@metamask/snaps-sdk';
import type { HandlerType } from '@metamask/snaps-utils';
Expand All @@ -19,12 +19,9 @@ type AllowedActions = HandleSnapRequest;
* A restricted-`Messenger` used by `KeyringInternalSnapClient` to dispatch
* internal Snap requests.
*/
export type KeyringInternalSnapClientMessenger = RestrictedMessenger<
export type KeyringInternalSnapClientMessenger = Messenger<
'KeyringInternalSnapClient',
AllowedActions,
never,
AllowedActions['type'],
never
AllowedActions
Comment thread
cryptodev-2s marked this conversation as resolved.
>;

/**
Expand Down
4 changes: 4 additions & 0 deletions packages/keyring-snap-bridge/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

### Changed

- **BREAKING:** Migrate `SnapKeyringMessenger` to new `Messenger` type from `@metamask/messenger` ([#383](https://github.com/MetaMask/accounts/pull/383))

## [17.3.0]

### Added
Expand Down
2 changes: 1 addition & 1 deletion packages/keyring-snap-bridge/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -38,13 +38,13 @@
},
"dependencies": {
"@ethereumjs/tx": "^5.4.0",
"@metamask/base-controller": "^8.3.0",
"@metamask/eth-sig-util": "^8.2.0",
"@metamask/keyring-api": "workspace:^",
"@metamask/keyring-internal-api": "workspace:^",
"@metamask/keyring-internal-snap-client": "workspace:^",
"@metamask/keyring-snap-sdk": "workspace:^",
"@metamask/keyring-utils": "workspace:^",
"@metamask/messenger": "^0.3.0",
"@metamask/superstruct": "^3.1.0",
"@metamask/utils": "^11.1.0",
"@types/uuid": "^9.0.8",
Expand Down
45 changes: 26 additions & 19 deletions packages/keyring-snap-bridge/src/SnapKeyring.test.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { TransactionFactory, type TypedTxData } from '@ethereumjs/tx';
import { Messenger } from '@metamask/base-controller';
import { SignTypedDataVersion } from '@metamask/eth-sig-util';
import type {
KeyringAccount,
Expand Down Expand Up @@ -32,6 +31,13 @@ import {
} from '@metamask/keyring-api';
import { SnapManageAccountsMethod } from '@metamask/keyring-snap-sdk';
import type { JsonRpcRequest } from '@metamask/keyring-utils';
import {
Messenger,
MOCK_ANY_NAMESPACE,
type MessengerActions,
type MessengerEvents,
type MockAnyNamespace,
} from '@metamask/messenger';
import type { HandleSnapRequest } from '@metamask/snaps-controllers';
import { type SnapId } from '@metamask/snaps-sdk';
import type { HandlerType } from '@metamask/snaps-utils';
Expand All @@ -44,11 +50,7 @@ import { getDefaultInternalOptions, SnapKeyring } from '.';
import type { KeyringAccountV1 } from './account';
import { DeferredPromise } from './DeferredPromise';
import { migrateAccountV1, getScopesForAccountV1 } from './migrations';
import type {
SnapKeyringAllowedActions,
SnapKeyringEvents,
SnapKeyringMessenger,
} from './SnapKeyringMessenger';
import type { SnapKeyringMessenger } from './SnapKeyringMessenger';

type SnapRpcRequest = Parameters<HandleSnapRequest['handler']>[0];

Expand Down Expand Up @@ -263,8 +265,11 @@ describe('SnapKeyring', () => {
};

// Fake the Messenger and registers all mock actions here:
const messenger: Messenger<SnapKeyringAllowedActions, SnapKeyringEvents> =
new Messenger();
const messenger: Messenger<
MockAnyNamespace,
MessengerActions<SnapKeyringMessenger>,
MessengerEvents<SnapKeyringMessenger>
> = new Messenger({ namespace: MOCK_ANY_NAMESPACE });
messenger.registerActionHandler('SnapController:get', mockMessenger.get);
messenger.registerActionHandler(
'SnapController:handleRequest',
Expand All @@ -275,17 +280,19 @@ describe('SnapKeyring', () => {
mockMessenger.isMinimumPlatformVersion,
);

// Now extracts a restricted messenger for the Snap keyring only.
const mockSnapKeyringMessenger: SnapKeyringMessenger =
messenger.getRestricted({
name: 'SnapKeyring',
allowedEvents: [],
allowedActions: [
'SnapController:get',
'SnapController:handleRequest',
'SnapController:isMinimumPlatformVersion',
],
});
// Now extracts a messenger for the Snap keyring only.
const mockSnapKeyringMessenger: SnapKeyringMessenger = new Messenger({
namespace: 'SnapKeyring',
parent: messenger,
});
messenger.delegate({
messenger: mockSnapKeyringMessenger,
actions: [
'SnapController:get',
'SnapController:handleRequest',
'SnapController:isMinimumPlatformVersion',
],
});

// Allow to map a mocked value for a given keyring RPC method
const mockMessengerHandleRequest = (
Expand Down
2 changes: 1 addition & 1 deletion packages/keyring-snap-bridge/src/SnapKeyring.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

import type { TypedTransaction } from '@ethereumjs/tx';
import { TransactionFactory } from '@ethereumjs/tx';
import type { ExtractEventPayload } from '@metamask/base-controller';
import type { TypedDataV1, TypedMessage } from '@metamask/eth-sig-util';
import { SignTypedDataVersion } from '@metamask/eth-sig-util';
import type {
Expand Down Expand Up @@ -46,6 +45,7 @@ import {
} from '@metamask/keyring-snap-sdk';
import type { AccountId, JsonRpcRequest } from '@metamask/keyring-utils';
import { strictMask } from '@metamask/keyring-utils';
import type { ExtractEventPayload } from '@metamask/messenger';
import type { SnapId } from '@metamask/snaps-sdk';
import { type Snap } from '@metamask/snaps-utils';
import { assert, mask, object, string } from '@metamask/superstruct';
Expand Down
8 changes: 3 additions & 5 deletions packages/keyring-snap-bridge/src/SnapKeyringMessenger.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import type { RestrictedMessenger } from '@metamask/base-controller';
import type {
AccountAssetListUpdatedEventPayload,
AccountBalancesUpdatedEventPayload,
AccountTransactionsUpdatedEventPayload,
} from '@metamask/keyring-api';
import type { Messenger } from '@metamask/messenger';
import type {
HandleSnapRequest as SnapControllerHandleSnapRequest,
GetSnap as SnapControllerGetSnap,
Expand Down Expand Up @@ -42,10 +42,8 @@ export type SnapKeyringAllowedActions =

export const SNAP_KEYRING_NAME = 'SnapKeyring';

export type SnapKeyringMessenger = RestrictedMessenger<
export type SnapKeyringMessenger = Messenger<
typeof SNAP_KEYRING_NAME,
SnapKeyringAllowedActions,
SnapKeyringEvents,
SnapKeyringAllowedActions['type'],
never
SnapKeyringEvents
>;
13 changes: 10 additions & 3 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -1553,7 +1553,7 @@ __metadata:
languageName: node
linkType: hard

"@metamask/base-controller@npm:^8.0.0, @metamask/base-controller@npm:^8.0.1, @metamask/base-controller@npm:^8.3.0":
"@metamask/base-controller@npm:^8.0.0, @metamask/base-controller@npm:^8.0.1":
version: 8.3.0
resolution: "@metamask/base-controller@npm:8.3.0"
dependencies:
Expand Down Expand Up @@ -1839,13 +1839,13 @@ __metadata:
"@lavamoat/allow-scripts": "npm:^3.2.1"
"@lavamoat/preinstall-always-fail": "npm:^2.1.0"
"@metamask/auto-changelog": "npm:^3.4.4"
"@metamask/base-controller": "npm:^8.3.0"
"@metamask/eth-sig-util": "npm:^8.2.0"
"@metamask/keyring-api": "workspace:^"
"@metamask/keyring-internal-api": "workspace:^"
"@metamask/keyring-internal-snap-client": "workspace:^"
"@metamask/keyring-snap-sdk": "workspace:^"
"@metamask/keyring-utils": "workspace:^"
"@metamask/messenger": "npm:^0.3.0"
"@metamask/snaps-controllers": "npm:^14.0.1"
"@metamask/snaps-sdk": "npm:^9.0.0"
"@metamask/snaps-utils": "npm:^11.0.0"
Expand Down Expand Up @@ -2016,11 +2016,11 @@ __metadata:
"@lavamoat/allow-scripts": "npm:^3.2.1"
"@lavamoat/preinstall-always-fail": "npm:^2.1.0"
"@metamask/auto-changelog": "npm:^3.4.4"
"@metamask/base-controller": "npm:^8.3.0"
"@metamask/keyring-api": "workspace:^"
"@metamask/keyring-internal-api": "workspace:^"
"@metamask/keyring-snap-client": "workspace:^"
"@metamask/keyring-utils": "workspace:^"
"@metamask/messenger": "npm:^0.3.0"
"@metamask/snaps-controllers": "npm:^14.0.1"
"@metamask/snaps-sdk": "npm:^9.0.0"
"@metamask/snaps-utils": "npm:^11.0.0"
Expand Down Expand Up @@ -2141,6 +2141,13 @@ __metadata:
languageName: node
linkType: hard

"@metamask/messenger@npm:^0.3.0":
version: 0.3.0
resolution: "@metamask/messenger@npm:0.3.0"
checksum: 10/84e9f4193646d749c7260a4958b13974b3c8738cc2e414116279ed31734e1edba687ff56ddbfdb75033bce30aaa9eeb7c391bccb87a66dbc99a902882271f673
languageName: node
linkType: hard

"@metamask/number-to-bn@npm:^1.7.1":
version: 1.7.1
resolution: "@metamask/number-to-bn@npm:1.7.1"
Expand Down
Loading