UNPKG

@provenanceio/wallet-utils

Version:

Typescript Utilities for Provenance Blockchain Wallet

193 lines (159 loc) 5.74 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.formatSingleValue = exports.formatCustomObj = exports.displayHashFormat = exports.displayGasPrice = exports.displayDateAndTime = exports.displayCoinAsObject = exports.displayCapitalizedString = exports.displayAmountList = exports.displayAddress = void 0; var _trimString = require("./trimString"); var _hashFormat = require("./hashFormat"); var _numberFormat = require("./numberFormat"); var _capitalize = require("./capitalize"); var _dateFns = require("date-fns"); var _tsPattern = require("ts-pattern"); var displayCapitalizedString = function displayCapitalizedString(fieldValue) { return (0, _capitalize.capitalize)("".concat(fieldValue)); }; /** * Displays a wallet address by trimming length to 11. */ exports.displayCapitalizedString = displayCapitalizedString; var displayAddress = function displayAddress() { var fieldValue = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; return fieldValue ? (0, _trimString.trimString)(fieldValue, 11, 3) : fieldValue; }; /** * amountList is an array of objects: amountList: [{ denom: 'a', amount: '1' }, {...}] * Note: If the denom is nhash, autoconvert to hash */ exports.displayAddress = displayAddress; var displayAmountList = function displayAmountList(fieldValue) { return fieldValue.map(function (coin) { return displayCoinAsObject(coin); }); }; /** * Hash is fixed to 5 dec points by default. */ exports.displayAmountList = displayAmountList; var displayHashFormat = function displayHashFormat(fieldValue) { var toFixed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 5; return "".concat((0, _hashFormat.hashFormat)(fieldValue).toFixed(toFixed), " Hash"); }; /** * Amount be a CoinAsObject or an amount. Automatically convert nhash to hash. * For other denoms, defaults to display a capital case of the denom. */ exports.displayHashFormat = displayHashFormat; var displayCoinAsObject = function displayCoinAsObject(fieldValue) { if (typeof fieldValue === 'string' || typeof fieldValue === 'number') return (0, _numberFormat.numberFormat)(fieldValue, 5); var _ref = fieldValue, denom = _ref.denom, amount = _ref.amount; switch (denom) { case 'hash': return "".concat(amount, " ").concat(denom); case 'nhash': return "".concat((0, _hashFormat.hashFormat)(amount), " Hash"); default: return "".concat(amount, " ").concat(denom); } }; exports.displayCoinAsObject = displayCoinAsObject; var displayGasPrice = function displayGasPrice(fieldValue) { return displayCoinAsObject({ denom: fieldValue.gasPriceDenom, amount: fieldValue.gasPrice }); }; exports.displayGasPrice = displayGasPrice; var displayDateAndTime = function displayDateAndTime(fieldValue) { return (0, _dateFns.format)(new Date(fieldValue), 'MMM d, h:mm:ss a'); }; /** * Deduce the formatting function based on the field and/or value. Value * is formatted below, otherwise it may be an array/object which is * recursively unpacked message-service and passed through the formatting * function again. * */ exports.displayDateAndTime = displayDateAndTime; var formatSingleValue = function formatSingleValue(value) { return (0, _tsPattern.match)({ value: value }) // True => Yes, False => No ["with"]({ value: _tsPattern.P["boolean"] }, function () { return value ? 'Yes' : 'No'; }) // Attempt to convert number or string to a Date ["with"]({ value: _tsPattern.P.when(function () { return new Date(value); }).toString() === 'Invalid Date' }, function () { return displayDateAndTime(value); }) // Blockchain address usually starts with tp. Trim all other strings without spaces. ["with"]({ value: _tsPattern.P.when(function (str) { return str.toString().indexOf('tp') === 0 || str.toString().indexOf(' ') < 0 && str.length > 30; }) }, function () { return displayAddress(value); }) // Values that are all caps separated by underscores, i.e. MARKER_TYPE_COIN ["with"]({ value: _tsPattern.P.when(function () { return new RegExp('^[A-Z]+(?:_[A-Z]+)*$').test(value); }) }, function () { return displayCapitalizedString(value); }) // Default print as string .otherwise(function () { return value.toString(); }); }; /** * Deduce the formatting function based on the field and/or value. Value * is formatted below, otherwise it may be an array/object which is * recursively unpacked message-service and passed through the formatting * function again. */ exports.formatSingleValue = formatSingleValue; var formatCustomObj = function formatCustomObj(key, value) { return (0, _tsPattern.match)({ key: key, value: value })["with"]({ value: _tsPattern.P.array({ denom: _tsPattern.P.string, amount: _tsPattern.P.string || _tsPattern.P.number }) }, function () { return displayAmountList(value); })["with"]({ value: { denom: _tsPattern.P.string, amount: _tsPattern.P.string || _tsPattern.P.number } }, function () { return displayCoinAsObject(value); })["with"]({ value: { gasPriceDenom: _tsPattern.P.string, gasPrice: _tsPattern.P.string || _tsPattern.P.number } }, function () { return displayGasPrice(value); })["with"]({ key: 'feeAmount' }, function () { return displayHashFormat(value); })["with"]({ value: _tsPattern.P.when(function (p) { return new Date(p); }).toString() === 'Invalid Date' }, function () { return displayDateAndTime(value); }).otherwise(function () { return null; }); }; exports.formatCustomObj = formatCustomObj;