@aimee-blue/ab-service-kit
Version:
Aimee Blue Service Template
38 lines (30 loc) • 1.24 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.logSocketStats = logSocketStats;
var _rxjs = require("rxjs");
var _operators = require("rxjs/operators");
var _os = require("os");
var _time = require("../time");
var _helpers = require("./helpers");
var _logging = require("../logging");
function logSocketStats(logger, data) {
const numberOfMessages = data.pipe((0, _operators.filter)(_helpers.isString), (0, _operators.map)((_, i) => i + 1), (0, _operators.startWith)(0));
const bytesReceived = data.pipe((0, _operators.filter)(_helpers.isBuffer), (0, _operators.scan)((sum, item) => item.byteLength + sum, 0), (0, _operators.startWith)(0));
const stats = (0, _rxjs.combineLatest)(numberOfMessages, bytesReceived).pipe((0, _operators.map)(([msgs, bytes]) => ({
bytesReceived: bytes,
numberOfMessages: msgs,
timestamp: (0, _time.localNow)()
})), (0, _logging.logEvents)({
prefix: `${_os.EOL}🔃 Connection stats`,
suffix: [_os.EOL],
on: ['audit', 'unsubscribe'],
logger,
unsubscribe: {
prefix: `${_os.EOL}🔃 Connection stats upon closure`
}
}), (0, _operators.ignoreElements)());
return stats;
}
//# sourceMappingURL=logSocketStats.js.map