feat(std/io): add fromStreamReader, fromStreamWriter (#5789)

This commit is contained in:
Marcos Casagrande 2020-06-27 22:55:01 +02:00 committed by GitHub
parent a216bd06fc
commit a829fa8f57
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 168 additions and 0 deletions

34
std/io/streams.ts Normal file
View file

@ -0,0 +1,34 @@
// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
export function fromStreamWriter(
streamWriter: WritableStreamDefaultWriter<Uint8Array>
): Deno.Writer {
return {
async write(p: Uint8Array): Promise<number> {
await streamWriter.ready;
await streamWriter.write(p);
return p.length;
},
};
}
export function fromStreamReader(
streamReader: ReadableStreamDefaultReader<Uint8Array>
): Deno.Reader {
const buffer = new Deno.Buffer();
return {
async read(p: Uint8Array): Promise<number | null> {
if (buffer.empty()) {
const res = await streamReader.read();
if (res.done) {
return null; // EOF
}
await Deno.writeAll(buffer, res.value);
}
return buffer.read(p);
},
};
}