Spec-Zone.ru › Node.js

TTY

Исходный код: lib/tty.js

Стабильность: 2 — Стабильный

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

const tty = require('node:tty');
jscopy

Когда 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
consolecopy

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

Класс: tty.ReadStream

Добавлено в: v0.5.8
  • Наследуется от: <net.Socket>

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

readStream.isRaw

Добавлено в: v0.7.7

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

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

readStream.isTTY

Добавлено в: v0.5.8

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

readStream.setRawMode(mode)

Добавлено в: v0.7.7
  • mode <boolean> Если true, настраивает tty.ReadStream для работы в режиме raw-устройства. Если false, настраивает tty.ReadStream для работы в режиме по умолчанию. Свойству readStream.isRaw будет присвоено значение, соответствующее установленному режиму.
  • Возвращает: <this> Экземпляр потока чтения.

Позволяет настроить tty.ReadStream для работы в режиме raw-устройства.

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

Класс: tty.WriteStream

Добавлено в: v0.5.8
  • Наследуется от: <net.Socket>

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

new tty.ReadStream(fd[, options])

Добавлено в: v0.5.8
История
Версия Изменения
v0.9.4

Поддерживается аргумент options.

  • fd <number> Дескриптор файла, связанный с TTY.
  • options <Object> Параметры, передаваемые родительскому net.Socket; см. options конструктора net.Socket.
  • Возвращает: <tty.ReadStream>

Создаёт ReadStream для fd, связанного с TTY.

new tty.WriteStream(fd)

Добавлено в: v0.5.8
  • fd <number> Дескриптор файла, связанный с TTY.
  • Возвращает: <tty.WriteStream>

Создаёт WriteStream для fd, связанного с TTY.

Событие: 'resize'

Добавлено в: v0.7.7

Событие 'resize' возникает при изменении свойства writeStream.columns или writeStream.rows. При вызове функции обратного вызова слушателя аргументы не передаются.

process.stdout.on('resize', () => {
  console.log('screen size has changed!');
  console.log(`${process.stdout.columns}x${process.stdout.rows}`);
});
jscopy

writeStream.clearLine(dir[, callback])

Добавлено в: v0.7.7
История
Версия Изменения
v12.7.0

Становятся доступны функция обратного вызова и возвращаемое значение метода write() потока.

  • dir <number>
    • -1: влево от курсора
    • 1: вправо от курсора
    • 0: вся строка
  • callback <Function> Вызывается после завершения операции.
  • Возвращает: <boolean> false, если поток требует, чтобы вызывающий код дождался возникновения события 'drain', прежде чем продолжить запись дополнительных данных; в противном случае — true.

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

writeStream.clearScreenDown([callback])

Добавлено в: v0.7.7
История
Версия Изменения
v12.7.0

Становятся доступны функция обратного вызова и возвращаемое значение метода write() потока.

  • callback <Function> Вызывается после завершения операции.
  • Возвращает: <boolean> false, если поток требует, чтобы вызывающий код дождался возникновения события 'drain', прежде чем продолжить запись дополнительных данных; в противном случае — true.

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

writeStream.columns

Добавлено в: v0.7.7

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

writeStream.cursorTo(x[, y][, callback])

Добавлено в: v0.7.7
История
Версия Изменения
v12.7.0

Становятся доступны функция обратного вызова и возвращаемое значение метода write() потока.

  • x <number>
  • y <number>
  • callback <Function> Вызывается после завершения операции.
  • Возвращает: <boolean> false, если поток требует, чтобы вызывающий код дождался возникновения события 'drain', прежде чем продолжить запись дополнительных данных; в противном случае — true.

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

writeStream.getColorDepth([env])

Добавлено в: v9.9.0
  • env <Object> Объект, содержащий проверяемые переменные среды. Это позволяет имитировать использование определённого терминала. По умолчанию: process.env.
  • Возвращает: <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.

writeStream.getWindowSize()

Добавлено в: v0.7.7
  • Возвращает: <number[]>

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

writeStream.hasColors([count][, env])

Добавлено в: v11.13.0, v10.16.0
  • count <integer> Запрашиваемое количество цветов (не менее 2). По умолчанию: 16.
  • env <Object> Объект, содержащий проверяемые переменные среды. Это позволяет имитировать использование определённого терминала. По умолчанию: process.env.
  • Возвращает: <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).
jscopy

writeStream.isTTY

Добавлено в: v0.5.8

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

writeStream.moveCursor(dx, dy[, callback])

Добавлено в: v0.7.7
История
Версия Изменения
v12.7.0

Становятся доступны функция обратного вызова и возвращаемое значение метода write() потока.

  • dx <number>
  • dy <number>
  • callback <Function> Вызывается после завершения операции.
  • Возвращает: <boolean> false, если поток требует, чтобы вызывающий код дождался возникновения события 'drain', прежде чем продолжить запись дополнительных данных; в противном случае — true.

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

writeStream.rows

Добавлено в: v0.7.7

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

tty.isatty(fd)

Добавлено в: v0.5.8
  • fd <number> Числовой дескриптор файла
  • Возвращает: <boolean>

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

© Joyent, Inc. and other Node contributors
Licensed under the MIT License.
Node.js is a trademark of Joyent, Inc. and is used with its permission.
We are not endorsed by or affiliated with Joyent.
https://nodejs.org/api/tty.html

Spec-Zone.ru

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