You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
'use strict'; /* global WorkerGlobalScope self */
var _require = require('./log'), log = _require.log;
function reloadApp(_ref, _ref2) { var hotReload = _ref.hotReload, hot = _ref.hot, liveReload = _ref.liveReload; var isUnloading = _ref2.isUnloading, currentHash = _ref2.currentHash;
if (isUnloading || !hotReload) { return; }
if (hot) { log.info('[WDS] App hot update...');
var hotEmitter = require('webpack/hot/emitter');
hotEmitter.emit('webpackHotUpdate', currentHash);
if (typeof self !== 'undefined' && self.window) { // broadcast update to window
self.postMessage("webpackHotUpdate".concat(currentHash), '*'); } } // allow refreshing the page only if liveReload isn't disabled
else if (liveReload) { var rootWindow = self; // use parent window for reload (in case we're in an iframe with no valid src)
var intervalId = self.setInterval(function () { if (rootWindow.location.protocol !== 'about:') { // reload immediately if protocol is valid
applyReload(rootWindow, intervalId); } else { rootWindow = rootWindow.parent;
if (rootWindow.parent === rootWindow) { // if parent equals current window we've reached the root which would continue forever, so trigger a reload anyways
applyReload(rootWindow, intervalId); } } }); }
function applyReload(rootWindow, intervalId) { clearInterval(intervalId); log.info('[WDS] App updated. Reloading...'); rootWindow.location.reload(); } }
module.exports = reloadApp;
|