32 lines
		
	
	
	
		
			824 B
			
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			32 lines
		
	
	
	
		
			824 B
			
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import { MessagePortMain } from '@electron/internal/browser/message-port-main';
 | 
						|
 | 
						|
import { EventEmitter } from 'events';
 | 
						|
 | 
						|
const { createParentPort } = process._linkedBinding('electron_utility_parent_port');
 | 
						|
 | 
						|
export class ParentPort extends EventEmitter implements Electron.ParentPort {
 | 
						|
  #port: ParentPort;
 | 
						|
  constructor () {
 | 
						|
    super();
 | 
						|
    this.#port = createParentPort();
 | 
						|
    this.#port.emit = (channel: string | symbol, event: { ports: any[] }) => {
 | 
						|
      if (channel === 'message') {
 | 
						|
        event = { ...event, ports: event.ports.map(p => new MessagePortMain(p)) };
 | 
						|
      }
 | 
						|
      this.emit(channel, event);
 | 
						|
      return false;
 | 
						|
    };
 | 
						|
  }
 | 
						|
 | 
						|
  start () : void {
 | 
						|
    this.#port.start();
 | 
						|
  }
 | 
						|
 | 
						|
  pause () : void {
 | 
						|
    this.#port.pause();
 | 
						|
  }
 | 
						|
 | 
						|
  postMessage (message: any) : void {
 | 
						|
    this.#port.postMessage(message);
 | 
						|
  }
 | 
						|
}
 |