Add abort signal support to diff

This commit is contained in:
Jon Staab
2025-10-06 11:19:47 -07:00
parent 846d274e83
commit bbab2e0628
+7 -1
View File
@@ -29,6 +29,7 @@ export type DifferenceOptions = {
relay: string relay: string
filter: Filter filter: Filter
events: SignedEvent[] events: SignedEvent[]
signal?: AbortSignal
context?: AdapterContext context?: AdapterContext
} }
@@ -44,6 +45,9 @@ export class Difference extends EventEmitter {
constructor(readonly options: DifferenceOptions) { constructor(readonly options: DifferenceOptions) {
super() super()
// Listen for abort
options.signal?.addEventListener("abort", () => this.close())
// Set up our adapter // Set up our adapter
this._adapter = getAdapter(this.options.relay, this.options.context) this._adapter = getAdapter(this.options.relay, this.options.context)
@@ -120,6 +124,7 @@ export type DiffOptions = {
relays: string[] relays: string[]
filters: Filter[] filters: Filter[]
events: SignedEvent[] events: SignedEvent[]
signal?: AbortSignal
context?: AdapterContext context?: AdapterContext
} }
@@ -208,6 +213,7 @@ export const pull = async ({context, ...options}: PullOptions) => {
relay, relay,
context, context,
filters: [{ids}], filters: [{ids}],
signal: options.signal,
autoClose: true, autoClose: true,
onClose: resolve, onClose: resolve,
onEvent: event => result.push(event as SignedEvent), onEvent: event => result.push(event as SignedEvent),
@@ -239,7 +245,7 @@ export const push = async ({context, events, ...options}: PushOptions) => {
const relays = relaysById.get(event.id) const relays = relaysById.get(event.id)
if (relays) { if (relays) {
await publish({event, relays, context}) await publish({event, relays, context, signal: options.signal})
} }
}), }),
) )