[Exposed=(Window,Worker,Worklet)] interface ReadableStream { constructor(optional object underlyingSource, optional QueuingStrategy strategy = {}); readonly attribute boolean locked; Promise cancel(optional any reason); ReadableStreamReader getReader(optional ReadableStreamGetReaderOptions options = {}); ReadableStream pipeThrough(ReadableWritablePair transform, optional StreamPipeOptions options = {}); Promise pipeTo(WritableStream destination, optional StreamPipeOptions options = {}); sequence tee(); async iterable(optional ReadableStreamIteratorOptions options = {}); }; typedef (ReadableStreamDefaultReader or ReadableStreamBYOBReader) ReadableStreamReader; enum ReadableStreamReaderMode { "byob" }; dictionary ReadableStreamGetReaderOptions { ReadableStreamReaderMode mode; }; dictionary ReadableStreamIteratorOptions { boolean preventCancel = false; }; dictionary ReadableWritablePair { required ReadableStream readable; required WritableStream writable; }; dictionary StreamPipeOptions { boolean preventClose = false; boolean preventAbort = false; boolean preventCancel = false; AbortSignal signal; }; dictionary UnderlyingSource { UnderlyingSourceStartCallback start; UnderlyingSourcePullCallback pull; UnderlyingSourceCancelCallback cancel; ReadableStreamType type; [EnforceRange] unsigned long long autoAllocateChunkSize; }; typedef (ReadableStreamDefaultController or ReadableByteStreamController) ReadableStreamController; callback UnderlyingSourceStartCallback = any (ReadableStreamController controller); callback UnderlyingSourcePullCallback = Promise (ReadableStreamController controller); callback UnderlyingSourceCancelCallback = Promise (optional any reason); enum ReadableStreamType { "bytes" }; [Exposed=(Window,Worker,Worklet)] interface ReadableStreamDefaultReader { constructor(ReadableStream stream); readonly attribute Promise closed; Promise cancel(optional any reason); Promise read(); undefined releaseLock(); }; [Exposed=(Window,Worker,Worklet)] interface ReadableStreamBYOBReader { constructor(ReadableStream stream); readonly attribute Promise closed; Promise cancel(optional any reason); Promise read(ArrayBufferView view); undefined releaseLock(); }; [Exposed=(Window,Worker,Worklet)] interface ReadableStreamDefaultController { readonly attribute unrestricted double? desiredSize; undefined close(); undefined enqueue(optional any chunk); undefined error(optional any e); }; [Exposed=(Window,Worker,Worklet)] interface ReadableByteStreamController { readonly attribute ReadableStreamBYOBRequest? byobRequest; readonly attribute unrestricted double? desiredSize; undefined close(); undefined enqueue(ArrayBufferView chunk); undefined error(optional any e); }; [Exposed=(Window,Worker,Worklet)] interface ReadableStreamBYOBRequest { readonly attribute ArrayBufferView? view; undefined respond([EnforceRange] unsigned long long bytesWritten); undefined respondWithNewView(ArrayBufferView view); }; [Exposed=(Window,Worker,Worklet)] interface WritableStream { constructor(optional object underlyingSink, optional QueuingStrategy strategy = {}); readonly attribute boolean locked; Promise abort(optional any reason); Promise close(); WritableStreamDefaultWriter getWriter(); }; dictionary UnderlyingSink { UnderlyingSinkStartCallback start; UnderlyingSinkWriteCallback write; UnderlyingSinkCloseCallback close; UnderlyingSinkAbortCallback abort; any type; }; callback UnderlyingSinkStartCallback = any (WritableStreamDefaultController controller); callback UnderlyingSinkWriteCallback = Promise (WritableStreamDefaultController controller, optional any chunk); callback UnderlyingSinkCloseCallback = Promise (); callback UnderlyingSinkAbortCallback = Promise (optional any reason); [Exposed=(Window,Worker,Worklet)] interface WritableStreamDefaultWriter { constructor(WritableStream stream); readonly attribute Promise closed; readonly attribute unrestricted double? desiredSize; readonly attribute Promise ready; Promise abort(optional any reason); Promise close(); undefined releaseLock(); Promise write(optional any chunk); }; [Exposed=(Window,Worker,Worklet)] interface WritableStreamDefaultController { undefined error(optional any e); }; [Exposed=(Window,Worker,Worklet)] interface TransformStream { constructor(optional object transformer, optional QueuingStrategy writableStrategy = {}, optional QueuingStrategy readableStrategy = {}); readonly attribute ReadableStream readable; readonly attribute WritableStream writable; }; dictionary Transformer { TransformerStartCallback start; TransformerTransformCallback transform; TransformerFlushCallback flush; any readableType; any writableType; }; callback TransformerStartCallback = any (TransformStreamDefaultController controller); callback TransformerFlushCallback = Promise (TransformStreamDefaultController controller); callback TransformerTransformCallback = Promise (TransformStreamDefaultController controller, optional any chunk); [Exposed=(Window,Worker,Worklet)] interface TransformStreamDefaultController { readonly attribute unrestricted double? desiredSize; undefined enqueue(optional any chunk); undefined error(optional any reason); undefined terminate(); }; dictionary QueuingStrategy { unrestricted double highWaterMark; QueuingStrategySize size; }; callback QueuingStrategySize = unrestricted double (optional any chunk); dictionary QueuingStrategyInit { required unrestricted double highWaterMark; }; [Exposed=(Window,Worker,Worklet)] interface ByteLengthQueuingStrategy { constructor(QueuingStrategyInit init); readonly attribute unrestricted double highWaterMark; readonly attribute Function size; }; [Exposed=(Window,Worker,Worklet)] interface CountQueuingStrategy { constructor(QueuingStrategyInit init); readonly attribute unrestricted double highWaterMark; readonly attribute Function size; };