add more client message types

This commit is contained in:
Jon Staab
2025-03-21 13:24:47 -07:00
parent 6f0b6acddb
commit be3ce11110
5 changed files with 53 additions and 33 deletions
+3 -3
View File
@@ -1,7 +1,7 @@
import {on, sleep} from "@welshman/lib"
import type {SignedEvent, StampedEvent} from "@welshman/util"
import {makeEvent, CLIENT_AUTH} from "@welshman/util"
import {isRelayAuthMessage, isRelayOkMessage, RelayMessage} from "./message.js"
import {isRelayAuth, isRelayOk, RelayMessage} from "./message.js"
import {Socket, SocketStatus, SocketEventType, SocketUnsubscriber} from "./socket.js"
export const makeAuthEvent = (url: string, challenge: string) =>
@@ -45,7 +45,7 @@ export class AuthManager {
) {
this._unsubscribers.push(
on(socket, SocketEventType.Receive, (message: RelayMessage) => {
if (isRelayOkMessage(message)) {
if (isRelayOk(message)) {
const [_, id, ok, details] = message
if (id === this.request) {
@@ -59,7 +59,7 @@ export class AuthManager {
}
}
if (isRelayAuthMessage(message)) {
if (isRelayAuth(message)) {
const [_, challenge] = message
this.challenge = challenge
+3 -3
View File
@@ -1,7 +1,7 @@
import {EventEmitter} from "events"
import {on, randomId} from "@welshman/lib"
import {SignedEvent, Filter} from "@welshman/util"
import {RelayMessage, isRelayNegErrMessage, isRelayNegMsgMessage} from "./message.js"
import {RelayMessage, isRelayNegErr, isRelayNegMsg} from "./message.js"
import {AbstractAdapter, AdapterEventType} from "./adapter.js"
import {Negentropy, NegentropyStorageVector} from "./negentropy.js"
import {TypedEmitter} from "./util.js"
@@ -43,7 +43,7 @@ export class Diff extends (EventEmitter as new () => TypedEmitter<DiffEvents>) {
adapter,
AdapterEventType.Receive,
async (message: RelayMessage, url: string) => {
if (isRelayNegMsgMessage(message)) {
if (isRelayNegMsg(message)) {
const [_, negid, msg] = message
if (negid === this._id) {
@@ -59,7 +59,7 @@ export class Diff extends (EventEmitter as new () => TypedEmitter<DiffEvents>) {
}
}
if (isRelayNegErrMessage(message)) {
if (isRelayNegErr(message)) {
const [_, negid, msg] = message
if (negid === this._id) {
+42 -22
View File
@@ -11,6 +11,8 @@ export enum RelayMessageType {
Ok = "OK",
}
export type RelayMessage = any[]
export type RelayAuthPayload = [string]
export type RelayEosePayload = [string, SignedEvent]
@@ -23,45 +25,63 @@ export type RelayNegMsgPayload = [string, string]
export type RelayOkPayload = [string, boolean, string]
export type RelayAuthMessage = [RelayMessageType.Auth, ...RelayAuthPayload]
export type RelayAuth = [RelayMessageType.Auth, ...RelayAuthPayload]
export type RelayEoseMessage = [RelayMessageType.Eose, ...RelayEosePayload]
export type RelayEose = [RelayMessageType.Eose, ...RelayEosePayload]
export type RelayEventMessage = [RelayMessageType.Event, ...RelayEventPayload]
export type RelayEvent = [RelayMessageType.Event, ...RelayEventPayload]
export type RelayNegErrMessage = [RelayMessageType.NegErr, ...RelayNegErrPayload]
export type RelayNegErr = [RelayMessageType.NegErr, ...RelayNegErrPayload]
export type RelayNegMsgMessage = [RelayMessageType.NegMsg, ...RelayNegMsgPayload]
export type RelayNegMsg = [RelayMessageType.NegMsg, ...RelayNegMsgPayload]
export type RelayOkMessage = [RelayMessageType.Ok, ...RelayOkPayload]
export type RelayOk = [RelayMessageType.Ok, ...RelayOkPayload]
export type RelayMessage = any[]
export const isRelayAuth = (m: RelayMessage): m is RelayAuth => m[0] === RelayMessageType.Auth
export const isRelayAuthMessage = (m: RelayMessage): m is RelayAuthMessage =>
m[0] === RelayMessageType.Auth
export const isRelayEose = (m: RelayMessage): m is RelayEose => m[0] === RelayMessageType.Eose
export const isRelayEoseMessage = (m: RelayMessage): m is RelayEoseMessage =>
m[0] === RelayMessageType.Eose
export const isRelayEvent = (m: RelayMessage): m is RelayEvent => m[0] === RelayMessageType.Event
export const isRelayEventMessage = (m: RelayMessage): m is RelayEventMessage =>
m[0] === RelayMessageType.Event
export const isRelayNegErr = (m: RelayMessage): m is RelayNegErr => m[0] === RelayMessageType.NegErr
export const isRelayNegErrMessage = (m: RelayMessage): m is RelayNegErrMessage =>
m[0] === RelayMessageType.NegErr
export const isRelayNegMsg = (m: RelayMessage): m is RelayNegMsg => m[0] === RelayMessageType.NegMsg
export const isRelayNegMsgMessage = (m: RelayMessage): m is RelayNegMsgMessage =>
m[0] === RelayMessageType.NegMsg
export const isRelayOkMessage = (m: RelayMessage): m is RelayOkMessage =>
m[0] === RelayMessageType.Ok
export const isRelayOk = (m: RelayMessage): m is RelayOk => m[0] === RelayMessageType.Ok
// client -> relay
export type ClientMessage = any[]
export enum ClientMessageType {
Auth = "AUTH",
Event = "EVENT",
NegClose = "NEG-CLOSE",
Req = "REQ",
}
export type ClientMessage = any[]
export type ClientAuthPayload = []
export type ClientEventPayload = []
export type ClientNegClosePayload = []
export type ClientReqPayload = []
export type ClientAuth = [ClientMessageType.Req, ...ClientAuthPayload]
export type ClientEvent = [ClientMessageType.Req, ...ClientEventPayload]
export type ClientNegClose = [ClientMessageType.Req, ...ClientNegClosePayload]
export type ClientReq = [ClientMessageType.Req, ...ClientReqPayload]
export const isClientAuth = (m: ClientMessage): m is ClientAuth => m[0] === ClientMessageType.Auth
export const isClientEvent = (m: ClientMessage): m is ClientEvent =>
m[0] === ClientMessageType.Event
export const isClientNegClose = (m: ClientMessage): m is ClientNegClose =>
m[0] === ClientMessageType.NegClose
export const isClientReq = (m: ClientMessage): m is ClientReq => m[0] === ClientMessageType.Req
+2 -2
View File
@@ -1,7 +1,7 @@
import {EventEmitter} from "events"
import {on} from "@welshman/lib"
import {SignedEvent} from "@welshman/util"
import {RelayMessage, isRelayOkMessage} from "./message.js"
import {RelayMessage, isRelayOk} from "./message.js"
import {AbstractAdapter, AdapterEventType} from "./adapter.js"
import {TypedEmitter} from "./util.js"
@@ -27,7 +27,7 @@ export class Publish extends (EventEmitter as new () => TypedEmitter<PublishEven
adapter,
AdapterEventType.Receive,
(message: RelayMessage, url: string) => {
if (isRelayOkMessage(message)) {
if (isRelayOk(message)) {
const [_, id, ok, detail] = message
if (id === event.id) {
+3 -3
View File
@@ -1,7 +1,7 @@
import {EventEmitter} from "events"
import {on, randomId} from "@welshman/lib"
import {Filter, SignedEvent} from "@welshman/util"
import {RelayMessage, isRelayEventMessage, isRelayEoseMessage} from "./message.js"
import {RelayMessage, isRelayEvent, isRelayEose} from "./message.js"
import {AbstractAdapter, AdapterEventType} from "./adapter.js"
import {TypedEmitter} from "./util.js"
@@ -30,7 +30,7 @@ export class Subscribe extends (EventEmitter as new () => TypedEmitter<Subscribe
adapter,
AdapterEventType.Receive,
(message: RelayMessage, url: string) => {
if (isRelayEventMessage(message)) {
if (isRelayEvent(message)) {
const [_, id, event] = message
if (id === this._id) {
@@ -38,7 +38,7 @@ export class Subscribe extends (EventEmitter as new () => TypedEmitter<Subscribe
}
}
if (isRelayEoseMessage(message)) {
if (isRelayEose(message)) {
const [_, id] = message
if (id === this._id) {