rx-nostr
Version:
A library based on RxJS, which allows Nostr applications to easily communicate with relays.
51 lines (43 loc) • 1.1 kB
text/typescript
// the minimum WebSocket interface definition for rx-nostr to work
export interface IWebSocketConstructor {
new (url: string): IWebSocket;
}
export interface IWebSocket {
readyState: number;
addEventListener(
method: "message",
callback: (event: IMessageEvent) => void,
): void;
addEventListener(
method: "close",
callback: (event: ICloseEvent) => void,
): void;
addEventListener(method: "open", callback: () => void): void;
removeEventListener(
method: "message",
callback: (event: IMessageEvent) => void,
): void;
removeEventListener(
method: "close",
callback: (event: ICloseEvent) => void,
): void;
removeEventListener(method: "open", callback: () => void): void;
send(data: string): void;
close(code?: number): void;
}
export interface ICloseEvent {
type: string;
code: number;
reason: string;
}
export interface IMessageEvent {
type: string;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
data: any;
}
export const ReadyState = {
CONNECTING: 0,
OPEN: 1,
CLOSING: 2,
CLOSED: 3,
} as const;