change type of stdio handles in JS api (#4891)

This commit is contained in:
Bartek Iwańczuk 2020-04-25 01:01:25 +02:00 committed by GitHub
parent 4a8d25646a
commit 912a57f6a2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 82 additions and 12 deletions

View file

@ -97,9 +97,66 @@ export class File
}
}
export const stdin = new File(0);
export const stdout = new File(1);
export const stderr = new File(2);
class Stdin implements Reader, SyncReader, Closer {
readonly rid: number;
constructor() {
this.rid = 0;
}
read(p: Uint8Array): Promise<number | EOF> {
return read(this.rid, p);
}
readSync(p: Uint8Array): number | EOF {
return readSync(this.rid, p);
}
close(): void {
close(this.rid);
}
}
class Stdout implements Writer, SyncWriter, Closer {
readonly rid: number;
constructor() {
this.rid = 1;
}
write(p: Uint8Array): Promise<number> {
return write(this.rid, p);
}
writeSync(p: Uint8Array): number {
return writeSync(this.rid, p);
}
close(): void {
close(this.rid);
}
}
export class Stderr implements Writer, SyncWriter, Closer {
readonly rid: number;
constructor() {
this.rid = 2;
}
write(p: Uint8Array): Promise<number> {
return write(this.rid, p);
}
writeSync(p: Uint8Array): number {
return writeSync(this.rid, p);
}
close(): void {
close(this.rid);
}
}
export const stdin = new Stdin();
export const stdout = new Stdout();
export const stderr = new Stderr();
function checkOpenOptions(options: OpenOptions): void {
if (Object.values(options).filter((val) => val === true).length === 0) {