You're Invited:Meet the Socket Team at RSAC and BSidesSF 2026, March 23–26.RSVP
Socket
Book a DemoSign in
Socket

@metamask/snaps-controllers

Package Overview
Dependencies
Maintainers
3
Versions
132
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@metamask/snaps-controllers - npm Package Compare versions

Comparing version
17.2.1
to
18.0.0
+23
-1
CHANGELOG.md

@@ -10,2 +10,23 @@ # Changelog

## [18.0.0]
### Added
- **BREAKING:** Use `StorageService` to store source code ([#3777](https://github.com/MetaMask/snaps/pull/3777))
### Changed
- **BREAKING:** Remove `closeAllConnections` constructor argument ([#3814](https://github.com/MetaMask/snaps/pull/3814))
- Pass executor parameters by object ([#3803](https://github.com/MetaMask/snaps/pull/3803))
- Bump `lodash` from `4.17.21` to `4.17.23` ([#3821](https://github.com/MetaMask/snaps/pull/3821))
- Bump `tar` from `7.0.0` to `7.1.0` ([#3821](https://github.com/MetaMask/snaps/pull/3821))
- Bump `@metamask/json-rpc-engine` from `10.2.0` to `10.2.1` ([#3804](https://github.com/MetaMask/snaps/pull/3804))
### Fixed
- Disallow using unconnected accounts in `MultichainRouter` ([#3837](https://github.com/MetaMask/snaps/pull/3837))
- Update `SnapController` state when `SnapsRegistry` changes ([#3828](https://github.com/MetaMask/snaps/pull/3828))
- Update documentation for `MultichainRouter` ([#3827](https://github.com/MetaMask/snaps/pull/3827))
- Manually construct `keyring_resolveAccountAddress` request ([#3822](https://github.com/MetaMask/snaps/pull/3822))
## [17.2.1]

@@ -1022,3 +1043,4 @@

[Unreleased]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-controllers@17.2.1...HEAD
[Unreleased]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-controllers@18.0.0...HEAD
[18.0.0]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-controllers@17.2.1...@metamask/snaps-controllers@18.0.0
[17.2.1]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-controllers@17.2.0...@metamask/snaps-controllers@17.2.1

@@ -1025,0 +1047,0 @@ [17.2.0]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-controllers@17.1.2...@metamask/snaps-controllers@17.2.0

+33
-10

@@ -27,4 +27,6 @@ "use strict";

*
* The request is sent to to an account Snap via the SnapKeyring that will attempt this resolution.
* The request is sent to an account Snap that will attempt this resolution.
*
* We manually construct the request instead of using the SnapKeyring, as the keyring may not be available.
*
* @param snapId - The ID of the Snap to send the request to.

@@ -38,3 +40,15 @@ * @param scope - The CAIP-2 scope for the request.

try {
const result = await this.#withSnapKeyring(async ({ keyring }) => keyring.resolveAccountAddress(snapId, scope, request));
const result = await this.#messenger.call('SnapController:handleRequest', {
snapId,
origin: 'metamask',
request: {
method: 'keyring_resolveAccountAddress',
params: {
request,
scope,
},
},
handler: snaps_utils_1.HandlerType.OnKeyringRequest,
});
(0, utils_1.assert)(result === null || (0, utils_1.isObject)(result));
const address = result?.address;

@@ -55,3 +69,4 @@ return address ? (0, utils_1.parseCaipAccountId)(address).address : null;

*
* @param connectedAddresses - The CAIP-10 addresses connected to the requesting origin.
* @param connectedAddresses - The CAIP-10 addresses connected to the
* requesting origin for the requested scope.
* @param scope - The CAIP-2 scope for the request.

@@ -71,11 +86,18 @@ * @param request - The JSON-RPC request.

}
const resolutionSnapId = accounts[0].metadata.snap.id;
const parsedConnectedAddresses = connectedAddresses.map((connectedAddress) => (0, utils_1.parseCaipAccountId)(connectedAddress).address);
const connectedAccounts = accounts.filter((account) => parsedConnectedAddresses.includes(account.address));
if (connectedAccounts.length === 0) {
throw rpc_errors_1.rpcErrors.invalidParams({
message: 'No available account found for request.',
});
}
const resolutionSnapId = connectedAccounts[0].metadata.snap.id;
// Attempt to resolve the address that should be used for signing.
const address = await this.#resolveRequestAddress(resolutionSnapId, scope, request);
const parsedConnectedAddresses = connectedAddresses.map((connectedAddress) => (0, utils_1.parseCaipAccountId)(connectedAddress).address);
// If we have a resolved address, try to find the selected account based on that
// otherwise, default to one of the connected accounts.
// TODO: Eventually let the user choose if we have more than one option for the account.
const selectedAccount = accounts.find((account) => parsedConnectedAddresses.includes(account.address) &&
(!address || account.address === address));
const selectedAccount = address
? connectedAccounts.find((account) => account.address === address)
: connectedAccounts[0];
if (!selectedAccount) {

@@ -119,7 +141,8 @@ throw rpc_errors_1.rpcErrors.invalidParams({

*
* Note: Addresses are considered case sensitive by the MultichainRouter as
* not all non-EVM chains are case insensitive.
* Note: Addresses are considered case-sensitive by the MultichainRouter as
* not all non-EVM chains are case-insensitive.
*
* @param options - An options bag.
* @param options.connectedAddresses - Addresses currently connected to the origin.
* @param options.connectedAddresses - Addresses currently connected to the
* origin for the requested scope.
* @param options.origin - The origin of the RPC request.

@@ -126,0 +149,0 @@ * @param options.request - The JSON-RPC request.

import type { Messenger } from "@metamask/messenger";
import type { GetPermissions } from "@metamask/permission-controller";
import type { Json, JsonRpcRequest, SnapId } from "@metamask/snaps-sdk";
import type { Json, JsonRpcRequest } from "@metamask/snaps-sdk";
import type { InternalAccount } from "@metamask/snaps-utils";

@@ -31,5 +31,2 @@ import type { CaipAccountId, CaipChainId } from "@metamask/utils";

}) => Promise<Json>;
resolveAccountAddress: (snapId: SnapId, scope: CaipChainId, request: Json) => Promise<{
address: CaipAccountId;
} | null>;
};

@@ -61,7 +58,8 @@ export type WithSnapKeyringFunction = <ReturnType>(operation: ({ keyring }: {

*
* Note: Addresses are considered case sensitive by the MultichainRouter as
* not all non-EVM chains are case insensitive.
* Note: Addresses are considered case-sensitive by the MultichainRouter as
* not all non-EVM chains are case-insensitive.
*
* @param options - An options bag.
* @param options.connectedAddresses - Addresses currently connected to the origin.
* @param options.connectedAddresses - Addresses currently connected to the
* origin for the requested scope.
* @param options.origin - The origin of the RPC request.

@@ -68,0 +66,0 @@ * @param options.request - The JSON-RPC request.

import type { Messenger } from "@metamask/messenger";
import type { GetPermissions } from "@metamask/permission-controller";
import type { Json, JsonRpcRequest, SnapId } from "@metamask/snaps-sdk";
import type { Json, JsonRpcRequest } from "@metamask/snaps-sdk";
import type { InternalAccount } from "@metamask/snaps-utils";

@@ -31,5 +31,2 @@ import type { CaipAccountId, CaipChainId } from "@metamask/utils";

}) => Promise<Json>;
resolveAccountAddress: (snapId: SnapId, scope: CaipChainId, request: Json) => Promise<{
address: CaipAccountId;
} | null>;
};

@@ -61,7 +58,8 @@ export type WithSnapKeyringFunction = <ReturnType>(operation: ({ keyring }: {

*
* Note: Addresses are considered case sensitive by the MultichainRouter as
* not all non-EVM chains are case insensitive.
* Note: Addresses are considered case-sensitive by the MultichainRouter as
* not all non-EVM chains are case-insensitive.
*
* @param options - An options bag.
* @param options.connectedAddresses - Addresses currently connected to the origin.
* @param options.connectedAddresses - Addresses currently connected to the
* origin for the requested scope.
* @param options.origin - The origin of the RPC request.

@@ -68,0 +66,0 @@ * @param options.request - The JSON-RPC request.

import { rpcErrors } from "@metamask/rpc-errors";
import { getProtocolCaveatScopes, SnapEndowments } from "@metamask/snaps-rpc-methods";
import { HandlerType } from "@metamask/snaps-utils";
import { assert, hasProperty, KnownCaipNamespace, parseCaipAccountId } from "@metamask/utils";
import { assert, hasProperty, isObject, KnownCaipNamespace, parseCaipAccountId } from "@metamask/utils";
import { nanoid } from "nanoid";

@@ -24,4 +24,6 @@ import { getRunnableSnaps } from "../snaps/index.mjs";

*
* The request is sent to to an account Snap via the SnapKeyring that will attempt this resolution.
* The request is sent to an account Snap that will attempt this resolution.
*
* We manually construct the request instead of using the SnapKeyring, as the keyring may not be available.
*
* @param snapId - The ID of the Snap to send the request to.

@@ -35,3 +37,15 @@ * @param scope - The CAIP-2 scope for the request.

try {
const result = await this.#withSnapKeyring(async ({ keyring }) => keyring.resolveAccountAddress(snapId, scope, request));
const result = await this.#messenger.call('SnapController:handleRequest', {
snapId,
origin: 'metamask',
request: {
method: 'keyring_resolveAccountAddress',
params: {
request,
scope,
},
},
handler: HandlerType.OnKeyringRequest,
});
assert(result === null || isObject(result));
const address = result?.address;

@@ -52,3 +66,4 @@ return address ? parseCaipAccountId(address).address : null;

*
* @param connectedAddresses - The CAIP-10 addresses connected to the requesting origin.
* @param connectedAddresses - The CAIP-10 addresses connected to the
* requesting origin for the requested scope.
* @param scope - The CAIP-2 scope for the request.

@@ -68,11 +83,18 @@ * @param request - The JSON-RPC request.

}
const resolutionSnapId = accounts[0].metadata.snap.id;
const parsedConnectedAddresses = connectedAddresses.map((connectedAddress) => parseCaipAccountId(connectedAddress).address);
const connectedAccounts = accounts.filter((account) => parsedConnectedAddresses.includes(account.address));
if (connectedAccounts.length === 0) {
throw rpcErrors.invalidParams({
message: 'No available account found for request.',
});
}
const resolutionSnapId = connectedAccounts[0].metadata.snap.id;
// Attempt to resolve the address that should be used for signing.
const address = await this.#resolveRequestAddress(resolutionSnapId, scope, request);
const parsedConnectedAddresses = connectedAddresses.map((connectedAddress) => parseCaipAccountId(connectedAddress).address);
// If we have a resolved address, try to find the selected account based on that
// otherwise, default to one of the connected accounts.
// TODO: Eventually let the user choose if we have more than one option for the account.
const selectedAccount = accounts.find((account) => parsedConnectedAddresses.includes(account.address) &&
(!address || account.address === address));
const selectedAccount = address
? connectedAccounts.find((account) => account.address === address)
: connectedAccounts[0];
if (!selectedAccount) {

@@ -116,7 +138,8 @@ throw rpcErrors.invalidParams({

*
* Note: Addresses are considered case sensitive by the MultichainRouter as
* not all non-EVM chains are case insensitive.
* Note: Addresses are considered case-sensitive by the MultichainRouter as
* not all non-EVM chains are case-insensitive.
*
* @param options - An options bag.
* @param options.connectedAddresses - Addresses currently connected to the origin.
* @param options.connectedAddresses - Addresses currently connected to the
* origin for the requested scope.
* @param options.origin - The origin of the RPC request.

@@ -123,0 +146,0 @@ * @param options.request - The JSON-RPC request.

@@ -68,3 +68,2 @@ "use strict";

method: 'terminate',
params: [],
id: (0, nanoid_1.nanoid)(),

@@ -286,6 +285,6 @@ }), this.#terminationTimeout);

params: {
snapId,
origin,
handler,
request: request,
target: snapId,
},

@@ -292,0 +291,0 @@ });

@@ -69,3 +69,2 @@ function $importDefault(module) {

method: 'terminate',
params: [],
id: nanoid(),

@@ -287,6 +286,6 @@ }), this.#terminationTimeout);

params: {
snapId,
origin,
handler,
request: request,
target: snapId,
},

@@ -293,0 +292,0 @@ });

@@ -12,2 +12,3 @@ import { type AddApprovalRequest, type UpdateRequestState } from "@metamask/approval-controller";

import { SnapStatusEvents } from "@metamask/snaps-utils";
import type { StorageServiceGetItemAction, StorageServiceSetItemAction, StorageServiceRemoveItemAction, StorageServiceClearAction } from "@metamask/storage-service";
import type { Json, NonEmptyArray, SemVerVersion } from "@metamask/utils";

@@ -18,3 +19,3 @@ import type { StateMachine } from "@xstate/fsm";

import { detectSnapLocation } from "./location/index.cjs";
import type { GetMetadata, GetResult, ResolveVersion, Update } from "./registry/index.cjs";
import type { GetMetadata, GetResult, ResolveVersion, SnapsRegistryStateChangeEvent, Update } from "./registry/index.cjs";
import { Timer } from "./Timer.cjs";

@@ -116,3 +117,2 @@ import type { CreateInterface, GetInterface } from "../interface/index.cjs";

};
type CloseAllConnectionsFunction = (origin: string) => void;
type StoredSnaps = Record<SnapId, Snap>;

@@ -126,3 +126,3 @@ export type SnapControllerState = {

export type PersistedSnapControllerState = SnapControllerState & {
snaps: Record<SnapId, PersistedSnap>;
snaps: Record<SnapId, Snap>;
snapStates: Record<SnapId, string>;

@@ -347,4 +347,4 @@ };

export type SnapControllerEvents = SnapBlocked | SnapInstalled | SnapUninstalled | SnapInstallStarted | SnapInstallFailed | SnapStateChange | SnapUnblocked | SnapUpdated | SnapRolledback | SnapTerminated | SnapEnabled | SnapDisabled | SnapControllerStateChangeEvent;
export type AllowedActions = GetEndowments | GetPermissions | GetSubjects | GetSubjectMetadata | AddSubjectMetadata | HasPermission | HasPermissions | RevokePermissions | RevokeAllPermissions | RevokePermissionForAllSubjects | GrantPermissions | AddApprovalRequest | HandleRpcRequestAction | ExecuteSnapAction | TerminateSnapAction | UpdateCaveat | UpdateRequestState | GetResult | GetMetadata | Update | ResolveVersion | CreateInterface | GetInterface;
export type AllowedEvents = ExecutionServiceEvents | SnapInstalled | SnapUpdated | KeyringControllerLock;
export type AllowedActions = GetEndowments | GetPermissions | GetSubjects | GetSubjectMetadata | AddSubjectMetadata | HasPermission | HasPermissions | RevokePermissions | RevokeAllPermissions | RevokePermissionForAllSubjects | GrantPermissions | AddApprovalRequest | HandleRpcRequestAction | ExecuteSnapAction | TerminateSnapAction | UpdateCaveat | UpdateRequestState | GetResult | GetMetadata | Update | ResolveVersion | CreateInterface | GetInterface | StorageServiceSetItemAction | StorageServiceGetItemAction | StorageServiceRemoveItemAction | StorageServiceClearAction;
export type AllowedEvents = ExecutionServiceEvents | SnapInstalled | SnapUpdated | KeyringControllerLock | SnapsRegistryStateChangeEvent;
type SnapControllerMessenger = Messenger<typeof controllerName, SnapControllerActions | AllowedActions, SnapControllerEvents | AllowedEvents>;

@@ -374,7 +374,2 @@ type FeatureFlags = {

/**
* A teardown function that allows the host to clean up its instrumentation
* for a running snap.
*/
closeAllConnections?: CloseAllConnectionsFunction;
/**
* A list of permissions that are allowed to be dynamic, meaning they can be revoked from the snap whenever.

@@ -478,16 +473,14 @@ */

private readonly maxRequestTime;
constructor({ closeAllConnections, messenger, state, dynamicPermissions, environmentEndowmentPermissions, excludedPermissions, idleTimeCheckInterval, maxIdleTime, maxRequestTime, fetchFunction, featureFlags, detectSnapLocation: detectSnapLocationFunction, preinstalledSnaps, encryptor, getMnemonicSeed, getFeatureFlags, clientCryptography, trackEvent, ensureOnboardingComplete, }: SnapControllerArgs);
constructor({ messenger, state, dynamicPermissions, environmentEndowmentPermissions, excludedPermissions, idleTimeCheckInterval, maxIdleTime, maxRequestTime, fetchFunction, featureFlags, detectSnapLocation: detectSnapLocationFunction, preinstalledSnaps, encryptor, getMnemonicSeed, getFeatureFlags, clientCryptography, trackEvent, ensureOnboardingComplete, }: SnapControllerArgs);
/**
* Initialise the SnapController.
*
* Currently this method calls the `onStart` lifecycle hook for all
* Currently this method sets up the controller and calls the `onStart` lifecycle hook for all
* runnable Snaps.
*/
init(): void;
init(): Promise<void>;
/**
* Checks all installed snaps against the block list and
* blocks/unblocks snaps as appropriate. See {@link SnapController.blockSnap}
* for more information.
* Trigger an update of the registry.
*
* Also updates any preinstalled Snaps to the latest allowlisted version.
* As a side-effect of this, preinstalled Snaps may be updated and Snaps may be blocked/unblocked.
*/

@@ -494,0 +487,0 @@ updateRegistry(): Promise<void>;

@@ -12,2 +12,3 @@ import { type AddApprovalRequest, type UpdateRequestState } from "@metamask/approval-controller";

import { SnapStatusEvents } from "@metamask/snaps-utils";
import type { StorageServiceGetItemAction, StorageServiceSetItemAction, StorageServiceRemoveItemAction, StorageServiceClearAction } from "@metamask/storage-service";
import type { Json, NonEmptyArray, SemVerVersion } from "@metamask/utils";

@@ -18,3 +19,3 @@ import type { StateMachine } from "@xstate/fsm";

import { detectSnapLocation } from "./location/index.mjs";
import type { GetMetadata, GetResult, ResolveVersion, Update } from "./registry/index.mjs";
import type { GetMetadata, GetResult, ResolveVersion, SnapsRegistryStateChangeEvent, Update } from "./registry/index.mjs";
import { Timer } from "./Timer.mjs";

@@ -116,3 +117,2 @@ import type { CreateInterface, GetInterface } from "../interface/index.mjs";

};
type CloseAllConnectionsFunction = (origin: string) => void;
type StoredSnaps = Record<SnapId, Snap>;

@@ -126,3 +126,3 @@ export type SnapControllerState = {

export type PersistedSnapControllerState = SnapControllerState & {
snaps: Record<SnapId, PersistedSnap>;
snaps: Record<SnapId, Snap>;
snapStates: Record<SnapId, string>;

@@ -347,4 +347,4 @@ };

export type SnapControllerEvents = SnapBlocked | SnapInstalled | SnapUninstalled | SnapInstallStarted | SnapInstallFailed | SnapStateChange | SnapUnblocked | SnapUpdated | SnapRolledback | SnapTerminated | SnapEnabled | SnapDisabled | SnapControllerStateChangeEvent;
export type AllowedActions = GetEndowments | GetPermissions | GetSubjects | GetSubjectMetadata | AddSubjectMetadata | HasPermission | HasPermissions | RevokePermissions | RevokeAllPermissions | RevokePermissionForAllSubjects | GrantPermissions | AddApprovalRequest | HandleRpcRequestAction | ExecuteSnapAction | TerminateSnapAction | UpdateCaveat | UpdateRequestState | GetResult | GetMetadata | Update | ResolveVersion | CreateInterface | GetInterface;
export type AllowedEvents = ExecutionServiceEvents | SnapInstalled | SnapUpdated | KeyringControllerLock;
export type AllowedActions = GetEndowments | GetPermissions | GetSubjects | GetSubjectMetadata | AddSubjectMetadata | HasPermission | HasPermissions | RevokePermissions | RevokeAllPermissions | RevokePermissionForAllSubjects | GrantPermissions | AddApprovalRequest | HandleRpcRequestAction | ExecuteSnapAction | TerminateSnapAction | UpdateCaveat | UpdateRequestState | GetResult | GetMetadata | Update | ResolveVersion | CreateInterface | GetInterface | StorageServiceSetItemAction | StorageServiceGetItemAction | StorageServiceRemoveItemAction | StorageServiceClearAction;
export type AllowedEvents = ExecutionServiceEvents | SnapInstalled | SnapUpdated | KeyringControllerLock | SnapsRegistryStateChangeEvent;
type SnapControllerMessenger = Messenger<typeof controllerName, SnapControllerActions | AllowedActions, SnapControllerEvents | AllowedEvents>;

@@ -374,7 +374,2 @@ type FeatureFlags = {

/**
* A teardown function that allows the host to clean up its instrumentation
* for a running snap.
*/
closeAllConnections?: CloseAllConnectionsFunction;
/**
* A list of permissions that are allowed to be dynamic, meaning they can be revoked from the snap whenever.

@@ -478,16 +473,14 @@ */

private readonly maxRequestTime;
constructor({ closeAllConnections, messenger, state, dynamicPermissions, environmentEndowmentPermissions, excludedPermissions, idleTimeCheckInterval, maxIdleTime, maxRequestTime, fetchFunction, featureFlags, detectSnapLocation: detectSnapLocationFunction, preinstalledSnaps, encryptor, getMnemonicSeed, getFeatureFlags, clientCryptography, trackEvent, ensureOnboardingComplete, }: SnapControllerArgs);
constructor({ messenger, state, dynamicPermissions, environmentEndowmentPermissions, excludedPermissions, idleTimeCheckInterval, maxIdleTime, maxRequestTime, fetchFunction, featureFlags, detectSnapLocation: detectSnapLocationFunction, preinstalledSnaps, encryptor, getMnemonicSeed, getFeatureFlags, clientCryptography, trackEvent, ensureOnboardingComplete, }: SnapControllerArgs);
/**
* Initialise the SnapController.
*
* Currently this method calls the `onStart` lifecycle hook for all
* Currently this method sets up the controller and calls the `onStart` lifecycle hook for all
* runnable Snaps.
*/
init(): void;
init(): Promise<void>;
/**
* Checks all installed snaps against the block list and
* blocks/unblocks snaps as appropriate. See {@link SnapController.blockSnap}
* for more information.
* Trigger an update of the registry.
*
* Also updates any preinstalled Snaps to the latest allowlisted version.
* As a side-effect of this, preinstalled Snaps may be updated and Snaps may be blocked/unblocked.
*/

@@ -494,0 +487,0 @@ updateRegistry(): Promise<void>;

@@ -231,2 +231,3 @@ import type { PermissionConstraint } from "@metamask/permission-controller";

manifestVersion: "0.1";
extends?: string | undefined;
repository?: {

@@ -233,0 +234,0 @@ type: string;

@@ -231,2 +231,3 @@ import type { PermissionConstraint } from "@metamask/permission-controller";

manifestVersion: "0.1";
extends?: string | undefined;
repository?: {

@@ -233,0 +234,0 @@ type: string;

{
"name": "@metamask/snaps-controllers",
"version": "17.2.1",
"version": "18.0.0",
"description": "Controllers for MetaMask Snaps",

@@ -84,3 +84,3 @@ "keywords": [

"@metamask/base-controller": "^9.0.0",
"@metamask/json-rpc-engine": "^10.1.0",
"@metamask/json-rpc-engine": "^10.2.1",
"@metamask/json-rpc-middleware-stream": "^8.0.8",

@@ -95,5 +95,6 @@ "@metamask/key-tree": "^10.1.1",

"@metamask/snaps-registry": "^4.0.0",
"@metamask/snaps-rpc-methods": "^14.1.1",
"@metamask/snaps-sdk": "^10.3.0",
"@metamask/snaps-utils": "^11.7.1",
"@metamask/snaps-rpc-methods": "^14.3.0",
"@metamask/snaps-sdk": "^10.4.0",
"@metamask/snaps-utils": "^12.1.0",
"@metamask/storage-service": "^1.0.0",
"@metamask/superstruct": "^3.2.1",

@@ -116,3 +117,3 @@ "@metamask/utils": "^11.9.0",

"devDependencies": {
"@lavamoat/allow-scripts": "^3.4.1",
"@lavamoat/allow-scripts": "^3.4.2",
"@metamask/auto-changelog": "^5.0.2",

@@ -142,3 +143,3 @@ "@metamask/browser-passworder": "^6.0.0",

"jest-silent-reporter": "^0.6.0",
"lodash": "^4.17.21",
"lodash": "^4.17.23",
"prettier": "^3.3.3",

@@ -155,3 +156,3 @@ "rimraf": "^4.1.2",

"peerDependencies": {
"@metamask/snaps-execution-environments": "^10.3.0"
"@metamask/snaps-execution-environments": "^11.0.0"
},

@@ -158,0 +159,0 @@ "peerDependenciesMeta": {

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet