UNPKG

@haechi-labs/henesis-cli

Version:

🚀 Command Line Interface tool to Utilize henesis

81 lines • 3.05 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const base_1 = tslib_1.__importDefault(require("../../common/base")); const cli_ux_1 = require("cli-ux"); const utils_1 = require("../../utils"); const types_1 = require("../../types"); const nft_1 = tslib_1.__importDefault(require("../../rpc/nft/nft")); const dayjs_1 = tslib_1.__importDefault(require("dayjs")); const utc_1 = tslib_1.__importDefault(require("dayjs/plugin/utc")); exports.columns = { date: { header: 'Date', minWidth: 13, get: (row) => row.date, }, usage: { header: 'Usage', minWidth: 13, get: (row) => row.usage, }, }; class Usage extends base_1.default { async run() { try { const [nftDailyStats] = await Promise.all([nft_1.default.dailyUsage()]); if (nftDailyStats.length !== 0) { const ethStats = this.aggregateStats(this.addUnusedDays(nftDailyStats)); this.log('Henesis NFT API (Ethereum) Statistics'); this.log(); this.log('Total api call of this month: ' + utils_1.formatNumbers(this.getTotalUsage(nftDailyStats))); this.log('This command shows the nft api usage this month.'); cli_ux_1.cli.table(ethStats, exports.columns, { printLine: this.log, }); } else { this.log('Your nft api statistics does not exist'); } } catch (err) { this.error(err.message); } } getTotalUsage(filteredDailyStats) { return filteredDailyStats.reduce((a, b) => { return a + b.count; }, 0); } aggregateStats(filteredDailyStats) { let nftUsages = []; filteredDailyStats.forEach(nodeDailyStat => { // nft gets the real time stat. so you don't need to -1 like node usage. const nftUsage = new types_1.NFTUsage(nodeDailyStat.date.split('T')[0], utils_1.formatNumbers(nodeDailyStat.count)); nftUsages.push(nftUsage); }); return nftUsages; } addUnusedDays(nftDailyStats) { dayjs_1.default.extend(utc_1.default); let now = dayjs_1.default().utc(); let nowDate = now.format('YYYY-MM-DD'); for (let index = 0; index < now.date(); nowDate = now.add(-(index + 1), 'day').format('YYYY-MM-DD'), index++) { if (nftDailyStats[index] == undefined) { nftDailyStats.push(new types_1.NFTDailyStat(nowDate, 0)); continue; } if (nowDate != nftDailyStats[index].date) { nftDailyStats.splice(index, 0, new types_1.NFTDailyStat(nowDate, 0)); } } return nftDailyStats; } } exports.default = Usage; Usage.description = 'show nft api statistics'; Usage.examples = [`$ henesis nft:usage`]; Usage.flags = {}; Usage.args = []; //# sourceMappingURL=usage.js.map