UNPKG

@tevm/actions

Version:

A typesafe library for writing forge scripts in typescript

48 lines (46 loc) 1.49 kB
import { numberToHex } from '@tevm/utils' import { getAccountHandler } from './getAccountHandler.js' /** * Creates an GetAccount JSON-RPC Procedure for handling account requests with Ethereumjs VM * @param {import('@tevm/node').TevmNode} client * @returns {import('./GetAccountJsonRpcProcedure.js').GetAccountJsonRpcProcedure} */ export const getAccountProcedure = (client) => async (request) => { request.params const { errors = [], ...result } = await getAccountHandler(client)({ address: request.params[0].address, throwOnFail: false, returnStorage: request.params[0].returnStorage ?? false, }) if (errors.length > 0) { const error = /** @type {import('./TevmGetAccountError.js').TevmGetAccountError}*/ (errors[0]) return { jsonrpc: '2.0', error: { code: error.code, message: error.message, data: { errors: errors.map(({ message }) => message), }, }, method: 'tevm_getAccount', ...(request.id === undefined ? {} : { id: request.id }), } } return { jsonrpc: '2.0', result: /** @type any*/ ({ address: result.address, balance: numberToHex(result.balance ?? 0n), deployedBytecode: result.deployedBytecode ?? '0x0', nonce: numberToHex(result.nonce ?? 0n), storageRoot: result.storageRoot, isContract: result.isContract, isEmpty: result.isEmpty, codeHash: result.codeHash, storage: result.storage, }), method: 'tevm_getAccount', ...(request.id === undefined ? {} : { id: request.id }), } }