UNPKG

parcel-bundler

Version:

<p align="center"> <a href="https://parceljs.org/" target="_blank"> <img alt="Parcel" src="https://user-images.githubusercontent.com/19409/31321658-f6aed0f2-ac3d-11e7-8100-1587e676e0ec.png" width="749"> </a> </p>

119 lines (98 loc) 2.61 kB
var global = (1, eval)('this'); var OldModule = module.bundle.Module; function Module() { OldModule.call(this); this.hot = { accept: function (fn) { this._acceptCallback = fn || function () {}; }, dispose: function (fn) { this._disposeCallback = fn; } }; } module.bundle.Module = Module; if (!module.bundle.parent && typeof WebSocket !== 'undefined') { var ws = new WebSocket('ws://localhost:{{HMR_PORT}}/'); ws.onmessage = function(event) { var data = JSON.parse(event.data); if (data.type === 'update') { data.assets.forEach(function (asset) { hmrApply(global.require, asset); }); data.assets.forEach(function (asset) { if (!asset.isNew) { hmrAccept(global.require, asset.id); } }); } if (data.type === 'reload') { ws.close(); ws.onclose = function () { window.location.reload(); } } if (data.type === 'error-resolved') { console.log('[parcel] ✨ Error resolved'); } if (data.type === 'error') { console.error('[parcel] 🚨 ' + data.error.message + '\n' + 'data.error.stack'); } }; } function getParents(bundle, id) { var modules = bundle.modules; if (!modules) { return []; } var parents = []; var k, d, dep; for (k in modules) { for (d in modules[k][1]) { dep = modules[k][1][d]; if (dep === id || (Array.isArray(dep) && dep[dep.length - 1] === id)) { parents.push(+k); } } } if (bundle.parent) { parents = parents.concat(getParents(bundle.parent, id)); } return parents; } function hmrApply(bundle, asset) { var modules = bundle.modules; if (!modules) { return; } if (modules[asset.id] || !bundle.parent) { var fn = new Function('require', 'module', 'exports', asset.generated.js); asset.isNew = !modules[asset.id]; modules[asset.id] = [fn, asset.deps]; } else if (bundle.parent) { hmrApply(bundle.parent, asset); } } function hmrAccept(bundle, id) { var modules = bundle.modules; if (!modules) { return; } if (!modules[id] && bundle.parent) { return hmrAccept(bundle.parent, id); } var cached = bundle.cache[id]; if (cached && cached.hot._disposeCallback) { cached.hot._disposeCallback(); } delete bundle.cache[id]; bundle(id); cached = bundle.cache[id]; if (cached && cached.hot && cached.hot._acceptCallback) { cached.hot._acceptCallback(); return true; } return getParents(global.require, id).some(function (id) { return hmrAccept(global.require, id) }); }