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 em 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, deve haver pouca ou nenhuma razão para um aplicativo criar manualmente instâncias das classes tty.ReadStream
e tty.WriteStream
.
Classe: tty.ReadStream
Adicionado em: v0.5.8
- Extende: <net.Socket>
Representa o lado legível de um TTY. Em circunstâncias normais, process.stdin
será a única instância 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 booleano
que é true
se o TTY estiver atualmente configurado para operar como um dispositivo raw.
Esta flag é sempre false
quando um processo inicia, mesmo que o terminal esteja operando no modo raw. Seu valor mudará com chamadas subsequentes a setRawMode
.
readStream.isTTY
Adicionado em: v0.5.8
Um booleano
que é sempre true
para instâncias tty.ReadStream
.
readStream.setRawMode(mode)
Adicionado em: v0.7.7
mode
<boolean> Setrue
, configura otty.ReadStream
para operar como um dispositivo raw. 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 fluxo de leitura.
Permite a configuração de tty.ReadStream
para que ele opere como um dispositivo raw.
Quando em modo raw, a entrada está sempre disponível caractere por caractere, não incluindo modificadores. Além disso, todo o processamento especial de caracteres pelo terminal é desabilitado, incluindo o eco de caracteres de entrada. + não causará mais um SIGINT
neste modo.
Classe: tty.WriteStream
Adicionado em: v0.5.8
- Extende: <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 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 | Alterações |
---|---|
v0.9.4 | O argumento options é suportado. |
v0.5.8 | Adicionada em: v0.5.8 |
fd
<number> Um descritor de arquivo associado a um TTY.options
<Object> Opções passadas para o painet.Socket
, vejaoptions
do construtornet.Socket
.- 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 as propriedades writeStream.columns
ou writeStream.rows
forem alteradas. Nenhum argumento é passado para o callback do listener quando chamado.
process.stdout.on('resize', () => {
console.log('tamanho da tela 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 e o valor de retorno do write() do stream são expostos. |
v0.7.7 | Adicionada em: v0.7.7 |
dir
<number>-1
: para a esquerda do cursor1
: para a direita do cursor0
: a linha inteira
callback
<Function> Invocável assim que a operação for concluída.Retorna: <boolean>
false
se o stream desejar que o código de chamada aguarde a emissão do evento'drain'
antes de continuar a gravar dados adicionais; caso contrário,true
.
writeStream.clearLine()
limpa a linha atual deste WriteStream
na direção identificada por dir
.
writeStream.clearScreenDown([callback])
[Histórico]
Versão | Alterações |
---|---|
v12.7.0 | O callback e o valor de retorno do write() do stream são expostos. |
v0.7.7 | Adicionada em: v0.7.7 |
callback
<Function> Invocável assim que a operação for concluída.- Retorna: <boolean>
false
se o stream desejar que o código de chamada aguarde a emissão do evento'drain'
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 número
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 | Alterações |
---|---|
v12.7.0 | O retorno do callback e o valor retornado do método write() do stream são expostos. |
v0.7.7 | Adicionada em: v0.7.7 |
x
<número>y
<número>callback
<Função> Invoca-se assim que a operação é concluída.- Retorna: <booleano>
false
se o stream deseja que o código chamador aguarde a emissão do evento'drain'
antes de continuar a escrever 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
<Objeto> Um objeto contendo as variáveis de ambiente a serem verificadas. Isso permite simular o uso de um terminal específico. Padrão:process.env
.- Retorna: <número>
Retorna:
1
para 2,4
para 16,8
para 256,24
para 16.777.216 cores suportadas.
Use isto 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
Desabilitar o suporte de cor 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 a verificar. Isso permite simular o uso de um terminal específico. Padrão:process.env
.- Retorna: <boolean>
Retorna true
se o writeStream
suporta pelo menos tantas cores quanto 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 | Alterações |
---|---|
v12.7.0 | O callback write() do stream e o valor de retorno são expostos. |
v0.7.7 | Adicionada em: v0.7.7 |
dx
<number>dy
<number>callback
<Function> Invoca-se assim que a operação é concluída.- Retorna: <boolean>
false
se o stream deseja que o código de chamada aguarde o evento'drain'
ser emitido antes de continuar a escrever dados adicionais; caso contrário,true
.
writeStream.moveCursor()
move o cursor deste WriteStream
relativamente à sua posição atual.
writeStream.rows
Adicionado em: v0.7.7
Um número
especificando o número de linhas que o TTY atualmente possui. Esta propriedade é atualizada sempre que o evento 'resize'
é emitido.
tty.isatty(fd)
Adicionado em: v0.5.8
fd
<número> Um descritor de arquivo numérico- Retorna: <booleano>
O método tty.isatty()
retorna true
se o fd
fornecido estiver associado a um TTY e false
se não estiver, incluindo quando fd
não for um inteiro não negativo.