diff options
Diffstat (limited to 'deps/node/deps/npm/lib/utils/pulse-till-done.js')
-rw-r--r-- | deps/node/deps/npm/lib/utils/pulse-till-done.js | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/deps/node/deps/npm/lib/utils/pulse-till-done.js b/deps/node/deps/npm/lib/utils/pulse-till-done.js new file mode 100644 index 00000000..b292c2fa --- /dev/null +++ b/deps/node/deps/npm/lib/utils/pulse-till-done.js @@ -0,0 +1,38 @@ +'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()) +} |