Compare commits

...

3 Commits

Author SHA1 Message Date
fiatjaf
f0357805c3 catch errors on function passed to auth() and log them. 2025-06-10 10:20:20 -03:00
fiatjaf
ffa7fb926e remove deprecated unused _onauth hook. 2025-06-10 10:16:11 -03:00
fiatjaf
12acb900ab SubCloser.close() can take a reason string optionally. 2025-06-10 10:15:58 -03:00
4 changed files with 21 additions and 21 deletions

View File

@@ -12,7 +12,7 @@ import type { Event, EventTemplate, Nostr, VerifiedEvent } from './core.ts'
import { type Filter } from './filter.ts' import { type Filter } from './filter.ts'
import { alwaysTrue } from './helpers.ts' import { alwaysTrue } from './helpers.ts'
export type SubCloser = { close: () => void } export type SubCloser = { close: (reason?: string) => void }
export type AbstractPoolConstructorOptions = AbstractRelayConstructorOptions & {} export type AbstractPoolConstructorOptions = AbstractRelayConstructorOptions & {}
@@ -179,10 +179,10 @@ export class AbstractSimplePool {
) )
return { return {
async close() { async close(reason?: string) {
await allOpened await allOpened
subs.forEach(sub => { subs.forEach(sub => {
sub.close() sub.close(reason)
}) })
}, },
} }
@@ -198,7 +198,7 @@ export class AbstractSimplePool {
const subcloser = this.subscribe(relays, filter, { const subcloser = this.subscribe(relays, filter, {
...params, ...params,
oneose() { oneose() {
subcloser.close() subcloser.close('closed automatically on eose')
}, },
}) })
return subcloser return subcloser
@@ -214,7 +214,7 @@ export class AbstractSimplePool {
const subcloser = this.subscribeMany(relays, filters, { const subcloser = this.subscribeMany(relays, filters, {
...params, ...params,
oneose() { oneose() {
subcloser.close() subcloser.close('closed automatically on eose')
}, },
}) })
return subcloser return subcloser

View File

@@ -26,9 +26,6 @@ export class AbstractRelay {
public onclose: (() => void) | null = null public onclose: (() => void) | null = null
public onnotice: (msg: string) => void = msg => console.debug(`NOTICE from ${this.url}: ${msg}`) public onnotice: (msg: string) => void = msg => console.debug(`NOTICE from ${this.url}: ${msg}`)
// this is exposed just to help in ndk migration, shouldn't be relied upon
public _onauth: ((challenge: string) => void) | null = null
public baseEoseTimeout: number = 4400 public baseEoseTimeout: number = 4400
public connectionTimeout: number = 4400 public connectionTimeout: number = 4400
public publishTimeout: number = 4400 public publishTimeout: number = 4400
@@ -233,7 +230,6 @@ export class AbstractRelay {
return return
case 'AUTH': { case 'AUTH': {
this.challenge = data[1] as string this.challenge = data[1] as string
this._onauth?.(data[1] as string)
return return
} }
} }
@@ -256,16 +252,20 @@ export class AbstractRelay {
if (this.authPromise) return this.authPromise if (this.authPromise) return this.authPromise
this.authPromise = new Promise<string>(async (resolve, reject) => { this.authPromise = new Promise<string>(async (resolve, reject) => {
const evt = await signAuthEvent(makeAuthEvent(this.url, challenge)) try {
const timeout = setTimeout(() => { let evt = await signAuthEvent(makeAuthEvent(this.url, challenge))
const ep = this.openEventPublishes.get(evt.id) as EventPublishResolver let timeout = setTimeout(() => {
if (ep) { let ep = this.openEventPublishes.get(evt.id) as EventPublishResolver
ep.reject(new Error('auth timed out')) if (ep) {
this.openEventPublishes.delete(evt.id) ep.reject(new Error('auth timed out'))
} this.openEventPublishes.delete(evt.id)
}, this.publishTimeout) }
this.openEventPublishes.set(evt.id, { resolve, reject, timeout }) }, this.publishTimeout)
this.send('["AUTH",' + JSON.stringify(evt) + ']') this.openEventPublishes.set(evt.id, { resolve, reject, timeout })
this.send('["AUTH",' + JSON.stringify(evt) + ']')
} catch (err) {
console.warn('subscribe auth function failed:', err)
}
}) })
return this.authPromise return this.authPromise
} }

View File

@@ -1,6 +1,6 @@
{ {
"name": "@nostr/tools", "name": "@nostr/tools",
"version": "2.14.3", "version": "2.15.0",
"exports": { "exports": {
".": "./index.ts", ".": "./index.ts",
"./core": "./core.ts", "./core": "./core.ts",

View File

@@ -1,7 +1,7 @@
{ {
"type": "module", "type": "module",
"name": "nostr-tools", "name": "nostr-tools",
"version": "2.14.3", "version": "2.15.0",
"description": "Tools for making a Nostr client.", "description": "Tools for making a Nostr client.",
"repository": { "repository": {
"type": "git", "type": "git",