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 🙏

© 2025 – Pkg Stats / Ryan Hefner

@first-ledger/kit

v0.0.1-b.3

Published

The **Data Kit** is a modular, lightweight package designed to fetch, aggregate, and parse data from various blockchain networks. It provides developers with a unified interface to access blockchain data in a structured and usable format, enabling seamles

Readme

First-Ledger Data Kit

The Data Kit is a modular, lightweight package designed to fetch, aggregate, and parse data from various blockchain networks. It provides developers with a unified interface to access blockchain data in a structured and usable format, enabling seamless integration into applications such as wallets, analytics tools, decentralized finance (DeFi) platforms, and more.

Features

  • Multi-Chain Support: Fetch data from popular blockchains like Ethereum, Bitcoin, Binance Smart Chain, Solana, and more.
  • Data Aggregation: Combine raw blockchain data (e.g., transactions, blocks, smart contract events) into a cohesive format.
  • Custom Parsers: Transform chain-specific data into standardized outputs tailored to your application's needs.
  • Extensible Design: Easily add support for new blockchains or data types with modular adapters.
  • Real-Time & Historical Data: Retrieve both live updates and archived blockchain data.
  • Error Handling: Robust mechanisms to manage network issues, rate limits, and malformed data.

Installation

Install the package via npm:

npm install @first-ledger/kit

Or with Yarn:

yarn add @first-ledger/kit

Usage

Basic Example

Fetch and parse the latest block data from Ethereum:

const { BlockchainDataKit } = require('@first-ledger/kit');

// Initialize the kit with a blockchain adapter
const kit = new BlockchainDataKit({
  chain: 'ethereum',
  rpcUrl: 'https://mainnet.infura.io/v3/YOUR_INFURA_KEY',
});

// Fetch the latest block
kit
  .getLatestBlock()
  .then((block) => {
    console.log('Latest Ethereum Block:', block);
  })
  .catch((err) => {
    console.error('Error fetching block:', err);
  });

Aggregating Transaction Data

Aggregate transaction data for a specific address:

const { BlockchainDataKit } = require('blockchain-data-kit');

const kit = new BlockchainDataKit({
  chain: 'bitcoin',
  rpcUrl: 'http://your-bitcoin-node:8332',
});

kit
  .getAddressTransactions('1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa')
  .then((transactions) => {
    console.log('Bitcoin Transactions:', transactions);
  })
  .catch((err) => {
    console.error('Error:', err);
  });

Supported Blockchains

| Blockchain | Adapter Name | Status | | ------------------- | ---------------- | ---------- | | XRP Ledger | xrpl | Stable | | Ethereum | ethereum | TBD | | Bitcoin | bitcoin | TBD | | Binance Smart Chain | bsc | TBD | | Solana | solana | TBD | | Polygon | polygon | TBD |

To request support for additional chains, see Contributing (#contributing).

Configuration

The kit accepts a configuration object to customize its behavior:

javascript

const kit = new BlockchainDataKit({
  chain: 'ethereum', // Blockchain adapter name
  rpcUrl: 'YOUR_RPC_URL', // RPC endpoint
  apiKey: 'YOUR_API_KEY', // Optional: API key if required
  timeout: 5000, // Request timeout in ms
  maxRetries: 3, // Retry failed requests
  parser: customParserFunction, // Optional: Custom parsing logic
});

Custom Parsers

You can define custom parsers to format data according to your needs:

javascript

function customParserFunction(rawData) {
  return {
    blockNumber: rawData.number,
    timestamp: new Date(rawData.timestamp * 1000),
    transactionCount: rawData.transactions.length,
  };
}

const kit = new BlockchainDataKit({
  chain: 'ethereum',
  rpcUrl: 'YOUR_RPC_URL',
  parser: customParserFunction,
});

kit.getLatestBlock().then((parsedBlock) => {
  console.log('Custom Parsed Block:', parsedBlock);
});

API Reference

BlockchainDataKit(config)

  • config: Object containing chain type, RPC URL, and optional settings.

Methods

  • .getLatestBlock(): Fetches the most recent block.
  • .getBlockByNumber(number): Fetches a block by its number or height.
  • .getAddressTransactions(address): Retrieves transactions for a given address.
  • .getContractEvents(contractAddress, eventName): Fetches smart contract events (if supported by the chain).

For detailed method documentation, see the API Docs (docs/api.md).

Contributing

We welcome contributions! To add a new blockchain adapter or improve the kit:

  1. Fork the repository.
  2. Create a new branch (git checkout -b feature/your-feature).
  3. Submit a pull request with your changes.

See CONTRIBUTING.md for more details.

License

This project is licensed under the MIT License. See LICENSE for details.

Support

For issues or questions, open a ticket on our GitHub Issues page or reach out via email at [email protected].