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

alkanesjs

v1.3.2

Published

An expressive CLI toolset for Alkanes mantained by Bitapes Labs

Readme

alkanesjs

A TypeScript SDK for the alkanes metaprotocol on Bitcoin: deploy contracts, call them through typed ABI documents, build protostone transactions (including dependent CPFP packages), and read back what they did. Small bundle, strict types, no oyl/sdk dependency — execute, simulate and trace are implemented here.

npm i alkanesjs

A whole flow, start to finish — a fresh wallet, funded from the regtest faucet, minting DIESEL. Copy it and run it:

import { Account, AlkaneId, Contract, networks } from "alkanesjs";
import { TokenAbi } from "alkanesjs/abis";

const DIESEL = AlkaneId.fromString("2:0");

const me = Account.generate(networks.Regtest);
const diesel = new Contract(TokenAbi, DIESEL, networks.Regtest);

const start = async () => {
  // a brand new wallet has nothing, so ask the regtest faucet for coins
  console.log("Requesting rBTC from faucet to initiate a mint...");
  const faucet = await me.tx().requestFaucet({ amount: 0.1 }).waitForConfirmation();
  console.log(`Faucet TX confirmed: https://regtest.espo.sh/tx/${faucet.txid}`);

  // a view — simulated, nothing broadcast
  const name = await diesel.getName().unwrap();

  // a state change — built, signed, broadcast
  console.log(`Minting ${name}..`);
  const sent = await me.tx().call(diesel, "mintTokens").build().send();
  console.log(`Waiting for TX: https://regtest.espo.sh/tx/${sent.txid}`);

  // confirmed is not succeeded — the traces say what the protostones did
  const done = await sent.waitForConfirmation();
  console.log(done.ok ? done.traces : `reverted: ${done.error}`);
};

start();

Everything in it is real: Account.generate makes a BIP39 wallet, requestFaucet is regtest-only, TokenAbi ships with the package, and done.traces is what the mint's protostone actually did.

Entries

The root entry is the 90% path — Provider, Account, Contract, AlkaneId, Amount, bitcoin. Everything else lives in an entry named after its purpose:

| Import from | For | | --- | --- | | alkanesjs | connecting, signing, calling, deploying | | alkanesjs/boxed | result handling: consumeOrThrow, isBoxedError, … | | alkanesjs/traces | decoding what protostones did | | alkanesjs/abi | alkabi documents: overrides, local wasm views | | alkanesjs/abis | shipped ABI documents: Oyl AMM, frBTC, plain tokens | | alkanesjs/utils/amm | constant-product pool math | | alkanesjs/utils/frbtc | frBTC premium math + live signer lookup | | alkanesjs/wallets | browser wallet connectors (SSR-safe) |

alkanesjs binds no contracts — no hardcoded ids, no opcode tables in code. ABI documents for widely-deployed contracts ship as data under alkanesjs/abis; for your own contracts you bring the document the build emitted, and the SDK brings the machinery either way.

Documentation

docs/README.md is the index. Highlights:

  • core.md — Provider, accounts, contracts, deployment, ids, amounts
  • transactions.md — the builder: transfers, calls, shadow space, chained transactions, CPFP packages
  • conventions.md — the wire facts everything assumes

Building

npm i
npm run build

Build artifacts land in dist/ — one CJS + ESM + flattened .d.ts triple per entry. Adding an entry is documented at the bottom of docs/README.md.