#client #package #content #tokio

wasm-pkg-client

Wasm package client

21 releases (10 breaking)

0.15.0 Feb 6, 2026
0.13.0 Nov 10, 2025
0.11.0 Jun 19, 2025
0.10.0 Jan 31, 2025
0.8.5 Nov 20, 2024

#1590 in WebAssembly

Download history 3509/week @ 2026-01-19 3490/week @ 2026-01-26 3934/week @ 2026-02-02 4772/week @ 2026-02-09 3782/week @ 2026-02-16 3729/week @ 2026-02-23 5459/week @ 2026-03-02 5034/week @ 2026-03-09 3736/week @ 2026-03-16 5681/week @ 2026-03-23 5782/week @ 2026-03-30 5445/week @ 2026-04-06 7590/week @ 2026-04-13 7924/week @ 2026-04-20 7584/week @ 2026-04-27 8307/week @ 2026-05-04

31,861 downloads per month
Used in 15 crates (11 directly)

Apache-2.0 WITH LLVM-exception

135KB
3K SLoC

Wasm Package Client

Client implements a unified interface for loading package content from multiple kinds of package registries.

Example

// Initialize client from global configuration.
let mut client = wasm_pkg_client::Client::with_global_defaults().await?;

// Get a specific package release version.
let pkg = "example:pkg".parse()?;
let version = "1.0.0".parse()?;
let release = client.get_release(&pkg, &version).await?;

// Stream release content to a file.
let mut stream = client.stream_content(&pkg, &release).await?;
let mut file = tokio::fs::File::create("output.wasm").await?;
use futures_util::TryStreamExt;
use tokio::io::AsyncWriteExt;
while let Some(chunk) = stream.try_next().await? {
    file.write_all(&chunk).await?;
}

Wasm Package Client

A minimal Package Registry interface for multiple registry backends.

Running Tests

The e2e tests require an OCI Distribution Spec-compliant registry to be running at localhost:5000. An ephemeral registry can be run with:

$ docker run --rm -p 5000:5000 distribution/distribution:edge

The e2e tests themselves are in the separate tests/e2e crate:

$ cd tests/e2e
$ cargo run

Dependencies

~49–75MB
~1M SLoC