summaryrefslogtreecommitdiff
path: root/cli/js/io.ts
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2020-04-22 21:30:45 +0200
committerGitHub <noreply@github.com>2020-04-22 21:30:45 +0200
commit68d287eed5dcdc7b84a317fa90c4c9131389c0b8 (patch)
tree2d6c623858ef89504f26a49ffd169e1d2b2e8453 /cli/js/io.ts
parentda6819a14c54d1a2221b37f00b3302eb2d50660b (diff)
BREAKING CHANGE: rename Deno.toAsyncIterator() to Deno.iter() (#4848)
* rename Deno.toAsyncIterator() to Deno.iter() * adds sync version Deno.iterSync() * adds optional second argument for buffer size
Diffstat (limited to 'cli/js/io.ts')
-rw-r--r--cli/js/io.ts47
1 files changed, 28 insertions, 19 deletions
diff --git a/cli/js/io.ts b/cli/js/io.ts
index b5af34224..023718100 100644
--- a/cli/js/io.ts
+++ b/cli/js/io.ts
@@ -84,23 +84,32 @@ export async function copy(dst: Writer, src: Reader): Promise<number> {
return n;
}
-export function toAsyncIterator(r: Reader): AsyncIterableIterator<Uint8Array> {
- const b = new Uint8Array(1024);
- return {
- [Symbol.asyncIterator](): AsyncIterableIterator<Uint8Array> {
- return this;
- },
-
- async next(): Promise<IteratorResult<Uint8Array>> {
- const result = await r.read(b);
- if (result === EOF) {
- return { value: new Uint8Array(), done: true };
- }
-
- return {
- value: b.subarray(0, result),
- done: false,
- };
- },
- };
+export async function* iter(
+ r: Reader,
+ bufSize?: number
+): AsyncIterableIterator<Uint8Array> {
+ const b = new Uint8Array(bufSize ?? 1024);
+ while (true) {
+ const result = await r.read(b);
+ if (result === EOF) {
+ break;
+ }
+
+ yield b.subarray(0, result);
+ }
+}
+
+export function* iterSync(
+ r: SyncReader,
+ bufSize?: number
+): IterableIterator<Uint8Array> {
+ const b = new Uint8Array(bufSize ?? 1024);
+ while (true) {
+ const result = r.readSync(b);
+ if (result === EOF) {
+ break;
+ }
+
+ yield b.subarray(0, result);
+ }
}