UNPKG

electron-compile

Version:

Electron supporting package to compile JS and CSS in Electron applications

77 lines (56 loc) 6.56 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.send = send; exports.listen = listen; var _Observable = require('rxjs/Observable'); var _Subject = require('rxjs/Subject'); require('rxjs/add/observable/throw'); const isElectron = 'type' in process; const isBrowser = process.type === 'browser'; const ipc = !isElectron ? null : isBrowser ? require('electron').ipcMain : require('electron').ipcRenderer; const channelList = {}; function send(channel) { for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { args[_key - 1] = arguments[_key]; } if (isElectron && !isBrowser) { ipc.send(channel, ...args); return; } if (!(channel in channelList)) return; let subj = channelList[channel].subj; subj.next(args); } function listen(channel) { if (isElectron && !isBrowser) return _Observable.Observable.throw(new Error("Can only call listen from browser")); return _Observable.Observable.create(s => { if (!(channel in channelList)) { let subj = new _Subject.Subject(); let ipcListener = function (e) { for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { args[_key2 - 1] = arguments[_key2]; } subj.next(args); }; channelList[channel] = { subj, refcount: 0 }; if (isElectron && isBrowser) { ipc.on(channel, ipcListener); channelList[channel].listener = ipcListener; } } channelList[channel].refcount++; let disp = channelList[channel].subj.subscribe(s); disp.add(() => { channelList[channel].refcount--; if (channelList[channel].refcount > 0) return; if (channelList[channel].listener) { ipc.removeListener(channel, channelList[channel].listener); } delete channelList.channel; }); return disp; }); } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9icm93c2VyLXNpZ25hbC5qcyJdLCJuYW1lcyI6WyJzZW5kIiwibGlzdGVuIiwiaXNFbGVjdHJvbiIsInByb2Nlc3MiLCJpc0Jyb3dzZXIiLCJ0eXBlIiwiaXBjIiwicmVxdWlyZSIsImlwY01haW4iLCJpcGNSZW5kZXJlciIsImNoYW5uZWxMaXN0IiwiY2hhbm5lbCIsImFyZ3MiLCJzdWJqIiwibmV4dCIsIk9ic2VydmFibGUiLCJ0aHJvdyIsIkVycm9yIiwiY3JlYXRlIiwicyIsIlN1YmplY3QiLCJpcGNMaXN0ZW5lciIsImUiLCJyZWZjb3VudCIsIm9uIiwibGlzdGVuZXIiLCJkaXNwIiwic3Vic2NyaWJlIiwiYWRkIiwicmVtb3ZlTGlzdGVuZXIiXSwibWFwcGluZ3MiOiI7Ozs7O1FBYWdCQSxJLEdBQUFBLEk7UUFZQUMsTSxHQUFBQSxNOztBQXpCaEI7O0FBQ0E7O0FBRUE7O0FBRUEsTUFBTUMsYUFBYSxVQUFVQyxPQUE3QjtBQUNBLE1BQU1DLFlBQVlELFFBQVFFLElBQVIsS0FBaUIsU0FBbkM7O0FBRUEsTUFBTUMsTUFBTSxDQUFDSixVQUFELEdBQWMsSUFBZCxHQUNWRSxZQUFZRyxRQUFRLFVBQVIsRUFBb0JDLE9BQWhDLEdBQTBDRCxRQUFRLFVBQVIsRUFBb0JFLFdBRGhFOztBQUdBLE1BQU1DLGNBQWMsRUFBcEI7O0FBRU8sU0FBU1YsSUFBVCxDQUFjVyxPQUFkLEVBQWdDO0FBQUEsb0NBQU5DLElBQU07QUFBTkEsUUFBTTtBQUFBOztBQUNyQyxNQUFJVixjQUFjLENBQUNFLFNBQW5CLEVBQThCO0FBQzVCRSxRQUFJTixJQUFKLENBQVNXLE9BQVQsRUFBa0IsR0FBR0MsSUFBckI7QUFDQTtBQUNEOztBQUVELE1BQUksRUFBRUQsV0FBV0QsV0FBYixDQUFKLEVBQStCOztBQU5NLE1BUS9CRyxJQVIrQixHQVF0QkgsWUFBWUMsT0FBWixDQVJzQixDQVEvQkUsSUFSK0I7O0FBU3JDQSxPQUFLQyxJQUFMLENBQVVGLElBQVY7QUFDRDs7QUFFTSxTQUFTWCxNQUFULENBQWdCVSxPQUFoQixFQUF5QjtBQUM5QixNQUFJVCxjQUFjLENBQUNFLFNBQW5CLEVBQThCLE9BQU9XLHVCQUFXQyxLQUFYLENBQWlCLElBQUlDLEtBQUosQ0FBVSxtQ0FBVixDQUFqQixDQUFQOztBQUU5QixTQUFPRix1QkFBV0csTUFBWCxDQUFtQkMsQ0FBRCxJQUFPO0FBQzlCLFFBQUksRUFBRVIsV0FBV0QsV0FBYixDQUFKLEVBQStCO0FBQzdCLFVBQUlHLE9BQU8sSUFBSU8sZ0JBQUosRUFBWDtBQUNBLFVBQUlDLGNBQWMsVUFBQ0MsQ0FBRCxFQUFnQjtBQUFBLDJDQUFUVixJQUFTO0FBQVRBLGNBQVM7QUFBQTs7QUFBRUMsYUFBS0MsSUFBTCxDQUFVRixJQUFWO0FBQWtCLE9BQXREOztBQUVBRixrQkFBWUMsT0FBWixJQUF1QixFQUFFRSxJQUFGLEVBQVFVLFVBQVUsQ0FBbEIsRUFBdkI7QUFDQSxVQUFJckIsY0FBY0UsU0FBbEIsRUFBNkI7QUFDM0JFLFlBQUlrQixFQUFKLENBQU9iLE9BQVAsRUFBZ0JVLFdBQWhCO0FBQ0FYLG9CQUFZQyxPQUFaLEVBQXFCYyxRQUFyQixHQUFnQ0osV0FBaEM7QUFDRDtBQUNGOztBQUVEWCxnQkFBWUMsT0FBWixFQUFxQlksUUFBckI7O0FBRUEsUUFBSUcsT0FBT2hCLFlBQVlDLE9BQVosRUFBcUJFLElBQXJCLENBQTBCYyxTQUExQixDQUFvQ1IsQ0FBcEMsQ0FBWDtBQUNBTyxTQUFLRSxHQUFMLENBQVMsTUFBTTtBQUNibEIsa0JBQVlDLE9BQVosRUFBcUJZLFFBQXJCO0FBQ0EsVUFBSWIsWUFBWUMsT0FBWixFQUFxQlksUUFBckIsR0FBZ0MsQ0FBcEMsRUFBdUM7O0FBRXZDLFVBQUliLFlBQVlDLE9BQVosRUFBcUJjLFFBQXpCLEVBQW1DO0FBQ2pDbkIsWUFBSXVCLGNBQUosQ0FBbUJsQixPQUFuQixFQUE0QkQsWUFBWUMsT0FBWixFQUFxQmMsUUFBakQ7QUFDRDs7QUFFRCxhQUFPZixZQUFZQyxPQUFuQjtBQUNELEtBVEQ7O0FBV0EsV0FBT2UsSUFBUDtBQUNELEdBM0JNLENBQVA7QUE0QkQiLCJmaWxlIjoiYnJvd3Nlci1zaWduYWwuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMvT2JzZXJ2YWJsZSc7XG5pbXBvcnQge1N1YmplY3R9IGZyb20gJ3J4anMvU3ViamVjdCc7XG5cbmltcG9ydCAncnhqcy9hZGQvb2JzZXJ2YWJsZS90aHJvdyc7XG5cbmNvbnN0IGlzRWxlY3Ryb24gPSAndHlwZScgaW4gcHJvY2VzcztcbmNvbnN0IGlzQnJvd3NlciA9IHByb2Nlc3MudHlwZSA9PT0gJ2Jyb3dzZXInO1xuXG5jb25zdCBpcGMgPSAhaXNFbGVjdHJvbiA/IG51bGwgOlxuICBpc0Jyb3dzZXIgPyByZXF1aXJlKCdlbGVjdHJvbicpLmlwY01haW4gOiByZXF1aXJlKCdlbGVjdHJvbicpLmlwY1JlbmRlcmVyO1xuXG5jb25zdCBjaGFubmVsTGlzdCA9IHt9O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VuZChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIGlmIChpc0VsZWN0cm9uICYmICFpc0Jyb3dzZXIpIHtcbiAgICBpcGMuc2VuZChjaGFubmVsLCAuLi5hcmdzKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoIShjaGFubmVsIGluIGNoYW5uZWxMaXN0KSkgcmV0dXJuO1xuXG4gIGxldCB7IHN1YmogfSA9IGNoYW5uZWxMaXN0W2NoYW5uZWxdO1xuICBzdWJqLm5leHQoYXJncyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsaXN0ZW4oY2hhbm5lbCkge1xuICBpZiAoaXNFbGVjdHJvbiAmJiAhaXNCcm93c2VyKSByZXR1cm4gT2JzZXJ2YWJsZS50aHJvdyhuZXcgRXJyb3IoXCJDYW4gb25seSBjYWxsIGxpc3RlbiBmcm9tIGJyb3dzZXJcIikpO1xuXG4gIHJldHVybiBPYnNlcnZhYmxlLmNyZWF0ZSgocykgPT4ge1xuICAgIGlmICghKGNoYW5uZWwgaW4gY2hhbm5lbExpc3QpKSB7XG4gICAgICBsZXQgc3ViaiA9IG5ldyBTdWJqZWN0KCk7XG4gICAgICBsZXQgaXBjTGlzdGVuZXIgPSAoZSwgLi4uYXJncykgPT4geyBzdWJqLm5leHQoYXJncyk7IH07XG5cbiAgICAgIGNoYW5uZWxMaXN0W2NoYW5uZWxdID0geyBzdWJqLCByZWZjb3VudDogMCB9O1xuICAgICAgaWYgKGlzRWxlY3Ryb24gJiYgaXNCcm93c2VyKSB7XG4gICAgICAgIGlwYy5vbihjaGFubmVsLCBpcGNMaXN0ZW5lcik7XG4gICAgICAgIGNoYW5uZWxMaXN0W2NoYW5uZWxdLmxpc3RlbmVyID0gaXBjTGlzdGVuZXI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY2hhbm5lbExpc3RbY2hhbm5lbF0ucmVmY291bnQrKztcblxuICAgIGxldCBkaXNwID0gY2hhbm5lbExpc3RbY2hhbm5lbF0uc3Viai5zdWJzY3JpYmUocyk7XG4gICAgZGlzcC5hZGQoKCkgPT4ge1xuICAgICAgY2hhbm5lbExpc3RbY2hhbm5lbF0ucmVmY291bnQtLTtcbiAgICAgIGlmIChjaGFubmVsTGlzdFtjaGFubmVsXS5yZWZjb3VudCA+IDApIHJldHVybjtcblxuICAgICAgaWYgKGNoYW5uZWxMaXN0W2NoYW5uZWxdLmxpc3RlbmVyKSB7XG4gICAgICAgIGlwYy5yZW1vdmVMaXN0ZW5lcihjaGFubmVsLCBjaGFubmVsTGlzdFtjaGFubmVsXS5saXN0ZW5lcik7XG4gICAgICB9XG5cbiAgICAgIGRlbGV0ZSBjaGFubmVsTGlzdC5jaGFubmVsO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRpc3A7XG4gIH0pO1xufVxuIl19