Skip to content

Commit

Permalink
Add unstable bindings for the Compression Streams API (#3752)
Browse files Browse the repository at this point in the history
  • Loading branch information
daxpedda authored Dec 23, 2023
1 parent a070715 commit 0069b66
Show file tree
Hide file tree
Showing 7 changed files with 168 additions and 0 deletions.
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@
* Add bindings for `UserActivation`.
[#3719](https://github.com/rustwasm/wasm-bindgen/pull/3719)

* Add unstable bindings for the Compression Streams API.
[#3752](https://github.com/rustwasm/wasm-bindgen/pull/3752)

### Changed

* Stabilize File System API.
Expand Down
3 changes: 3 additions & 0 deletions crates/web-sys/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -203,6 +203,8 @@ Comment = ["CharacterData", "EventTarget", "Node"]
CompositeOperation = []
CompositionEvent = ["Event", "UiEvent"]
CompositionEventInit = []
CompressionFormat = []
CompressionStream = []
ComputedEffectTiming = []
ConnStatusDict = []
ConnectionType = []
Expand Down Expand Up @@ -268,6 +270,7 @@ DataTransferItemList = []
DateTimeValue = []
DecoderDoctorNotification = []
DecoderDoctorNotificationType = []
DecompressionStream = []
DedicatedWorkerGlobalScope = ["EventTarget", "WorkerGlobalScope"]
DelayNode = ["AudioNode", "EventTarget"]
DelayOptions = []
Expand Down
17 changes: 17 additions & 0 deletions crates/web-sys/src/features/gen_CompressionFormat.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#![allow(unused_imports)]
#![allow(clippy::all)]
use wasm_bindgen::prelude::*;
#[cfg(web_sys_unstable_apis)]
#[wasm_bindgen]
#[doc = "The `CompressionFormat` enum."]
#[doc = ""]
#[doc = "*This API requires the following crate features to be activated: `CompressionFormat`*"]
#[doc = ""]
#[doc = "*This API is unstable and requires `--cfg=web_sys_unstable_apis` to be activated, as"]
#[doc = "[described in the `wasm-bindgen` guide](https://rustwasm.github.io/docs/wasm-bindgen/web-sys/unstable-apis.html)*"]
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum CompressionFormat {
Deflate = "deflate",
DeflateRaw = "deflate-raw",
Gzip = "gzip",
}
55 changes: 55 additions & 0 deletions crates/web-sys/src/features/gen_CompressionStream.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
#![allow(unused_imports)]
#![allow(clippy::all)]
use super::*;
use wasm_bindgen::prelude::*;
#[cfg(web_sys_unstable_apis)]
#[wasm_bindgen]
extern "C" {
# [wasm_bindgen (extends = :: js_sys :: Object , js_name = CompressionStream , typescript_type = "CompressionStream")]
#[derive(Debug, Clone, PartialEq, Eq)]
#[doc = "The `CompressionStream` class."]
#[doc = ""]
#[doc = "[MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/API/CompressionStream)"]
#[doc = ""]
#[doc = "*This API requires the following crate features to be activated: `CompressionStream`*"]
#[doc = ""]
#[doc = "*This API is unstable and requires `--cfg=web_sys_unstable_apis` to be activated, as"]
#[doc = "[described in the `wasm-bindgen` guide](https://rustwasm.github.io/docs/wasm-bindgen/web-sys/unstable-apis.html)*"]
pub type CompressionStream;
#[cfg(web_sys_unstable_apis)]
#[cfg(feature = "ReadableStream")]
# [wasm_bindgen (structural , method , getter , js_class = "CompressionStream" , js_name = readable)]
#[doc = "Getter for the `readable` field of this object."]
#[doc = ""]
#[doc = "[MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/API/CompressionStream/readable)"]
#[doc = ""]
#[doc = "*This API requires the following crate features to be activated: `CompressionStream`, `ReadableStream`*"]
#[doc = ""]
#[doc = "*This API is unstable and requires `--cfg=web_sys_unstable_apis` to be activated, as"]
#[doc = "[described in the `wasm-bindgen` guide](https://rustwasm.github.io/docs/wasm-bindgen/web-sys/unstable-apis.html)*"]
pub fn readable(this: &CompressionStream) -> ReadableStream;
#[cfg(web_sys_unstable_apis)]
#[cfg(feature = "WritableStream")]
# [wasm_bindgen (structural , method , getter , js_class = "CompressionStream" , js_name = writable)]
#[doc = "Getter for the `writable` field of this object."]
#[doc = ""]
#[doc = "[MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/API/CompressionStream/writable)"]
#[doc = ""]
#[doc = "*This API requires the following crate features to be activated: `CompressionStream`, `WritableStream`*"]
#[doc = ""]
#[doc = "*This API is unstable and requires `--cfg=web_sys_unstable_apis` to be activated, as"]
#[doc = "[described in the `wasm-bindgen` guide](https://rustwasm.github.io/docs/wasm-bindgen/web-sys/unstable-apis.html)*"]
pub fn writable(this: &CompressionStream) -> WritableStream;
#[cfg(web_sys_unstable_apis)]
#[cfg(feature = "CompressionFormat")]
#[wasm_bindgen(catch, constructor, js_class = "CompressionStream")]
#[doc = "The `new CompressionStream(..)` constructor, creating a new instance of `CompressionStream`."]
#[doc = ""]
#[doc = "[MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/API/CompressionStream/CompressionStream)"]
#[doc = ""]
#[doc = "*This API requires the following crate features to be activated: `CompressionFormat`, `CompressionStream`*"]
#[doc = ""]
#[doc = "*This API is unstable and requires `--cfg=web_sys_unstable_apis` to be activated, as"]
#[doc = "[described in the `wasm-bindgen` guide](https://rustwasm.github.io/docs/wasm-bindgen/web-sys/unstable-apis.html)*"]
pub fn new(format: CompressionFormat) -> Result<CompressionStream, JsValue>;
}
55 changes: 55 additions & 0 deletions crates/web-sys/src/features/gen_DecompressionStream.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
#![allow(unused_imports)]
#![allow(clippy::all)]
use super::*;
use wasm_bindgen::prelude::*;
#[cfg(web_sys_unstable_apis)]
#[wasm_bindgen]
extern "C" {
# [wasm_bindgen (extends = :: js_sys :: Object , js_name = DecompressionStream , typescript_type = "DecompressionStream")]
#[derive(Debug, Clone, PartialEq, Eq)]
#[doc = "The `DecompressionStream` class."]
#[doc = ""]
#[doc = "[MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/API/DecompressionStream)"]
#[doc = ""]
#[doc = "*This API requires the following crate features to be activated: `DecompressionStream`*"]
#[doc = ""]
#[doc = "*This API is unstable and requires `--cfg=web_sys_unstable_apis` to be activated, as"]
#[doc = "[described in the `wasm-bindgen` guide](https://rustwasm.github.io/docs/wasm-bindgen/web-sys/unstable-apis.html)*"]
pub type DecompressionStream;
#[cfg(web_sys_unstable_apis)]
#[cfg(feature = "ReadableStream")]
# [wasm_bindgen (structural , method , getter , js_class = "DecompressionStream" , js_name = readable)]
#[doc = "Getter for the `readable` field of this object."]
#[doc = ""]
#[doc = "[MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/API/DecompressionStream/readable)"]
#[doc = ""]
#[doc = "*This API requires the following crate features to be activated: `DecompressionStream`, `ReadableStream`*"]
#[doc = ""]
#[doc = "*This API is unstable and requires `--cfg=web_sys_unstable_apis` to be activated, as"]
#[doc = "[described in the `wasm-bindgen` guide](https://rustwasm.github.io/docs/wasm-bindgen/web-sys/unstable-apis.html)*"]
pub fn readable(this: &DecompressionStream) -> ReadableStream;
#[cfg(web_sys_unstable_apis)]
#[cfg(feature = "WritableStream")]
# [wasm_bindgen (structural , method , getter , js_class = "DecompressionStream" , js_name = writable)]
#[doc = "Getter for the `writable` field of this object."]
#[doc = ""]
#[doc = "[MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/API/DecompressionStream/writable)"]
#[doc = ""]
#[doc = "*This API requires the following crate features to be activated: `DecompressionStream`, `WritableStream`*"]
#[doc = ""]
#[doc = "*This API is unstable and requires `--cfg=web_sys_unstable_apis` to be activated, as"]
#[doc = "[described in the `wasm-bindgen` guide](https://rustwasm.github.io/docs/wasm-bindgen/web-sys/unstable-apis.html)*"]
pub fn writable(this: &DecompressionStream) -> WritableStream;
#[cfg(web_sys_unstable_apis)]
#[cfg(feature = "CompressionFormat")]
#[wasm_bindgen(catch, constructor, js_class = "DecompressionStream")]
#[doc = "The `new DecompressionStream(..)` constructor, creating a new instance of `DecompressionStream`."]
#[doc = ""]
#[doc = "[MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/API/DecompressionStream/DecompressionStream)"]
#[doc = ""]
#[doc = "*This API requires the following crate features to be activated: `CompressionFormat`, `DecompressionStream`*"]
#[doc = ""]
#[doc = "*This API is unstable and requires `--cfg=web_sys_unstable_apis` to be activated, as"]
#[doc = "[described in the `wasm-bindgen` guide](https://rustwasm.github.io/docs/wasm-bindgen/web-sys/unstable-apis.html)*"]
pub fn new(format: CompressionFormat) -> Result<DecompressionStream, JsValue>;
}
18 changes: 18 additions & 0 deletions crates/web-sys/src/features/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1030,6 +1030,18 @@ mod gen_CompositionEventInit;
#[cfg(feature = "CompositionEventInit")]
pub use gen_CompositionEventInit::*;

#[cfg(feature = "CompressionFormat")]
#[allow(non_snake_case)]
mod gen_CompressionFormat;
#[cfg(feature = "CompressionFormat")]
pub use gen_CompressionFormat::*;

#[cfg(feature = "CompressionStream")]
#[allow(non_snake_case)]
mod gen_CompressionStream;
#[cfg(feature = "CompressionStream")]
pub use gen_CompressionStream::*;

#[cfg(feature = "ComputedEffectTiming")]
#[allow(non_snake_case)]
mod gen_ComputedEffectTiming;
Expand Down Expand Up @@ -1420,6 +1432,12 @@ mod gen_DecoderDoctorNotificationType;
#[cfg(feature = "DecoderDoctorNotificationType")]
pub use gen_DecoderDoctorNotificationType::*;

#[cfg(feature = "DecompressionStream")]
#[allow(non_snake_case)]
mod gen_DecompressionStream;
#[cfg(feature = "DecompressionStream")]
pub use gen_DecompressionStream::*;

#[cfg(feature = "DedicatedWorkerGlobalScope")]
#[allow(non_snake_case)]
mod gen_DedicatedWorkerGlobalScope;
Expand Down
17 changes: 17 additions & 0 deletions crates/web-sys/webidls/unstable/Compression.webidl
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
enum CompressionFormat {
"deflate",
"deflate-raw",
"gzip",
};

[Exposed=*]
interface CompressionStream {
constructor(CompressionFormat format);
};
CompressionStream includes GenericTransformStream;

[Exposed=*]
interface DecompressionStream {
constructor(CompressionFormat format);
};
DecompressionStream includes GenericTransformStream;

0 comments on commit 0069b66

Please sign in to comment.