miru/electron/src/preload/preload.js
2023-11-12 14:43:06 +01:00

32 lines
831 B
JavaScript

/* eslint n/no-callback-literal: 0 */
import { contextBridge, ipcRenderer } from 'electron'
contextBridge.exposeInMainWorld('IPC', {
emit: (event, data) => {
ipcRenderer.send(event, data)
},
on: (event, callback) => {
ipcRenderer.on(event, (event, ...args) => callback(...args))
},
once: (event, callback) => {
ipcRenderer.once(event, (event, ...args) => callback(...args))
},
off: (event) => {
ipcRenderer.removeAllListeners(event)
}
})
contextBridge.exposeInMainWorld('version', {
arch: process.arch,
platform: process.platform
})
ipcRenderer.once('port', ({ ports }) => {
contextBridge.exposeInMainWorld('port', {
onmessage: (cb) => {
ports[0].onmessage = ({ type, data }) => cb({ type, data })
},
postMessage: (a, b) => {
ports[0].postMessage(a, b)
}
})
})