TTY
[Estável: 2 - Estável]
Estável: 2 Estabilidade: 2 - Estável
Código-fonte: lib/tty.js
O módulo node:tty
fornece as classes tty.ReadStream
e tty.WriteStream
. Na maioria dos casos, não será necessário ou possível usar este módulo diretamente. No entanto, ele pode ser acessado usando:
const tty = require('node:tty');
Quando o Node.js detecta que está sendo executado com um terminal de texto ("TTY") anexado, process.stdin
será, por padrão, inicializado como uma instância de tty.ReadStream
e ambos process.stdout
e process.stderr
serão, por padrão, instâncias de tty.WriteStream
. O método preferido para determinar se o Node.js está sendo executado dentro de um contexto TTY é verificar se o valor da propriedade process.stdout.isTTY
é true
:
$ node -p -e "Boolean(process.stdout.isTTY)"
true
$ node -p -e "Boolean(process.stdout.isTTY)" | cat
false
Na maioria dos casos, não deve haver pouca ou nenhuma razão para que um aplicativo crie manualmente instâncias das classes tty.ReadStream
e tty.WriteStream
.
Classe: tty.ReadStream
Adicionado em: v0.5.8
- Estende: <net.Socket>
Representa o lado legível de um TTY. Em circunstâncias normais, process.stdin
será a única instância de tty.ReadStream
em um processo Node.js e não deve haver razão para criar instâncias adicionais.
readStream.isRaw
Adicionado em: v0.7.7
Um boolean
que é true
se o TTY estiver atualmente configurado para operar como um dispositivo bruto.
Este sinalizador é sempre false
quando um processo é iniciado, mesmo que o terminal esteja operando no modo bruto. Seu valor mudará com chamadas subsequentes para setRawMode
.
readStream.isTTY
Adicionado em: v0.5.8
Um boolean
que é sempre true
para instâncias de tty.ReadStream
.
readStream.setRawMode(mode)
Adicionado em: v0.7.7
mode
<boolean> Setrue
, configura otty.ReadStream
para operar como um dispositivo bruto. Sefalse
, configura otty.ReadStream
para operar em seu modo padrão. A propriedadereadStream.isRaw
será definida para o modo resultante.- Retorna: <this> A instância do stream de leitura.
Permite a configuração de tty.ReadStream
para que ele opere como um dispositivo bruto.
Quando em modo bruto, a entrada está sempre disponível caractere por caractere, não incluindo modificadores. Além disso, todo o processamento especial de caracteres pelo terminal é desativado, incluindo o eco dos caracteres de entrada. + não causará mais um SIGINT
quando estiver neste modo.
Classe: tty.WriteStream
Adicionado em: v0.5.8
- Estende: <net.Socket>
Representa o lado gravável de um TTY. Em circunstâncias normais, process.stdout
e process.stderr
serão as únicas instâncias de tty.WriteStream
criadas para um processo Node.js e não deve haver razão para criar instâncias adicionais.
new tty.ReadStream(fd[, options])
[Histórico]
Versão | Mudanças |
---|---|
v0.9.4 | O argumento options é suportado. |
v0.5.8 | Adicionado em: v0.5.8 |
fd
<number> Um descritor de arquivo associado a um TTY.options
<Object> Opções passadas para onet.Socket
pai, vejaoptions
donet.Socket
constructor.- Retorna <tty.ReadStream>
Cria um ReadStream
para fd
associado a um TTY.
new tty.WriteStream(fd)
Adicionado em: v0.5.8
fd
<number> Um descritor de arquivo associado a um TTY.- Retorna <tty.WriteStream>
Cria um WriteStream
para fd
associado a um TTY.
Evento: 'resize'
Adicionado em: v0.7.7
O evento 'resize'
é emitido sempre que uma das propriedades writeStream.columns
ou writeStream.rows
é alterada. Nenhum argumento é passado para o callback do listener quando chamado.
process.stdout.on('resize', () => {
console.log('o tamanho da tela foi alterado!');
console.log(`${process.stdout.columns}x${process.stdout.rows}`);
});
writeStream.clearLine(dir[, callback])
[Histórico]
Versão | Alterações |
---|---|
v12.7.0 | O callback write() do stream e o valor de retorno são expostos. |
v0.7.7 | Adicionado em: v0.7.7 |
dir
<number>-1
: à esquerda do cursor1
: à direita do cursor0
: a linha inteira
callback
<Function> Invocado quando a operação é concluída.Retorna: <boolean>
false
se o stream deseja que o código de chamada espere que o evento'drain'
seja emitido antes de continuar a gravar dados adicionais; caso contrário,true
.
writeStream.clearLine()
limpa a linha atual deste WriteStream
em uma direção identificada por dir
.
writeStream.clearScreenDown([callback])
[Histórico]
Versão | Alterações |
---|---|
v12.7.0 | O callback write() do stream e o valor de retorno são expostos. |
v0.7.7 | Adicionado em: v0.7.7 |
callback
<Function> Invocado quando a operação é concluída.- Retorna: <boolean>
false
se o stream deseja que o código de chamada espere que o evento'drain'
seja emitido antes de continuar a gravar dados adicionais; caso contrário,true
.
writeStream.clearScreenDown()
limpa este WriteStream
do cursor atual para baixo.
writeStream.columns
Adicionado em: v0.7.7
Um number
especificando o número de colunas que o TTY possui atualmente. Esta propriedade é atualizada sempre que o evento 'resize'
é emitido.
writeStream.cursorTo(x[, y][, callback])
[Histórico]
Versão | Mudanças |
---|---|
v12.7.0 | O callback e o valor de retorno de write() do stream são expostos. |
v0.7.7 | Adicionado em: v0.7.7 |
x
<number>y
<number>callback
<Function> Invocado quando a operação for concluída.- Retorna: <boolean>
false
se o stream deseja que o código de chamada espere que o evento'drain'
seja emitido antes de continuar a gravar dados adicionais; caso contrário,true
.
writeStream.cursorTo()
move o cursor deste WriteStream
para a posição especificada.
writeStream.getColorDepth([env])
Adicionado em: v9.9.0
env
<Object> Um objeto contendo as variáveis de ambiente para verificar. Isso permite simular o uso de um terminal específico. Padrão:process.env
.- Retorna: <number>
Retorna:
1
para 2,4
para 16,8
para 256,24
para 16.777.216 cores suportadas.
Use isso para determinar quais cores o terminal suporta. Devido à natureza das cores nos terminais, é possível ter falsos positivos ou falsos negativos. Depende das informações do processo e das variáveis de ambiente que podem mentir sobre qual terminal está sendo usado. É possível passar um objeto env
para simular o uso de um terminal específico. Isso pode ser útil para verificar como configurações de ambiente específicas se comportam.
Para impor um suporte de cor específico, use uma das configurações de ambiente abaixo.
- 2 cores:
FORCE_COLOR = 0
(Desativa as cores) - 16 cores:
FORCE_COLOR = 1
- 256 cores:
FORCE_COLOR = 2
- 16.777.216 cores:
FORCE_COLOR = 3
A desativação do suporte a cores também é possível usando as variáveis de ambiente NO_COLOR
e NODE_DISABLE_COLORS
.
writeStream.getWindowSize()
Adicionado em: v0.7.7
- Retorna: <number[]>
writeStream.getWindowSize()
retorna o tamanho do TTY correspondente a este WriteStream
. O array é do tipo [numColumns, numRows]
onde numColumns
e numRows
representam o número de colunas e linhas no TTY correspondente.
writeStream.hasColors([count][, env])
Adicionado em: v11.13.0, v10.16.0
count
<integer> O número de cores solicitadas (mínimo 2). Padrão: 16.env
<Object> Um objeto contendo as variáveis de ambiente para verificar. Isso permite simular o uso de um terminal específico. Padrão:process.env
.- Retorna: <boolean>
Retorna true
se o writeStream
suportar pelo menos tantas cores quanto as fornecidas em count
. O suporte mínimo é 2 (preto e branco).
Isso tem os mesmos falsos positivos e negativos descritos em writeStream.getColorDepth()
.
process.stdout.hasColors();
// Retorna true ou false dependendo se `stdout` suporta pelo menos 16 cores.
process.stdout.hasColors(256);
// Retorna true ou false dependendo se `stdout` suporta pelo menos 256 cores.
process.stdout.hasColors({ TMUX: '1' });
// Retorna true.
process.stdout.hasColors(2 ** 24, { TMUX: '1' });
// Retorna false (a configuração do ambiente finge suportar 2 ** 8 cores).
writeStream.isTTY
Adicionado em: v0.5.8
Um boolean
que é sempre true
.
writeStream.moveCursor(dx, dy[, callback])
[Histórico]
Versão | Mudanças |
---|---|
v12.7.0 | O retorno de chamada e o valor de retorno write() do stream são expostos. |
v0.7.7 | Adicionado em: v0.7.7 |
dx
<number>dy
<number>callback
<Function> Invocado quando a operação for concluída.- Retorna: <boolean>
false
se o stream deseja que o código de chamada espere que o evento'drain'
seja emitido antes de continuar a gravar dados adicionais; caso contrário,true
.
writeStream.moveCursor()
move o cursor deste WriteStream
relativo à sua posição atual.
writeStream.rows
Adicionado em: v0.7.7
Um number
especificando o número de linhas que o TTY tem atualmente. Esta propriedade é atualizada sempre que o evento 'resize'
é emitido.
tty.isatty(fd)
Adicionado em: v0.5.8
O método tty.isatty()
retorna true
se o fd
fornecido estiver associado a um TTY e false
se não estiver, incluindo sempre que fd
não for um inteiro não negativo.