vasku
Version:
TVM-Solidity contract development framework
81 lines (80 loc) • 2.67 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.printError = exports.printEmptyLine = exports.printMessage = exports.prettifyBalance = exports.printContract = void 0;
const colors_1 = __importDefault(require("colors"));
const suffixes_1 = require("../../../utils/suffixes");
/* eslint-disable */
const types = {
'-1': 'Not found',
'0': 'Un init',
'1': 'Active',
'2': 'Frozen',
'3': 'Non exist'
};
/* eslint-disable */
const colorize = {
'-1': colors_1.default.gray,
'0': colors_1.default.yellow,
'1': colors_1.default.green,
'2': colors_1.default.blue,
'3': colors_1.default.red
};
/**
* Read account data from GraphQL and output to the terminal
* @param contract contract
*/
async function printContract(contract) {
const contractName = contract.constructor.name;
const address = await contract.address();
const balance = prettifyBalance(await contract.balance());
const accountType = await contract.accountType();
const type = types[await contract.accountType()];
const colorizeFunction = colorize[accountType];
console.log(`${colors_1.default.gray(contractName)}\n` +
`${colors_1.default.white(address)}\n` +
`${colorizeFunction(`${balance} ● ${type}`)}`);
}
exports.printContract = printContract;
/**
* Return balance in human-readable format
* @param balance
* @example
* prettifyBalance(1234567890123456789n)
* @return
* '1,234,567,890.123,456,789'
*/
function prettifyBalance(balance) {
const integerPartOfNumber = balance / BigInt(suffixes_1.B);
const integerPartOfNumberText = integerPartOfNumber.toLocaleString();
const fractionalPartOfNumber = balance % BigInt(suffixes_1.B) + BigInt(suffixes_1.B);
const fractionalPartOfNumberText = fractionalPartOfNumber.toLocaleString('en', { maximumFractionDigits: 10 }).substring(2);
const text = `${integerPartOfNumberText}${colors_1.default.cyan('.')}${fractionalPartOfNumberText}`;
return text.replaceAll(',', colors_1.default.gray(','));
}
exports.prettifyBalance = prettifyBalance;
/**
* Print message between two empty lines
*/
async function printMessage(message) {
console.log();
console.log(`${message} ...`);
console.log();
}
exports.printMessage = printMessage;
/**
* Print empty line
*/
async function printEmptyLine() {
console.log();
}
exports.printEmptyLine = printEmptyLine;
/**
* Print error
*/
async function printError(e) {
console.error(e);
}
exports.printError = printError;