Is it possible to create a single TransformStream out of several other TransformStreams using whatwg streams (the web Streams API)?
For example, if I have two TransformStreams which run in sequence, like transformer1
and transformer2
:
readable.pipeThrough(transformer1).pipeThrough(transformer2).pipeTo(writable)
Ultimately, I'd like to be able to convert that to
readable.pipeThrough(allTransformers).pipeTo(writable)
Where allTransformers
is the TransformStream combining transformer1
and transformer2
.
Below is not real functional code, but I'd think there would be a way to do something like this:
const allTransformers = transformer1.pipeThrough(transformer2)
This is clearly a simplified example, but you can imagine there being many transform streams and I'd like to refactor to a single, reusable transform pipeline.
I had the same issue, here are my solutions.
In the example below,
UpperCaseTransformStream
pipes the stream throughTextDecoderStream
,UpperCaseTextStream
andTextEncoderStream
.Here is a more generic implementation using the class
PipelineStream
which extendsTransformStream
and accepts an array ofTransformStream
instances as first parameter.