interprocess
Version:
A scalable and type-safe Electron IPC management tool with enhanced DX
3 lines (2 loc) • 5.8 kB
JavaScript
import{contextBridge as T,ipcRenderer as b,ipcMain as s}from"electron";var B=Object.defineProperty,V=Object.defineProperties,Y=Object.getOwnPropertyDescriptors,P=Object.getOwnPropertySymbols,W=Object.prototype.hasOwnProperty,G=Object.prototype.propertyIsEnumerable,$=(r,e,t)=>e in r?B(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,v=(r,e)=>{for(var t in e||(e={}))W.call(e,t)&&$(r,t,e[t]);if(P)for(var t of P(e))G.call(e,t)&&$(r,t,e[t]);return r},q=(r,e)=>V(r,Y(e));const O={apiKey:"api",exposeAll:!1};function w(r,e,t){function n(a=O){const{apiKey:o,exposeAll:i,append:c}=Object.assign(O,a),l=v({invoke:e},c),p={handle:r,remove:t},u=v(v({},p),l),y=q(v({},p),{invoke:e}),K=i?u:l,j=a.override?v(v({},a.override(y)),c):K;return T.exposeInMainWorld(o||O.apiKey,j),{key:o,api:j}}return n}var z=Object.defineProperty,F=Object.defineProperties,J=Object.getOwnPropertyDescriptors,I=Object.getOwnPropertySymbols,Q=Object.prototype.hasOwnProperty,U=Object.prototype.propertyIsEnumerable,R=(r,e,t)=>e in r?z(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,X=(r,e)=>{for(var t in e||(e={}))Q.call(e,t)&&R(r,t,e[t]);if(I)for(var t of I(e))U.call(e,t)&&R(r,t,e[t]);return r},Z=(r,e)=>F(r,J(e));function ee(r){return Object.keys(r?.main||{}).reduce((e,t)=>{const n=t;return Z(X({},e),{[n]:async(...a)=>b.invoke(n,...a)})},{})}const f={INTERNAL:{SYNC_AVAILABLE_RENDERER_IPCS:"@interprocess:syncAvailableRendererIpcs"}};var re=Object.defineProperty,te=Object.defineProperties,ne=Object.getOwnPropertyDescriptors,E=Object.getOwnPropertySymbols,oe=Object.prototype.hasOwnProperty,ae=Object.prototype.propertyIsEnumerable,g=(r,e,t)=>e in r?re(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,ce=(r,e)=>{for(var t in e||(e={}))oe.call(e,t)&&g(r,t,e[t]);if(E)for(var t of E(e))ae.call(e,t)&&g(r,t,e[t]);return r},ie=(r,e)=>te(r,ne(e));function le(r){return Object.keys(r?.renderer||{}).reduce((e,t)=>{const n=t;return ie(ce({},e),{[n]:async a=>{const o=r.renderer[n],i=a;return b.invoke(f.INTERNAL.SYNC_AVAILABLE_RENDERER_IPCS,{type:"add",key:n}),b.on(n,async function(c,...l){let p;i&&(p=await i(c,{[n]:o,data:l[0]},...l)),!i&&o&&(p=await o(c,l[0])),c.sender.send(n,p)})}})},{})}var pe=Object.defineProperty,se=Object.defineProperties,ve=Object.getOwnPropertyDescriptors,A=Object.getOwnPropertySymbols,be=Object.prototype.hasOwnProperty,de=Object.prototype.propertyIsEnumerable,k=(r,e,t)=>e in r?pe(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,h=(r,e)=>{for(var t in e||(e={}))be.call(e,t)&&k(r,t,e[t]);if(A)for(var t of A(e))de.call(e,t)&&k(r,t,e[t]);return r},C=(r,e)=>se(r,ve(e));function ue(r){const e=Object.keys(r?.main||{}).reduce((n,a)=>{const o=a;return C(h({},n),{[o]:()=>{s.removeHandler(o)}})},{}),t=Object.keys(r?.renderer||{}).reduce((n,a)=>{const o=a;return C(h({},n),{[o]:()=>{var i,c;!((i=r?.renderer)!=null&&i[o])||(b.removeListener(o,r.renderer[o]),(c=r?.renderer)==null||delete c[o],b.invoke(f.INTERNAL.SYNC_AVAILABLE_RENDERER_IPCS,{type:"remove",key:o}))}})},{});return{mainRemove:e,rendererRemove:t}}function ye(){return process.type==="browser"}const Oe=new Set,m={main:{availableRendererIpcChannels:Oe}};let S=!1;function fe(){S||!ye()||(s.handle(f.INTERNAL.SYNC_AVAILABLE_RENDERER_IPCS,(r,e)=>{e.type==="add"&&m.main.availableRendererIpcChannels.add(e.key),e.type==="remove"&&m.main.availableRendererIpcChannels.delete(e.key)}),S=!0)}var me=Object.defineProperty,je=Object.defineProperties,Pe=Object.getOwnPropertyDescriptors,N=Object.getOwnPropertySymbols,$e=Object.prototype.hasOwnProperty,we=Object.prototype.propertyIsEnumerable,L=(r,e,t)=>e in r?me(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Ie=(r,e)=>{for(var t in e||(e={}))$e.call(e,t)&&L(r,t,e[t]);if(N)for(var t of N(e))we.call(e,t)&&L(r,t,e[t]);return r},Re=(r,e)=>je(r,Pe(e));function Ee(r){return fe(),Object.keys(r?.renderer||{}).reduce((e,t)=>{const n=t;return Re(Ie({},e),{[n]:async(a,...o)=>new Promise((i,c)=>{if(!m.main.availableRendererIpcChannels.has(n))return c(`No handler registered for '${n}'`);const l=async function(p,...u){const y=await u[0];i(y),s.removeListener(n,l)};s.addListener(n,l),a.webContents.send(n,...o)})})},{})}var ge=Object.defineProperty,Ae=Object.defineProperties,ke=Object.getOwnPropertyDescriptors,_=Object.getOwnPropertySymbols,he=Object.prototype.hasOwnProperty,Ce=Object.prototype.propertyIsEnumerable,D=(r,e,t)=>e in r?ge(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Se=(r,e)=>{for(var t in e||(e={}))he.call(e,t)&&D(r,t,e[t]);if(_)for(var t of _(e))Ce.call(e,t)&&D(r,t,e[t]);return r},Ne=(r,e)=>Ae(r,ke(e));function Le(r){return Object.keys(r?.main||{}).reduce((e,t)=>{const n=t;return Ne(Se({},e),{[n]:async a=>{const o=r.main[n];return!a&&o?s.handle(n,o):s.handle(n,(i,...c)=>a(i,{[n]:o,data:c[0]},...c))}})},{})}function x(r){const e=Ee(r),t=Le(r),n=ee(r),a=le(r),{mainRemove:o,rendererRemove:i}=ue(r),c=w(a,n,i);return{ipcs:r,exposeApiToGlobalWindow:c,ipcMain:{handle:t,invoke:e,remove:o},ipcRenderer:{handle:a,invoke:n,remove:i}}}function _e(r){return r}var De=Object.defineProperty,xe=Object.defineProperties,Me=Object.getOwnPropertyDescriptors,M=Object.getOwnPropertySymbols,He=Object.prototype.hasOwnProperty,Ke=Object.prototype.propertyIsEnumerable,H=(r,e,t)=>e in r?De(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,d=(r,e)=>{for(var t in e||(e={}))He.call(e,t)&&H(r,t,e[t]);if(M)for(var t of M(e))Ke.call(e,t)&&H(r,t,e[t]);return r},Te=(r,e)=>xe(r,Me(e));function Be(...r){const e=r?.reduce((t,n)=>Te(d({},t),{main:d(d({},t.main),n.main),renderer:d(d({},t.renderer),n.renderer)}),{main:{},renderer:{}});return x(e)}export{Be as combineIpcs,w as createApiToGlobalWindowExposer,x as createInterprocess,_e as createIpcSlice};
//# sourceMappingURL=index.js.map