@haechi-labs/henesis-cli
Version:
🚀 Command Line Interface tool to Utilize henesis
81 lines • 3.05 kB
JavaScript
;
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