summaryrefslogtreecommitdiffstats
path: root/build/rust
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 19:33:14 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 19:33:14 +0000
commit36d22d82aa202bb199967e9512281e9a53db42c9 (patch)
tree105e8c98ddea1c1e4784a60a5a6410fa416be2de /build/rust
parentInitial commit. (diff)
downloadfirefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz
firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip
Adding upstream version 115.7.0esr.upstream/115.7.0esr
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'build/rust')
-rw-r--r--build/rust/base64/Cargo.toml11
-rw-r--r--build/rust/base64/lib.rs42
-rw-r--r--build/rust/bindgen/Cargo.toml18
-rw-r--r--build/rust/bindgen/lib.rs26
-rw-r--r--build/rust/bitflags/Cargo.toml11
-rw-r--r--build/rust/bitflags/lib.rs125
-rw-r--r--build/rust/cfg-if/Cargo.toml11
-rw-r--r--build/rust/cfg-if/lib.rs5
-rw-r--r--build/rust/cmake/Cargo.toml8
-rw-r--r--build/rust/cmake/lib.rs3
-rw-r--r--build/rust/darling/Cargo.toml11
-rw-r--r--build/rust/darling/lib.rs5
-rw-r--r--build/rust/dummy-web/js-sys/Cargo.toml8
-rw-r--r--build/rust/dummy-web/js-sys/lib.rs3
-rw-r--r--build/rust/dummy-web/wasm-bindgen/Cargo.toml8
-rw-r--r--build/rust/dummy-web/wasm-bindgen/lib.rs3
-rw-r--r--build/rust/dummy-web/web-sys/Cargo.toml1423
-rw-r--r--build/rust/dummy-web/web-sys/lib.rs3
-rw-r--r--build/rust/env_logger/Cargo.toml19
-rw-r--r--build/rust/env_logger/lib.rs5
-rw-r--r--build/rust/mozbuild/Cargo.toml11
-rw-r--r--build/rust/mozbuild/build.rs20
-rw-r--r--build/rust/mozbuild/generate_buildconfig.py75
-rw-r--r--build/rust/mozbuild/lib.rs14
-rw-r--r--build/rust/mozbuild/moz.build9
-rw-r--r--build/rust/nix/Cargo.toml30
-rw-r--r--build/rust/nix/lib.rs5
-rw-r--r--build/rust/ntapi/Cargo.toml11
-rw-r--r--build/rust/ntapi/lib.rs5
-rw-r--r--build/rust/oslog/Cargo.toml15
-rw-r--r--build/rust/oslog/LICENSE21
-rw-r--r--build/rust/oslog/lib.rs25
-rw-r--r--build/rust/parking_lot/Cargo.toml11
-rw-r--r--build/rust/parking_lot/lib.rs5
-rw-r--r--build/rust/redox_users/Cargo.toml8
-rw-r--r--build/rust/redox_users/lib.rs3
-rw-r--r--build/rust/tinyvec/Cargo.toml16
-rw-r--r--build/rust/tinyvec/lib.rs6
-rw-r--r--build/rust/vcpkg/Cargo.toml8
-rw-r--r--build/rust/vcpkg/lib.rs23
-rw-r--r--build/rust/wasi/Cargo.toml17
-rw-r--r--build/rust/wasi/lib.rs5
42 files changed, 2091 insertions, 0 deletions
diff --git a/build/rust/base64/Cargo.toml b/build/rust/base64/Cargo.toml
new file mode 100644
index 0000000000..ce9fdc2836
--- /dev/null
+++ b/build/rust/base64/Cargo.toml
@@ -0,0 +1,11 @@
+[package]
+name = "base64"
+version = "0.13.999"
+edition = "2018"
+license = "MPL-2.0"
+
+[lib]
+path = "lib.rs"
+
+[dependencies.base64]
+version = "0.21.0"
diff --git a/build/rust/base64/lib.rs b/build/rust/base64/lib.rs
new file mode 100644
index 0000000000..d5d4ce6af4
--- /dev/null
+++ b/build/rust/base64/lib.rs
@@ -0,0 +1,42 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+pub use base64::engine::general_purpose::*;
+pub use base64::DecodeError;
+use base64::Engine;
+
+// Re-implement some of the 0.13 APIs on top of 0.21
+
+pub fn decode<T: AsRef<[u8]>>(input: T) -> Result<Vec<u8>, DecodeError> {
+ STANDARD.decode(input)
+}
+
+pub fn encode<T: AsRef<[u8]>>(input: T) -> String {
+ STANDARD.encode(input)
+}
+
+pub fn decode_config<T: AsRef<[u8]>>(
+ input: T,
+ engine: GeneralPurpose,
+) -> Result<Vec<u8>, DecodeError> {
+ engine.decode(input)
+}
+
+pub fn encode_config<T: AsRef<[u8]>>(input: T, engine: GeneralPurpose) -> String {
+ engine.encode(input)
+}
+
+pub fn encode_config_slice<T: AsRef<[u8]>>(
+ input: T,
+ engine: GeneralPurpose,
+ output: &mut [u8],
+) -> usize {
+ engine
+ .encode_slice(input, output)
+ .expect("Output buffer too small")
+}
+
+pub fn encode_config_buf<T: AsRef<[u8]>>(input: T, engine: GeneralPurpose, buf: &mut String) {
+ engine.encode_string(input, buf)
+}
diff --git a/build/rust/bindgen/Cargo.toml b/build/rust/bindgen/Cargo.toml
new file mode 100644
index 0000000000..b68e2eb6bb
--- /dev/null
+++ b/build/rust/bindgen/Cargo.toml
@@ -0,0 +1,18 @@
+[package]
+name = "bindgen"
+version = "0.63.999"
+edition = "2018"
+license = "BSD-3-Clause"
+
+[lib]
+path = "lib.rs"
+
+[dependencies.bindgen]
+version = "0.64.0"
+default-features = false
+
+[features]
+logging = ["bindgen/logging"]
+runtime = ["bindgen/runtime"]
+static = ["bindgen/static"]
+which-rustfmt = ["bindgen/which-rustfmt"]
diff --git a/build/rust/bindgen/lib.rs b/build/rust/bindgen/lib.rs
new file mode 100644
index 0000000000..6828a430d5
--- /dev/null
+++ b/build/rust/bindgen/lib.rs
@@ -0,0 +1,26 @@
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// * Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// * Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+pub use bindgen::*;
diff --git a/build/rust/bitflags/Cargo.toml b/build/rust/bitflags/Cargo.toml
new file mode 100644
index 0000000000..74c90b6923
--- /dev/null
+++ b/build/rust/bitflags/Cargo.toml
@@ -0,0 +1,11 @@
+[package]
+name = "bitflags"
+version = "2.999.999"
+edition = "2018"
+license = "MIT/Apache-2.0"
+
+[lib]
+path = "lib.rs"
+
+[dependencies.bitflags]
+version = "1.0"
diff --git a/build/rust/bitflags/lib.rs b/build/rust/bitflags/lib.rs
new file mode 100644
index 0000000000..408d279b9f
--- /dev/null
+++ b/build/rust/bitflags/lib.rs
@@ -0,0 +1,125 @@
+// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+pub use bitflags::*;
+
+// Copy of the macro from bitflags 1.3.2, with the implicit derives
+// removed, because in 2.0, they're expected to be explicitly given
+// in the macro invocation. And because bitflags 1.3.2 itself always
+// adds an impl Debug, we need to remove #[derive(Debug)] from what
+// is passed in, which is what the __impl_bitflags_remove_derive_debug
+// macro does.
+#[macro_export(local_inner_macros)]
+macro_rules! bitflags {
+ (
+ $(#[$($outer:tt)+])*
+ $vis:vis struct $BitFlags:ident: $T:ty {
+ $(
+ $(#[$inner:ident $($args:tt)*])*
+ const $Flag:ident = $value:expr;
+ )*
+ }
+
+ $($t:tt)*
+ ) => {
+ __impl_bitflags_remove_derive_debug! {
+ $(#[$($outer)+])*
+
+ $vis struct $BitFlags {
+ bits: $T,
+ }
+ }
+
+ __impl_bitflags! {
+ $BitFlags: $T {
+ $(
+ $(#[$inner $($args)*])*
+ $Flag = $value;
+ )*
+ }
+ }
+
+ impl $BitFlags {
+ /// Convert from underlying bit representation, preserving all
+ /// bits (even those not corresponding to a defined flag).
+ #[inline]
+ pub const fn from_bits_retain(bits: $T) -> Self {
+ Self { bits }
+ }
+ }
+
+ bitflags! {
+ $($t)*
+ }
+ };
+ () => {};
+}
+
+#[macro_export(local_inner_macros)]
+#[doc(hidden)]
+macro_rules! __impl_bitflags_remove_derive_debug {
+ (
+ $(@ $(#[$keep_outer:meta])* @)?
+ #[derive(@ $($keep_derives:ident),+ @)]
+ $(#[$($other_outer:tt)+])*
+ $vis:vis struct $BitFlags:ident { $($t:tt)* }
+ ) => {
+ __impl_bitflags_remove_derive_debug! {
+ @ $($(#[$keep_outer])*)? #[derive($($keep_derives),+)] @
+ $(#[$($other_outer)+])*
+ $vis struct $BitFlags { $($t)* }
+ }
+ };
+ (
+ $(@ $(#[$keep_outer:meta])* @)?
+ #[derive($(@ $($keep_derives:ident),+ @)? Debug $(,$derives:ident)*)]
+ $(#[$($other_outer:tt)+])*
+ $vis:vis struct $BitFlags:ident { $($t:tt)* }
+ ) => {
+ __impl_bitflags_remove_derive_debug! {
+ @ $($(#[$keep_outer])*)? @
+ #[derive($(@ $($keep_derives),+ @)? $($derives),*)]
+ $(#[$($other_outer)+])*
+ $vis struct $BitFlags { $($t)* }
+ }
+ };
+ (
+ $(@ $(#[$keep_outer:meta])* @)?
+ #[derive($(@ $($keep_derives:ident),+ @)? $derive:ident $(,$derives:ident)*)]
+ $(#[$($other_outer:tt)+])*
+ $vis:vis struct $BitFlags:ident { $($t:tt)* }
+ ) => {
+ __impl_bitflags_remove_derive_debug! {
+ @ $($(#[$keep_outer])*)? @
+ #[derive(@ $($($keep_derives,)+)? $derive @ $($derives),*)]
+ $(#[$($other_outer)+])*
+ $vis struct $BitFlags { $($t)* }
+ }
+ };
+ (
+ $(@ $(#[$keep_outer:meta])* @)?
+ #[$outer:meta]
+ $(#[$($other_outer:tt)+])*
+ $vis:vis struct $BitFlags:ident { $($t:tt)* }
+ ) => {
+ __impl_bitflags_remove_derive_debug! {
+ @ $($(#[$keep_outer])*)? #[$outer] @
+ $(#[$($other_outer)+])*
+ $vis struct $BitFlags { $($t)* }
+ }
+ };
+ (
+ @ $(#[$keep_outer:meta])* @
+ $vis:vis struct $BitFlags:ident { $($t:tt)* }
+ ) => {
+ $(#[$keep_outer])*
+ $vis struct $BitFlags { $($t)* }
+ };
+}
diff --git a/build/rust/cfg-if/Cargo.toml b/build/rust/cfg-if/Cargo.toml
new file mode 100644
index 0000000000..fff5b54155
--- /dev/null
+++ b/build/rust/cfg-if/Cargo.toml
@@ -0,0 +1,11 @@
+[package]
+name = "cfg-if"
+version = "0.1.999"
+edition = "2018"
+license = "MPL-2.0"
+
+[lib]
+path = "lib.rs"
+
+[dependencies]
+cfg-if = "1.0"
diff --git a/build/rust/cfg-if/lib.rs b/build/rust/cfg-if/lib.rs
new file mode 100644
index 0000000000..70c009f840
--- /dev/null
+++ b/build/rust/cfg-if/lib.rs
@@ -0,0 +1,5 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+pub use cfg_if::*;
diff --git a/build/rust/cmake/Cargo.toml b/build/rust/cmake/Cargo.toml
new file mode 100644
index 0000000000..8bae1af5eb
--- /dev/null
+++ b/build/rust/cmake/Cargo.toml
@@ -0,0 +1,8 @@
+[package]
+name = "cmake"
+version = "0.1.999"
+edition = "2018"
+license = "MPL-2.0"
+
+[lib]
+path = "lib.rs"
diff --git a/build/rust/cmake/lib.rs b/build/rust/cmake/lib.rs
new file mode 100644
index 0000000000..e0032240a4
--- /dev/null
+++ b/build/rust/cmake/lib.rs
@@ -0,0 +1,3 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
diff --git a/build/rust/darling/Cargo.toml b/build/rust/darling/Cargo.toml
new file mode 100644
index 0000000000..c82f715060
--- /dev/null
+++ b/build/rust/darling/Cargo.toml
@@ -0,0 +1,11 @@
+[package]
+name = "darling"
+version = "0.13.99"
+edition = "2018"
+license = "MPL-2.0"
+
+[lib]
+path = "lib.rs"
+
+[dependencies.darling]
+version = "0.14"
diff --git a/build/rust/darling/lib.rs b/build/rust/darling/lib.rs
new file mode 100644
index 0000000000..7f64acf315
--- /dev/null
+++ b/build/rust/darling/lib.rs
@@ -0,0 +1,5 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+pub use darling::*;
diff --git a/build/rust/dummy-web/js-sys/Cargo.toml b/build/rust/dummy-web/js-sys/Cargo.toml
new file mode 100644
index 0000000000..b0d3999ef2
--- /dev/null
+++ b/build/rust/dummy-web/js-sys/Cargo.toml
@@ -0,0 +1,8 @@
+[package]
+name = "js-sys"
+version = "0.3.100"
+edition = "2018"
+license = "MIT OR Apache-2.0"
+
+[lib]
+path = "lib.rs"
diff --git a/build/rust/dummy-web/js-sys/lib.rs b/build/rust/dummy-web/js-sys/lib.rs
new file mode 100644
index 0000000000..e0032240a4
--- /dev/null
+++ b/build/rust/dummy-web/js-sys/lib.rs
@@ -0,0 +1,3 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
diff --git a/build/rust/dummy-web/wasm-bindgen/Cargo.toml b/build/rust/dummy-web/wasm-bindgen/Cargo.toml
new file mode 100644
index 0000000000..a4a421466e
--- /dev/null
+++ b/build/rust/dummy-web/wasm-bindgen/Cargo.toml
@@ -0,0 +1,8 @@
+[package]
+name = "wasm-bindgen"
+version = "0.2.100"
+edition = "2018"
+license = "MIT OR Apache-2.0"
+
+[lib]
+path = "lib.rs"
diff --git a/build/rust/dummy-web/wasm-bindgen/lib.rs b/build/rust/dummy-web/wasm-bindgen/lib.rs
new file mode 100644
index 0000000000..e0032240a4
--- /dev/null
+++ b/build/rust/dummy-web/wasm-bindgen/lib.rs
@@ -0,0 +1,3 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
diff --git a/build/rust/dummy-web/web-sys/Cargo.toml b/build/rust/dummy-web/web-sys/Cargo.toml
new file mode 100644
index 0000000000..4251c3e73d
--- /dev/null
+++ b/build/rust/dummy-web/web-sys/Cargo.toml
@@ -0,0 +1,1423 @@
+[package]
+name = "web-sys"
+version = "0.3.100"
+edition = "2018"
+license = "MIT OR Apache-2.0"
+
+[lib]
+path = "lib.rs"
+
+# This list is taken from web-sys 0.3.55's Cargo.toml
+[features]
+AbortController = []
+AbortSignal = ["EventTarget"]
+AddEventListenerOptions = []
+AesCbcParams = []
+AesCtrParams = []
+AesDerivedKeyParams = []
+AesGcmParams = []
+AesKeyAlgorithm = []
+AesKeyGenParams = []
+Algorithm = []
+AlignSetting = []
+AllowedBluetoothDevice = []
+AllowedUsbDevice = []
+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"]
+AudioContextOptions = []
+AudioContextState = []
+AudioDestinationNode = ["AudioNode", "EventTarget"]
+AudioListener = []
+AudioNode = ["EventTarget"]
+AudioNodeOptions = []
+AudioParam = []
+AudioParamMap = []
+AudioProcessingEvent = ["Event"]
+AudioScheduledSourceNode = ["AudioNode", "EventTarget"]
+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 = []
+Cache = []
+CacheBatchOperation = []
+CacheQueryOptions = []
+CacheStorage = []
+CacheStorageNamespace = []
+CanvasCaptureMediaStream = ["EventTarget", "MediaStream"]
+CanvasGradient = []
+CanvasPattern = []
+CanvasRenderingContext2d = []
+CanvasWindingRule = []
+CaretChangedReason = []
+CaretPosition = []
+CaretStateChangedEventInit = []
+CdataSection = ["CharacterData", "EventTarget", "Node", "Text"]
+ChannelCountMode = []
+ChannelInterpretation = []
+ChannelMergerNode = ["AudioNode", "EventTarget"]
+ChannelMergerOptions = []
+ChannelPixelLayout = []
+ChannelPixelLayoutDataType = []
+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 = []
+CollectedClientData = []
+Comment = ["CharacterData", "EventTarget", "Node"]
+CompositeOperation = []
+CompositionEvent = ["Event", "UiEvent"]
+CompositionEventInit = []
+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 = []
+Credential = []
+CredentialCreationOptions = []
+CredentialRequestOptions = []
+CredentialsContainer = []
+Crypto = []
+CryptoKey = []
+CryptoKeyPair = []
+Csp = []
+CspPolicies = []
+CspReport = []
+CspReportProperties = []
+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 = []
+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 = []
+DisplayMediaStreamConstraints = []
+DisplayNameOptions = []
+DisplayNameResult = []
+DistanceModelType = []
+DnsCacheDict = []
+DnsCacheEntry = []
+DnsLookupDict = []
+Document = ["EventTarget", "Node"]
+DocumentFragment = ["EventTarget", "Node"]
+DocumentTimeline = ["AnimationTimeline"]
+DocumentTimelineOptions = []
+DocumentType = ["EventTarget", "Node"]
+DomError = []
+DomException = []
+DomImplementation = []
+DomMatrix = ["DomMatrixReadOnly"]
+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 = []
+EndingTypes = []
+ErrorCallback = []
+ErrorEvent = ["Event"]
+ErrorEventInit = []
+Event = []
+EventInit = []
+EventListener = []
+EventListenerOptions = []
+EventModifierInit = []
+EventSource = ["EventTarget"]
+EventSourceInit = []
+EventTarget = []
+Exception = []
+ExtBlendMinmax = []
+ExtColorBufferFloat = []
+ExtColorBufferHalfFloat = []
+ExtDisjointTimerQuery = []
+ExtFragDepth = []
+ExtSRgb = []
+ExtShaderTextureLod = []
+ExtTextureFilterAnisotropic = []
+ExtendableEvent = ["Event"]
+ExtendableEventInit = []
+ExtendableMessageEvent = ["Event", "ExtendableEvent"]
+ExtendableMessageEventInit = []
+External = []
+FakePluginMimeEntry = []
+FakePluginTagInit = []
+FetchEvent = ["Event", "ExtendableEvent"]
+FetchEventInit = []
+FetchObserver = ["EventTarget"]
+FetchReadableStreamReadDataArray = []
+FetchReadableStreamReadDataDone = []
+FetchState = []
+File = ["Blob"]
+FileCallback = []
+FileList = []
+FilePropertyBag = []
+FileReader = ["EventTarget"]
+FileReaderSync = []
+FileSystem = []
+FileSystemDirectoryEntry = ["FileSystemEntry"]
+FileSystemDirectoryReader = []
+FileSystemEntriesCallback = []
+FileSystemEntry = []
+FileSystemEntryCallback = []
+FileSystemFileEntry = ["FileSystemEntry"]
+FileSystemFlags = []
+FillMode = []
+FlashClassification = []
+FlexLineGrowthState = []
+FocusEvent = ["Event", "UiEvent"]
+FocusEventInit = []
+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 = []
+GetNotificationOptions = []
+GetRootNodeOptions = []
+GetUserMediaRequest = []
+Gpu = []
+GpuAdapter = []
+GpuAddressMode = []
+GpuBindGroup = []
+GpuBindGroupDescriptor = []
+GpuBindGroupEntry = []
+GpuBindGroupLayout = []
+GpuBindGroupLayoutDescriptor = []
+GpuBindGroupLayoutEntry = []
+GpuBlendComponent = []
+GpuBlendFactor = []
+GpuBlendOperation = []
+GpuBlendState = []
+GpuBuffer = []
+GpuBufferBinding = []
+GpuBufferBindingLayout = []
+GpuBufferBindingType = []
+GpuBufferDescriptor = []
+GpuBufferUsage = []
+GpuCanvasCompositingAlphaMode = []
+GpuCanvasConfiguration = []
+GpuCanvasContext = []
+GpuColorDict = []
+GpuColorTargetState = []
+GpuColorWrite = []
+GpuCommandBuffer = []
+GpuCommandBufferDescriptor = []
+GpuCommandEncoder = []
+GpuCommandEncoderDescriptor = []
+GpuCompareFunction = []
+GpuCompilationInfo = []
+GpuCompilationMessage = []
+GpuCompilationMessageType = []
+GpuComputePassDescriptor = []
+GpuComputePassEncoder = []
+GpuComputePipeline = []
+GpuComputePipelineDescriptor = []
+GpuCullMode = []
+GpuDepthStencilState = []
+GpuDevice = ["EventTarget"]
+GpuDeviceDescriptor = []
+GpuDeviceLostInfo = []
+GpuDeviceLostReason = []
+GpuErrorFilter = []
+GpuExtent3dDict = []
+GpuExternalTexture = []
+GpuExternalTextureBindingLayout = []
+GpuExternalTextureDescriptor = []
+GpuFeatureName = []
+GpuFilterMode = []
+GpuFragmentState = []
+GpuFrontFace = []
+GpuImageCopyBuffer = []
+GpuImageCopyExternalImage = []
+GpuImageCopyTexture = []
+GpuImageCopyTextureTagged = []
+GpuImageDataLayout = []
+GpuIndexFormat = []
+GpuLoadOp = []
+GpuMapMode = []
+GpuMultisampleState = []
+GpuObjectDescriptorBase = []
+GpuOrigin2dDict = []
+GpuOrigin3dDict = []
+GpuOutOfMemoryError = []
+GpuPipelineDescriptorBase = []
+GpuPipelineLayout = []
+GpuPipelineLayoutDescriptor = []
+GpuPipelineStatisticName = []
+GpuPowerPreference = []
+GpuPredefinedColorSpace = []
+GpuPrimitiveState = []
+GpuPrimitiveTopology = []
+GpuProgrammableStage = []
+GpuQuerySet = []
+GpuQuerySetDescriptor = []
+GpuQueryType = []
+GpuQueue = []
+GpuRenderBundle = []
+GpuRenderBundleDescriptor = []
+GpuRenderBundleEncoder = []
+GpuRenderBundleEncoderDescriptor = []
+GpuRenderPassColorAttachment = []
+GpuRenderPassDepthStencilAttachment = []
+GpuRenderPassDescriptor = []
+GpuRenderPassEncoder = []
+GpuRenderPassLayout = []
+GpuRenderPipeline = []
+GpuRenderPipelineDescriptor = []
+GpuRequestAdapterOptions = []
+GpuSampler = []
+GpuSamplerBindingLayout = []
+GpuSamplerBindingType = []
+GpuSamplerDescriptor = []
+GpuShaderModule = []
+GpuShaderModuleDescriptor = []
+GpuShaderStage = []
+GpuStencilFaceState = []
+GpuStencilOperation = []
+GpuStorageTextureAccess = []
+GpuStorageTextureBindingLayout = []
+GpuStoreOp = []
+GpuSupportedFeatures = []
+GpuSupportedLimits = []
+GpuTexture = []
+GpuTextureAspect = []
+GpuTextureBindingLayout = []
+GpuTextureDescriptor = []
+GpuTextureDimension = []
+GpuTextureFormat = []
+GpuTextureSampleType = []
+GpuTextureUsage = []
+GpuTextureView = []
+GpuTextureViewDescriptor = []
+GpuTextureViewDimension = []
+GpuUncapturedErrorEvent = ["Event"]
+GpuUncapturedErrorEventInit = []
+GpuValidationError = []
+GpuVertexAttribute = []
+GpuVertexBufferLayout = []
+GpuVertexFormat = []
+GpuVertexState = []
+GpuVertexStepMode = []
+GridDeclaration = []
+GridTrackState = []
+GroupedHistoryEventInit = []
+HalfOpenInfoDict = []
+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 = []
+ImageBitmapFormat = []
+ImageBitmapRenderingContext = []
+ImageCapture = []
+ImageCaptureError = []
+ImageCaptureErrorEvent = ["Event"]
+ImageCaptureErrorEventInit = []
+ImageData = []
+InputEvent = ["Event", "UiEvent"]
+InputEventInit = []
+InstallTriggerData = []
+IntersectionObserver = []
+IntersectionObserverEntry = []
+IntersectionObserverEntryInit = []
+IntersectionObserverInit = []
+IntlUtils = []
+IterableKeyAndValueResult = []
+IterableKeyOrValueResult = []
+IterationCompositeOperation = []
+JsonWebKey = []
+KeyAlgorithm = []
+KeyEvent = []
+KeyIdsInitData = []
+KeyboardEvent = ["Event", "UiEvent"]
+KeyboardEventInit = []
+KeyframeEffect = ["AnimationEffect"]
+KeyframeEffectOptions = []
+L10nElement = []
+L10nValue = []
+LifecycleCallbacks = []
+LineAlignSetting = []
+ListBoxObject = []
+LocalMediaStream = ["EventTarget", "MediaStream"]
+LocaleInfo = []
+Location = []
+MediaCapabilities = []
+MediaCapabilitiesInfo = []
+MediaConfiguration = []
+MediaDecodingConfiguration = []
+MediaDecodingType = []
+MediaDeviceInfo = []
+MediaDeviceKind = []
+MediaDevices = ["EventTarget"]
+MediaElementAudioSourceNode = ["AudioNode", "EventTarget"]
+MediaElementAudioSourceOptions = []
+MediaEncodingConfiguration = []
+MediaEncodingType = []
+MediaEncryptedEvent = ["Event"]
+MediaError = []
+MediaKeyError = ["Event"]
+MediaKeyMessageEvent = ["Event"]
+MediaKeyMessageEventInit = []
+MediaKeyMessageType = []
+MediaKeyNeededEventInit = []
+MediaKeySession = ["EventTarget"]
+MediaKeySessionType = []
+MediaKeyStatus = []
+MediaKeyStatusMap = []
+MediaKeySystemAccess = []
+MediaKeySystemConfiguration = []
+MediaKeySystemMediaCapability = []
+MediaKeySystemStatus = []
+MediaKeys = []
+MediaKeysPolicy = []
+MediaKeysRequirement = []
+MediaList = []
+MediaQueryList = ["EventTarget"]
+MediaQueryListEvent = ["Event"]
+MediaQueryListEventInit = []
+MediaRecorder = ["EventTarget"]
+MediaRecorderErrorEvent = ["Event"]
+MediaRecorderErrorEventInit = []
+MediaRecorderOptions = []
+MediaSource = ["EventTarget"]
+MediaSourceEndOfStreamError = []
+MediaSourceEnum = []
+MediaSourceReadyState = []
+MediaStream = ["EventTarget"]
+MediaStreamAudioDestinationNode = ["AudioNode", "EventTarget"]
+MediaStreamAudioSourceNode = ["AudioNode", "EventTarget"]
+MediaStreamAudioSourceOptions = []
+MediaStreamConstraints = []
+MediaStreamError = []
+MediaStreamEvent = ["Event"]
+MediaStreamEventInit = []
+MediaStreamTrack = ["EventTarget"]
+MediaStreamTrackEvent = ["Event"]
+MediaStreamTrackEventInit = []
+MediaStreamTrackState = []
+MediaTrackConstraintSet = []
+MediaTrackConstraints = []
+MediaTrackSettings = []
+MediaTrackSupportedConstraints = []
+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"]
+NotificationBehavior = []
+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"]
+OpenWindowEventDetail = []
+OptionalEffectTiming = []
+OrientationLockType = []
+OrientationType = []
+OscillatorNode = ["AudioNode", "AudioScheduledSourceNode", "EventTarget"]
+OscillatorOptions = []
+OscillatorType = []
+OverSampleType = []
+PageTransitionEvent = ["Event"]
+PageTransitionEventInit = []
+PaintRequest = []
+PaintRequestList = []
+PaintWorkletGlobalScope = ["WorkletGlobalScope"]
+PannerNode = ["AudioNode", "EventTarget"]
+PannerOptions = []
+PanningModelType = []
+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 = []
+PlaybackDirection = []
+Plugin = []
+PluginArray = []
+PluginCrashedEventInit = []
+PointerEvent = ["Event", "MouseEvent", "UiEvent"]
+PointerEventInit = []
+PopStateEvent = ["Event"]
+PopStateEventInit = []
+PopupBlockedEvent = ["Event"]
+PopupBlockedEventInit = []
+Position = []
+PositionAlignSetting = []
+PositionError = []
+PositionOptions = []
+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 = []
+QueuingStrategy = []
+RadioNodeList = ["NodeList"]
+Range = []
+RcwnPerfStats = []
+RcwnStatus = []
+ReadableStream = []
+ReadableStreamByobReadResult = []
+ReadableStreamByobReader = []
+ReadableStreamDefaultReadResult = []
+ReadableStreamDefaultReader = []
+ReadableStreamGetReaderOptions = []
+ReadableStreamIteratorOptions = []
+ReadableStreamReaderMode = []
+ReadableWritablePair = []
+RecordingState = []
+ReferrerPolicy = []
+RegisterRequest = []
+RegisterResponse = []
+RegisteredKey = []
+RegistrationOptions = []
+Request = []
+RequestCache = []
+RequestCredentials = []
+RequestDestination = []
+RequestDeviceOptions = []
+RequestInit = []
+RequestMediaKeySystemAccessNotification = []
+RequestMode = []
+RequestRedirect = []
+ResizeObserver = []
+ResizeObserverBoxOptions = []
+ResizeObserverEntry = []
+ResizeObserverOptions = []
+ResizeObserverSize = []
+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 = []
+RtcLifecycleEvent = []
+RtcMediaStreamStats = []
+RtcMediaStreamTrackStats = []
+RtcOfferAnswerOptions = []
+RtcOfferOptions = []
+RtcOutboundRtpStreamStats = []
+RtcPeerConnection = ["EventTarget"]
+RtcPeerConnectionIceEvent = ["Event"]
+RtcPeerConnectionIceEventInit = []
+RtcPriorityType = []
+RtcRtcpParameters = []
+RtcRtpCodecParameters = []
+RtcRtpContributingSource = []
+RtcRtpEncodingParameters = []
+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 = []
+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 = []
+ServerSocketOptions = []
+ServiceWorker = ["EventTarget"]
+ServiceWorkerContainer = ["EventTarget"]
+ServiceWorkerGlobalScope = ["EventTarget", "WorkerGlobalScope"]
+ServiceWorkerRegistration = ["EventTarget"]
+ServiceWorkerState = []
+ServiceWorkerUpdateViaCache = []
+ShadowRoot = ["DocumentFragment", "EventTarget", "Node"]
+ShadowRootInit = []
+ShadowRootMode = []
+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 = []
+SubtleCrypto = []
+SupportedType = []
+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"]
+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 = []
+TransitionEvent = ["Event"]
+TransitionEventInit = []
+Transport = []
+TreeBoxObject = []
+TreeCellInfo = []
+TreeView = []
+TreeWalker = []
+U2f = []
+U2fClientData = []
+UdpMessageEventInit = []
+UdpOptions = []
+UiEvent = ["Event"]
+UiEventInit = []
+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 = []
+UserProximityEvent = ["Event"]
+UserProximityEventInit = []
+UserVerificationRequirement = []
+ValidityState = []
+ValueEvent = ["Event"]
+ValueEventInit = []
+VideoConfiguration = []
+VideoFacingModeEnum = []
+VideoPlaybackQuality = []
+VideoStreamTrack = ["EventTarget", "MediaStreamTrack"]
+VideoTrack = []
+VideoTrackList = ["EventTarget"]
+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 = []
+WebglColorBufferFloat = []
+WebglCompressedTextureAstc = []
+WebglCompressedTextureAtc = []
+WebglCompressedTextureEtc = []
+WebglCompressedTextureEtc1 = []
+WebglCompressedTexturePvrtc = []
+WebglCompressedTextureS3tc = []
+WebglCompressedTextureS3tcSrgb = []
+WebglDebugRendererInfo = []
+WebglDebugShaders = []
+WebglDepthTexture = []
+WebglDrawBuffers = []
+WebglLoseContext = []
+WebrtcGlobalStatisticsReport = []
+WheelEvent = ["Event", "MouseEvent", "UiEvent"]
+WheelEventInit = []
+WidevineCdmManifest = []
+Window = ["EventTarget"]
+WindowClient = ["Client"]
+Worker = ["EventTarget"]
+WorkerDebuggerGlobalScope = ["EventTarget"]
+WorkerGlobalScope = ["EventTarget"]
+WorkerLocation = []
+WorkerNavigator = []
+WorkerOptions = []
+WorkerType = []
+Worklet = []
+WorkletGlobalScope = []
+WorkletOptions = []
+WritableStream = []
+WritableStreamDefaultWriter = []
+XPathExpression = []
+XPathNsResolver = []
+XPathResult = []
+XmlDocument = ["Document", "EventTarget", "Node"]
+XmlHttpRequest = ["EventTarget", "XmlHttpRequestEventTarget"]
+XmlHttpRequestEventTarget = ["EventTarget"]
+XmlHttpRequestResponseType = []
+XmlHttpRequestUpload = ["EventTarget", "XmlHttpRequestEventTarget"]
+XmlSerializer = []
+Xr = ["EventTarget"]
+XrBoundedReferenceSpace = ["EventTarget", "XrReferenceSpace", "XrSpace"]
+XrEye = []
+XrFrame = []
+XrHandedness = []
+XrInputSource = []
+XrInputSourceArray = []
+XrInputSourceEvent = ["Event"]
+XrInputSourceEventInit = []
+XrInputSourcesChangeEvent = ["Event"]
+XrInputSourcesChangeEventInit = []
+XrPose = []
+XrReferenceSpace = ["EventTarget", "XrSpace"]
+XrReferenceSpaceEvent = ["Event"]
+XrReferenceSpaceEventInit = []
+XrReferenceSpaceType = []
+XrRenderState = []
+XrRenderStateInit = []
+XrRigidTransform = []
+XrSession = ["EventTarget"]
+XrSessionEvent = ["Event"]
+XrSessionEventInit = []
+XrSessionInit = []
+XrSessionMode = []
+XrSpace = ["EventTarget"]
+XrTargetRayMode = []
+XrView = []
+XrViewerPose = ["XrPose"]
+XrViewport = []
+XrVisibilityState = []
+XrWebGlLayer = []
+XrWebGlLayerInit = []
+XsltProcessor = []
+console = []
+css = []
diff --git a/build/rust/dummy-web/web-sys/lib.rs b/build/rust/dummy-web/web-sys/lib.rs
new file mode 100644
index 0000000000..e0032240a4
--- /dev/null
+++ b/build/rust/dummy-web/web-sys/lib.rs
@@ -0,0 +1,3 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
diff --git a/build/rust/env_logger/Cargo.toml b/build/rust/env_logger/Cargo.toml
new file mode 100644
index 0000000000..1475b47e7f
--- /dev/null
+++ b/build/rust/env_logger/Cargo.toml
@@ -0,0 +1,19 @@
+[package]
+name = "env_logger"
+version = "0.9.999"
+edition = "2018"
+license = "MPL-2.0"
+
+[lib]
+path = "lib.rs"
+
+[dependencies.env_logger]
+version = "0.10"
+default-features = false
+
+[features]
+default = ["env_logger/default"]
+termcolor = ["env_logger/color"]
+atty = ["env_logger/auto-color"]
+humantime = ["env_logger/humantime"]
+regex = ["env_logger/regex"]
diff --git a/build/rust/env_logger/lib.rs b/build/rust/env_logger/lib.rs
new file mode 100644
index 0000000000..cd291d6351
--- /dev/null
+++ b/build/rust/env_logger/lib.rs
@@ -0,0 +1,5 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+pub use env_logger::*;
diff --git a/build/rust/mozbuild/Cargo.toml b/build/rust/mozbuild/Cargo.toml
new file mode 100644
index 0000000000..e5958a05f8
--- /dev/null
+++ b/build/rust/mozbuild/Cargo.toml
@@ -0,0 +1,11 @@
+[package]
+name = "mozbuild"
+version = "0.1.0"
+edition = "2018"
+license = "MPL-2.0"
+
+[lib]
+path = "lib.rs"
+
+[dependencies]
+once_cell = "1"
diff --git a/build/rust/mozbuild/build.rs b/build/rust/mozbuild/build.rs
new file mode 100644
index 0000000000..e9fb6b91b0
--- /dev/null
+++ b/build/rust/mozbuild/build.rs
@@ -0,0 +1,20 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+use std::path::PathBuf;
+
+fn main() {
+ let out_dir = PathBuf::from(std::env::var_os("OUT_DIR").unwrap());
+ if let Some(topobjdir) = out_dir
+ .ancestors()
+ .find(|dir| dir.join("config.status").exists())
+ {
+ println!(
+ "cargo:rustc-env=BUILDCONFIG_RS={}",
+ topobjdir
+ .join("build/rust/mozbuild/buildconfig.rs")
+ .display()
+ );
+ }
+}
diff --git a/build/rust/mozbuild/generate_buildconfig.py b/build/rust/mozbuild/generate_buildconfig.py
new file mode 100644
index 0000000000..255135ae81
--- /dev/null
+++ b/build/rust/mozbuild/generate_buildconfig.py
@@ -0,0 +1,75 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+import string
+import textwrap
+
+import buildconfig
+
+
+def generate_bool(name):
+ value = buildconfig.substs.get(name)
+ return f"pub const {name}: bool = {'true' if value else 'false'};\n"
+
+
+def escape_rust_string(value):
+ """escape the string into a Rust literal"""
+ # This could be more generous, but we're only escaping paths with it.
+ unescaped = string.ascii_letters + string.digits + "/$+-_~ "
+ result = ""
+ for ch in str(value):
+ if ch in unescaped:
+ result += ch
+ elif ch == "\r":
+ result += "\\r"
+ elif ch == "\n":
+ result += "\\n"
+ elif ch == "\\":
+ result += "\\\\"
+ elif ch == '"':
+ result += '\\"'
+ else:
+ result += "\\u{%x}" % ord(ch)
+ return '"%s"' % result
+
+
+def generate(output):
+ # Write out a macro which can be used within `include!`-like methods to
+ # reference the topobjdir.
+ output.write(
+ textwrap.dedent(
+ f"""
+ /// Macro used to name a path in the objdir for use with macros like `include!`
+ #[macro_export]
+ macro_rules! objdir_path {{
+ ($path:literal) => {{
+ concat!({escape_rust_string(buildconfig.topobjdir + "/")}, $path)
+ }}
+ }}
+
+ /// Macro used to name a path in the srcdir for use with macros like `include!`
+ #[macro_export]
+ macro_rules! srcdir_path {{
+ ($path:literal) => {{
+ concat!({escape_rust_string(buildconfig.topsrcdir + "/")}, $path)
+ }}
+ }}
+
+ /// The objdir path for use in build scripts
+ pub const TOPOBJDIR: &str = {escape_rust_string(buildconfig.topobjdir)};
+ /// The srcdir path for use in build scripts
+ pub const TOPSRCDIR: &str = {escape_rust_string(buildconfig.topsrcdir)};
+
+ """
+ )
+ )
+
+ # Finally, write out some useful booleans from the buildconfig.
+ output.write(generate_bool("MOZ_FOLD_LIBS"))
+ output.write(generate_bool("NIGHTLY_BUILD"))
+ output.write(generate_bool("RELEASE_OR_BETA"))
+ output.write(generate_bool("EARLY_BETA_OR_EARLIER"))
+ output.write(generate_bool("MOZ_DEV_EDITION"))
+ output.write(generate_bool("MOZ_ESR"))
+ output.write(generate_bool("MOZ_DIAGNOSTIC_ASSERT_ENABLED"))
diff --git a/build/rust/mozbuild/lib.rs b/build/rust/mozbuild/lib.rs
new file mode 100644
index 0000000000..2fc70bcea2
--- /dev/null
+++ b/build/rust/mozbuild/lib.rs
@@ -0,0 +1,14 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+use once_cell::sync::Lazy;
+use std::path::Path;
+
+pub static TOPOBJDIR: Lazy<&'static Path> = Lazy::new(|| Path::new(config::TOPOBJDIR));
+
+pub static TOPSRCDIR: Lazy<&'static Path> = Lazy::new(|| Path::new(config::TOPSRCDIR));
+
+pub mod config {
+ include!(env!("BUILDCONFIG_RS"));
+}
diff --git a/build/rust/mozbuild/moz.build b/build/rust/mozbuild/moz.build
new file mode 100644
index 0000000000..3cc09a7c5a
--- /dev/null
+++ b/build/rust/mozbuild/moz.build
@@ -0,0 +1,9 @@
+# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+GeneratedFile(
+ "buildconfig.rs", script="generate_buildconfig.py", entry_point="generate"
+)
diff --git a/build/rust/nix/Cargo.toml b/build/rust/nix/Cargo.toml
new file mode 100644
index 0000000000..3881d7c020
--- /dev/null
+++ b/build/rust/nix/Cargo.toml
@@ -0,0 +1,30 @@
+[package]
+name = "nix"
+version = "0.24.99"
+edition = "2018"
+license = "MPL-2.0"
+
+[lib]
+path = "lib.rs"
+
+[dependencies.nix]
+version = "0.26"
+default-features = false
+
+[features]
+acct = ["nix/acct"]
+aio = ["nix/aio"]
+default = ["nix/default"]
+dir = ["nix/dir"]
+env = ["nix/env"]
+event = ["nix/event"]
+feature = ["nix/feature"]
+fs = ["nix/fs"]
+hostname = ["nix/hostname"]
+inotify = ["nix/inotify"]
+ioctl = ["nix/ioctl"]
+kmod = ["nix/kmod"]
+mman = ["nix/mman"]
+mount = ["nix/mount"]
+mqueue = ["nix/mqueue"]
+net = ["nix/net"]
diff --git a/build/rust/nix/lib.rs b/build/rust/nix/lib.rs
new file mode 100644
index 0000000000..d1039ae71a
--- /dev/null
+++ b/build/rust/nix/lib.rs
@@ -0,0 +1,5 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+pub use nix::*;
diff --git a/build/rust/ntapi/Cargo.toml b/build/rust/ntapi/Cargo.toml
new file mode 100644
index 0000000000..ad1b4c85d0
--- /dev/null
+++ b/build/rust/ntapi/Cargo.toml
@@ -0,0 +1,11 @@
+[package]
+name = "ntapi"
+version = "0.3.999"
+edition = "2018"
+license = "MPL-2.0"
+
+[lib]
+path = "lib.rs"
+
+[dependencies.ntapi]
+version = "0.4"
diff --git a/build/rust/ntapi/lib.rs b/build/rust/ntapi/lib.rs
new file mode 100644
index 0000000000..dad8b6bf78
--- /dev/null
+++ b/build/rust/ntapi/lib.rs
@@ -0,0 +1,5 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+pub use ntapi::*;
diff --git a/build/rust/oslog/Cargo.toml b/build/rust/oslog/Cargo.toml
new file mode 100644
index 0000000000..fa647f9646
--- /dev/null
+++ b/build/rust/oslog/Cargo.toml
@@ -0,0 +1,15 @@
+[package]
+name = "oslog"
+version = "0.1.999"
+edition = "2018"
+license = "MIT"
+
+[lib]
+path = "lib.rs"
+
+[dependencies.log]
+version = "0.4"
+default-features = false
+
+[features]
+logger = []
diff --git a/build/rust/oslog/LICENSE b/build/rust/oslog/LICENSE
new file mode 100644
index 0000000000..13b609c25b
--- /dev/null
+++ b/build/rust/oslog/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2020 Steven Joruk
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/build/rust/oslog/lib.rs b/build/rust/oslog/lib.rs
new file mode 100644
index 0000000000..4a529e7afa
--- /dev/null
+++ b/build/rust/oslog/lib.rs
@@ -0,0 +1,25 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+pub struct OsLogger;
+
+use log::{LevelFilter, SetLoggerError};
+
+impl OsLogger {
+ pub fn new(_subsystem: &str) -> Self {
+ Self
+ }
+
+ pub fn level_filter(self, _level: LevelFilter) -> Self {
+ self
+ }
+
+ pub fn category_level_filter(self, _category: &str, _level: LevelFilter) -> Self {
+ self
+ }
+
+ pub fn init(self) -> Result<(), SetLoggerError> {
+ Ok(())
+ }
+}
diff --git a/build/rust/parking_lot/Cargo.toml b/build/rust/parking_lot/Cargo.toml
new file mode 100644
index 0000000000..adfdb58e57
--- /dev/null
+++ b/build/rust/parking_lot/Cargo.toml
@@ -0,0 +1,11 @@
+[package]
+name = "parking_lot"
+version = "0.12.999"
+edition = "2018"
+license = "MPL-2.0"
+
+[lib]
+path = "lib.rs"
+
+[dependencies]
+parking_lot = "0.11"
diff --git a/build/rust/parking_lot/lib.rs b/build/rust/parking_lot/lib.rs
new file mode 100644
index 0000000000..402ca1ee10
--- /dev/null
+++ b/build/rust/parking_lot/lib.rs
@@ -0,0 +1,5 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+pub use parking_lot::*;
diff --git a/build/rust/redox_users/Cargo.toml b/build/rust/redox_users/Cargo.toml
new file mode 100644
index 0000000000..9ea9b4a086
--- /dev/null
+++ b/build/rust/redox_users/Cargo.toml
@@ -0,0 +1,8 @@
+[package]
+name = "redox_users"
+version = "0.4.999"
+edition = "2018"
+license = "MPL-2.0"
+
+[lib]
+path = "lib.rs"
diff --git a/build/rust/redox_users/lib.rs b/build/rust/redox_users/lib.rs
new file mode 100644
index 0000000000..e0032240a4
--- /dev/null
+++ b/build/rust/redox_users/lib.rs
@@ -0,0 +1,3 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
diff --git a/build/rust/tinyvec/Cargo.toml b/build/rust/tinyvec/Cargo.toml
new file mode 100644
index 0000000000..d40a4db514
--- /dev/null
+++ b/build/rust/tinyvec/Cargo.toml
@@ -0,0 +1,16 @@
+[package]
+name = "tinyvec"
+version = "1.999.999"
+edition = "2018"
+license = "MPL-2.0"
+
+[lib]
+path = "lib.rs"
+
+[dependencies]
+smallvec = "1"
+
+[features]
+alloc = []
+default = []
+std = ["alloc"]
diff --git a/build/rust/tinyvec/lib.rs b/build/rust/tinyvec/lib.rs
new file mode 100644
index 0000000000..decdb0efdc
--- /dev/null
+++ b/build/rust/tinyvec/lib.rs
@@ -0,0 +1,6 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+pub use smallvec::SmallVec as ArrayVec;
+pub use smallvec::SmallVec as TinyVec;
diff --git a/build/rust/vcpkg/Cargo.toml b/build/rust/vcpkg/Cargo.toml
new file mode 100644
index 0000000000..2128be7ad8
--- /dev/null
+++ b/build/rust/vcpkg/Cargo.toml
@@ -0,0 +1,8 @@
+[package]
+name = "vcpkg"
+version = "0.2.999"
+edition = "2018"
+license = "MPL-2.0"
+
+[lib]
+path = "lib.rs"
diff --git a/build/rust/vcpkg/lib.rs b/build/rust/vcpkg/lib.rs
new file mode 100644
index 0000000000..630f19f4be
--- /dev/null
+++ b/build/rust/vcpkg/lib.rs
@@ -0,0 +1,23 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+use std::path::PathBuf;
+
+pub struct Config;
+
+pub struct Library {
+ pub include_paths: Vec<PathBuf>,
+}
+
+pub struct Error;
+
+impl Config {
+ pub fn new() -> Config {
+ Config
+ }
+
+ pub fn probe(&mut self, _: &str) -> Result<Library, Error> {
+ Err(Error)
+ }
+}
diff --git a/build/rust/wasi/Cargo.toml b/build/rust/wasi/Cargo.toml
new file mode 100644
index 0000000000..e1f392a961
--- /dev/null
+++ b/build/rust/wasi/Cargo.toml
@@ -0,0 +1,17 @@
+[package]
+name = "wasi"
+version = "0.10.0+wasi-snapshot-preview999"
+edition = "2018"
+license = "MPL-2.0"
+
+[lib]
+path = "lib.rs"
+
+[dependencies.wasi]
+version = "0.11"
+default-features = false
+
+[features]
+default = ["wasi/default"]
+rustc-dep-of-std = ["wasi/rustc-dep-of-std"]
+std = ["wasi/std"]
diff --git a/build/rust/wasi/lib.rs b/build/rust/wasi/lib.rs
new file mode 100644
index 0000000000..1bb1206202
--- /dev/null
+++ b/build/rust/wasi/lib.rs
@@ -0,0 +1,5 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+pub use wasi::*;