import type { WebSocketServer } from "ws"; import type { createSubsystemLogger } from "../logging.js"; import type { ResolvedGatewayAuth } from "./auth.js"; import { attachGatewayWsConnectionHandler } from "./server/ws-connection.js"; import type { GatewayWsClient } from "./server/ws-types.js"; import type { GatewayRequestContext, GatewayRequestHandlers } from "./server-methods/types.js"; export function attachGatewayWsHandlers(params: { wss: WebSocketServer; clients: Set; port: number; bridgeHost?: string; canvasHostEnabled: boolean; canvasHostServerPort?: number; resolvedAuth: ResolvedGatewayAuth; gatewayMethods: string[]; events: string[]; logGateway: ReturnType; logHealth: ReturnType; logWsControl: ReturnType; extraHandlers: GatewayRequestHandlers; broadcast: ( event: string, payload: unknown, opts?: { dropIfSlow?: boolean; stateVersion?: { presence?: number; health?: number }; }, ) => void; context: GatewayRequestContext; }) { attachGatewayWsConnectionHandler({ wss: params.wss, clients: params.clients, port: params.port, bridgeHost: params.bridgeHost, canvasHostEnabled: params.canvasHostEnabled, canvasHostServerPort: params.canvasHostServerPort, resolvedAuth: params.resolvedAuth, gatewayMethods: params.gatewayMethods, events: params.events, logGateway: params.logGateway, logHealth: params.logHealth, logWsControl: params.logWsControl, extraHandlers: params.extraHandlers, broadcast: params.broadcast, buildRequestContext: () => params.context, }); }