File size: 1,256 Bytes
5fae594
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
'use strict';

var ansi = {
  'reset':           0,

  'bold':            1,
  'italic':          3,
  'underline':       4,

  'black':           30,
  'red':             31,
  'green':           32,
  'yellow':          33,
  'blue':            34,
  'magenta':         35,
  'cyan':            36,
  'white':           37,

  'bright black':    90,
  'bright red':      91,
  'bright green':    92,
  'bright yellow':   93,
  'bright blue':     94,
  'bright magenta':  95,
  'bright cyan':     96,
  'bright white':    97,
};

for (var key in ansi) {
  if (! ansi.hasOwnProperty(key)) continue;
  ansi[key] = '\u001b[' + ansi[key] + 'm';
}

var enabled = true;

var createLogger = function (name, color) {
  var prefix, log;

  if (! color) color = 'reset';

  prefix = ansi[color] + '[' + name + ']' + ansi.reset;

  log = function () {
    if (! enabled) return;
    var args = Array.prototype.slice.call(arguments, 0);
    args.unshift(prefix);
    console.log.apply(console, args);
  };

  log.warn = color === 'red' ? log : createLogger(name, 'red');

  return log;
};

createLogger.enable = function() {
  enabled = true;
};

createLogger.disable = function () {
  enabled = false;
};

createLogger.colors = ansi;

module.exports = createLogger;