summaryrefslogtreecommitdiff
path: root/cli/js/io.ts
diff options
context:
space:
mode:
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);
+ }
}