From cc3b46ffbbc80ef32e8f865a2516c5dfdf4445c1 Mon Sep 17 00:00:00 2001 From: "fryorcraken.eth" Date: Wed, 21 Sep 2022 16:10:27 +1000 Subject: [PATCH 1/2] feat: template type on store APIs --- src/lib/waku_store/index.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/lib/waku_store/index.ts b/src/lib/waku_store/index.ts index 5f51f63e93..c565fa8ff9 100644 --- a/src/lib/waku_store/index.ts +++ b/src/lib/waku_store/index.ts @@ -106,7 +106,7 @@ export class WakuStore { */ async queryOrderedCallback( decoders: Decoder[], - callback: (message: Message) => Promise | boolean | void, + callback: (message: T) => Promise | boolean | void, options?: QueryOptions ): Promise { const abort = false; @@ -156,7 +156,7 @@ export class WakuStore { async queryCallbackOnPromise( decoders: Decoder[], callback: ( - message: Promise + message: Promise ) => Promise | boolean | void, options?: QueryOptions ): Promise { @@ -194,7 +194,7 @@ export class WakuStore { async *queryGenerator( decoders: Decoder[], options?: QueryOptions - ): AsyncGenerator[]> { + ): AsyncGenerator[]> { let startTime, endTime; if (options?.timeFilter) { @@ -245,7 +245,7 @@ export class WakuStore { if (!connection) throw "Failed to get a connection to the peer"; - for await (const messages of paginate( + for await (const messages of paginate( connection, protocol, queryOpts, From 2d98977ac63dcf93e147427e48c957d134c9e172 Mon Sep 17 00:00:00 2001 From: "fryorcraken.eth" Date: Wed, 21 Sep 2022 16:14:23 +1000 Subject: [PATCH 2/2] refactor: improve type handling --- src/lib/waku_store/index.ts | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/lib/waku_store/index.ts b/src/lib/waku_store/index.ts index c565fa8ff9..8de878653b 100644 --- a/src/lib/waku_store/index.ts +++ b/src/lib/waku_store/index.ts @@ -112,9 +112,9 @@ export class WakuStore { const abort = false; for await (const promises of this.queryGenerator(decoders, options)) { if (abort) break; - let messages = await Promise.all(promises); + const messagesOrUndef: Array = await Promise.all(promises); - messages = messages.filter(isWakuMessageDefined); + let messages: Array = messagesOrUndef.filter(isDefined); // Messages in pages are ordered from oldest (first) to most recent (last). // https://github.com/vacp2p/rfc/issues/533 @@ -370,8 +370,6 @@ async function* paginate( } } -export const isWakuMessageDefined = ( - msg: Message | undefined -): msg is Message => { +export function isDefined(msg: T | undefined): msg is T { return !!msg; -}; +}