#binding-generator #web #javascript #webidl

web-sys

Bindings for all Web APIs, a procedurally generated crate from WebIDL

60 releases

0.3.58 Jun 14, 2022
0.3.56 Jan 19, 2022
0.3.55 Sep 15, 2021
0.3.51 May 10, 2021
0.0.1 Jul 19, 2018

#654 in WebAssembly

Download history 232926/week @ 2022-03-11 213820/week @ 2022-03-18 216162/week @ 2022-03-25 228315/week @ 2022-04-01 241482/week @ 2022-04-08 211959/week @ 2022-04-15 208200/week @ 2022-04-22 192143/week @ 2022-04-29 215973/week @ 2022-05-06 205261/week @ 2022-05-13 214236/week @ 2022-05-20 200826/week @ 2022-05-27 226533/week @ 2022-06-03 244759/week @ 2022-06-10 261600/week @ 2022-06-17 218412/week @ 2022-06-24

985,271 downloads per month
Used in 12,683 crates (588 directly)

MIT/Apache

8.5MB
166K SLoC

web-sys

Raw bindings to Web APIs for projects using wasm-bindgen.

Crate features

This crate by default contains very little when compiled as almost all of its exposed APIs are gated by Cargo features. The exhaustive list of features can be found in crates/web-sys/Cargo.toml, but the rule of thumb for web-sys is that each type has its own cargo feature (named after the type). Using an API requires enabling the features for all types used in the API, and APIs should mention in the documentation what features they require.

How to add an interface

If you don't see a particular web API in web-sys, here is how to add it.

  1. Copy the WebIDL specification of the API and place it in a new file in the webidls/unstable folder. You can often find the IDL by going to the MDN docs page for the API, scrolling to the bottom, clicking the "Specifications" link, and scrolling to the bottom of the specification page. For example, the bottom of the MDN docs on the MediaSession API takes you to the spec. The very bottom of that page is the IDL.
  2. Run cargo run --release --package wasm-bindgen-webidl -- webidls src/features
  3. Copy the contents of features into the [features] section of Cargo.toml
  4. Run git add . to add all the generated files into git.

Dependencies