UNPKG

bun-ws-router

Version:

A simple and efficient WebSocket router for Bun with Zod/Valibot message validation.

48 lines 2.03 kB
import type { WebSocketHandler } from "bun"; import type { CloseHandler, MessageHandler, MessageSchemaType, OpenHandler, UpgradeOptions, WebSocketData } from "./types"; export interface ValidatorAdapter { getMessageType(schema: MessageSchemaType): string; safeParse(schema: MessageSchemaType, data: unknown): { success: boolean; data?: any; error?: any; }; infer<T extends MessageSchemaType>(schema: T): any; } /** * WebSocket router for Bun that provides type-safe message routing with validation. * Routes incoming messages to handlers based on message type. * * @template T - Application-specific data to store with each WebSocket connection. * Always includes a clientId property generated automatically. */ export declare class WebSocketRouter<T extends Record<string, unknown> = Record<string, never>> { private readonly connectionHandler; private readonly messageRouter; private readonly validator; constructor(validator: ValidatorAdapter); /** * Merges open, close, and message handlers from another WebSocketRouter instance. */ addRoutes(router: WebSocketRouter<T>): this; /** * Upgrades an HTTP request to a WebSocket connection. */ upgrade(req: Request, options: UpgradeOptions<WebSocketData<T>>): Response; onOpen(handler: OpenHandler<WebSocketData<T>>): this; onClose(handler: CloseHandler<WebSocketData<T>>): this; onMessage<Schema extends MessageSchemaType>(schema: Schema, handler: MessageHandler<Schema, WebSocketData<T>>): this; /** * Returns a WebSocket handler that can be used with `Bun.serve`. */ get websocket(): WebSocketHandler<WebSocketData<T>>; private handleOpen; private handleClose; private handleMessage; /** * Creates a send function for a specific WebSocket connection. * This function allows handlers to send typed messages with proper validation. */ private createSendFunction; } //# sourceMappingURL=router.d.ts.map