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 🙏

© 2026 – Pkg Stats / Ryan Hefner

hood-tokenlist

v0.1.2

Published

The canonical Uniswap-standard token list for Robinhood Chain (chain ID 4663): every Stock Token, USDG, WETH, and rules-vetted launchpad memecoins, all verified on-chain.

Readme

hood-tokenlist

The canonical token list for Robinhood Chain (chain ID 4663), in the Uniswap token-lists standard. Every Stock Token, USDG, WETH, and every launchpad memecoin that passes a published, rules-based verification funnel. Every address is re-verified against live chain state on every refresh; nothing is hand-curated.

Website — nirholas.github.io/hood-tokenlist

The project site is an interactive library card catalog: the list is filed into drawers you pull open, and each token is an index card you flip through. The front carries the on-chain metadata (address, decimals, Chainlink feed, launchpad, V3 pool, launch block); flip it and the back shows the exact criteria that entry passed on-chain, rubber-stamped. Drawer-pull and card-flip are the navigation. It is a single self-contained page in docs/ (real token data embedded inline, zero network requests), so it deploys anywhere static and works from file://.

Deploy your own copy in one click:

Deploy to Cloudflare Deploy to Netlify Deploy with Vercel

| Target | How | | --- | --- | | GitHub Pages | Settings → Pages → Source: main / /docs. Serves the site and the stable-URL tokenlist.json mirror at nirholas.github.io/hood-tokenlist/. No build step. | | Cloudflare Pages | The button above, or wrangler pages deploy docs. Config in wrangler.toml. | | Netlify / Vercel | The buttons above. Publish directory is docs/ (netlify.toml, vercel.json). |

Stable URL (always the current list):

https://nirholas.github.io/hood-tokenlist/tokenlist.json

Directory site (live, searchable): https://nirholas.github.io/hood-tokenlist/

What's in the list

| Class | Source | Verification on every refresh | | --- | --- | --- | | Stock Tokens (95) | hoodchain SDK registry (full Blockscout discovery) | on-chain symbol/name/decimals/uiMultiplier, shared EIP-1967 beacon check, cross-check against Robinhood's contracts registry, Chainlink feed answers | | USDG, WETH | official contracts registry | on-chain identity + ETH/USD and USDG/USD feed verification by description() | | Memecoins | full event-history scan of NOXA (TokenLaunched) and The Odyssey (PoolMigrated) | 9 objective rules: provenance, known quote, liquidity of at least $2,500, at least 7 days old, at least 50 holders, simulated sell + transfer, schema-valid identity, no ticker spoofing, one token per symbol. Full criteria |

Value-add per token lives in extensions: assetClass, chainlinkFeed (+ decimals), supportsUiMultiplier (ERC-8056), launchpad, uniswapV3Pool (+ fee tier), launchBlock, and an eligibility marker on Stock Tokens. Schema: extensions page and src/index.d.ts.

Logos are self-hosted in logos/: deterministic ticker-monogram SVGs for Stock Tokens (no trademarked artwork), each memecoin's own art where resolvable (monogram fallback).

Use it

In a DEX UI or wallet

Any interface that accepts token lists by URL (Uniswap-compatible interfaces, wallets, aggregators): paste the stable URL above in "Manage token lists".

As an npm package

npm i hood-tokenlist
import { tokens, stockTokens, memecoins, getToken, getTokensBySymbol, pricedTokens } from 'hood-tokenlist'

getToken('0xaF3D76f1834A1d425780943C99Ea8A608f8a93f9') // AAPL entry
getTokensBySymbol('TSLA')                              // [TSLA entry]
pricedTokens()                                          // every entry with a Chainlink feed

// or the raw JSON, no helpers:
import list from 'hood-tokenlist/tokenlist.json' with { type: 'json' }

TypeScript definitions ship with the package (TokenInfo, TokenExtensions, AssetClass).

Reading Stock Token data correctly

Two Robinhood-Chain-specific rules integrators must not skip:

  1. ERC-8056 positions: true position = raw balance x uiMultiplier() (1e18-scaled). Every stock entry sets extensions.supportsUiMultiplier: true.
  2. Feed prices are already multiplier-adjusted: never re-apply uiMultiplier to a Chainlink answer.

Stock Tokens are tokenized debt securities and may not be offered, sold, or delivered to US persons (further limits: Canada, UK, Switzerland). Every stock entry carries extensions.eligibility: "not-for-us-persons" so buy flows can gate on it. Displaying the data is unrestricted. Details: criteria page.

Refresh pipeline

npm run refresh

scripts/refresh.mjs re-verifies the entire list live against the public RPC (https://rpc.mainnet.chain.robinhood.com), Blockscout, and the on-chain Chainlink feeds:

  • Stock Tokens: identity multicall + beacon slot + feed answers + docs-registry cross-check.
  • Memecoins: rescans the complete NOXA and Odyssey event history from genesis, then applies the published criteria with live liquidity, holder, and honeypot-simulation checks.
  • Output is deterministic: tokens sorted by symbol then address, stable key order, and version semantics per the standard (major = removal, minor = add, patch = metadata). A refresh that changes nothing produces a byte-identical tokenlist.json, so diffs are always meaningful.
  • docs/tokenlist.json, docs/tokenlist.data.js, and docs/logos/ are mirrored from the canonical root artifacts by the same script; never edit the mirrors by hand.
  • data/refresh-report.json records stats and every exclusion with its reasons.

The script is strictly read-only on-chain: it signs nothing and spends nothing.

Cadence: run weekly (or after notable launchpad activity) and commit the diff. The whole run takes a few minutes, dominated by the launchpad history scan and per-survivor checks.

Tests

npm test
  • tests/schema.test.mjs: validates tokenlist.json against the official @uniswap/token-lists JSON schema; asserts the docs mirror is byte-identical.
  • tests/integrity.test.mjs: EIP-55 checksums, no duplicate addresses/symbols, every logo file exists (root + docs mirror), tags defined, per-class extension invariants, anti-spoof holds, typed loader agrees with the JSON.
  • tests/criteria.test.mjs: unit tests for every inclusion rule (age, holders, liquidity, identity, spoofing, collision resolution).
  • tests/version.test.mjs: version-bump semantics.
  • tests/live.test.mjs: live re-verification of a deterministic sample (base assets, first and last stock token, every memecoin) against mainnet RPC and Blockscout on every test run.

Docs site (GitHub Pages)

The docs/ folder is a static site: the full searchable directory with live Chainlink prices and chain height, the criteria page, and the extension schema page. One-time setup after pushing: repository Settings > Pages > Deploy from a branch > main > /docs. The page also works locally (npx serve docs, or open docs/index.html directly; a tokenlist.data.js fallback covers file://).

Publishing (owner steps)

npm publish --access public

The package ships tokenlist.json, src/ (loader + types), and logos/. npm pack --dry-run must be clean first. After a refresh changes the list, publish a package version whose semver matches the list's own version bump.

Repo layout

tokenlist.json            the canonical list (root artifact)
src/index.mjs             typed loader (ESM)
src/index.d.ts            TypeScript definitions
scripts/refresh.mjs       full re-verification + rebuild pipeline
scripts/lib/              rpc, chain reads, criteria, version, monogram, blockscout
logos/                    self-hosted logo assets, keyed by checksummed address
docs/                     GitHub Pages site + stable-URL mirror of the list
data/robinhood-docs-registry.json   official-registry cross-check fixture
data/refresh-report.json  stats + per-token exclusion reasons from the last refresh
tests/                    schema, integrity, criteria, version, live suites

License

All rights reserved. See LICENSE.

Built by nirholas · three.ws