import { contextBridge, ipcRenderer } from "electron" import events from "./events" import type { ElectronBridge } from "./types" function kebabToCamel(str: string): string { return str.replace(/-./g, (x) => x[1].toUpperCase()) } const api = {} as ElectronBridge try { Object.keys(events).forEach((eventName) => { const methodName = kebabToCamel(eventName) api[methodName] = (payloadOrCallback: unknown) => { if (typeof payloadOrCallback === "function") { const callback = (_event, payload) => payloadOrCallback(payload) ipcRenderer.on(eventName, callback) return () => ipcRenderer.removeListener(eventName, callback) } return ipcRenderer.invoke(eventName, payloadOrCallback) } }) contextBridge.exposeInMainWorld("electron", api) } catch (error) { console.error("Error exposing API to renderer", error) }