ipc-renderer.ts 964 B

12345678910111213141516171819202122232425262728293031323334
  1. import { getIPCRenderer } from '@electron/internal/renderer/ipc-renderer-bindings';
  2. import { EventEmitter } from 'events';
  3. const ipc = getIPCRenderer();
  4. const internal = false;
  5. class IpcRenderer extends EventEmitter implements Electron.IpcRenderer {
  6. send (channel: string, ...args: any[]) {
  7. return ipc.send(internal, channel, args);
  8. }
  9. sendSync (channel: string, ...args: any[]) {
  10. return ipc.sendSync(internal, channel, args);
  11. }
  12. sendToHost (channel: string, ...args: any[]) {
  13. return ipc.sendToHost(channel, args);
  14. }
  15. async invoke (channel: string, ...args: any[]) {
  16. const { error, result } = await ipc.invoke(internal, channel, args);
  17. if (error) {
  18. throw new Error(`Error invoking remote method '${channel}': ${error}`);
  19. }
  20. return result;
  21. }
  22. postMessage (channel: string, message: any, transferables: any) {
  23. return ipc.postMessage(channel, message, transferables);
  24. }
  25. }
  26. export default new IpcRenderer();