From 2cadeec789026e64e163dcd122694dd8d73c2fa1 Mon Sep 17 00:00:00 2001 From: Simon Warta Date: Tue, 7 Jul 2020 17:19:47 +0200 Subject: [PATCH] Implement withExtensions with rest operator --- packages/sdk38/src/lcdapi/lcdclient.ts | 32 +++----------------------- 1 file changed, 3 insertions(+), 29 deletions(-) diff --git a/packages/sdk38/src/lcdapi/lcdclient.ts b/packages/sdk38/src/lcdapi/lcdclient.ts index 8be43afe..ded067f4 100644 --- a/packages/sdk38/src/lcdapi/lcdclient.ts +++ b/packages/sdk38/src/lcdapi/lcdclient.ts @@ -171,37 +171,12 @@ export class LcdClient { setupExtensionH: LcdExtensionSetup, ): LcdClient & A & B & C & D & E & F & G & H; - public static withExtensions< - A extends object, - B extends object, - C extends object, - D extends object, - E extends object, - F extends object, - G extends object, - H extends object - >( + public static withExtensions( options: LcdClientBaseOptions, - setupExtensionA?: LcdExtensionSetup, - setupExtensionB?: LcdExtensionSetup, - setupExtensionC?: LcdExtensionSetup, - setupExtensionD?: LcdExtensionSetup, - setupExtensionE?: LcdExtensionSetup, - setupExtensionF?: LcdExtensionSetup, - setupExtensionG?: LcdExtensionSetup, - setupExtensionH?: LcdExtensionSetup, + ...extensionSetups: Array> ): any { const client = new LcdClient(options.apiUrl, options.broadcastMode); - - const extensions = new Array(); - if (setupExtensionA) extensions.push(setupExtensionA(client)); - if (setupExtensionB) extensions.push(setupExtensionB(client)); - if (setupExtensionC) extensions.push(setupExtensionC(client)); - if (setupExtensionD) extensions.push(setupExtensionD(client)); - if (setupExtensionE) extensions.push(setupExtensionE(client)); - if (setupExtensionF) extensions.push(setupExtensionF(client)); - if (setupExtensionG) extensions.push(setupExtensionG(client)); - if (setupExtensionH) extensions.push(setupExtensionH(client)); + const extensions = extensionSetups.map((setupExtension) => setupExtension(client)); for (const extension of extensions) { assert(isNonNullObject(extension), `Extension must be a non-null object`); for (const [moduleKey, moduleValue] of Object.entries(extension)) { @@ -209,7 +184,6 @@ export class LcdClient { (client as any)[moduleKey] = Object.assign(current, moduleValue); } } - return client; }