import IPC_EVENTS from "./utils/IpcEvents"; import { IpcRenderer, ipcRenderer } from "electron"; function assertEventAllowed(event: string) { if (!(event in IPC_EVENTS)) throw new Error(`Event ${event} not allowed.`); } export default { getVersions: () => process.versions, ipc: { send(event: string, ...args: any[]) { assertEventAllowed(event); ipcRenderer.send(event, ...args); }, sendSync(event: string, ...args: any[]): T { assertEventAllowed(event); return ipcRenderer.sendSync(event, ...args); }, on(event: string, listener: Parameters[1]) { assertEventAllowed(event); ipcRenderer.on(event, listener); }, off(event: string, listener: Parameters[1]) { assertEventAllowed(event); ipcRenderer.off(event, listener); }, invoke(event: string, ...args: any[]): Promise { assertEventAllowed(event); return ipcRenderer.invoke(event, ...args); } } };