From d7b74d2c7e2a6319796a98b91fd32a66b24e6432 Mon Sep 17 00:00:00 2001 From: Jon Staab Date: Mon, 24 Mar 2025 13:35:43 -0700 Subject: [PATCH] Minor net2 cleanup --- packages/lib/src/TaskQueue.ts | 2 +- packages/net2/src/auth.ts | 8 +------- packages/net2/src/diff.ts | 30 ++++++++++++++++++++---------- packages/net2/src/index.ts | 11 +++++++++++ packages/net2/src/publish.ts | 6 +++--- packages/net2/src/subscribe.ts | 6 +++--- 6 files changed, 39 insertions(+), 24 deletions(-) create mode 100644 packages/net2/src/index.ts diff --git a/packages/lib/src/TaskQueue.ts b/packages/lib/src/TaskQueue.ts index 0b4d734..76e1282 100644 --- a/packages/lib/src/TaskQueue.ts +++ b/packages/lib/src/TaskQueue.ts @@ -22,7 +22,7 @@ export class TaskQueue { } async process() { - if (this.isProcessing || this.isPaused || this.items.length == 0) { + if (this.isProcessing || this.isPaused || this.items.length === 0) { return } diff --git a/packages/net2/src/auth.ts b/packages/net2/src/auth.ts index ff94350..a1b1424 100644 --- a/packages/net2/src/auth.ts +++ b/packages/net2/src/auth.ts @@ -30,7 +30,7 @@ export type AuthResult = { } export enum AuthStateEventType { - Status = "auth:state:event:status", + Status = "auth:event:status", } export type AuthStateEvents = { @@ -72,17 +72,11 @@ export class AuthState extends (EventEmitter as new () => TypedEmitter { if (isClientAuth(message)) { this.setStatus(AuthStatus.PendingResponse) } }), - ) - - this._unsubscribers.push( on(socket, SocketEventType.Status, (status: SocketStatus) => { if (status === SocketStatus.Closed) { this.challenge = undefined diff --git a/packages/net2/src/diff.ts b/packages/net2/src/diff.ts index c000075..4e821a6 100644 --- a/packages/net2/src/diff.ts +++ b/packages/net2/src/diff.ts @@ -24,29 +24,32 @@ export type DiffEvents = { [DiffEventType.Close]: () => void } +export type DiffOptions = { + filter: Filter + events: SignedEvent[] + adapter: AbstractAdapter + on?: Partial +} + export class Diff extends (EventEmitter as new () => TypedEmitter) { _id = `NEG-${randomId().slice(0, 8)}` _unsubscriber: () => void _closed = false - constructor( - readonly adapter: AbstractAdapter, - readonly events: SignedEvent[], - readonly filter: Filter, - ) { + constructor(readonly options: DiffOptions) { super() const storage = new NegentropyStorageVector() const neg = new Negentropy(storage, 50_000) - for (const event of events) { + for (const event of this.options.events) { storage.insert(event.created_at, event.id) } storage.seal() this._unsubscriber = on( - adapter, + this.options.adapter, AdapterEventType.Receive, async (message: RelayMessage, url: string) => { if (isRelayNegMsg(message)) { @@ -58,7 +61,7 @@ export class Diff extends (EventEmitter as new () => TypedEmitter) { this.emit(DiffEventType.Message, {have, need}, url) if (newMsg) { - adapter.send([RelayMessageType.NegMsg, this._id, newMsg]) + this.options.adapter.send([RelayMessageType.NegMsg, this._id, newMsg]) } else { this.close() } @@ -75,15 +78,22 @@ export class Diff extends (EventEmitter as new () => TypedEmitter) { }, ) + // Register listeners + if (this.options.on) { + for (const [k, listener] of Object.entries(this.options.on)) { + this.on(k as keyof DiffEvents, listener) + } + } + neg.initiate().then((msg: string) => { - adapter.send([ClientMessageType.NegOpen, this._id, filter, msg]) + this.options.adapter.send([ClientMessageType.NegOpen, this._id, this.options.filter, msg]) }) } close() { if (this._closed) return - this.adapter.send([ClientMessageType.NegClose, this._id]) + this.options.adapter.send([ClientMessageType.NegClose, this._id]) this.emit(DiffEventType.Close) this.removeAllListeners() this._unsubscriber() diff --git a/packages/net2/src/index.ts b/packages/net2/src/index.ts new file mode 100644 index 0000000..9ea28d5 --- /dev/null +++ b/packages/net2/src/index.ts @@ -0,0 +1,11 @@ +export * from "./adapter.js" +export * from "./auth.js" +export * from "./diff.js" +export * from "./message.js" +export * from "./negentropy.js" +export * from "./policy.js" +export * from "./pool.js" +export * from "./publish.js" +export * from "./socket.js" +export * from "./subscribe.js" +export * from "./tracker.js" diff --git a/packages/net2/src/publish.ts b/packages/net2/src/publish.ts index b677c59..000ca62 100644 --- a/packages/net2/src/publish.ts +++ b/packages/net2/src/publish.ts @@ -25,7 +25,7 @@ export type PublishOptions = { adapter: AbstractAdapter event: SignedEvent timeout?: number - events?: Partial + on?: Partial } export class Publish extends (EventEmitter as new () => TypedEmitter) { @@ -63,8 +63,8 @@ export class Publish extends (EventEmitter as new () => TypedEmitter boolean - events?: Partial + on?: Partial } export class Subscription extends (EventEmitter as new () => TypedEmitter) { @@ -102,8 +102,8 @@ export class Subscription extends (EventEmitter as new () => TypedEmitter