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.
 
 
 
 
 
 

51 lines
1.2 KiB

module.exports = spinner
function spinner(opt) {
opt = opt || {}
var str = opt.stream || process.stderr
var tty = typeof opt.tty === 'boolean' ? opt.tty : true
var string = opt.string || '/-\\|'
var ms = typeof opt.interval === 'number' ? opt.interval : 50
if (ms < 0) ms = 0
if (tty && !str.isTTY) return false
var CR = str.isTTY ? '\u001b[0G' : '\u000d';
var CLEAR = str.isTTY ? '\u001b[2K' : '\u000d \u000d';
var s = 0
var sprite = string.split('')
var wrote = false
var delay = typeof opt.delay === 'number' ? opt.delay : 2
var interval = setInterval(function() {
if (--delay >= 0) return
s = ++s % sprite.length
var c = sprite[s]
str.write(c + CR)
wrote = true
}, ms)
var unref = typeof opt.unref === 'boolean' ? opt.unref : true
if (unref && typeof interval.unref === 'function') {
interval.unref()
}
var cleanup = typeof opt.cleanup === 'boolean' ? opt.cleanup : true
if (cleanup) {
process.on('exit', function() {
if (wrote) {
str.write(CLEAR);
}
})
}
module.exports.clear = function () {
str.write(CLEAR);
};
return interval
}
module.exports.clear = function () {};