Skip to content

Commit 88eb7d4

Browse files
committed
Set up global ReadableStream etc classes
1 parent 748f62f commit 88eb7d4

File tree

5 files changed

+36
-17
lines changed

5 files changed

+36
-17
lines changed

llrt_core/src/module_builder.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ impl Default for ModuleBuilder {
9797
.with_global(crate::modules::url::init)
9898
.with_module(UrlModule)
9999
.with_module(StreamWebModule)
100+
.with_global(crate::modules::stream_web::init)
100101
.with_global(crate::modules::http::init)
101102
.with_global(crate::modules::exceptions::init)
102103
.with_module(LlrtHexModule)

modules/llrt_stream_web/src/lib.rs

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ use std::{cell::Cell, rc::Rc};
33
use llrt_utils::module::{export_default, ModuleInfo};
44
use queueing_strategy::{ByteLengthQueuingStrategy, CountQueuingStrategy};
55
use readable::{
6-
ReadableByteStreamController, ReadableStream, ReadableStreamBYOBRequest, ReadableStreamClass,
6+
ReadableByteStreamController, ReadableStream, ReadableStreamBYOBReader,
7+
ReadableStreamBYOBRequest, ReadableStreamClass, ReadableStreamDefaultController,
78
ReadableStreamDefaultReader,
89
};
910
use rquickjs::{
@@ -46,36 +47,43 @@ impl<'js> FromJs<'js> for ReadableWritablePair<'js> {
4647

4748
pub struct StreamWebModule;
4849

50+
// https://nodejs.org/api/webstreams.html
4951
impl ModuleDef for StreamWebModule {
5052
fn declare(declare: &Declarations) -> Result<()> {
5153
declare.declare(stringify!(ReadableStream))?;
52-
declare.declare(stringify!(ByteLengthQueuingStrategy))?;
53-
declare.declare(stringify!(CountQueuingStrategy))?;
5454
declare.declare(stringify!(ReadableStreamDefaultReader))?;
55+
declare.declare(stringify!(ReadableStreamBYOBReader))?;
56+
declare.declare(stringify!(ReadableStreamDefaultController))?;
5557
declare.declare(stringify!(ReadableByteStreamController))?;
5658
declare.declare(stringify!(ReadableStreamBYOBRequest))?;
5759

5860
declare.declare(stringify!(WritableStream))?;
5961
declare.declare(stringify!(WritableStreamDefaultWriter))?;
6062
declare.declare(stringify!(WritableStreamDefaultController))?;
6163

64+
declare.declare(stringify!(ByteLengthQueuingStrategy))?;
65+
declare.declare(stringify!(CountQueuingStrategy))?;
66+
6267
declare.declare("default")?;
6368
Ok(())
6469
}
6570

6671
fn evaluate<'js>(ctx: &Ctx<'js>, exports: &Exports<'js>) -> Result<()> {
6772
export_default(ctx, exports, |default| {
6873
Class::<ReadableStream>::define(default)?;
69-
Class::<ByteLengthQueuingStrategy>::define(default)?;
70-
Class::<CountQueuingStrategy>::define(default)?;
7174
Class::<ReadableStreamDefaultReader>::define(default)?;
75+
Class::<ReadableStreamBYOBReader>::define(default)?;
76+
Class::<ReadableStreamDefaultController>::define(default)?;
7277
Class::<ReadableByteStreamController>::define(default)?;
7378
Class::<ReadableStreamBYOBRequest>::define(default)?;
7479

7580
Class::<WritableStream>::define(default)?;
7681
Class::<WritableStreamDefaultWriter>::define(default)?;
7782
Class::<WritableStreamDefaultController>::define(default)?;
7883

84+
Class::<ByteLengthQueuingStrategy>::define(default)?;
85+
Class::<CountQueuingStrategy>::define(default)?;
86+
7987
Ok(())
8088
})?;
8189

@@ -92,6 +100,25 @@ impl From<StreamWebModule> for ModuleInfo<StreamWebModule> {
92100
}
93101
}
94102

103+
pub fn init(ctx: &Ctx) -> Result<()> {
104+
let globals = &ctx.globals();
105+
106+
// https://min-common-api.proposal.wintercg.org/#api-index
107+
Class::<ByteLengthQueuingStrategy>::define(globals)?;
108+
Class::<CountQueuingStrategy>::define(globals)?;
109+
110+
Class::<ReadableByteStreamController>::define(globals)?;
111+
Class::<ReadableStream>::define(globals)?;
112+
Class::<ReadableStreamBYOBReader>::define(globals)?;
113+
Class::<ReadableStreamBYOBRequest>::define(globals)?;
114+
Class::<ReadableStreamDefaultReader>::define(globals)?;
115+
116+
Class::<WritableStream>::define(globals)?;
117+
Class::<WritableStreamDefaultController>::define(globals)?;
118+
119+
Ok(())
120+
}
121+
95122
/// Helper type for treating an undefined value as None, but not null
96123
#[derive(Clone)]
97124
struct Undefined<T>(pub Option<T>);

modules/llrt_stream_web/src/readable/default_controller.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ use crate::{class_from_owned_borrow_mut, is_non_negative_number, upon_promise, V
2424

2525
#[derive(JsLifetime, Trace)]
2626
#[rquickjs::class]
27-
pub(super) struct ReadableStreamDefaultController<'js> {
27+
pub(crate) struct ReadableStreamDefaultController<'js> {
2828
cancel_algorithm: Option<CancelAlgorithm<'js>>,
2929
close_requested: bool,
3030
pull_again: bool,

modules/llrt_stream_web/src/readable/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,15 +41,15 @@ mod tee;
4141

4242
pub(crate) use byob_reader::ReadableStreamBYOBReader;
4343
pub(crate) use byte_controller::{ReadableByteStreamController, ReadableStreamBYOBRequest};
44+
pub(crate) use default_controller::ReadableStreamDefaultController;
4445
pub(crate) use default_reader::ReadableStreamDefaultReader;
4546

4647
use crate::readable::byob_reader::ReadableStreamBYOBReaderOwned;
4748
use crate::readable::byte_controller::{
4849
ReadableByteStreamControllerClass, ReadableByteStreamControllerOwned,
4950
};
5051
use crate::readable::default_controller::{
51-
ReadableStreamDefaultController, ReadableStreamDefaultControllerClass,
52-
ReadableStreamDefaultControllerOwned,
52+
ReadableStreamDefaultControllerClass, ReadableStreamDefaultControllerOwned,
5353
};
5454
use crate::readable::default_reader::ReadableStreamDefaultReaderOwned;
5555

tests/unit/a-web-platform-tests.test.ts

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -56,15 +56,6 @@ const runTest = (test, done) => {
5656
debug: process.env.DEBUG !== undefined,
5757
});
5858

59-
globalThis.ReadableStream = ReadableStream;
60-
globalThis.ByteLengthQueuingStrategy = ByteLengthQueuingStrategy;
61-
globalThis.CountQueuingStrategy = CountQueuingStrategy;
62-
globalThis.ReadableStreamDefaultReader = ReadableStreamDefaultReader;
63-
globalThis.ReadableByteStreamController = ReadableByteStreamController;
64-
globalThis.ReadableStreamBYOBRequest = ReadableStreamBYOBRequest;
65-
66-
globalThis.WritableStream = WritableStream;
67-
6859
globalThis.gc = globalThis.__gc;
6960

7061
context.add_completion_callback((tests, status, assertions) => {

0 commit comments

Comments
 (0)