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.
		
		
		
		
		
			
		
			
				
					
					
						
							176 lines
						
					
					
						
							4.3 KiB
						
					
					
				
			
		
		
	
	
							176 lines
						
					
					
						
							4.3 KiB
						
					
					
				'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); |