A Metamask fork with Infura removed and default networks editable
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
ciphermask/app/scripts/controllers/permissions/flask/snap-permissions.js

37 lines
1.2 KiB

import { endowmentPermissionBuilders } from '@metamask/snap-controllers';
import {
restrictedMethodPermissionBuilders,
selectHooks,
} from '@metamask/rpc-methods';
import { ExcludedSnapPermissions } from '../../../../../shared/constants/permissions';
/**
* @returns {Record<string, Record<string, unknown>>} All endowment permission
* specifications.
*/
export const buildSnapEndowmentSpecifications = () =>
Object.values(endowmentPermissionBuilders).reduce(
(allSpecifications, { targetKey, specificationBuilder }) => {
allSpecifications[targetKey] = specificationBuilder();
return allSpecifications;
},
{},
);
/**
* @param {Record<string, Function>} hooks - The hooks for the Snap
* restricted method implementations.
*/
export function buildSnapRestrictedMethodSpecifications(hooks) {
return Object.values(restrictedMethodPermissionBuilders).reduce(
(specifications, { targetKey, specificationBuilder, methodHooks }) => {
if (!ExcludedSnapPermissions.has(targetKey)) {
specifications[targetKey] = specificationBuilder({
methodHooks: selectHooks(hooks, methodHooks),
});
}
return specifications;
},
{},
);
}