import type { AnyMessage, RequestMessage, ShareMessage } from "./messages"; export type HandlerFn = (message: Message) => void; export type MessageHandler = { [M in Messages as M["event_name"]]?: HandlerFn; }; export type RequestMessageHandler = MessageHandler; export type ShareMessageHandler = MessageHandler; const defaultHandlerFn: HandlerFn = m => { console.error( `Received unknown event "${m.event_name}": ${JSON.stringify(m)}` ); }; export function routeEventToHandler( event: string, message: any, handlers: MessageHandler ): void { const handler = handlers[event] || defaultHandlerFn; handler(message); }