Create LcdClientBaseOptions

This commit is contained in:
Simon Warta 2020-07-07 07:39:59 +02:00
parent dd5ef76a44
commit e6ac24a301
3 changed files with 35 additions and 44 deletions

View File

@ -9,7 +9,7 @@ import { LcdApiArray, LcdClient, normalizeArray } from "./lcdclient";
import { parseLogs } from "./logs";
import { MsgSend } from "./msgs";
import { makeCosmoshubPath, Secp256k1Pen } from "./pen";
import { BroadcastMode, TxsResponse } from "./restclient";
import { TxsResponse } from "./restclient";
import { SigningCosmosClient } from "./signingcosmosclient";
import cosmoshub from "./testdata/cosmoshub.json";
import {
@ -83,7 +83,7 @@ describe("LcdClient", () => {
}
it("works for no modules", async () => {
const client = LcdClient.withModules(wasmd.endpoint, BroadcastMode.Sync);
const client = LcdClient.withModules({ apiUrl: wasmd.endpoint });
expect(client).toBeTruthy();
});
@ -99,7 +99,7 @@ describe("LcdClient", () => {
};
}
const client = LcdClient.withModules(wasmd.endpoint, BroadcastMode.Sync, wasmClientRegisterer);
const client = LcdClient.withModules({ apiUrl: wasmd.endpoint }, wasmClientRegisterer);
const codes = await client.listCodeInfo();
expect(codes.length).toBeGreaterThanOrEqual(3);
expect(codes[0].id).toEqual(deployedErc20.codeId);
@ -136,8 +136,7 @@ describe("LcdClient", () => {
}
const client = LcdClient.withModules(
wasmd.endpoint,
BroadcastMode.Sync,
{ apiUrl: wasmd.endpoint },
registerWasmModule,
registerSupplyModule,
);

View File

@ -25,6 +25,11 @@ type LcdModule = Record<string, () => any>;
type LcdModuleSetup<M> = (base: LcdClient) => M;
export interface LcdClientBaseOptions {
readonly apiUrl: string;
readonly broadcastMode?: BroadcastMode;
}
// We want to get message data from 500 errors
// https://stackoverflow.com/questions/56577124/how-to-handle-500-error-message-with-axios
// this should be chained to catch one error and throw a more informative one
@ -49,27 +54,24 @@ function parseAxiosError(err: AxiosError): never {
export class LcdClient {
/** Constructs an LCD client with 0 modules */
public static withModules(apiUrl: string, broadcastMode: BroadcastMode): LcdClient;
public static withModules(options: LcdClientBaseOptions): LcdClient;
/** Constructs an LCD client with 1 modules */
/** Constructs an LCD client with 1 module */
public static withModules<A extends LcdModule>(
apiUrl: string,
broadcastMode: BroadcastMode,
options: LcdClientBaseOptions,
setupModuleA: LcdModuleSetup<A>,
): LcdClient & A;
/** Constructs an LCD client with 2 modules */
public static withModules<A extends LcdModule, B extends LcdModule>(
apiUrl: string,
broadcastMode: BroadcastMode,
options: LcdClientBaseOptions,
setupModuleA: LcdModuleSetup<A>,
setupModuleB: LcdModuleSetup<B>,
): LcdClient & A & B;
/** Constructs an LCD client with 3 modules */
public static withModules<A extends LcdModule, B extends LcdModule, C extends LcdModule>(
apiUrl: string,
broadcastMode: BroadcastMode,
options: LcdClientBaseOptions,
setupModuleA: LcdModuleSetup<A>,
setupModuleB: LcdModuleSetup<B>,
setupModuleC: LcdModuleSetup<C>,
@ -82,8 +84,7 @@ export class LcdClient {
C extends LcdModule,
D extends LcdModule
>(
apiUrl: string,
broadcastMode: BroadcastMode,
options: LcdClientBaseOptions,
setupModuleA: LcdModuleSetup<A>,
setupModuleB: LcdModuleSetup<B>,
setupModuleC: LcdModuleSetup<C>,
@ -98,8 +99,7 @@ export class LcdClient {
D extends LcdModule,
E extends LcdModule
>(
apiUrl: string,
broadcastMode: BroadcastMode,
options: LcdClientBaseOptions,
setupModuleA: LcdModuleSetup<A>,
setupModuleB: LcdModuleSetup<B>,
setupModuleC: LcdModuleSetup<C>,
@ -116,8 +116,7 @@ export class LcdClient {
E extends LcdModule,
F extends LcdModule
>(
apiUrl: string,
broadcastMode: BroadcastMode,
options: LcdClientBaseOptions,
setupModuleA: LcdModuleSetup<A>,
setupModuleB: LcdModuleSetup<B>,
setupModuleC: LcdModuleSetup<C>,
@ -136,8 +135,7 @@ export class LcdClient {
F extends LcdModule,
G extends LcdModule
>(
apiUrl: string,
broadcastMode: BroadcastMode,
options: LcdClientBaseOptions,
setupModuleA: LcdModuleSetup<A>,
setupModuleB: LcdModuleSetup<B>,
setupModuleC: LcdModuleSetup<C>,
@ -158,8 +156,7 @@ export class LcdClient {
G extends LcdModule,
H extends LcdModule
>(
apiUrl: string,
broadcastMode: BroadcastMode,
options: LcdClientBaseOptions,
setupModuleA: LcdModuleSetup<A>,
setupModuleB: LcdModuleSetup<B>,
setupModuleC: LcdModuleSetup<C>,
@ -180,8 +177,7 @@ export class LcdClient {
G extends LcdModule,
H extends LcdModule
>(
apiUrl: string,
broadcastMode: BroadcastMode,
options: LcdClientBaseOptions,
setupModuleA?: LcdModuleSetup<A>,
setupModuleB?: LcdModuleSetup<B>,
setupModuleC?: LcdModuleSetup<C>,
@ -191,7 +187,7 @@ export class LcdClient {
setupModuleG?: LcdModuleSetup<G>,
setupModuleH?: LcdModuleSetup<H>,
): any {
const client = new LcdClient(apiUrl, broadcastMode);
const client = new LcdClient(options.apiUrl, options.broadcastMode);
const modules = new Array<LcdModule>();
if (setupModuleA) modules.push(setupModuleA(client));

View File

@ -14,34 +14,34 @@ export declare type LcdApiArray<T> = ReadonlyArray<T> | null;
export declare function normalizeArray<T>(backend: LcdApiArray<T>): ReadonlyArray<T>;
declare type LcdModule = Record<string, () => any>;
declare type LcdModuleSetup<M> = (base: LcdClient) => M;
export interface LcdClientBaseOptions {
readonly apiUrl: string;
readonly broadcastMode?: BroadcastMode;
}
export declare class LcdClient {
/** Constructs an LCD client with 0 modules */
static withModules(apiUrl: string, broadcastMode: BroadcastMode): LcdClient;
/** Constructs an LCD client with 1 modules */
static withModules(options: LcdClientBaseOptions): LcdClient;
/** Constructs an LCD client with 1 module */
static withModules<A extends LcdModule>(
apiUrl: string,
broadcastMode: BroadcastMode,
options: LcdClientBaseOptions,
setupModuleA: LcdModuleSetup<A>,
): LcdClient & A;
/** Constructs an LCD client with 2 modules */
static withModules<A extends LcdModule, B extends LcdModule>(
apiUrl: string,
broadcastMode: BroadcastMode,
options: LcdClientBaseOptions,
setupModuleA: LcdModuleSetup<A>,
setupModuleB: LcdModuleSetup<B>,
): LcdClient & A & B;
/** Constructs an LCD client with 3 modules */
static withModules<A extends LcdModule, B extends LcdModule, C extends LcdModule>(
apiUrl: string,
broadcastMode: BroadcastMode,
options: LcdClientBaseOptions,
setupModuleA: LcdModuleSetup<A>,
setupModuleB: LcdModuleSetup<B>,
setupModuleC: LcdModuleSetup<C>,
): LcdClient & A & B & C;
/** Constructs an LCD client with 4 modules */
static withModules<A extends LcdModule, B extends LcdModule, C extends LcdModule, D extends LcdModule>(
apiUrl: string,
broadcastMode: BroadcastMode,
options: LcdClientBaseOptions,
setupModuleA: LcdModuleSetup<A>,
setupModuleB: LcdModuleSetup<B>,
setupModuleC: LcdModuleSetup<C>,
@ -55,8 +55,7 @@ export declare class LcdClient {
D extends LcdModule,
E extends LcdModule
>(
apiUrl: string,
broadcastMode: BroadcastMode,
options: LcdClientBaseOptions,
setupModuleA: LcdModuleSetup<A>,
setupModuleB: LcdModuleSetup<B>,
setupModuleC: LcdModuleSetup<C>,
@ -72,8 +71,7 @@ export declare class LcdClient {
E extends LcdModule,
F extends LcdModule
>(
apiUrl: string,
broadcastMode: BroadcastMode,
options: LcdClientBaseOptions,
setupModuleA: LcdModuleSetup<A>,
setupModuleB: LcdModuleSetup<B>,
setupModuleC: LcdModuleSetup<C>,
@ -91,8 +89,7 @@ export declare class LcdClient {
F extends LcdModule,
G extends LcdModule
>(
apiUrl: string,
broadcastMode: BroadcastMode,
options: LcdClientBaseOptions,
setupModuleA: LcdModuleSetup<A>,
setupModuleB: LcdModuleSetup<B>,
setupModuleC: LcdModuleSetup<C>,
@ -112,8 +109,7 @@ export declare class LcdClient {
G extends LcdModule,
H extends LcdModule
>(
apiUrl: string,
broadcastMode: BroadcastMode,
options: LcdClientBaseOptions,
setupModuleA: LcdModuleSetup<A>,
setupModuleB: LcdModuleSetup<B>,
setupModuleC: LcdModuleSetup<C>,