You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Hydro/packages/ui-default/utils/pipeStream.js

22 lines
709 B
JavaScript

export default async function pipeStream(read, write, abort) {
if (window.WritableStream && read.pipeTo) {
const abortController = new AbortController();
if (abort) abort.abort = abortController.abort.bind(abortController);
await read.pipeTo(write, abortController);
} else {
const writer = write.getWriter();
if (abort) abort.abort = writer.abort.bind(writer);
const reader = read.getReader();
// eslint-disable-next-line no-constant-condition
while (1) {
const readResult = await reader.read();
if (readResult.done) {
writer.close();
break;
} else writer.write(readResult.value);
}
}
}
window.Hydro.utils.pipeStream = pipeStream;