Spec-Zone.ru › Deno 2

tty

Модуль node:tty предоставляет классы tty.ReadStream и tty.WriteStream. В большинстве случаев использовать этот модуль напрямую не потребуется или будет невозможно. Однако к нему можно обратиться с помощью:

import tty from 'node:tty';

Когда Node.js обнаруживает, что запущен с подключенным текстовым терминалом («TTY»), process.stdin по умолчанию инициализируется как экземпляр tty.ReadStream, а process.stdout и process.stderr по умолчанию становятся экземплярами tty.WriteStream. Предпочтительный способ определить, запущен ли Node.js в контексте TTY, — проверить, что значение свойства process.stdout.isTTY равно true:

$ node -p -e "Boolean(process.stdout.isTTY)"
true
$ node -p -e "Boolean(process.stdout.isTTY)" | cat
false

В большинстве случаев у приложения практически не должно быть причин вручную создавать экземпляры классов tty.ReadStream и tty.WriteStream.

Использование в Deno

import * as mod from "node:tty";

класс ReadStream

наследует net.Socket

Использование в Deno

import { ReadStream } from "node:tty";

Представляет читаемую сторону TTY. В обычных обстоятельствах process.stdin будет единственным экземпляром tty.ReadStream в процессе Node.js, и создавать дополнительные экземпляры не потребуется.

Конструкторы

ReadStream(
fd: number,
options?: net.SocketConstructorOpts,
)
новый

Свойства

isRaw: boolean

Значение boolean равно true, если TTY в данный момент настроен для работы в качестве необработанного устройства.

При запуске процесса этот флаг всегда имеет значение false, даже если терминал работает в необработанном режиме. Его значение изменяется при последующих вызовах setRawMode.

isTTY: boolean

Значение boolean для экземпляров tty.ReadStream всегда равно true.

Методы

setRawMode(mode: boolean): this

Позволяет настроить tty.ReadStream для работы в качестве необработанного устройства.

В необработанном режиме ввод всегда доступен посимвольно, без учета модификаторов. Кроме того, отключается вся специальная обработка символов терминалом, включая отображение введенных символов. В этом режиме Ctrl+C больше не вызывает SIGINT.


класс WriteStream

наследует net.Socket

Использование в Deno

import { WriteStream } from "node:tty";

Представляет записываемую сторону TTY. В обычных обстоятельствах process.stdout и process.stderr будут единственными экземплярами tty.WriteStream, создаваемыми для процесса Node.js, и создавать дополнительные экземпляры не потребуется.

Конструкторы

WriteStream(fd: number)
новый

Свойства

columns: number

Значение number указывает количество столбцов в текущем TTY. Это свойство обновляется при каждом возникновении события 'resize'.

isTTY: boolean

Значение boolean всегда равно true.

rows: number

Значение number указывает количество строк в текущем TTY. Это свойство обновляется при каждом возникновении события 'resize'.

Методы

addListener(
event: string,
listener: (...args: any[]) => void,
): this
addListener(
event: "resize",
listener: () => void,
): this
clearLine(
dir: Direction,
callback?: () => void,
): boolean

writeStream.clearLine() очищает текущую строку этого WriteStream в направлении, заданном параметром dir.

clearScreenDown(callback?: () => void): boolean

writeStream.clearScreenDown() очищает этот WriteStream от текущего положения курсора вниз.

cursorTo(
x: number,
y?: number,
callback?: () => void,
): boolean

writeStream.cursorTo() перемещает курсор этого WriteStream в указанную позицию.

cursorTo(
x: number,
callback: () => void,
): boolean
emit(
event: string | symbol,
...args: any[],
): boolean
emit(event: "resize"): boolean
getColorDepth(env?: object): number

Возвращает:

  • 1 для 2 цветов,
  • 4 для 16 цветов,
  • 8 для 256 цветов,
  • 24 для 16 777 216 поддерживаемых цветов.

Используйте этот метод, чтобы определить, какие цвета поддерживает терминал. Из-за особенностей работы с цветами в терминалах возможны как ложноположительные, так и ложноотрицательные результаты. Это зависит от информации о процессе и переменных среды, которые могут неверно указывать используемый терминал. Для имитации использования конкретного терминала можно передать объект env. Это может быть полезно для проверки поведения при определенных настройках среды.

Чтобы принудительно задать поддержку определенного количества цветов, используйте одну из следующих настроек среды.

  • 2 цвета: FORCE_COLOR = 0 (отключает цвета)
  • 16 цветов: FORCE_COLOR = 1
  • 256 цветов: FORCE_COLOR = 2
  • 16 777 216 цветов: FORCE_COLOR = 3

Поддержку цветов также можно отключить с помощью переменных среды NO_COLOR и NODE_DISABLE_COLORS.

getWindowSize(): [number, number]

writeStream.getWindowSize() возвращает размер TTY, соответствующего этому WriteStream. Массив имеет тип [numColumns, numRows], где numColumns и numRows обозначают количество столбцов и строк в соответствующем TTY.

hasColors(count?: number): boolean

Возвращает true, если writeStream поддерживает не меньше цветов, чем указано в count. Минимальный уровень поддержки — 2 цвета (черный и белый).

Для этого метода характерны те же ложноположительные и ложноотрицательные результаты, что и описанные в writeStream.getColorDepth().

process.stdout.hasColors();
// Returns true or false depending on if `stdout` supports at least 16 colors.
process.stdout.hasColors(256);
// Returns true or false depending on if `stdout` supports at least 256 colors.
process.stdout.hasColors({ TMUX: '1' });
// Returns true.
process.stdout.hasColors(2 ** 24, { TMUX: '1' });
// Returns false (the environment setting pretends to support 2 ** 8 colors).
hasColors(env?: object): boolean
hasColors(
count: number,
env?: object,
): boolean
moveCursor(
dx: number,
dy: number,
callback?: () => void,
): boolean

writeStream.moveCursor() перемещает курсор этого WriteStream относительно его текущего положения.

on(
event: string,
listener: (...args: any[]) => void,
): this
on(
event: "resize",
listener: () => void,
): this
once(
event: string,
listener: (...args: any[]) => void,
): this
once(
event: "resize",
listener: () => void,
): this
prependListener(
event: string,
listener: (...args: any[]) => void,
): this
prependListener(
event: "resize",
listener: () => void,
): this
prependOnceListener(
event: string,
listener: (...args: any[]) => void,
): this
prependOnceListener(
event: "resize",
listener: () => void,
): this

функция isatty

Использование в Deno

import { isatty } from "node:tty";
isatty(fd: number): boolean

Метод tty.isatty() возвращает true, если указанный fd связан с TTY, и false в противном случае, в том числе если fd не является неотрицательным целым числом.

Параметры

fd: number

Числовой файловый дескриптор

Тип возвращаемого значения

boolean

псевдоним типа Direction

Использование в Deno

import { type Direction } from "node:tty";

-1 — влево от курсора, 0 — вся строка, 1 — вправо от курсора

Определение

-1
| 0
| 1

© 2018–2025 the Deno authors
Licensed under the MIT License.
https://docs.deno.com/api/node/tty

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API