UNPKG

@electron-toolkit/typed-ipc

Version:
52 lines (48 loc) 1.23 kB
'use strict'; var electron = require('electron'); /* eslint-disable @typescript-eslint/no-explicit-any */ /** * Typed listener for Electron `ipcMain`. */ class IpcListener { constructor() { this.listeners = []; this.handlers = []; } /** * Listen to `channel`. */ on(channel, listener) { this.listeners.push(channel); electron.ipcMain.on(channel, listener); } /** * Handle a renderer invoke request. */ handle(channel, listener) { this.handlers.push(channel); electron.ipcMain.handle(channel, listener); } /** * Dispose all listeners and handlers. */ dispose() { this.listeners.forEach(c => electron.ipcMain.removeAllListeners(c)); this.listeners = []; this.handlers.forEach(c => electron.ipcMain.removeHandler(c)); this.handlers = []; } } /** * Typed emitter for sending an asynchronous message to the renderer process. */ class IpcEmitter { /** * Send an asynchronous message to the renderer process. */ send(sender, channel, ...args) { sender.send(channel, ...args); } } exports.IpcEmitter = IpcEmitter; exports.IpcListener = IpcListener;