Minor net2 cleanup
This commit is contained in:
@@ -22,7 +22,7 @@ export class TaskQueue<Item> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async process() {
|
async process() {
|
||||||
if (this.isProcessing || this.isPaused || this.items.length == 0) {
|
if (this.isProcessing || this.isPaused || this.items.length === 0) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ export type AuthResult = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export enum AuthStateEventType {
|
export enum AuthStateEventType {
|
||||||
Status = "auth:state:event:status",
|
Status = "auth:event:status",
|
||||||
}
|
}
|
||||||
|
|
||||||
export type AuthStateEvents = {
|
export type AuthStateEvents = {
|
||||||
@@ -72,17 +72,11 @@ export class AuthState extends (EventEmitter as new () => TypedEmitter<AuthState
|
|||||||
this.setStatus(AuthStatus.Requested)
|
this.setStatus(AuthStatus.Requested)
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
)
|
|
||||||
|
|
||||||
this._unsubscribers.push(
|
|
||||||
on(socket, SocketEventType.Enqueue, (message: RelayMessage) => {
|
on(socket, SocketEventType.Enqueue, (message: RelayMessage) => {
|
||||||
if (isClientAuth(message)) {
|
if (isClientAuth(message)) {
|
||||||
this.setStatus(AuthStatus.PendingResponse)
|
this.setStatus(AuthStatus.PendingResponse)
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
)
|
|
||||||
|
|
||||||
this._unsubscribers.push(
|
|
||||||
on(socket, SocketEventType.Status, (status: SocketStatus) => {
|
on(socket, SocketEventType.Status, (status: SocketStatus) => {
|
||||||
if (status === SocketStatus.Closed) {
|
if (status === SocketStatus.Closed) {
|
||||||
this.challenge = undefined
|
this.challenge = undefined
|
||||||
|
|||||||
+20
-10
@@ -24,29 +24,32 @@ export type DiffEvents = {
|
|||||||
[DiffEventType.Close]: () => void
|
[DiffEventType.Close]: () => void
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export type DiffOptions = {
|
||||||
|
filter: Filter
|
||||||
|
events: SignedEvent[]
|
||||||
|
adapter: AbstractAdapter
|
||||||
|
on?: Partial<DiffEvents>
|
||||||
|
}
|
||||||
|
|
||||||
export class Diff extends (EventEmitter as new () => TypedEmitter<DiffEvents>) {
|
export class Diff extends (EventEmitter as new () => TypedEmitter<DiffEvents>) {
|
||||||
_id = `NEG-${randomId().slice(0, 8)}`
|
_id = `NEG-${randomId().slice(0, 8)}`
|
||||||
_unsubscriber: () => void
|
_unsubscriber: () => void
|
||||||
_closed = false
|
_closed = false
|
||||||
|
|
||||||
constructor(
|
constructor(readonly options: DiffOptions) {
|
||||||
readonly adapter: AbstractAdapter,
|
|
||||||
readonly events: SignedEvent[],
|
|
||||||
readonly filter: Filter,
|
|
||||||
) {
|
|
||||||
super()
|
super()
|
||||||
|
|
||||||
const storage = new NegentropyStorageVector()
|
const storage = new NegentropyStorageVector()
|
||||||
const neg = new Negentropy(storage, 50_000)
|
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.insert(event.created_at, event.id)
|
||||||
}
|
}
|
||||||
|
|
||||||
storage.seal()
|
storage.seal()
|
||||||
|
|
||||||
this._unsubscriber = on(
|
this._unsubscriber = on(
|
||||||
adapter,
|
this.options.adapter,
|
||||||
AdapterEventType.Receive,
|
AdapterEventType.Receive,
|
||||||
async (message: RelayMessage, url: string) => {
|
async (message: RelayMessage, url: string) => {
|
||||||
if (isRelayNegMsg(message)) {
|
if (isRelayNegMsg(message)) {
|
||||||
@@ -58,7 +61,7 @@ export class Diff extends (EventEmitter as new () => TypedEmitter<DiffEvents>) {
|
|||||||
this.emit(DiffEventType.Message, {have, need}, url)
|
this.emit(DiffEventType.Message, {have, need}, url)
|
||||||
|
|
||||||
if (newMsg) {
|
if (newMsg) {
|
||||||
adapter.send([RelayMessageType.NegMsg, this._id, newMsg])
|
this.options.adapter.send([RelayMessageType.NegMsg, this._id, newMsg])
|
||||||
} else {
|
} else {
|
||||||
this.close()
|
this.close()
|
||||||
}
|
}
|
||||||
@@ -75,15 +78,22 @@ export class Diff extends (EventEmitter as new () => TypedEmitter<DiffEvents>) {
|
|||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// 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) => {
|
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() {
|
close() {
|
||||||
if (this._closed) return
|
if (this._closed) return
|
||||||
|
|
||||||
this.adapter.send([ClientMessageType.NegClose, this._id])
|
this.options.adapter.send([ClientMessageType.NegClose, this._id])
|
||||||
this.emit(DiffEventType.Close)
|
this.emit(DiffEventType.Close)
|
||||||
this.removeAllListeners()
|
this.removeAllListeners()
|
||||||
this._unsubscriber()
|
this._unsubscriber()
|
||||||
|
|||||||
@@ -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"
|
||||||
@@ -25,7 +25,7 @@ export type PublishOptions = {
|
|||||||
adapter: AbstractAdapter
|
adapter: AbstractAdapter
|
||||||
event: SignedEvent
|
event: SignedEvent
|
||||||
timeout?: number
|
timeout?: number
|
||||||
events?: Partial<PublishEvents>
|
on?: Partial<PublishEvents>
|
||||||
}
|
}
|
||||||
|
|
||||||
export class Publish extends (EventEmitter as new () => TypedEmitter<PublishEvents>) {
|
export class Publish extends (EventEmitter as new () => TypedEmitter<PublishEvents>) {
|
||||||
@@ -63,8 +63,8 @@ export class Publish extends (EventEmitter as new () => TypedEmitter<PublishEven
|
|||||||
)
|
)
|
||||||
|
|
||||||
// Register handlers
|
// Register handlers
|
||||||
if (this.options.events) {
|
if (this.options.on) {
|
||||||
for (const [k, listener] of Object.entries(this.options.events)) {
|
for (const [k, listener] of Object.entries(this.options.on)) {
|
||||||
this.on(k as keyof PublishEvents, listener)
|
this.on(k as keyof PublishEvents, listener)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ export type SubscriptionOptions = {
|
|||||||
timeout?: number
|
timeout?: number
|
||||||
tracker?: Tracker
|
tracker?: Tracker
|
||||||
verifyEvent?: (event: SignedEvent) => boolean
|
verifyEvent?: (event: SignedEvent) => boolean
|
||||||
events?: Partial<SubscriptionEvents>
|
on?: Partial<SubscriptionEvents>
|
||||||
}
|
}
|
||||||
|
|
||||||
export class Subscription extends (EventEmitter as new () => TypedEmitter<SubscriptionEvents>) {
|
export class Subscription extends (EventEmitter as new () => TypedEmitter<SubscriptionEvents>) {
|
||||||
@@ -102,8 +102,8 @@ export class Subscription extends (EventEmitter as new () => TypedEmitter<Subscr
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Register listeners
|
// Register listeners
|
||||||
if (this.options.events) {
|
if (this.options.on) {
|
||||||
for (const [k, listener] of Object.entries(this.options.events)) {
|
for (const [k, listener] of Object.entries(this.options.on)) {
|
||||||
this.on(k as keyof SubscriptionEvents, listener)
|
this.on(k as keyof SubscriptionEvents, listener)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user