diff --git a/packages/net2/src/auth.ts b/packages/net2/src/auth.ts index 30c85c8..718c90a 100644 --- a/packages/net2/src/auth.ts +++ b/packages/net2/src/auth.ts @@ -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 } }), diff --git a/packages/net2/src/socket.ts b/packages/net2/src/socket.ts index 39c7176..0f6e1bb 100644 --- a/packages/net2/src/socket.ts +++ b/packages/net2/src/socket.ts @@ -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 => { - return new Proxy(this, { - get: (target, prop: keyof Socket) => { - if (prop in overrides) { - return overrides[prop] - } - - return target[prop] - }, - }) - } } export const socketPolicySendWhenOpen = (socket: Socket) => {