| '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); |