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

@anomaorg/anoma-app-sdk

v1.2.0

Published

TypeScript SDK for the Anoma Pay protocol, supported by Rust WebAssembly library. Contains domain logic, API clients, WASM bindings, and utilities shared across Anoma Pay applications.

Readme

Anoma Pay SDK

TypeScript SDK for the Anoma Pay protocol, supported by Rust WebAssembly library. Contains domain logic, API clients, WASM bindings, and utilities shared across Anoma Pay applications.

Tech Stack

Setup

Requirements:

  • Node.js (>= 22)
  • pnpm (installable via npm i --global pnpm with npm, which is bundled with Node.js)
  • Rust toolchain, the wasm-bindgen CLI and wasm-opt (binaryen) — for ARM bindings builds only

Install dependencies from the repository root:

pnpm install

Usage

Import from the SDK using subpath exports:

import { TransferBuilder } from "@anomaorg/anoma-pay-sdk/domain/transfer/models/TransferBuilder";
import { formatBalance } from "@anomaorg/anoma-pay-sdk/lib";
import type { AppResource } from "@anomaorg/anoma-pay-sdk/types";

Vite

Vite apps need one line of config:

export default defineConfig({
  optimizeDeps: { exclude: ["@anomaorg/arm-bindings"] },
});

@anomaorg/arm-bindings locates its WebAssembly binary relative to import.meta.url. Vite's dev-mode dependency pre-bundling copies the module into node_modules/.vite/deps/, which moves that URL while leaving the relative path intact, so the lookup misses and the dev server answers with index.html — surfacing as:

CompileError: WebAssembly.instantiate(): expected magic word 00 61 73 6d, found 3c 21 64 6f

Excluding the package keeps it unbundled and the path correct. This affects vite dev only: vite build resolves new URL(..., import.meta.url) natively and emits the binary as an asset, so production builds need no configuration. Bundlers other than Vite are unaffected.

Examples

Runnable examples live in examples/. Start with examples/balance: derives a keyring from a seed and displays the anomapay address and token balances.

Building ARM bindings

Cryptographic operations are implemented in Rust in arm-bindings/ and exposed to TypeScript through uniffi-bindgen-react-native.

pnpm run build:arm          # release build
pnpm run build:arm:dev      # debug build

Output lands in arm-bindings/generated/ and arm-bindings/dist/, neither of which is committed. CI builds it whenever a PR touches arm-bindings/ or patches/ (see .github/workflows/ci-arm-bindings.yml).

The SDK consumes the published @anomaorg/arm-bindings package, so building the bindings is only needed when changing the Rust code itself.

Releases

release-please tracks both packages from release-please-config.json and opens a separate release PR for each. The SDK tags as vX.Y.Z; the bindings tag as arm-bindings-vX.Y.Z.

Merging a release PR triggers the matching publish workflow — publish-sdk or publish-arm-bindings — each of which builds, tests and publishes to npm with provenance. Both can also be run by hand with dry-run for a rehearsal.

Because provenance is enabled, publishing only works from CI; npm publish from a laptop will fail.

License

Apache-2.0, matching the upstream anoma-rm-risc0 crates.

Pay Address Format

Anoma Pay uses a custom address format that encodes multiple public keys into a single Base64URL string:

| Field | Size (bytes) | | ------------------------ | ------------ | | Authority Public Key | 33 | | Discovery Public Key | 33 | | Encryption Public Key | 33 | | Nullifier Key Commitment | 32 | | CRC32 Checksum | 4 | | Total | 135 |

The raw bytes are concatenated in the order shown above and then encoded using Base64URL encoding. The CRC32 checksum provides integrity verification when decoding addresses.

Audits

Our software undergoes regular audits:

  1. Informal Systems

    Audit Report (pdf)

Project Structure

src/
├── api           # API clients (Backend, Indexer)
├── domain        # Core domain logic
│   ├── history       # Transaction history types
│   ├── keys          # Key hierarchy structure and services
│   ├── payroll       # Payroll schema and utilities
│   ├── queue         # Transfer queue management
│   ├── resources     # Resource machine handling
│   └── transfer      # Transfer models and services
├── lib           # Shared utility functions
├── lib-constants.ts  # SDK library constants
├── types.ts      # Shared type definitions
└── version.ts      # Current SDK version, generated when running `pnpm build`

Linting

pnpm lint

Type Checking

pnpm tsc-check

Unit Tests

pnpm test        # watch mode
pnpm test:run    # single run

Repository Conventions