TTY
Исходный код: lib/tty.js
Модуль tty предоставляет классы tty.ReadStream и tty.WriteStream. В большинстве случаев использование этого модуля напрямую не требуется или невозможно. Однако к нему можно получить доступ с помощью:
const tty = require('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.
Класс: tty.ReadStream
- Расширяет: <net.Socket>
Представляет читаемую сторону TTY. В обычных ситуациях process.stdin будет единственным экземпляром tty.ReadStream в процессе Node.js, и нет необходимости создавать дополнительные экземпляры.
readStream.isRaw
Значение, boolean равное true, если TTY в настоящее время настроен для работы как сырой устройства. По умолчанию false.
readStream.isTTY
Значение, boolean всегда равное true для экземпляров tty.ReadStream.
readStream.setRawMode(mode)
-
mode<boolean> Еслиtrue, настраиваетtty.ReadStreamдля работы как сырое устройство. Еслиfalse, настраиваетtty.ReadStreamв его режиме по умолчанию. СвойствоreadStream.isRawбудет установлено в результирующий режим. - Возвращает: <this> Экземпляр потока чтения.
Позволяет настроить tty.ReadStream таким образом, чтобы он работал как сырое устройство.
В режиме raw вход всегда доступен символом за символом, без модификаторов. Кроме того, все специальная обработка символов терминалом отключена, включая вывод введенных символов. Ctrl+C больше не вызовет SIGINT в этом режиме.
Класс: tty.WriteStream
- Расширяет: <net.Socket>
Представляет собой записываемую сторону TTY. В обычных обстоятельствах, process.stdout и process.stderr будут единственными экземплярами tty.WriteStream для процесса Node.js, и нет причин для создания дополнительных экземпляров.
Событие: 'resize'
Событие 'resize' срабатывает всякий раз, когда изменяются свойства writeStream.columns или writeStream.rows. При вызове обработчик события не получает аргументов.
process.stdout.on('resize', () => {
console.log('screen size has changed!');
console.log(`${process.stdout.columns}x${process.stdout.rows}`);
}); writeStream.clearLine(dir[, callback])
-
dir<number>-
-1: влево от курсора -
1: вправо от курсора -
0: вся строка
-
-
callback<Функция> Вызывается по завершении операции. - Возвращает: <boolean>
falseесли поток хочет, чтобы вызывающий код ожидал срабатывания события'drain'перед продолжением записи дополнительных данных; в противном случаеtrue.
writeStream.clearLine() очищает текущую строку данного WriteStream в направлении, указанном dir.
writeStream.clearScreenDown([callback])
-
callback<Функция> Вызывается по завершении операции. - Возвращает: <boolean>
falseесли поток хочет, чтобы вызывающий код ожидал срабатывания события'drain'перед продолжением записи дополнительных данных; в противном случаеtrue.
writeStream.clearScreenDown() очищает данный WriteStream от текущего курсора вниз.
writeStream.columns
Значение, указывающее количество столбцов, имеющихся в текущем TTY. Это свойство обновляется при срабатывании события 'resize'.
writeStream.cursorTo(x[, y][, callback])
-
x<число> -
y<число> -
callback<Функция> Вызывается по завершении операции. - Возвращает: <boolean>
falseесли поток хочет, чтобы вызывающий код ожидал срабатывания события'drain'перед продолжением записи дополнительных данных; в противном случаеtrue.
writeStream.cursorTo() перемещает курсор этого WriteStream в указанную позицию.
writeStream.getColorDepth([env])
-
env<Объект> Объект, содержащий переменные окружения для проверки. Это позволяет моделировать использование конкрельного терминала. По умолчанию:process.env. - Возвращает: <число>
Возвращает:
-
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()
- Возвращает: <массив чисел>
writeStream.getWindowSize() возвращает размер TTY, соответствующий этому WriteStream. Массив имеет тип [numColumns, numRows], где numColumns и numRows представляют количество столбцов и строк в соответствующем TTY.
writeStream.hasColors([count][, env])
-
count<целое число> Запрошенное количество цветов (минимум 2). По умолчанию: 16. -
env<Объект> Объект, содержащий переменные окружения для проверки. Это позволяет моделировать использование конкретного терминала. По умолчанию: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). writeStream.isTTY
Значение boolean, которое всегда true.
writeStream.moveCursor(dx, dy[, callback])
-
dx<число> -
dy<число> -
callback<Функция> Вызывается по завершении операции. - Возвращает: <boolean>
falseесли поток хочет, чтобы вызывающий код ожидал срабатывания события'drain'перед продолжением записи дополнительных данных; в противном случаеtrue.
writeStream.moveCursor() перемещает курсор этого WriteStream относительно его текущей позиции.
writeStream.rows
Значение, указывающее количество строк, имеющихся в текущем TTY. Это свойство обновляется при срабатывании события 'resize'.
tty.isatty(fd)
Метод 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/dist/latest-v14.x/docs/api/tty.html