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

@carterjbastian/erc20-enumerable

v1.0.0

Published

An implementation of ERC20 with an enumerable _balances field

Downloads

2

Readme

ERC20 Enumerable

This is a modifaction of the (current at the time) OpenZeppelin ERC20 implementation to use an EnumerableMap instead of a native mapping and provide getter logic to enumerate the _balances for an ERC20 token.

Install and use

npm install "@carterjbastian/erc20-enumerable"

Testing

npx hardhat test

I copied over the main tests from OpenZeppelin and converted them to Ethers. The test coverage seems fairly complete of traditional ERC20 functionality and approval niceties.

I built this using hardhat and ethers. This led to testing issues (janky converting of Truffle tests written by OpenZeppelin to Waffle). I could have done this better by re-writing the test logic, but I really just wanted to get the tests passing as quickly as possible.

TODOs

  • Add test coverage of the new enumeration functionality.
  • Fix the janky type and variable scope conversion issues that came from converting the tests to waffle.
  • Figure out how to handle the fact that the mapping order is not guaranteed and if that has implications on calling multiple times within a single function?
  • Add function to check if an address is in the balance map (which could be semantically different than)