aboutsummaryrefslogtreecommitdiff
path: root/deps/node/deps/npm/lib/utils/pulse-till-done.js
diff options
context:
space:
mode:
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.js38
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())
+}