arnaucube
arnaucube/raspberryGPIOhtmlserverPublic Self-hosted repository
raspberryGPIOhtmlserver/node_modules/socket.io-parser/node_modules/debug/debug.js
node_modules/socket.io-parser/node_modules/debug/debug.jsRaw
  1
  2/**
  3 * Expose `debug()` as the module.
  4 */
  5
  6module.exports = debug;
  7
  8/**
  9 * Create a debugger with the given `name`.
 10 *
 11 * @param {String} name
 12 * @return {Type}
 13 * @api public
 14 */
 15
 16function debug(name) {
 17  if (!debug.enabled(name)) return function(){};
 18
 19  return function(fmt){
 20    fmt = coerce(fmt);
 21
 22    var curr = new Date;
 23    var ms = curr - (debug[name] || curr);
 24    debug[name] = curr;
 25
 26    fmt = name
 27      + ' '
 28      + fmt
 29      + ' +' + debug.humanize(ms);
 30
 31    // This hackery is required for IE8
 32    // where `console.log` doesn't have 'apply'
 33    window.console
 34      && console.log
 35      && Function.prototype.apply.call(console.log, console, arguments);
 36  }
 37}
 38
 39/**
 40 * The currently active debug mode names.
 41 */
 42
 43debug.names = [];
 44debug.skips = [];
 45
 46/**
 47 * Enables a debug mode by name. This can include modes
 48 * separated by a colon and wildcards.
 49 *
 50 * @param {String} name
 51 * @api public
 52 */
 53
 54debug.enable = function(name) {
 55  try {
 56    localStorage.debug = name;
 57  } catch(e){}
 58
 59  var split = (name || '').split(/[\s,]+/)
 60    , len = split.length;
 61
 62  for (var i = 0; i < len; i++) {
 63    name = split[i].replace('*', '.*?');
 64    if (name[0] === '-') {
 65      debug.skips.push(new RegExp('^' + name.substr(1) + '$'));
 66    }
 67    else {
 68      debug.names.push(new RegExp('^' + name + '$'));
 69    }
 70  }
 71};
 72
 73/**
 74 * Disable debug output.
 75 *
 76 * @api public
 77 */
 78
 79debug.disable = function(){
 80  debug.enable('');
 81};
 82
 83/**
 84 * Humanize the given `ms`.
 85 *
 86 * @param {Number} m
 87 * @return {String}
 88 * @api private
 89 */
 90
 91debug.humanize = function(ms) {
 92  var sec = 1000
 93    , min = 60 * 1000
 94    , hour = 60 * min;
 95
 96  if (ms >= hour) return (ms / hour).toFixed(1) + 'h';
 97  if (ms >= min) return (ms / min).toFixed(1) + 'm';
 98  if (ms >= sec) return (ms / sec | 0) + 's';
 99  return ms + 'ms';
100};
101
102/**
103 * Returns true if the given mode name is enabled, false otherwise.
104 *
105 * @param {String} name
106 * @return {Boolean}
107 * @api public
108 */
109
110debug.enabled = function(name) {
111  for (var i = 0, len = debug.skips.length; i < len; i++) {
112    if (debug.skips[i].test(name)) {
113      return false;
114    }
115  }
116  for (var i = 0, len = debug.names.length; i < len; i++) {
117    if (debug.names[i].test(name)) {
118      return true;
119    }
120  }
121  return false;
122};
123
124/**
125 * Coerce `val`.
126 */
127
128function coerce(val) {
129  if (val instanceof Error) return val.stack || val.message;
130  return val;
131}
132
133// persist
134
135try {
136  if (window.localStorage) debug.enable(localStorage.debug);
137} catch(e){}