@metamask/keyring-snap-client
Version:
MetaMask Keyring Snap clients
1 lines • 5.29 kB
Source Map (JSON)
{"version":3,"file":"KeyringClient.mjs","sourceRoot":"","sources":["../../src/v2/KeyringClient.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,OAAO,EACL,4BAA4B,EAC5B,2BAA2B,EAC3B,wBAAwB,EACxB,yBAAyB,EACzB,2BAA2B,EAC3B,gBAAgB,EAChB,2BAA2B,EAC5B,iCAAiC;AASlC,OAAO,EAAE,UAAU,EAAE,gCAAgC;AACrD,OAAO,EAAE,MAAM,EAAE,8BAA8B;AAE/C,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,aAAa;AAIlC,MAAM,OAAO,aAAa;IAGxB;;;;OAIG;IACH,YAAY,MAAc;QAPjB,wCAAgB;QAQvB,uBAAA,IAAI,yBAAW,MAAM,MAAA,CAAC;IACxB,CAAC;IAED;;;;;OAKG;IACO,KAAK,CAAC,IAAI,CAClB,OAAyC;QAEzC,OAAO,uBAAA,IAAI,6BAAQ,CAAC,IAAI,CAAC;YACvB,GAAG,OAAO;SACX,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,WAAW;QACf,OAAO,UAAU,CACf,MAAM,IAAI,CAAC,IAAI,CAAC;YACd,OAAO,EAAE,KAAK;YACd,EAAE,EAAE,IAAI,EAAE;YACV,MAAM,EAAE,gBAAgB,CAAC,WAAW;SACrC,CAAC,EACF,yBAAyB,CAC1B,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,EAAU;QACzB,OAAO,UAAU,CACf,MAAM,IAAI,CAAC,IAAI,CAAC;YACd,OAAO,EAAE,KAAK;YACd,EAAE,EAAE,IAAI,EAAE;YACV,MAAM,EAAE,gBAAgB,CAAC,UAAU;YACnC,MAAM,EAAE,EAAE,EAAE,EAAE;SACf,CAAC,EACF,wBAAwB,CACzB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,MAA4B;QAE5B,OAAO,UAAU,CACf,MAAM,IAAI,CAAC,IAAI,CAAC;YACd,OAAO,EAAE,KAAK;YACd,EAAE,EAAE,IAAI,EAAE;YACV,MAAM,EAAE,gBAAgB,CAAC,cAAc;YACvC,MAAM;SACP,CAAC,EACF,4BAA4B,CAC7B,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,EAAa,EACb,OAA8B;QAE9B,OAAO,UAAU,CACf,MAAM,IAAI,CAAC,IAAI,CAAC;YACd,OAAO,EAAE,KAAK;YACd,EAAE,EAAE,IAAI,EAAE;YACV,MAAM,EAAE,gBAAgB,CAAC,aAAa;YACtC,MAAM,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE;SAC5C,CAAC,EACF,2BAA2B,CAC5B,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,EAAa;QAC/B,MAAM,CACJ,MAAM,IAAI,CAAC,IAAI,CAAC;YACd,OAAO,EAAE,KAAK;YACd,EAAE,EAAE,IAAI,EAAE;YACV,MAAM,EAAE,gBAAgB,CAAC,aAAa;YACtC,MAAM,EAAE,EAAE,EAAE,EAAE;SACf,CAAC,EACF,2BAA2B,CAC5B,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAAuB;QACzC,OAAO,UAAU,CACf,MAAM,IAAI,CAAC,IAAI,CAAC;YACd,OAAO,EAAE,KAAK;YACd,EAAE,EAAE,IAAI,EAAE;YACV,MAAM,EAAE,gBAAgB,CAAC,aAAa;YACtC,MAAM,EAAE,OAAO;SAChB,CAAC,EACF,2BAA2B,CAC5B,CAAC;IACJ,CAAC;CACF","sourcesContent":["import type { KeyringAccount, KeyringRequest } from '@metamask/keyring-api';\nimport {\n CreateAccountsResponseStruct,\n DeleteAccountResponseStruct,\n GetAccountResponseStruct,\n GetAccountsResponseStruct,\n SubmitRequestResponseStruct,\n KeyringRpcMethod,\n ExportAccountResponseStruct,\n} from '@metamask/keyring-api/v2';\nimport type {\n CreateAccountOptions,\n ExportAccountOptions,\n ExportedAccount,\n KeyringRpc,\n KeyringRpcRequest,\n} from '@metamask/keyring-api/v2';\nimport type { AccountId } from '@metamask/keyring-utils';\nimport { strictMask } from '@metamask/keyring-utils';\nimport { assert } from '@metamask/superstruct';\nimport type { Json } from '@metamask/utils';\nimport { v4 as uuid } from 'uuid';\n\nimport type { Sender } from '../KeyringClient';\n\nexport class KeyringClient implements KeyringRpc {\n readonly #sender: Sender;\n\n /**\n * Create a new instance of `KeyringClient`.\n *\n * @param sender - The `Sender` instance to use to send requests to the snap.\n */\n constructor(sender: Sender) {\n this.#sender = sender;\n }\n\n /**\n * Send a request to the Snap and return the response.\n *\n * @param request - A partial JSON-RPC request (method and params).\n * @returns A promise that resolves to the response to the request.\n */\n protected async send<RequestMethod extends KeyringRpcMethod>(\n request: KeyringRpcRequest<RequestMethod>,\n ): Promise<Json> {\n return this.#sender.send({\n ...request,\n });\n }\n\n async getAccounts(): Promise<KeyringAccount[]> {\n return strictMask(\n await this.send({\n jsonrpc: '2.0',\n id: uuid(),\n method: KeyringRpcMethod.GetAccounts,\n }),\n GetAccountsResponseStruct,\n );\n }\n\n async getAccount(id: string): Promise<KeyringAccount> {\n return strictMask(\n await this.send({\n jsonrpc: '2.0',\n id: uuid(),\n method: KeyringRpcMethod.GetAccount,\n params: { id },\n }),\n GetAccountResponseStruct,\n );\n }\n\n async createAccounts(\n params: CreateAccountOptions,\n ): Promise<KeyringAccount[]> {\n return strictMask(\n await this.send({\n jsonrpc: '2.0',\n id: uuid(),\n method: KeyringRpcMethod.CreateAccounts,\n params,\n }),\n CreateAccountsResponseStruct,\n );\n }\n\n async exportAccount(\n id: AccountId,\n options?: ExportAccountOptions,\n ): Promise<ExportedAccount> {\n return strictMask(\n await this.send({\n jsonrpc: '2.0',\n id: uuid(),\n method: KeyringRpcMethod.ExportAccount,\n params: { id, ...(options && { options }) },\n }),\n ExportAccountResponseStruct,\n );\n }\n\n async deleteAccount(id: AccountId): Promise<void> {\n assert(\n await this.send({\n jsonrpc: '2.0',\n id: uuid(),\n method: KeyringRpcMethod.DeleteAccount,\n params: { id },\n }),\n DeleteAccountResponseStruct,\n );\n }\n\n async submitRequest(request: KeyringRequest): Promise<Json> {\n return strictMask(\n await this.send({\n jsonrpc: '2.0',\n id: uuid(),\n method: KeyringRpcMethod.SubmitRequest,\n params: request,\n }),\n SubmitRequestResponseStruct,\n );\n }\n}\n"]}