import { ipcMain } from 'electron'; import type { IpcInvokeMap } from '../../shared/ipc/contracts'; type Handler = ( payload: IpcInvokeMap[K]['req'], ) => Promise | IpcInvokeMap[K]['res']; const handlers = new Map Promise>(); export function registerHandler(channel: K, handler: Handler) { handlers.set(channel as string, async (payload: unknown) => handler(payload as IpcInvokeMap[K]['req'])); } export function installIpcRouter() { for (const [channel, handler] of handlers.entries()) { ipcMain.handle(channel, async (_event, payload: unknown) => handler(payload)); } }