@metamask/snaps-controllers
Advanced tools
+23
-1
@@ -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 |
@@ -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>; |
+1
-0
@@ -231,2 +231,3 @@ import type { PermissionConstraint } from "@metamask/permission-controller"; | ||
| manifestVersion: "0.1"; | ||
| extends?: string | undefined; | ||
| repository?: { | ||
@@ -233,0 +234,0 @@ type: string; |
+1
-0
@@ -231,2 +231,3 @@ import type { PermissionConstraint } from "@metamask/permission-controller"; | ||
| manifestVersion: "0.1"; | ||
| extends?: string | undefined; | ||
| repository?: { | ||
@@ -233,0 +234,0 @@ type: string; |
+9
-8
| { | ||
| "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
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
Shell access
Supply chain riskThis module accesses the system shell. Accessing the system shell increases the risk of executing arbitrary code.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
Shell access
Supply chain riskThis module accesses the system shell. Accessing the system shell increases the risk of executing arbitrary code.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
2004540
1.2%13104
1.66%32
3.23%84
18.31%138
27.78%+ Added
+ Added
+ Added
- Removed
Updated