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.
22 lines
709 B
JavaScript
22 lines
709 B
JavaScript
4 years ago
|
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;
|