From e6ac24a3018d7047e121232c4a51ac0e912bb11e Mon Sep 17 00:00:00 2001 From: Simon Warta Date: Tue, 7 Jul 2020 07:39:59 +0200 Subject: [PATCH] Create LcdClientBaseOptions --- packages/sdk38/src/lcdclient.spec.ts | 9 +++---- packages/sdk38/src/lcdclient.ts | 38 +++++++++++++--------------- packages/sdk38/types/lcdclient.d.ts | 32 ++++++++++------------- 3 files changed, 35 insertions(+), 44 deletions(-) diff --git a/packages/sdk38/src/lcdclient.spec.ts b/packages/sdk38/src/lcdclient.spec.ts index c9122426..bf6f5ebe 100644 --- a/packages/sdk38/src/lcdclient.spec.ts +++ b/packages/sdk38/src/lcdclient.spec.ts @@ -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, ); diff --git a/packages/sdk38/src/lcdclient.ts b/packages/sdk38/src/lcdclient.ts index fac9d6fa..384e35ea 100644 --- a/packages/sdk38/src/lcdclient.ts +++ b/packages/sdk38/src/lcdclient.ts @@ -25,6 +25,11 @@ type LcdModule = Record any>; type LcdModuleSetup = (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( - apiUrl: string, - broadcastMode: BroadcastMode, + options: LcdClientBaseOptions, setupModuleA: LcdModuleSetup, ): LcdClient & A; /** Constructs an LCD client with 2 modules */ public static withModules( - apiUrl: string, - broadcastMode: BroadcastMode, + options: LcdClientBaseOptions, setupModuleA: LcdModuleSetup, setupModuleB: LcdModuleSetup, ): LcdClient & A & B; /** Constructs an LCD client with 3 modules */ public static withModules( - apiUrl: string, - broadcastMode: BroadcastMode, + options: LcdClientBaseOptions, setupModuleA: LcdModuleSetup, setupModuleB: LcdModuleSetup, setupModuleC: LcdModuleSetup, @@ -82,8 +84,7 @@ export class LcdClient { C extends LcdModule, D extends LcdModule >( - apiUrl: string, - broadcastMode: BroadcastMode, + options: LcdClientBaseOptions, setupModuleA: LcdModuleSetup, setupModuleB: LcdModuleSetup, setupModuleC: LcdModuleSetup, @@ -98,8 +99,7 @@ export class LcdClient { D extends LcdModule, E extends LcdModule >( - apiUrl: string, - broadcastMode: BroadcastMode, + options: LcdClientBaseOptions, setupModuleA: LcdModuleSetup, setupModuleB: LcdModuleSetup, setupModuleC: LcdModuleSetup, @@ -116,8 +116,7 @@ export class LcdClient { E extends LcdModule, F extends LcdModule >( - apiUrl: string, - broadcastMode: BroadcastMode, + options: LcdClientBaseOptions, setupModuleA: LcdModuleSetup, setupModuleB: LcdModuleSetup, setupModuleC: LcdModuleSetup, @@ -136,8 +135,7 @@ export class LcdClient { F extends LcdModule, G extends LcdModule >( - apiUrl: string, - broadcastMode: BroadcastMode, + options: LcdClientBaseOptions, setupModuleA: LcdModuleSetup, setupModuleB: LcdModuleSetup, setupModuleC: LcdModuleSetup, @@ -158,8 +156,7 @@ export class LcdClient { G extends LcdModule, H extends LcdModule >( - apiUrl: string, - broadcastMode: BroadcastMode, + options: LcdClientBaseOptions, setupModuleA: LcdModuleSetup, setupModuleB: LcdModuleSetup, setupModuleC: LcdModuleSetup, @@ -180,8 +177,7 @@ export class LcdClient { G extends LcdModule, H extends LcdModule >( - apiUrl: string, - broadcastMode: BroadcastMode, + options: LcdClientBaseOptions, setupModuleA?: LcdModuleSetup, setupModuleB?: LcdModuleSetup, setupModuleC?: LcdModuleSetup, @@ -191,7 +187,7 @@ export class LcdClient { setupModuleG?: LcdModuleSetup, setupModuleH?: LcdModuleSetup, ): any { - const client = new LcdClient(apiUrl, broadcastMode); + const client = new LcdClient(options.apiUrl, options.broadcastMode); const modules = new Array(); if (setupModuleA) modules.push(setupModuleA(client)); diff --git a/packages/sdk38/types/lcdclient.d.ts b/packages/sdk38/types/lcdclient.d.ts index 8f15abb2..6850ddd2 100644 --- a/packages/sdk38/types/lcdclient.d.ts +++ b/packages/sdk38/types/lcdclient.d.ts @@ -14,34 +14,34 @@ export declare type LcdApiArray = ReadonlyArray | null; export declare function normalizeArray(backend: LcdApiArray): ReadonlyArray; declare type LcdModule = Record any>; declare type LcdModuleSetup = (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( - apiUrl: string, - broadcastMode: BroadcastMode, + options: LcdClientBaseOptions, setupModuleA: LcdModuleSetup, ): LcdClient & A; /** Constructs an LCD client with 2 modules */ static withModules( - apiUrl: string, - broadcastMode: BroadcastMode, + options: LcdClientBaseOptions, setupModuleA: LcdModuleSetup, setupModuleB: LcdModuleSetup, ): LcdClient & A & B; /** Constructs an LCD client with 3 modules */ static withModules( - apiUrl: string, - broadcastMode: BroadcastMode, + options: LcdClientBaseOptions, setupModuleA: LcdModuleSetup, setupModuleB: LcdModuleSetup, setupModuleC: LcdModuleSetup, ): LcdClient & A & B & C; /** Constructs an LCD client with 4 modules */ static withModules( - apiUrl: string, - broadcastMode: BroadcastMode, + options: LcdClientBaseOptions, setupModuleA: LcdModuleSetup, setupModuleB: LcdModuleSetup, setupModuleC: LcdModuleSetup, @@ -55,8 +55,7 @@ export declare class LcdClient { D extends LcdModule, E extends LcdModule >( - apiUrl: string, - broadcastMode: BroadcastMode, + options: LcdClientBaseOptions, setupModuleA: LcdModuleSetup, setupModuleB: LcdModuleSetup, setupModuleC: LcdModuleSetup, @@ -72,8 +71,7 @@ export declare class LcdClient { E extends LcdModule, F extends LcdModule >( - apiUrl: string, - broadcastMode: BroadcastMode, + options: LcdClientBaseOptions, setupModuleA: LcdModuleSetup, setupModuleB: LcdModuleSetup, setupModuleC: LcdModuleSetup, @@ -91,8 +89,7 @@ export declare class LcdClient { F extends LcdModule, G extends LcdModule >( - apiUrl: string, - broadcastMode: BroadcastMode, + options: LcdClientBaseOptions, setupModuleA: LcdModuleSetup, setupModuleB: LcdModuleSetup, setupModuleC: LcdModuleSetup, @@ -112,8 +109,7 @@ export declare class LcdClient { G extends LcdModule, H extends LcdModule >( - apiUrl: string, - broadcastMode: BroadcastMode, + options: LcdClientBaseOptions, setupModuleA: LcdModuleSetup, setupModuleB: LcdModuleSetup, setupModuleC: LcdModuleSetup,