import { EventEmitter } from 'events'; export class MessagePortMain extends EventEmitter implements Electron.MessagePortMain { _internalPort: any; constructor (internalPort: any) { super(); this._internalPort = internalPort; this._internalPort.emit = (channel: string, event: {ports: any[]}) => { if (channel === 'message') { event = { ...event, ports: event.ports.map(p => new MessagePortMain(p)) }; } this.emit(channel, event); }; } start () { return this._internalPort.start(); } close () { return this._internalPort.close(); } postMessage (...args: any[]) { if (Array.isArray(args[1])) { args[1] = args[1].map((o: any) => o instanceof MessagePortMain ? o._internalPort : o); } return this._internalPort.postMessage(...args); } }