From 98c6c33b1bde0a95dda4120051693cc82ed2b73d Mon Sep 17 00:00:00 2001 From: Jon Staab Date: Mon, 24 Mar 2025 17:45:15 -0700 Subject: [PATCH] Remove shortcut handlers --- packages/net2/src/diff.ts | 16 +++---- packages/net2/src/publish.ts | 76 ++++++++++++++++------------------ packages/net2/src/subscribe.ts | 8 ---- 3 files changed, 41 insertions(+), 59 deletions(-) diff --git a/packages/net2/src/diff.ts b/packages/net2/src/diff.ts index ab0f6d7..62bb663 100644 --- a/packages/net2/src/diff.ts +++ b/packages/net2/src/diff.ts @@ -12,7 +12,7 @@ import { import {getAdapter, AdapterContext, AbstractAdapter, AdapterEventType} from "./adapter.js" import {Negentropy, NegentropyStorageVector} from "./negentropy.js" import {subscribe, SubscriptionEventType} from "./subscribe.js" -import {publish, PublishEventType} from "./publish.js" +import {publish, PublicationEventType} from "./publish.js" export enum DifferenceEventType { Message = "difference:event:message", @@ -31,7 +31,6 @@ export type DifferenceOptions = { filter: Filter events: SignedEvent[] context: AdapterContext - on?: Partial } export class Difference extends (EventEmitter as new () => TypedEmitter) { @@ -96,13 +95,6 @@ export class Difference extends (EventEmitter as new () => TypedEmitter { this._adapter.send([ClientMessageType.NegOpen, this._id, this.options.filter, msg]) }) @@ -212,7 +204,7 @@ export const pull = async ({context, ...options}: PullOptions) => { return Promise.all( chunk(500, allIds).map(ids => { return new Promise(resolve => { - const sub = subscribe({relay, filter: {ids}, context, autoClose: true}) + const sub = subscribe({relay, context, filter: {ids}, autoClose: true}) sub.on(SubscriptionEventType.Close, resolve) sub.on(SubscriptionEventType.Event, event => result.push(event)) @@ -247,7 +239,9 @@ export const push = async ({context, events, ...options}: PushOptions) => { relays.map( relay => new Promise(resolve => { - publish({event, relay, context}).on(PublishEventType.Complete, resolve) + const pub = publish({event, relay, context}) + + pub.on(PublicationEventType.Complete, resolve) }), ), ) diff --git a/packages/net2/src/publish.ts b/packages/net2/src/publish.ts index 194240e..bb7a792 100644 --- a/packages/net2/src/publish.ts +++ b/packages/net2/src/publish.ts @@ -5,48 +5,51 @@ import {RelayMessage, ClientMessageType, isRelayOk} from "./message.js" import {AbstractAdapter, AdapterEventType, AdapterContext, getAdapter} from "./adapter.js" import {TypedEmitter} from "./util.js" -export enum PublishStatus { - Pending = "publish:status:pending", - Success = "publish:status:success", - Failure = "publish:status:failure", - Timeout = "publish:status:timeout", - Aborted = "publish:status:aborted", +export enum PublicationStatus { + Pending = "publication:status:pending", + Success = "publication:status:success", + Failure = "publication:status:failure", + Timeout = "publication:status:timeout", + Aborted = "publication:status:aborted", } -export enum PublishEventType { - Complete = "publish:status:complete", +export enum PublicationEventType { + Success = "publication:event:success", + Failure = "publication:event:failure", + Timeout = "publication:event:timeout", + Aborted = "publication:event:aborted", + Complete = "publication:event:complete", } -export type PublishEvents = { - [PublishStatus.Success]: (id: string, detail: string, url: string) => void - [PublishStatus.Failure]: (id: string, detail: string, url: string) => void - [PublishStatus.Timeout]: () => void - [PublishStatus.Aborted]: () => void - [PublishEventType.Complete]: () => void +export type PublicationEvents = { + [PublicationEventType.Success]: (id: string, detail: string, url: string) => void + [PublicationEventType.Failure]: (id: string, detail: string, url: string) => void + [PublicationEventType.Timeout]: () => void + [PublicationEventType.Aborted]: () => void + [PublicationEventType.Complete]: () => void } -export type PublishOptions = { +export type PublicationOptions = { relay: string event: SignedEvent context: AdapterContext timeout?: number - on?: Partial } -export class Publish extends (EventEmitter as new () => TypedEmitter) { - status = PublishStatus.Pending +export class Publication extends (EventEmitter as new () => TypedEmitter) { + status = PublicationStatus.Pending _done = new Set() _unsubscriber: () => void _adapter: AbstractAdapter - constructor(readonly options: PublishOptions) { + constructor(readonly options: PublicationOptions) { super() // Set up our adapter this._adapter = getAdapter(this.options.relay, this.options.context) - // Listen for publish result + // Listen for Publication result this._unsubscriber = on( this._adapter, AdapterEventType.Receive, @@ -57,11 +60,11 @@ export class Publish extends (EventEmitter as new () => TypedEmitter TypedEmitter TypedEmitter { // Set timeout sleep(this.options.timeout || 10_000).then(() => { - if (this.status === PublishStatus.Pending) { - this.status = PublishStatus.Timeout - this.emit(PublishStatus.Timeout) + if (this.status === PublicationStatus.Pending) { + this.status = PublicationStatus.Timeout + this.emit(PublicationEventType.Timeout) } this.cleanup() }) - // Send the publish message + // Send the Publication message this._adapter.send([ClientMessageType.Event, event]) } abort = () => { - if (this.status === PublishStatus.Pending) { - this.status = PublishStatus.Aborted - this.emit(PublishStatus.Aborted) + if (this.status === PublicationStatus.Pending) { + this.status = PublicationStatus.Aborted + this.emit(PublicationEventType.Aborted) this.cleanup() } } cleanup = () => { - this.emit(PublishEventType.Complete) + this.emit(PublicationEventType.Complete) this.removeAllListeners() this._adapter.cleanup() this._unsubscriber() } } -export const publish = (options: PublishOptions) => new Publish(options) +export const publish = (options: PublicationOptions) => new Publication(options) diff --git a/packages/net2/src/subscribe.ts b/packages/net2/src/subscribe.ts index 54fe03f..22ba494 100644 --- a/packages/net2/src/subscribe.ts +++ b/packages/net2/src/subscribe.ts @@ -35,7 +35,6 @@ export type SubscriptionOptions = { tracker?: Tracker autoClose?: boolean verifyEvent?: (event: SignedEvent) => boolean - on?: Partial } export class Subscription extends (EventEmitter as new () => TypedEmitter) { @@ -98,13 +97,6 @@ export class Subscription extends (EventEmitter as new () => TypedEmitter