| 'use strict'; |
| /* global __resourceQuery WorkerGlobalScope self */ |
| |
| /* eslint prefer-destructuring: off */ |
| |
| var stripAnsi = require('strip-ansi'); |
| |
| var socket = require('./socket'); |
| |
| var overlay = require('./overlay'); |
| |
| var _require = require('./utils/log'), |
| log = _require.log, |
| setLogLevel = _require.setLogLevel; |
| |
| var sendMessage = require('./utils/sendMessage'); |
| |
| var reloadApp = require('./utils/reloadApp'); |
| |
| var createSocketUrl = require('./utils/createSocketUrl'); |
| |
| var status = { |
| isUnloading: false, |
| currentHash: '' |
| }; |
| var options = { |
| hot: false, |
| hotReload: true, |
| liveReload: false, |
| initial: true, |
| useWarningOverlay: false, |
| useErrorOverlay: false, |
| useProgress: false |
| }; |
| var socketUrl = createSocketUrl(__resourceQuery); |
| self.addEventListener('beforeunload', function () { |
| status.isUnloading = true; |
| }); |
| |
| if (typeof window !== 'undefined') { |
| var qs = window.location.search.toLowerCase(); |
| options.hotReload = qs.indexOf('hotreload=false') === -1; |
| } |
| |
| var onSocketMessage = { |
| hot: function hot() { |
| options.hot = true; |
| log.info('[WDS] Hot Module Replacement enabled.'); |
| }, |
| liveReload: function liveReload() { |
| options.liveReload = true; |
| log.info('[WDS] Live Reloading enabled.'); |
| }, |
| invalid: function invalid() { |
| log.info('[WDS] App updated. Recompiling...'); // fixes #1042. overlay doesn't clear if errors are fixed but warnings remain. |
| |
| if (options.useWarningOverlay || options.useErrorOverlay) { |
| overlay.clear(); |
| } |
| |
| sendMessage('Invalid'); |
| }, |
| hash: function hash(_hash) { |
| status.currentHash = _hash; |
| }, |
| 'still-ok': function stillOk() { |
| log.info('[WDS] Nothing changed.'); |
| |
| if (options.useWarningOverlay || options.useErrorOverlay) { |
| overlay.clear(); |
| } |
| |
| sendMessage('StillOk'); |
| }, |
| 'log-level': function logLevel(level) { |
| var hotCtx = require.context('webpack/hot', false, /^\.\/log$/); |
| |
| if (hotCtx.keys().indexOf('./log') !== -1) { |
| hotCtx('./log').setLogLevel(level); |
| } |
| |
| setLogLevel(level); |
| }, |
| overlay: function overlay(value) { |
| if (typeof document !== 'undefined') { |
| if (typeof value === 'boolean') { |
| options.useWarningOverlay = false; |
| options.useErrorOverlay = value; |
| } else if (value) { |
| options.useWarningOverlay = value.warnings; |
| options.useErrorOverlay = value.errors; |
| } |
| } |
| }, |
| progress: function progress(_progress) { |
| if (typeof document !== 'undefined') { |
| options.useProgress = _progress; |
| } |
| }, |
| 'progress-update': function progressUpdate(data) { |
| if (options.useProgress) { |
| log.info("[WDS] ".concat(data.percent, "% - ").concat(data.msg, ".")); |
| } |
| |
| sendMessage('Progress', data); |
| }, |
| ok: function ok() { |
| sendMessage('Ok'); |
| |
| if (options.useWarningOverlay || options.useErrorOverlay) { |
| overlay.clear(); |
| } |
| |
| if (options.initial) { |
| return options.initial = false; |
| } // eslint-disable-line no-return-assign |
| |
| |
| reloadApp(options, status); |
| }, |
| 'content-changed': function contentChanged() { |
| log.info('[WDS] Content base changed. Reloading...'); |
| self.location.reload(); |
| }, |
| warnings: function warnings(_warnings) { |
| log.warn('[WDS] Warnings while compiling.'); |
| |
| var strippedWarnings = _warnings.map(function (warning) { |
| return stripAnsi(warning); |
| }); |
| |
| sendMessage('Warnings', strippedWarnings); |
| |
| for (var i = 0; i < strippedWarnings.length; i++) { |
| log.warn(strippedWarnings[i]); |
| } |
| |
| if (options.useWarningOverlay) { |
| overlay.showMessage(_warnings); |
| } |
| |
| if (options.initial) { |
| return options.initial = false; |
| } // eslint-disable-line no-return-assign |
| |
| |
| reloadApp(options, status); |
| }, |
| errors: function errors(_errors) { |
| log.error('[WDS] Errors while compiling. Reload prevented.'); |
| |
| var strippedErrors = _errors.map(function (error) { |
| return stripAnsi(error); |
| }); |
| |
| sendMessage('Errors', strippedErrors); |
| |
| for (var i = 0; i < strippedErrors.length; i++) { |
| log.error(strippedErrors[i]); |
| } |
| |
| if (options.useErrorOverlay) { |
| overlay.showMessage(_errors); |
| } |
| |
| options.initial = false; |
| }, |
| error: function error(_error) { |
| log.error(_error); |
| }, |
| close: function close() { |
| log.error('[WDS] Disconnected!'); |
| sendMessage('Close'); |
| } |
| }; |
| socket(socketUrl, onSocketMessage); |