ipc-renderer-internal.ts 743 B

12345678910111213141516171819202122232425
  1. import { EventEmitter } from 'events';
  2. const { ipc } = process._linkedBinding('electron_renderer_ipc');
  3. const internal = true;
  4. class IpcRendererInternal extends EventEmitter implements ElectronInternal.IpcRendererInternal {
  5. send (channel: string, ...args: any[]) {
  6. return ipc.send(internal, channel, args);
  7. }
  8. sendSync (channel: string, ...args: any[]) {
  9. return ipc.sendSync(internal, channel, args);
  10. }
  11. async invoke<T> (channel: string, ...args: any[]) {
  12. const { error, result } = await ipc.invoke<T>(internal, channel, args);
  13. if (error) {
  14. throw new Error(`Error invoking remote method '${channel}': ${error}`);
  15. }
  16. return result;
  17. };
  18. }
  19. export const ipcRendererInternal = new IpcRendererInternal();