This repository has been archived on 2020-11-02. You can view files and clone it, but cannot push or open issues or pull requests.
TripSit_Suite/node_modules/webpack-hot-middleware/process-update.js
2020-11-01 22:46:04 +00:00

158 lines
4.3 KiB
JavaScript

/**
* Based heavily on https://github.com/webpack/webpack/blob/
* c0afdf9c6abc1dd70707c594e473802a566f7b6e/hot/only-dev-server.js
* Original copyright Tobias Koppers @sokra (MIT license)
*/
/* global window __webpack_hash__ */
if (!module.hot) {
throw new Error('[HMR] Hot Module Replacement is disabled.');
}
var hmrDocsUrl = 'https://webpack.js.org/concepts/hot-module-replacement/'; // eslint-disable-line max-len
var lastHash;
var failureStatuses = { abort: 1, fail: 1 };
var applyOptions = {
ignoreUnaccepted: true,
ignoreDeclined: true,
ignoreErrored: true,
onUnaccepted: function(data) {
console.warn(
'Ignored an update to unaccepted module ' + data.chain.join(' -> ')
);
},
onDeclined: function(data) {
console.warn(
'Ignored an update to declined module ' + data.chain.join(' -> ')
);
},
onErrored: function(data) {
console.error(data.error);
console.warn(
'Ignored an error while updating module ' +
data.moduleId +
' (' +
data.type +
')'
);
},
};
function upToDate(hash) {
if (hash) lastHash = hash;
return lastHash == __webpack_hash__;
}
module.exports = function(hash, moduleMap, options) {
var reload = options.reload;
if (!upToDate(hash) && module.hot.status() == 'idle') {
if (options.log) console.log('[HMR] Checking for updates on the server...');
check();
}
function check() {
var cb = function(err, updatedModules) {
if (err) return handleError(err);
if (!updatedModules) {
if (options.warn) {
console.warn('[HMR] Cannot find update (Full reload needed)');
console.warn('[HMR] (Probably because of restarting the server)');
}
performReload();
return null;
}
var applyCallback = function(applyErr, renewedModules) {
if (applyErr) return handleError(applyErr);
if (!upToDate()) check();
logUpdates(updatedModules, renewedModules);
};
var applyResult = module.hot.apply(applyOptions, applyCallback);
// webpack 2 promise
if (applyResult && applyResult.then) {
// HotModuleReplacement.runtime.js refers to the result as `outdatedModules`
applyResult.then(function(outdatedModules) {
applyCallback(null, outdatedModules);
});
applyResult.catch(applyCallback);
}
};
var result = module.hot.check(false, cb);
// webpack 2 promise
if (result && result.then) {
result.then(function(updatedModules) {
cb(null, updatedModules);
});
result.catch(cb);
}
}
function logUpdates(updatedModules, renewedModules) {
var unacceptedModules = updatedModules.filter(function(moduleId) {
return renewedModules && renewedModules.indexOf(moduleId) < 0;
});
if (unacceptedModules.length > 0) {
if (options.warn) {
console.warn(
"[HMR] The following modules couldn't be hot updated: " +
'(Full reload needed)\n' +
'This is usually because the modules which have changed ' +
'(and their parents) do not know how to hot reload themselves. ' +
'See ' +
hmrDocsUrl +
' for more details.'
);
unacceptedModules.forEach(function(moduleId) {
console.warn('[HMR] - ' + (moduleMap[moduleId] || moduleId));
});
}
performReload();
return;
}
if (options.log) {
if (!renewedModules || renewedModules.length === 0) {
console.log('[HMR] Nothing hot updated.');
} else {
console.log('[HMR] Updated modules:');
renewedModules.forEach(function(moduleId) {
console.log('[HMR] - ' + (moduleMap[moduleId] || moduleId));
});
}
if (upToDate()) {
console.log('[HMR] App is up to date.');
}
}
}
function handleError(err) {
if (module.hot.status() in failureStatuses) {
if (options.warn) {
console.warn('[HMR] Cannot check for update (Full reload needed)');
console.warn('[HMR] ' + (err.stack || err.message));
}
performReload();
return;
}
if (options.warn) {
console.warn('[HMR] Update check failed: ' + (err.stack || err.message));
}
}
function performReload() {
if (reload) {
if (options.warn) console.warn('[HMR] Reloading page');
window.location.reload();
}
}
};