39 lines
783 B
JavaScript
39 lines
783 B
JavaScript
|
'use strict'
|
||
|
const validate = require('aproba')
|
||
|
const log = require('npmlog')
|
||
|
const Bluebird = require('bluebird')
|
||
|
|
||
|
let pulsers = 0
|
||
|
let pulse
|
||
|
|
||
|
function pulseStart (prefix) {
|
||
|
if (++pulsers > 1) return
|
||
|
pulse = setInterval(function () {
|
||
|
log.gauge.pulse(prefix)
|
||
|
}, 150)
|
||
|
}
|
||
|
function pulseStop () {
|
||
|
if (--pulsers > 0) return
|
||
|
clearInterval(pulse)
|
||
|
}
|
||
|
|
||
|
module.exports = function (prefix, cb) {
|
||
|
validate('SF', [prefix, cb])
|
||
|
if (!prefix) prefix = 'network'
|
||
|
pulseStart(prefix)
|
||
|
return function () {
|
||
|
pulseStop()
|
||
|
cb.apply(null, arguments)
|
||
|
}
|
||
|
}
|
||
|
module.exports.withPromise = pulseWhile
|
||
|
|
||
|
function pulseWhile (prefix, promise) {
|
||
|
if (!promise) {
|
||
|
promise = prefix
|
||
|
prefix = ''
|
||
|
}
|
||
|
pulseStart(prefix)
|
||
|
return Bluebird.resolve(promise).finally(() => pulseStop())
|
||
|
}
|