fix: events

This commit is contained in:
2023-11-08 15:17:37 +00:00
parent 0e202b12d9
commit 2d4d9117bd
3 changed files with 9 additions and 29 deletions

View File

@ -1,14 +1,14 @@
import { v4 as uuid } from "uuid"; import { v4 as uuid } from "uuid";
import debug from "debug"; import debug from "debug";
import WebSocket from "isomorphic-ws"; import WebSocket from "isomorphic-ws";
import { ExternalStore, unixNowMs, dedupe } from "@snort/shared"; import { unixNowMs, dedupe } from "@snort/shared";
import EventEmitter from "eventemitter3";
import { DefaultConnectTimeout } from "./const"; import { DefaultConnectTimeout } from "./const";
import { ConnectionStats } from "./connection-stats"; import { ConnectionStats } from "./connection-stats";
import { NostrEvent, ReqCommand, ReqFilter, TaggedNostrEvent, u256 } from "./nostr"; import { NostrEvent, ReqCommand, ReqFilter, TaggedNostrEvent, u256 } from "./nostr";
import { RelayInfo } from "./relay-info"; import { RelayInfo } from "./relay-info";
import EventKind from "./event-kind"; import EventKind from "./event-kind";
import EventEmitter from "events";
/** /**
* Relay settings * Relay settings
@ -55,12 +55,7 @@ interface ConnectionEvents {
notice: (msg: string) => void; notice: (msg: string) => void;
} }
export declare interface Connection { export class Connection extends EventEmitter<ConnectionEvents> {
on<U extends keyof ConnectionEvents>(event: U, listener: ConnectionEvents[U]): this;
once<U extends keyof ConnectionEvents>(event: U, listener: ConnectionEvents[U]): this;
}
export class Connection extends EventEmitter {
#log: debug.Debugger; #log: debug.Debugger;
#ephemeralCheck?: ReturnType<typeof setInterval>; #ephemeralCheck?: ReturnType<typeof setInterval>;
#activity: number = unixNowMs(); #activity: number = unixNowMs();
@ -243,7 +238,7 @@ export class Connection extends EventEmitter {
break; break;
} }
case "NOTICE": { case "NOTICE": {
this.emit("notice", msg[1]); this.emit("notice", msg[1] as string);
this.#log(`NOTICE: ${msg[1]}`); this.#log(`NOTICE: ${msg[1]}`);
break; break;
} }

View File

@ -1,5 +1,5 @@
import debug from "debug"; import debug from "debug";
import EventEmitter from "events"; import EventEmitter from "eventemitter3";
import { unwrap, sanitizeRelayUrl, FeedCache, removeUndefined } from "@snort/shared"; import { unwrap, sanitizeRelayUrl, FeedCache, removeUndefined } from "@snort/shared";
import { NostrEvent, TaggedNostrEvent } from "./nostr"; import { NostrEvent, TaggedNostrEvent } from "./nostr";
@ -32,15 +32,10 @@ interface NostrSystemEvents {
event: (ev: TaggedNostrEvent) => void; event: (ev: TaggedNostrEvent) => void;
} }
export declare interface NostrSystem {
on<U extends keyof NostrSystemEvents>(event: U, listener: NostrSystemEvents[U]): this;
once<U extends keyof NostrSystemEvents>(event: U, listener: NostrSystemEvents[U]): this;
}
/** /**
* Manages nostr content retrieval system * Manages nostr content retrieval system
*/ */
export class NostrSystem extends EventEmitter implements SystemInterface { export class NostrSystem extends EventEmitter<NostrSystemEvents> implements SystemInterface {
#log = debug("System"); #log = debug("System");
/** /**

View File

@ -1,12 +1,12 @@
import { v4 as uuid } from "uuid"; import { v4 as uuid } from "uuid";
import debug from "debug"; import debug from "debug";
import EventEmitter from "eventemitter3";
import { unixNowMs, unwrap } from "@snort/shared"; import { unixNowMs, unwrap } from "@snort/shared";
import { Connection, ReqFilter, Nips, TaggedNostrEvent } from "."; import { Connection, ReqFilter, Nips, TaggedNostrEvent } from ".";
import { NoteStore } from "./note-collection"; import { NoteStore } from "./note-collection";
import { BuiltRawReqFilter } from "./request-builder"; import { BuiltRawReqFilter } from "./request-builder";
import { eventMatchesFilter } from "./request-matcher"; import { eventMatchesFilter } from "./request-matcher";
import EventEmitter from "events";
interface QueryTraceEvents { interface QueryTraceEvents {
change: () => void; change: () => void;
@ -14,15 +14,10 @@ interface QueryTraceEvents {
eose: (id: string, connId: string, wasForced: boolean) => void; eose: (id: string, connId: string, wasForced: boolean) => void;
} }
export declare interface QueryTrace {
on<U extends keyof QueryTraceEvents>(event: U, listener: QueryTraceEvents[U]): this;
once<U extends keyof QueryTraceEvents>(event: U, listener: QueryTraceEvents[U]): this;
}
/** /**
* Tracing for relay query status * Tracing for relay query status
*/ */
export class QueryTrace extends EventEmitter { export class QueryTrace extends EventEmitter<QueryTraceEvents> {
readonly id: string; readonly id: string;
readonly start: number; readonly start: number;
sent?: number; sent?: number;
@ -122,15 +117,10 @@ interface QueryEvents {
trace: (report: TraceReport) => void; trace: (report: TraceReport) => void;
} }
export declare interface Query {
on<U extends keyof QueryEvents>(event: U, listener: QueryEvents[U]): this;
once<U extends keyof QueryEvents>(event: U, listener: QueryEvents[U]): this;
}
/** /**
* Active or queued query on the system * Active or queued query on the system
*/ */
export class Query extends EventEmitter implements QueryBase { export class Query extends EventEmitter<QueryEvents> implements QueryBase {
/** /**
* Uniquie ID of this query * Uniquie ID of this query
*/ */