feat: add num_unconfirmed_txs endpoint (#1150)
* feat: add num_unconfirmed_txs endpoint * fix: typos * fix: lint * fix: lint * chore: update changelog * Update CHANGELOG.md Co-authored-by: Ryan Rossiter <ryan.rossiter@btcx.com> Co-authored-by: Simon Warta <2603011+webmaster128@users.noreply.github.com>
This commit is contained in:
parent
a7a266ad73
commit
b63075aca1
@ -9,6 +9,9 @@ and this project adheres to
|
||||
### Added
|
||||
|
||||
- @cosmjs/math: Add `Decimal.floor` and `Decimal.ceil`.
|
||||
- @cosmjs/tendermint-rpc: Add `num_unconfirmed_txs` endpoint. ([#1150])
|
||||
|
||||
[#1150]: https://github.com/cosmos/cosmjs/pull/1150
|
||||
|
||||
### Changed
|
||||
|
||||
|
||||
@ -58,6 +58,8 @@ export {
|
||||
NewBlockEvent,
|
||||
NewBlockHeaderEvent,
|
||||
NodeInfo,
|
||||
NumUnconfirmedTxsRequest,
|
||||
NumUnconfirmedTxsResponse,
|
||||
ProofOp,
|
||||
QueryProof,
|
||||
QueryTag,
|
||||
|
||||
@ -155,6 +155,10 @@ export class Params {
|
||||
return createJsonRpcRequest(req.method);
|
||||
}
|
||||
|
||||
public static encodeNumUnconfirmedTxs(req: requests.NumUnconfirmedTxsRequest): JsonRpcRequest {
|
||||
return createJsonRpcRequest(req.method);
|
||||
}
|
||||
|
||||
public static encodeStatus(req: requests.StatusRequest): JsonRpcRequest {
|
||||
return createJsonRpcRequest(req.method);
|
||||
}
|
||||
|
||||
@ -785,6 +785,18 @@ function decodeBlockSearch(data: RpcBlockSearchResponse): responses.BlockSearchR
|
||||
};
|
||||
}
|
||||
|
||||
interface RpcNumUnconfirmedTxsResponse {
|
||||
readonly total: string;
|
||||
readonly total_bytes: string;
|
||||
}
|
||||
|
||||
function decodeNumUnconfirmedTxs(data: RpcNumUnconfirmedTxsResponse): responses.NumUnconfirmedTxsResponse {
|
||||
return {
|
||||
total: Integer.parse(assertNotEmpty(data.total)),
|
||||
totalBytes: Integer.parse(assertNotEmpty(data.total_bytes)),
|
||||
};
|
||||
}
|
||||
|
||||
export class Responses {
|
||||
public static decodeAbciInfo(response: JsonRpcSuccessResponse): responses.AbciInfoResponse {
|
||||
return decodeAbciInfo(assertObject((response.result as AbciInfoResult).response));
|
||||
@ -836,6 +848,12 @@ export class Responses {
|
||||
return null;
|
||||
}
|
||||
|
||||
public static decodeNumUnconfirmedTxs(
|
||||
response: JsonRpcSuccessResponse,
|
||||
): responses.NumUnconfirmedTxsResponse {
|
||||
return decodeNumUnconfirmedTxs(response.result as RpcNumUnconfirmedTxsResponse);
|
||||
}
|
||||
|
||||
public static decodeStatus(response: JsonRpcSuccessResponse): responses.StatusResponse {
|
||||
return decodeStatus(response.result as RpcStatusResponse);
|
||||
}
|
||||
|
||||
@ -28,6 +28,7 @@ export interface Params {
|
||||
readonly encodeCommit: (req: requests.CommitRequest) => JsonRpcRequest;
|
||||
readonly encodeGenesis: (req: requests.GenesisRequest) => JsonRpcRequest;
|
||||
readonly encodeHealth: (req: requests.HealthRequest) => JsonRpcRequest;
|
||||
readonly encodeNumUnconfirmedTxs: (req: requests.NumUnconfirmedTxsRequest) => JsonRpcRequest;
|
||||
readonly encodeStatus: (req: requests.StatusRequest) => JsonRpcRequest;
|
||||
readonly encodeSubscribe: (req: requests.SubscribeRequest) => JsonRpcRequest;
|
||||
readonly encodeTx: (req: requests.TxRequest) => JsonRpcRequest;
|
||||
@ -48,6 +49,7 @@ export interface Responses {
|
||||
readonly decodeCommit: (response: JsonRpcSuccessResponse) => responses.CommitResponse;
|
||||
readonly decodeGenesis: (response: JsonRpcSuccessResponse) => responses.GenesisResponse;
|
||||
readonly decodeHealth: (response: JsonRpcSuccessResponse) => responses.HealthResponse;
|
||||
readonly decodeNumUnconfirmedTxs: (response: JsonRpcSuccessResponse) => responses.NumUnconfirmedTxsResponse;
|
||||
readonly decodeStatus: (response: JsonRpcSuccessResponse) => responses.StatusResponse;
|
||||
readonly decodeTx: (response: JsonRpcSuccessResponse) => responses.TxResponse;
|
||||
readonly decodeTxSearch: (response: JsonRpcSuccessResponse) => responses.TxSearchResponse;
|
||||
|
||||
@ -16,6 +16,7 @@ export {
|
||||
GenesisRequest,
|
||||
HealthRequest,
|
||||
Method,
|
||||
NumUnconfirmedTxsRequest,
|
||||
QueryTag,
|
||||
Request,
|
||||
StatusRequest,
|
||||
@ -57,6 +58,7 @@ export {
|
||||
NewBlockEvent,
|
||||
NewBlockHeaderEvent,
|
||||
NodeInfo,
|
||||
NumUnconfirmedTxsResponse,
|
||||
ProofOp,
|
||||
QueryProof,
|
||||
Response,
|
||||
|
||||
@ -19,6 +19,7 @@ export enum Method {
|
||||
Commit = "commit",
|
||||
Genesis = "genesis",
|
||||
Health = "health",
|
||||
NumUnconfirmedTxs = "num_unconfirmed_txs",
|
||||
Status = "status",
|
||||
Subscribe = "subscribe",
|
||||
Tx = "tx",
|
||||
@ -38,6 +39,7 @@ export type Request =
|
||||
| CommitRequest
|
||||
| GenesisRequest
|
||||
| HealthRequest
|
||||
| NumUnconfirmedTxsRequest
|
||||
| StatusRequest
|
||||
| TxRequest
|
||||
| TxSearchRequest
|
||||
@ -136,6 +138,10 @@ export interface HealthRequest {
|
||||
readonly method: Method.Health;
|
||||
}
|
||||
|
||||
export interface NumUnconfirmedTxsRequest {
|
||||
readonly method: Method.NumUnconfirmedTxs;
|
||||
}
|
||||
|
||||
export interface StatusRequest {
|
||||
readonly method: Method.Status;
|
||||
}
|
||||
|
||||
@ -16,6 +16,7 @@ export type Response =
|
||||
| CommitResponse
|
||||
| GenesisResponse
|
||||
| HealthResponse
|
||||
| NumUnconfirmedTxsResponse
|
||||
| StatusResponse
|
||||
| TxResponse
|
||||
| TxSearchResponse
|
||||
@ -124,6 +125,11 @@ export interface GenesisResponse {
|
||||
|
||||
export type HealthResponse = null;
|
||||
|
||||
export interface NumUnconfirmedTxsResponse {
|
||||
readonly total: number;
|
||||
readonly totalBytes: number;
|
||||
}
|
||||
|
||||
export interface StatusResponse {
|
||||
readonly nodeInfo: NodeInfo;
|
||||
readonly syncInfo: SyncInfo;
|
||||
|
||||
@ -219,6 +219,20 @@ function defaultTestSuite(rpcFactory: () => RpcClient, expected: ExpectedValues)
|
||||
});
|
||||
});
|
||||
|
||||
describe("numUnconfirmedTxs", () => {
|
||||
it("works", async () => {
|
||||
pendingWithoutTendermint();
|
||||
const client = await Tendermint34Client.create(rpcFactory());
|
||||
|
||||
const response = await client.numUnconfirmedTxs();
|
||||
|
||||
expect(response.total).toBeGreaterThanOrEqual(0);
|
||||
expect(response.totalBytes).toBeGreaterThanOrEqual(0);
|
||||
|
||||
client.disconnect();
|
||||
});
|
||||
});
|
||||
|
||||
describe("blockResults", () => {
|
||||
it("works", async () => {
|
||||
pendingWithoutTendermint();
|
||||
|
||||
@ -213,6 +213,11 @@ export class Tendermint34Client {
|
||||
return this.doCall(query, this.p.encodeHealth, this.r.decodeHealth);
|
||||
}
|
||||
|
||||
public async numUnconfirmedTxs(): Promise<responses.NumUnconfirmedTxsResponse> {
|
||||
const query: requests.NumUnconfirmedTxsRequest = { method: requests.Method.NumUnconfirmedTxs };
|
||||
return this.doCall(query, this.p.encodeNumUnconfirmedTxs, this.r.decodeNumUnconfirmedTxs);
|
||||
}
|
||||
|
||||
public async status(): Promise<responses.StatusResponse> {
|
||||
const query: requests.StatusRequest = { method: requests.Method.Status };
|
||||
return this.doCall(query, this.p.encodeStatus, this.r.decodeStatus);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user