UNPKG

simple-stats-server

Version:

dead-simple resource stats for Node.js servers

88 lines (73 loc) 1.97 kB
(function() { var add, maxInterval, os, sample, samples, timer, utilization; os = require('os'); utilization = require('./helper/cpu-calc'); timer = false; samples = []; maxInterval = 61; module.exports = sample = function() { var cb, doCalc, interval; if (typeof arguments[0] === 'number') { interval = arguments[0], cb = arguments[1]; } else { cb = arguments[0]; } if (interval == null) { interval = 1; } if (typeof cb !== 'function') { cb = (function() {}); } doCalc = function() { var diffs, final, initial, _i, _ref, _results; initial = samples.slice(-1 - interval)[0]; final = samples.slice(-1)[0]; diffs = (function() { _results = []; for (var _i = 0, _ref = initial.length; 0 <= _ref ? _i < _ref : _i > _ref; 0 <= _ref ? _i++ : _i--){ _results.push(_i); } return _results; }).apply(this).map(function(i) { return utilization(initial[i], final[i]); }); cb(null, diffs); return diffs; }; if (samples.length <= interval) { if (maxInterval <= interval) { maxInterval = interval + 1; } return setTimeout(doCalc, 1000 * interval - samples.length + 1); } else { return doCalc(); } }; add = function(label, timeout) { return sample[label] = sample.bind(null, timeout); }; add('1s', 1); add('5s', 5); add('15s', 15); add('1m', 60); Object.defineProperty(sample, 'cancel', { value: function() { if (!timer) { return; } clearInterval(timer); return timer = false; } }); Object.defineProperty(sample, 'collect', { value: function() { if (timer) { return; } return timer = setInterval((function() { if (samples.length >= maxInterval) { samples.unshift(); } return samples.push(os.cpus()); }), 1000); } }); }).call(this);