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.

149 lines
2.8 KiB

2 years ago
var toArr = require('./toArr');
var now = require('./now');
var format = require('./format');
var ms = require('./ms');
var isBrowser = require('./isBrowser');
var strHash = require('./strHash');
var ansiColor = require('./ansiColor');
exports = function(name) {
var prevTime;
function debug() {
if (!debug.enabled) return;
var args = toArr(arguments);
var cur = now();
var duration = ms(cur - (prevTime || cur));
prevTime = cur;
var content = format.apply(null, args);
var color = debug.color;
if (isBrowser) {
var style = 'color:' + color;
var inherit = 'color:inherit';
console.log(
'%c' + name + ' %c' + content + ' %c+' + duration,
style,
inherit,
style
);
} else {
console.log(
ansiColor[color](name) +
': ' +
content +
ansiColor[color](' +' + duration)
);
}
}
debug.enabled = true;
debug.color = selectColor(name);
return debug;
};
var browserColors = [
'#0000CC',
'#0000FF',
'#0033CC',
'#0033FF',
'#0066CC',
'#0066FF',
'#0099CC',
'#0099FF',
'#00CC00',
'#00CC33',
'#00CC66',
'#00CC99',
'#00CCCC',
'#00CCFF',
'#3300CC',
'#3300FF',
'#3333CC',
'#3333FF',
'#3366CC',
'#3366FF',
'#3399CC',
'#3399FF',
'#33CC00',
'#33CC33',
'#33CC66',
'#33CC99',
'#33CCCC',
'#33CCFF',
'#6600CC',
'#6600FF',
'#6633CC',
'#6633FF',
'#66CC00',
'#66CC33',
'#9900CC',
'#9900FF',
'#9933CC',
'#9933FF',
'#99CC00',
'#99CC33',
'#CC0000',
'#CC0033',
'#CC0066',
'#CC0099',
'#CC00CC',
'#CC00FF',
'#CC3300',
'#CC3333',
'#CC3366',
'#CC3399',
'#CC33CC',
'#CC33FF',
'#CC6600',
'#CC6633',
'#CC9900',
'#CC9933',
'#CCCC00',
'#CCCC33',
'#FF0000',
'#FF0033',
'#FF0066',
'#FF0099',
'#FF00CC',
'#FF00FF',
'#FF3300',
'#FF3333',
'#FF3366',
'#FF3399',
'#FF33CC',
'#FF33FF',
'#FF6600',
'#FF6633',
'#FF9900',
'#FF9933',
'#FFCC00',
'#FFCC33'
];
var terminalColors = [
'black',
'red',
'green',
'yellow',
'blue',
'magenta',
'cyan',
'white',
'gray',
'grey',
'blackBright',
'redBright',
'greenBright',
'yellowBright',
'blueBright',
'magentaBright',
'cyanBright',
'whiteBright'
];
function selectColor(name) {
var hash = strHash(name);
if (isBrowser) {
return browserColors[hash % browserColors.length];
} else {
return terminalColors[hash % terminalColors.length];
}
}
module.exports = exports;