UNPKG

electron-ipc-typesafe

Version:

A type-safe IPC (Inter-Process Communication) library for Electron applications with flexible handler registration

2 lines (1 loc) 925 B
"use strict";var e=require("./create-ipc-events.cjs"),r=require("./create-ipc-handlers.cjs");exports.createIpcSchema=function(n){const{apiKey:s,handlers:t,events:a}=n;if(!(t&&0!==Object.keys(t).length||a&&0!==Object.keys(a).length))throw new Error("At least one of handlers or events must be provided");const c=t&&Object.keys(t).length>0?r.createIpcHandlers(s,t):null,l=a&&Object.keys(a).length>0?e.createIpcEvents(s,a):null,i=c?c.getInvokeObject():{},o={exposeInPreload:e=>{const r={};if(c&&Object.assign(r,c.getExposeInPreloadHandlersPart(e)),l){const n=l.exposeInPreload(e);r.events=n}return r}},d=t&&Object.keys(t).length>0,g=null!==l;return d?(o.registerHandler=c.registerHandler,o.registerMainHandlers=c.registerMainHandlers,o.registerInvokers=c.registerInvokers,o.invoke=i):(o.registerInvokers=()=>({}),o.registerMainHandlers=()=>{},g||(o.invoke={})),l?(o.send=l.send,o.events=l.listeners):(o.send={},o.events={}),o};