UNPKG

node-red-contrib-device-stats

Version:
1 lines 2.85 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.StatsCollector=void 0;var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},_createClass=function(){function r(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(e,t,n){return t&&r(e.prototype,t),n&&r(e,n),e}}(),_fs2=_interopRequireDefault(require("fs")),_os2=_interopRequireDefault(require("os")),_child_process2=_interopRequireDefault(require("child_process"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}exports.StatsCollector=function(){function e(t){var n=this;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.opts={},t&&["mem","nw","load","hostname"].forEach(function(e){n.opts[e]=t[e]})}return _createClass(e,[{key:"collect",value:function(e){"object"!==(void 0===e?"undefined":_typeof(e))&&(e=this.opts);var n={tstamp:(new Date).getTime(),uptime:_os2.default.uptime()},r=[];return e.mem&&r.push(this._mem(n)),e.nw&&r.push(this._nw(n)),e.load&&r.push(this._load(n)),e.hostname&&r.push(this._hostname(n)),new Promise(function(e,t){Promise.all(r).then(function(){e(n)}).catch(function(e){t(e)})})}},{key:"_mem",value:function(r){var o=this;return new Promise(function(n){var e=_child_process2.default.spawn("free",[],{timeout:1e3});e.stdout.on("data",function(e){r.mem=o._parseFree(e.toString())});var t=function(e){if(0===e)return n();var t=_os2.default.freemem();return r.mem={free:t/1024,used:(_os2.default.totalmem()-t)/1024},n()};e.on("close",t),e.on("error",t)})}},{key:"_parseFree",value:function(e){var r={};return e.split("\n").slice(1).forEach(function(e){if(0===e.indexOf("Mem:")){var t=e.split(" ").filter(function(e){return e});r.used=parseInt(t[2]),r.free=parseInt(t[3])}if(0===e.indexOf("Swap:")){var n=e.split(" ").filter(function(e){return e});r.swapused=parseInt(n[2]),r.swapfree=parseInt(n[3])}}),r}},{key:"_nw",value:function(r){var o=this;return new Promise(function(n){_fs2.default.readFile("/proc/net/dev",function(e,t){e||(r.nw=o._parseProcNetDev(t.toString())),n()})})}},{key:"_parseProcNetDev",value:function(e){var i={};return e.split("\n").slice(2).forEach(function(e){var t=e.split(" ").filter(function(e){return e});if(0!==t.length){var n=t[1],r=t[9];if(!(n<1||r<1)){var o=t[0].substring(0,t[0].length-1);"lo"!==o&&(i[o]={rx:parseInt(n),tx:parseInt(r)})}}}),i}},{key:"_load",value:function(t){return new Promise(function(e){t.load=_os2.default.loadavg(),e()})}},{key:"_hostname",value:function(t){return new Promise(function(e){t.hostname=_os2.default.hostname(),e()})}}]),e}();