@metamask/snaps-controllers 0.33.1-flask.1 → 0.34.1-flask.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 +78 -65
- package/dist/cronjob/CronjobController.d.ts +3 -3
- package/dist/cronjob/CronjobController.js.map +1 -1
- package/dist/multichain/MultiChainController.js +1 -1
- package/dist/multichain/MultiChainController.js.map +1 -1
- package/dist/snaps/SnapController.d.ts +22 -22
- package/dist/snaps/SnapController.js +8 -22
- package/dist/snaps/SnapController.js.map +1 -1
- package/dist/snaps/endowments/cronjob.d.ts +2 -2
- package/dist/snaps/endowments/cronjob.js +2 -2
- package/dist/snaps/endowments/cronjob.js.map +1 -1
- package/dist/snaps/endowments/ethereum-provider.d.ts +2 -2
- package/dist/snaps/endowments/ethereum-provider.js +2 -2
- package/dist/snaps/endowments/ethereum-provider.js.map +1 -1
- package/dist/snaps/endowments/index.d.ts +16 -16
- package/dist/snaps/endowments/index.js +16 -16
- package/dist/snaps/endowments/index.js.map +1 -1
- package/dist/snaps/endowments/keyring.d.ts +3 -3
- package/dist/snaps/endowments/keyring.js +5 -4
- package/dist/snaps/endowments/keyring.js.map +1 -1
- package/dist/snaps/endowments/long-running.d.ts +2 -2
- package/dist/snaps/endowments/long-running.js +2 -2
- package/dist/snaps/endowments/long-running.js.map +1 -1
- package/dist/snaps/endowments/network-access.d.ts +2 -2
- package/dist/snaps/endowments/network-access.js +2 -2
- package/dist/snaps/endowments/network-access.js.map +1 -1
- package/dist/snaps/endowments/rpc.d.ts +3 -3
- package/dist/snaps/endowments/rpc.js +5 -4
- package/dist/snaps/endowments/rpc.js.map +1 -1
- package/dist/snaps/endowments/transaction-insight.d.ts +2 -2
- package/dist/snaps/endowments/transaction-insight.js +2 -2
- package/dist/snaps/endowments/transaction-insight.js.map +1 -1
- package/dist/snaps/endowments/web-assembly.d.ts +2 -2
- package/dist/snaps/endowments/web-assembly.js +2 -2
- package/dist/snaps/endowments/web-assembly.js.map +1 -1
- package/dist/snaps/index.d.ts +2 -0
- package/dist/snaps/index.js +2 -0
- package/dist/snaps/index.js.map +1 -1
- package/dist/snaps/location/npm.d.ts +20 -0
- package/dist/snaps/location/npm.js +30 -14
- package/dist/snaps/location/npm.js.map +1 -1
- package/dist/snaps/permissions.d.ts +16 -0
- package/dist/snaps/permissions.js +54 -0
- package/dist/snaps/permissions.js.map +1 -0
- package/dist/snaps/registry/registry.d.ts +3 -3
- package/dist/snaps/registry/registry.js.map +1 -1
- package/package.json +17 -15
|
@@ -10,7 +10,7 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
|
|
|
10
10
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
11
11
|
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
12
12
|
};
|
|
13
|
-
var _SnapController_instances, _SnapController_closeAllConnections, _SnapController_environmentEndowmentPermissions, _SnapController_excludedPermissions, _SnapController_featureFlags, _SnapController_fetchFunction, _SnapController_idleTimeCheckInterval, _SnapController_maxIdleTime, _SnapController_detectSnapLocation, _SnapController_rollbackSnapshots, _SnapController_timeoutForLastRequestStatus, _SnapController_statusMachine, _SnapController_initializeStateMachine, _SnapController_registerMessageHandlers, _SnapController_pollForLastRequestStatus, _SnapController_blockSnap, _SnapController_unblockSnap, _SnapController_assertIsInstallAllowed, _SnapController_stopSnapsLastRequestPastMax, _SnapController_transition, _SnapController_terminateSnap, _SnapController_removeSnapFromSubjects, _SnapController_createApproval, _SnapController_updateApproval, _SnapController_add, _SnapController_startSnap, _SnapController_getEndowments, _SnapController_set, _SnapController_fetchSnap,
|
|
13
|
+
var _SnapController_instances, _SnapController_closeAllConnections, _SnapController_environmentEndowmentPermissions, _SnapController_excludedPermissions, _SnapController_featureFlags, _SnapController_fetchFunction, _SnapController_idleTimeCheckInterval, _SnapController_maxIdleTime, _SnapController_detectSnapLocation, _SnapController_rollbackSnapshots, _SnapController_timeoutForLastRequestStatus, _SnapController_statusMachine, _SnapController_initializeStateMachine, _SnapController_registerMessageHandlers, _SnapController_pollForLastRequestStatus, _SnapController_blockSnap, _SnapController_unblockSnap, _SnapController_assertIsInstallAllowed, _SnapController_stopSnapsLastRequestPastMax, _SnapController_transition, _SnapController_terminateSnap, _SnapController_removeSnapFromSubjects, _SnapController_createApproval, _SnapController_updateApproval, _SnapController_add, _SnapController_startSnap, _SnapController_getEndowments, _SnapController_set, _SnapController_fetchSnap, _SnapController_validateSnapPermissions, _SnapController_getRpcRequestHandler, _SnapController_executeWithTimeout, _SnapController_recordSnapRpcRequestStart, _SnapController_recordSnapRpcRequestFinish, _SnapController_getRollbackSnapshot, _SnapController_createRollbackSnapshot, _SnapController_rollbackSnap, _SnapController_rollbackSnaps, _SnapController_getRuntime, _SnapController_getRuntimeExpect, _SnapController_setupRuntime, _SnapController_calculatePermissionsChange, _SnapController_isValidUpdate;
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.SnapController = exports.SNAP_APPROVAL_RESULT = exports.SNAP_APPROVAL_UPDATE = exports.SNAP_APPROVAL_INSTALL = exports.controllerName = void 0;
|
|
16
16
|
const base_controller_1 = require("@metamask/base-controller");
|
|
@@ -27,6 +27,7 @@ const utils_2 = require("../utils");
|
|
|
27
27
|
const endowments_1 = require("./endowments");
|
|
28
28
|
const rpc_1 = require("./endowments/rpc");
|
|
29
29
|
const location_1 = require("./location");
|
|
30
|
+
const permissions_1 = require("./permissions");
|
|
30
31
|
const registry_1 = require("./registry");
|
|
31
32
|
const RequestQueue_1 = require("./RequestQueue");
|
|
32
33
|
const Timer_1 = require("./Timer");
|
|
@@ -114,6 +115,9 @@ class SnapController extends base_controller_1.BaseControllerV2 {
|
|
|
114
115
|
...state,
|
|
115
116
|
snaps: Object.values(state?.snaps ?? {}).reduce((memo, snap) => {
|
|
116
117
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
118
|
+
// sourceCode is stripped out to prevent piping to MetaMask UI,
|
|
119
|
+
// it is stored in the runtime while we're running a snap and then
|
|
120
|
+
// persisted to state when needed.
|
|
117
121
|
const { sourceCode, ...rest } = snap;
|
|
118
122
|
memo[snap.id] = rest;
|
|
119
123
|
return memo;
|
|
@@ -723,7 +727,7 @@ class SnapController extends base_controller_1.BaseControllerV2 {
|
|
|
723
727
|
version: newVersion,
|
|
724
728
|
checksum: newSnap.manifest.result.source.shasum,
|
|
725
729
|
});
|
|
726
|
-
const processedPermissions =
|
|
730
|
+
const processedPermissions = (0, permissions_1.processSnapPermissions)(newSnap.manifest.result.initialPermissions);
|
|
727
731
|
__classPrivateFieldGet(this, _SnapController_instances, "m", _SnapController_validateSnapPermissions).call(this, processedPermissions);
|
|
728
732
|
const { newPermissions, unusedPermissions, approvedPermissions } = __classPrivateFieldGet(this, _SnapController_instances, "m", _SnapController_calculatePermissionsChange).call(this, snapId, processedPermissions);
|
|
729
733
|
__classPrivateFieldGet(this, _SnapController_instances, "m", _SnapController_updateApproval).call(this, pendingApproval.id, {
|
|
@@ -825,7 +829,7 @@ class SnapController extends base_controller_1.BaseControllerV2 {
|
|
|
825
829
|
const snap = snapsState[snapId];
|
|
826
830
|
const { initialPermissions } = snap;
|
|
827
831
|
try {
|
|
828
|
-
const processedPermissions =
|
|
832
|
+
const processedPermissions = (0, permissions_1.processSnapPermissions)(initialPermissions);
|
|
829
833
|
__classPrivateFieldGet(this, _SnapController_instances, "m", _SnapController_validateSnapPermissions).call(this, processedPermissions);
|
|
830
834
|
__classPrivateFieldGet(this, _SnapController_instances, "m", _SnapController_updateApproval).call(this, pendingApproval.id, {
|
|
831
835
|
loading: false,
|
|
@@ -1092,7 +1096,6 @@ async function _SnapController_add(args) {
|
|
|
1092
1096
|
runtime.installPromise = (async () => {
|
|
1093
1097
|
const fetchedSnap = await __classPrivateFieldGet(this, _SnapController_instances, "m", _SnapController_fetchSnap).call(this, snapId, location);
|
|
1094
1098
|
const manifest = fetchedSnap.manifest.result;
|
|
1095
|
-
(0, snaps_utils_1.assertIsSnapManifest)(manifest);
|
|
1096
1099
|
if (!(0, utils_1.satisfiesVersionRange)(manifest.version, versionRange)) {
|
|
1097
1100
|
throw new Error(`Version mismatch. Manifest for "${snapId}" specifies version "${manifest.version}" which doesn't satisfy requested version range "${versionRange}".`);
|
|
1098
1101
|
}
|
|
@@ -1248,7 +1251,7 @@ async function _SnapController_fetchSnap(snapId, location) {
|
|
|
1248
1251
|
if (svgIcon) {
|
|
1249
1252
|
files.push(svgIcon);
|
|
1250
1253
|
}
|
|
1251
|
-
(0, snaps_utils_1.
|
|
1254
|
+
(0, snaps_utils_1.validateFetchedSnap)({ manifest, sourceCode, svgIcon });
|
|
1252
1255
|
return { manifest, files, location };
|
|
1253
1256
|
}
|
|
1254
1257
|
catch (error) {
|
|
@@ -1257,23 +1260,6 @@ async function _SnapController_fetchSnap(snapId, location) {
|
|
|
1257
1260
|
const message = error instanceof Error ? error.message : error.toString();
|
|
1258
1261
|
throw new Error(`Failed to fetch Snap "${snapId}": ${message}.`);
|
|
1259
1262
|
}
|
|
1260
|
-
}, _SnapController_processSnapPermissions = function _SnapController_processSnapPermissions(initialPermissions) {
|
|
1261
|
-
return Object.fromEntries(Object.entries(initialPermissions).map(([initialPermission, value]) => {
|
|
1262
|
-
if ((0, utils_1.hasProperty)(rpc_methods_1.caveatMappers, initialPermission)) {
|
|
1263
|
-
return [initialPermission, rpc_methods_1.caveatMappers[initialPermission](value)];
|
|
1264
|
-
}
|
|
1265
|
-
else if ((0, utils_1.hasProperty)(endowments_1.endowmentCaveatMappers, initialPermission)) {
|
|
1266
|
-
return [
|
|
1267
|
-
initialPermission,
|
|
1268
|
-
endowments_1.endowmentCaveatMappers[initialPermission](value),
|
|
1269
|
-
];
|
|
1270
|
-
}
|
|
1271
|
-
// If we have no mapping, this may be a non-snap permission, return as-is
|
|
1272
|
-
return [
|
|
1273
|
-
initialPermission,
|
|
1274
|
-
value,
|
|
1275
|
-
];
|
|
1276
|
-
}));
|
|
1277
1263
|
}, _SnapController_validateSnapPermissions = function _SnapController_validateSnapPermissions(processedPermissions) {
|
|
1278
1264
|
const permissionKeys = Object.keys(processedPermissions);
|
|
1279
1265
|
const handlerPermissions = Object.values(endowments_1.handlerEndowments);
|