import { createAsyncMiddleware } from 'json-rpc-engine' import { formatTxMetaForRpcResult } from '../util' export function createPendingNonceMiddleware({ getPendingNonce }) { return createAsyncMiddleware(async (req, res, next) => { const { method, params } = req if (method !== 'eth_getTransactionCount') { next() return } const [param, blockRef] = params if (blockRef !== 'pending') { next() return } res.result = await getPendingNonce(param) }) } export function createPendingTxMiddleware({ getPendingTransactionByHash }) { return createAsyncMiddleware(async (req, res, next) => { const { method, params } = req if (method !== 'eth_getTransactionByHash') { next() return } const [hash] = params const txMeta = getPendingTransactionByHash(hash) if (!txMeta) { next() return } res.result = formatTxMetaForRpcResult(txMeta) }) }