ipc-renderer-internal.ts 723 B

1234567891011121314151617181920212223
  1. import { EventEmitter } from 'events';
  2. const { ipc } = process._linkedBinding('electron_renderer_ipc');
  3. const internal = true;
  4. export const ipcRendererInternal = new EventEmitter() as any as ElectronInternal.IpcRendererInternal;
  5. ipcRendererInternal.send = function (channel, ...args) {
  6. return ipc.send(internal, channel, args);
  7. };
  8. ipcRendererInternal.sendSync = function (channel, ...args) {
  9. return ipc.sendSync(internal, channel, args);
  10. };
  11. ipcRendererInternal.invoke = async function<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. };