From e07ed919c5e638d6f6ea10ef63b624f7e2cf98fd Mon Sep 17 00:00:00 2001 From: fiatjaf Date: Tue, 30 Jun 2026 23:43:51 -0300 Subject: [PATCH] relay.countWithHLL() --- abstract-relay.ts | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/abstract-relay.ts b/abstract-relay.ts index bef92b7..b7fe4f9 100644 --- a/abstract-relay.ts +++ b/abstract-relay.ts @@ -341,9 +341,16 @@ export class AbstractRelay { } public async count(filters: Filter[], params: { id?: string | null }): Promise { + return (await this.countWithHLL(filters, params)).count + } + + public async countWithHLL( + filters: Filter[], + params: { id?: string | null }, + ): Promise<{ count: number; hll?: string }> { this.serial++ const id = params?.id || 'count:' + this.serial - const ret = new Promise((resolve, reject) => { + const ret = new Promise<{ count: number; hll?: string }>((resolve, reject) => { this.openCountRequests.set(id, { resolve, reject }) }) try { @@ -459,10 +466,10 @@ export class AbstractRelay { } case 'COUNT': { const id: string = data[1] - const payload = data[2] as { count: number } + const payload = data[2] as { count: number; hll?: string } const cr = this.openCountRequests.get(id) as CountResolver if (cr) { - cr.resolve(payload.count) + cr.resolve(payload) this.openCountRequests.delete(id) } return @@ -626,7 +633,7 @@ export type SubscriptionParams = { } export type CountResolver = { - resolve: (count: number) => void + resolve: (payload: { count: number; hll?: string }) => void reject: (err: Error) => void }