Open JounQin opened 3 years ago
StreamSavers don't work with TransformStreams unless they are natively supported and if ReadableStream are transferable with postMessage.
test(() => {
// Transferable stream was first enabled in chrome v73 behind a flag
const { readable } = new TransformStream()
const mc = new MessageChannel()
mc.port1.postMessage(readable, [readable])
mc.port1.close()
mc.port2.close()
supportsTransferable = true
// Freeze TransformStream object (can only work with native)
Object.defineProperty(streamSaver, 'TransformStream', {
configurable: false,
writable: false,
value: TransformStream
})
})
TransformStream
so StreamSaver just resolves into using only WritableStreams that pipes the data to MessageChannel and then forwards it to the service workerso even if you assign TransformStream to the global scope before importing StreamSaver then it has no use for it anyway.
@jimmywarting
The documentation seems incorrect.
StreamSaver operates on two modes:
Ups :P
Setting TransformStream should have no affect :P should remove it from ReadMe ^^
Assigning WritableStream
seems should be:
streamSaver.WritableStream = ponyfill.WritableStream
Yep, that should stay
Maybe
streamSaver.WritableStream = streamSaver.WritableStream || ponyfill.WritableStream
Working on a PR.
As title.
And
streamSaver.TransformStream
is notconfigurable
norwritable
, so it can not be changed dynamically likestreamSaver.WritableStream
.