const { ipcRenderer, contextBridge } = require('electron') contextBridge.exposeInMainWorld('ipcRenderer', { send: (channel, data) => { // whitelist channels let validChannels = ['toMain'] if (validChannels.includes(channel)) { ipcRenderer.send(channel, data) } ipcRenderer.send(channel, data) }, sendSync: (channel, data) => { // whitelist channels let validChannels = ['toMain'] if (validChannels.includes(channel)) { return ipcRenderer.sendSync(channel, data) } return ipcRenderer.sendSync(channel, data) }, receive: (channel, func) => { let validChannels = ['fromMain'] if (validChannels.includes(channel)) { // Deliberately strip event as it includes `sender` ipcRenderer.on(channel, (event, ...args) => func(...args)) } ipcRenderer.on(channel, (event, ...args) => func(...args)) }, unreceive: (channel) => { ipcRenderer.removeAllListeners(channel) } })