Supporting More Web APIs - The wasm-bindgen
Guide (original) (raw)
The `wasm-bindgen` Guide
Supporting More Web APIs in web-sys
- Ensure that the
.webidl
file describing the interface exists somewhere within thecrates/web-sys/webidls/enabled
directory.
First, check to see whether we have the WebIDL definition file for your API:
grep -rn MyWebApi crates/web-sys/webidls
- If your interface is defined in a
.webidl
file that is inside thecrates/web-sys/webidls/enabled
directory, skip to step (3). - If your interface isn't defined in any file yet, find the WebIDL definition in the relevant standard and add it as a new
.webidl
file incrates/web-sys/webidls/enabled
. Make sure that it is a standard Web API! We don't want to add non-standard APIs to this crate. - If your interface is defined in a
.webidl
file within any of thecrates/web-sys/webidls/unavailable_*
directories, you need to move it intocrates/web-sys/webidls/enabled
, e.g.:
cd crates/web-sys
git mv webidls/unavailable_enum_ident/MyWebApi.webidl webidls/enabled/MyWebApi.webidl
- Regenerate the
web-sys
crate auto-generated bindings, which you can do with the following commands:
cd crates/web-sys
cargo run --release --package wasm-bindgen-webidl -- webidls src/features ./Cargo.toml
You can then use git diff
to ensure the bindings look correct.