@metamask/snaps-controllers 9.19.1 → 10.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +29 -1
- package/dist/cronjob/CronjobController.cjs +15 -1
- package/dist/cronjob/CronjobController.cjs.map +1 -1
- package/dist/cronjob/CronjobController.d.cts.map +1 -1
- package/dist/cronjob/CronjobController.d.mts.map +1 -1
- package/dist/cronjob/CronjobController.mjs +15 -1
- package/dist/cronjob/CronjobController.mjs.map +1 -1
- package/dist/interface/SnapInterfaceController.cjs.map +1 -1
- package/dist/interface/SnapInterfaceController.d.cts.map +1 -1
- package/dist/interface/SnapInterfaceController.d.mts.map +1 -1
- package/dist/interface/SnapInterfaceController.mjs.map +1 -1
- package/dist/multichain/MultichainRouter.cjs +9 -1
- package/dist/multichain/MultichainRouter.cjs.map +1 -1
- package/dist/multichain/MultichainRouter.d.cts +1 -1
- package/dist/multichain/MultichainRouter.d.cts.map +1 -1
- package/dist/multichain/MultichainRouter.d.mts +1 -1
- package/dist/multichain/MultichainRouter.d.mts.map +1 -1
- package/dist/multichain/MultichainRouter.mjs +9 -1
- package/dist/multichain/MultichainRouter.mjs.map +1 -1
- package/dist/node.cjs +1 -1
- package/dist/node.cjs.map +1 -1
- package/dist/node.mjs +1 -1
- package/dist/node.mjs.map +1 -1
- package/dist/react-native.cjs +1 -1
- package/dist/react-native.cjs.map +1 -1
- package/dist/react-native.mjs +1 -1
- package/dist/react-native.mjs.map +1 -1
- package/dist/services/AbstractExecutionService.cjs +7 -2
- package/dist/services/AbstractExecutionService.cjs.map +1 -1
- package/dist/services/AbstractExecutionService.d.cts +1 -1
- package/dist/services/AbstractExecutionService.d.cts.map +1 -1
- package/dist/services/AbstractExecutionService.d.mts +1 -1
- package/dist/services/AbstractExecutionService.d.mts.map +1 -1
- package/dist/services/AbstractExecutionService.mjs +7 -2
- package/dist/services/AbstractExecutionService.mjs.map +1 -1
- package/dist/services/ExecutionService.cjs +0 -1
- package/dist/services/ExecutionService.cjs.map +1 -1
- package/dist/services/ExecutionService.d.cts +7 -7
- package/dist/services/ExecutionService.d.cts.map +1 -1
- package/dist/services/ExecutionService.d.mts +7 -7
- package/dist/services/ExecutionService.d.mts.map +1 -1
- package/dist/services/ExecutionService.mjs +0 -1
- package/dist/services/ExecutionService.mjs.map +1 -1
- package/dist/services/browser.cjs +0 -1
- package/dist/services/browser.cjs.map +1 -1
- package/dist/services/browser.d.cts +1 -1
- package/dist/services/browser.d.cts.map +1 -1
- package/dist/services/browser.d.mts +1 -1
- package/dist/services/browser.d.mts.map +1 -1
- package/dist/services/browser.mjs +0 -1
- package/dist/services/browser.mjs.map +1 -1
- package/dist/services/iframe/IframeExecutionService.cjs +2 -1
- package/dist/services/iframe/IframeExecutionService.cjs.map +1 -1
- package/dist/services/iframe/IframeExecutionService.d.cts +1 -1
- package/dist/services/iframe/IframeExecutionService.d.cts.map +1 -1
- package/dist/services/iframe/IframeExecutionService.d.mts +1 -1
- package/dist/services/iframe/IframeExecutionService.d.mts.map +1 -1
- package/dist/services/iframe/IframeExecutionService.mjs +2 -1
- package/dist/services/iframe/IframeExecutionService.mjs.map +1 -1
- package/dist/services/index.cjs +0 -1
- package/dist/services/index.cjs.map +1 -1
- package/dist/services/index.d.cts +1 -1
- package/dist/services/index.d.cts.map +1 -1
- package/dist/services/index.d.mts +1 -1
- package/dist/services/index.d.mts.map +1 -1
- package/dist/services/index.mjs +0 -1
- package/dist/services/index.mjs.map +1 -1
- package/dist/services/node-js/NodeThreadExecutionService.cjs +3 -1
- package/dist/services/node-js/NodeThreadExecutionService.cjs.map +1 -1
- package/dist/services/node-js/NodeThreadExecutionService.d.cts.map +1 -1
- package/dist/services/node-js/NodeThreadExecutionService.d.mts.map +1 -1
- package/dist/services/node-js/NodeThreadExecutionService.mjs +3 -1
- package/dist/services/node-js/NodeThreadExecutionService.mjs.map +1 -1
- package/dist/services/offscreen/OffscreenExecutionService.cjs +2 -1
- package/dist/services/offscreen/OffscreenExecutionService.cjs.map +1 -1
- package/dist/services/offscreen/OffscreenExecutionService.d.cts +1 -1
- package/dist/services/offscreen/OffscreenExecutionService.d.cts.map +1 -1
- package/dist/services/offscreen/OffscreenExecutionService.d.mts +1 -1
- package/dist/services/offscreen/OffscreenExecutionService.d.mts.map +1 -1
- package/dist/services/offscreen/OffscreenExecutionService.mjs +2 -1
- package/dist/services/offscreen/OffscreenExecutionService.mjs.map +1 -1
- package/dist/services/proxy/ProxyExecutionService.cjs +5 -1
- package/dist/services/proxy/ProxyExecutionService.cjs.map +1 -1
- package/dist/services/proxy/ProxyExecutionService.d.cts +1 -1
- package/dist/services/proxy/ProxyExecutionService.d.cts.map +1 -1
- package/dist/services/proxy/ProxyExecutionService.d.mts +1 -1
- package/dist/services/proxy/ProxyExecutionService.d.mts.map +1 -1
- package/dist/services/proxy/ProxyExecutionService.mjs +5 -1
- package/dist/services/proxy/ProxyExecutionService.mjs.map +1 -1
- package/dist/services/webview/WebViewExecutionService.cjs +20 -22
- package/dist/services/webview/WebViewExecutionService.cjs.map +1 -1
- package/dist/services/webview/WebViewExecutionService.d.cts +10 -7
- package/dist/services/webview/WebViewExecutionService.d.cts.map +1 -1
- package/dist/services/webview/WebViewExecutionService.d.mts +10 -7
- package/dist/services/webview/WebViewExecutionService.d.mts.map +1 -1
- package/dist/services/webview/WebViewExecutionService.mjs +20 -22
- package/dist/services/webview/WebViewExecutionService.mjs.map +1 -1
- package/dist/services/webview/WebViewMessageStream.cjs +14 -22
- package/dist/services/webview/WebViewMessageStream.cjs.map +1 -1
- package/dist/services/webview/WebViewMessageStream.d.cts +3 -3
- package/dist/services/webview/WebViewMessageStream.d.cts.map +1 -1
- package/dist/services/webview/WebViewMessageStream.d.mts +3 -3
- package/dist/services/webview/WebViewMessageStream.d.mts.map +1 -1
- package/dist/services/webview/WebViewMessageStream.mjs +15 -23
- package/dist/services/webview/WebViewMessageStream.mjs.map +1 -1
- package/dist/services/webworker/WebWorkerExecutionService.cjs +8 -1
- package/dist/services/webworker/WebWorkerExecutionService.cjs.map +1 -1
- package/dist/services/webworker/WebWorkerExecutionService.d.cts +1 -1
- package/dist/services/webworker/WebWorkerExecutionService.d.cts.map +1 -1
- package/dist/services/webworker/WebWorkerExecutionService.d.mts +1 -1
- package/dist/services/webworker/WebWorkerExecutionService.d.mts.map +1 -1
- package/dist/services/webworker/WebWorkerExecutionService.mjs +8 -1
- package/dist/services/webworker/WebWorkerExecutionService.mjs.map +1 -1
- package/dist/snaps/RequestQueue.cjs.map +1 -1
- package/dist/snaps/RequestQueue.d.cts.map +1 -1
- package/dist/snaps/RequestQueue.d.mts.map +1 -1
- package/dist/snaps/RequestQueue.mjs.map +1 -1
- package/dist/snaps/SnapController.cjs +15 -14
- package/dist/snaps/SnapController.cjs.map +1 -1
- package/dist/snaps/SnapController.d.cts +10 -10
- package/dist/snaps/SnapController.d.cts.map +1 -1
- package/dist/snaps/SnapController.d.mts +10 -10
- package/dist/snaps/SnapController.d.mts.map +1 -1
- package/dist/snaps/SnapController.mjs +15 -18
- package/dist/snaps/SnapController.mjs.map +1 -1
- package/dist/snaps/Timer.cjs +3 -0
- package/dist/snaps/Timer.cjs.map +1 -1
- package/dist/snaps/Timer.d.cts.map +1 -1
- package/dist/snaps/Timer.d.mts.map +1 -1
- package/dist/snaps/Timer.mjs +3 -0
- package/dist/snaps/Timer.mjs.map +1 -1
- package/dist/snaps/location/http.cjs +6 -0
- package/dist/snaps/location/http.cjs.map +1 -1
- package/dist/snaps/location/http.d.cts +2 -2
- package/dist/snaps/location/http.d.cts.map +1 -1
- package/dist/snaps/location/http.d.mts +2 -2
- package/dist/snaps/location/http.d.mts.map +1 -1
- package/dist/snaps/location/http.mjs +6 -0
- package/dist/snaps/location/http.mjs.map +1 -1
- package/dist/snaps/location/location.cjs.map +1 -1
- package/dist/snaps/location/location.d.cts +2 -2
- package/dist/snaps/location/location.d.cts.map +1 -1
- package/dist/snaps/location/location.d.mts +2 -2
- package/dist/snaps/location/location.d.mts.map +1 -1
- package/dist/snaps/location/location.mjs.map +1 -1
- package/dist/snaps/location/npm.cjs +1 -0
- package/dist/snaps/location/npm.cjs.map +1 -1
- package/dist/snaps/location/npm.d.cts +5 -5
- package/dist/snaps/location/npm.d.cts.map +1 -1
- package/dist/snaps/location/npm.d.mts +5 -5
- package/dist/snaps/location/npm.d.mts.map +1 -1
- package/dist/snaps/location/npm.mjs +1 -0
- package/dist/snaps/location/npm.mjs.map +1 -1
- package/dist/snaps/registry/json.cjs.map +1 -1
- package/dist/snaps/registry/json.mjs.map +1 -1
- package/dist/snaps/registry/registry.cjs.map +1 -1
- package/dist/snaps/registry/registry.d.cts +0 -1
- package/dist/snaps/registry/registry.d.cts.map +1 -1
- package/dist/snaps/registry/registry.d.mts +0 -1
- package/dist/snaps/registry/registry.d.mts.map +1 -1
- package/dist/snaps/registry/registry.mjs.map +1 -1
- package/dist/types/controllers.cjs +0 -1
- package/dist/types/controllers.cjs.map +1 -1
- package/dist/types/controllers.d.cts +1 -3
- package/dist/types/controllers.d.cts.map +1 -1
- package/dist/types/controllers.d.mts +1 -3
- package/dist/types/controllers.d.mts.map +1 -1
- package/dist/types/controllers.mjs +0 -1
- package/dist/types/controllers.mjs.map +1 -1
- package/dist/types/index.cjs +0 -16
- package/dist/types/index.cjs.map +1 -1
- package/dist/types/index.d.cts +2 -2
- package/dist/types/index.d.cts.map +1 -1
- package/dist/types/index.d.mts +2 -2
- package/dist/types/index.d.mts.map +1 -1
- package/dist/types/index.mjs +1 -2
- package/dist/types/index.mjs.map +1 -1
- package/package.json +17 -31
- package/react-native.d.ts +0 -2
- package/react-native.js +0 -2
|
@@ -10,9 +10,6 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
10
10
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
11
11
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
12
12
|
};
|
|
13
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
-
};
|
|
16
13
|
var _SnapController_instances, _SnapController_closeAllConnections, _SnapController_dynamicPermissions, _SnapController_environmentEndowmentPermissions, _SnapController_excludedPermissions, _SnapController_featureFlags, _SnapController_fetchFunction, _SnapController_idleTimeCheckInterval, _SnapController_maxIdleTime, _SnapController_encryptor, _SnapController_getMnemonic, _SnapController_getFeatureFlags, _SnapController_clientCryptography, _SnapController_detectSnapLocation, _SnapController_snapsRuntimeData, _SnapController_rollbackSnapshots, _SnapController_timeoutForLastRequestStatus, _SnapController_statusMachine, _SnapController_preinstalledSnaps, _SnapController_initializeStateMachine, _SnapController_registerMessageHandlers, _SnapController_handlePreinstalledSnaps, _SnapController_pollForLastRequestStatus, _SnapController_blockSnap, _SnapController_unblockSnap, _SnapController_assertIsInstallAllowed, _SnapController_assertCanInstallSnaps, _SnapController_assertCanUsePlatform, _SnapController_stopSnapsLastRequestPastMax, _SnapController_transition, _SnapController_terminateSnap, _SnapController_getSnapEncryptionKey, _SnapController_hasCachedEncryptionKey, _SnapController_decryptSnapState, _SnapController_encryptSnapState, _SnapController_getStateToPersist, _SnapController_persistSnapState, _SnapController_handleInitialConnections, _SnapController_addSnapToSubject, _SnapController_removeSnapFromSubjects, _SnapController_revokeAllSnapPermissions, _SnapController_createApproval, _SnapController_updateApproval, _SnapController_resolveAllowlistVersion, _SnapController_add, _SnapController_startSnap, _SnapController_getEndowments, _SnapController_set, _SnapController_validateSnapPermissions, _SnapController_validatePlatformVersion, _SnapController_getExecutionTimeout, _SnapController_getRpcRequestHandler, _SnapController_createInterface, _SnapController_assertInterfaceExists, _SnapController_transformSnapRpcRequestResult, _SnapController_transformOnAssetsLookupResult, _SnapController_transformOnAssetsConversionResult, _SnapController_assertSnapRpcRequestResult, _SnapController_recordSnapRpcRequestStart, _SnapController_recordSnapRpcRequestFinish, _SnapController_getRollbackSnapshot, _SnapController_createRollbackSnapshot, _SnapController_rollbackSnap, _SnapController_rollbackSnaps, _SnapController_getRuntime, _SnapController_getRuntimeExpect, _SnapController_setupRuntime, _SnapController_calculatePermissionsChange, _SnapController_isSubjectConnectedToSnap, _SnapController_calculateConnectionsChange, _SnapController_updatePermissions, _SnapController_isValidUpdate, _SnapController_callLifecycleHook, _SnapController_handleLock;
|
|
17
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
15
|
exports.SnapController = exports.SNAP_APPROVAL_RESULT = exports.SNAP_APPROVAL_UPDATE = exports.SNAP_APPROVAL_INSTALL = exports.controllerName = void 0;
|
|
@@ -26,16 +23,16 @@ const utils_1 = require("@metamask/utils");
|
|
|
26
23
|
const fsm_1 = require("@xstate/fsm");
|
|
27
24
|
const async_mutex_1 = require("async-mutex");
|
|
28
25
|
const nanoid_1 = require("nanoid");
|
|
29
|
-
const semver_1 =
|
|
30
|
-
const fsm_2 = require("../fsm.cjs");
|
|
31
|
-
const logging_1 = require("../logging.cjs");
|
|
32
|
-
const utils_2 = require("../utils.cjs");
|
|
26
|
+
const semver_1 = require("semver");
|
|
33
27
|
const constants_1 = require("./constants.cjs");
|
|
34
28
|
const location_1 = require("./location/index.cjs");
|
|
35
29
|
const registry_1 = require("./registry/index.cjs");
|
|
36
30
|
const RequestQueue_1 = require("./RequestQueue.cjs");
|
|
37
31
|
const selectors_1 = require("./selectors.cjs");
|
|
38
32
|
const Timer_1 = require("./Timer.cjs");
|
|
33
|
+
const fsm_2 = require("../fsm.cjs");
|
|
34
|
+
const logging_1 = require("../logging.cjs");
|
|
35
|
+
const utils_2 = require("../utils.cjs");
|
|
39
36
|
exports.controllerName = 'SnapController';
|
|
40
37
|
// TODO: Figure out how to name these
|
|
41
38
|
exports.SNAP_APPROVAL_INSTALL = 'wallet_installSnap';
|
|
@@ -66,7 +63,6 @@ function truncateSnap(snap) {
|
|
|
66
63
|
}
|
|
67
64
|
return serialized;
|
|
68
65
|
}, {});
|
|
69
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
|
|
70
66
|
return truncatedSnap;
|
|
71
67
|
}
|
|
72
68
|
/*
|
|
@@ -200,7 +196,10 @@ class SnapController extends base_controller_1.BaseController {
|
|
|
200
196
|
return __classPrivateFieldGet(this, _SnapController_instances, "m", _SnapController_unblockSnap).call(this, snapId);
|
|
201
197
|
}));
|
|
202
198
|
}
|
|
203
|
-
_onUnhandledSnapError(snapId,
|
|
199
|
+
_onUnhandledSnapError(snapId, error) {
|
|
200
|
+
// Log the error that caused the crash
|
|
201
|
+
// so it gets raised to the developer for debugging purposes.
|
|
202
|
+
(0, snaps_utils_1.logError)(`Unhandled error from "${snapId}":`, error);
|
|
204
203
|
this.stopSnap(snapId, snaps_utils_1.SnapStatusEvents.Crash).catch((stopSnapError) => {
|
|
205
204
|
// TODO: Decide how to handle errors.
|
|
206
205
|
(0, snaps_utils_1.logError)(stopSnapError);
|
|
@@ -233,7 +232,7 @@ class SnapController extends base_controller_1.BaseController {
|
|
|
233
232
|
async startSnap(snapId) {
|
|
234
233
|
__classPrivateFieldGet(this, _SnapController_instances, "m", _SnapController_assertCanUsePlatform).call(this);
|
|
235
234
|
const snap = this.state.snaps[snapId];
|
|
236
|
-
if (snap.enabled
|
|
235
|
+
if (!snap.enabled) {
|
|
237
236
|
throw new Error(`Snap "${snapId}" is disabled.`);
|
|
238
237
|
}
|
|
239
238
|
await __classPrivateFieldGet(this, _SnapController_instances, "m", _SnapController_startSnap).call(this, {
|
|
@@ -725,6 +724,9 @@ class SnapController extends base_controller_1.BaseController {
|
|
|
725
724
|
* @param versionRange - The semver range of the snap to install.
|
|
726
725
|
* @returns The resulting snap object, or an error if something went wrong.
|
|
727
726
|
*/
|
|
727
|
+
// TODO: Either fix this lint violation or explain why it's necessary to
|
|
728
|
+
// ignore.
|
|
729
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
728
730
|
async processRequestedSnap(origin, snapId, location, versionRange) {
|
|
729
731
|
const existingSnap = this.getTruncated(snapId);
|
|
730
732
|
// For devX we always re-install local snaps.
|
|
@@ -941,6 +943,7 @@ class SnapController extends base_controller_1.BaseController {
|
|
|
941
943
|
* @param pendingApproval - Pending approval to update.
|
|
942
944
|
* @returns The snap's approvedPermissions.
|
|
943
945
|
*/
|
|
946
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
944
947
|
async authorize(snapId, pendingApproval) {
|
|
945
948
|
(0, logging_1.log)(`Authorizing snap: ${snapId}`);
|
|
946
949
|
const snapsState = this.state.snaps;
|
|
@@ -1579,8 +1582,6 @@ async function _SnapController_getEndowments(snapId) {
|
|
|
1579
1582
|
...new Set([...snaps_utils_1.DEFAULT_ENDOWMENTS, ...allEndowments]),
|
|
1580
1583
|
];
|
|
1581
1584
|
if (dedupedEndowments.length <
|
|
1582
|
-
// This is a bug in TypeScript: https://github.com/microsoft/TypeScript/issues/48313
|
|
1583
|
-
// eslint-disable-next-line @typescript-eslint/restrict-plus-operands
|
|
1584
1585
|
snaps_utils_1.DEFAULT_ENDOWMENTS.length + allEndowments.length) {
|
|
1585
1586
|
(0, snaps_utils_1.logError)(`Duplicate endowments found for ${snapId}. Default endowments should not be requested.`, allEndowments);
|
|
1586
1587
|
}
|
|
@@ -1675,7 +1676,7 @@ async function _SnapController_getEndowments(snapId) {
|
|
|
1675
1676
|
if (platformVersion === undefined) {
|
|
1676
1677
|
return;
|
|
1677
1678
|
}
|
|
1678
|
-
if (semver_1.
|
|
1679
|
+
if ((0, semver_1.gt)(platformVersion, (0, snaps_utils_1.getPlatformVersion)())) {
|
|
1679
1680
|
const message = `The Snap "${snapId}" requires platform version "${platformVersion}" which is greater than the current platform version "${(0, snaps_utils_1.getPlatformVersion)()}".`;
|
|
1680
1681
|
if (__classPrivateFieldGet(this, _SnapController_featureFlags, "f").rejectInvalidPlatformVersion) {
|
|
1681
1682
|
throw new Error(message);
|
|
@@ -1695,7 +1696,7 @@ async function _SnapController_getEndowments(snapId) {
|
|
|
1695
1696
|
// because otherwise we would lose context on the correct startPromise.
|
|
1696
1697
|
const startPromises = new Map();
|
|
1697
1698
|
const rpcHandler = async ({ origin, handler: handlerType, request, timeout, }) => {
|
|
1698
|
-
if (this.state.snaps[snapId].enabled
|
|
1699
|
+
if (!this.state.snaps[snapId].enabled) {
|
|
1699
1700
|
throw new Error(`Snap "${snapId}" is disabled.`);
|
|
1700
1701
|
}
|
|
1701
1702
|
if (this.state.snaps[snapId].status === snaps_utils_1.SnapStatus.Installing) {
|