@metamask/snaps-rpc-methods
Version:
MetaMask Snaps JSON-RPC method implementations
1 lines • 2.61 kB
Source Map (JSON)
{"version":3,"file":"getSnaps.cjs","sourceRoot":"","sources":["../../src/permitted/getSnaps.ts"],"names":[],"mappings":";;;AAgBA;;;;;;;;;;;;;;;;;;;;GAoBG;AACU,QAAA,eAAe,GAAG;IAC7B,cAAc,EAAE,sBAAsB;IACtC,WAAW,EAAE,CAAC,kCAAkC,CAAC;CAOlD,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,KAAK,UAAU,sBAAsB,CACnC,GAAwC,EACxC,GAA2C,EAC3C,KAAc,EACd,GAA6B,EAC7B,MAAa,EACb,SAAmD;IAEnD,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,kCAAkC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5E,OAAO,GAAG,EAAE,CAAC;AACf,CAAC","sourcesContent":["import type {\n JsonRpcEngineEndCallback,\n MethodHandler,\n} from '@metamask/json-rpc-engine';\nimport type { Messenger } from '@metamask/messenger';\nimport type { GetSnapsResult } from '@metamask/snaps-sdk';\nimport type {\n JsonRpcParams,\n JsonRpcRequest,\n PendingJsonRpcResponse,\n} from '@metamask/utils';\n\nimport type { SnapControllerGetPermittedSnapsAction } from '../types';\n\nexport type GetSnapsMethodActions = SnapControllerGetPermittedSnapsAction;\n\n/**\n * Get permitted and installed Snaps for the requesting origin.\n *\n * @example\n * ```ts\n * const snaps = await snap.request({\n * method: 'wallet_getSnaps',\n * });\n * console.log(snaps);\n * // {\n * // 'npm:example-snap': {\n * // id: 'npm:example-snap',\n * // version: '1.0.0',\n * // initialPermissions: { ... },\n * // blocked: false,\n * // enabled: true,\n * // },\n * // ...,\n * // }\n * ```\n */\nexport const getSnapsHandler = {\n implementation: getSnapsImplementation,\n actionNames: ['SnapController:getPermittedSnaps'],\n} satisfies MethodHandler<\n never,\n GetSnapsMethodActions,\n JsonRpcParams,\n GetSnapsResult,\n { origin: string }\n>;\n\n/**\n * The `wallet_getSnaps` method implementation.\n * Fetches available snaps for the requesting origin and adds them to the JSON-RPC response.\n *\n * @param req - The JSON-RPC request object.\n * @param res - The JSON-RPC response object.\n * @param _next - The `json-rpc-engine` \"next\" callback. Not used by this\n * function.\n * @param end - The `json-rpc-engine` \"end\" callback.\n * @param _hooks - The RPC method hooks. Not used by this function.\n * @param messenger - The messenger used to call controller actions.\n * @returns Nothing.\n */\nasync function getSnapsImplementation(\n req: JsonRpcRequest & { origin: string },\n res: PendingJsonRpcResponse<GetSnapsResult>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n _hooks: never,\n messenger: Messenger<string, GetSnapsMethodActions>,\n): Promise<void> {\n res.result = messenger.call('SnapController:getPermittedSnaps', req.origin);\n return end();\n}\n"]}