UNPKG

@haechi-labs/henesis-cli

Version:

🚀 Command Line Interface tool to Utilize henesis

118 lines • 4.5 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 Integration_1 = require("../../types/Integration"); const errors_1 = require("../../errors"); const integration_1 = tslib_1.__importDefault(require("../../rpc/integration")); const dayjs_1 = tslib_1.__importDefault(require("dayjs")); const utc_1 = tslib_1.__importDefault(require("dayjs/plugin/utc")); const utils_1 = require("../../utils"); exports.columns = { subscriptionId: { header: 'subscriptionId', minWidth: 16, get: (row) => row.subscriptionId, }, events: { header: 'events', minWidth: 13, get: (row) => row.events, }, }; class Usage extends base_1.default { async run() { const { args } = this.parse(Usage); if (args.integrationId === undefined) { this.error(errors_1.MISSING_INTEGRATIONID_ARGS); } try { // Date Setting dayjs_1.default.extend(utc_1.default); const now = dayjs_1.default().utc(); const startOfThisMonth = utils_1.getStartOfThisMonth(); const startOfLastMonth = utils_1.getStartOfLastMonth(); const endOfLastMonth = utils_1.getEndOfLastMonth(); // rpc call const [integrationStatOfThisMonth, integrationStatOfLastMonth,] = await Promise.all([ integration_1.default.getIntegrationUsage(args.integrationId, startOfThisMonth.toISOString(), now.toISOString()), integration_1.default.getIntegrationUsage(args.integrationId, startOfLastMonth.toISOString(), endOfLastMonth.toISOString()), ]); // parsing data const subscriptionUsageOfThisMonth = this.subscriptionUsageMapper(integrationStatOfThisMonth); const subscriptionUsageOfLastMonth = this.subscriptionUsageMapper(integrationStatOfLastMonth); // render CUI this.log('Henesis Event Streamer (Ethereum) Statistics'); this.log('All times are in UTC+0.'); const thisMonth = '[' + now.year().toString() + '/' + (now.month() + 1).toString() + ' (this month)]'; const lastMonth = '[' + startOfLastMonth.getUTCFullYear().toString() + '/' + (startOfLastMonth.getUTCMonth() + 1).toString() + ' (last month)]'; if (subscriptionUsageOfThisMonth.length > 0) { this.log(); this.draw(thisMonth, subscriptionUsageOfThisMonth); } else { this.log(); this.log(thisMonth); this.log(); this.log('No usage data in this month'); } this.log(); this.log('------------------------'); if (subscriptionUsageOfLastMonth.length > 0) { this.log(); this.draw(lastMonth, subscriptionUsageOfLastMonth); } else { this.log(); this.log(lastMonth); this.log(); this.log('No usage data in last month'); } } catch (err) { this.error(err.message); } } draw(date, subscriptionUsage) { const emptyArray = []; const title = { date: { header: date, minWidth: 16, }, }; cli_ux_1.cli.table(emptyArray, title, { printLine: this.log, }); if (subscriptionUsage.length > 0) { this.log(); cli_ux_1.cli.table(subscriptionUsage, exports.columns, { printLine: this.log, }); } } subscriptionUsageMapper(stat) { let subscriptionUsage = []; for (const subscription of stat.subscriptions) { subscriptionUsage.push(new Integration_1.SubscriptionUsage(subscription.id, utils_1.formatNumbers(subscription.eventCount))); } return subscriptionUsage; } } exports.default = Usage; Usage.description = 'show event streamer statistics'; Usage.examples = [ `$ henesis integration:usage my-integration-id-xqxz`, ]; Usage.flags = {}; Usage.args = [{ name: 'integrationId' }]; //# sourceMappingURL=usage.js.map