From 9a1abe46fccfa12e190f90e5f178976562ce9fac Mon Sep 17 00:00:00 2001 From: willclarktech Date: Tue, 8 Jun 2021 16:03:53 +0200 Subject: [PATCH 01/13] tendermint-rpc: Move legacy -> tendermint33 --- packages/tendermint-rpc/src/index.ts | 34 +++++++++---------- .../src/{legacy => tendermint33}/adaptor.ts | 0 .../adaptors/index.ts | 0 .../adaptors/v0-33/index.ts | 0 .../adaptors/v0-33/requests.ts | 0 .../adaptors/v0-33/responses.ts | 0 .../{legacy => tendermint33}/client.spec.ts | 0 .../src/{legacy => tendermint33}/client.ts | 0 .../encodings.spec.ts | 0 .../src/{legacy => tendermint33}/encodings.ts | 0 .../{legacy => tendermint33}/hasher.spec.ts | 0 .../src/{legacy => tendermint33}/hasher.ts | 0 .../src/{legacy => tendermint33}/index.ts | 0 .../{legacy => tendermint33}/requests.spec.ts | 0 .../src/{legacy => tendermint33}/requests.ts | 0 .../src/{legacy => tendermint33}/responses.ts | 0 16 files changed, 17 insertions(+), 17 deletions(-) rename packages/tendermint-rpc/src/{legacy => tendermint33}/adaptor.ts (100%) rename packages/tendermint-rpc/src/{legacy => tendermint33}/adaptors/index.ts (100%) rename packages/tendermint-rpc/src/{legacy => tendermint33}/adaptors/v0-33/index.ts (100%) rename packages/tendermint-rpc/src/{legacy => tendermint33}/adaptors/v0-33/requests.ts (100%) rename packages/tendermint-rpc/src/{legacy => tendermint33}/adaptors/v0-33/responses.ts (100%) rename packages/tendermint-rpc/src/{legacy => tendermint33}/client.spec.ts (100%) rename packages/tendermint-rpc/src/{legacy => tendermint33}/client.ts (100%) rename packages/tendermint-rpc/src/{legacy => tendermint33}/encodings.spec.ts (100%) rename packages/tendermint-rpc/src/{legacy => tendermint33}/encodings.ts (100%) rename packages/tendermint-rpc/src/{legacy => tendermint33}/hasher.spec.ts (100%) rename packages/tendermint-rpc/src/{legacy => tendermint33}/hasher.ts (100%) rename packages/tendermint-rpc/src/{legacy => tendermint33}/index.ts (100%) rename packages/tendermint-rpc/src/{legacy => tendermint33}/requests.spec.ts (100%) rename packages/tendermint-rpc/src/{legacy => tendermint33}/requests.ts (100%) rename packages/tendermint-rpc/src/{legacy => tendermint33}/responses.ts (100%) diff --git a/packages/tendermint-rpc/src/index.ts b/packages/tendermint-rpc/src/index.ts index 5530c322..547db460 100644 --- a/packages/tendermint-rpc/src/index.ts +++ b/packages/tendermint-rpc/src/index.ts @@ -4,6 +4,22 @@ export { rawEd25519PubkeyToRawAddress, rawSecp256k1PubkeyToRawAddress, } from "./addresses"; +export { + DateTime, + ReadonlyDateWithNanoseconds, + fromRfc3339WithNanoseconds, + fromSeconds, + toRfc3339WithNanoseconds, + toSeconds, +} from "./dates"; +export { HttpClient, WebsocketClient } from "./rpcclients"; // TODO: Why do we export those outside of this package? +export { + BlockIdFlag, + CommitSignature, + ValidatorEd25519Pubkey, + ValidatorSecp256k1Pubkey, + ValidatorPubkey, +} from "./types"; export { adaptor33, adaptor34, @@ -75,22 +91,6 @@ export { TxSearchRequest, ValidatorsRequest, ValidatorsParams, -} from "./legacy"; -export { - DateTime, - ReadonlyDateWithNanoseconds, - fromRfc3339WithNanoseconds, - fromSeconds, - toRfc3339WithNanoseconds, - toSeconds, -} from "./dates"; -export { HttpClient, WebsocketClient } from "./rpcclients"; // TODO: Why do we export those outside of this package? -export { - BlockIdFlag, - CommitSignature, - ValidatorEd25519Pubkey, - ValidatorSecp256k1Pubkey, - ValidatorPubkey, -} from "./types"; +} from "./tendermint33"; export * as tendermint34 from "./tendermint34"; export { Tendermint34Client } from "./tendermint34"; diff --git a/packages/tendermint-rpc/src/legacy/adaptor.ts b/packages/tendermint-rpc/src/tendermint33/adaptor.ts similarity index 100% rename from packages/tendermint-rpc/src/legacy/adaptor.ts rename to packages/tendermint-rpc/src/tendermint33/adaptor.ts diff --git a/packages/tendermint-rpc/src/legacy/adaptors/index.ts b/packages/tendermint-rpc/src/tendermint33/adaptors/index.ts similarity index 100% rename from packages/tendermint-rpc/src/legacy/adaptors/index.ts rename to packages/tendermint-rpc/src/tendermint33/adaptors/index.ts diff --git a/packages/tendermint-rpc/src/legacy/adaptors/v0-33/index.ts b/packages/tendermint-rpc/src/tendermint33/adaptors/v0-33/index.ts similarity index 100% rename from packages/tendermint-rpc/src/legacy/adaptors/v0-33/index.ts rename to packages/tendermint-rpc/src/tendermint33/adaptors/v0-33/index.ts diff --git a/packages/tendermint-rpc/src/legacy/adaptors/v0-33/requests.ts b/packages/tendermint-rpc/src/tendermint33/adaptors/v0-33/requests.ts similarity index 100% rename from packages/tendermint-rpc/src/legacy/adaptors/v0-33/requests.ts rename to packages/tendermint-rpc/src/tendermint33/adaptors/v0-33/requests.ts diff --git a/packages/tendermint-rpc/src/legacy/adaptors/v0-33/responses.ts b/packages/tendermint-rpc/src/tendermint33/adaptors/v0-33/responses.ts similarity index 100% rename from packages/tendermint-rpc/src/legacy/adaptors/v0-33/responses.ts rename to packages/tendermint-rpc/src/tendermint33/adaptors/v0-33/responses.ts diff --git a/packages/tendermint-rpc/src/legacy/client.spec.ts b/packages/tendermint-rpc/src/tendermint33/client.spec.ts similarity index 100% rename from packages/tendermint-rpc/src/legacy/client.spec.ts rename to packages/tendermint-rpc/src/tendermint33/client.spec.ts diff --git a/packages/tendermint-rpc/src/legacy/client.ts b/packages/tendermint-rpc/src/tendermint33/client.ts similarity index 100% rename from packages/tendermint-rpc/src/legacy/client.ts rename to packages/tendermint-rpc/src/tendermint33/client.ts diff --git a/packages/tendermint-rpc/src/legacy/encodings.spec.ts b/packages/tendermint-rpc/src/tendermint33/encodings.spec.ts similarity index 100% rename from packages/tendermint-rpc/src/legacy/encodings.spec.ts rename to packages/tendermint-rpc/src/tendermint33/encodings.spec.ts diff --git a/packages/tendermint-rpc/src/legacy/encodings.ts b/packages/tendermint-rpc/src/tendermint33/encodings.ts similarity index 100% rename from packages/tendermint-rpc/src/legacy/encodings.ts rename to packages/tendermint-rpc/src/tendermint33/encodings.ts diff --git a/packages/tendermint-rpc/src/legacy/hasher.spec.ts b/packages/tendermint-rpc/src/tendermint33/hasher.spec.ts similarity index 100% rename from packages/tendermint-rpc/src/legacy/hasher.spec.ts rename to packages/tendermint-rpc/src/tendermint33/hasher.spec.ts diff --git a/packages/tendermint-rpc/src/legacy/hasher.ts b/packages/tendermint-rpc/src/tendermint33/hasher.ts similarity index 100% rename from packages/tendermint-rpc/src/legacy/hasher.ts rename to packages/tendermint-rpc/src/tendermint33/hasher.ts diff --git a/packages/tendermint-rpc/src/legacy/index.ts b/packages/tendermint-rpc/src/tendermint33/index.ts similarity index 100% rename from packages/tendermint-rpc/src/legacy/index.ts rename to packages/tendermint-rpc/src/tendermint33/index.ts diff --git a/packages/tendermint-rpc/src/legacy/requests.spec.ts b/packages/tendermint-rpc/src/tendermint33/requests.spec.ts similarity index 100% rename from packages/tendermint-rpc/src/legacy/requests.spec.ts rename to packages/tendermint-rpc/src/tendermint33/requests.spec.ts diff --git a/packages/tendermint-rpc/src/legacy/requests.ts b/packages/tendermint-rpc/src/tendermint33/requests.ts similarity index 100% rename from packages/tendermint-rpc/src/legacy/requests.ts rename to packages/tendermint-rpc/src/tendermint33/requests.ts diff --git a/packages/tendermint-rpc/src/legacy/responses.ts b/packages/tendermint-rpc/src/tendermint33/responses.ts similarity index 100% rename from packages/tendermint-rpc/src/legacy/responses.ts rename to packages/tendermint-rpc/src/tendermint33/responses.ts From 23dfbe93254ae4e52331623f55b998ec621e1aca Mon Sep 17 00:00:00 2001 From: willclarktech Date: Tue, 8 Jun 2021 16:09:01 +0200 Subject: [PATCH 02/13] tendermint-rpc: Rename 0.33 client files --- packages/tendermint-rpc/src/tendermint33/index.ts | 2 +- .../tendermint33/{client.spec.ts => tendermint33client.spec.ts} | 0 .../src/tendermint33/{client.ts => tendermint33client.ts} | 0 3 files changed, 1 insertion(+), 1 deletion(-) rename packages/tendermint-rpc/src/tendermint33/{client.spec.ts => tendermint33client.spec.ts} (100%) rename packages/tendermint-rpc/src/tendermint33/{client.ts => tendermint33client.ts} (100%) diff --git a/packages/tendermint-rpc/src/tendermint33/index.ts b/packages/tendermint-rpc/src/tendermint33/index.ts index cc946896..dce3e215 100644 --- a/packages/tendermint-rpc/src/tendermint33/index.ts +++ b/packages/tendermint-rpc/src/tendermint33/index.ts @@ -1,6 +1,6 @@ export { adaptor33, adaptor34 } from "./adaptors"; export { Adaptor } from "./adaptor"; -export { Client } from "./client"; +export { Client } from "./tendermint33client"; export { AbciInfoRequest, AbciQueryParams, diff --git a/packages/tendermint-rpc/src/tendermint33/client.spec.ts b/packages/tendermint-rpc/src/tendermint33/tendermint33client.spec.ts similarity index 100% rename from packages/tendermint-rpc/src/tendermint33/client.spec.ts rename to packages/tendermint-rpc/src/tendermint33/tendermint33client.spec.ts diff --git a/packages/tendermint-rpc/src/tendermint33/client.ts b/packages/tendermint-rpc/src/tendermint33/tendermint33client.ts similarity index 100% rename from packages/tendermint-rpc/src/tendermint33/client.ts rename to packages/tendermint-rpc/src/tendermint33/tendermint33client.ts From c676ba68a35118f59fc2b4f2bb4475540d5f32b6 Mon Sep 17 00:00:00 2001 From: willclarktech Date: Tue, 8 Jun 2021 16:13:59 +0200 Subject: [PATCH 03/13] tendermint-rpc: Rename Tendermint33Client --- packages/tendermint-rpc/src/index.ts | 2 +- .../tendermint-rpc/src/tendermint33/index.ts | 2 +- .../tendermint33/tendermint33client.spec.ts | 62 +++++++++---------- .../src/tendermint33/tendermint33client.ts | 13 ++-- 4 files changed, 39 insertions(+), 40 deletions(-) diff --git a/packages/tendermint-rpc/src/index.ts b/packages/tendermint-rpc/src/index.ts index 547db460..4f5bec6d 100644 --- a/packages/tendermint-rpc/src/index.ts +++ b/packages/tendermint-rpc/src/index.ts @@ -24,7 +24,7 @@ export { adaptor33, adaptor34, Adaptor, - Client, + Tendermint33Client, AbciInfoResponse, AbciQueryResponse, Attribute, diff --git a/packages/tendermint-rpc/src/tendermint33/index.ts b/packages/tendermint-rpc/src/tendermint33/index.ts index dce3e215..7cce2e04 100644 --- a/packages/tendermint-rpc/src/tendermint33/index.ts +++ b/packages/tendermint-rpc/src/tendermint33/index.ts @@ -1,6 +1,6 @@ export { adaptor33, adaptor34 } from "./adaptors"; export { Adaptor } from "./adaptor"; -export { Client } from "./tendermint33client"; +export { Tendermint33Client } from "./tendermint33client"; export { AbciInfoRequest, AbciQueryParams, diff --git a/packages/tendermint-rpc/src/tendermint33/tendermint33client.spec.ts b/packages/tendermint-rpc/src/tendermint33/tendermint33client.spec.ts index eda05c4a..4b560d62 100644 --- a/packages/tendermint-rpc/src/tendermint33/tendermint33client.spec.ts +++ b/packages/tendermint-rpc/src/tendermint33/tendermint33client.spec.ts @@ -18,7 +18,7 @@ import { } from "../testutil.spec"; import { Adaptor } from "./adaptor"; import { adaptorForVersion } from "./adaptors"; -import { Client } from "./client"; +import { Tendermint33Client } from "./tendermint33client"; import { buildQuery } from "./requests"; import * as responses from "./responses"; @@ -26,7 +26,7 @@ function defaultTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expecte describe("create", () => { it("can auto-discover Tendermint version and communicate", async () => { pendingWithoutTendermint(); - const client = await Client.create(rpcFactory()); + const client = await Tendermint33Client.create(rpcFactory()); const info = await client.abciInfo(); expect(info).toBeTruthy(); client.disconnect(); @@ -34,7 +34,7 @@ function defaultTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expecte it("can connect to Tendermint with known version", async () => { pendingWithoutTendermint(); - const client = await Client.create(rpcFactory(), adaptor); + const client = await Tendermint33Client.create(rpcFactory(), adaptor); expect(await client.abciInfo()).toBeTruthy(); client.disconnect(); }); @@ -42,7 +42,7 @@ function defaultTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expecte it("can get genesis", async () => { pendingWithoutTendermint(); - const client = await Client.create(rpcFactory(), adaptor); + const client = await Tendermint33Client.create(rpcFactory(), adaptor); const genesis = await client.genesis(); expect(genesis).toBeTruthy(); client.disconnect(); @@ -50,7 +50,7 @@ function defaultTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expecte it("can broadcast a transaction", async () => { pendingWithoutTendermint(); - const client = await Client.create(rpcFactory(), adaptor); + const client = await Tendermint33Client.create(rpcFactory(), adaptor); const tx = buildKvTx(randomString(), randomString()); const response = await client.broadcastTxCommit({ tx: tx }); @@ -68,7 +68,7 @@ function defaultTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expecte it("gets the same tx hash from backend as calculated locally", async () => { pendingWithoutTendermint(); - const client = await Client.create(rpcFactory(), adaptor); + const client = await Tendermint33Client.create(rpcFactory(), adaptor); const tx = buildKvTx(randomString(), randomString()); const calculatedTxHash = adaptor.hashTx(tx); @@ -80,7 +80,7 @@ function defaultTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expecte it("can query the state", async () => { pendingWithoutTendermint(); - const client = await Client.create(rpcFactory(), adaptor); + const client = await Tendermint33Client.create(rpcFactory(), adaptor); const key = randomString(); const value = randomString(); @@ -99,7 +99,7 @@ function defaultTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expecte it("can get a commit", async () => { pendingWithoutTendermint(); - const client = await Client.create(rpcFactory(), adaptor); + const client = await Tendermint33Client.create(rpcFactory(), adaptor); const response = await client.commit(4); expect(response).toBeTruthy(); @@ -114,7 +114,7 @@ function defaultTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expecte it("can get validators", async () => { pendingWithoutTendermint(); - const client = await Client.create(rpcFactory(), adaptor); + const client = await Tendermint33Client.create(rpcFactory(), adaptor); const response = await client.validators({}); expect(response).toBeTruthy(); @@ -132,7 +132,7 @@ function defaultTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expecte it("can get all validators", async () => { pendingWithoutTendermint(); - const client = await Client.create(rpcFactory(), adaptor); + const client = await Tendermint33Client.create(rpcFactory(), adaptor); const response = await client.validatorsAll(); expect(response).toBeTruthy(); @@ -150,7 +150,7 @@ function defaultTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expecte it("can call a bunch of methods", async () => { pendingWithoutTendermint(); - const client = await Client.create(rpcFactory(), adaptor); + const client = await Tendermint33Client.create(rpcFactory(), adaptor); expect(await client.block()).toBeTruthy(); expect(await client.genesis()).toBeTruthy(); @@ -162,7 +162,7 @@ function defaultTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expecte describe("status", () => { it("works", async () => { pendingWithoutTendermint(); - const client = await Client.create(rpcFactory(), adaptor); + const client = await Tendermint33Client.create(rpcFactory(), adaptor); const status = await client.status(); @@ -192,7 +192,7 @@ function defaultTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expecte describe("blockResults", () => { it("works", async () => { pendingWithoutTendermint(); - const client = await Client.create(rpcFactory(), adaptor); + const client = await Tendermint33Client.create(rpcFactory(), adaptor); const height = 3; const results = await client.blockResults(height); @@ -208,7 +208,7 @@ function defaultTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expecte describe("blockchain", () => { it("returns latest in descending order by default", async () => { pendingWithoutTendermint(); - const client = await Client.create(rpcFactory(), adaptor); + const client = await Tendermint33Client.create(rpcFactory(), adaptor); // Run in parallel to increase chance there is no block between the calls const [status, blockchain] = await Promise.all([client.status(), client.blockchain()]); @@ -225,7 +225,7 @@ function defaultTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expecte it("can limit by maxHeight", async () => { pendingWithoutTendermint(); - const client = await Client.create(rpcFactory(), adaptor); + const client = await Tendermint33Client.create(rpcFactory(), adaptor); const height = (await client.status()).syncInfo.latestBlockHeight; const blockchain = await client.blockchain(undefined, height - 1); @@ -239,7 +239,7 @@ function defaultTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expecte it("works with maxHeight in the future", async () => { pendingWithoutTendermint(); - const client = await Client.create(rpcFactory(), adaptor); + const client = await Tendermint33Client.create(rpcFactory(), adaptor); const height = (await client.status()).syncInfo.latestBlockHeight; const blockchain = await client.blockchain(undefined, height + 20); @@ -253,7 +253,7 @@ function defaultTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expecte it("can limit by minHeight and maxHeight", async () => { pendingWithoutTendermint(); - const client = await Client.create(rpcFactory(), adaptor); + const client = await Tendermint33Client.create(rpcFactory(), adaptor); const height = (await client.status()).syncInfo.latestBlockHeight; const blockchain = await client.blockchain(height - 2, height - 1); @@ -267,7 +267,7 @@ function defaultTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expecte it("contains all the info", async () => { pendingWithoutTendermint(); - const client = await Client.create(rpcFactory(), adaptor); + const client = await Tendermint33Client.create(rpcFactory(), adaptor); const height = (await client.status()).syncInfo.latestBlockHeight; const blockchain = await client.blockchain(height - 1, height - 1); @@ -297,7 +297,7 @@ function defaultTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expecte describe("tx", () => { it("can query a tx properly", async () => { pendingWithoutTendermint(); - const client = await Client.create(rpcFactory(), adaptor); + const client = await Tendermint33Client.create(rpcFactory(), adaptor); const find = randomString(); const me = randomString(); @@ -354,7 +354,7 @@ function defaultTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expecte beforeAll(async () => { if (tendermintEnabled()) { - const client = await Client.create(rpcFactory(), adaptor); + const client = await Tendermint33Client.create(rpcFactory(), adaptor); // eslint-disable-next-line no-inner-declarations async function sendTx(): Promise { @@ -380,7 +380,7 @@ function defaultTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expecte it("can paginate over txSearch results", async () => { pendingWithoutTendermint(); - const client = await Client.create(rpcFactory(), adaptor); + const client = await Tendermint33Client.create(rpcFactory(), adaptor); const query = buildQuery({ tags: [{ key: "app.key", value: key }] }); @@ -399,7 +399,7 @@ function defaultTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expecte it("can get all search results in one call", async () => { pendingWithoutTendermint(); - const client = await Client.create(rpcFactory(), adaptor); + const client = await Tendermint33Client.create(rpcFactory(), adaptor); const query = buildQuery({ tags: [{ key: "app.key", value: key }] }); @@ -424,7 +424,7 @@ function websocketTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expec (async () => { const events: responses.NewBlockHeaderEvent[] = []; - const client = await Client.create(rpcFactory(), adaptor); + const client = await Tendermint33Client.create(rpcFactory(), adaptor); const stream = client.subscribeNewBlockHeader(); expect(stream).toBeTruthy(); const subscription = stream.subscribe({ @@ -482,7 +482,7 @@ function websocketTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expec const transactionData2 = buildKvTx(randomString(), randomString()); const events: responses.NewBlockEvent[] = []; - const client = await Client.create(rpcFactory(), adaptor); + const client = await Tendermint33Client.create(rpcFactory(), adaptor); const stream = client.subscribeNewBlock(); const subscription = stream.subscribe({ next: (event) => { @@ -538,7 +538,7 @@ function websocketTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expec pendingWithoutTendermint(); const events: responses.TxEvent[] = []; - const client = await Client.create(rpcFactory(), adaptor); + const client = await Tendermint33Client.create(rpcFactory(), adaptor); const stream = client.subscribeTx(); const subscription = stream.subscribe({ next: (event) => { @@ -582,7 +582,7 @@ function websocketTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expec const transactionData2 = buildKvTx(randomString(), randomString()); const events: responses.TxEvent[] = []; - const client = await Client.create(rpcFactory(), adaptor); + const client = await Tendermint33Client.create(rpcFactory(), adaptor); const query = buildQuery({ tags: [{ key: "app.creator", value: expected.appCreator }] }); const stream = client.subscribeTx(query); expect(stream).toBeTruthy(); @@ -620,7 +620,7 @@ function websocketTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expec it("can unsubscribe and re-subscribe to the same stream", async () => { pendingWithoutTendermint(); - const client = await Client.create(rpcFactory(), adaptor); + const client = await Tendermint33Client.create(rpcFactory(), adaptor); const stream = client.subscribeNewBlockHeader(); const event1 = await firstEvent(stream); @@ -653,7 +653,7 @@ function websocketTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expec it("can subscribe twice", async () => { pendingWithoutTendermint(); - const client = await Client.create(rpcFactory(), adaptor); + const client = await Tendermint33Client.create(rpcFactory(), adaptor); const stream1 = client.subscribeNewBlockHeader(); const stream2 = client.subscribeNewBlockHeader(); @@ -672,7 +672,7 @@ for (const { url, version, expected } of tendermintInstances) { // default connection { - const client = await Client.connect(url); + const client = await Tendermint33Client.connect(url); const info = await client.abciInfo(); expect(info).toBeTruthy(); client.disconnect(); @@ -680,7 +680,7 @@ for (const { url, version, expected } of tendermintInstances) { // http connection { - const client = await Client.connect("http://" + url); + const client = await Tendermint33Client.connect("http://" + url); const info = await client.abciInfo(); expect(info).toBeTruthy(); client.disconnect(); @@ -688,7 +688,7 @@ for (const { url, version, expected } of tendermintInstances) { // ws connection { - const client = await Client.connect("ws://" + url); + const client = await Tendermint33Client.connect("ws://" + url); const info = await client.abciInfo(); expect(info).toBeTruthy(); client.disconnect(); diff --git a/packages/tendermint-rpc/src/tendermint33/tendermint33client.ts b/packages/tendermint-rpc/src/tendermint33/tendermint33client.ts index 5bfe5e95..4f4c890a 100644 --- a/packages/tendermint-rpc/src/tendermint33/tendermint33client.ts +++ b/packages/tendermint-rpc/src/tendermint33/tendermint33client.ts @@ -14,8 +14,7 @@ import { adaptorForVersion } from "./adaptors"; import * as requests from "./requests"; import * as responses from "./responses"; -/** @deprecated Use Tendermint34Client */ -export class Client { +export class Tendermint33Client { /** * Creates a new Tendermint client for the given endpoint. * @@ -23,10 +22,10 @@ export class Client { * * If the adaptor is not set an auto-detection is attempted. */ - public static async connect(url: string, adaptor?: Adaptor): Promise { + public static async connect(url: string, adaptor?: Adaptor): Promise { const useHttp = url.startsWith("http://") || url.startsWith("https://"); const rpcClient = useHttp ? new HttpClient(url) : new WebsocketClient(url); - return Client.create(rpcClient, adaptor); + return Tendermint33Client.create(rpcClient, adaptor); } /** @@ -34,13 +33,13 @@ export class Client { * * If the adaptor is not set an auto-detection is attempted. */ - public static async create(rpcClient: RpcClient, adaptor?: Adaptor): Promise { + public static async create(rpcClient: RpcClient, adaptor?: Adaptor): Promise { // For some very strange reason I don't understand, tests start to fail on some systems // (our CI) when skipping the status call before doing other queries. Sleeping a little // while did not help. Thus we query the version as a way to say "hi" to the backend, // even in cases where we don't use the result. const version = await this.detectVersion(rpcClient); - return new Client(rpcClient, adaptor || adaptorForVersion(version)); + return new Tendermint33Client(rpcClient, adaptor || adaptorForVersion(version)); } private static async detectVersion(client: RpcClient): Promise { @@ -64,7 +63,7 @@ export class Client { private readonly r: Responses; /** - * Use `Client.connect` or `Client.create` to create an instance. + * Use `Client.connect` or `Tendermint33Client.create` to create an instance. */ private constructor(client: RpcClient, adaptor: Adaptor) { this.client = client; From 14dd92e850bb9b67858112580137f5f6344cdb4b Mon Sep 17 00:00:00 2001 From: willclarktech Date: Tue, 8 Jun 2021 16:16:18 +0200 Subject: [PATCH 04/13] tendermint-rpc: Fix doc comments in 34 client --- .../tendermint-rpc/src/tendermint34/tendermint34client.ts | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/packages/tendermint-rpc/src/tendermint34/tendermint34client.ts b/packages/tendermint-rpc/src/tendermint34/tendermint34client.ts index f528c2dd..bdf3f489 100644 --- a/packages/tendermint-rpc/src/tendermint34/tendermint34client.ts +++ b/packages/tendermint-rpc/src/tendermint34/tendermint34client.ts @@ -19,8 +19,6 @@ export class Tendermint34Client { * Creates a new Tendermint client for the given endpoint. * * Uses HTTP when the URL schema is http or https. Uses WebSockets otherwise. - * - * If the adaptor is not set an auto-detection is attempted. */ public static async connect(url: string): Promise { const useHttp = url.startsWith("http://") || url.startsWith("https://"); @@ -30,8 +28,6 @@ export class Tendermint34Client { /** * Creates a new Tendermint client given an RPC client. - * - * If the adaptor is not set an auto-detection is attempted. */ public static async create(rpcClient: RpcClient): Promise { // For some very strange reason I don't understand, tests start to fail on some systems @@ -63,7 +59,7 @@ export class Tendermint34Client { private readonly r: Responses; /** - * Use `Client.connect` or `Client.create` to create an instance. + * Use `Tendermint34Client.connect` or `Tendermint34Client.create` to create an instance. */ private constructor(client: RpcClient) { this.client = client; From b9c08ac6e26a3e242a2b514f57e524ee55154e75 Mon Sep 17 00:00:00 2001 From: willclarktech Date: Tue, 8 Jun 2021 16:19:43 +0200 Subject: [PATCH 05/13] tendermint-rpc: Remove adaptor parameter from Tendermint33Client --- .../tendermint33/tendermint33client.spec.ts | 52 +++++++++---------- .../src/tendermint33/tendermint33client.ts | 24 ++++----- 2 files changed, 36 insertions(+), 40 deletions(-) diff --git a/packages/tendermint-rpc/src/tendermint33/tendermint33client.spec.ts b/packages/tendermint-rpc/src/tendermint33/tendermint33client.spec.ts index 4b560d62..05961c91 100644 --- a/packages/tendermint-rpc/src/tendermint33/tendermint33client.spec.ts +++ b/packages/tendermint-rpc/src/tendermint33/tendermint33client.spec.ts @@ -34,7 +34,7 @@ function defaultTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expecte it("can connect to Tendermint with known version", async () => { pendingWithoutTendermint(); - const client = await Tendermint33Client.create(rpcFactory(), adaptor); + const client = await Tendermint33Client.create(rpcFactory()); expect(await client.abciInfo()).toBeTruthy(); client.disconnect(); }); @@ -42,7 +42,7 @@ function defaultTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expecte it("can get genesis", async () => { pendingWithoutTendermint(); - const client = await Tendermint33Client.create(rpcFactory(), adaptor); + const client = await Tendermint33Client.create(rpcFactory()); const genesis = await client.genesis(); expect(genesis).toBeTruthy(); client.disconnect(); @@ -50,7 +50,7 @@ function defaultTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expecte it("can broadcast a transaction", async () => { pendingWithoutTendermint(); - const client = await Tendermint33Client.create(rpcFactory(), adaptor); + const client = await Tendermint33Client.create(rpcFactory()); const tx = buildKvTx(randomString(), randomString()); const response = await client.broadcastTxCommit({ tx: tx }); @@ -68,7 +68,7 @@ function defaultTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expecte it("gets the same tx hash from backend as calculated locally", async () => { pendingWithoutTendermint(); - const client = await Tendermint33Client.create(rpcFactory(), adaptor); + const client = await Tendermint33Client.create(rpcFactory()); const tx = buildKvTx(randomString(), randomString()); const calculatedTxHash = adaptor.hashTx(tx); @@ -80,7 +80,7 @@ function defaultTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expecte it("can query the state", async () => { pendingWithoutTendermint(); - const client = await Tendermint33Client.create(rpcFactory(), adaptor); + const client = await Tendermint33Client.create(rpcFactory()); const key = randomString(); const value = randomString(); @@ -99,7 +99,7 @@ function defaultTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expecte it("can get a commit", async () => { pendingWithoutTendermint(); - const client = await Tendermint33Client.create(rpcFactory(), adaptor); + const client = await Tendermint33Client.create(rpcFactory()); const response = await client.commit(4); expect(response).toBeTruthy(); @@ -114,7 +114,7 @@ function defaultTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expecte it("can get validators", async () => { pendingWithoutTendermint(); - const client = await Tendermint33Client.create(rpcFactory(), adaptor); + const client = await Tendermint33Client.create(rpcFactory()); const response = await client.validators({}); expect(response).toBeTruthy(); @@ -132,7 +132,7 @@ function defaultTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expecte it("can get all validators", async () => { pendingWithoutTendermint(); - const client = await Tendermint33Client.create(rpcFactory(), adaptor); + const client = await Tendermint33Client.create(rpcFactory()); const response = await client.validatorsAll(); expect(response).toBeTruthy(); @@ -150,7 +150,7 @@ function defaultTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expecte it("can call a bunch of methods", async () => { pendingWithoutTendermint(); - const client = await Tendermint33Client.create(rpcFactory(), adaptor); + const client = await Tendermint33Client.create(rpcFactory()); expect(await client.block()).toBeTruthy(); expect(await client.genesis()).toBeTruthy(); @@ -162,7 +162,7 @@ function defaultTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expecte describe("status", () => { it("works", async () => { pendingWithoutTendermint(); - const client = await Tendermint33Client.create(rpcFactory(), adaptor); + const client = await Tendermint33Client.create(rpcFactory()); const status = await client.status(); @@ -192,7 +192,7 @@ function defaultTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expecte describe("blockResults", () => { it("works", async () => { pendingWithoutTendermint(); - const client = await Tendermint33Client.create(rpcFactory(), adaptor); + const client = await Tendermint33Client.create(rpcFactory()); const height = 3; const results = await client.blockResults(height); @@ -208,7 +208,7 @@ function defaultTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expecte describe("blockchain", () => { it("returns latest in descending order by default", async () => { pendingWithoutTendermint(); - const client = await Tendermint33Client.create(rpcFactory(), adaptor); + const client = await Tendermint33Client.create(rpcFactory()); // Run in parallel to increase chance there is no block between the calls const [status, blockchain] = await Promise.all([client.status(), client.blockchain()]); @@ -225,7 +225,7 @@ function defaultTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expecte it("can limit by maxHeight", async () => { pendingWithoutTendermint(); - const client = await Tendermint33Client.create(rpcFactory(), adaptor); + const client = await Tendermint33Client.create(rpcFactory()); const height = (await client.status()).syncInfo.latestBlockHeight; const blockchain = await client.blockchain(undefined, height - 1); @@ -239,7 +239,7 @@ function defaultTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expecte it("works with maxHeight in the future", async () => { pendingWithoutTendermint(); - const client = await Tendermint33Client.create(rpcFactory(), adaptor); + const client = await Tendermint33Client.create(rpcFactory()); const height = (await client.status()).syncInfo.latestBlockHeight; const blockchain = await client.blockchain(undefined, height + 20); @@ -253,7 +253,7 @@ function defaultTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expecte it("can limit by minHeight and maxHeight", async () => { pendingWithoutTendermint(); - const client = await Tendermint33Client.create(rpcFactory(), adaptor); + const client = await Tendermint33Client.create(rpcFactory()); const height = (await client.status()).syncInfo.latestBlockHeight; const blockchain = await client.blockchain(height - 2, height - 1); @@ -267,7 +267,7 @@ function defaultTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expecte it("contains all the info", async () => { pendingWithoutTendermint(); - const client = await Tendermint33Client.create(rpcFactory(), adaptor); + const client = await Tendermint33Client.create(rpcFactory()); const height = (await client.status()).syncInfo.latestBlockHeight; const blockchain = await client.blockchain(height - 1, height - 1); @@ -297,7 +297,7 @@ function defaultTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expecte describe("tx", () => { it("can query a tx properly", async () => { pendingWithoutTendermint(); - const client = await Tendermint33Client.create(rpcFactory(), adaptor); + const client = await Tendermint33Client.create(rpcFactory()); const find = randomString(); const me = randomString(); @@ -354,7 +354,7 @@ function defaultTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expecte beforeAll(async () => { if (tendermintEnabled()) { - const client = await Tendermint33Client.create(rpcFactory(), adaptor); + const client = await Tendermint33Client.create(rpcFactory()); // eslint-disable-next-line no-inner-declarations async function sendTx(): Promise { @@ -380,7 +380,7 @@ function defaultTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expecte it("can paginate over txSearch results", async () => { pendingWithoutTendermint(); - const client = await Tendermint33Client.create(rpcFactory(), adaptor); + const client = await Tendermint33Client.create(rpcFactory()); const query = buildQuery({ tags: [{ key: "app.key", value: key }] }); @@ -399,7 +399,7 @@ function defaultTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expecte it("can get all search results in one call", async () => { pendingWithoutTendermint(); - const client = await Tendermint33Client.create(rpcFactory(), adaptor); + const client = await Tendermint33Client.create(rpcFactory()); const query = buildQuery({ tags: [{ key: "app.key", value: key }] }); @@ -424,7 +424,7 @@ function websocketTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expec (async () => { const events: responses.NewBlockHeaderEvent[] = []; - const client = await Tendermint33Client.create(rpcFactory(), adaptor); + const client = await Tendermint33Client.create(rpcFactory()); const stream = client.subscribeNewBlockHeader(); expect(stream).toBeTruthy(); const subscription = stream.subscribe({ @@ -482,7 +482,7 @@ function websocketTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expec const transactionData2 = buildKvTx(randomString(), randomString()); const events: responses.NewBlockEvent[] = []; - const client = await Tendermint33Client.create(rpcFactory(), adaptor); + const client = await Tendermint33Client.create(rpcFactory()); const stream = client.subscribeNewBlock(); const subscription = stream.subscribe({ next: (event) => { @@ -538,7 +538,7 @@ function websocketTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expec pendingWithoutTendermint(); const events: responses.TxEvent[] = []; - const client = await Tendermint33Client.create(rpcFactory(), adaptor); + const client = await Tendermint33Client.create(rpcFactory()); const stream = client.subscribeTx(); const subscription = stream.subscribe({ next: (event) => { @@ -582,7 +582,7 @@ function websocketTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expec const transactionData2 = buildKvTx(randomString(), randomString()); const events: responses.TxEvent[] = []; - const client = await Tendermint33Client.create(rpcFactory(), adaptor); + const client = await Tendermint33Client.create(rpcFactory()); const query = buildQuery({ tags: [{ key: "app.creator", value: expected.appCreator }] }); const stream = client.subscribeTx(query); expect(stream).toBeTruthy(); @@ -620,7 +620,7 @@ function websocketTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expec it("can unsubscribe and re-subscribe to the same stream", async () => { pendingWithoutTendermint(); - const client = await Tendermint33Client.create(rpcFactory(), adaptor); + const client = await Tendermint33Client.create(rpcFactory()); const stream = client.subscribeNewBlockHeader(); const event1 = await firstEvent(stream); @@ -653,7 +653,7 @@ function websocketTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expec it("can subscribe twice", async () => { pendingWithoutTendermint(); - const client = await Tendermint33Client.create(rpcFactory(), adaptor); + const client = await Tendermint33Client.create(rpcFactory()); const stream1 = client.subscribeNewBlockHeader(); const stream2 = client.subscribeNewBlockHeader(); diff --git a/packages/tendermint-rpc/src/tendermint33/tendermint33client.ts b/packages/tendermint-rpc/src/tendermint33/tendermint33client.ts index 4f4c890a..321ee920 100644 --- a/packages/tendermint-rpc/src/tendermint33/tendermint33client.ts +++ b/packages/tendermint-rpc/src/tendermint33/tendermint33client.ts @@ -9,8 +9,8 @@ import { SubscriptionEvent, WebsocketClient, } from "../rpcclients"; -import { Adaptor, Decoder, Encoder, Params, Responses } from "./adaptor"; -import { adaptorForVersion } from "./adaptors"; +import { Decoder, Encoder, Params, Responses } from "./adaptor"; +import { adaptor33 } from "./adaptors"; import * as requests from "./requests"; import * as responses from "./responses"; @@ -19,27 +19,23 @@ export class Tendermint33Client { * Creates a new Tendermint client for the given endpoint. * * Uses HTTP when the URL schema is http or https. Uses WebSockets otherwise. - * - * If the adaptor is not set an auto-detection is attempted. */ - public static async connect(url: string, adaptor?: Adaptor): Promise { + public static async connect(url: string): Promise { const useHttp = url.startsWith("http://") || url.startsWith("https://"); const rpcClient = useHttp ? new HttpClient(url) : new WebsocketClient(url); - return Tendermint33Client.create(rpcClient, adaptor); + return Tendermint33Client.create(rpcClient); } /** * Creates a new Tendermint client given an RPC client. - * - * If the adaptor is not set an auto-detection is attempted. */ - public static async create(rpcClient: RpcClient, adaptor?: Adaptor): Promise { + public static async create(rpcClient: RpcClient): Promise { // For some very strange reason I don't understand, tests start to fail on some systems // (our CI) when skipping the status call before doing other queries. Sleeping a little // while did not help. Thus we query the version as a way to say "hi" to the backend, // even in cases where we don't use the result. const version = await this.detectVersion(rpcClient); - return new Tendermint33Client(rpcClient, adaptor || adaptorForVersion(version)); + return new Tendermint33Client(rpcClient); } private static async detectVersion(client: RpcClient): Promise { @@ -63,12 +59,12 @@ export class Tendermint33Client { private readonly r: Responses; /** - * Use `Client.connect` or `Tendermint33Client.create` to create an instance. + * Use `Tendermint33Client.connect` or `Tendermint33Client.create` to create an instance. */ - private constructor(client: RpcClient, adaptor: Adaptor) { + private constructor(client: RpcClient) { this.client = client; - this.p = adaptor.params; - this.r = adaptor.responses; + this.p = adaptor33.params; + this.r = adaptor33.responses; } public disconnect(): void { From 1e8df0f7bcee27e24f54b896b882875b69461308 Mon Sep 17 00:00:00 2001 From: willclarktech Date: Tue, 8 Jun 2021 16:24:05 +0200 Subject: [PATCH 06/13] tendermint-rpc: Update test suite --- .../tendermint33/tendermint33client.spec.ts | 87 +++++++++---------- 1 file changed, 42 insertions(+), 45 deletions(-) diff --git a/packages/tendermint-rpc/src/tendermint33/tendermint33client.spec.ts b/packages/tendermint-rpc/src/tendermint33/tendermint33client.spec.ts index 05961c91..dde83597 100644 --- a/packages/tendermint-rpc/src/tendermint33/tendermint33client.spec.ts +++ b/packages/tendermint-rpc/src/tendermint33/tendermint33client.spec.ts @@ -16,13 +16,12 @@ import { tendermintInstances, tendermintSearchIndexUpdated, } from "../testutil.spec"; -import { Adaptor } from "./adaptor"; -import { adaptorForVersion } from "./adaptors"; +import { adaptor33 } from "./adaptors"; import { Tendermint33Client } from "./tendermint33client"; import { buildQuery } from "./requests"; import * as responses from "./responses"; -function defaultTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expected: ExpectedValues): void { +function defaultTestSuite(rpcFactory: () => RpcClient, expected: ExpectedValues): void { describe("create", () => { it("can auto-discover Tendermint version and communicate", async () => { pendingWithoutTendermint(); @@ -70,7 +69,7 @@ function defaultTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expecte pendingWithoutTendermint(); const client = await Tendermint33Client.create(rpcFactory()); const tx = buildKvTx(randomString(), randomString()); - const calculatedTxHash = adaptor.hashTx(tx); + const calculatedTxHash = adaptor33.hashTx(tx); const response = await client.broadcastTxCommit({ tx: tx }); expect(response.hash).toEqual(calculatedTxHash); @@ -416,7 +415,7 @@ function defaultTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expecte }); } -function websocketTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expected: ExpectedValues): void { +function websocketTestSuite(rpcFactory: () => RpcClient, expected: ExpectedValues): void { it("can subscribe to block header events", (done) => { pendingWithoutTendermint(); @@ -665,48 +664,46 @@ function websocketTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expec }); } -for (const { url, version, expected } of tendermintInstances) { - describe(`Client ${version}`, () => { - it("can connect to a given url", async () => { - pendingWithoutTendermint(); +describe(`Tendermint33Client`, () => { + const { url, expected } = tendermintInstances[0]; - // default connection - { - const client = await Tendermint33Client.connect(url); - const info = await client.abciInfo(); - expect(info).toBeTruthy(); - client.disconnect(); - } + it("can connect to a given url", async () => { + pendingWithoutTendermint(); - // http connection - { - const client = await Tendermint33Client.connect("http://" + url); - const info = await client.abciInfo(); - expect(info).toBeTruthy(); - client.disconnect(); - } + // default connection + { + const client = await Tendermint33Client.connect(url); + const info = await client.abciInfo(); + expect(info).toBeTruthy(); + client.disconnect(); + } - // ws connection - { - const client = await Tendermint33Client.connect("ws://" + url); - const info = await client.abciInfo(); - expect(info).toBeTruthy(); - client.disconnect(); - } - }); + // http connection + { + const client = await Tendermint33Client.connect("http://" + url); + const info = await client.abciInfo(); + expect(info).toBeTruthy(); + client.disconnect(); + } - describe("With HttpClient", () => { - const adaptor = adaptorForVersion(version); - defaultTestSuite(() => new HttpClient(url), adaptor, expected); - }); - - describe("With WebsocketClient", () => { - // don't print out WebSocket errors if marked pending - const onError = process.env.TENDERMINT_ENABLED ? console.error : () => 0; - const factory = (): WebsocketClient => new WebsocketClient(url, onError); - const adaptor = adaptorForVersion(version); - defaultTestSuite(factory, adaptor, expected); - websocketTestSuite(factory, adaptor, expected); - }); + // ws connection + { + const client = await Tendermint33Client.connect("ws://" + url); + const info = await client.abciInfo(); + expect(info).toBeTruthy(); + client.disconnect(); + } }); -} + + describe("With HttpClient", () => { + defaultTestSuite(() => new HttpClient(url), expected); + }); + + describe("With WebsocketClient", () => { + // don't print out WebSocket errors if marked pending + const onError = process.env.TENDERMINT_ENABLED ? console.error : () => 0; + const factory = (): WebsocketClient => new WebsocketClient(url, onError); + defaultTestSuite(factory, expected); + websocketTestSuite(factory, expected); + }); +}); From 3bcdd03dcc2656f9316163980050d84131b4d7c2 Mon Sep 17 00:00:00 2001 From: willclarktech Date: Tue, 8 Jun 2021 16:34:17 +0200 Subject: [PATCH 07/13] tendermint-rpc: Adjust exports --- packages/tendermint-rpc/src/index.ts | 4 +--- packages/tendermint-rpc/src/tendermint33/index.ts | 5 +++-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/packages/tendermint-rpc/src/index.ts b/packages/tendermint-rpc/src/index.ts index 4f5bec6d..4c741d23 100644 --- a/packages/tendermint-rpc/src/index.ts +++ b/packages/tendermint-rpc/src/index.ts @@ -20,10 +20,8 @@ export { ValidatorSecp256k1Pubkey, ValidatorPubkey, } from "./types"; +export * as tendermint33 from "./tendermint33"; export { - adaptor33, - adaptor34, - Adaptor, Tendermint33Client, AbciInfoResponse, AbciQueryResponse, diff --git a/packages/tendermint-rpc/src/tendermint33/index.ts b/packages/tendermint-rpc/src/tendermint33/index.ts index 7cce2e04..979eed37 100644 --- a/packages/tendermint-rpc/src/tendermint33/index.ts +++ b/packages/tendermint-rpc/src/tendermint33/index.ts @@ -1,5 +1,6 @@ -export { adaptor33, adaptor34 } from "./adaptors"; -export { Adaptor } from "./adaptor"; +// Note: all exports in this module are public available via +// `import { tendermint33 } from "@cosmjs/tendermint-rpc"` + export { Tendermint33Client } from "./tendermint33client"; export { AbciInfoRequest, From a31c6f0f341e047b50d5390e9f34ed7dd8c52ec2 Mon Sep 17 00:00:00 2001 From: willclarktech Date: Tue, 8 Jun 2021 16:35:57 +0200 Subject: [PATCH 08/13] tendermint-rpc: Simplify 33 adaptor --- .../src/tendermint33/adaptors/index.ts | 42 +------------------ 1 file changed, 1 insertion(+), 41 deletions(-) diff --git a/packages/tendermint-rpc/src/tendermint33/adaptors/index.ts b/packages/tendermint-rpc/src/tendermint33/adaptors/index.ts index 7097e36a..00efaf3e 100644 --- a/packages/tendermint-rpc/src/tendermint33/adaptors/index.ts +++ b/packages/tendermint-rpc/src/tendermint33/adaptors/index.ts @@ -1,42 +1,2 @@ /* eslint-disable @typescript-eslint/naming-convention */ -import { Adaptor } from "../adaptor"; -import { v0_33 } from "./v0-33"; - -/** - * Adaptor for Tendermint 0.33. - * - * Use this to skip auto-detection: - * - * ``` - * import { adaptor33, Client as TendermintClient } from "@cosmjs/tendermint-rpc"; - * // ... - * const client = await TendermintClient.connect(url, adaptor33); - * ``` - */ -export const adaptor33 = v0_33; - -/** - * Adaptor for Tendermint 0.34. - * - * Use this to skip auto-detection: - * - * ``` - * import { adaptor34, Client as TendermintClient } from "@cosmjs/tendermint-rpc"; - * // ... - * const client = await TendermintClient.connect(url, adaptor34); - * ``` - */ -export const adaptor34 = v0_33; // With this alias we can swap out the implementation without affecting caller code. - -/** - * Returns an Adaptor implementation for a given tendermint version. - * Throws when version is not supported. - * - * @param version full Tendermint version string, e.g. "0.20.1" - */ -export function adaptorForVersion(_version: string): Adaptor { - // Note: In some cases, Tendermint 0.34 returns an empty version value. - // This supports 0.33 and 0.34 now, no matter which version you provide. - // Very soon this function becomes obsolete (https://github.com/cosmos/cosmjs/issues/789). - return v0_33; -} +export { v0_33 as adaptor33 } from "./v0-33"; From 351e5e65639665bd2a254a5d965af71c2e65ae55 Mon Sep 17 00:00:00 2001 From: willclarktech Date: Tue, 8 Jun 2021 16:49:55 +0200 Subject: [PATCH 09/13] tendermint-rpc: Rearrange adaptor code --- .../{adaptors/v0-33 => adaptor}/index.ts | 8 +++++--- .../{adaptors/v0-33 => adaptor}/requests.ts | 6 +++--- .../{adaptors/v0-33 => adaptor}/responses.ts | 12 ++++++------ .../tendermint33/{adaptor.ts => adaptor/types.ts} | 6 +++--- .../src/tendermint33/adaptors/index.ts | 2 -- .../src/tendermint33/tendermint33client.spec.ts | 2 +- .../src/tendermint33/tendermint33client.ts | 3 +-- .../{adaptors/v0-34 => adaptor}/index.ts | 8 +++++--- .../{adaptors/v0-34 => adaptor}/requests.ts | 6 +++--- .../{adaptors/v0-34 => adaptor}/responses.ts | 12 ++++++------ .../tendermint34/{adaptor.ts => adaptor/types.ts} | 6 +++--- .../src/tendermint34/adaptors/index.ts | 2 -- .../src/tendermint34/tendermint34client.spec.ts | 2 +- .../src/tendermint34/tendermint34client.ts | 3 +-- 14 files changed, 38 insertions(+), 40 deletions(-) rename packages/tendermint-rpc/src/tendermint33/{adaptors/v0-33 => adaptor}/index.ts (55%) rename packages/tendermint-rpc/src/tendermint33/{adaptors/v0-33 => adaptor}/requests.ts (96%) rename packages/tendermint-rpc/src/tendermint33/{adaptors/v0-33 => adaptor}/responses.ts (99%) rename packages/tendermint-rpc/src/tendermint33/{adaptor.ts => adaptor/types.ts} (96%) delete mode 100644 packages/tendermint-rpc/src/tendermint33/adaptors/index.ts rename packages/tendermint-rpc/src/tendermint34/{adaptors/v0-34 => adaptor}/index.ts (55%) rename packages/tendermint-rpc/src/tendermint34/{adaptors/v0-34 => adaptor}/requests.ts (97%) rename packages/tendermint-rpc/src/tendermint34/{adaptors/v0-34 => adaptor}/responses.ts (99%) rename packages/tendermint-rpc/src/tendermint34/{adaptor.ts => adaptor/types.ts} (96%) delete mode 100644 packages/tendermint-rpc/src/tendermint34/adaptors/index.ts diff --git a/packages/tendermint-rpc/src/tendermint33/adaptors/v0-33/index.ts b/packages/tendermint-rpc/src/tendermint33/adaptor/index.ts similarity index 55% rename from packages/tendermint-rpc/src/tendermint33/adaptors/v0-33/index.ts rename to packages/tendermint-rpc/src/tendermint33/adaptor/index.ts index e80318a3..85d222a6 100644 --- a/packages/tendermint-rpc/src/tendermint33/adaptors/v0-33/index.ts +++ b/packages/tendermint-rpc/src/tendermint33/adaptor/index.ts @@ -1,10 +1,12 @@ /* eslint-disable @typescript-eslint/naming-convention */ -import { Adaptor } from "../../adaptor"; -import { hashBlock, hashTx } from "../../hasher"; +import { hashBlock, hashTx } from "../hasher"; import { Params } from "./requests"; import { Responses } from "./responses"; +import { Adaptor } from "./types"; -export const v0_33: Adaptor = { +export { Decoder, Encoder, Params, Responses } from "./types"; + +export const adaptor33: Adaptor = { params: Params, responses: Responses, hashTx: hashTx, diff --git a/packages/tendermint-rpc/src/tendermint33/adaptors/v0-33/requests.ts b/packages/tendermint-rpc/src/tendermint33/adaptor/requests.ts similarity index 96% rename from packages/tendermint-rpc/src/tendermint33/adaptors/v0-33/requests.ts rename to packages/tendermint-rpc/src/tendermint33/adaptor/requests.ts index 54436f7a..512ed0cb 100644 --- a/packages/tendermint-rpc/src/tendermint33/adaptors/v0-33/requests.ts +++ b/packages/tendermint-rpc/src/tendermint33/adaptor/requests.ts @@ -2,9 +2,9 @@ import { toBase64, toHex } from "@cosmjs/encoding"; import { JsonRpcRequest } from "@cosmjs/json-rpc"; -import { createJsonRpcRequest } from "../../../jsonrpc"; -import { assertNotEmpty, Integer, may } from "../../encodings"; -import * as requests from "../../requests"; +import { createJsonRpcRequest } from "../../jsonrpc"; +import { assertNotEmpty, Integer, may } from "../encodings"; +import * as requests from "../requests"; interface HeightParam { readonly height?: number; diff --git a/packages/tendermint-rpc/src/tendermint33/adaptors/v0-33/responses.ts b/packages/tendermint-rpc/src/tendermint33/adaptor/responses.ts similarity index 99% rename from packages/tendermint-rpc/src/tendermint33/adaptors/v0-33/responses.ts rename to packages/tendermint-rpc/src/tendermint33/adaptor/responses.ts index 381904e4..b7e78c22 100644 --- a/packages/tendermint-rpc/src/tendermint33/adaptors/v0-33/responses.ts +++ b/packages/tendermint-rpc/src/tendermint33/adaptor/responses.ts @@ -3,9 +3,9 @@ import { fromBase64, fromHex } from "@cosmjs/encoding"; import { JsonRpcSuccessResponse } from "@cosmjs/json-rpc"; import { assert } from "@cosmjs/utils"; -import { fromRfc3339WithNanoseconds } from "../../../dates"; -import { SubscriptionEvent } from "../../../rpcclients"; -import { BlockIdFlag, CommitSignature, ValidatorPubkey } from "../../../types"; +import { fromRfc3339WithNanoseconds } from "../../dates"; +import { SubscriptionEvent } from "../../rpcclients"; +import { BlockIdFlag, CommitSignature, ValidatorPubkey } from "../../types"; import { assertArray, assertBoolean, @@ -18,9 +18,9 @@ import { Integer, may, optional, -} from "../../encodings"; -import { hashTx } from "../../hasher"; -import * as responses from "../../responses"; +} from "../encodings"; +import { hashTx } from "../hasher"; +import * as responses from "../responses"; interface AbciInfoResult { readonly response: RpcAbciInfoResponse; diff --git a/packages/tendermint-rpc/src/tendermint33/adaptor.ts b/packages/tendermint-rpc/src/tendermint33/adaptor/types.ts similarity index 96% rename from packages/tendermint-rpc/src/tendermint33/adaptor.ts rename to packages/tendermint-rpc/src/tendermint33/adaptor/types.ts index 7248942d..9ecd4ab4 100644 --- a/packages/tendermint-rpc/src/tendermint33/adaptor.ts +++ b/packages/tendermint-rpc/src/tendermint33/adaptor/types.ts @@ -1,8 +1,8 @@ import { JsonRpcRequest, JsonRpcSuccessResponse } from "@cosmjs/json-rpc"; -import { SubscriptionEvent } from "../rpcclients"; -import * as requests from "./requests"; -import * as responses from "./responses"; +import { SubscriptionEvent } from "../../rpcclients"; +import * as requests from "../requests"; +import * as responses from "../responses"; export interface Adaptor { readonly params: Params; diff --git a/packages/tendermint-rpc/src/tendermint33/adaptors/index.ts b/packages/tendermint-rpc/src/tendermint33/adaptors/index.ts deleted file mode 100644 index 00efaf3e..00000000 --- a/packages/tendermint-rpc/src/tendermint33/adaptors/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -/* eslint-disable @typescript-eslint/naming-convention */ -export { v0_33 as adaptor33 } from "./v0-33"; diff --git a/packages/tendermint-rpc/src/tendermint33/tendermint33client.spec.ts b/packages/tendermint-rpc/src/tendermint33/tendermint33client.spec.ts index dde83597..fe3c4c2f 100644 --- a/packages/tendermint-rpc/src/tendermint33/tendermint33client.spec.ts +++ b/packages/tendermint-rpc/src/tendermint33/tendermint33client.spec.ts @@ -16,7 +16,7 @@ import { tendermintInstances, tendermintSearchIndexUpdated, } from "../testutil.spec"; -import { adaptor33 } from "./adaptors"; +import { adaptor33 } from "./adaptor"; import { Tendermint33Client } from "./tendermint33client"; import { buildQuery } from "./requests"; import * as responses from "./responses"; diff --git a/packages/tendermint-rpc/src/tendermint33/tendermint33client.ts b/packages/tendermint-rpc/src/tendermint33/tendermint33client.ts index 321ee920..1b32911f 100644 --- a/packages/tendermint-rpc/src/tendermint33/tendermint33client.ts +++ b/packages/tendermint-rpc/src/tendermint33/tendermint33client.ts @@ -9,8 +9,7 @@ import { SubscriptionEvent, WebsocketClient, } from "../rpcclients"; -import { Decoder, Encoder, Params, Responses } from "./adaptor"; -import { adaptor33 } from "./adaptors"; +import { adaptor33, Decoder, Encoder, Params, Responses } from "./adaptor"; import * as requests from "./requests"; import * as responses from "./responses"; diff --git a/packages/tendermint-rpc/src/tendermint34/adaptors/v0-34/index.ts b/packages/tendermint-rpc/src/tendermint34/adaptor/index.ts similarity index 55% rename from packages/tendermint-rpc/src/tendermint34/adaptors/v0-34/index.ts rename to packages/tendermint-rpc/src/tendermint34/adaptor/index.ts index a8d43a92..61a5d835 100644 --- a/packages/tendermint-rpc/src/tendermint34/adaptors/v0-34/index.ts +++ b/packages/tendermint-rpc/src/tendermint34/adaptor/index.ts @@ -1,10 +1,12 @@ /* eslint-disable @typescript-eslint/naming-convention */ -import { Adaptor } from "../../adaptor"; -import { hashBlock, hashTx } from "../../hasher"; +import { hashBlock, hashTx } from "../hasher"; import { Params } from "./requests"; import { Responses } from "./responses"; +import { Adaptor } from "./types"; -export const v0_34: Adaptor = { +export { Decoder, Encoder, Params, Responses } from "./types"; + +export const adaptor34: Adaptor = { params: Params, responses: Responses, hashTx: hashTx, diff --git a/packages/tendermint-rpc/src/tendermint34/adaptors/v0-34/requests.ts b/packages/tendermint-rpc/src/tendermint34/adaptor/requests.ts similarity index 97% rename from packages/tendermint-rpc/src/tendermint34/adaptors/v0-34/requests.ts rename to packages/tendermint-rpc/src/tendermint34/adaptor/requests.ts index 1dc11c4c..c835bea1 100644 --- a/packages/tendermint-rpc/src/tendermint34/adaptors/v0-34/requests.ts +++ b/packages/tendermint-rpc/src/tendermint34/adaptor/requests.ts @@ -2,9 +2,9 @@ import { toBase64, toHex } from "@cosmjs/encoding"; import { JsonRpcRequest } from "@cosmjs/json-rpc"; -import { createJsonRpcRequest } from "../../../jsonrpc"; -import { assertNotEmpty, Integer, may } from "../../encodings"; -import * as requests from "../../requests"; +import { createJsonRpcRequest } from "../../jsonrpc"; +import { assertNotEmpty, Integer, may } from "../encodings"; +import * as requests from "../requests"; interface HeightParam { readonly height?: number; diff --git a/packages/tendermint-rpc/src/tendermint34/adaptors/v0-34/responses.ts b/packages/tendermint-rpc/src/tendermint34/adaptor/responses.ts similarity index 99% rename from packages/tendermint-rpc/src/tendermint34/adaptors/v0-34/responses.ts rename to packages/tendermint-rpc/src/tendermint34/adaptor/responses.ts index 90be82da..6943e44e 100644 --- a/packages/tendermint-rpc/src/tendermint34/adaptors/v0-34/responses.ts +++ b/packages/tendermint-rpc/src/tendermint34/adaptor/responses.ts @@ -3,9 +3,9 @@ import { fromBase64, fromHex } from "@cosmjs/encoding"; import { JsonRpcSuccessResponse } from "@cosmjs/json-rpc"; import { assert } from "@cosmjs/utils"; -import { DateWithNanoseconds, fromRfc3339WithNanoseconds } from "../../../dates"; -import { SubscriptionEvent } from "../../../rpcclients"; -import { BlockIdFlag, CommitSignature, ValidatorPubkey } from "../../../types"; +import { DateWithNanoseconds, fromRfc3339WithNanoseconds } from "../../dates"; +import { SubscriptionEvent } from "../../rpcclients"; +import { BlockIdFlag, CommitSignature, ValidatorPubkey } from "../../types"; import { assertArray, assertBoolean, @@ -18,9 +18,9 @@ import { Integer, may, optional, -} from "../../encodings"; -import { hashTx } from "../../hasher"; -import * as responses from "../../responses"; +} from "../encodings"; +import { hashTx } from "../hasher"; +import * as responses from "../responses"; interface AbciInfoResult { readonly response: RpcAbciInfoResponse; diff --git a/packages/tendermint-rpc/src/tendermint34/adaptor.ts b/packages/tendermint-rpc/src/tendermint34/adaptor/types.ts similarity index 96% rename from packages/tendermint-rpc/src/tendermint34/adaptor.ts rename to packages/tendermint-rpc/src/tendermint34/adaptor/types.ts index 44c06917..a57ec8d3 100644 --- a/packages/tendermint-rpc/src/tendermint34/adaptor.ts +++ b/packages/tendermint-rpc/src/tendermint34/adaptor/types.ts @@ -1,8 +1,8 @@ import { JsonRpcRequest, JsonRpcSuccessResponse } from "@cosmjs/json-rpc"; -import { SubscriptionEvent } from "../rpcclients"; -import * as requests from "./requests"; -import * as responses from "./responses"; +import { SubscriptionEvent } from "../../rpcclients"; +import * as requests from "../requests"; +import * as responses from "../responses"; export interface Adaptor { readonly params: Params; diff --git a/packages/tendermint-rpc/src/tendermint34/adaptors/index.ts b/packages/tendermint-rpc/src/tendermint34/adaptors/index.ts deleted file mode 100644 index 74c16d9b..00000000 --- a/packages/tendermint-rpc/src/tendermint34/adaptors/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -/* eslint-disable @typescript-eslint/naming-convention */ -export { v0_34 as adaptor34 } from "./v0-34"; diff --git a/packages/tendermint-rpc/src/tendermint34/tendermint34client.spec.ts b/packages/tendermint-rpc/src/tendermint34/tendermint34client.spec.ts index 006b33a3..823dabe1 100644 --- a/packages/tendermint-rpc/src/tendermint34/tendermint34client.spec.ts +++ b/packages/tendermint-rpc/src/tendermint34/tendermint34client.spec.ts @@ -16,7 +16,7 @@ import { tendermintInstances, tendermintSearchIndexUpdated, } from "../testutil.spec"; -import { adaptor34 } from "./adaptors"; +import { adaptor34 } from "./adaptor"; import { buildQuery } from "./requests"; import * as responses from "./responses"; import { Tendermint34Client } from "./tendermint34client"; diff --git a/packages/tendermint-rpc/src/tendermint34/tendermint34client.ts b/packages/tendermint-rpc/src/tendermint34/tendermint34client.ts index bdf3f489..4650b7a9 100644 --- a/packages/tendermint-rpc/src/tendermint34/tendermint34client.ts +++ b/packages/tendermint-rpc/src/tendermint34/tendermint34client.ts @@ -9,8 +9,7 @@ import { SubscriptionEvent, WebsocketClient, } from "../rpcclients"; -import { Decoder, Encoder, Params, Responses } from "./adaptor"; -import { adaptor34 } from "./adaptors"; +import { adaptor34, Decoder, Encoder, Params, Responses } from "./adaptor"; import * as requests from "./requests"; import * as responses from "./responses"; From a172327a2ab53159dc6104bcf723c7bd10d3fcb2 Mon Sep 17 00:00:00 2001 From: willclarktech Date: Tue, 8 Jun 2021 17:04:32 +0200 Subject: [PATCH 10/13] tendermint-rpc: Remove eslint overrides --- packages/tendermint-rpc/src/tendermint33/adaptor/index.ts | 1 - packages/tendermint-rpc/src/tendermint34/adaptor/index.ts | 1 - 2 files changed, 2 deletions(-) diff --git a/packages/tendermint-rpc/src/tendermint33/adaptor/index.ts b/packages/tendermint-rpc/src/tendermint33/adaptor/index.ts index 85d222a6..a9309502 100644 --- a/packages/tendermint-rpc/src/tendermint33/adaptor/index.ts +++ b/packages/tendermint-rpc/src/tendermint33/adaptor/index.ts @@ -1,4 +1,3 @@ -/* eslint-disable @typescript-eslint/naming-convention */ import { hashBlock, hashTx } from "../hasher"; import { Params } from "./requests"; import { Responses } from "./responses"; diff --git a/packages/tendermint-rpc/src/tendermint34/adaptor/index.ts b/packages/tendermint-rpc/src/tendermint34/adaptor/index.ts index 61a5d835..4ef0b8cd 100644 --- a/packages/tendermint-rpc/src/tendermint34/adaptor/index.ts +++ b/packages/tendermint-rpc/src/tendermint34/adaptor/index.ts @@ -1,4 +1,3 @@ -/* eslint-disable @typescript-eslint/naming-convention */ import { hashBlock, hashTx } from "../hasher"; import { Params } from "./requests"; import { Responses } from "./responses"; From 7dd7a617bf585af055ea998d7c917103d5701141 Mon Sep 17 00:00:00 2001 From: willclarktech Date: Tue, 8 Jun 2021 17:06:20 +0200 Subject: [PATCH 11/13] tendermint-rpc: Fix unused variable name --- packages/tendermint-rpc/src/tendermint33/tendermint33client.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/tendermint-rpc/src/tendermint33/tendermint33client.ts b/packages/tendermint-rpc/src/tendermint33/tendermint33client.ts index 1b32911f..82b06852 100644 --- a/packages/tendermint-rpc/src/tendermint33/tendermint33client.ts +++ b/packages/tendermint-rpc/src/tendermint33/tendermint33client.ts @@ -33,7 +33,7 @@ export class Tendermint33Client { // (our CI) when skipping the status call before doing other queries. Sleeping a little // while did not help. Thus we query the version as a way to say "hi" to the backend, // even in cases where we don't use the result. - const version = await this.detectVersion(rpcClient); + const _version = await this.detectVersion(rpcClient); return new Tendermint33Client(rpcClient); } From 486ab01034a6f1dd37118fad60a91f47777caca5 Mon Sep 17 00:00:00 2001 From: willclarktech Date: Tue, 8 Jun 2021 17:16:52 +0200 Subject: [PATCH 12/13] Update CHANGELOG for Tendermint33Client --- CHANGELOG.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5d853e7d..b7a75832 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,13 +11,22 @@ and this project adheres to - @cosmjs/tendermint-rpc: `Tendermint34Client.blockSearch` and `Tendermint34Client.blockSearchAll` were added to allow searching blocks in Tendermint 0.34.9+ backends. +- @cosmjs/tendermint-rpc: `Tendermint33Client` has been added to provide support + for Tendermint v0.33. +- @cosmjs/tendermint-rpc: Exports relating to `Tendermint33Client` are now + available under `tendermint33`. -### Changes +### Changed - @cosmjs/tendermint-rpc: Make `tendermint34.Header.lastBlockId` and `tendermint34.Block.lastCommit` optional to better handle the case of height 1 where there is no previous block. +### Removed + +- @cosmjs/tendermint-rpc: `Client` has been removed. Please use + `Tendermint33Client` or `Tendermint34Client`, depending on your needs. + ### Fixed - @cosmjs/socket: Upgrade dependency "ws" to version 7 to avoid potential From 06739519f7d37635c6e534cfbf7b71336280d384 Mon Sep 17 00:00:00 2001 From: willclarktech Date: Tue, 8 Jun 2021 17:39:53 +0200 Subject: [PATCH 13/13] tendermint-rpc: Fix import --- .../tendermint-rpc/src/tendermint33/tendermint33client.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/tendermint-rpc/src/tendermint33/tendermint33client.spec.ts b/packages/tendermint-rpc/src/tendermint33/tendermint33client.spec.ts index fe3c4c2f..1c305f46 100644 --- a/packages/tendermint-rpc/src/tendermint33/tendermint33client.spec.ts +++ b/packages/tendermint-rpc/src/tendermint33/tendermint33client.spec.ts @@ -17,9 +17,9 @@ import { tendermintSearchIndexUpdated, } from "../testutil.spec"; import { adaptor33 } from "./adaptor"; -import { Tendermint33Client } from "./tendermint33client"; import { buildQuery } from "./requests"; import * as responses from "./responses"; +import { Tendermint33Client } from "./tendermint33client"; function defaultTestSuite(rpcFactory: () => RpcClient, expected: ExpectedValues): void { describe("create", () => {