balanceofsatoshis
Version:
Lightning balance CLI
73 lines (64 loc) • 2.47 kB
JavaScript
const disconnectedEmoji = '🚪';
const forwardingEmoji = '💸';
const inactiveEmoji = '💀';
const inboundOffEmoji = '🚫'
const isEmoji = /[^\p{L}\p{N}\p{P}\p{Z}{\^\$}]/gu;
const maxDowntime = 10;
const pendingEmoji = '⏳';
const privateEmoji = '🌚'
const separator = ' ';
const shortKey = key => key.substring(0, 16);
const smallHtlc = '🦐';
const thawingEmoji = '🧊';
const unreliableEmoji = '🤢';
/** Display a chart alias for a peer
{
alias: <Alias String>
[downtime_percentage]: <Percentage Of Time Peer Is Down Number>
[icons]: [<Icon String>]
[is_disconnected]: <Peer is No Longer Connected By Any Channel Bool>
[is_forwarding]: <Peer is Forwarding Bool>
[is_inbound_disabled]: <Peer Inbound Disabled Bool>
[is_inactive]: <Peer Channels Are Disabled Bool>
[is_pending]: <Peer Has Pending Liquidity Bool>
[is_private]: <Peer is Privately Connected Bool>
[is_small_max_htlc]: <Peer Has Small Max HTLC Bool>
[is_thawing]: <Peer Channel is Coop Close Restricted Bool>
public_key: <Node Identity Public Key Hex String>
}
@returns
{
display: <Chart Alias String>
}
*/
module.exports = args => {
const downtime = args.downtime_percentage;
const forwarding = !!args.is_forwarding ? forwardingEmoji : String();
const inactive = !!args.is_inactive ? inactiveEmoji : String();
const inboundOff = !!args.is_inbound_disabled ? inboundOffEmoji : String();
const isPrivate = !!args.is_private;
const left = !!args.is_disconnected ? disconnectedEmoji : String();
const pendingLiquidity = !!args.is_pending ? pendingEmoji : String();
const privatePeer = !!args.is_private ? privateEmoji : String();
const regularAlias = args.alias.replace(isEmoji, String()).trim();
const smallMaxHtlc = !!args.is_small_max_htlc ? smallHtlc : String();
const thawing = !!args.is_thawing ? thawingEmoji : String();
const handle = regularAlias || shortKey(args.public_key);
const highDowntime = !!downtime && downtime > maxDowntime;
const isOftenDown = !isPrivate && !inactive && !!highDowntime;
const unreliable = !!isOftenDown ? unreliableEmoji : String();
const markers = []
.concat(!args.icons ? [] : args.icons)
.concat([
left,
inactive,
inboundOff,
forwarding,
pendingLiquidity,
privatePeer,
smallMaxHtlc,
thawing,
unreliable,
]);
return {display: markers.concat(handle).filter(n => !!n).join(separator)};
};