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
Логическое значение, равное true, если TTY в данный момент настроен для работы как сырое устройство. По умолчанию равно false.
readStream.isTTY
Логическое значение, которое всегда 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
Целое число, определяющее количество столбцов, имеющихся у 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. - Возвращает: <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()
- Возвращает: <number[]>
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
A boolean that is always true.
writeStream.moveCursor(dx, dy[, callback])
-
dx<number> -
dy<number> -
callback<Функция> Вызывается после завершения операции. - Возвращает: <логическое значение>
falseесли поток хочет, чтобы вызывающий код ожидал, пока событие'drain'будет излучено, прежде чем продолжить запись дополнительных данных; в противном случаеtrue.
writeStream.moveCursor() перемещает курсор этого WriteStream относительно его текущего положения.
writeStream.rows
Свойство, указывающее количество строк, имеющихся в текущем 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-v12.x/docs/api/tty.html