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

@bmv437/veilid-wasm

v0.5.2

Published

Veilid bindings for WebAssembly

Readme

veilid-wasm

This package is a Rust cargo crate the generates WebAssembly (WASM) bindings for veilid-core::VeilidAPI, and outputs JavaScript and TypeScript interfaces for calling the WASM module.

Limitations

Running Veilid in the browser via WebAssembly has some limitations:

Browser-based limitations

  1. TCP/UDP sockets are unavailable in the browser. This limits WASM nodes to communicating using WebSockets.
  2. Lookup of DNS records is unavailable in the browser, which means bootstrapping via TXT record also will not work. WASM nodes will need to connect to the bootstrap server directly via WebSockets, using this URL format: ws://bootstrap-v1.veilid.net:5150/ws in the network.routing_table.bootstrap[] section of the veilid config.
  3. Do not set up any nodes with a core.network.protocol.wss.url IP address such as wss://12.34.56.78:5150/ws to support SSL. Even though a Certificate Authority (trusted by browsers) will give you an SSL certificate for an IP address, this is unsupported by Veilid as of v0.2.3. Any wss:// URL containing an IP address causes an RPC error in veilid-core and your node will lose communication with other nodes.
  4. Since a WASM node running in the browser can't open ports, WASM nodes select another node to act as its Inbound Relay, so other nodes can react out to it and open a WS connection.
  5. Because of browser security policy regarding WebSockets:
    1. ws:// only works on http:// sites
    2. wss:// only works on https:// site with SSL certificates.

Running WASM on HTTPS sites [Not currently implemented]

Since WSS connections require WSS peers with valid SSL certificates, veilid-core plans to implement a feature called Outbound Relays. Outbound Relays will likely be hosted by the same host of the WASM web-app, and must run have valid SSL certificates that are signed by a Certificate Authority that's trusted by browsers. Outbound Relays will allow WASM nodes to communicate to other nodes over TCP/UDP/WS/WSS through the Outbound Relay's connection.

Running unit tests

Prerequisites:

  • NodeJS - ensure node and npm are installed.
  • Firefox browser installed, and available as firefox.

Run the test script:

  • ./wasm_test_js.sh to test with debug symbols.
  • ./wasm_test_js.sh release to test against a release build.

Development notes

Important cargo crates and their functions

  • wasm-bindgen is used to generate interop code between JavaScript and Rust, as well as basic TypeScript types.
  • tsify is used to export TypeScript types in places where wasm-bindgen runs into limitations, or in places where you don't need the mappings that wasm-bindgen generates.
  • serde-wasm-bindgen enables serialization/deserialization.