npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

ethval

v2.1.1

Published

Easier calculation and formatting of Ethereum values

Downloads

2,082

Readme

ethval

Build Status Coverage Status

Easier calculation and formatting of Ethereum values.

  • Supports floating point numbers
  • Easily convert between Wei, Gwei and Eth
  • Output binary, decimal and hexadecimal strings
  • Output fixed-precision floating-point values (toFixed())
  • Parse and generate BN.js instances
  • Uses decimal.js under the hood

Install

  • NPM/Yarn: ethval

Example Usage

You can feed it BN.js instances returned from web3:

const EthVal = require('ethval')

const balance = await web3.eth.getBalance(account) // returns BN.js instance

// assume balance is 20000000000000000 wei (=0.02eth)

console.log( new EthVal(balance).toEth().mul(2).toFixed(2) ) // "0.04"

Use it calculate the Wei/Gwei/Eth equivalent of a given value:

const v = new EthVal('1.234', 'eth')

console.log( b.toGwei().toString() ) // "1234000000"

You can also output hex and binary strings:

const v = new EthVal(255)

console.log( b.toString(16) ) // "0xff"
console.log( b.toString(2) ) // "11111111"

Basic arithmetic supported fully:

const v = new EthVal(255)
const b = await web3.eth.getBalance('0x...') // assume balance is 100 wei

console.log( v.div(5).add(b).mul(2).sub(2).toString(16) ) // 0x12c (= 300 in base-10)

Comparisons too:

const { toBN } = require('web3-utils')

const v = new EthVal(255)
const v2 = new EthVal('0.2', 'eth')

console.log( v2.lt(v) ) // false
console.log( v.gt(200) ) // true
console.log( v.lte(toBN('0xFFFF')) ) // true

It also ensures units are aligned when performing operations:

const v = new EthVal(25500)
const v2 = new EthVal('0.2', 'eth')

console.log( v2.gt(v) ) // true
console.log( v.add(v2).toString() ) // "200000000000025500"
console.log( v2.add(v).toString() ) // "0.2000000000000255"

API

new EthVal(input, unit = 'wei')

Constructs a new EthVal instance.

  • input - can be a Number, a string (in base-10 or base-16/hex format), another EthVal instance, or a BN instance.
  • unit - must be one of eth, gwei or wei (default).

.toWei()

Convert the value to its Wei equivalent and return a new EthVal instance.

.toGwei()

Convert the value to its Gwei equivalent and return a new EthVal instance.

.toEth()

Convert the value to its Eth equivalent and return a new EthVal instance.

.add(input)

Add input to this value and return a new EthVal instance.

  • input - same as for the EthVal constructor

.sub(input)

Subtract input from this value and return a new EthVal instance.

  • input - same as for the EthVal constructor

.mul(input)

Multiply input with this value and return a new EthVal instance.

  • input - same as for the EthVal constructor

.div(input)

Divide this value by input and return a new EthVal instance.

  • input - same as for the EthVal constructor

.round()

Round this value to the nearest integer (i.e 0 decimal places) and return a new EthVal instance.

.eq(input)

Get whether this value equals input. Returns true or false.

  • input - same as for the EthVal constructor

.lt(input)

Get whether this value is less than input. Returns true or false.

  • input - same as for the EthVal constructor

.lte(input)

Get whether this value is less than or equal to input. Returns true or false.

  • input - same as for the EthVal constructor

.gt(input)

Get whether this value is greater than input. Returns true or false.

  • input - same as for the EthVal constructor

.gte(input)

Get whether this value is greater than or equal to input. Returns true or false.

  • input - same as for the EthVal constructor

.toString(base)

Return string representation of this value according to the given number base. For example, if base is 2 then a binary string representation is returned, if 16 then a hexadecimal string representation is returned.

  • base - either 2, 16 or 10.

.toNumber()

Return base-10 Number representation of this value.

.toFixed(precision)

Return base-10 decimal-point representation of this value to the given precision.

  • precision - maximum no. of numbers after the decimal point.

.isWei

Whether the current unit is wei.

.isGwei

Whether the current unit is gwei.

.isEth

Whether the current unit is eth.

Dev guide

  • Install deps: npm i
  • Tests: npm test
  • Tests with coverage: npm run test:coverage
  • Build final lib: npm run build
  • Lint: npm run lint

License

MIT