diff --git a/abstract-pool.ts b/abstract-pool.ts index 3e07b00..04d6cf9 100644 --- a/abstract-pool.ts +++ b/abstract-pool.ts @@ -74,19 +74,32 @@ export class AbstractSimplePool { subscribe(relays: string[], filter: Filter, params: SubscribeManyParams): SubCloser { params.onauth = params.onauth || params.doauth - return this.subscribeMap( - relays.map(url => ({ url, filter })), - params, - ) + const request: { url: string; filter: Filter }[] = [] + for (let i = 0; i < relays.length; i++) { + const url = normalizeURL(relays[i]) + if (!request.find(r => r.url === url)) { + request.push({ url, filter }) + } + } + + return this.subscribeMap(request, params) } subscribeMany(relays: string[], filters: Filter[], params: SubscribeManyParams): SubCloser { params.onauth = params.onauth || params.doauth - return this.subscribeMap( - relays.flatMap(url => filters.map(filter => ({ url, filter }))), - params, - ) + const request: { url: string; filter: Filter }[] = [] + const uniqUrls: string[] = [] + for (let i = 0; i < relays.length; i++) { + const url = normalizeURL(relays[i]) + if (uniqUrls.indexOf(url) === -1) { + for (let f = 0; f < filters.length; f++) { + request.push({ url, filter: filters[f] }) + } + } + } + + return this.subscribeMap(request, params) } subscribeMap(requests: { url: string; filter: Filter }[], params: SubscribeManyParams): SubCloser { diff --git a/abstract-relay.ts b/abstract-relay.ts index 1d93833..320e579 100644 --- a/abstract-relay.ts +++ b/abstract-relay.ts @@ -156,13 +156,13 @@ export class AbstractRelay { } private async waitForDummyReq() { - return new Promise((res, err) => { + return new Promise((resolve, _) => { // make a dummy request with expected empty eose reply // ["REQ", "_", {"ids":["aaaa...aaaa"]}] const sub = this.subscribe([{ ids: ['a'.repeat(64)] }], { oneose: () => { sub.close() - res(true) + resolve(true) }, eoseTimeout: this.pingTimeout + 1000, }) diff --git a/jsr.json b/jsr.json index 169b07d..eaef35e 100644 --- a/jsr.json +++ b/jsr.json @@ -1,6 +1,6 @@ { "name": "@nostr/tools", - "version": "2.16.1", + "version": "2.16.2", "exports": { ".": "./index.ts", "./core": "./core.ts", diff --git a/package.json b/package.json index b9d9cf0..9961251 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "type": "module", "name": "nostr-tools", - "version": "2.16.1", + "version": "2.16.2", "description": "Tools for making a Nostr client.", "repository": { "type": "git",