From 7484315c227e1b16b12adff7727a15759052084e Mon Sep 17 00:00:00 2001 From: Ed Page Date: Mon, 29 Apr 2024 15:57:53 -0500 Subject: [PATCH 1/6] refactor(bench): Pull out Cargo's manifest --- crates/benchmarks/benches/Cargo.cargo.toml | 117 ++++++++++++++++++++ crates/benchmarks/benches/cargo.rs | 120 +-------------------- crates/benchmarks/examples/bench.rs | 120 +-------------------- 3 files changed, 119 insertions(+), 238 deletions(-) create mode 100644 crates/benchmarks/benches/Cargo.cargo.toml diff --git a/crates/benchmarks/benches/Cargo.cargo.toml b/crates/benchmarks/benches/Cargo.cargo.toml new file mode 100644 index 00000000..60306f61 --- /dev/null +++ b/crates/benchmarks/benches/Cargo.cargo.toml @@ -0,0 +1,117 @@ +[package] +name = "cargo" +version = "0.57.0" +edition = "2018" +authors = ["Yehuda Katz ", + "Carl Lerche ", + "Alex Crichton "] +license = "MIT OR Apache-2.0" +homepage = "https://crates.io" +repository = "https://github.com/rust-lang/cargo" +documentation = "https://docs.rs/cargo" +readme = "README.md" +description = """ +Cargo, a package manager for Rust. +""" + +[lib] +name = "cargo" +path = "src/cargo/lib.rs" + +[dependencies] +atty = "0.2" +bytesize = "1.0" +cargo-platform = { path = "crates/cargo-platform", version = "0.1.2" } +cargo-util = { path = "crates/cargo-util", version = "0.1.1" } +crates-io = { path = "crates/crates-io", version = "0.33.0" } +crossbeam-utils = "0.8" +curl = { version = "0.4.38", features = ["http2"] } +curl-sys = "0.4.45" +env_logger = "0.9.0" +pretty_env_logger = { version = "0.4", optional = true } +anyhow = "1.0" +filetime = "0.2.9" +flate2 = { version = "1.0.3", default-features = false, features = ["zlib"] } +git2 = "0.13.16" +git2-curl = "0.14.1" +glob = "0.3.0" +hex = "0.4" +home = "0.5" +humantime = "2.0.0" +ignore = "0.4.7" +lazy_static = "1.2.0" +jobserver = "0.1.24" +lazycell = "1.2.0" +libc = "0.2" +log = "0.4.6" +libgit2-sys = "0.12.18" +memchr = "2.1.3" +num_cpus = "1.0" +opener = "0.5" +percent-encoding = "2.0" +rustfix = "0.6.0" +semver = { version = "1.0.3", features = ["serde"] } +serde = { version = "1.0.123", features = ["derive"] } +serde_ignored = "0.1.0" +serde_json = { version = "1.0.30", features = ["raw_value"] } +shell-escape = "0.1.4" +strip-ansi-escapes = "0.1.0" +tar = { version = "0.4.35", default-features = false } +tempfile = "3.0" +termcolor = "1.1" +toml = "0.5.7" +unicode-xid = "0.2.0" +url = "2.2.2" +walkdir = "2.2" +clap = "2.31.2" +unicode-width = "0.1.5" +openssl = { version = '0.10.11', optional = true } +im-rc = "15.0.0" +itertools = "0.10.0" + +# A noop dependency that changes in the Rust repository, it's a bit of a hack. +# See the `src/tools/rustc-workspace-hack/README.md` file in `rust-lang/rust` +# for more information. +rustc-workspace-hack = "1.0.0" + +[target.'cfg(windows)'.dependencies] +fwdansi = "1.1.0" + +[target.'cfg(windows)'.dependencies.winapi] +version = "0.3" +features = [ + "basetsd", + "handleapi", + "jobapi", + "jobapi2", + "memoryapi", + "minwindef", + "ntdef", + "ntstatus", + "processenv", + "processthreadsapi", + "psapi", + "synchapi", + "winerror", + "winbase", + "wincon", + "winnt", +] + +[dev-dependencies] +cargo-test-macro = { path = "crates/cargo-test-macro" } +cargo-test-support = { path = "crates/cargo-test-support" } + +[build-dependencies] +flate2 = { version = "1.0.3", default-features = false, features = ["zlib"] } +tar = { version = "0.4.26", default-features = false } + +[[bin]] +name = "cargo" +test = false +doc = false + +[features] +deny-warnings = [] +vendored-openssl = ["openssl/vendored"] +pretty-env-logger = ["pretty_env_logger"] diff --git a/crates/benchmarks/benches/cargo.rs b/crates/benchmarks/benches/cargo.rs index 79d41407..feff7c6a 100644 --- a/crates/benchmarks/benches/cargo.rs +++ b/crates/benchmarks/benches/cargo.rs @@ -78,125 +78,7 @@ edition = "2018" [dependencies] "#; -const MEDIUM: &str = r#" -[package] -name = "cargo" -version = "0.57.0" -edition = "2018" -authors = ["Yehuda Katz ", - "Carl Lerche ", - "Alex Crichton "] -license = "MIT OR Apache-2.0" -homepage = "https://crates.io" -repository = "https://github.com/rust-lang/cargo" -documentation = "https://docs.rs/cargo" -readme = "README.md" -description = """ -Cargo, a package manager for Rust. -""" - -[lib] -name = "cargo" -path = "src/cargo/lib.rs" - -[dependencies] -atty = "0.2" -bytesize = "1.0" -cargo-platform = { path = "crates/cargo-platform", version = "0.1.2" } -cargo-util = { path = "crates/cargo-util", version = "0.1.1" } -crates-io = { path = "crates/crates-io", version = "0.33.0" } -crossbeam-utils = "0.8" -curl = { version = "0.4.38", features = ["http2"] } -curl-sys = "0.4.45" -env_logger = "0.9.0" -pretty_env_logger = { version = "0.4", optional = true } -anyhow = "1.0" -filetime = "0.2.9" -flate2 = { version = "1.0.3", default-features = false, features = ["zlib"] } -git2 = "0.13.16" -git2-curl = "0.14.1" -glob = "0.3.0" -hex = "0.4" -home = "0.5" -humantime = "2.0.0" -ignore = "0.4.7" -lazy_static = "1.2.0" -jobserver = "0.1.24" -lazycell = "1.2.0" -libc = "0.2" -log = "0.4.6" -libgit2-sys = "0.12.18" -memchr = "2.1.3" -num_cpus = "1.0" -opener = "0.5" -percent-encoding = "2.0" -rustfix = "0.6.0" -semver = { version = "1.0.3", features = ["serde"] } -serde = { version = "1.0.123", features = ["derive"] } -serde_ignored = "0.1.0" -serde_json = { version = "1.0.30", features = ["raw_value"] } -shell-escape = "0.1.4" -strip-ansi-escapes = "0.1.0" -tar = { version = "0.4.35", default-features = false } -tempfile = "3.0" -termcolor = "1.1" -toml = "0.5.7" -unicode-xid = "0.2.0" -url = "2.2.2" -walkdir = "2.2" -clap = "2.31.2" -unicode-width = "0.1.5" -openssl = { version = '0.10.11', optional = true } -im-rc = "15.0.0" -itertools = "0.10.0" - -# A noop dependency that changes in the Rust repository, it's a bit of a hack. -# See the `src/tools/rustc-workspace-hack/README.md` file in `rust-lang/rust` -# for more information. -rustc-workspace-hack = "1.0.0" - -[target.'cfg(windows)'.dependencies] -fwdansi = "1.1.0" - -[target.'cfg(windows)'.dependencies.winapi] -version = "0.3" -features = [ - "basetsd", - "handleapi", - "jobapi", - "jobapi2", - "memoryapi", - "minwindef", - "ntdef", - "ntstatus", - "processenv", - "processthreadsapi", - "psapi", - "synchapi", - "winerror", - "winbase", - "wincon", - "winnt", -] - -[dev-dependencies] -cargo-test-macro = { path = "crates/cargo-test-macro" } -cargo-test-support = { path = "crates/cargo-test-support" } - -[build-dependencies] -flate2 = { version = "1.0.3", default-features = false, features = ["zlib"] } -tar = { version = "0.4.26", default-features = false } - -[[bin]] -name = "cargo" -test = false -doc = false - -[features] -deny-warnings = [] -vendored-openssl = ["openssl/vendored"] -pretty-env-logger = ["pretty_env_logger"] -"#; +const MEDIUM: &str = include_str!("Cargo.cargo.toml"); mod manifest { use std::collections::HashMap; diff --git a/crates/benchmarks/examples/bench.rs b/crates/benchmarks/examples/bench.rs index cadcc7ab..35879187 100644 --- a/crates/benchmarks/examples/bench.rs +++ b/crates/benchmarks/examples/bench.rs @@ -161,122 +161,4 @@ mod manifest { } } -const CARGO_MANIFEST: &str = r#" -[package] -name = "cargo" -version = "0.57.0" -edition = "2018" -authors = ["Yehuda Katz ", - "Carl Lerche ", - "Alex Crichton "] -license = "MIT OR Apache-2.0" -homepage = "https://crates.io" -repository = "https://github.com/rust-lang/cargo" -documentation = "https://docs.rs/cargo" -readme = "README.md" -description = """ -Cargo, a package manager for Rust. -""" - -[lib] -name = "cargo" -path = "src/cargo/lib.rs" - -[dependencies] -atty = "0.2" -bytesize = "1.0" -cargo-platform = { path = "crates/cargo-platform", version = "0.1.2" } -cargo-util = { path = "crates/cargo-util", version = "0.1.1" } -crates-io = { path = "crates/crates-io", version = "0.33.0" } -crossbeam-utils = "0.8" -curl = { version = "0.4.38", features = ["http2"] } -curl-sys = "0.4.45" -env_logger = "0.9.0" -pretty_env_logger = { version = "0.4", optional = true } -anyhow = "1.0" -filetime = "0.2.9" -flate2 = { version = "1.0.3", default-features = false, features = ["zlib"] } -git2 = "0.13.16" -git2-curl = "0.14.1" -glob = "0.3.0" -hex = "0.4" -home = "0.5" -humantime = "2.0.0" -ignore = "0.4.7" -lazy_static = "1.2.0" -jobserver = "0.1.24" -lazycell = "1.2.0" -libc = "0.2" -log = "0.4.6" -libgit2-sys = "0.12.18" -memchr = "2.1.3" -num_cpus = "1.0" -opener = "0.5" -percent-encoding = "2.0" -rustfix = "0.6.0" -semver = { version = "1.0.3", features = ["serde"] } -serde = { version = "1.0.123", features = ["derive"] } -serde_ignored = "0.1.0" -serde_json = { version = "1.0.30", features = ["raw_value"] } -shell-escape = "0.1.4" -strip-ansi-escapes = "0.1.0" -tar = { version = "0.4.35", default-features = false } -tempfile = "3.0" -termcolor = "1.1" -toml = "0.5.7" -unicode-xid = "0.2.0" -url = "2.2.2" -walkdir = "2.2" -clap = "2.31.2" -unicode-width = "0.1.5" -openssl = { version = '0.10.11', optional = true } -im-rc = "15.0.0" -itertools = "0.10.0" - -# A noop dependency that changes in the Rust repository, it's a bit of a hack. -# See the `src/tools/rustc-workspace-hack/README.md` file in `rust-lang/rust` -# for more information. -rustc-workspace-hack = "1.0.0" - -[target.'cfg(windows)'.dependencies] -fwdansi = "1.1.0" - -[target.'cfg(windows)'.dependencies.winapi] -version = "0.3" -features = [ - "basetsd", - "handleapi", - "jobapi", - "jobapi2", - "memoryapi", - "minwindef", - "ntdef", - "ntstatus", - "processenv", - "processthreadsapi", - "psapi", - "synchapi", - "winerror", - "winbase", - "wincon", - "winnt", -] - -[dev-dependencies] -cargo-test-macro = { path = "crates/cargo-test-macro" } -cargo-test-support = { path = "crates/cargo-test-support" } - -[build-dependencies] -flate2 = { version = "1.0.3", default-features = false, features = ["zlib"] } -tar = { version = "0.4.26", default-features = false } - -[[bin]] -name = "cargo" -test = false -doc = false - -[features] -deny-warnings = [] -vendored-openssl = ["openssl/vendored"] -pretty-env-logger = ["pretty_env_logger"] -"#; +const CARGO_MANIFEST: &str = include_str!("../benches/Cargo.cargo.toml"); From f929325e9d103ef541d8e5bfc438e54cca93bbad Mon Sep 17 00:00:00 2001 From: Ed Page Date: Mon, 29 Apr 2024 16:28:45 -0500 Subject: [PATCH 2/6] refactor(bench): Share code between bench/example --- _typos.toml | 1 + crates/benchmarks/Cargo.toml | 4 +- crates/benchmarks/benches/cargo.rs | 139 +----------------- crates/benchmarks/examples/bench.rs | 132 ++++------------- .../{benches => src}/Cargo.cargo.toml | 0 crates/benchmarks/src/lib.rs | 132 +++++++++++++++++ 6 files changed, 166 insertions(+), 242 deletions(-) rename crates/benchmarks/{benches => src}/Cargo.cargo.toml (100%) create mode 100644 crates/benchmarks/src/lib.rs diff --git a/_typos.toml b/_typos.toml index b50e66ac..c378d1c5 100644 --- a/_typos.toml +++ b/_typos.toml @@ -1,6 +1,7 @@ [files] extend-exclude = [ "crates/toml_edit/tests/fixtures/**", + "crates/benchmarks/src/Cargo.*.toml", ] [default.extend-words] diff --git a/crates/benchmarks/Cargo.toml b/crates/benchmarks/Cargo.toml index 44fdd43b..815e74bb 100644 --- a/crates/benchmarks/Cargo.toml +++ b/crates/benchmarks/Cargo.toml @@ -8,11 +8,13 @@ rust-version.workspace = true [package.metadata.release] release = false +[dependencies] +serde = { version = "1.0.197", features = ["derive"] } + [dev-dependencies] toml = { path = "../toml" } toml_edit = { path = "../toml_edit" } toml_old = { version = "0.5.10", package = "toml" } -serde = { version = "1.0.197", features = ["derive"] } serde_json = "1.0.115" lexopt = "0.3.0" divan = "0.1.14" diff --git a/crates/benchmarks/benches/cargo.rs b/crates/benchmarks/benches/cargo.rs index feff7c6a..914e0716 100644 --- a/crates/benchmarks/benches/cargo.rs +++ b/crates/benchmarks/benches/cargo.rs @@ -1,7 +1,7 @@ #![allow(elided_lifetimes_in_paths)] mod toml_edit { - use super::{manifest, Data, MANIFESTS}; + use toml_benchmarks::{manifest, Data, MANIFESTS}; #[divan::bench(args=MANIFESTS)] fn document(sample: &Data) -> ::toml_edit::DocumentMut { @@ -15,7 +15,7 @@ mod toml_edit { } mod toml { - use super::{manifest, Data, MANIFESTS}; + use toml_benchmarks::{manifest, Data, MANIFESTS}; #[divan::bench(args=MANIFESTS)] fn document(sample: &Data) -> ::toml::Value { @@ -29,7 +29,7 @@ mod toml { } mod toml_v05 { - use super::{manifest, Data, MANIFESTS}; + use toml_benchmarks::{manifest, Data, MANIFESTS}; #[divan::bench(args=MANIFESTS)] fn document(sample: &Data) -> ::toml_old::Value { @@ -45,136 +45,3 @@ mod toml_v05 { fn main() { divan::main(); } - -#[derive(Debug)] -pub struct Data(&'static str, &'static str); - -impl Data { - pub const fn name(&self) -> &'static str { - self.0 - } - - pub const fn content(&self) -> &'static str { - self.1 - } -} - -impl std::fmt::Display for Data { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - self.name().fmt(f) - } -} - -const MANIFESTS: &[Data] = &[Data("0-minimal", MINIMAL), Data("1-medium", MEDIUM)]; - -const MINIMAL: &str = r#" -[package] -name = "bar" -version = "0.1.0" -edition = "2018" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] -"#; - -const MEDIUM: &str = include_str!("Cargo.cargo.toml"); - -mod manifest { - use std::collections::HashMap; - - #[derive(Clone, Debug, serde::Serialize, serde::Deserialize)] - #[serde(rename_all = "kebab-case")] - pub(crate) struct Manifest { - package: Package, - #[serde(default)] - lib: Option, - #[serde(default)] - bin: Vec, - #[serde(default)] - features: HashMap>, - #[serde(default)] - dependencies: HashMap, - #[serde(default)] - build_dependencies: HashMap, - #[serde(default)] - dev_dependencies: HashMap, - #[serde(default)] - target: HashMap, - } - - #[derive(Clone, Debug, serde::Serialize, serde::Deserialize)] - #[serde(rename_all = "kebab-case")] - pub(crate) struct Package { - name: String, - version: String, - #[serde(default)] - edition: Option, - #[serde(default)] - authors: Vec, - #[serde(default)] - license: Option, - #[serde(default)] - homepage: Option, - #[serde(default)] - repository: Option, - #[serde(default)] - documentation: Option, - #[serde(default)] - readme: Option, - #[serde(default)] - description: Option, - } - - #[derive(Clone, Debug, serde::Serialize, serde::Deserialize)] - #[serde(rename_all = "kebab-case")] - pub(crate) struct Lib { - name: String, - #[serde(default)] - path: Option, - } - - #[derive(Clone, Debug, serde::Serialize, serde::Deserialize)] - #[serde(rename_all = "kebab-case")] - pub(crate) struct Bin { - name: String, - #[serde(default)] - test: bool, - #[serde(default)] - doc: bool, - } - - #[derive(Clone, Debug, serde::Serialize, serde::Deserialize)] - #[serde(rename_all = "kebab-case")] - #[serde(untagged)] - pub(crate) enum Dependency { - Version(String), - Full(DependencyFull), - } - - #[derive(Clone, Debug, serde::Serialize, serde::Deserialize)] - #[serde(rename_all = "kebab-case")] - pub(crate) struct DependencyFull { - #[serde(default)] - version: Option, - #[serde(default)] - path: Option, - #[serde(default)] - default_features: bool, - #[serde(default)] - optional: bool, - #[serde(default)] - features: Vec, - } - - #[derive(Clone, Debug, serde::Serialize, serde::Deserialize)] - #[serde(rename_all = "kebab-case")] - pub(crate) struct Target { - #[serde(default)] - dependencies: HashMap, - #[serde(default)] - build_dependencies: HashMap, - #[serde(default)] - dev_dependencies: HashMap, - } -} diff --git a/crates/benchmarks/examples/bench.rs b/crates/benchmarks/examples/bench.rs index 35879187..95c09198 100644 --- a/crates/benchmarks/examples/bench.rs +++ b/crates/benchmarks/examples/bench.rs @@ -3,17 +3,22 @@ fn main() -> Result<(), lexopt::Error> { match args.parser { Parser::Document => { - let _doc = CARGO_MANIFEST.parse::().unwrap(); + let _doc = args + .data + .content() + .parse::() + .unwrap(); #[cfg(debug_assertions)] // Don't interefere with profiling drop(_doc); } Parser::De => { - let _doc = toml::from_str::(CARGO_MANIFEST).unwrap(); + let _doc = + toml::from_str::(args.data.content()).unwrap(); #[cfg(debug_assertions)] // Don't interefere with profiling drop(_doc); } Parser::Table => { - let _doc = CARGO_MANIFEST.parse::().unwrap(); + let _doc = args.data.content().parse::().unwrap(); #[cfg(debug_assertions)] // Don't interefere with profiling drop(_doc); } @@ -23,6 +28,7 @@ fn main() -> Result<(), lexopt::Error> { struct Args { parser: Parser, + data: toml_benchmarks::Data, } impl Args { @@ -32,6 +38,10 @@ impl Args { let mut parser = Parser::Document; let mut args = lexopt::Parser::from_env(); + let mut data = toml_benchmarks::MANIFESTS + .iter() + .find(|d| d.name() == "1-medium") + .unwrap(); while let Some(arg) = args.next()? { match arg { Long("parser") => { @@ -48,11 +58,24 @@ impl Args { } }; } + Long("manifest") => { + let name = args.value()?; + data = toml_benchmarks::MANIFESTS + .iter() + .find(|d| d.name() == name) + .ok_or_else(|| lexopt::Error::UnexpectedValue { + option: "manifest".to_owned(), + value: name.clone(), + })?; + } _ => return Err(arg.unexpected()), } } - Ok(Self { parser }) + Ok(Self { + parser, + data: *data, + }) } } @@ -61,104 +84,3 @@ enum Parser { De, Table, } - -mod manifest { - use std::collections::HashMap; - - #[derive(Clone, Debug, serde::Serialize, serde::Deserialize)] - #[serde(rename_all = "kebab-case")] - pub(crate) struct Manifest { - package: Package, - #[serde(default)] - lib: Option, - #[serde(default)] - bin: Vec, - #[serde(default)] - features: HashMap>, - #[serde(default)] - dependencies: HashMap, - #[serde(default)] - build_dependencies: HashMap, - #[serde(default)] - dev_dependencies: HashMap, - #[serde(default)] - target: HashMap, - } - - #[derive(Clone, Debug, serde::Serialize, serde::Deserialize)] - #[serde(rename_all = "kebab-case")] - pub(crate) struct Package { - name: String, - version: String, - #[serde(default)] - edition: Option, - #[serde(default)] - authors: Vec, - #[serde(default)] - license: Option, - #[serde(default)] - homepage: Option, - #[serde(default)] - repository: Option, - #[serde(default)] - documentation: Option, - #[serde(default)] - readme: Option, - #[serde(default)] - description: Option, - } - - #[derive(Clone, Debug, serde::Serialize, serde::Deserialize)] - #[serde(rename_all = "kebab-case")] - pub(crate) struct Lib { - name: String, - #[serde(default)] - path: Option, - } - - #[derive(Clone, Debug, serde::Serialize, serde::Deserialize)] - #[serde(rename_all = "kebab-case")] - pub(crate) struct Bin { - name: String, - #[serde(default)] - test: bool, - #[serde(default)] - doc: bool, - } - - #[derive(Clone, Debug, serde::Serialize, serde::Deserialize)] - #[serde(rename_all = "kebab-case")] - #[serde(untagged)] - pub(crate) enum Dependency { - Version(String), - Full(DependencyFull), - } - - #[derive(Clone, Debug, serde::Serialize, serde::Deserialize)] - #[serde(rename_all = "kebab-case")] - pub(crate) struct DependencyFull { - #[serde(default)] - version: Option, - #[serde(default)] - path: Option, - #[serde(default)] - default_features: bool, - #[serde(default)] - optional: bool, - #[serde(default)] - features: Vec, - } - - #[derive(Clone, Debug, serde::Serialize, serde::Deserialize)] - #[serde(rename_all = "kebab-case")] - pub(crate) struct Target { - #[serde(default)] - dependencies: HashMap, - #[serde(default)] - build_dependencies: HashMap, - #[serde(default)] - dev_dependencies: HashMap, - } -} - -const CARGO_MANIFEST: &str = include_str!("../benches/Cargo.cargo.toml"); diff --git a/crates/benchmarks/benches/Cargo.cargo.toml b/crates/benchmarks/src/Cargo.cargo.toml similarity index 100% rename from crates/benchmarks/benches/Cargo.cargo.toml rename to crates/benchmarks/src/Cargo.cargo.toml diff --git a/crates/benchmarks/src/lib.rs b/crates/benchmarks/src/lib.rs new file mode 100644 index 00000000..d01b1455 --- /dev/null +++ b/crates/benchmarks/src/lib.rs @@ -0,0 +1,132 @@ +#[derive(Copy, Clone, Debug)] +pub struct Data(&'static str, &'static str); + +impl Data { + pub const fn name(&self) -> &'static str { + self.0 + } + + pub const fn content(&self) -> &'static str { + self.1 + } +} + +impl std::fmt::Display for Data { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + self.name().fmt(f) + } +} + +pub const MANIFESTS: &[Data] = &[Data("0-minimal", MINIMAL), Data("1-medium", MEDIUM)]; + +const MINIMAL: &str = r#" +[package] +name = "bar" +version = "0.1.0" +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +"#; + +const MEDIUM: &str = include_str!("Cargo.cargo.toml"); + +pub mod manifest { + use std::collections::HashMap; + + #[derive(Clone, Debug, serde::Serialize, serde::Deserialize)] + #[serde(rename_all = "kebab-case")] + pub struct Manifest { + package: Package, + #[serde(default)] + lib: Option, + #[serde(default)] + bin: Vec, + #[serde(default)] + features: HashMap>, + #[serde(default)] + dependencies: HashMap, + #[serde(default)] + build_dependencies: HashMap, + #[serde(default)] + dev_dependencies: HashMap, + #[serde(default)] + target: HashMap, + } + + #[derive(Clone, Debug, serde::Serialize, serde::Deserialize)] + #[serde(rename_all = "kebab-case")] + pub(crate) struct Package { + name: String, + version: String, + #[serde(default)] + edition: Option, + #[serde(default)] + authors: Vec, + #[serde(default)] + license: Option, + #[serde(default)] + homepage: Option, + #[serde(default)] + repository: Option, + #[serde(default)] + documentation: Option, + #[serde(default)] + readme: Option, + #[serde(default)] + description: Option, + } + + #[derive(Clone, Debug, serde::Serialize, serde::Deserialize)] + #[serde(rename_all = "kebab-case")] + pub(crate) struct Lib { + name: String, + #[serde(default)] + path: Option, + } + + #[derive(Clone, Debug, serde::Serialize, serde::Deserialize)] + #[serde(rename_all = "kebab-case")] + pub(crate) struct Bin { + name: String, + #[serde(default)] + test: bool, + #[serde(default)] + doc: bool, + } + + #[derive(Clone, Debug, serde::Serialize, serde::Deserialize)] + #[serde(rename_all = "kebab-case")] + #[serde(untagged)] + pub(crate) enum Dependency { + Version(String), + Full(DependencyFull), + } + + #[derive(Clone, Debug, serde::Serialize, serde::Deserialize)] + #[serde(rename_all = "kebab-case")] + pub(crate) struct DependencyFull { + #[serde(default)] + version: Option, + #[serde(default)] + path: Option, + #[serde(default)] + default_features: bool, + #[serde(default)] + optional: bool, + #[serde(default)] + features: Vec, + } + + #[derive(Clone, Debug, serde::Serialize, serde::Deserialize)] + #[serde(rename_all = "kebab-case")] + pub(crate) struct Target { + #[serde(default)] + dependencies: HashMap, + #[serde(default)] + build_dependencies: HashMap, + #[serde(default)] + dev_dependencies: HashMap, + } +} From ee505bee19896b63a544a306d4c7312f30ed6d8e Mon Sep 17 00:00:00 2001 From: Ed Page Date: Mon, 29 Apr 2024 16:29:08 -0500 Subject: [PATCH 3/6] test(bench): Allow optional lib names --- crates/benchmarks/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/benchmarks/src/lib.rs b/crates/benchmarks/src/lib.rs index d01b1455..255e3a1c 100644 --- a/crates/benchmarks/src/lib.rs +++ b/crates/benchmarks/src/lib.rs @@ -81,7 +81,7 @@ pub mod manifest { #[derive(Clone, Debug, serde::Serialize, serde::Deserialize)] #[serde(rename_all = "kebab-case")] pub(crate) struct Lib { - name: String, + name: Option, #[serde(default)] path: Option, } From 882853af20727eb0a382169a62818bd6872382eb Mon Sep 17 00:00:00 2001 From: Ed Page Date: Mon, 29 Apr 2024 16:29:33 -0500 Subject: [PATCH 4/6] test(bench): Clarify 'new' benchmark --- crates/benchmarks/src/lib.rs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/crates/benchmarks/src/lib.rs b/crates/benchmarks/src/lib.rs index 255e3a1c..97435d0f 100644 --- a/crates/benchmarks/src/lib.rs +++ b/crates/benchmarks/src/lib.rs @@ -17,16 +17,14 @@ impl std::fmt::Display for Data { } } -pub const MANIFESTS: &[Data] = &[Data("0-minimal", MINIMAL), Data("1-medium", MEDIUM)]; +pub const MANIFESTS: &[Data] = &[Data("0-new", NEW), Data("1-medium", MEDIUM)]; -const MINIMAL: &str = r#" +const NEW: &str = r#" [package] name = "bar" version = "0.1.0" edition = "2018" -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - [dependencies] "#; From 9091271d9811db18d8d46f4ed6f3f094a9bbb3f3 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Mon, 29 Apr 2024 16:17:09 -0500 Subject: [PATCH 5/6] test(bench): Add a json baseline --- crates/benchmarks/benches/cargo.rs | 44 +++++++++++++++++++++++++---- crates/benchmarks/examples/bench.rs | 2 +- crates/benchmarks/src/lib.rs | 12 ++++---- 3 files changed, 45 insertions(+), 13 deletions(-) diff --git a/crates/benchmarks/benches/cargo.rs b/crates/benchmarks/benches/cargo.rs index 914e0716..fff78cd3 100644 --- a/crates/benchmarks/benches/cargo.rs +++ b/crates/benchmarks/benches/cargo.rs @@ -4,12 +4,12 @@ mod toml_edit { use toml_benchmarks::{manifest, Data, MANIFESTS}; #[divan::bench(args=MANIFESTS)] - fn document(sample: &Data) -> ::toml_edit::DocumentMut { + fn document(sample: &Data<'static>) -> ::toml_edit::DocumentMut { sample.content().parse().unwrap() } #[divan::bench(args=MANIFESTS)] - fn manifest(sample: &Data) -> manifest::Manifest { + fn manifest(sample: &Data<'static>) -> manifest::Manifest { ::toml_edit::de::from_str(sample.content()).unwrap() } } @@ -18,12 +18,12 @@ mod toml { use toml_benchmarks::{manifest, Data, MANIFESTS}; #[divan::bench(args=MANIFESTS)] - fn document(sample: &Data) -> ::toml::Value { + fn document(sample: &Data<'static>) -> ::toml::Value { sample.content().parse().unwrap() } #[divan::bench(args=MANIFESTS)] - fn manifest(sample: &Data) -> manifest::Manifest { + fn manifest(sample: &Data<'static>) -> manifest::Manifest { ::toml::de::from_str(sample.content()).unwrap() } } @@ -32,16 +32,48 @@ mod toml_v05 { use toml_benchmarks::{manifest, Data, MANIFESTS}; #[divan::bench(args=MANIFESTS)] - fn document(sample: &Data) -> ::toml_old::Value { + fn document(sample: &Data<'static>) -> ::toml_old::Value { sample.content().parse().unwrap() } #[divan::bench(args=MANIFESTS)] - fn manifest(sample: &Data) -> manifest::Manifest { + fn manifest(sample: &Data<'static>) -> manifest::Manifest { ::toml_old::de::from_str(sample.content()).unwrap() } } +mod serde_json { + use toml_benchmarks::{manifest, Data, MANIFESTS}; + + #[divan::bench(args=MANIFESTS)] + fn document(bencher: divan::Bencher, sample: &Data) { + let value = toml_edit::de::from_str::(sample.content()).unwrap(); + let json = serde_json::to_string_pretty(&value).unwrap(); + bencher + .with_inputs(|| { + let sample = Data(sample.name(), &json); + sample + }) + .bench_values(|sample| { + serde_json::from_str::<::toml::Value>(sample.content()).unwrap() + }); + } + + #[divan::bench(args=MANIFESTS)] + fn manifest(bencher: divan::Bencher, sample: &Data) { + let value = toml_edit::de::from_str::(sample.content()).unwrap(); + let json = serde_json::to_string_pretty(&value).unwrap(); + bencher + .with_inputs(|| { + let sample = Data(sample.name(), &json); + sample + }) + .bench_values(|sample| { + serde_json::from_str::(sample.content()).unwrap() + }); + } +} + fn main() { divan::main(); } diff --git a/crates/benchmarks/examples/bench.rs b/crates/benchmarks/examples/bench.rs index 95c09198..62c748d8 100644 --- a/crates/benchmarks/examples/bench.rs +++ b/crates/benchmarks/examples/bench.rs @@ -28,7 +28,7 @@ fn main() -> Result<(), lexopt::Error> { struct Args { parser: Parser, - data: toml_benchmarks::Data, + data: toml_benchmarks::Data<'static>, } impl Args { diff --git a/crates/benchmarks/src/lib.rs b/crates/benchmarks/src/lib.rs index 97435d0f..8e6dff58 100644 --- a/crates/benchmarks/src/lib.rs +++ b/crates/benchmarks/src/lib.rs @@ -1,23 +1,23 @@ #[derive(Copy, Clone, Debug)] -pub struct Data(&'static str, &'static str); +pub struct Data<'s>(pub &'s str, pub &'s str); -impl Data { - pub const fn name(&self) -> &'static str { +impl<'s> Data<'s> { + pub const fn name(&self) -> &'s str { self.0 } - pub const fn content(&self) -> &'static str { + pub const fn content(&self) -> &'s str { self.1 } } -impl std::fmt::Display for Data { +impl<'s> std::fmt::Display for Data<'s> { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { self.name().fmt(f) } } -pub const MANIFESTS: &[Data] = &[Data("0-new", NEW), Data("1-medium", MEDIUM)]; +pub const MANIFESTS: &[Data<'static>] = &[Data("0-new", NEW), Data("1-medium", MEDIUM)]; const NEW: &str = r#" [package] From e291b36ee737c8fc6827c9bfc725b40b8bfd9aeb Mon Sep 17 00:00:00 2001 From: Ed Page Date: Mon, 29 Apr 2024 15:59:00 -0500 Subject: [PATCH 6/6] test(bench): Check with many features --- crates/benchmarks/src/Cargo.web-sys.toml | 1632 ++++++++++++++++++++++ crates/benchmarks/src/lib.rs | 7 +- 2 files changed, 1638 insertions(+), 1 deletion(-) create mode 100644 crates/benchmarks/src/Cargo.web-sys.toml diff --git a/crates/benchmarks/src/Cargo.web-sys.toml b/crates/benchmarks/src/Cargo.web-sys.toml new file mode 100644 index 00000000..0588f38a --- /dev/null +++ b/crates/benchmarks/src/Cargo.web-sys.toml @@ -0,0 +1,1632 @@ +[package] +authors = ["The wasm-bindgen Developers"] +description = "Bindings for all Web APIs, a procedurally generated crate from WebIDL\n" +documentation = "https://rustwasm.github.io/wasm-bindgen/api/web_sys/" +edition = "2018" +homepage = "https://rustwasm.github.io/wasm-bindgen/web-sys/index.html" +license = "MIT OR Apache-2.0" +name = "web-sys" +readme = "./README.md" +repository = "https://github.com/rustwasm/wasm-bindgen/tree/master/crates/web-sys" +resolver = "2" +rust-version = "1.57" +version = "0.3.68" + +[package.metadata.docs.rs] +all-features = true +rustdoc-args = ["--cfg=web_sys_unstable_apis"] + +[lib] +doctest = false +test = false + +[dependencies.js-sys] +version = "0.3.68" + +[dependencies.wasm-bindgen] +version = "0.2.91" + +[features] +AbortController = [] +AbortSignal = ["EventTarget"] +AddEventListenerOptions = [] +AesCbcParams = [] +AesCtrParams = [] +AesDerivedKeyParams = [] +AesGcmParams = [] +AesKeyAlgorithm = [] +AesKeyGenParams = [] +Algorithm = [] +AlignSetting = [] +AllowedBluetoothDevice = [] +AllowedUsbDevice = [] +AlphaOption = [] +AnalyserNode = ["AudioNode", "EventTarget"] +AnalyserOptions = [] +AngleInstancedArrays = [] +Animation = ["EventTarget"] +AnimationEffect = [] +AnimationEvent = ["Event"] +AnimationEventInit = [] +AnimationPlayState = [] +AnimationPlaybackEvent = ["Event"] +AnimationPlaybackEventInit = [] +AnimationPropertyDetails = [] +AnimationPropertyValueDetails = [] +AnimationTimeline = [] +AssignedNodesOptions = [] +AttestationConveyancePreference = [] +Attr = ["EventTarget", "Node"] +AttributeNameValue = [] +AudioBuffer = [] +AudioBufferOptions = [] +AudioBufferSourceNode = ["AudioNode", "AudioScheduledSourceNode", "EventTarget"] +AudioBufferSourceOptions = [] +AudioConfiguration = [] +AudioContext = ["BaseAudioContext", "EventTarget"] +AudioContextLatencyCategory = [] +AudioContextOptions = [] +AudioContextState = [] +AudioData = [] +AudioDataCopyToOptions = [] +AudioDataInit = [] +AudioDecoder = [] +AudioDecoderConfig = [] +AudioDecoderInit = [] +AudioDecoderSupport = [] +AudioDestinationNode = ["AudioNode", "EventTarget"] +AudioEncoder = [] +AudioEncoderConfig = [] +AudioEncoderInit = [] +AudioEncoderSupport = [] +AudioListener = [] +AudioNode = ["EventTarget"] +AudioNodeOptions = [] +AudioParam = [] +AudioParamMap = [] +AudioProcessingEvent = ["Event"] +AudioSampleFormat = [] +AudioScheduledSourceNode = ["AudioNode", "EventTarget"] +AudioSinkInfo = [] +AudioSinkOptions = [] +AudioSinkType = [] +AudioStreamTrack = ["EventTarget", "MediaStreamTrack"] +AudioTrack = [] +AudioTrackList = ["EventTarget"] +AudioWorklet = ["Worklet"] +AudioWorkletGlobalScope = ["WorkletGlobalScope"] +AudioWorkletNode = ["AudioNode", "EventTarget"] +AudioWorkletNodeOptions = [] +AudioWorkletProcessor = [] +AuthenticationExtensionsClientInputs = [] +AuthenticationExtensionsClientOutputs = [] +AuthenticatorAssertionResponse = ["AuthenticatorResponse"] +AuthenticatorAttachment = [] +AuthenticatorAttestationResponse = ["AuthenticatorResponse"] +AuthenticatorResponse = [] +AuthenticatorSelectionCriteria = [] +AuthenticatorTransport = [] +AutoKeyword = [] +AutocompleteInfo = [] +BarProp = [] +BaseAudioContext = ["EventTarget"] +BaseComputedKeyframe = [] +BaseKeyframe = [] +BasePropertyIndexedKeyframe = [] +BasicCardRequest = [] +BasicCardResponse = [] +BasicCardType = [] +BatteryManager = ["EventTarget"] +BeforeUnloadEvent = ["Event"] +BinaryType = [] +BiquadFilterNode = ["AudioNode", "EventTarget"] +BiquadFilterOptions = [] +BiquadFilterType = [] +Blob = [] +BlobEvent = ["Event"] +BlobEventInit = [] +BlobPropertyBag = [] +BlockParsingOptions = [] +Bluetooth = ["EventTarget"] +BluetoothAdvertisingEvent = ["Event"] +BluetoothAdvertisingEventInit = [] +BluetoothCharacteristicProperties = [] +BluetoothDataFilterInit = [] +BluetoothDevice = ["EventTarget"] +BluetoothLeScanFilterInit = [] +BluetoothManufacturerDataMap = [] +BluetoothPermissionDescriptor = [] +BluetoothPermissionResult = ["EventTarget", "PermissionStatus"] +BluetoothPermissionStorage = [] +BluetoothRemoteGattCharacteristic = ["EventTarget"] +BluetoothRemoteGattDescriptor = [] +BluetoothRemoteGattServer = [] +BluetoothRemoteGattService = ["EventTarget"] +BluetoothServiceDataMap = [] +BluetoothUuid = [] +BoxQuadOptions = [] +BroadcastChannel = ["EventTarget"] +BrowserElementDownloadOptions = [] +BrowserElementExecuteScriptOptions = [] +BrowserFeedWriter = [] +BrowserFindCaseSensitivity = [] +BrowserFindDirection = [] +ByteLengthQueuingStrategy = [] +Cache = [] +CacheBatchOperation = [] +CacheQueryOptions = [] +CacheStorage = [] +CacheStorageNamespace = [] +CanvasCaptureMediaStream = ["EventTarget", "MediaStream"] +CanvasCaptureMediaStreamTrack = ["EventTarget", "MediaStreamTrack"] +CanvasGradient = [] +CanvasPattern = [] +CanvasRenderingContext2d = [] +CanvasWindingRule = [] +CaretChangedReason = [] +CaretPosition = [] +CaretStateChangedEventInit = [] +CdataSection = ["CharacterData", "EventTarget", "Node", "Text"] +ChannelCountMode = [] +ChannelInterpretation = [] +ChannelMergerNode = ["AudioNode", "EventTarget"] +ChannelMergerOptions = [] +ChannelSplitterNode = ["AudioNode", "EventTarget"] +ChannelSplitterOptions = [] +CharacterData = ["EventTarget", "Node"] +CheckerboardReason = [] +CheckerboardReport = [] +CheckerboardReportService = [] +ChromeFilePropertyBag = [] +ChromeWorker = ["EventTarget", "Worker"] +Client = [] +ClientQueryOptions = [] +ClientRectsAndTexts = [] +ClientType = [] +Clients = [] +Clipboard = ["EventTarget"] +ClipboardEvent = ["Event"] +ClipboardEventInit = [] +ClipboardItem = [] +ClipboardItemOptions = [] +ClipboardPermissionDescriptor = [] +CloseEvent = ["Event"] +CloseEventInit = [] +CodecState = [] +CollectedClientData = [] +ColorSpaceConversion = [] +Comment = ["CharacterData", "EventTarget", "Node"] +CompositeOperation = [] +CompositionEvent = ["Event", "UiEvent"] +CompositionEventInit = [] +CompressionFormat = [] +CompressionStream = [] +ComputedEffectTiming = [] +ConnStatusDict = [] +ConnectionType = [] +ConsoleCounter = [] +ConsoleCounterError = [] +ConsoleEvent = [] +ConsoleInstance = [] +ConsoleInstanceOptions = [] +ConsoleLevel = [] +ConsoleLogLevel = [] +ConsoleProfileEvent = [] +ConsoleStackEntry = [] +ConsoleTimerError = [] +ConsoleTimerLogOrEnd = [] +ConsoleTimerStart = [] +ConstantSourceNode = ["AudioNode", "AudioScheduledSourceNode", "EventTarget"] +ConstantSourceOptions = [] +ConstrainBooleanParameters = [] +ConstrainDomStringParameters = [] +ConstrainDoubleRange = [] +ConstrainLongRange = [] +ContextAttributes2d = [] +ConvertCoordinateOptions = [] +ConvolverNode = ["AudioNode", "EventTarget"] +ConvolverOptions = [] +Coordinates = [] +CountQueuingStrategy = [] +Credential = [] +CredentialCreationOptions = [] +CredentialRequestOptions = [] +CredentialsContainer = [] +Crypto = [] +CryptoKey = [] +CryptoKeyPair = [] +CssAnimation = ["Animation", "EventTarget"] +CssBoxType = [] +CssConditionRule = ["CssGroupingRule", "CssRule"] +CssCounterStyleRule = ["CssRule"] +CssFontFaceRule = ["CssRule"] +CssFontFeatureValuesRule = ["CssRule"] +CssGroupingRule = ["CssRule"] +CssImportRule = ["CssRule"] +CssKeyframeRule = ["CssRule"] +CssKeyframesRule = ["CssRule"] +CssMediaRule = ["CssConditionRule", "CssGroupingRule", "CssRule"] +CssNamespaceRule = ["CssRule"] +CssPageRule = ["CssRule"] +CssPseudoElement = [] +CssRule = [] +CssRuleList = [] +CssStyleDeclaration = [] +CssStyleRule = ["CssRule"] +CssStyleSheet = ["StyleSheet"] +CssStyleSheetParsingMode = [] +CssSupportsRule = ["CssConditionRule", "CssGroupingRule", "CssRule"] +CssTransition = ["Animation", "EventTarget"] +CustomElementRegistry = [] +CustomEvent = ["Event"] +CustomEventInit = [] +DataTransfer = [] +DataTransferItem = [] +DataTransferItemList = [] +DateTimeValue = [] +DecoderDoctorNotification = [] +DecoderDoctorNotificationType = [] +DecompressionStream = [] +DedicatedWorkerGlobalScope = ["EventTarget", "WorkerGlobalScope"] +DelayNode = ["AudioNode", "EventTarget"] +DelayOptions = [] +DeviceAcceleration = [] +DeviceAccelerationInit = [] +DeviceLightEvent = ["Event"] +DeviceLightEventInit = [] +DeviceMotionEvent = ["Event"] +DeviceMotionEventInit = [] +DeviceOrientationEvent = ["Event"] +DeviceOrientationEventInit = [] +DeviceProximityEvent = ["Event"] +DeviceProximityEventInit = [] +DeviceRotationRate = [] +DeviceRotationRateInit = [] +DhKeyDeriveParams = [] +DirectionSetting = [] +Directory = [] +DirectoryPickerOptions = [] +DisplayMediaStreamConstraints = [] +DisplayNameOptions = [] +DisplayNameResult = [] +DistanceModelType = [] +DnsCacheDict = [] +DnsCacheEntry = [] +DnsLookupDict = [] +Document = ["EventTarget", "Node"] +DocumentFragment = ["EventTarget", "Node"] +DocumentTimeline = ["AnimationTimeline"] +DocumentTimelineOptions = [] +DocumentType = ["EventTarget", "Node"] +DomError = [] +DomException = [] +DomImplementation = [] +DomMatrix = ["DomMatrixReadOnly"] +DomMatrix2dInit = [] +DomMatrixInit = [] +DomMatrixReadOnly = [] +DomParser = [] +DomPoint = ["DomPointReadOnly"] +DomPointInit = [] +DomPointReadOnly = [] +DomQuad = [] +DomQuadInit = [] +DomQuadJson = [] +DomRect = ["DomRectReadOnly"] +DomRectInit = [] +DomRectList = [] +DomRectReadOnly = [] +DomRequest = ["EventTarget"] +DomRequestReadyState = [] +DomStringList = [] +DomStringMap = [] +DomTokenList = [] +DomWindowResizeEventDetail = [] +DragEvent = ["Event", "MouseEvent", "UiEvent"] +DragEventInit = [] +DynamicsCompressorNode = ["AudioNode", "EventTarget"] +DynamicsCompressorOptions = [] +EcKeyAlgorithm = [] +EcKeyGenParams = [] +EcKeyImportParams = [] +EcdhKeyDeriveParams = [] +EcdsaParams = [] +EffectTiming = [] +Element = ["EventTarget", "Node"] +ElementCreationOptions = [] +ElementDefinitionOptions = [] +EncodedAudioChunk = [] +EncodedAudioChunkInit = [] +EncodedAudioChunkMetadata = [] +EncodedAudioChunkType = [] +EncodedVideoChunk = [] +EncodedVideoChunkInit = [] +EncodedVideoChunkMetadata = [] +EncodedVideoChunkType = [] +EndingTypes = [] +ErrorCallback = [] +ErrorEvent = ["Event"] +ErrorEventInit = [] +Event = [] +EventInit = [] +EventListener = [] +EventListenerOptions = [] +EventModifierInit = [] +EventSource = ["EventTarget"] +EventSourceInit = [] +EventTarget = [] +Exception = [] +ExtBlendMinmax = [] +ExtColorBufferFloat = [] +ExtColorBufferHalfFloat = [] +ExtDisjointTimerQuery = [] +ExtFragDepth = [] +ExtSRgb = [] +ExtShaderTextureLod = [] +ExtTextureFilterAnisotropic = [] +ExtTextureNorm16 = [] +ExtendableEvent = ["Event"] +ExtendableEventInit = [] +ExtendableMessageEvent = ["Event", "ExtendableEvent"] +ExtendableMessageEventInit = [] +External = [] +FakePluginMimeEntry = [] +FakePluginTagInit = [] +FetchEvent = ["Event", "ExtendableEvent"] +FetchEventInit = [] +FetchObserver = ["EventTarget"] +FetchReadableStreamReadDataArray = [] +FetchReadableStreamReadDataDone = [] +FetchState = [] +File = ["Blob"] +FileCallback = [] +FileList = [] +FilePickerAcceptType = [] +FilePickerOptions = [] +FilePropertyBag = [] +FileReader = ["EventTarget"] +FileReaderSync = [] +FileSystem = [] +FileSystemCreateWritableOptions = [] +FileSystemDirectoryEntry = ["FileSystemEntry"] +FileSystemDirectoryHandle = ["FileSystemHandle"] +FileSystemDirectoryReader = [] +FileSystemEntriesCallback = [] +FileSystemEntry = [] +FileSystemEntryCallback = [] +FileSystemFileEntry = ["FileSystemEntry"] +FileSystemFileHandle = ["FileSystemHandle"] +FileSystemFlags = [] +FileSystemGetDirectoryOptions = [] +FileSystemGetFileOptions = [] +FileSystemHandle = [] +FileSystemHandleKind = [] +FileSystemHandlePermissionDescriptor = [] +FileSystemPermissionDescriptor = [] +FileSystemPermissionMode = [] +FileSystemReadWriteOptions = [] +FileSystemRemoveOptions = [] +FileSystemSyncAccessHandle = [] +FileSystemWritableFileStream = ["WritableStream"] +FillMode = [] +FlashClassification = [] +FlowControlType = [] +FocusEvent = ["Event", "UiEvent"] +FocusEventInit = [] +FontData = [] +FontFace = [] +FontFaceDescriptors = [] +FontFaceLoadStatus = [] +FontFaceSet = ["EventTarget"] +FontFaceSetIterator = [] +FontFaceSetIteratorResult = [] +FontFaceSetLoadEvent = ["Event"] +FontFaceSetLoadEventInit = [] +FontFaceSetLoadStatus = [] +FormData = [] +FrameType = [] +FuzzingFunctions = [] +GainNode = ["AudioNode", "EventTarget"] +GainOptions = [] +Gamepad = [] +GamepadAxisMoveEvent = ["Event", "GamepadEvent"] +GamepadAxisMoveEventInit = [] +GamepadButton = [] +GamepadButtonEvent = ["Event", "GamepadEvent"] +GamepadButtonEventInit = [] +GamepadEvent = ["Event"] +GamepadEventInit = [] +GamepadHand = [] +GamepadHapticActuator = [] +GamepadHapticActuatorType = [] +GamepadMappingType = [] +GamepadPose = [] +GamepadServiceTest = [] +Geolocation = [] +GetAnimationsOptions = [] +GetRootNodeOptions = [] +GetUserMediaRequest = [] +Gpu = [] +GpuAdapter = [] +GpuAdapterInfo = [] +GpuAddressMode = [] +GpuAutoLayoutMode = [] +GpuBindGroup = [] +GpuBindGroupDescriptor = [] +GpuBindGroupEntry = [] +GpuBindGroupLayout = [] +GpuBindGroupLayoutDescriptor = [] +GpuBindGroupLayoutEntry = [] +GpuBlendComponent = [] +GpuBlendFactor = [] +GpuBlendOperation = [] +GpuBlendState = [] +GpuBuffer = [] +GpuBufferBinding = [] +GpuBufferBindingLayout = [] +GpuBufferBindingType = [] +GpuBufferDescriptor = [] +GpuBufferMapState = [] +GpuCanvasAlphaMode = [] +GpuCanvasConfiguration = [] +GpuCanvasContext = [] +GpuColorDict = [] +GpuColorTargetState = [] +GpuCommandBuffer = [] +GpuCommandBufferDescriptor = [] +GpuCommandEncoder = [] +GpuCommandEncoderDescriptor = [] +GpuCompareFunction = [] +GpuCompilationInfo = [] +GpuCompilationMessage = [] +GpuCompilationMessageType = [] +GpuComputePassDescriptor = [] +GpuComputePassEncoder = [] +GpuComputePassTimestampWrites = [] +GpuComputePipeline = [] +GpuComputePipelineDescriptor = [] +GpuCullMode = [] +GpuDepthStencilState = [] +GpuDevice = ["EventTarget"] +GpuDeviceDescriptor = [] +GpuDeviceLostInfo = [] +GpuDeviceLostReason = [] +GpuError = [] +GpuErrorFilter = [] +GpuExtent3dDict = [] +GpuExternalTexture = [] +GpuExternalTextureBindingLayout = [] +GpuExternalTextureDescriptor = [] +GpuFeatureName = [] +GpuFilterMode = [] +GpuFragmentState = [] +GpuFrontFace = [] +GpuImageCopyBuffer = [] +GpuImageCopyExternalImage = [] +GpuImageCopyTexture = [] +GpuImageCopyTextureTagged = [] +GpuImageDataLayout = [] +GpuIndexFormat = [] +GpuInternalError = ["GpuError"] +GpuLoadOp = [] +GpuMipmapFilterMode = [] +GpuMultisampleState = [] +GpuObjectDescriptorBase = [] +GpuOrigin2dDict = [] +GpuOrigin3dDict = [] +GpuOutOfMemoryError = ["GpuError"] +GpuPipelineDescriptorBase = [] +GpuPipelineError = ["DomException"] +GpuPipelineErrorInit = [] +GpuPipelineErrorReason = [] +GpuPipelineLayout = [] +GpuPipelineLayoutDescriptor = [] +GpuPowerPreference = [] +GpuPrimitiveState = [] +GpuPrimitiveTopology = [] +GpuProgrammableStage = [] +GpuQuerySet = [] +GpuQuerySetDescriptor = [] +GpuQueryType = [] +GpuQueue = [] +GpuQueueDescriptor = [] +GpuRenderBundle = [] +GpuRenderBundleDescriptor = [] +GpuRenderBundleEncoder = [] +GpuRenderBundleEncoderDescriptor = [] +GpuRenderPassColorAttachment = [] +GpuRenderPassDepthStencilAttachment = [] +GpuRenderPassDescriptor = [] +GpuRenderPassEncoder = [] +GpuRenderPassLayout = [] +GpuRenderPassTimestampWrites = [] +GpuRenderPipeline = [] +GpuRenderPipelineDescriptor = [] +GpuRequestAdapterOptions = [] +GpuSampler = [] +GpuSamplerBindingLayout = [] +GpuSamplerBindingType = [] +GpuSamplerDescriptor = [] +GpuShaderModule = [] +GpuShaderModuleCompilationHint = [] +GpuShaderModuleDescriptor = [] +GpuStencilFaceState = [] +GpuStencilOperation = [] +GpuStorageTextureAccess = [] +GpuStorageTextureBindingLayout = [] +GpuStoreOp = [] +GpuSupportedFeatures = [] +GpuSupportedLimits = [] +GpuTexture = [] +GpuTextureAspect = [] +GpuTextureBindingLayout = [] +GpuTextureDescriptor = [] +GpuTextureDimension = [] +GpuTextureFormat = [] +GpuTextureSampleType = [] +GpuTextureView = [] +GpuTextureViewDescriptor = [] +GpuTextureViewDimension = [] +GpuUncapturedErrorEvent = ["Event"] +GpuUncapturedErrorEventInit = [] +GpuValidationError = ["GpuError"] +GpuVertexAttribute = [] +GpuVertexBufferLayout = [] +GpuVertexFormat = [] +GpuVertexState = [] +GpuVertexStepMode = [] +GroupedHistoryEventInit = [] +HalfOpenInfoDict = [] +HardwareAcceleration = [] +HashChangeEvent = ["Event"] +HashChangeEventInit = [] +Headers = [] +HeadersGuardEnum = [] +Hid = ["EventTarget"] +HidCollectionInfo = [] +HidConnectionEvent = ["Event"] +HidConnectionEventInit = [] +HidDevice = ["EventTarget"] +HidDeviceFilter = [] +HidDeviceRequestOptions = [] +HidInputReportEvent = ["Event"] +HidInputReportEventInit = [] +HidReportInfo = [] +HidReportItem = [] +HidUnitSystem = [] +HiddenPluginEventInit = [] +History = [] +HitRegionOptions = [] +HkdfParams = [] +HmacDerivedKeyParams = [] +HmacImportParams = [] +HmacKeyAlgorithm = [] +HmacKeyGenParams = [] +HtmlAllCollection = [] +HtmlAnchorElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlAreaElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlAudioElement = ["Element", "EventTarget", "HtmlElement", "HtmlMediaElement", "Node"] +HtmlBaseElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlBodyElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlBrElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlButtonElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlCanvasElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlCollection = [] +HtmlDListElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlDataElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlDataListElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlDetailsElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlDialogElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlDirectoryElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlDivElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlDocument = ["Document", "EventTarget", "Node"] +HtmlElement = ["Element", "EventTarget", "Node"] +HtmlEmbedElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlFieldSetElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlFontElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlFormControlsCollection = ["HtmlCollection"] +HtmlFormElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlFrameElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlFrameSetElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlHeadElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlHeadingElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlHrElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlHtmlElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlIFrameElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlImageElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlInputElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlLabelElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlLegendElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlLiElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlLinkElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlMapElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlMediaElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlMenuElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlMenuItemElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlMetaElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlMeterElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlModElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlOListElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlObjectElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlOptGroupElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlOptionElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlOptionsCollection = ["HtmlCollection"] +HtmlOutputElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlParagraphElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlParamElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlPictureElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlPreElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlProgressElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlQuoteElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlScriptElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlSelectElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlSlotElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlSourceElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlSpanElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlStyleElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlTableCaptionElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlTableCellElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlTableColElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlTableElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlTableRowElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlTableSectionElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlTemplateElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlTextAreaElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlTimeElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlTitleElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlTrackElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlUListElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlUnknownElement = ["Element", "EventTarget", "HtmlElement", "Node"] +HtmlVideoElement = ["Element", "EventTarget", "HtmlElement", "HtmlMediaElement", "Node"] +HttpConnDict = [] +HttpConnInfo = [] +HttpConnectionElement = [] +IdbCursor = [] +IdbCursorDirection = [] +IdbCursorWithValue = ["IdbCursor"] +IdbDatabase = ["EventTarget"] +IdbFactory = [] +IdbFileHandle = ["EventTarget"] +IdbFileMetadataParameters = [] +IdbFileRequest = ["DomRequest", "EventTarget"] +IdbIndex = [] +IdbIndexParameters = [] +IdbKeyRange = [] +IdbLocaleAwareKeyRange = ["IdbKeyRange"] +IdbMutableFile = ["EventTarget"] +IdbObjectStore = [] +IdbObjectStoreParameters = [] +IdbOpenDbOptions = [] +IdbOpenDbRequest = ["EventTarget", "IdbRequest"] +IdbRequest = ["EventTarget"] +IdbRequestReadyState = [] +IdbTransaction = ["EventTarget"] +IdbTransactionMode = [] +IdbVersionChangeEvent = ["Event"] +IdbVersionChangeEventInit = [] +IdleDeadline = [] +IdleRequestOptions = [] +IirFilterNode = ["AudioNode", "EventTarget"] +IirFilterOptions = [] +ImageBitmap = [] +ImageBitmapOptions = [] +ImageBitmapRenderingContext = [] +ImageCapture = [] +ImageCaptureError = [] +ImageCaptureErrorEvent = ["Event"] +ImageCaptureErrorEventInit = [] +ImageData = [] +ImageDecodeOptions = [] +ImageDecodeResult = [] +ImageDecoder = [] +ImageDecoderInit = [] +ImageEncodeOptions = [] +ImageOrientation = [] +ImageTrack = ["EventTarget"] +ImageTrackList = [] +InputEvent = ["Event", "UiEvent"] +InputEventInit = [] +IntersectionObserver = [] +IntersectionObserverEntry = [] +IntersectionObserverEntryInit = [] +IntersectionObserverInit = [] +IntlUtils = [] +IsInputPendingOptions = [] +IterableKeyAndValueResult = [] +IterableKeyOrValueResult = [] +IterationCompositeOperation = [] +JsonWebKey = [] +KeyAlgorithm = [] +KeyEvent = [] +KeyIdsInitData = [] +KeyboardEvent = ["Event", "UiEvent"] +KeyboardEventInit = [] +KeyframeAnimationOptions = [] +KeyframeEffect = ["AnimationEffect"] +KeyframeEffectOptions = [] +L10nElement = [] +L10nValue = [] +LatencyMode = [] +LifecycleCallbacks = [] +LineAlignSetting = [] +ListBoxObject = [] +LocalMediaStream = ["EventTarget", "MediaStream"] +LocaleInfo = [] +Location = [] +Lock = [] +LockInfo = [] +LockManager = [] +LockManagerSnapshot = [] +LockMode = [] +LockOptions = [] +MediaCapabilities = [] +MediaCapabilitiesInfo = [] +MediaConfiguration = [] +MediaDecodingConfiguration = [] +MediaDecodingType = [] +MediaDeviceInfo = [] +MediaDeviceKind = [] +MediaDevices = ["EventTarget"] +MediaElementAudioSourceNode = ["AudioNode", "EventTarget"] +MediaElementAudioSourceOptions = [] +MediaEncodingConfiguration = [] +MediaEncodingType = [] +MediaEncryptedEvent = ["Event"] +MediaError = [] +MediaImage = [] +MediaKeyError = ["Event"] +MediaKeyMessageEvent = ["Event"] +MediaKeyMessageEventInit = [] +MediaKeyMessageType = [] +MediaKeyNeededEventInit = [] +MediaKeySession = ["EventTarget"] +MediaKeySessionType = [] +MediaKeyStatus = [] +MediaKeyStatusMap = [] +MediaKeySystemAccess = [] +MediaKeySystemConfiguration = [] +MediaKeySystemMediaCapability = [] +MediaKeySystemStatus = [] +MediaKeys = [] +MediaKeysPolicy = [] +MediaKeysRequirement = [] +MediaList = [] +MediaMetadata = [] +MediaMetadataInit = [] +MediaPositionState = [] +MediaQueryList = ["EventTarget"] +MediaQueryListEvent = ["Event"] +MediaQueryListEventInit = [] +MediaRecorder = ["EventTarget"] +MediaRecorderErrorEvent = ["Event"] +MediaRecorderErrorEventInit = [] +MediaRecorderOptions = [] +MediaSession = [] +MediaSessionAction = [] +MediaSessionActionDetails = [] +MediaSessionPlaybackState = [] +MediaSource = ["EventTarget"] +MediaSourceEndOfStreamError = [] +MediaSourceEnum = [] +MediaSourceReadyState = [] +MediaStream = ["EventTarget"] +MediaStreamAudioDestinationNode = ["AudioNode", "EventTarget"] +MediaStreamAudioSourceNode = ["AudioNode", "EventTarget"] +MediaStreamAudioSourceOptions = [] +MediaStreamConstraints = [] +MediaStreamError = [] +MediaStreamEvent = ["Event"] +MediaStreamEventInit = [] +MediaStreamTrack = ["EventTarget"] +MediaStreamTrackEvent = ["Event"] +MediaStreamTrackEventInit = [] +MediaStreamTrackGenerator = ["EventTarget", "MediaStreamTrack"] +MediaStreamTrackGeneratorInit = [] +MediaStreamTrackProcessor = [] +MediaStreamTrackProcessorInit = [] +MediaStreamTrackState = [] +MediaTrackConstraintSet = [] +MediaTrackConstraints = [] +MediaTrackSettings = [] +MediaTrackSupportedConstraints = [] +MemoryAttribution = [] +MemoryAttributionContainer = [] +MemoryBreakdownEntry = [] +MemoryMeasurement = [] +MessageChannel = [] +MessageEvent = ["Event"] +MessageEventInit = [] +MessagePort = ["EventTarget"] +MidiAccess = ["EventTarget"] +MidiConnectionEvent = ["Event"] +MidiConnectionEventInit = [] +MidiInput = ["EventTarget", "MidiPort"] +MidiInputMap = [] +MidiMessageEvent = ["Event"] +MidiMessageEventInit = [] +MidiOptions = [] +MidiOutput = ["EventTarget", "MidiPort"] +MidiOutputMap = [] +MidiPort = ["EventTarget"] +MidiPortConnectionState = [] +MidiPortDeviceState = [] +MidiPortType = [] +MimeType = [] +MimeTypeArray = [] +MouseEvent = ["Event", "UiEvent"] +MouseEventInit = [] +MouseScrollEvent = ["Event", "MouseEvent", "UiEvent"] +MozDebug = [] +MutationEvent = ["Event"] +MutationObserver = [] +MutationObserverInit = [] +MutationObservingInfo = [] +MutationRecord = [] +NamedNodeMap = [] +NativeOsFileReadOptions = [] +NativeOsFileWriteAtomicOptions = [] +NavigationType = [] +Navigator = [] +NavigatorAutomationInformation = [] +NetworkCommandOptions = [] +NetworkInformation = ["EventTarget"] +NetworkResultOptions = [] +Node = ["EventTarget"] +NodeFilter = [] +NodeIterator = [] +NodeList = [] +Notification = ["EventTarget"] +NotificationAction = [] +NotificationDirection = [] +NotificationEvent = ["Event", "ExtendableEvent"] +NotificationEventInit = [] +NotificationOptions = [] +NotificationPermission = [] +ObserverCallback = [] +OesElementIndexUint = [] +OesStandardDerivatives = [] +OesTextureFloat = [] +OesTextureFloatLinear = [] +OesTextureHalfFloat = [] +OesTextureHalfFloatLinear = [] +OesVertexArrayObject = [] +OfflineAudioCompletionEvent = ["Event"] +OfflineAudioCompletionEventInit = [] +OfflineAudioContext = ["BaseAudioContext", "EventTarget"] +OfflineAudioContextOptions = [] +OfflineResourceList = ["EventTarget"] +OffscreenCanvas = ["EventTarget"] +OffscreenCanvasRenderingContext2d = [] +OpenFilePickerOptions = [] +OpenWindowEventDetail = [] +OptionalEffectTiming = [] +OrientationLockType = [] +OrientationType = [] +OscillatorNode = ["AudioNode", "AudioScheduledSourceNode", "EventTarget"] +OscillatorOptions = [] +OscillatorType = [] +OverSampleType = [] +OvrMultiview2 = [] +PageTransitionEvent = ["Event"] +PageTransitionEventInit = [] +PaintRequest = [] +PaintRequestList = [] +PaintWorkletGlobalScope = ["WorkletGlobalScope"] +PannerNode = ["AudioNode", "EventTarget"] +PannerOptions = [] +PanningModelType = [] +ParityType = [] +Path2d = [] +PaymentAddress = [] +PaymentComplete = [] +PaymentMethodChangeEvent = ["Event", "PaymentRequestUpdateEvent"] +PaymentMethodChangeEventInit = [] +PaymentRequestUpdateEvent = ["Event"] +PaymentRequestUpdateEventInit = [] +PaymentResponse = [] +Pbkdf2Params = [] +PcImplIceConnectionState = [] +PcImplIceGatheringState = [] +PcImplSignalingState = [] +PcObserverStateType = [] +Performance = ["EventTarget"] +PerformanceEntry = [] +PerformanceEntryEventInit = [] +PerformanceEntryFilterOptions = [] +PerformanceMark = ["PerformanceEntry"] +PerformanceMeasure = ["PerformanceEntry"] +PerformanceNavigation = [] +PerformanceNavigationTiming = ["PerformanceEntry", "PerformanceResourceTiming"] +PerformanceObserver = [] +PerformanceObserverEntryList = [] +PerformanceObserverInit = [] +PerformanceResourceTiming = ["PerformanceEntry"] +PerformanceServerTiming = [] +PerformanceTiming = [] +PeriodicWave = [] +PeriodicWaveConstraints = [] +PeriodicWaveOptions = [] +PermissionDescriptor = [] +PermissionName = [] +PermissionState = [] +PermissionStatus = ["EventTarget"] +Permissions = [] +PlaneLayout = [] +PlaybackDirection = [] +Plugin = [] +PluginArray = [] +PluginCrashedEventInit = [] +PointerEvent = ["Event", "MouseEvent", "UiEvent"] +PointerEventInit = [] +PopStateEvent = ["Event"] +PopStateEventInit = [] +PopupBlockedEvent = ["Event"] +PopupBlockedEventInit = [] +Position = [] +PositionAlignSetting = [] +PositionError = [] +PositionOptions = [] +PremultiplyAlpha = [] +Presentation = [] +PresentationAvailability = ["EventTarget"] +PresentationConnection = ["EventTarget"] +PresentationConnectionAvailableEvent = ["Event"] +PresentationConnectionAvailableEventInit = [] +PresentationConnectionBinaryType = [] +PresentationConnectionCloseEvent = ["Event"] +PresentationConnectionCloseEventInit = [] +PresentationConnectionClosedReason = [] +PresentationConnectionList = ["EventTarget"] +PresentationConnectionState = [] +PresentationReceiver = [] +PresentationRequest = ["EventTarget"] +PresentationStyle = [] +ProcessingInstruction = ["CharacterData", "EventTarget", "Node"] +ProfileTimelineLayerRect = [] +ProfileTimelineMarker = [] +ProfileTimelineMessagePortOperationType = [] +ProfileTimelineStackFrame = [] +ProfileTimelineWorkerOperationType = [] +ProgressEvent = ["Event"] +ProgressEventInit = [] +PromiseNativeHandler = [] +PromiseRejectionEvent = ["Event"] +PromiseRejectionEventInit = [] +PublicKeyCredential = ["Credential"] +PublicKeyCredentialCreationOptions = [] +PublicKeyCredentialDescriptor = [] +PublicKeyCredentialEntity = [] +PublicKeyCredentialParameters = [] +PublicKeyCredentialRequestOptions = [] +PublicKeyCredentialRpEntity = [] +PublicKeyCredentialType = [] +PublicKeyCredentialUserEntity = [] +PushEncryptionKeyName = [] +PushEvent = ["Event", "ExtendableEvent"] +PushEventInit = [] +PushManager = [] +PushMessageData = [] +PushPermissionState = [] +PushSubscription = [] +PushSubscriptionInit = [] +PushSubscriptionJson = [] +PushSubscriptionKeys = [] +PushSubscriptionOptions = [] +PushSubscriptionOptionsInit = [] +QueryOptions = [] +QueuingStrategy = [] +QueuingStrategyInit = [] +RadioNodeList = ["NodeList"] +Range = [] +RcwnPerfStats = [] +RcwnStatus = [] +ReadableByteStreamController = [] +ReadableStream = [] +ReadableStreamByobReader = [] +ReadableStreamByobRequest = [] +ReadableStreamDefaultController = [] +ReadableStreamDefaultReader = [] +ReadableStreamGetReaderOptions = [] +ReadableStreamIteratorOptions = [] +ReadableStreamReadResult = [] +ReadableStreamReaderMode = [] +ReadableStreamType = [] +ReadableWritablePair = [] +RecordingState = [] +ReferrerPolicy = [] +RegisterRequest = [] +RegisterResponse = [] +RegisteredKey = [] +RegistrationOptions = [] +Request = [] +RequestCache = [] +RequestCredentials = [] +RequestDestination = [] +RequestDeviceOptions = [] +RequestInit = [] +RequestMediaKeySystemAccessNotification = [] +RequestMode = [] +RequestRedirect = [] +ResizeObserver = [] +ResizeObserverBoxOptions = [] +ResizeObserverEntry = [] +ResizeObserverOptions = [] +ResizeObserverSize = [] +ResizeQuality = [] +Response = [] +ResponseInit = [] +ResponseType = [] +RsaHashedImportParams = [] +RsaOaepParams = [] +RsaOtherPrimesInfo = [] +RsaPssParams = [] +RtcAnswerOptions = [] +RtcBundlePolicy = [] +RtcCertificate = [] +RtcCertificateExpiration = [] +RtcCodecStats = [] +RtcConfiguration = [] +RtcDataChannel = ["EventTarget"] +RtcDataChannelEvent = ["Event"] +RtcDataChannelEventInit = [] +RtcDataChannelInit = [] +RtcDataChannelState = [] +RtcDataChannelType = [] +RtcDegradationPreference = [] +RtcFecParameters = [] +RtcIceCandidate = [] +RtcIceCandidateInit = [] +RtcIceCandidatePairStats = [] +RtcIceCandidateStats = [] +RtcIceComponentStats = [] +RtcIceConnectionState = [] +RtcIceCredentialType = [] +RtcIceGatheringState = [] +RtcIceServer = [] +RtcIceTransportPolicy = [] +RtcIdentityAssertion = [] +RtcIdentityAssertionResult = [] +RtcIdentityProvider = [] +RtcIdentityProviderDetails = [] +RtcIdentityProviderOptions = [] +RtcIdentityProviderRegistrar = [] +RtcIdentityValidationResult = [] +RtcInboundRtpStreamStats = [] +RtcMediaStreamStats = [] +RtcMediaStreamTrackStats = [] +RtcOfferAnswerOptions = [] +RtcOfferOptions = [] +RtcOutboundRtpStreamStats = [] +RtcPeerConnection = ["EventTarget"] +RtcPeerConnectionIceEvent = ["Event"] +RtcPeerConnectionIceEventInit = [] +RtcPeerConnectionState = [] +RtcPriorityType = [] +RtcRtcpParameters = [] +RtcRtpCapabilities = [] +RtcRtpCodecCapability = [] +RtcRtpCodecParameters = [] +RtcRtpContributingSource = [] +RtcRtpEncodingParameters = [] +RtcRtpHeaderExtensionCapability = [] +RtcRtpHeaderExtensionParameters = [] +RtcRtpParameters = [] +RtcRtpReceiver = [] +RtcRtpSender = [] +RtcRtpSourceEntry = [] +RtcRtpSourceEntryType = [] +RtcRtpSynchronizationSource = [] +RtcRtpTransceiver = [] +RtcRtpTransceiverDirection = [] +RtcRtpTransceiverInit = [] +RtcRtxParameters = [] +RtcSdpType = [] +RtcSessionDescription = [] +RtcSessionDescriptionInit = [] +RtcSignalingState = [] +RtcStats = [] +RtcStatsIceCandidatePairState = [] +RtcStatsIceCandidateType = [] +RtcStatsReport = [] +RtcStatsReportInternal = [] +RtcStatsType = [] +RtcTrackEvent = ["Event"] +RtcTrackEventInit = [] +RtcTransportStats = [] +RtcdtmfSender = ["EventTarget"] +RtcdtmfToneChangeEvent = ["Event"] +RtcdtmfToneChangeEventInit = [] +RtcrtpContributingSourceStats = [] +RtcrtpStreamStats = [] +SaveFilePickerOptions = [] +Scheduler = [] +SchedulerPostTaskOptions = [] +Scheduling = [] +Screen = ["EventTarget"] +ScreenColorGamut = [] +ScreenLuminance = [] +ScreenOrientation = ["EventTarget"] +ScriptProcessorNode = ["AudioNode", "EventTarget"] +ScrollAreaEvent = ["Event", "UiEvent"] +ScrollBehavior = [] +ScrollBoxObject = [] +ScrollIntoViewOptions = [] +ScrollLogicalPosition = [] +ScrollOptions = [] +ScrollRestoration = [] +ScrollSetting = [] +ScrollState = [] +ScrollToOptions = [] +ScrollViewChangeEventInit = [] +SecurityPolicyViolationEvent = ["Event"] +SecurityPolicyViolationEventDisposition = [] +SecurityPolicyViolationEventInit = [] +Selection = [] +SelectionMode = [] +Serial = ["EventTarget"] +SerialInputSignals = [] +SerialOptions = [] +SerialOutputSignals = [] +SerialPort = ["EventTarget"] +SerialPortFilter = [] +SerialPortInfo = [] +SerialPortRequestOptions = [] +ServerSocketOptions = [] +ServiceWorker = ["EventTarget"] +ServiceWorkerContainer = ["EventTarget"] +ServiceWorkerGlobalScope = ["EventTarget", "WorkerGlobalScope"] +ServiceWorkerRegistration = ["EventTarget"] +ServiceWorkerState = [] +ServiceWorkerUpdateViaCache = [] +ShadowRoot = ["DocumentFragment", "EventTarget", "Node"] +ShadowRootInit = [] +ShadowRootMode = [] +ShareData = [] +SharedWorker = ["EventTarget"] +SharedWorkerGlobalScope = ["EventTarget", "WorkerGlobalScope"] +SignResponse = [] +SocketElement = [] +SocketOptions = [] +SocketReadyState = [] +SocketsDict = [] +SourceBuffer = ["EventTarget"] +SourceBufferAppendMode = [] +SourceBufferList = ["EventTarget"] +SpeechGrammar = [] +SpeechGrammarList = [] +SpeechRecognition = ["EventTarget"] +SpeechRecognitionAlternative = [] +SpeechRecognitionError = ["Event"] +SpeechRecognitionErrorCode = [] +SpeechRecognitionErrorInit = [] +SpeechRecognitionEvent = ["Event"] +SpeechRecognitionEventInit = [] +SpeechRecognitionResult = [] +SpeechRecognitionResultList = [] +SpeechSynthesis = ["EventTarget"] +SpeechSynthesisErrorCode = [] +SpeechSynthesisErrorEvent = ["Event", "SpeechSynthesisEvent"] +SpeechSynthesisErrorEventInit = [] +SpeechSynthesisEvent = ["Event"] +SpeechSynthesisEventInit = [] +SpeechSynthesisUtterance = ["EventTarget"] +SpeechSynthesisVoice = [] +StereoPannerNode = ["AudioNode", "EventTarget"] +StereoPannerOptions = [] +Storage = [] +StorageEstimate = [] +StorageEvent = ["Event"] +StorageEventInit = [] +StorageManager = [] +StorageType = [] +StreamPipeOptions = [] +StyleRuleChangeEventInit = [] +StyleSheet = [] +StyleSheetApplicableStateChangeEventInit = [] +StyleSheetChangeEventInit = [] +StyleSheetList = [] +SubmitEvent = ["Event"] +SubmitEventInit = [] +SubtleCrypto = [] +SupportedType = [] +SvcOutputMetadata = [] +SvgAngle = [] +SvgAnimateElement = ["Element", "EventTarget", "Node", "SvgAnimationElement", "SvgElement"] +SvgAnimateMotionElement = ["Element", "EventTarget", "Node", "SvgAnimationElement", "SvgElement"] +SvgAnimateTransformElement = ["Element", "EventTarget", "Node", "SvgAnimationElement", "SvgElement"] +SvgAnimatedAngle = [] +SvgAnimatedBoolean = [] +SvgAnimatedEnumeration = [] +SvgAnimatedInteger = [] +SvgAnimatedLength = [] +SvgAnimatedLengthList = [] +SvgAnimatedNumber = [] +SvgAnimatedNumberList = [] +SvgAnimatedPreserveAspectRatio = [] +SvgAnimatedRect = [] +SvgAnimatedString = [] +SvgAnimatedTransformList = [] +SvgAnimationElement = ["Element", "EventTarget", "Node", "SvgElement"] +SvgBoundingBoxOptions = [] +SvgCircleElement = ["Element", "EventTarget", "Node", "SvgElement", "SvgGeometryElement", "SvgGraphicsElement"] +SvgClipPathElement = ["Element", "EventTarget", "Node", "SvgElement"] +SvgComponentTransferFunctionElement = ["Element", "EventTarget", "Node", "SvgElement"] +SvgDefsElement = ["Element", "EventTarget", "Node", "SvgElement", "SvgGraphicsElement"] +SvgDescElement = ["Element", "EventTarget", "Node", "SvgElement"] +SvgElement = ["Element", "EventTarget", "Node"] +SvgEllipseElement = ["Element", "EventTarget", "Node", "SvgElement", "SvgGeometryElement", "SvgGraphicsElement"] +SvgFilterElement = ["Element", "EventTarget", "Node", "SvgElement"] +SvgForeignObjectElement = ["Element", "EventTarget", "Node", "SvgElement", "SvgGraphicsElement"] +SvgGeometryElement = ["Element", "EventTarget", "Node", "SvgElement", "SvgGraphicsElement"] +SvgGradientElement = ["Element", "EventTarget", "Node", "SvgElement"] +SvgGraphicsElement = ["Element", "EventTarget", "Node", "SvgElement"] +SvgImageElement = ["Element", "EventTarget", "Node", "SvgElement", "SvgGraphicsElement"] +SvgLength = [] +SvgLengthList = [] +SvgLineElement = ["Element", "EventTarget", "Node", "SvgElement", "SvgGeometryElement", "SvgGraphicsElement"] +SvgLinearGradientElement = ["Element", "EventTarget", "Node", "SvgElement", "SvgGradientElement"] +SvgMarkerElement = ["Element", "EventTarget", "Node", "SvgElement"] +SvgMaskElement = ["Element", "EventTarget", "Node", "SvgElement"] +SvgMatrix = [] +SvgMetadataElement = ["Element", "EventTarget", "Node", "SvgElement"] +SvgNumber = [] +SvgNumberList = [] +SvgPathElement = ["Element", "EventTarget", "Node", "SvgElement", "SvgGeometryElement", "SvgGraphicsElement"] +SvgPathSeg = [] +SvgPathSegArcAbs = ["SvgPathSeg"] +SvgPathSegArcRel = ["SvgPathSeg"] +SvgPathSegClosePath = ["SvgPathSeg"] +SvgPathSegCurvetoCubicAbs = ["SvgPathSeg"] +SvgPathSegCurvetoCubicRel = ["SvgPathSeg"] +SvgPathSegCurvetoCubicSmoothAbs = ["SvgPathSeg"] +SvgPathSegCurvetoCubicSmoothRel = ["SvgPathSeg"] +SvgPathSegCurvetoQuadraticAbs = ["SvgPathSeg"] +SvgPathSegCurvetoQuadraticRel = ["SvgPathSeg"] +SvgPathSegCurvetoQuadraticSmoothAbs = ["SvgPathSeg"] +SvgPathSegCurvetoQuadraticSmoothRel = ["SvgPathSeg"] +SvgPathSegLinetoAbs = ["SvgPathSeg"] +SvgPathSegLinetoHorizontalAbs = ["SvgPathSeg"] +SvgPathSegLinetoHorizontalRel = ["SvgPathSeg"] +SvgPathSegLinetoRel = ["SvgPathSeg"] +SvgPathSegLinetoVerticalAbs = ["SvgPathSeg"] +SvgPathSegLinetoVerticalRel = ["SvgPathSeg"] +SvgPathSegList = [] +SvgPathSegMovetoAbs = ["SvgPathSeg"] +SvgPathSegMovetoRel = ["SvgPathSeg"] +SvgPatternElement = ["Element", "EventTarget", "Node", "SvgElement"] +SvgPoint = [] +SvgPointList = [] +SvgPolygonElement = ["Element", "EventTarget", "Node", "SvgElement", "SvgGeometryElement", "SvgGraphicsElement"] +SvgPolylineElement = ["Element", "EventTarget", "Node", "SvgElement", "SvgGeometryElement", "SvgGraphicsElement"] +SvgPreserveAspectRatio = [] +SvgRadialGradientElement = ["Element", "EventTarget", "Node", "SvgElement", "SvgGradientElement"] +SvgRect = [] +SvgRectElement = ["Element", "EventTarget", "Node", "SvgElement", "SvgGeometryElement", "SvgGraphicsElement"] +SvgScriptElement = ["Element", "EventTarget", "Node", "SvgElement"] +SvgSetElement = ["Element", "EventTarget", "Node", "SvgAnimationElement", "SvgElement"] +SvgStopElement = ["Element", "EventTarget", "Node", "SvgElement"] +SvgStringList = [] +SvgStyleElement = ["Element", "EventTarget", "Node", "SvgElement"] +SvgSwitchElement = ["Element", "EventTarget", "Node", "SvgElement", "SvgGraphicsElement"] +SvgSymbolElement = ["Element", "EventTarget", "Node", "SvgElement"] +SvgTextContentElement = ["Element", "EventTarget", "Node", "SvgElement", "SvgGraphicsElement"] +SvgTextElement = ["Element", "EventTarget", "Node", "SvgElement", "SvgGraphicsElement", "SvgTextContentElement", "SvgTextPositioningElement"] +SvgTextPathElement = ["Element", "EventTarget", "Node", "SvgElement", "SvgGraphicsElement", "SvgTextContentElement"] +SvgTextPositioningElement = ["Element", "EventTarget", "Node", "SvgElement", "SvgGraphicsElement", "SvgTextContentElement"] +SvgTitleElement = ["Element", "EventTarget", "Node", "SvgElement"] +SvgTransform = [] +SvgTransformList = [] +SvgUnitTypes = [] +SvgUseElement = ["Element", "EventTarget", "Node", "SvgElement", "SvgGraphicsElement"] +SvgViewElement = ["Element", "EventTarget", "Node", "SvgElement"] +SvgZoomAndPan = [] +SvgaElement = ["Element", "EventTarget", "Node", "SvgElement", "SvgGraphicsElement"] +SvgfeBlendElement = ["Element", "EventTarget", "Node", "SvgElement"] +SvgfeColorMatrixElement = ["Element", "EventTarget", "Node", "SvgElement"] +SvgfeComponentTransferElement = ["Element", "EventTarget", "Node", "SvgElement"] +SvgfeCompositeElement = ["Element", "EventTarget", "Node", "SvgElement"] +SvgfeConvolveMatrixElement = ["Element", "EventTarget", "Node", "SvgElement"] +SvgfeDiffuseLightingElement = ["Element", "EventTarget", "Node", "SvgElement"] +SvgfeDisplacementMapElement = ["Element", "EventTarget", "Node", "SvgElement"] +SvgfeDistantLightElement = ["Element", "EventTarget", "Node", "SvgElement"] +SvgfeDropShadowElement = ["Element", "EventTarget", "Node", "SvgElement"] +SvgfeFloodElement = ["Element", "EventTarget", "Node", "SvgElement"] +SvgfeFuncAElement = ["Element", "EventTarget", "Node", "SvgComponentTransferFunctionElement", "SvgElement"] +SvgfeFuncBElement = ["Element", "EventTarget", "Node", "SvgComponentTransferFunctionElement", "SvgElement"] +SvgfeFuncGElement = ["Element", "EventTarget", "Node", "SvgComponentTransferFunctionElement", "SvgElement"] +SvgfeFuncRElement = ["Element", "EventTarget", "Node", "SvgComponentTransferFunctionElement", "SvgElement"] +SvgfeGaussianBlurElement = ["Element", "EventTarget", "Node", "SvgElement"] +SvgfeImageElement = ["Element", "EventTarget", "Node", "SvgElement"] +SvgfeMergeElement = ["Element", "EventTarget", "Node", "SvgElement"] +SvgfeMergeNodeElement = ["Element", "EventTarget", "Node", "SvgElement"] +SvgfeMorphologyElement = ["Element", "EventTarget", "Node", "SvgElement"] +SvgfeOffsetElement = ["Element", "EventTarget", "Node", "SvgElement"] +SvgfePointLightElement = ["Element", "EventTarget", "Node", "SvgElement"] +SvgfeSpecularLightingElement = ["Element", "EventTarget", "Node", "SvgElement"] +SvgfeSpotLightElement = ["Element", "EventTarget", "Node", "SvgElement"] +SvgfeTileElement = ["Element", "EventTarget", "Node", "SvgElement"] +SvgfeTurbulenceElement = ["Element", "EventTarget", "Node", "SvgElement"] +SvggElement = ["Element", "EventTarget", "Node", "SvgElement", "SvgGraphicsElement"] +SvgmPathElement = ["Element", "EventTarget", "Node", "SvgElement"] +SvgsvgElement = ["Element", "EventTarget", "Node", "SvgElement", "SvgGraphicsElement"] +SvgtSpanElement = ["Element", "EventTarget", "Node", "SvgElement", "SvgGraphicsElement", "SvgTextContentElement", "SvgTextPositioningElement"] +TaskController = ["AbortController"] +TaskControllerInit = [] +TaskPriority = [] +TaskPriorityChangeEvent = ["Event"] +TaskPriorityChangeEventInit = [] +TaskSignal = ["AbortSignal", "EventTarget"] +TaskSignalAnyInit = [] +TcpReadyState = [] +TcpServerSocket = ["EventTarget"] +TcpServerSocketEvent = ["Event"] +TcpServerSocketEventInit = [] +TcpSocket = ["EventTarget"] +TcpSocketBinaryType = [] +TcpSocketErrorEvent = ["Event"] +TcpSocketErrorEventInit = [] +TcpSocketEvent = ["Event"] +TcpSocketEventInit = [] +Text = ["CharacterData", "EventTarget", "Node"] +TextDecodeOptions = [] +TextDecoder = [] +TextDecoderOptions = [] +TextEncoder = [] +TextMetrics = [] +TextTrack = ["EventTarget"] +TextTrackCue = ["EventTarget"] +TextTrackCueList = [] +TextTrackKind = [] +TextTrackList = ["EventTarget"] +TextTrackMode = [] +TimeEvent = ["Event"] +TimeRanges = [] +Touch = [] +TouchEvent = ["Event", "UiEvent"] +TouchEventInit = [] +TouchInit = [] +TouchList = [] +TrackEvent = ["Event"] +TrackEventInit = [] +TransformStream = [] +TransformStreamDefaultController = [] +Transformer = [] +TransitionEvent = ["Event"] +TransitionEventInit = [] +Transport = [] +TreeBoxObject = [] +TreeCellInfo = [] +TreeView = [] +TreeWalker = [] +U2f = [] +U2fClientData = [] +UdpMessageEventInit = [] +UdpOptions = [] +UiEvent = ["Event"] +UiEventInit = [] +UnderlyingSink = [] +UnderlyingSource = [] +Url = [] +UrlSearchParams = [] +Usb = ["EventTarget"] +UsbAlternateInterface = [] +UsbConfiguration = [] +UsbConnectionEvent = ["Event"] +UsbConnectionEventInit = [] +UsbControlTransferParameters = [] +UsbDevice = [] +UsbDeviceFilter = [] +UsbDeviceRequestOptions = [] +UsbDirection = [] +UsbEndpoint = [] +UsbEndpointType = [] +UsbInTransferResult = [] +UsbInterface = [] +UsbIsochronousInTransferPacket = [] +UsbIsochronousInTransferResult = [] +UsbIsochronousOutTransferPacket = [] +UsbIsochronousOutTransferResult = [] +UsbOutTransferResult = [] +UsbPermissionDescriptor = [] +UsbPermissionResult = ["EventTarget", "PermissionStatus"] +UsbPermissionStorage = [] +UsbRecipient = [] +UsbRequestType = [] +UsbTransferStatus = [] +UserActivation = [] +UserProximityEvent = ["Event"] +UserProximityEventInit = [] +UserVerificationRequirement = [] +ValidityState = [] +ValueEvent = ["Event"] +ValueEventInit = [] +VideoColorPrimaries = [] +VideoColorSpace = [] +VideoColorSpaceInit = [] +VideoConfiguration = [] +VideoDecoder = [] +VideoDecoderConfig = [] +VideoDecoderInit = [] +VideoDecoderSupport = [] +VideoEncoder = [] +VideoEncoderConfig = [] +VideoEncoderEncodeOptions = [] +VideoEncoderInit = [] +VideoEncoderSupport = [] +VideoFacingModeEnum = [] +VideoFrame = [] +VideoFrameBufferInit = [] +VideoFrameCopyToOptions = [] +VideoFrameInit = [] +VideoMatrixCoefficients = [] +VideoPixelFormat = [] +VideoPlaybackQuality = [] +VideoStreamTrack = ["EventTarget", "MediaStreamTrack"] +VideoTrack = [] +VideoTrackList = ["EventTarget"] +VideoTransferCharacteristics = [] +ViewTransition = [] +VisibilityState = [] +VoidCallback = [] +VrDisplay = ["EventTarget"] +VrDisplayCapabilities = [] +VrEye = [] +VrEyeParameters = [] +VrFieldOfView = [] +VrFrameData = [] +VrLayer = [] +VrMockController = [] +VrMockDisplay = [] +VrPose = [] +VrServiceTest = [] +VrStageParameters = [] +VrSubmitFrameResult = [] +VttCue = ["EventTarget", "TextTrackCue"] +VttRegion = [] +WakeLock = [] +WakeLockSentinel = ["EventTarget"] +WakeLockType = [] +WatchAdvertisementsOptions = [] +WaveShaperNode = ["AudioNode", "EventTarget"] +WaveShaperOptions = [] +WebGl2RenderingContext = [] +WebGlActiveInfo = [] +WebGlBuffer = [] +WebGlContextAttributes = [] +WebGlContextEvent = ["Event"] +WebGlContextEventInit = [] +WebGlFramebuffer = [] +WebGlPowerPreference = [] +WebGlProgram = [] +WebGlQuery = [] +WebGlRenderbuffer = [] +WebGlRenderingContext = [] +WebGlSampler = [] +WebGlShader = [] +WebGlShaderPrecisionFormat = [] +WebGlSync = [] +WebGlTexture = [] +WebGlTransformFeedback = [] +WebGlUniformLocation = [] +WebGlVertexArrayObject = [] +WebKitCssMatrix = ["DomMatrix", "DomMatrixReadOnly"] +WebSocket = ["EventTarget"] +WebSocketDict = [] +WebSocketElement = [] +WebTransport = [] +WebTransportBidirectionalStream = [] +WebTransportCloseInfo = [] +WebTransportCongestionControl = [] +WebTransportDatagramDuplexStream = [] +WebTransportDatagramStats = [] +WebTransportError = ["DomException"] +WebTransportErrorOptions = [] +WebTransportErrorSource = [] +WebTransportHash = [] +WebTransportOptions = [] +WebTransportReceiveStream = ["ReadableStream"] +WebTransportReceiveStreamStats = [] +WebTransportReliabilityMode = [] +WebTransportSendStream = ["WritableStream"] +WebTransportSendStreamOptions = [] +WebTransportSendStreamStats = [] +WebTransportStats = [] +WebglColorBufferFloat = [] +WebglCompressedTextureAstc = [] +WebglCompressedTextureAtc = [] +WebglCompressedTextureEtc = [] +WebglCompressedTextureEtc1 = [] +WebglCompressedTexturePvrtc = [] +WebglCompressedTextureS3tc = [] +WebglCompressedTextureS3tcSrgb = [] +WebglDebugRendererInfo = [] +WebglDebugShaders = [] +WebglDepthTexture = [] +WebglDrawBuffers = [] +WebglLoseContext = [] +WebglMultiDraw = [] +WellKnownDirectory = [] +WgslLanguageFeatures = [] +WheelEvent = ["Event", "MouseEvent", "UiEvent"] +WheelEventInit = [] +WidevineCdmManifest = [] +Window = ["EventTarget"] +WindowClient = ["Client"] +Worker = ["EventTarget"] +WorkerDebuggerGlobalScope = ["EventTarget"] +WorkerGlobalScope = ["EventTarget"] +WorkerLocation = [] +WorkerNavigator = [] +WorkerOptions = [] +WorkerType = [] +Worklet = [] +WorkletGlobalScope = [] +WorkletOptions = [] +WritableStream = [] +WritableStreamDefaultController = [] +WritableStreamDefaultWriter = [] +WriteCommandType = [] +WriteParams = [] +XPathExpression = [] +XPathNsResolver = [] +XPathResult = [] +XmlDocument = ["Document", "EventTarget", "Node"] +XmlHttpRequest = ["EventTarget", "XmlHttpRequestEventTarget"] +XmlHttpRequestEventTarget = ["EventTarget"] +XmlHttpRequestResponseType = [] +XmlHttpRequestUpload = ["EventTarget", "XmlHttpRequestEventTarget"] +XmlSerializer = [] +XrBoundedReferenceSpace = ["EventTarget", "XrReferenceSpace", "XrSpace"] +XrEye = [] +XrFrame = [] +XrHand = [] +XrHandJoint = [] +XrHandedness = [] +XrInputSource = [] +XrInputSourceArray = [] +XrInputSourceEvent = ["Event"] +XrInputSourceEventInit = [] +XrInputSourcesChangeEvent = ["Event"] +XrInputSourcesChangeEventInit = [] +XrJointPose = ["XrPose"] +XrJointSpace = ["EventTarget", "XrSpace"] +XrLayer = ["EventTarget"] +XrPermissionDescriptor = [] +XrPermissionStatus = ["EventTarget", "PermissionStatus"] +XrPose = [] +XrReferenceSpace = ["EventTarget", "XrSpace"] +XrReferenceSpaceEvent = ["Event"] +XrReferenceSpaceEventInit = [] +XrReferenceSpaceType = [] +XrRenderState = [] +XrRenderStateInit = [] +XrRigidTransform = [] +XrSession = ["EventTarget"] +XrSessionEvent = ["Event"] +XrSessionEventInit = [] +XrSessionInit = [] +XrSessionMode = [] +XrSessionSupportedPermissionDescriptor = [] +XrSpace = ["EventTarget"] +XrSystem = ["EventTarget"] +XrTargetRayMode = [] +XrView = [] +XrViewerPose = ["XrPose"] +XrViewport = [] +XrVisibilityState = [] +XrWebGlLayer = ["EventTarget", "XrLayer"] +XrWebGlLayerInit = [] +XsltProcessor = [] +console = [] +css = [] +gpu_buffer_usage = [] +gpu_color_write = [] +gpu_map_mode = [] +gpu_shader_stage = [] +gpu_texture_usage = [] + +[target."cfg(target_arch = \"wasm32\")".dev-dependencies.wasm-bindgen-futures] +version = "0.4.41" + +[target."cfg(target_arch = \"wasm32\")".dev-dependencies.wasm-bindgen-test] +version = "0.3.41" diff --git a/crates/benchmarks/src/lib.rs b/crates/benchmarks/src/lib.rs index 8e6dff58..6c534034 100644 --- a/crates/benchmarks/src/lib.rs +++ b/crates/benchmarks/src/lib.rs @@ -17,7 +17,11 @@ impl<'s> std::fmt::Display for Data<'s> { } } -pub const MANIFESTS: &[Data<'static>] = &[Data("0-new", NEW), Data("1-medium", MEDIUM)]; +pub const MANIFESTS: &[Data<'static>] = &[ + Data("0-new", NEW), + Data("1-medium", MEDIUM), + Data("2-features", FEATURES), +]; const NEW: &str = r#" [package] @@ -29,6 +33,7 @@ edition = "2018" "#; const MEDIUM: &str = include_str!("Cargo.cargo.toml"); +const FEATURES: &str = include_str!("Cargo.web-sys.toml"); pub mod manifest { use std::collections::HashMap;