Supporting More Web APIs - The `wasm-bindgen` Guide

## Keyboard shortcuts

Press `←` or `→` to navigate between chapters

Press `S` or `/` to search in the book

Press `?` to show this help

Press `Esc` to hide this help

# Supporting More Web APIs in `web-sys`

1. Ensure that the `.webidl` file describing the interface exists somewhere within the `crates/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 the `crates/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 in `crates/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 the `crates/web-sys/webidls/unavailable_*` directories, you need to move it into `crates/web-sys/webidls/enabled`, e.g.:

         cd crates/web-sys
         git mv webidls/unavailable_enum_ident/MyWebApi.webidl webidls/enabled/MyWebApi.webidl

2. 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.