mirror of
				https://github.com/KevinMidboe/fanController.git
				synced 2025-10-29 17:40:22 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			169 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			169 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
		
			Executable File
		
	
	
	
	
 | 
						|
/**
 | 
						|
 * This is the web browser implementation of `debug()`.
 | 
						|
 *
 | 
						|
 * Expose `debug()` as the module.
 | 
						|
 */
 | 
						|
 | 
						|
exports = module.exports = require('./debug');
 | 
						|
exports.log = log;
 | 
						|
exports.formatArgs = formatArgs;
 | 
						|
exports.save = save;
 | 
						|
exports.load = load;
 | 
						|
exports.useColors = useColors;
 | 
						|
exports.storage = 'undefined' != typeof chrome
 | 
						|
               && 'undefined' != typeof chrome.storage
 | 
						|
                  ? chrome.storage.local
 | 
						|
                  : localstorage();
 | 
						|
 | 
						|
/**
 | 
						|
 * Colors.
 | 
						|
 */
 | 
						|
 | 
						|
exports.colors = [
 | 
						|
  'lightseagreen',
 | 
						|
  'forestgreen',
 | 
						|
  'goldenrod',
 | 
						|
  'dodgerblue',
 | 
						|
  'darkorchid',
 | 
						|
  'crimson'
 | 
						|
];
 | 
						|
 | 
						|
/**
 | 
						|
 * Currently only WebKit-based Web Inspectors, Firefox >= v31,
 | 
						|
 * and the Firebug extension (any Firefox version) are known
 | 
						|
 * to support "%c" CSS customizations.
 | 
						|
 *
 | 
						|
 * TODO: add a `localStorage` variable to explicitly enable/disable colors
 | 
						|
 */
 | 
						|
 | 
						|
function useColors() {
 | 
						|
  // is webkit? http://stackoverflow.com/a/16459606/376773
 | 
						|
  return ('WebkitAppearance' in document.documentElement.style) ||
 | 
						|
    // is firebug? http://stackoverflow.com/a/398120/376773
 | 
						|
    (window.console && (console.firebug || (console.exception && console.table))) ||
 | 
						|
    // is firefox >= v31?
 | 
						|
    // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages
 | 
						|
    (navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31);
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.
 | 
						|
 */
 | 
						|
 | 
						|
exports.formatters.j = function(v) {
 | 
						|
  return JSON.stringify(v);
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
 * Colorize log arguments if enabled.
 | 
						|
 *
 | 
						|
 * @api public
 | 
						|
 */
 | 
						|
 | 
						|
function formatArgs() {
 | 
						|
  var args = arguments;
 | 
						|
  var useColors = this.useColors;
 | 
						|
 | 
						|
  args[0] = (useColors ? '%c' : '')
 | 
						|
    + this.namespace
 | 
						|
    + (useColors ? ' %c' : ' ')
 | 
						|
    + args[0]
 | 
						|
    + (useColors ? '%c ' : ' ')
 | 
						|
    + '+' + exports.humanize(this.diff);
 | 
						|
 | 
						|
  if (!useColors) return args;
 | 
						|
 | 
						|
  var c = 'color: ' + this.color;
 | 
						|
  args = [args[0], c, 'color: inherit'].concat(Array.prototype.slice.call(args, 1));
 | 
						|
 | 
						|
  // the final "%c" is somewhat tricky, because there could be other
 | 
						|
  // arguments passed either before or after the %c, so we need to
 | 
						|
  // figure out the correct index to insert the CSS into
 | 
						|
  var index = 0;
 | 
						|
  var lastC = 0;
 | 
						|
  args[0].replace(/%[a-z%]/g, function(match) {
 | 
						|
    if ('%%' === match) return;
 | 
						|
    index++;
 | 
						|
    if ('%c' === match) {
 | 
						|
      // we only are interested in the *last* %c
 | 
						|
      // (the user may have provided their own)
 | 
						|
      lastC = index;
 | 
						|
    }
 | 
						|
  });
 | 
						|
 | 
						|
  args.splice(lastC, 0, c);
 | 
						|
  return args;
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Invokes `console.log()` when available.
 | 
						|
 * No-op when `console.log` is not a "function".
 | 
						|
 *
 | 
						|
 * @api public
 | 
						|
 */
 | 
						|
 | 
						|
function log() {
 | 
						|
  // this hackery is required for IE8/9, where
 | 
						|
  // the `console.log` function doesn't have 'apply'
 | 
						|
  return 'object' === typeof console
 | 
						|
    && console.log
 | 
						|
    && Function.prototype.apply.call(console.log, console, arguments);
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Save `namespaces`.
 | 
						|
 *
 | 
						|
 * @param {String} namespaces
 | 
						|
 * @api private
 | 
						|
 */
 | 
						|
 | 
						|
function save(namespaces) {
 | 
						|
  try {
 | 
						|
    if (null == namespaces) {
 | 
						|
      exports.storage.removeItem('debug');
 | 
						|
    } else {
 | 
						|
      exports.storage.debug = namespaces;
 | 
						|
    }
 | 
						|
  } catch(e) {}
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Load `namespaces`.
 | 
						|
 *
 | 
						|
 * @return {String} returns the previously persisted debug modes
 | 
						|
 * @api private
 | 
						|
 */
 | 
						|
 | 
						|
function load() {
 | 
						|
  var r;
 | 
						|
  try {
 | 
						|
    r = exports.storage.debug;
 | 
						|
  } catch(e) {}
 | 
						|
  return r;
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Enable namespaces listed in `localStorage.debug` initially.
 | 
						|
 */
 | 
						|
 | 
						|
exports.enable(load());
 | 
						|
 | 
						|
/**
 | 
						|
 * Localstorage attempts to return the localstorage.
 | 
						|
 *
 | 
						|
 * This is necessary because safari throws
 | 
						|
 * when a user disables cookies/localstorage
 | 
						|
 * and you attempt to access it.
 | 
						|
 *
 | 
						|
 * @return {LocalStorage}
 | 
						|
 * @api private
 | 
						|
 */
 | 
						|
 | 
						|
function localstorage(){
 | 
						|
  try {
 | 
						|
    return window.localStorage;
 | 
						|
  } catch (e) {}
 | 
						|
}
 |