add more client message types
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
import {on, sleep} from "@welshman/lib"
|
import {on, sleep} from "@welshman/lib"
|
||||||
import type {SignedEvent, StampedEvent} from "@welshman/util"
|
import type {SignedEvent, StampedEvent} from "@welshman/util"
|
||||||
import {makeEvent, CLIENT_AUTH} 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"
|
import {Socket, SocketStatus, SocketEventType, SocketUnsubscriber} from "./socket.js"
|
||||||
|
|
||||||
export const makeAuthEvent = (url: string, challenge: string) =>
|
export const makeAuthEvent = (url: string, challenge: string) =>
|
||||||
@@ -45,7 +45,7 @@ export class AuthManager {
|
|||||||
) {
|
) {
|
||||||
this._unsubscribers.push(
|
this._unsubscribers.push(
|
||||||
on(socket, SocketEventType.Receive, (message: RelayMessage) => {
|
on(socket, SocketEventType.Receive, (message: RelayMessage) => {
|
||||||
if (isRelayOkMessage(message)) {
|
if (isRelayOk(message)) {
|
||||||
const [_, id, ok, details] = message
|
const [_, id, ok, details] = message
|
||||||
|
|
||||||
if (id === this.request) {
|
if (id === this.request) {
|
||||||
@@ -59,7 +59,7 @@ export class AuthManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isRelayAuthMessage(message)) {
|
if (isRelayAuth(message)) {
|
||||||
const [_, challenge] = message
|
const [_, challenge] = message
|
||||||
|
|
||||||
this.challenge = challenge
|
this.challenge = challenge
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import {EventEmitter} from "events"
|
import {EventEmitter} from "events"
|
||||||
import {on, randomId} from "@welshman/lib"
|
import {on, randomId} from "@welshman/lib"
|
||||||
import {SignedEvent, Filter} from "@welshman/util"
|
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 {AbstractAdapter, AdapterEventType} from "./adapter.js"
|
||||||
import {Negentropy, NegentropyStorageVector} from "./negentropy.js"
|
import {Negentropy, NegentropyStorageVector} from "./negentropy.js"
|
||||||
import {TypedEmitter} from "./util.js"
|
import {TypedEmitter} from "./util.js"
|
||||||
@@ -43,7 +43,7 @@ export class Diff extends (EventEmitter as new () => TypedEmitter<DiffEvents>) {
|
|||||||
adapter,
|
adapter,
|
||||||
AdapterEventType.Receive,
|
AdapterEventType.Receive,
|
||||||
async (message: RelayMessage, url: string) => {
|
async (message: RelayMessage, url: string) => {
|
||||||
if (isRelayNegMsgMessage(message)) {
|
if (isRelayNegMsg(message)) {
|
||||||
const [_, negid, msg] = message
|
const [_, negid, msg] = message
|
||||||
|
|
||||||
if (negid === this._id) {
|
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
|
const [_, negid, msg] = message
|
||||||
|
|
||||||
if (negid === this._id) {
|
if (negid === this._id) {
|
||||||
|
|||||||
@@ -11,6 +11,8 @@ export enum RelayMessageType {
|
|||||||
Ok = "OK",
|
Ok = "OK",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export type RelayMessage = any[]
|
||||||
|
|
||||||
export type RelayAuthPayload = [string]
|
export type RelayAuthPayload = [string]
|
||||||
|
|
||||||
export type RelayEosePayload = [string, SignedEvent]
|
export type RelayEosePayload = [string, SignedEvent]
|
||||||
@@ -23,45 +25,63 @@ export type RelayNegMsgPayload = [string, string]
|
|||||||
|
|
||||||
export type RelayOkPayload = [string, boolean, 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 =>
|
export const isRelayEose = (m: RelayMessage): m is RelayEose => m[0] === RelayMessageType.Eose
|
||||||
m[0] === RelayMessageType.Auth
|
|
||||||
|
|
||||||
export const isRelayEoseMessage = (m: RelayMessage): m is RelayEoseMessage =>
|
export const isRelayEvent = (m: RelayMessage): m is RelayEvent => m[0] === RelayMessageType.Event
|
||||||
m[0] === RelayMessageType.Eose
|
|
||||||
|
|
||||||
export const isRelayEventMessage = (m: RelayMessage): m is RelayEventMessage =>
|
export const isRelayNegErr = (m: RelayMessage): m is RelayNegErr => m[0] === RelayMessageType.NegErr
|
||||||
m[0] === RelayMessageType.Event
|
|
||||||
|
|
||||||
export const isRelayNegErrMessage = (m: RelayMessage): m is RelayNegErrMessage =>
|
export const isRelayNegMsg = (m: RelayMessage): m is RelayNegMsg => m[0] === RelayMessageType.NegMsg
|
||||||
m[0] === RelayMessageType.NegErr
|
|
||||||
|
|
||||||
export const isRelayNegMsgMessage = (m: RelayMessage): m is RelayNegMsgMessage =>
|
export const isRelayOk = (m: RelayMessage): m is RelayOk => m[0] === RelayMessageType.Ok
|
||||||
m[0] === RelayMessageType.NegMsg
|
|
||||||
|
|
||||||
export const isRelayOkMessage = (m: RelayMessage): m is RelayOkMessage =>
|
|
||||||
m[0] === RelayMessageType.Ok
|
|
||||||
|
|
||||||
// client -> relay
|
// client -> relay
|
||||||
|
|
||||||
export type ClientMessage = any[]
|
|
||||||
|
|
||||||
export enum ClientMessageType {
|
export enum ClientMessageType {
|
||||||
Auth = "AUTH",
|
Auth = "AUTH",
|
||||||
Event = "EVENT",
|
Event = "EVENT",
|
||||||
NegClose = "NEG-CLOSE",
|
NegClose = "NEG-CLOSE",
|
||||||
Req = "REQ",
|
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
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import {EventEmitter} from "events"
|
import {EventEmitter} from "events"
|
||||||
import {on} from "@welshman/lib"
|
import {on} from "@welshman/lib"
|
||||||
import {SignedEvent} from "@welshman/util"
|
import {SignedEvent} from "@welshman/util"
|
||||||
import {RelayMessage, isRelayOkMessage} from "./message.js"
|
import {RelayMessage, isRelayOk} from "./message.js"
|
||||||
import {AbstractAdapter, AdapterEventType} from "./adapter.js"
|
import {AbstractAdapter, AdapterEventType} from "./adapter.js"
|
||||||
import {TypedEmitter} from "./util.js"
|
import {TypedEmitter} from "./util.js"
|
||||||
|
|
||||||
@@ -27,7 +27,7 @@ export class Publish extends (EventEmitter as new () => TypedEmitter<PublishEven
|
|||||||
adapter,
|
adapter,
|
||||||
AdapterEventType.Receive,
|
AdapterEventType.Receive,
|
||||||
(message: RelayMessage, url: string) => {
|
(message: RelayMessage, url: string) => {
|
||||||
if (isRelayOkMessage(message)) {
|
if (isRelayOk(message)) {
|
||||||
const [_, id, ok, detail] = message
|
const [_, id, ok, detail] = message
|
||||||
|
|
||||||
if (id === event.id) {
|
if (id === event.id) {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import {EventEmitter} from "events"
|
import {EventEmitter} from "events"
|
||||||
import {on, randomId} from "@welshman/lib"
|
import {on, randomId} from "@welshman/lib"
|
||||||
import {Filter, SignedEvent} from "@welshman/util"
|
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 {AbstractAdapter, AdapterEventType} from "./adapter.js"
|
||||||
import {TypedEmitter} from "./util.js"
|
import {TypedEmitter} from "./util.js"
|
||||||
|
|
||||||
@@ -30,7 +30,7 @@ export class Subscribe extends (EventEmitter as new () => TypedEmitter<Subscribe
|
|||||||
adapter,
|
adapter,
|
||||||
AdapterEventType.Receive,
|
AdapterEventType.Receive,
|
||||||
(message: RelayMessage, url: string) => {
|
(message: RelayMessage, url: string) => {
|
||||||
if (isRelayEventMessage(message)) {
|
if (isRelayEvent(message)) {
|
||||||
const [_, id, event] = message
|
const [_, id, event] = message
|
||||||
|
|
||||||
if (id === this._id) {
|
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
|
const [_, id] = message
|
||||||
|
|
||||||
if (id === this._id) {
|
if (id === this._id) {
|
||||||
|
|||||||
Reference in New Issue
Block a user