@metamask/snaps-controllers 9.16.0 → 9.18.0
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 +24 -1
- package/dist/cronjob/CronjobController.cjs +203 -100
- package/dist/cronjob/CronjobController.cjs.map +1 -1
- package/dist/cronjob/CronjobController.d.cts +46 -35
- package/dist/cronjob/CronjobController.d.cts.map +1 -1
- package/dist/cronjob/CronjobController.d.mts +46 -35
- package/dist/cronjob/CronjobController.d.mts.map +1 -1
- package/dist/cronjob/CronjobController.mjs +205 -102
- package/dist/cronjob/CronjobController.mjs.map +1 -1
- package/dist/snaps/SnapController.cjs +136 -19
- package/dist/snaps/SnapController.cjs.map +1 -1
- package/dist/snaps/SnapController.d.cts +18 -1
- package/dist/snaps/SnapController.d.cts.map +1 -1
- package/dist/snaps/SnapController.d.mts +18 -1
- package/dist/snaps/SnapController.d.mts.map +1 -1
- package/dist/snaps/SnapController.mjs +138 -21
- package/dist/snaps/SnapController.mjs.map +1 -1
- package/dist/utils.d.cts +1 -1
- package/dist/utils.d.mts +1 -1
- package/package.json +21 -18
|
@@ -13,7 +13,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
13
13
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
14
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
15
|
};
|
|
16
|
-
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_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_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;
|
|
16
|
+
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
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
18
|
exports.SnapController = exports.SNAP_APPROVAL_RESULT = exports.SNAP_APPROVAL_UPDATE = exports.SNAP_APPROVAL_INSTALL = exports.controllerName = void 0;
|
|
19
19
|
const base_controller_1 = require("@metamask/base-controller");
|
|
@@ -24,6 +24,7 @@ const snaps_sdk_1 = require("@metamask/snaps-sdk");
|
|
|
24
24
|
const snaps_utils_1 = require("@metamask/snaps-utils");
|
|
25
25
|
const utils_1 = require("@metamask/utils");
|
|
26
26
|
const fsm_1 = require("@xstate/fsm");
|
|
27
|
+
const async_mutex_1 = require("async-mutex");
|
|
27
28
|
const nanoid_1 = require("nanoid");
|
|
28
29
|
const semver_1 = __importDefault(require("semver"));
|
|
29
30
|
const fsm_2 = require("../fsm.cjs");
|
|
@@ -169,6 +170,7 @@ class SnapController extends base_controller_1.BaseController {
|
|
|
169
170
|
(0, snaps_utils_1.logError)(`Error when calling \`onUpdate\` lifecycle hook for snap "${id}": ${(0, snaps_sdk_1.getErrorMessage)(error)}`);
|
|
170
171
|
});
|
|
171
172
|
});
|
|
173
|
+
this.messagingSystem.subscribe('KeyringController:lock', __classPrivateFieldGet(this, _SnapController_instances, "m", _SnapController_handleLock).bind(this));
|
|
172
174
|
__classPrivateFieldGet(this, _SnapController_instances, "m", _SnapController_initializeStateMachine).call(this);
|
|
173
175
|
__classPrivateFieldGet(this, _SnapController_instances, "m", _SnapController_registerMessageHandlers).call(this);
|
|
174
176
|
if (__classPrivateFieldGet(this, _SnapController_preinstalledSnaps, "f")) {
|
|
@@ -398,17 +400,18 @@ class SnapController extends base_controller_1.BaseController {
|
|
|
398
400
|
* @param encrypted - A flag to indicate whether to use encrypted storage or not.
|
|
399
401
|
*/
|
|
400
402
|
async updateSnapState(snapId, newSnapState, encrypted) {
|
|
403
|
+
const runtime = __classPrivateFieldGet(this, _SnapController_instances, "m", _SnapController_getRuntimeExpect).call(this, snapId);
|
|
401
404
|
if (encrypted) {
|
|
402
|
-
|
|
403
|
-
this.update((state) => {
|
|
404
|
-
state.snapStates[snapId] = encryptedState;
|
|
405
|
-
});
|
|
405
|
+
runtime.state = newSnapState;
|
|
406
406
|
}
|
|
407
407
|
else {
|
|
408
|
-
|
|
409
|
-
state.unencryptedSnapStates[snapId] = JSON.stringify(newSnapState);
|
|
410
|
-
});
|
|
408
|
+
runtime.unencryptedState = newSnapState;
|
|
411
409
|
}
|
|
410
|
+
// This is intentionally run asynchronously to avoid blocking the main
|
|
411
|
+
// thread.
|
|
412
|
+
__classPrivateFieldGet(this, _SnapController_instances, "m", _SnapController_persistSnapState).call(this, snapId, newSnapState, encrypted).catch((error) => {
|
|
413
|
+
(0, snaps_utils_1.logError)(error);
|
|
414
|
+
});
|
|
412
415
|
}
|
|
413
416
|
/**
|
|
414
417
|
* Clears the state of the snap with the given id.
|
|
@@ -418,13 +421,17 @@ class SnapController extends base_controller_1.BaseController {
|
|
|
418
421
|
* @param encrypted - A flag to indicate whether to use encrypted storage or not.
|
|
419
422
|
*/
|
|
420
423
|
clearSnapState(snapId, encrypted) {
|
|
421
|
-
this.
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
424
|
+
const runtime = __classPrivateFieldGet(this, _SnapController_instances, "m", _SnapController_getRuntimeExpect).call(this, snapId);
|
|
425
|
+
if (encrypted) {
|
|
426
|
+
runtime.state = null;
|
|
427
|
+
}
|
|
428
|
+
else {
|
|
429
|
+
runtime.unencryptedState = null;
|
|
430
|
+
}
|
|
431
|
+
// This is intentionally run asynchronously to avoid blocking the main
|
|
432
|
+
// thread.
|
|
433
|
+
__classPrivateFieldGet(this, _SnapController_instances, "m", _SnapController_persistSnapState).call(this, snapId, null, encrypted).catch((error) => {
|
|
434
|
+
(0, snaps_utils_1.logError)(error);
|
|
428
435
|
});
|
|
429
436
|
}
|
|
430
437
|
/**
|
|
@@ -436,6 +443,11 @@ class SnapController extends base_controller_1.BaseController {
|
|
|
436
443
|
* @returns The requested snap state or null if no state exists.
|
|
437
444
|
*/
|
|
438
445
|
async getSnapState(snapId, encrypted) {
|
|
446
|
+
const runtime = __classPrivateFieldGet(this, _SnapController_instances, "m", _SnapController_getRuntimeExpect).call(this, snapId);
|
|
447
|
+
const cachedState = encrypted ? runtime.state : runtime.unencryptedState;
|
|
448
|
+
if (cachedState !== undefined) {
|
|
449
|
+
return cachedState;
|
|
450
|
+
}
|
|
439
451
|
const state = encrypted
|
|
440
452
|
? this.state.snapStates[snapId]
|
|
441
453
|
: this.state.unencryptedSnapStates[snapId];
|
|
@@ -443,10 +455,14 @@ class SnapController extends base_controller_1.BaseController {
|
|
|
443
455
|
return null;
|
|
444
456
|
}
|
|
445
457
|
if (!encrypted) {
|
|
446
|
-
// For performance reasons, we do not validate that the state is JSON,
|
|
447
|
-
|
|
458
|
+
// For performance reasons, we do not validate that the state is JSON,
|
|
459
|
+
// since we control serialization.
|
|
460
|
+
const json = JSON.parse(state);
|
|
461
|
+
runtime.unencryptedState = json;
|
|
462
|
+
return json;
|
|
448
463
|
}
|
|
449
464
|
const decrypted = await __classPrivateFieldGet(this, _SnapController_instances, "m", _SnapController_decryptSnapState).call(this, snapId, state);
|
|
465
|
+
runtime.state = decrypted;
|
|
450
466
|
return decrypted;
|
|
451
467
|
}
|
|
452
468
|
/**
|
|
@@ -1331,6 +1347,55 @@ async function _SnapController_encryptSnapState(snapId, state) {
|
|
|
1331
1347
|
const encryptedState = await __classPrivateFieldGet(this, _SnapController_encryptor, "f").encryptWithKey(key, state);
|
|
1332
1348
|
encryptedState.salt = salt;
|
|
1333
1349
|
return JSON.stringify(encryptedState);
|
|
1350
|
+
}, _SnapController_getStateToPersist =
|
|
1351
|
+
/**
|
|
1352
|
+
* Get the new Snap state to persist based on the given state and encryption
|
|
1353
|
+
* flag.
|
|
1354
|
+
*
|
|
1355
|
+
* - If the state is null, return null.
|
|
1356
|
+
* - If the state should be encrypted, return the encrypted state.
|
|
1357
|
+
* - Otherwise, if the state should not be encrypted, return the JSON-
|
|
1358
|
+
* stringified state.
|
|
1359
|
+
*
|
|
1360
|
+
* @param snapId - The Snap ID.
|
|
1361
|
+
* @param state - The state to persist.
|
|
1362
|
+
* @param encrypted - A flag to indicate whether to use encrypted storage or
|
|
1363
|
+
* not.
|
|
1364
|
+
* @returns The state to persist.
|
|
1365
|
+
*/
|
|
1366
|
+
async function _SnapController_getStateToPersist(snapId, state, encrypted) {
|
|
1367
|
+
if (state === null) {
|
|
1368
|
+
return null;
|
|
1369
|
+
}
|
|
1370
|
+
if (encrypted) {
|
|
1371
|
+
return await __classPrivateFieldGet(this, _SnapController_instances, "m", _SnapController_encryptSnapState).call(this, snapId, state);
|
|
1372
|
+
}
|
|
1373
|
+
return JSON.stringify(state);
|
|
1374
|
+
}, _SnapController_persistSnapState =
|
|
1375
|
+
/**
|
|
1376
|
+
* Persist the state of a Snap.
|
|
1377
|
+
*
|
|
1378
|
+
* This is run with a mutex to ensure that only one state update per Snap is
|
|
1379
|
+
* processed at a time, avoiding possible race conditions.
|
|
1380
|
+
*
|
|
1381
|
+
* @param snapId - The Snap ID.
|
|
1382
|
+
* @param newSnapState - The new state of the Snap.
|
|
1383
|
+
* @param encrypted - A flag to indicate whether to use encrypted storage or
|
|
1384
|
+
* not.
|
|
1385
|
+
*/
|
|
1386
|
+
async function _SnapController_persistSnapState(snapId, newSnapState, encrypted) {
|
|
1387
|
+
const runtime = __classPrivateFieldGet(this, _SnapController_instances, "m", _SnapController_getRuntimeExpect).call(this, snapId);
|
|
1388
|
+
await runtime.stateMutex.runExclusive(async () => {
|
|
1389
|
+
const newState = await __classPrivateFieldGet(this, _SnapController_instances, "m", _SnapController_getStateToPersist).call(this, snapId, newSnapState, encrypted);
|
|
1390
|
+
if (encrypted) {
|
|
1391
|
+
return this.update((state) => {
|
|
1392
|
+
state.snapStates[snapId] = newState;
|
|
1393
|
+
});
|
|
1394
|
+
}
|
|
1395
|
+
return this.update((state) => {
|
|
1396
|
+
state.unencryptedSnapStates[snapId] = newState;
|
|
1397
|
+
});
|
|
1398
|
+
});
|
|
1334
1399
|
}, _SnapController_handleInitialConnections = function _SnapController_handleInitialConnections(snapId, previousInitialConnections, initialConnections) {
|
|
1335
1400
|
if (previousInitialConnections) {
|
|
1336
1401
|
const revokedInitialConnections = (0, utils_2.setDiff)(previousInitialConnections, initialConnections);
|
|
@@ -1658,7 +1723,7 @@ async function _SnapController_getEndowments(snapId) {
|
|
|
1658
1723
|
throw new Error(`${snapId} failed to respond to the request in time.`);
|
|
1659
1724
|
}
|
|
1660
1725
|
await __classPrivateFieldGet(this, _SnapController_instances, "m", _SnapController_assertSnapRpcRequestResult).call(this, snapId, handlerType, result);
|
|
1661
|
-
const transformedResult = await __classPrivateFieldGet(this, _SnapController_instances, "m", _SnapController_transformSnapRpcRequestResult).call(this, snapId, handlerType, result);
|
|
1726
|
+
const transformedResult = await __classPrivateFieldGet(this, _SnapController_instances, "m", _SnapController_transformSnapRpcRequestResult).call(this, snapId, handlerType, request, result);
|
|
1662
1727
|
__classPrivateFieldGet(this, _SnapController_instances, "m", _SnapController_recordSnapRpcRequestFinish).call(this, snapId, request.id);
|
|
1663
1728
|
return transformedResult;
|
|
1664
1729
|
}
|
|
@@ -1694,10 +1759,11 @@ async function _SnapController_createInterface(snapId, content, contentType) {
|
|
|
1694
1759
|
*
|
|
1695
1760
|
* @param snapId - The snap ID of the snap that produced the result.
|
|
1696
1761
|
* @param handlerType - The handler type that produced the result.
|
|
1762
|
+
* @param request - The request that returned the result.
|
|
1697
1763
|
* @param result - The result.
|
|
1698
1764
|
* @returns The transformed result if applicable, otherwise the original result.
|
|
1699
1765
|
*/
|
|
1700
|
-
async function _SnapController_transformSnapRpcRequestResult(snapId, handlerType, result) {
|
|
1766
|
+
async function _SnapController_transformSnapRpcRequestResult(snapId, handlerType, request, result) {
|
|
1701
1767
|
switch (handlerType) {
|
|
1702
1768
|
case snaps_utils_1.HandlerType.OnTransaction:
|
|
1703
1769
|
case snaps_utils_1.HandlerType.OnSignature:
|
|
@@ -1713,9 +1779,47 @@ async function _SnapController_transformSnapRpcRequestResult(snapId, handlerType
|
|
|
1713
1779
|
}
|
|
1714
1780
|
return result;
|
|
1715
1781
|
}
|
|
1782
|
+
case snaps_utils_1.HandlerType.OnAssetsLookup:
|
|
1783
|
+
// We can cast since the request and result have already been validated.
|
|
1784
|
+
return __classPrivateFieldGet(this, _SnapController_instances, "m", _SnapController_transformOnAssetsLookupResult).call(this, snapId, request, result);
|
|
1785
|
+
case snaps_utils_1.HandlerType.OnAssetsConversion:
|
|
1786
|
+
// We can cast since the request and result have already been validated.
|
|
1787
|
+
return __classPrivateFieldGet(this, _SnapController_instances, "m", _SnapController_transformOnAssetsConversionResult).call(this, request, result);
|
|
1716
1788
|
default:
|
|
1717
1789
|
return result;
|
|
1718
1790
|
}
|
|
1791
|
+
}, _SnapController_transformOnAssetsLookupResult = function _SnapController_transformOnAssetsLookupResult(snapId, { params: requestedParams }, { assets }) {
|
|
1792
|
+
const permissions = this.messagingSystem.call('PermissionController:getPermissions', snapId);
|
|
1793
|
+
// We know the permissions are guaranteed to be set here.
|
|
1794
|
+
(0, utils_1.assert)(permissions);
|
|
1795
|
+
const permission = permissions[snaps_rpc_methods_1.SnapEndowments.Assets];
|
|
1796
|
+
const scopes = (0, snaps_rpc_methods_1.getChainIdsCaveat)(permission);
|
|
1797
|
+
(0, utils_1.assert)(scopes);
|
|
1798
|
+
const { assets: requestedAssets } = requestedParams;
|
|
1799
|
+
const filteredAssets = Object.keys(assets).reduce((accumulator, assetType) => {
|
|
1800
|
+
const castAssetType = assetType;
|
|
1801
|
+
const isValid = scopes.some((scope) => castAssetType.startsWith(scope)) &&
|
|
1802
|
+
requestedAssets.includes(castAssetType);
|
|
1803
|
+
// Filter out unrequested assets and assets for scopes the Snap hasn't registered for.
|
|
1804
|
+
if (isValid) {
|
|
1805
|
+
accumulator[castAssetType] = assets[castAssetType];
|
|
1806
|
+
}
|
|
1807
|
+
return accumulator;
|
|
1808
|
+
}, {});
|
|
1809
|
+
return { assets: filteredAssets };
|
|
1810
|
+
}, _SnapController_transformOnAssetsConversionResult = function _SnapController_transformOnAssetsConversionResult({ params: requestedParams }, { conversionRates }) {
|
|
1811
|
+
const { conversions: requestedConversions } = requestedParams;
|
|
1812
|
+
const filteredConversionRates = requestedConversions.reduce((accumulator, conversion) => {
|
|
1813
|
+
var _a;
|
|
1814
|
+
const rate = conversionRates[conversion.from]?.[conversion.to];
|
|
1815
|
+
// Only include rates that were actually requested.
|
|
1816
|
+
if (rate) {
|
|
1817
|
+
accumulator[_a = conversion.from] ?? (accumulator[_a] = {});
|
|
1818
|
+
accumulator[conversion.from][conversion.to] = rate;
|
|
1819
|
+
}
|
|
1820
|
+
return accumulator;
|
|
1821
|
+
}, {});
|
|
1822
|
+
return { conversionRates: filteredConversionRates };
|
|
1719
1823
|
}, _SnapController_assertSnapRpcRequestResult =
|
|
1720
1824
|
/**
|
|
1721
1825
|
* Assert that the returned result of a Snap RPC call is the expected shape.
|
|
@@ -1757,6 +1861,12 @@ async function _SnapController_assertSnapRpcRequestResult(snapId, handlerType, r
|
|
|
1757
1861
|
case snaps_utils_1.HandlerType.OnNameLookup:
|
|
1758
1862
|
(0, utils_1.assertStruct)(result, snaps_utils_1.OnNameLookupResponseStruct);
|
|
1759
1863
|
break;
|
|
1864
|
+
case snaps_utils_1.HandlerType.OnAssetsLookup:
|
|
1865
|
+
(0, utils_1.assertStruct)(result, snaps_sdk_1.OnAssetsLookupResponseStruct);
|
|
1866
|
+
break;
|
|
1867
|
+
case snaps_utils_1.HandlerType.OnAssetsConversion:
|
|
1868
|
+
(0, utils_1.assertStruct)(result, snaps_sdk_1.OnAssetsConversionResponseStruct);
|
|
1869
|
+
break;
|
|
1760
1870
|
default:
|
|
1761
1871
|
break;
|
|
1762
1872
|
}
|
|
@@ -1864,6 +1974,7 @@ async function _SnapController_rollbackSnaps(snapIds) {
|
|
|
1864
1974
|
pendingOutboundRequests: 0,
|
|
1865
1975
|
interpreter,
|
|
1866
1976
|
stopping: false,
|
|
1977
|
+
stateMutex: new async_mutex_1.Mutex(),
|
|
1867
1978
|
});
|
|
1868
1979
|
}, _SnapController_calculatePermissionsChange = function _SnapController_calculatePermissionsChange(snapId, desiredPermissionsSet) {
|
|
1869
1980
|
const oldPermissions = this.messagingSystem.call('PermissionController:getPermissions', snapId) ?? {};
|
|
@@ -1945,5 +2056,11 @@ async function _SnapController_callLifecycleHook(origin, snapId, handler) {
|
|
|
1945
2056
|
method: handler,
|
|
1946
2057
|
},
|
|
1947
2058
|
});
|
|
2059
|
+
}, _SnapController_handleLock = function _SnapController_handleLock() {
|
|
2060
|
+
for (const runtime of __classPrivateFieldGet(this, _SnapController_snapsRuntimeData, "f").values()) {
|
|
2061
|
+
runtime.encryptionKey = null;
|
|
2062
|
+
runtime.encryptionSalt = null;
|
|
2063
|
+
runtime.state = undefined;
|
|
2064
|
+
}
|
|
1948
2065
|
};
|
|
1949
2066
|
//# sourceMappingURL=SnapController.cjs.map
|