bun-ws-router
Version:
Lightweight client/server WebSocket router for Bun with type-safe Zod/Valibot validation.
49 lines • 1.68 kB
TypeScript
/**
* Multi-handler dispatch for client-side message routing.
* See @specs/client.md#multiple-handlers and @specs/rules.md#server-client-asymmetry.
*/
import type { AnyMessageSchema, MessageHandler } from "./types.js";
export declare class HandlerRegistry {
private handlers;
private schemas;
/**
* Registers a handler for a message type.
* Returns unsubscribe function that removes only this handler.
*/
register<S extends AnyMessageSchema>(schema: S, handler: MessageHandler, extractType: (schema: S) => string): () => void;
/**
* Dispatches message to registered handlers.
* Executes in registration order with error isolation.
* Returns true if handlers were found, false otherwise.
*/
dispatch(msg: {
type: string;
[key: string]: unknown;
}): boolean;
/**
* Gets schema for validation by message type.
*/
getSchema(type: string): AnyMessageSchema | undefined;
/**
* Validates message against registered schema.
* Returns { success: true, data } if validation succeeds.
* Returns { success: false, reason: "no-schema" } if no schema registered.
* Returns { success: false, reason: "validation-failed" } if validation fails.
*/
validate(msg: unknown, safeParse: (schema: AnyMessageSchema, data: unknown) => {
success: boolean;
data?: unknown;
error?: unknown;
}): {
success: true;
data: unknown;
} | {
success: false;
reason: "no-schema";
} | {
success: false;
reason: "validation-failed";
error: unknown;
};
}
//# sourceMappingURL=handlers.d.ts.map