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

@aave-dao/aave-helpers-js

v1.0.13

Published

Snapshot diffing, reporting, and governance utilities for Aave V3.

Downloads

7,013

Readme

@aave-dao/aave-helpers-js

Snapshot diffing, reporting, and governance utilities for Aave V3.

Installation

pnpm add @aave-dao/aave-helpers-js

CLI

# Diff two snapshot JSON files into a markdown report
aave-helpers-js diff-snapshots <before.json> <after.json> -o <output.md>

# Compute IPFS hash (optionally upload to Pinata + The Graph)
aave-helpers-js ipfs <file> [-u]

# Generate a Tenderly seatbelt report for a payload
aave-helpers-js seatbelt-report -c <chainId> --pc <payloadsController> [--pi <payloadId>] [--pa <payloadAddress>] [--pb <payloadBytecode>] [-o <output>]

Library

import { diffSnapshots } from '@aave-dao/aave-helpers-js';

const md = await diffSnapshots(preSnapshot, postSnapshot);

Exports

  • diffSnapshots(pre, post) - diff two AaveV3Snapshot objects into a markdown report
  • diff(a, b) / isChange() / hasChanges() - generic deep-diff utilities
  • TypeScript types: AaveV3Snapshot, AaveV3Reserve, AaveV3Strategy, AaveV3Emode, etc.

Event Database

utils/eventDb.ts is a collection of Solidity event ABIs used to decode transaction logs in reports. If a report shows raw topics/data instead of a decoded event name, the event ABI is likely missing from this file.

Adding events from a verified contract

Use the add-events script to automatically fetch events from a block explorer and add any missing ones to the database:

# By chain ID and address
npx tsx scripts/add-events.ts <chainId> <address>

# Examples
npx tsx scripts/add-events.ts 1 0x5ac4182a1dd41aeef465e40b82fd326bf66ab82c
npx tsx scripts/add-events.ts 137 0xSomePolygonAddress

The script will:

  • Fetch the contract ABI from the block explorer (Etherscan, etc.)
  • If the contract is a proxy, also fetch the implementation ABI
  • Compare against the existing event database and add only missing events
  • Running it twice on the same contract is safe (idempotent)

Requires ETHERSCAN_API_KEY environment variable. Optionally set EXPLORER_PROXY to override the explorer API URL.

Claude Code skill

If you're using Claude Code, you can ask it to add events by providing an explorer URL:

add events from https://etherscan.io/address/0x5ac4182a1dd41aeef465e40b82fd326bf66ab82c

It will parse the URL, determine the chain ID, and run the script automatically.