Add closed support to requestOne

This commit is contained in:
Jon Staab
2026-02-26 14:50:16 -08:00
parent b704493f92
commit f24775d548
+21 -1
View File
@@ -18,7 +18,13 @@ import {
deduplicateEvents,
getFilterResultCardinality,
} from "@welshman/util"
import {RelayMessage, ClientMessageType, isRelayEvent, isRelayEose} from "./message.js"
import {
RelayMessage,
ClientMessageType,
isRelayEvent,
isRelayEose,
isRelayClosed,
} from "./message.js"
import {getAdapter, AdapterContext, AdapterEvent} from "./adapter.js"
import {SocketEvent, SocketStatus} from "./socket.js"
import {netContext} from "./context.js"
@@ -38,6 +44,7 @@ export type BaseRequestOptions = {
onDuplicate?: (event: TrustedEvent, url: string) => void
onDisconnect?: (url: string) => void
onEose?: (url: string) => void
onClosed?: (message: string, url: string) => void
onClose?: () => void
}
@@ -109,6 +116,19 @@ export const requestOne = (options: RequestOneOptions) => {
}
}
}
if (isRelayClosed(message)) {
const [_, id, reason] = message
if (ids.has(id)) {
ids.delete(id)
options.onClosed?.(reason, url)
if (ids.size === 0) {
close()
}
}
}
}),
]