Skip to content

Streams

How Elide supports ReadableStream, WritableStream and TransformStream per the Streams Standard, including byte streams, BYOB readers and from().

On this page

ReadableStream, WritableStream, TransformStream, their readers, writers, and controllers, CountQueuingStrategy, and ByteLengthQueuingStrategy are globals. They follow the Streams Standard, including byte streams, BYOB readers, and ReadableStream.from().

Example

js
// webstreams.mjs
const numbers = ReadableStream.from([1, 2, 3, 4]);
const doubled = numbers.pipeThrough(
  new TransformStream({
    transform(n, controller) {
      controller.enqueue(n * 2);
    },
  }),
);

const seen = [];
await doubled.pipeTo(
  new WritableStream({
    write(n) {
      seen.push(n);
    },
  }),
);
console.log(seen.join(" "));

const text = await new Response(ReadableStream.from(["he", "llo"]).pipeThrough(new TextEncoderStream())).text();
console.log(text);
utf-8 · js · Lines: 22

elide run webstreams.mjs prints:

text
2 4 6 8
hello
utf-8 · text · Lines: 2

Differences from browsers

  • A stream cannot be transferred to a worker: naming one in a postMessage transfer list throws DataCloneError.

For byte transforms, see Compression Streams.

Reference

Status: Full · Not measured · since 1.1.0

Exports

ExportKindStatusNotes
ReadableStreamclassFulllocked, cancel(), getReader(), pipeThrough(), pipeTo(), tee()
ReadableStreamDefaultReaderclassFullclosed, read(), releaseLock(), cancel()
ReadableStreamDefaultControllerclassFulldesiredSize, close(), enqueue(), error()
ReadableStreamBYOBReaderclassFullclosed, read(), releaseLock(), cancel()
ReadableByteStreamControllerclassFullbyobRequest, desiredSize, close(), enqueue(), error()
ReadableStreamBYOBRequestclassFullview, respond(), respondWithNewView()
WritableStreamclassFulllocked, abort(), close(), getWriter()
WritableStreamDefaultWriterclassFullclosed, desiredSize, ready, abort(), close(), releaseLock(), write()
WritableStreamDefaultControllerclassFullsignal, error()
TransformStreamclassFullreadable, writable
TransformStreamDefaultControllerclassFulldesiredSize, enqueue(), error(), terminate()
CountQueuingStrategyclassFullhighWaterMark, size
ByteLengthQueuingStrategyclassFullhighWaterMark, size

Was this page helpful?