mirror of
https://github.com/denoland/deno.git
synced 2025-01-09 07:39:15 -05:00
change type of stdio handles in JS api (#4891)
This commit is contained in:
parent
4a8d25646a
commit
912a57f6a2
3 changed files with 82 additions and 12 deletions
|
@ -97,9 +97,66 @@ export class File
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const stdin = new File(0);
|
class Stdin implements Reader, SyncReader, Closer {
|
||||||
export const stdout = new File(1);
|
readonly rid: number;
|
||||||
export const stderr = new File(2);
|
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 {
|
function checkOpenOptions(options: OpenOptions): void {
|
||||||
if (Object.values(options).filter((val) => val === true).length === 0) {
|
if (Object.values(options).filter((val) => val === true).length === 0) {
|
||||||
|
|
24
cli/js/lib.deno.ns.d.ts
vendored
24
cli/js/lib.deno.ns.d.ts
vendored
|
@ -825,12 +825,24 @@ declare namespace Deno {
|
||||||
close(): void;
|
close(): void;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** An instance of `Deno.File` for `stdin`. */
|
export interface Stdin extends Reader, SyncReader, Closer {
|
||||||
export const stdin: File;
|
readonly rid: number;
|
||||||
/** An instance of `Deno.File` for `stdout`. */
|
}
|
||||||
export const stdout: File;
|
|
||||||
/** An instance of `Deno.File` for `stderr`. */
|
export interface Stdout extends Writer, SyncWriter, Closer {
|
||||||
export const stderr: File;
|
readonly rid: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface Stderr extends Writer, SyncWriter, Closer {
|
||||||
|
readonly rid: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** A handle for `stdin`. */
|
||||||
|
export const stdin: Stdin;
|
||||||
|
/** A handle for `stdout`. */
|
||||||
|
export const stdout: Stdout;
|
||||||
|
/** A handle for `stderr`. */
|
||||||
|
export const stderr: Stderr;
|
||||||
|
|
||||||
export interface OpenOptions {
|
export interface OpenOptions {
|
||||||
/** Sets the option for read access. This option, when `true`, means that the
|
/** Sets the option for read access. This option, when `true`, means that the
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
|
// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
|
||||||
import { isTypedArray, TypedArray } from "./util.ts";
|
import { isTypedArray, TypedArray } from "./util.ts";
|
||||||
import { TextEncoder } from "./text_encoding.ts";
|
import { TextEncoder } from "./text_encoding.ts";
|
||||||
import { File, stdout } from "../files.ts";
|
import { SyncWriter } from "../io.ts";
|
||||||
|
import { stdout } from "../files.ts";
|
||||||
import { cliTable } from "./console_table.ts";
|
import { cliTable } from "./console_table.ts";
|
||||||
import { exposeForTest } from "../internals.ts";
|
import { exposeForTest } from "../internals.ts";
|
||||||
import { PromiseState } from "./promise.ts";
|
import { PromiseState } from "./promise.ts";
|
||||||
|
@ -38,12 +39,12 @@ export class CSI {
|
||||||
|
|
||||||
/* eslint-disable @typescript-eslint/no-use-before-define */
|
/* eslint-disable @typescript-eslint/no-use-before-define */
|
||||||
|
|
||||||
function cursorTo(stream: File, _x: number, _y?: number): void {
|
function cursorTo(stream: SyncWriter, _x: number, _y?: number): void {
|
||||||
const uint8 = new TextEncoder().encode(CSI.kClear);
|
const uint8 = new TextEncoder().encode(CSI.kClear);
|
||||||
stream.writeSync(uint8);
|
stream.writeSync(uint8);
|
||||||
}
|
}
|
||||||
|
|
||||||
function clearScreenDown(stream: File): void {
|
function clearScreenDown(stream: SyncWriter): void {
|
||||||
const uint8 = new TextEncoder().encode(CSI.kClearScreenDown);
|
const uint8 = new TextEncoder().encode(CSI.kClearScreenDown);
|
||||||
stream.writeSync(uint8);
|
stream.writeSync(uint8);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue