Fewer helper functions

This commit is contained in:
Jon Staab
2025-03-21 11:41:21 -07:00
parent 34e22eaa27
commit b2126aeb5f
2 changed files with 25 additions and 77 deletions
+24 -19
View File
@@ -1,6 +1,7 @@
import {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 {Socket, SocketStatus, SocketUnsubscriber} from "./socket.js"
export const makeAuthEvent = (url: string, challenge: string) =>
@@ -34,7 +35,7 @@ export type AuthManagerOptions = {
export class AuthManager {
challenge: string | undefined
request: string | undefined
message: string | undefined
details: string | undefined
status = AuthStatus.None
_unsubscribers: SocketUnsubscriber[] = []
@@ -43,28 +44,32 @@ export class AuthManager {
readonly options: AuthManagerOptions,
) {
this._unsubscribers.push(
socket.onOk(([id, ok, message]) => {
if (id === this.request) {
this.message = message
socket.onMessage((message: RelayMessage) => {
if (isRelayOkMessage(message)) {
const [_, id, ok, details] = message
if (ok) {
this.status = AuthStatus.Ok
} else {
this.status = AuthStatus.Forbidden
if (id === this.request) {
this.details = details
if (ok) {
this.status = AuthStatus.Ok
} else {
this.status = AuthStatus.Forbidden
}
}
}
}),
)
this._unsubscribers.push(
socket.onAuth(([challenge]) => {
this.challenge = challenge
this.request = undefined
this.message = undefined
this.status = AuthStatus.Requested
if (isRelayAuthMessage(message)) {
const [_, challenge] = message
if (this.options.eager) {
this.respond()
this.challenge = challenge
this.request = undefined
this.details = undefined
this.status = AuthStatus.Requested
if (this.options.eager) {
this.respond()
}
}
}),
)
@@ -74,7 +79,7 @@ export class AuthManager {
if (status === SocketStatus.Closed) {
this.challenge = undefined
this.request = undefined
this.message = undefined
this.details = undefined
this.status = AuthStatus.None
}
}),
+1 -58
View File
@@ -1,19 +1,6 @@
import WebSocket from "isomorphic-ws"
import {remove, now, ago, TaskQueue} from "@welshman/lib"
import type {
RelayMessage,
RelayAuthPayload,
RelayEosePayload,
RelayEventPayload,
RelayOkPayload,
ClientMessage,
} from "./message.js"
import {
isRelayAuthMessage,
isRelayEoseMessage,
isRelayEventMessage,
isRelayOkMessage,
} from "./message.js"
import type {RelayMessage, ClientMessage} from "./message.js"
export enum SocketStatus {
Open = "socket:status:open",
@@ -209,50 +196,6 @@ export class Socket {
}
})
}
onAuth = (cb: (message: RelayAuthPayload) => void) => {
return this.onMessage((message: RelayMessage) => {
if (isRelayAuthMessage(message)) {
cb(message.slice(1) as RelayAuthPayload)
}
})
}
onEose = (cb: (message: RelayEosePayload) => void) => {
return this.onMessage((message: RelayMessage) => {
if (isRelayEoseMessage(message)) {
cb(message.slice(1) as RelayEosePayload)
}
})
}
onEvent = (cb: (message: RelayEventPayload) => void) => {
return this.onMessage((message: RelayMessage) => {
if (isRelayEventMessage(message)) {
cb(message.slice(1) as RelayEventPayload)
}
})
}
onOk = (cb: (message: RelayOkPayload) => void) => {
return this.onMessage((message: RelayMessage) => {
if (isRelayOkMessage(message)) {
cb(message.slice(1) as RelayOkPayload)
}
})
}
wrap = (overrides: Partial<Socket>): Socket => {
return new Proxy(this, {
get: (target, prop: keyof Socket) => {
if (prop in overrides) {
return overrides[prop]
}
return target[prop]
},
})
}
}
export const socketPolicySendWhenOpen = (socket: Socket) => {