UNPKG

@ethersphere/bee-js

Version:
117 lines 3.34 kB
import { Types } from 'cafe-utility'; import { http } from "../../utils/http.js"; import { asNumberString } from "../../utils/type.js"; import { TransactionId } from "../../utils/typed-bytes.js"; const transactionsEndpoint = 'transactions'; /** * Get list of all pending transactions * * @param requestOptions Options for making requests */ export async function getAllTransactions(requestOptions) { const response = await http(requestOptions, { url: transactionsEndpoint, responseType: 'json' }); const body = Types.asObject(response.data, { name: 'response.data' }); const pendingTransactions = Types.asArray(body.pendingTransactions, { name: 'pendingTransactions' }); return pendingTransactions.map(toTransaction); } /** * Get information for specific pending transactions * * @param requestOptions Options for making requests * @param transactionHash Hash of the transaction */ export async function getTransaction(requestOptions, transactionHash) { const response = await http(requestOptions, { url: `${transactionsEndpoint}/${transactionHash}`, responseType: 'json' }); const body = Types.asObject(response.data, { name: 'response.data' }); return toTransaction(body); } function toTransaction(value) { const object = Types.asObject(value, { name: 'transaction' }); return { transactionHash: new TransactionId(Types.asString(object.transactionHash, { name: 'transactionHash' })), to: Types.asString(object.to, { name: 'to' }), nonce: Types.asNumber(object.nonce, { name: 'nonce' }), gasPrice: asNumberString(object.gasPrice, { name: 'gasPrice' }), gasLimit: Types.asNumber(object.gasLimit, { name: 'gasLimit' }), data: Types.asString(object.data, { name: 'data' }), created: Types.asString(object.created, { name: 'created' }), description: Types.asString(object.description, { name: 'description' }), value: asNumberString(object.value, { name: 'value' }) }; } /** * Rebroadcast existing transaction * * @param requestOptions Options for making requests * @param transactionHash Hash of the transaction */ export async function rebroadcastTransaction(requestOptions, transactionHash) { const response = await http(requestOptions, { method: 'post', url: `${transactionsEndpoint}/${transactionHash}`, responseType: 'json' }); const body = Types.asObject(response.data, { name: 'response.data' }); return new TransactionId(Types.asString(body.transactionHash, { name: 'transactionHash' })); } /** * Cancel existing transaction * * @param requestOptions Options for making requests * @param transactionHash Hash of the transaction * @param gasPrice Optional gas price */ export async function cancelTransaction(requestOptions, transactionHash, gasPrice) { const headers = {}; if (gasPrice) { headers['gas-price'] = gasPrice.toString(); } const response = await http(requestOptions, { method: 'delete', headers, url: `${transactionsEndpoint}/${transactionHash}`, responseType: 'json' }); const body = Types.asObject(response.data, { name: 'response.data' }); return new TransactionId(Types.asString(body.transactionHash, { name: 'transactionHash' })); }