{"version":3,"file":"getFile.cjs","sourceRoot":"","sources":["../../src/permitted/getFile.ts"],"names":[],"mappings":";;;AAEA,qDAAiD;AAEjD,mDAAuE;AAEvE,uDAAwE;AAExE,2CAA+C;AAIlC,QAAA,iBAAiB,GAAG,IAAA,oBAAM,EAAC;IACtC,IAAI,EAAE,IAAA,oBAAM,GAAE;IACd,QAAQ,EAAE,IAAA,sBAAQ,EAChB,IAAA,mBAAK,EAAC;QACJ,IAAA,qBAAS,EAAC,iCAAqB,CAAC,MAAM,CAAC;QACvC,IAAA,qBAAS,EAAC,iCAAqB,CAAC,GAAG,CAAC;QACpC,IAAA,qBAAS,EAAC,iCAAqB,CAAC,IAAI,CAAC;KACtC,CAAC,CACH;CACF,CAAC,CAAC;AAOH,MAAM,SAAS,GAAoC;IACjD,WAAW,EAAE,IAAI;CAClB,CAAC;AAEW,QAAA,cAAc,GAIvB;IACF,WAAW,EAAE,CAAC,cAAc,CAAC;IAC7B,cAAc;IACd,SAAS;CACV,CAAC;AASF;;;;;;;;;;;GAWG;AACH,KAAK,UAAU,cAAc,CAC3B,GAA0C,EAC1C,GAA0C,EAC1C,KAAc,EACd,GAA6B,EAC7B,EAAE,WAAW,EAAgB;IAE7B,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAEvB,IAAA,oBAAY,EACV,MAAM,EACN,yBAAiB,EACjB,mCAAmC,EACnC,sBAAS,CAAC,aAAa,CACxB,CAAC;IAEF,IAAI,CAAC;QACH,GAAG,CAAC,MAAM,GAAG,MAAM,WAAW,CAC5B,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,QAAQ,IAAI,iCAAqB,CAAC,MAAM,CAChD,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,GAAG,EAAE,CAAC;AACf,CAAC","sourcesContent":["import type { JsonRpcEngineEndCallback } from '@metamask/json-rpc-engine';\nimport type { PermittedHandlerExport } from '@metamask/permission-controller';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport type { GetFileParams, GetFileResult } from '@metamask/snaps-sdk';\nimport { AuxiliaryFileEncoding, enumValue } from '@metamask/snaps-sdk';\nimport type { InferMatching } from '@metamask/snaps-utils';\nimport { object, optional, string, union } from '@metamask/superstruct';\nimport type { PendingJsonRpcResponse, JsonRpcRequest } from '@metamask/utils';\nimport { assertStruct } from '@metamask/utils';\n\nimport type { MethodHooksObject } from '../utils';\n\nexport const GetFileArgsStruct = object({\n  path: string(),\n  encoding: optional(\n    union([\n      enumValue(AuxiliaryFileEncoding.Base64),\n      enumValue(AuxiliaryFileEncoding.Hex),\n      enumValue(AuxiliaryFileEncoding.Utf8),\n    ]),\n  ),\n});\n\nexport type InferredGetFileParams = InferMatching<\n  typeof GetFileArgsStruct,\n  GetFileParams\n>;\n\nconst hookNames: MethodHooksObject<GetFileHooks> = {\n  getSnapFile: true,\n};\n\nexport const getFileHandler: PermittedHandlerExport<\n  GetFileHooks,\n  InferredGetFileParams,\n  string\n> = {\n  methodNames: ['snap_getFile'],\n  implementation,\n  hookNames,\n};\n\nexport type GetFileHooks = {\n  getSnapFile: (\n    path: InferredGetFileParams['path'],\n    encoding: InferredGetFileParams['encoding'],\n  ) => Promise<string>;\n};\n\n/**\n * The `snap_getFile` method implementation.\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.\n * @param hooks.getSnapFile - The function to load a static snap file.\n * @returns Nothing.\n */\nasync function implementation(\n  req: JsonRpcRequest<InferredGetFileParams>,\n  res: PendingJsonRpcResponse<GetFileResult>,\n  _next: unknown,\n  end: JsonRpcEngineEndCallback,\n  { getSnapFile }: GetFileHooks,\n): Promise<void> {\n  const { params } = req;\n\n  assertStruct(\n    params,\n    GetFileArgsStruct,\n    'Invalid \"snap_getFile\" parameters',\n    rpcErrors.invalidParams,\n  );\n\n  try {\n    res.result = await getSnapFile(\n      params.path,\n      params.encoding ?? AuxiliaryFileEncoding.Base64,\n    );\n  } catch (error) {\n    return end(error);\n  }\n\n  return end();\n}\n"]}