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

@zarzalejo/wasm-manifest

v0.1.0

Published

What does this WebAssembly module ask for? Parse the import surface of any .wasm and get a capability manifest plus a determinism verdict — before running a single instruction. Zero dependencies, browser and Node.

Readme

@zarzalejo/wasm-manifest

What does this WebAssembly module ask for? Parse the import surface of any .wasm and get a capability manifest plus a determinism verdict — statically, before running a single instruction. Zero dependencies, browser and Node.

The idea it rests on: a wasm module cannot be non-deterministic on its own. No clock, no entropy, no network, no disk — everything effectful enters through an import the host chooses to provide. So the import section is the module's honest self-declaration, and reading it answers the two questions you should ask before instantiating third-party code:

  1. What does it want? — every import, classified (clock / random / net / fs / process / env / log / custom), WASI-aware, with readable signatures.
  2. Can it surprise me?puro (no imports: output is a pure function of inputs, deterministic by construction) or frontera (its imports are its entire boundary: deterministic exactly when the host journals or serves those crossings).

Install

npm i @zarzalejo/wasm-manifest

Use

import { parseManifest } from '@zarzalejo/wasm-manifest';

const manifest = parseManifest(await file.arrayBuffer());

manifest.verdict.level;    // 'puro' | 'frontera'
manifest.verdict.reasons;  // ["asks for random: wasi_snapshot_preview1.random_get", …]
manifest.capabilities;     // { random: [...], clock: [...], custom: [...] }
manifest.imports[0];       // { module, name, kind, capability, signature }
manifest.hasStart;         // runs code at instantiation — flagged
manifest.memories.imported;// host-shared memory — flagged as a wide channel

Nothing executes: the parser only decodes the sections the manifest needs (types, imports, memories, exports, start) and never touches code. Malformed input throws ManifestError with the byte offset.

What it's for

  • The doorman of a plugin runtime — audit a third-party module and decide what to grant before WebAssembly.instantiate. Denying a capability then means omitting the import: the module fails at link time, not behind a runtime guard.
  • CI / supply-chain checks — fail a build when a dependency's wasm starts asking for the network.
  • The static half of record/replay — the dynamic half (journaled boundaries, cryptographic receipts, verified replay) is its sibling @zarzalejo/agent-receipts.

Status

0.1.x — core binary format (wasm 1.0 sections; limits parse memory64 and shared flags). Component-model (wasi:* world) imports are reported with their literal names; richer component parsing is future work.