bun-ws-router
Version:
A simple and efficient WebSocket router for Bun with Zod/Valibot message validation.
37 lines • 1.26 kB
TypeScript
import type { HeadersInit, Server, ServerWebSocket } from "bun";
export interface WebSocketRouterOptions {
server?: Server;
}
export type WebSocketData<T> = {
clientId: string;
} & T;
export interface UpgradeOptions<T> {
server: Server;
data?: T;
headers?: HeadersInit;
}
export interface OpenHandlerContext<Data> {
ws: ServerWebSocket<Data>;
send: SendFunction;
}
export type OpenHandler<Data = unknown> = (context: OpenHandlerContext<Data>) => void | Promise<void>;
export interface CloseHandlerContext<Data> {
ws: ServerWebSocket<Data>;
code: number;
reason?: string;
send: SendFunction;
}
export type CloseHandler<Data = unknown> = (context: CloseHandlerContext<Data>) => void | Promise<void>;
export type SendFunction = (schema: any, data: any, meta?: any) => void;
export type MessageContext<Data> = {
ws: ServerWebSocket<Data>;
meta: any;
send: SendFunction;
} & Record<string, any>;
export type MessageHandler<_Schema, Data> = (context: MessageContext<Data>) => void | Promise<void>;
export type MessageSchemaType = any;
export interface MessageHandlerEntry<Data = unknown> {
schema: MessageSchemaType;
handler: MessageHandler<MessageSchemaType, Data>;
}
//# sourceMappingURL=types.d.ts.map