import { ipcRendererInternal } from '@electron/internal/renderer/ipc-renderer-internal'; type IPCHandler = (event: Electron.IpcRendererEvent, ...args: any[]) => any export const handle = function (channel: string, handler: T) { ipcRendererInternal.onMessageFromMain(channel, async (event, requestId, ...args) => { const replyChannel = `${channel}_RESPONSE_${requestId}`; try { event.sender.send(replyChannel, null, await handler(event, ...args)); } catch (error) { event.sender.send(replyChannel, error); } }); }; export function invokeSync (command: string, ...args: any[]): T { const [error, result] = ipcRendererInternal.sendSync(command, ...args); if (error) { throw error; } else { return result; } }