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 для работы как сырое устройство.
В режиме сырого ввода всегда доступен символ за символом, без модификаторов. Кроме того, все специальные обработки символов терминалом отключены, включая отображение вводимых символов. 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
A number определяющий количество столбцов в текущем TTY. Это свойство обновляется при каждом срабатывании события 'resize'.
writeStream.cursorTo(x[, y][, callback])
-
x<number> -
y<number> -
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. - Возвращает: <логическое значение>
Возвращает 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
A boolean который всегда true.
writeStream.moveCursor(dx, dy[, callback])
-
dx<number> -
dy<number> -
callback<Функция> Вызывается после завершения операции. - Возвращает: <boolean>
falseесли поток хочет, чтобы вызывающий код ждал срабатывания события'drain'перед продолжением записи дополнительных данных; в противном случаеtrue.
writeStream.moveCursor() перемещает курсор этого WriteStream относительно его текущего положения.
writeStream.rows
A number определяющий количество строк в текущем TTY. Это свойство обновляется при каждом срабатывании события 'resize'.
tty.isatty(fd)
-
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-v16.x/docs/api/tty.html