electron-shared-state
Version:
❤️ easily sharing state across electron main and renderer processes.
1 lines • 3.52 kB
JavaScript
;function e(e,r,t){if(r in e){Object.defineProperty(e,r,{value:t,enumerable:true,configurable:true,writable:true})}else{e[r]=t}return e}function r(r){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};var o=Object.keys(n);if(typeof Object.getOwnPropertySymbols==="function"){o=o.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))}o.forEach(function(t){e(r,t,n[t])})}return r}function t(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);if(r){n=n.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})}t.push.apply(t,n)}return t}function n(e,r){r=r!=null?r:{};if(Object.getOwnPropertyDescriptors){Object.defineProperties(e,Object.getOwnPropertyDescriptors(r))}else{t(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var o=Object.create;var a=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var u=Object.getPrototypeOf,s=Object.prototype.hasOwnProperty;var f=function(e,r){for(var t in r)a(e,t,{get:r[t],enumerable:!0})},l=function(e,r,t,n){var o=true,u=false,f=undefined;if(r&&typeof r=="object"||typeof r=="function")try{var l=function(){var o=d.value;!s.call(e,o)&&o!==t&&a(e,o,{get:function(){return r[o]},enumerable:!(n=c(r,o))||n.enumerable})};for(var p=i(r)[Symbol.iterator](),d;!(o=(d=p.next()).done);o=true)l()}catch(e){u=true;f=e}finally{try{if(!o&&p.return!=null){p.return()}}finally{if(u){throw f}}}return e};var p=function(e,r,t){return t=e!=null?o(u(e)):{},l(r||!e||!e.__esModule?a(t,"default",{value:e,enumerable:!0}):t,e)},d=function(e){return l(a({},"__esModule",{value:!0}),e)};var b={};f(b,{createSharedStore:function(){return O}});module.exports=d(b);var v=p(require("immer")),y=require("electron");(0,v.enablePatches)();function O(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};var o=function e(){s.patches.length!==0&&(d?s.senderId!==-1&&O.send(h,s):b&&p.forEach(function(e){if(e===s.senderId)return;var r=y.webContents.fromId(e);r&&r.send(h,s)}))};var a=function e(e,r){w=!0;var t=(0,v.default)(u,e,function(e){s={patches:e,description:r}});o(),u=t,w=!1;for(var n=0;n<f.length;n++){var a=f[n];a(u,s.description)}return t};var c=function e(){if(w)throw new Error("You may not call store.getState() inside setState method. It has already received the state as an argument. ");return u};var i=function e(e){if(typeof e!="function")throw new Error("Expected the listener to be a function.");if(w)throw new Error("You may not call store.subscribe() inside store.setState(). ");return f.push(e),e(u,s.description),function(){if(w)throw new Error("You may not unsubscribe from a store listener while the state is updating. ");var r=f.indexOf(e);f.splice(r,1)}};var u=e,s={patches:[]},f=[],l=t.name,p=new Set,d=(process===null||process===void 0?void 0:process.type)==="renderer",b=(process===null||process===void 0?void 0:process.type)==="browser",O=b?y.ipcMain:y.ipcRenderer,h="@@ELECTRON_SHARED_STORE_IPC_CHANNEL".concat(l?"::"+l:""),w=!1;O.on(h,function(e,t){if(b){var a=e.sender.id;p.add(a)}if(t.patches.length===0)return;w=!0;var c=(0,v.applyPatches)(u,t.patches);s=n(r({},t),{senderId:b?e.sender.id:-1}),o(),u=c,w=!1;for(var i=0;i<f.length;i++){var l=f[i];l(u,t.description)}});return d&&O.send(h,{patches:[]}),{setState:a,getState:c,subscribe:i}}0&&(module.exports={createSharedStore:createSharedStore});