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

anylist-napi

v1.0.0

Published

Typescript bindings for anylist_rs

Readme

anylist-napi

TypeScript/JavaScript bindings for anylist_rs using NAPI.

Installation

pnpm add anylist-napi
# or
bun add anylist-napi

Runtime Support

This package targets multiple JavaScript runtimes:

  • Node.js v20+ (primary target, fully tested)
  • Deno v2+ (officially supported, CI tested)
  • Bun (NAPI support is experimental, not tested)

Usage

See examples/ for more.

import { AnyListClient } from "anylist-napi";

async function main() {
  const email = process.env.ANYLIST_EMAIL;
  const password = process.env.ANYLIST_PASSWORD;

  if (!email || !password) {
    throw new Error("Email and password must be provided");
  }

  // Authenticate
  const client = await AnyListClient.login(email, password);

  console.log("Creating a new list...");
  const list = await client.createList("Weekend Shopping");

  console.log("Adding some items...");
  await client.addItem(list.id, "Bread");
  await client.addItem(list.id, "Eggs");
  await client.addItemWithDetails(list.id, "Chicken", "2 lbs", null, "Meat");

  console.log("Listing all items from all lists...");
  const allLists = await client.getLists();
  for (const l of allLists) {
    console.log(`\n${l.name}:`);
    for (const item of l.items) {
      const status = item.checked ? "✓" : " ";
      console.log(`  [${status}] ${item.name} ${item.quantity || ""}`);
    }
  }

  // Save tokens for next time
  const tokens = client.getTokens();
  // Store tokens securely...
}

main().catch(console.error);

Development

Prerequisites

  • Rust (latest stable) - for building native bindings
  • Node.js 20+ OR Deno 2+ - runtime for testing
  • Bun (optional, recommended) - for development tooling

Common Commands

| Task | Command | Description | | ----------------- | -------------------------------------------------- | ------------------------------------------------------------ | | Setup | bun install | Install dependencies (or use npm install / yarn install) | | Build | bun run build | Release build | | | bun run build:debug | Debug build | | Test | bun run test | Run tests (Node.js runtime) | | | bun run test:watch | Watch mode | | | deno run --allow-ffi --allow-read npm:vitest run | Test on Deno | | Benchmark | bun run bench | Run performance benchmarks | | Lint & Format | bun run lint | Lint TypeScript with oxlint | | | bun run format | Format TypeScript and Rust code |

Integration tests

You can run the integration tests with a real Anylist account. Each run will create a new list, named with the current time.

ANYLIST_EMAIL=<your email> ANYLIST_PASSWORD=<your password> bun run test

Platform Support

Pre-built native binaries are available for:

  • macOS (Intel & Apple Silicon)
  • Windows x64
  • Linux GNU (x86_64)
  • Linux musl (x86_64)

Contributing

Contributions are welcome! Please ensure:

  1. Tests pass on Node.js (bun run test)
  2. Code is formatted (bun run format)
  3. Linting passes (bun run lint)
  4. Benchmarks still work (bun run bench)

License

MIT