{"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"]}