cargo : web-sys @ 0.3.99
README.md
50 lines · markdown
# `web-sys`Raw bindings to Web APIs for projects using `wasm-bindgen`.- [The `web-sys` section of the `wasm-bindgen` guide](https://wasm-bindgen.github.io/wasm-bindgen/web-sys/index.html)- [API Documentation](https://wasm-bindgen.github.io/wasm-bindgen/api/web_sys/)## Crate featuresThis crate by default contains very little when compiled as almost all of itsexposed APIs are gated by Cargo features. The exhaustive list of features can befound in `crates/web-sys/Cargo.toml`, but the rule of thumb for `web-sys` isthat each type has its own cargo feature (named after the type). Using an APIrequires enabling the features for all types used in the API, and APIs shouldmention in the documentation what features they require.## How to add an interfaceIf 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](https://developer.mozilla.org/en-US/docs/Web/API/MediaSession) on the MediaSession API takes you to the [spec](https://w3c.github.io/mediasession/#the-mediasession-interface). The [very bottom](https://w3c.github.io/mediasession/#idl-index) of _that_ page is the IDL.2. Annotate the functions that can throw with `[Throws]`3. `cd crates/web-sys`4. Run `cargo run --release --package wasm-bindgen-webidl -- webidls src/features ./Cargo.toml`5. Run `git add .` to add all the generated files into git.6. Add an entry in CHANGELOG.md like the following ```md ... ## Unreleased ### Added ... * Added <your addition> [#1234](https://github.com/wasm-bindgen/wasm-bindgen/pull/1234) # <- link to your PR ```