UNPKG

electron-webpack

Version:

> Because setting up `webpack` in the `electron` environment shouldn't be difficult.

103 lines (82 loc) 2.75 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.HmrClient = void 0; function _crocket() { const data = _interopRequireDefault(require("crocket")); _crocket = function () { return data; }; return data; } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const debug = require("debug")("electron-webpack:main-client-hmr"); class HmrClient { constructor(socketPath, hot, currentHashGetter) { this.hot = hot; this.currentHashGetter = currentHashGetter; this.lastHash = null; this.ipc = new (_crocket().default)(); if (hot == null) { throw new Error(`[HMR] Hot Module Replacement is disabled.`); } this.ipc.connect({ path: socketPath }, error => { if (error != null) { console.error(error.stack || error.toString()); } if (debug.enabled) { debug(`Connected to server (${socketPath})`); } }); this.ipc.on("error", error => { console.error(error.stack || error.toString()); }); this.ipc.on("/built", data => { this.lastHash = data.hash; if (this.isUpToDate()) { if (debug.enabled) { debug(`Up to date, hash ${data.hash}`); } return; } const status = hot.status(); if (status === "idle") { this.check(); } else if (status === "abort" || status === "fail") { console.warn(`[HMR] Cannot apply update as a previous update ${status}ed. Need to do a full reload!`); } else if (debug.enabled) { debug(`Cannot check changes, status ${status}`); } }); } isUpToDate() { return this.lastHash === this.currentHashGetter(); } check() { this.hot.check(true).then(outdatedModules => { if (outdatedModules == null) { console.warn(`[HMR] Cannot find update. Need to do a full reload!`); console.warn(`[HMR] (Probably because of restarting the webpack-dev-server)`); return; } require("webpack/hot/log-apply-result")(outdatedModules, outdatedModules); if (this.isUpToDate()) { console.log(`[HMR] App is up to date.`); } }).catch(error => { const status = this.hot.status(); if (status === "abort" || status === "fail") { console.warn(`[HMR] ${error.stack || error.toString()}`); console.warn("[HMR] Cannot apply update. Need to do a full reload - application will be restarted"); require("electron").app.exit(100); } else { console.warn(`[HMR] Update failed: ${error.stack || error.message}`); } }); } } exports.HmrClient = HmrClient; // __ts-babel@6.0.4 //# sourceMappingURL=HmrClient.js.map