UNPKG

ilastlog

Version:

alternative lastlog because of Ubuntu 24.04.1. The distros have had the libpam excluding lastlog.so. therefore, I personally needed.

127 lines 3.92 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.combinedPatterns = void 0; exports.compareGenerator = compareGenerator; exports.captureLog = captureLog; exports.calculate = calculate; exports.Print = Print; exports.WriteToFile = WriteToFile; exports.WriteToFileAsync = WriteToFileAsync; const pattern_js_1 = __importDefault(require("../configs/pattern.js")); const Recode_1 = require("../configs/Recode"); const printf_1 = __importDefault(require("printf")); const fileManger_1 = require("./fileManger"); const pre_debug = console.debug; console.debug = (msg) => { if (process.env.NODE_ENV == "production") return; pre_debug("debug:", msg); }; const combinedPatterns = ((_timePatterns, _logPattern, _customPattern) => { if (_customPattern.length !== 0) { _logPattern = _customPattern; } return _timePatterns.map((pattern, idx) => { return new RegExp([pattern, _logPattern].join(" "), "gi"); }); })(pattern_js_1.default.TIME_PTN, pattern_js_1.default.LOGIN_PTN, pattern_js_1.default.CUSTOM_PTN); exports.combinedPatterns = combinedPatterns; function captureLog(_texts, regx) { const result = []; for (const text of _texts) { for (const re of regx) { for (const matchedObj of text.matchAll(re)) { if (matchedObj.groups) { result.push(matchedObj.groups); break; } } } } return result; } function Print(infoArr, _options) { if (_options.delimiter.length < 1) { OriginPrint(infoArr); } else { delimiterPrint(infoArr, _options.delimiter); } } function delimiterPrint(infoArr, delimiter) { let text = ""; for (const info of infoArr) { text += (0, printf_1.default)("%s%s%s\n", info.name, delimiter, info.timestamp); } console.log(text); } function OriginPrint(infoArr) { let text = ""; for (const info of infoArr) { text += (0, printf_1.default)("%-25s%s\n", info.name, info.timestamp); } console.log(text); } function WriteToFile(infoArr, useSave) { if (useSave == false) return; const data = infoArr.reduce((prev, curv) => { prev[curv.name] = curv.timestamp; return prev; }, {}); return (0, fileManger_1.appendFile)(data); } function WriteToFileAsync(infoArr, useSave) { if (useSave == false) return Promise.resolve(); const data = infoArr.reduce((prev, curv) => { prev[curv.name] = curv.timestamp; return prev; }, {}); return (0, fileManger_1.appendFileAsync)(data); } function compareGenerator(key) { return function (a, b) { if (a[key] == b[key]) return 0; else if (a[key] < b[key]) return -1; else return 1; }; } function calculate(textArr, _options) { textArr = textArr.filter((str, idx) => { return str.includes(_options.hint); }); const parsedArr = captureLog(textArr, combinedPatterns); const compareName = compareGenerator(Recode_1.recode.name); const compareTimeStamp = compareGenerator(Recode_1.recode.timestamp); const sortedArr = parsedArr .sort(compareTimeStamp) .sort(compareName) .map((obj, idx) => { const tmp = { name: obj.name, timestamp: obj.timestamp, }; return tmp; }) .reduceRight((acc, cur) => { let haveName = false; for (const obj of acc) { if (obj.name == cur.name) { haveName = true; } } if (!haveName) { acc.unshift(cur); } return acc; }, []); return sortedArr; } //# sourceMappingURL=utils.js.map