Referência da API NJS#
O módulo NJS fornece objetos, métodos e propriedades para estender a funcionalidade do Angie.
Esta referência contém apenas propriedades, métodos e módulos específicos do NJS que não são compatíveis com ECMAScript. Definições de propriedades e métodos do NJS compatíveis com ECMAScript podem ser encontradas na especificação ECMAScript. O objeto de requisição HTTP está disponível apenas no módulo HTTP JS. Antes da versão 0.8.5, todas as propriedades de string do objeto eram strings de bytes. Objeto de argumentos da requisição, somente leitura. A query string é retornada como um objeto. Desde a versão 0.7.6, chaves duplicadas são retornadas como um array, as chaves diferenciam maiúsculas de minúsculas, tanto as chaves quanto os valores são decodificados por porcentagem. Por exemplo, a query string é convertida para Cenários de análise mais avançados podem ser alcançados com o módulo Query String e a variável O objeto de argumentos é avaliado no primeiro acesso a Aqui, o objeto de variáveis do Angie retorna o primeiro valor para uma determinada chave, sem diferenciar maiúsculas de minúsculas, sem decodificação por porcentagem. Para converter Após chamar esta função, os próximos blocos de dados serão passados ao cliente sem chamar Escreve uma Nota Como o Angie tem um limite de comprimento máximo de linha codificado, apenas os primeiros 2048 bytes da string podem ser registrados. Finaliza o envio de uma resposta ao cliente. Objeto de cabeçalhos de entrada, somente leitura. O cabeçalho de requisição Os cabeçalhos de requisição Objeto de cabeçalhos de saída para a requisição principal, gravável. Se O cabeçalho de resposta Os cabeçalhos de saída devem ser definidos antes que um cabeçalho de resposta seja enviado ao cliente; caso contrário, a atualização do cabeçalho será ignorada. Isso significa que o manipulador o manipulador Valores de campo de cabeçalhos de resposta com múltiplos valores (0.4.0) podem ser definidos com a sintaxe: onde a saída será: Todos os valores de campo anteriores do cabeçalho de resposta Para cabeçalhos de resposta padrão que aceitam apenas um único valor de campo, como Versão HTTP, somente leitura. Valor booleano, Executa um redirecionamento interno para o Nota Após o redirecionamento, uma nova VM NJS é iniciada na localização de destino, e a VM na localização original é interrompida. Os valores das variáveis do Angie são mantidos e podem ser usados para passar informações para a localização de destino. Desde a versão 0.5.3, uma variável declarada com a diretiva Nota Desde a versão 0.7.4, o método aceita URIs com escape. Escreve uma Nota Como o Angie tem um limite de comprimento máximo de linha codificado, apenas os primeiros 2048 bytes da string podem ser registrados. Método HTTP, somente leitura. Referencia o objeto de requisição pai. Endereço do cliente, somente leitura. A propriedade tornou-se obsoleta na versão 0.5.0 e foi removida na versão 0.8.0. A propriedade Corpo da requisição do cliente se não tiver sido gravado em um arquivo temporário (desde 0.5.0). Para garantir que o corpo da requisição do cliente esteja na memória, seu tamanho deve ser limitado por O mesmo que Retorna um array de pares chave-valor exatamente como foram recebidos do cliente (0.4.1). Por exemplo, com os seguintes cabeçalhos de requisição: a saída de Todos os cabeçalhos a saída será: Os nomes dos campos de cabeçalho não são convertidos para minúsculas, valores de campo duplicados não são mesclados. Retorna um array de pares chave-valor dos cabeçalhos de resposta (0.4.1). Os nomes dos campos de cabeçalho não são convertidos para minúsculas, valores de campo duplicados não são mesclados. A propriedade foi descontinuada na versão 0.5.0 e foi removida na versão 0.8.0. A propriedade Contém o corpo da resposta da subrequisição, somente leitura (desde 0.5.0). O tamanho de O mesmo que Envia a resposta completa com o É possível especificar uma URL de redirecionamento (para os códigos 301, 302, 303, 307 e 308) ou o texto do corpo da resposta (para outros códigos) como segundo argumento. Envia uma parte do corpo da resposta para o cliente. Os dados enviados podem ser uma string ou Buffer (0.5.0). Adiciona dados à cadeia de blocos de dados a serem encaminhados para o próximo filtro de corpo (0.5.2). O encaminhamento real acontece posteriormente, quando todos os blocos de dados da cadeia atual são processados. Os dados podem ser uma string ou Buffer. O Booleano, Booleano, O método pode ser chamado apenas da função Envia os cabeçalhos HTTP para o cliente. Define o valor de retorno do manipulador Status, gravável. Cria uma subrequisição com o Uma subrequisição compartilha seus cabeçalhos de entrada com a requisição do cliente. Para enviar cabeçalhos diferentes dos cabeçalhos originais para um servidor proxy, a diretiva Se String de argumentos, por padrão uma string vazia é usada. Corpo da requisição, por padrão o corpo da requisição do objeto de requisição pai é usado. Método HTTP, por padrão o método Flag booleana (0.3.9); se O Desde 0.3.8, se um Por exemplo, para visualizar todos os cabeçalhos de resposta na subrequisição: URI atual na requisição, normalizado, somente leitura. Variáveis do Angie como Buffers, gravável (desde 0.5.0). Objeto de variáveis do Angie, gravável (desde 0.2.8). Por exemplo, para obter a variável Desde 0.8.6, capturas de expressão regular podem ser acessadas usando a seguinte sintaxe: O Angie trata variáveis referenciadas em o Uma variável é gravável se: foi criada usando a diretiva é referenciada no arquivo de configuração do Angie Mesmo assim, algumas variáveis incorporadas ainda não podem ter um valor atribuído (por exemplo, Escreve uma Nota Como o Angie tem um limite máximo de comprimento de linha codificado, apenas os primeiros 2048 bytes da string podem ser registrados. O objeto de sessão stream está disponível apenas no módulo Stream JS. Antes de 0.8.5, todas as propriedades de string do objeto eram strings de bytes. Um alias para Um alias para Um alias para Define um Valores de código possíveis: Pode ser chamado apenas de uma função de manipulador de fase: Escreve uma Nota Como o Angie tem um limite máximo de comprimento de linha codificado, apenas os primeiros 2048 bytes da string podem ser registrados. Escreve uma Nota Como o Angie tem um limite máximo de comprimento de linha codificado, apenas os primeiros 2048 bytes da string podem ser registrados. Cancela o registro do callback definido pelo método Registra um Um Novos dados (string) de um cliente. Novos dados (string) para um cliente. Novos dados (Buffer) de um cliente (desde 0.5.0). Novos dados (Buffer) para um cliente (desde 0.5.0). O callback de conclusão tem o seguinte protótipo: Um valor booleano, Endereço do cliente, somente leitura. Variáveis do Angie como Buffers, gravável (desde 0.5.0). Adiciona dados à cadeia de blocos de dados que serão encaminhados na direção de avanço: no callback de download para um cliente; no upload para um servidor upstream (0.2.4). O encaminhamento real acontece posteriormente, quando todos os blocos de dados da cadeia atual são processados. Os dados podem ser uma string ou Buffer (0.5.0). O Booleano, Booleano, O método pode ser chamado várias vezes por invocação de callback. Idêntico a Idêntico a Código de status da sessão, um alias para a variável Define o valor de retorno do manipulador Objeto de variáveis do Angie, gravável (desde 0.2.8). Uma variável pode ser gravável apenas se for referenciada no arquivo de configuração do Angie. Mesmo assim, algumas variáveis incorporadas ainda não podem ter um valor atribuído. Escreve a Nota Como o Angie tem um limite de comprimento máximo de linha codificado, apenas os primeiros 2048 bytes da string podem ser registrados. O objeto Variáveis do Angie como Buffers, gravável. Objeto de variáveis do Angie, gravável. A interface Um novo objeto Um objeto contendo cabeçalhos HTTP para pré-popular o objeto Um novo objeto Adiciona um novo valor a um cabeçalho existente no objeto Remove um cabeçalho do objeto Retorna uma string contendo os valores de todos os cabeçalhos com o nome especificado separados por vírgula e espaço. Retorna um array contendo os valores de todos os cabeçalhos com o nome especificado. Executa uma função fornecida uma vez para cada par chave/valor no objeto Retorna um valor booleano indicando se existe um cabeçalho com o nome especificado. Define um novo valor para um cabeçalho existente dentro do objeto A interface Um novo objeto Cria um objeto O corpo da requisição, por padrão é vazio. O objeto de cabeçalhos da requisição — o objeto contendo cabeçalhos HTTP para pré-popular o objeto O método HTTP, por padrão o método GET é usado. Um novo objeto Retorna uma Um valor booleano, Contém o modo de cache da requisição. Contém as credenciais da requisição, por padrão é O objeto Retorna uma Contém o método da requisição. Contém o modo da requisição. Retorna uma Contém a URL da requisição. A interface Um novo objeto Cria um objeto O objeto de cabeçalhos de resposta — o objeto contendo cabeçalhos HTTP para pré-popular o objeto O código de status da resposta. A mensagem de status correspondente ao código de status. Um novo objeto Pega um fluxo Um valor booleano, O objeto Pega um fluxo Um valor booleano, Um valor booleano, O código de status da resposta. A mensagem de status correspondente ao código de status. Pega um fluxo O tipo da resposta. A URL da resposta. O objeto global Uma string contendo um nome de build opcional do Angie, corresponde ao argumento Uma string contendo o caminho do arquivo para o arquivo de configuração atual do Angie (0.8.0). Uma string contendo o caminho do arquivo para o prefixo de configuração do Angie — o diretório onde o Angie está atualmente procurando pela configuração (0.7.8). Uma string contendo o caminho do arquivo para o arquivo de log de erros atual (0.8.0). Faz uma requisição para buscar um Se a URL no O parâmetro Corpo da requisição, por padrão é vazio. O tamanho do buffer para leitura da resposta, por padrão é Objeto de cabeçalhos da requisição. O tamanho máximo do corpo da resposta em bytes, por padrão é Método HTTP, por padrão o método Habilita ou desabilita a verificação do certificado do servidor HTTPS, por padrão é Exemplo: Escreve uma mensagem no log de erros com o nível de log especificado. O parâmetro Nota Como o Angie tem um limite máximo de comprimento de linha fixo, apenas os primeiros 2048 bytes da string podem ser registrados. Uma string contendo o caminho do arquivo para o prefixo do Angie — um diretório que mantém os arquivos do servidor (0.8.0). Uma string contendo a versão do Angie, por exemplo: Um número contendo a versão do Angie, por exemplo: Um número que corresponde ao ID interno do worker do Angie, o valor está entre O objeto Exibe uma ou mais mensagens de erro. A mensagem pode ser uma string ou um objeto. Exibe uma ou mais mensagens de informação. A mensagem pode ser uma string ou um objeto. Exibe uma ou mais mensagens de log. A mensagem pode ser uma string ou um objeto. Inicia um temporizador que pode rastrear quanto tempo uma operação leva. O parâmetro Para um temporizador iniciado anteriormente por Exibe uma ou mais mensagens de aviso. A mensagem pode ser uma string ou um objeto. O objeto Obtém valores aleatórios criptograficamente fortes. Retorna o mesmo array passado como Pode ser Criptografa Um objeto que especifica o algoritmo a ser usado e quaisquer parâmetros extras, se necessário: Para Uma string, deve ser definida como Para Uma string, deve ser definida como Um O número de bits no bloco contador que são usados para o contador real. O contador deve ser grande o suficiente para que não ocorra estouro. Para Uma string, deve ser definida como O vetor de inicialização, é um Para Uma string, deve ser definida como O vetor de inicialização, é um (opcional) é um (opcional, padrão é Uma Um Descriptografa dados criptografados. Retorna uma Um objeto que especifica o algoritmo a ser usado e quaisquer parâmetros extras conforme necessário. Os valores fornecidos para os parâmetros extras devem corresponder àqueles passados na chamada Para Uma string, deve ser definida como Para Uma string, deve ser definida como Um O número de bits no bloco contador que são usados para o contador real. O contador deve ser grande o suficiente para que não ocorra estouro. Para Uma string, deve ser definida como O vetor de inicialização, é um Para Uma string, deve ser definida como O vetor de inicialização, é um (opcional) é um (opcional, padrão é Uma Um Deriva um array de bits de uma chave base. Retorna uma Um objeto que define o algoritmo de derivação a ser usado: Para Uma string, deve ser definida como Uma string com o algoritmo de digest a ser usado: Um Um Para Uma string, deve ser definida como Uma string com o algoritmo de digest a ser usado: Um Um Para Uma string, deve ser definida como Uma Um Para Uma string, deve ser definida como Uma Uma Um número que representa o número de bits a derivar. Para compatibilidade com navegadores, o número deve ser um múltiplo de Deriva uma chave secreta de uma chave mestra. Valores possíveis: Um objeto que define o algoritmo de derivação a ser usado: Para Uma string, deve ser definida como Uma string com o algoritmo de digest a ser usado: Um Um Para Uma string, deve ser definida como Uma string com o algoritmo de digest a ser usado: Um Um Para Uma string, deve ser definida como Uma Uma Um objeto que define o algoritmo para o qual a chave derivada será usada: Para Uma string, deve ser definida como Uma string com o nome da função de digest a ser usada: (opcional) é um Para Uma string, deve ser definida como Um Um valor booleano que indica se será possível exportar a chave. Um Chave para criptografar mensagens. Chave para descriptografar mensagens. Chave para assinar mensagens. Chave para verificar assinaturas. Chave para derivar uma nova chave. Chave para derivar bits. Chave para encapsular uma chave. Chave para desencapsular uma chave. Gera um digest dos dados fornecidos. Recebe como argumentos um identificador para o algoritmo de digest a ser usado e os dados a serem processados. Retorna uma Uma string que define a função hash a ser usada: Um Exporta uma chave: recebe uma chave como um objeto Uma string que descreve o formato de dados no qual a chave deve ser exportada, pode ser o seguinte: O formato de dados brutos. O formato PKCS #8. O formato SubjectPublicKeyInfo. O formato JSON Web Key (JWK) (desde 0.7.10). A Gera uma nova chave para algoritmos simétricos ou par de chaves para algoritmos de chave pública (desde 0.7.10). Retorna uma Um objeto de dicionário que define o tipo de chave a ser gerada e fornece parâmetros extras específicos do algoritmo: Para Uma string, deve ser definida como Uma string que representa o nome da função Para Uma string, deve ser definida como Uma string que representa o nome da curva elíptica a ser usada, pode ser Para Uma string, deve ser definida como Uma string que representa o nome da função (opcional) é um número que representa o comprimento em bits da chave. Se omitido, o comprimento da chave é igual ao comprimento do digest gerado pela função de digest escolhida. Para Para Uma string, deve ser definida como Uma string que representa o nome da curva elíptica a ser usada, pode ser Valor booleano que indica se é possível exportar a chave. Um Chave para criptografar mensagens. Chave para descriptografar mensagens. Chave para assinar mensagens. Chave para verificar assinaturas. Chave para derivar uma nova chave. Chave para derivar bits. Chave para encapsular uma chave. Chave para desencapsular uma chave. Importa uma chave: recebe como entrada uma chave em um formato externo e portável e fornece um objeto Uma string que descreve o formato de dados da chave a ser importada, pode ser o seguinte: O formato de dados brutos. O formato PKCS #8. O formato SubjectPublicKeyInfo. O formato JSON Web Key (JWK) (desde 0.7.10). O objeto Um objeto de dicionário que define o tipo de chave a ser importada e fornece parâmetros extras específicos do algoritmo: Para Importa uma chave: recebe como entrada uma chave em um formato externo e portável e fornece um objeto Uma string que descreve o formato de dados da chave a ser importada, pode ser o seguinte: O formato de dados brutos. O formato PKCS #8. O formato SubjectPublicKeyInfo. O formato JSON Web Key (JWK) (desde 0.7.10). O objeto Um objeto dicionário que define o tipo de chave a ser importada e fornece parâmetros extras específicos do algoritmo: Para Uma string, deve ser definida como Uma string que representa o nome da função Para Uma string, deve ser definida como Uma string que representa o nome da curva elíptica a ser usada, pode ser Para Uma string, deve ser definida como Uma string que representa o nome da função (opcional) é um número que representa o comprimento em bits da chave. Se omitido, o comprimento da chave é igual ao comprimento do digest gerado pela função digest escolhida. Para Para Para Para Uma string, deve ser definida como Uma string que representa o nome da curva elíptica a ser usada, pode ser Valor booleano que indica se é possível exportar a chave. Um Chave para criptografar mensagens. Chave para descriptografar mensagens. Chave para assinar mensagens. Chave para verificar assinaturas. Chave para derivar uma nova chave. Chave para derivar bits. Chave para empacotar uma chave. Chave para desempacotar uma chave. Retorna Uma string ou objeto que especifica o algoritmo de assinatura a ser usado e seus parâmetros: Para Para Uma string, deve ser definida como Um Para Uma string, deve ser definida como Um identificador para o algoritmo digest a ser usado, pode ser Para Um objeto Um objeto Verifica uma assinatura digital; retorna uma Uma string ou objeto que especifica o algoritmo a ser usado e seus parâmetros: Para Para Uma string, deve ser definida como Um Para Uma string, deve ser definida como Um identificador para o algoritmo digest a ser usado, pode ser Para Um objeto Um Um objeto O objeto Retorna um objeto descrevendo o algoritmo para o qual esta chave pode ser usada e quaisquer parâmetros extras associados (desde 0.8.0), somente leitura. Um valor booleano, Um valor string que indica qual tipo de chave é representado pelo objeto, somente leitura. Valores possíveis: Esta chave é uma chave secreta para uso com um algoritmo simétrico. Esta chave é a metade privada de um Esta chave é a metade pública de um Um array de strings indicando para que esta chave pode ser usada (desde 0.8.0), somente leitura. Valores possíveis do array: Chave para criptografar mensagens. Chave para descriptografar mensagens. Chave para assinar mensagens. Chave para verificar assinaturas. Chave para derivar uma nova chave. Chave para derivar bits. O Um objeto Um objeto O objeto Retorna uma string com a versão atual do NJS (por exemplo, "0.7.4"). Retorna um número com a versão atual do NJS. Por exemplo, "0.7.4" é retornado como Retorna a representação em string formatada de um valor. Objeto contendo estatísticas de memória para a instância atual da VM (desde 0.7.8). Quantidade de memória em bytes que o pool de memória do NJS reivindicou do sistema operacional. Registra um callback para o evento de VM especificado (desde 0.5.2). Um evento pode ser uma das seguintes strings: É chamado antes da VM ser destruída. O callback é chamado sem argumentos. O objeto Retorna um array que contém os argumentos de linha de comando passados quando o processo atual foi iniciado. Retorna um objeto contendo o ambiente do usuário. Nota Por padrão, o Angie remove todas as variáveis de ambiente herdadas de seu processo pai, exceto a variável TZ. Use a diretiva Envia o sinal para o processo identificado por Retorna o PID do processo atual. Retorna o PID do processo pai atual. Por padrão, todas as strings no NJS são strings Unicode. Elas correspondem a strings ECMAScript que contêm caracteres Unicode. Antes da versão 0.8.0, strings de bytes também eram suportadas. Nota Desde a versão 0.8.0, o suporte para strings de bytes e métodos de strings de bytes foi removido. Ao trabalhar com sequências de bytes, o objeto Buffer e propriedades Buffer, como Strings de bytes continham uma sequência de bytes e eram usadas para serializar strings Unicode para dados externos e desserializar de fontes externas. Por exemplo, o método Os seguintes métodos se tornaram obsoletos e foram removidos na versão 0.8.0: O Cria um novo objeto Flag booleana indicando se Retorna uma string com o nome da codificação usada por Flag booleana, Flag booleana, Retorna uma string com o texto decodificado do Flag booleana indicando se dados adicionais seguirão em chamadas subsequentes para Exemplo: O objeto Retorna um Codifica Codifica uma O número de unidades UTF-16 de código da O número de bytes modificados no Cancela um objeto Chama uma Exemplo: Decodifica uma string de dados que foi codificada usando codificação O método similar Exemplo: Cria uma string ASCII codificada em Base64 a partir de uma string binária. O parâmetro O método pode ser usado para codificar dados que, de outra forma, poderiam causar problemas de comunicação, transmiti-los e depois usar o método Exemplo: O objeto Para documentação detalhada dos métodos Buffer, consulte a documentação Buffer do Node.js. O módulo Crypto fornece suporte à funcionalidade criptográfica. O objeto do módulo Crypto é importado usando Nota Desde a versão 0.7.0, a API crypto estendida está disponível como um objeto global crypto. Cria e retorna um objeto Hash que pode ser usado para gerar resumos hash usando o Cria e retorna um objeto HMAC que usa o Atualiza o conteúdo do hash com os Calcula o resumo de todos os dados passados usando Nota Antes da versão 0.4.4, uma string de bytes era retornada em vez de um objeto Buffer. Faz uma cópia do estado atual do hash (desde 0.7.12). Exemplo: Atualiza o conteúdo do HMAC com os Calcula o resumo HMAC de todos os dados passados usando Nota Antes da versão 0.4.4, uma string de bytes era retornada em vez de um objeto Buffer. O módulo Para documentação detalhada dos métodos fs, consulte a documentação fs do Node.js. O módulo Query String fornece métodos para analisar e formatar strings de consulta de URL. O objeto do módulo é importado usando Um alias para Um alias para Executa a codificação percentual de URL da Analisa a Função a ser usada ao decodificar caracteres codificados em percentual na string de consulta, padrão: O número máximo de chaves a serem analisadas, padrão: Exemplo: Produz uma string de consulta de URL a partir do Função a ser usada ao converter caracteres inseguros para URL em codificação percentual na string de consulta, padrão: Exemplo: Executa a decodificação de caracteres codificados em percentual de URL na O módulo XML permite trabalhar com documentos XML (desde 0.7.10). O objeto do módulo XML é importado usando Exemplo: Analisa uma string ou Buffer de um documento XML; retorna um objeto wrapper Canonicaliza Permite omitir da saída uma parte do documento. Canonicaliza Um objeto wrapper Permite omitir da saída uma parte do documento correspondente ao nó e seus filhos. Um valor booleano, Uma string opcional com prefixos de namespace separados por espaço para namespaces que também devem ser incluídos na saída. O mesmo que O mesmo que Um objeto wrapper XMLDoc em torno da estrutura XML, o nó raiz do documento. A raiz do documento por seu nome ou undefined. A primeira tag raiz chamada Um objeto wrapper XMLNode em torno de um nó de tag XML. O mesmo que O valor do atributo O mesmo que Um objeto wrapper O nome do nó. O namespace do nó. O nó pai do nó atual. A primeira tag filha do nó chamada Um array de todas as tags filhas. O mesmo que Todas as tags filhas chamadas O conteúdo do nó, gravável desde 0.7.11. O mesmo que Adiciona um XMLNode como filho ao nó (desde 0.7.11). Remove todos os atributos do nó (desde 0.7.11). Remove o atributo chamado Remove todas as tags filhas chamadas Remove o valor de texto do nó (0.7.11). Define um valor para Define um valor de texto para o nó (desde 0.7.11). Quando o valor é Um objeto wrapper XMLAttr em torno dos atributos do nó XML. O valor do atributo O módulo Retorna um dicionário de constantes zlib. Comprime Comprime Descomprime Descomprime O parâmetro Nível de compressão (padrão: Especifica quanta memória deve ser alocada para o estado de compressão (padrão: Ajusta o algoritmo de compressão (padrão: Define o tamanho da janela (padrão: Buffer contendo o dicionário de compressão predefinido. Um valor booleano, se Tamanho do bloco para compressão (padrão: Exemplo:Objetos do Angie#
Requisição HTTP#
r.args{}r.done()r.error()r.finish()r.headersIn{}r.headersOut{}r.httpVersionr.internalr.internalRedirect()r.log()r.methodr.parentr.remoteAddressr.requestBodyr.requestBufferr.requestTextr.rawHeadersIn[]r.rawHeadersOut[]r.responseBodyr.responseBufferr.responseTextr.return()r.send()r.sendBuffer()r.sendHeader()r.setReturnValue()r.statusr.subrequest()r.urir.rawVariables{}r.variables{}r.warn()r.args{}a=1&b=%32&A=3&b=4&B=two%20words
r.args como:{a: "1", b: ["2", "4"], A: "3", B: "two words"}
$args, por exemplo:import qs from 'querystring';
function args(r) {
return qs.parse(r.variables.args);
}
r.args. Se apenas um único argumento for necessário, por exemplo foo, as variáveis do Angie podem ser usadas:r.variables.arg_foo
r.args de volta para uma string, o método stringify do Query String pode ser usado.r.done()js_body_filter (0.5.2). Pode ser chamado apenas da função js_body_filter.r.error(string)string no log de erros no nível de log error.r.finish()r.headersIn{}Foo pode ser acessado com a sintaxe: headersIn.foo ou headersIn['Foo'].Authorization, Content-Length, Content-Range, Content-Type, ETag, Expect, From, Host, If-Match, If-Modified-Since, If-None-Match, If-Range, If-Unmodified-Since, Max-Forwards, Proxy-Authorization, Referer, Transfer-Encoding e User-Agent podem ter apenas um valor de campo (0.4.1). Valores de campo duplicados nos cabeçalhos Cookie são separados por ponto e vírgula (;). Valores de campo duplicados em todos os outros cabeçalhos de requisição são separados por vírgulas.r.headersOut{}r.headersOut{} for o objeto de resposta de uma subrequisição, ele representa os cabeçalhos de resposta. Neste caso, valores de campo nos cabeçalhos de resposta Accept-Ranges, Connection, Content-Disposition, Content-Encoding, Content-Length, Content-Range, Date, Keep-Alive, Server, Transfer-Encoding, X-Accel-* podem ser omitidos.Foo pode ser acessado com a sintaxe: headersOut.foo ou headersOut['Foo'].r.headersOut{} é efetivamente gravável em:js_content antes que r.sendHeader() ou r.return() sejam chamadosjs_header_filterr.headersOut['Foo'] = ['a', 'b']
Foo: a
Foo: b
Foo serão excluídos.Content-Type, apenas o último elemento do array terá efeito. Valores de campo do cabeçalho de resposta Set-Cookie são sempre retornados como um array. Valores de campo duplicados nos cabeçalhos de resposta Age, Content-Encoding, Content-Length, Content-Type, ETag, Expires, Last-Modified, Location, Retry-After são ignorados. Valores de campo duplicados em todos os outros cabeçalhos de resposta são separados por vírgulas.r.httpVersionr.internaltrue para localizações internas.r.internalRedirect(uri)uri especificado. Se o URI começar com o prefixo @, ele é considerado uma localização nomeada. Na nova localização, todo o processamento da requisição é repetido começando de NGX_HTTP_SERVER_REWRITE_PHASE para localizações comuns e de NGX_HTTP_REWRITE_PHASE para localizações nomeadas. Como resultado, um redirecionamento para uma localização nomeada não verifica o limite client_max_body_size. Requisições redirecionadas tornam-se internas e podem acessar localizações internas. O redirecionamento real acontece após a conclusão da execução do manipulador.js_var para HTTP ou Stream pode ser usada.r.log(string)string no log de erros no nível de log info.r.methodr.parentr.remoteAddressr.requestBodyr.requestBuffer ou r.requestText deve ser usada em seu lugar.r.requestBufferclient_max_body_size, e um tamanho de buffer suficiente deve ser definido usando client_body_buffer_size. A propriedade está disponível apenas na diretiva js_content.r.requestTextr.requestBuffer, mas retorna uma string. Observe que pode converter bytes inválidos na codificação UTF-8 no caractere de substituição.r.rawHeadersIn[]Host: localhost
Foo: bar
foo: bar2
r.rawHeadersIn será:[
['Host', 'localhost'],
['Foo', 'bar'],
['foo', 'bar2']
]
foo podem ser coletados com a sintaxe:r.rawHeadersIn.filter(v=>v[0].toLowerCase() == 'foo').map(v=>v[1])
['bar', 'bar2']
r.rawHeadersOut[]r.responseBodyr.responseBuffer ou r.responseText deve ser usada em seu lugar.r.responseBufferr.responseBuffer é limitado pela diretiva subrequest_output_buffer_size.r.responseTextr.responseBuffer, mas retorna uma string (desde 0.5.0). Note que pode converter bytes inválidos na codificação UTF-8 no caractere de substituição.r.return(status[, string | Buffer])status especificado para o cliente. A resposta pode ser uma string ou Buffer (0.5.0).r.send(string | Buffer)r.sendBuffer(data[, options])options é um objeto usado para substituir as flags de buffer do Angie derivadas de um buffer de bloco de dados de entrada. As flags podem ser substituídas com as seguintes flags:lasttrue se o buffer é o último buffer.flushtrue se o buffer deve ter a flag flush.js_body_filter.r.sendHeader()r.setReturnValue(value)js_set (0.7.0). Diferentemente de uma instrução return comum, este método deve ser usado quando o manipulador é uma função JS assíncrona. Por exemplo:async function js_set(r) {
const digest = await crypto.subtle.digest('SHA-256', r.headersIn.host);
r.setReturnValue(digest);
}
r.statusr.subrequest(uri[, options[, callback]])uri e options fornecidos, e instala um callback de conclusão opcional.proxy_set_header pode ser usada. Para enviar um conjunto completamente novo de cabeçalhos para um servidor proxy, a diretiva proxy_pass_request_headers pode ser usada.options for uma string, então ela contém a string de argumentos da subrequisição. Caso contrário, espera-se que options seja um objeto com as seguintes chaves:argsbodymethodGET é usado.detachedtrue, a subrequisição criada é uma subrequisição desanexada. Respostas a subrequisições desanexadas são ignoradas. Diferentemente de subrequisições comuns, uma subrequisição desanexada pode ser criada dentro de um manipulador de variável. A flag detached e o argumento callback são mutuamente exclusivos.callback de conclusão recebe um objeto de resposta de subrequisição com métodos e propriedades idênticos ao objeto de requisição pai.callback não for fornecido, o objeto Promise que resolve para o objeto de resposta de subrequisição é retornado.async function handler(r) {
const reply = await r.subrequest('/path');
for (const h in reply.headersOut) {
r.log(`${h}: ${reply.headersOut[h]}`);
}
r.return(200);
}
r.urir.rawVariables{}r.variables{}$foo, uma das seguintes sintaxes pode ser usada:r.variables['foo']
r.variables.foo
r.variables['1']
r.variables[1]
angie.conf e variáveis não referenciadas de forma diferente. Quando uma variável é referenciada, ela pode ser armazenável em cache, mas quando não é referenciada, ela é sempre não armazenável em cache. Por exemplo, quando a variável $request_id é acessada apenas do NJS, ela tem um novo valor toda vez que é avaliada. Mas, quando o $request_id é referenciado, por exemplo:proxy_set_header X-Request-Id $request_id;
r.variables.request_id retorna o mesmo valor toda vez.js_var para HTTP ou Stream (desde 0.5.3)$http_).r.warn(string)string no log de erros no nível de log warning.Sessão Stream#
s.allow()s.decline()s.deny()s.done()s.error()s.log()s.off()s.on()s.remoteAddresss.rawVariables{}s.send()s.sendDownstream()s.sendUpstream()s.statuss.setReturnValue()s.variables{}s.warn()s.allow()s.done(0) (0.2.4).s.decline()s.done(-5) (0.2.4).s.deny()s.done(403) (0.2.4).s.done([code])code de saída para o manipulador de fase atual para um valor de código, por padrão 0. A finalização real acontece quando o manipulador js é concluído e todos os eventos pendentes, por exemplo, de ngx.fetch() ou setTimeout(), são processados (0.2.4).0 — finalização bem-sucedida, passando controle para a próxima fase-5 — indeciso, passando controle para o próximo manipulador da fase atual (se houver)403 — acesso negadojs_access ou js_preread.s.error(string)string enviada no log de erros no nível de log error.s.log(string)string enviada no log de erros no nível de log info.s.off(eventName)s.on() (0.2.4).s.on(event, callback)callback para o event especificado (0.2.4).event pode ser uma das seguintes strings:uploaddownloadupstreamdownstreamcallback(data, flags), onde data é string ou Buffer (dependendo do tipo de evento); flags é um objeto com as seguintes propriedades:lasttrue se data é o último buffer.s.remoteAddresss.rawVariabless.send(data[, options])options é um objeto usado para substituir as flags de buffer do Angie derivadas de um buffer de bloco de dados de entrada. As flags podem ser substituídas com as seguintes flags:lasttrue se o buffer é o último buffer.flushtrue se o buffer deve ter a flag flush.s.sendDownstream()s.send(), exceto que sempre envia dados para um cliente (desde 0.7.8).s.sendUpstream()s.send(), exceto que sempre envia dados de um cliente (desde 0.7.8).s.status$status, somente leitura (desde 0.5.2).s.setReturnValue(value)js_set (0.7.0). Diferentemente de uma instrução return comum, este método deve ser usado quando o manipulador é uma função JS assíncrona. Por exemplo:async function js_set(r) {
const digest = await crypto.subtle.digest('SHA-256', r.headersIn.host);
r.setReturnValue(digest);
}
s.variables{}s.warn(string)string enviada no log de erros no nível de registro warning.Sessão Periódica#
PeriodicSession.rawVariables{}PeriodicSession.variables{}Periodic Session é fornecido como o primeiro argumento para o manipulador js_periodic para HTTP e Stream (desde 0.8.1).PeriodicSession.rawVariables{}PeriodicSession.variables{}Headers#
Headers()Headers.append()Headers.delete()Headers.get()Headers.getAll()Headers.forEach()Headers.has()Headers.set()Headers da API Fetch está disponível desde 0.5.1.Headers pode ser criado usando o construtor Headers() (desde 0.7.10):Headers([init])initHeaders, pode ser uma string, um array de pares nome-valor, ou um objeto Headers existente.Headers pode ser criado com as seguintes propriedades e métodos:append()Headers, ou adiciona o cabeçalho se ele ainda não existir (desde 0.7.10).delete()Headers (desde 0.7.10).get()getAll(name)forEach()Headers (desde 0.7.10).has()set()Headers, ou adiciona o cabeçalho se ele ainda não existir (desde 0.7.10).Request#
Request()Request.arrayBuffer()Request.bodyUsedRequest.cacheRequest.credentialsRequest.headersRequest.json()Request.methodRequest.modeRequest.text()Request.urlRequest da API Fetch está disponível desde 0.7.10.Request pode ser criado usando o construtor Request():Request[resource[, options]])Request para buscar que pode ser passado posteriormente para ngx.fetch(). O resource pode ser uma URL ou um objeto Request existente. O options é um argumento opcional que deve ser um objeto com as seguintes chaves:bodyheadersHeaders, pode ser uma string, um array de pares nome-valor, ou um objeto Headers existente.methodRequest pode ser criado com as seguintes propriedades e métodos:arrayBuffer()Promise que resolve com um ArrayBuffer.bodyUsedtrue se o corpo foi usado na requisição.cachecredentialssame-origin.headersHeaders somente leitura associado ao Request.json()Promise que resolve com o resultado da análise do corpo da requisição como JSON.methodmodetext()Promise que resolve com uma representação em string do corpo da requisição.urlResponse#
Response()Response.arrayBuffer()Response.bodyUsedResponse.headersResponse.json()Response.okResponse.redirectedResponse.statusResponse.statusTextResponse.text()Response.typeResponse.urlResponse está disponível desde 0.5.1.Response pode ser criado usando o construtor Response() (desde 0.7.10):Response[body[, options]])Response. O body é um argumento opcional, pode ser uma string ou um buffer, por padrão é null. O options é um argumento opcional que deve ser um objeto com as seguintes chaves:headersHeaders, pode ser uma string, um array de pares nome-valor, ou um objeto Headers existente.statusstatusTextResponse() pode ser criado com as seguintes propriedades e métodos:arrayBuffer()Response e o lê até a conclusão. Retorna uma Promise que resolve com um ArrayBuffer.bodyUsedtrue se o corpo foi lido.headersHeaders somente leitura associado ao Response.json()Response e o lê até a conclusão. Retorna uma Promise que resolve com o resultado da análise do texto do corpo como JSON.oktrue se a resposta foi bem-sucedida (códigos de status entre 200–299).redirectedtrue se a resposta é o resultado de um redirecionamento.statusstatusTexttext()Response e o lê até a conclusão. Retorna uma Promise que resolve com uma string.typeurlngx#
ngx.buildngx.conf_file_pathngx.conf_prefixngx.error_log_pathngx.fetch()ngx.log()ngx.prefixngx.versionngx.version_numberngx.worker_idngx está disponível desde 0.5.0.ngx.build--build=name do script configure, por padrão é "" (0.8.0).ngx.conf_file_pathngx.conf_prefixngx.error_log_pathngx.fetch(resource, [options])resource (0.5.1), que pode ser uma URL ou o objeto Request (0.7.10). Retorna uma Promise que resolve com o objeto Response. Desde 0.7.0, o esquema https:// é suportado; redirecionamentos não são tratados.resource for especificada como um nome de domínio, ela é resolvida usando um resolvedor. Se o esquema https:// for especificado, a diretiva js_fetch_trusted_certificate deve ser configurada para a autenticação do servidor HTTPS do resource.options deve ser um objeto com as seguintes chaves:bodybuffer_size4096.headersmax_response_body_size32768.methodGET é usado.verifytrue (0.7.0).let reply = await ngx.fetch('http://example.com/');
let body = await reply.text();
r.return(200, body);
ngx.log(level, message)level especifica um dos níveis de log; o parâmetro message pode ser uma string ou Buffer. Os seguintes níveis de log podem ser especificados: ngx.INFO, ngx.WARN e ngx.ERR.ngx.prefixngx.version1.25.0 (0.8.0).ngx.version_number1025000 (0.8.0).ngx.worker_id0 e o valor especificado na diretiva worker_processes (0.8.0).Objetos Integrados#
console#
console.error()console.info()console.log()console.time()console.timeEnd()console.warn()console está disponível no Angie desde 0.8.2, no CLI desde 0.2.6.console.error(msg[, msg2 ...])console.info(msg[, msg2 ...])console.log(msg[, msg2 ...])console.time(label)label permite nomear diferentes temporizadores. Se console.timeEnd() for chamado com o mesmo nome, o tempo decorrido desde que o temporizador foi iniciado será exibido, em milissegundos.console.timeEnd(label)console.time(). O parâmetro label permite nomear diferentes temporizadores.console.warn(msg[, msg2 ...])crypto#
crypto.getRandomValues()crypto.subtle.encrypt()crypto.subtle.decrypt()crypto.subtle.deriveBits()crypto.subtle.deriveKey()crypto.subtle.digest()crypto.subtle.exportKey()crypto.subtle.generateKey()crypto.subtle.importKey()crypto.subtle.sign()crypto.subtle.verify()crypto é um objeto global que permite usar funcionalidades criptográficas (desde 0.7.0).crypto.getRandomValues(typedArray)typedArray, mas com seu conteúdo substituído pelos números aleatórios recém-gerados. Valores possíveis:typedArrayInt8Array, Int16Array, Uint16Array, Int32Array ou Uint32Array.crypto.subtle.encrypt(algorithm, key, data)data usando o algorithm e a key fornecidos. Retorna uma Promise que é cumprida com um ArrayBuffer contendo o texto cifrado. Valores possíveis:algorithmRSA-OAEP, passe um objeto com as seguintes chaves:nameRSA-OAEP:crypto.subtle.encrypt({name: "RSA-OAEP"}, key, data)
AES-CTR, passe um objeto com as seguintes chaves:nameAES-CTR.counterArrayBuffer, TypedArray ou DataView — o valor inicial do bloco contador, deve ter 16 bytes de comprimento (o tamanho do bloco AES). Os bits de comprimento mais à direita deste bloco são usados para o contador, e o restante é usado para o nonce. Por exemplo, se o comprimento for definido como 64, então a primeira metade do contador é o nonce e a segunda metade é usada para o contador.lengthAES-CBC, passe um objeto com as seguintes chaves:nameAES-CBC.ivArrayBuffer, TypedArray ou DataView, deve ter 16 bytes, ser imprevisível e preferencialmente criptograficamente aleatório. No entanto, não precisa ser secreto, por exemplo, pode ser transmitido sem criptografia junto com o texto cifrado.AES-GCM, passe um objeto com as seguintes chaves:nameAES-GCM.ivArrayBuffer, TypedArray ou DataView, deve ter 16 bytes e deve ser único para cada operação de criptografia realizada com uma determinada chave.additionalDataArrayBuffer, TypedArray ou DataView que contém dados adicionais que não serão criptografados, mas serão autenticados junto com os dados criptografados. Se additionalData for especificado, então os mesmos dados devem ser especificados na chamada correspondente a decrypt(): se os dados fornecidos à chamada decrypt() não corresponderem aos dados originais, a descriptografia lançará uma exceção. O comprimento em bits de additionalData deve ser menor que 2^64 - 1.tagLength128) - um number que determina o tamanho em bits da tag de autenticação gerada na operação de criptografia e usada para autenticação na descriptografia correspondente. Valores possíveis: 32, 64, 96, 104, 112, 120 ou 128. A especificação AES-GCM recomenda que seja 96, 104, 112, 120 ou 128, embora 32 ou 64 bits possam ser aceitáveis em algumas aplicações.keyCryptoKey que contém a chave a ser usada para criptografia.dataArrayBuffer, TypedArray ou DataView que contém os dados a serem criptografados (também conhecidos como texto simples).crypto.subtle.decrypt(algorithm, key, data)Promise com os dados descriptografados. Valores possíveis:algorithmencrypt() correspondente.RSA-OAEP, passe um objeto com as seguintes chaves:nameRSA-OAEP:crypto.subtle.encrypt({name: "RSA-OAEP"}, key, data)
AES-CTR, passe um objeto com as seguintes chaves:nameAES-CTR.counterArrayBuffer, TypedArray ou DataView — o valor inicial do bloco contador, deve ter 16 bytes de comprimento (o tamanho do bloco AES). Os bits de comprimento mais à direita deste bloco são usados para o contador, e o restante é usado para o nonce. Por exemplo, se o comprimento for definido como 64, então a primeira metade do contador é o nonce e a segunda metade é usada para o contador.lengthAES-CBC, passe um objeto com as seguintes chaves:nameAES-CBC.ivArrayBuffer, TypedArray ou DataView, deve ter 16 bytes, ser imprevisível e preferencialmente criptograficamente aleatório. No entanto, não precisa ser secreto (por exemplo, pode ser transmitido sem criptografia junto com o texto cifrado).AES-GCM, passe um objeto com as seguintes chaves:nameAES-GCM.ivArrayBuffer, TypedArray ou DataView, deve ter 16 bytes e deve ser único para cada operação de criptografia realizada com uma determinada chave.additionalDataArrayBuffer, TypedArray ou DataView que contém dados adicionais que não serão criptografados, mas serão autenticados junto com os dados criptografados. Se additionalData for especificado, então os mesmos dados devem ser especificados na chamada correspondente a decrypt(): se os dados fornecidos à chamada decrypt() não corresponderem aos dados originais, a descriptografia lançará uma exceção. O comprimento em bits de additionalData deve ser menor que 2^64 - 1.tagLength128) - um number que determina o tamanho em bits da tag de autenticação gerada na operação de criptografia e usada para autenticação na descriptografia correspondente. Valores possíveis: 32, 64, 96, 104, 112, 120 ou 128. A especificação AES-GCM recomenda que seja 96, 104, 112, 120 ou 128, embora 32 ou 64 bits possam ser aceitáveis em algumas aplicações.keyCryptoKey que contém a chave a ser usada para descriptografia. Se RSA-OAEP for usado, esta é a propriedade privateKey do objeto CryptoKeyPair.dataArrayBuffer, TypedArray ou DataView que contém os dados a serem descriptografados (também conhecidos como texto cifrado).crypto.subtle.deriveBits(algorithm, baseKey, length)Promise que será cumprida com um ArrayBuffer contendo os bits derivados. Valores possíveis:algorithmHKDF, passe um objeto com as seguintes chaves:nameHKDF.hashSHA-1, SHA-256, SHA-384 ou SHA-512.saltArrayBuffer, TypedArray ou DataView que representa um valor aleatório ou pseudo-aleatório com o mesmo comprimento da saída da função digest. Ao contrário do material de chave de entrada passado para deriveKey(), o salt não precisa ser mantido em segredo.infoArrayBuffer, TypedArray ou DataView que representa informações contextuais específicas da aplicação usadas para vincular a chave derivada a uma aplicação ou contexto, e permite derivar chaves diferentes para contextos diferentes enquanto usa o mesmo material de chave de entrada. Esta propriedade é obrigatória, mas pode ser um buffer vazio.PBKDF2, passe um objeto com as seguintes chaves:namePBKDF2.hashSHA-1, SHA-256, SHA-384 ou SHA-512.saltArrayBuffer, TypedArray ou DataView que representa um valor aleatório ou pseudo-aleatório de pelo menos 16 bytes. Ao contrário do material de chave de entrada passado para deriveKey(), o salt não precisa ser mantido em segredo.iterationsnumber que representa o número de vezes que a função hash será executada em deriveKey().ECDH, passe o objeto com as seguintes chaves (desde 0.9.1):nameECDH.publicCryptoKey que representa a chave pública da outra parte. A chave deve ser gerada usando a mesma curva que a chave base.iterationsnumber que representa o número de vezes que a função hash será executada em deriveKey().ECDH, passe o objeto com as seguintes chaves (desde 0.9.1):nameECDH.publicCryptoKey que representa a chave pública da outra parte. A chave deve ser gerada usando a mesma curva que a chave base.baseKeyCryptoKey que representa a entrada para o algoritmo de derivação - o material de chave inicial para a função de derivação: por exemplo, para PBKDF2 pode ser uma senha, importada como uma CryptoKey usando crypto.subtle.importKey().length8.crypto.subtle.deriveKey(algorithm, baseKey, derivedKeyAlgorithm, extractable, keyUsages)algorithmHKDF, passe o objeto com as seguintes chaves:nameHKDF.hashSHA-1, SHA-256, SHA-384, ou SHA-512.saltArrayBuffer, TypedArray, ou DataView que representa um valor aleatório ou pseudo-aleatório com o mesmo comprimento da saída da função digest. Diferentemente do material de chave de entrada passado para deriveKey(), o salt não precisa ser mantido em segredo.infoArrayBuffer, TypedArray, ou DataView que representa informações contextuais específicas da aplicação usadas para vincular a chave derivada a uma aplicação ou contexto, e permite derivar chaves diferentes para contextos diferentes enquanto usa o mesmo material de chave de entrada. Esta propriedade é obrigatória, mas pode ser um buffer vazio.PBKDF2, passe o objeto com as seguintes chaves:namePBKDF2.hashSHA-1, SHA-256, SHA-384, ou SHA-512.saltArrayBuffer, TypedArray, ou DataView que representa um valor aleatório ou pseudo-aleatório de pelo menos 16 bytes. Diferentemente do material de chave de entrada passado para deriveKey(), o salt não precisa ser mantido em segredo.iterationsnumber que representa o número de vezes que a função hash será executada em deriveKey().ECDH, passe o objeto com as seguintes chaves (desde 0.9.1):nameECDH.publicKeyCryptoKey que representa a chave pública da outra parte. A chave deve ser gerada usando a mesma curva que a chave base.baseKeyCryptoKey que representa a entrada para o algoritmo de derivação - o material de chave inicial para a função de derivação: por exemplo, para PBKDF2 pode ser uma senha, importada como uma CryptoKey usando crypto.subtle.importKey().derivedKeyAlgorithmHMAC, passe o objeto com as seguintes chaves:nameHMAC.hashSHA-1, SHA-256, SHA-384, ou SHA-512.lengthnumber que representa o comprimento em bits da chave. Se não especificado, o comprimento da chave é igual ao tamanho do bloco da função hash escolhida.AES-CTR, AES-CBC, ou AES-GCM, passe o objeto com as seguintes chaves:nameAES-CTR, AES-CBC, ou AES-GCM, dependendo do algoritmo usado.lengthnumber que representa o comprimento em bits da chave a ser gerada: 128, 192, ou 256.extractablekeyUsagesArray que indica o que pode ser feito com a chave derivada. Os usos da chave devem ser permitidos pelo algoritmo definido em derivedKeyAlgorithm. Valores possíveis:encryptdecryptsignverifyderiveKeyderiveBitswrapKeyunwrapKeycrypto.subtle.digest(algorithm, data)Promise que será cumprida com o digest. Valores possíveis:algorithmSHA-1 (não para aplicações criptográficas), SHA-256, SHA-384, ou SHA-512.dataArrayBuffer, TypedArray, ou DataView que contém os dados a serem processados.crypto.subtle.exportKey(format, key)CryptoKey e retorna a chave em um formato externo e portável (desde 0.7.10). Se o format for jwk, então a Promise é cumprida com um objeto JSON contendo a chave. Caso contrário, a promise é cumprida com um ArrayBuffer contendo a chave. Valores possíveis:formatrawpkcs8spkijwkkeyCryptoKey que contém a chave a ser exportada.crypto.subtle.generateKey(algorithm, extractable, usage)Promise que é cumprida com a chave gerada como um objeto CryptoKey ou CryptoKeyPair. Valores possíveis:algorithmRSASSA-PKCS1-v1_5, RSA-PSS, ou RSA-OAEP, passe o objeto com as seguintes chaves:nameRSASSA-PKCS1-v1_5, RSA-PSS, ou RSA-OAEP, dependendo do algoritmo usado.hashdigest a ser usada, pode ser SHA-256, SHA-384, ou SHA-512.ECDSA, passe o objeto com as seguintes chaves:nameECDSA.namedCurveP-256, P-384, ou P-521.HMAC, passe o objeto com as seguintes chaves:nameHMAC.hashdigest a ser usada, pode ser SHA-256, SHA-384, ou SHA-512.lengthAES-CTR, AES-CBC, ou AES-GCM, passe a string identificando o algoritmo ou um objeto da forma "name": "ALGORITHM" , onde ALGORITHM é o nome do algoritmo.ECDH, passe o objeto com as seguintes chaves (desde 0.9.1):nameECDH.namedCurveP-256, P-384, ou P-521.extractableusagearray que indica ações possíveis com a chave:encryptdecryptsignverifyderiveKeyderiveBitswrapKeyunwrapKeycrypto.subtle.importKey(format, keyData, algorithm, extractable, keyUsages)CryptoKey. Retorna uma Promise que é cumprida com a chave importada como um objeto CryptoKey. Valores possíveis:formatrawpkcs8spkijwkkeyDataArrayBuffer, TypedArray ou DataView que contém a chave no formato fornecido.algorithmRSASSA-PKCS1-v1_5, RSA-PSS ou RSA-OAEP, passe o objeto com as seguintes chaves:crypto.subtle.importKey(format, keyData, algorithm, extractable, keyUsages)CryptoKey. Retorna uma Promise que é cumprida com a chave importada como um objeto CryptoKey. Valores possíveis:formatrawpkcs8spkijwkkeyDataArrayBuffer, TypedArray ou DataView que contém a chave no formato fornecido.algorithmRSASSA-PKCS1-v1_5, RSA-PSS ou RSA-OAEP, passe o objeto com as seguintes chaves:nameRSASSA-PKCS1-v1_5, RSA-PSS ou RSA-OAEP, dependendo do algoritmo usado.hashdigest a ser usada, pode ser SHA-1, SHA-256, SHA-384 ou SHA-512.ECDSA, passe o objeto com as seguintes chaves:nameECDSA.namedCurveP-256, P-384 ou P-521.HMAC, passe o objeto com as seguintes chaves:nameHMAC.hashdigest a ser usada, pode ser SHA-256, SHA-384 ou SHA-512.lengthAES-CTR, AES-CBC ou AES-GCM, passe a string identificando o algoritmo ou um objeto da forma "name": "ALGORITHM" , onde ALGORITHM é o nome do algoritmo.PBKDF2, passe a string PBKDF2.HKDF, passe a string HKDF.ECDH, passe o objeto com as seguintes chaves (desde 0.9.1):nameECDH.namedCurveP-256, P-384 ou P-521.extractablekeyUsagesarray que indica ações possíveis com a chave:encryptdecryptsignverifyderiveKeyderiveBitswrapKeyunwrapKeycrypto.subtle.sign(algorithm, key, data)signature como uma Promise que é cumprida com um ArrayBuffer contendo a assinatura. Valores possíveis:algorithmRSASSA-PKCS1-v1_5, passe a string identificando o algoritmo ou um objeto da forma "name": "ALGORITHM" .RSA-PSS, passe o objeto com as seguintes chaves:nameRSA-PSS.saltLengthinteger longo que representa o comprimento do salt aleatório a ser usado, em bytes.ECDSA, passe o objeto com as seguintes chaves:nameECDSA.hashSHA-256, SHA-384 ou SHA-512.HMAC, passe a string identificando o algoritmo ou um objeto da forma "name": "ALGORITHM" .keyCryptoKey que contém a chave a ser usada para assinatura. Se o algoritmo identifica um criptossistema de chave pública, esta é a chave privada.dataArrayBuffer, TypedArray ou DataView que contém os dados a serem assinados.crypto.subtle.verify(algorithm, key, signature, data)Promise que é cumprida com um valor booleano: true se a assinatura for válida, caso contrário false. Valores possíveis:algorithmRSASSA-PKCS1-v1_5, passe a string identificando o algoritmo ou um objeto da forma "name": "ALGORITHM" .RSA-PSS, passe o objeto com as seguintes chaves:nameRSA-PSS.saltLengthinteger longo que representa o comprimento do salt aleatório a ser usado, em bytes.ECDSA, passe o objeto com as seguintes chaves:nameECDSA.hashSHA-256, SHA-384 ou SHA-512.HMAC, passe a string identificando o algoritmo ou um objeto da forma "name": "ALGORITHM" .keyCryptoKey que contém a chave a ser usada para verificação. É a chave secreta para um algoritmo simétrico e a chave pública para um sistema de chave pública.signatureArrayBuffer, TypedArray ou DataView que contém a assinatura a ser verificada.dataArrayBuffer, TypedArray ou DataView que contém os dados cuja assinatura deve ser verificada.CryptoKey#
CryptoKey.algorithmCryptoKey.extractableCryptoKey.typeCryptoKey.usagesCryptoKey representa uma chave criptográfica obtida de um dos métodos SubtleCrypto: crypto.subtle.generateKey(), crypto.subtle.deriveKey(), crypto.subtle.importKey().CryptoKey.algorithmCryptoKey.extractabletrue se a chave pode ser exportada (desde 0.8.0), somente leitura.CryptoKey.typesecretprivateCryptoKeyPair de algoritmo assimétrico.publicCryptoKeyPair de algoritmo assimétrico.CryptoKey.usagesencryptdecryptsignverifyderiveKeyderiveBitsCryptoKeyPair#
CryptoKeyPair.privateKeyCryptoKeyPair.publicKeyCryptoKeyPair é um objeto dicionário da API WebCrypto que representa um par de chaves assimétricas.CryptoKeyPair.privateKeyCryptoKey representando a chave privada.CryptoKeyPair.publicKeyCryptoKey representando a chave pública.njs#
njs.versionnjs.version_numbernjs.dump()njs.memoryStatsnjs.on()njs é um objeto global que representa a instância atual da VM (desde 0.2.0).njs.versionnjs.version_number0x000704 (desde 0.7.4).njs.dump(value)njs.memoryStatssizenjs.on(event, callback)exitprocess#
process.argvprocess.envprocess.kill()process.pidprocess.ppidprocess é um objeto global que fornece informações sobre o processo atual (0.3.3).process.argvprocess.envenv para preservar algumas das variáveis herdadas.process.kill(pid, number | string)pid. Nomes de sinais são números ou strings como SIGINT ou SIGHUP. Veja kill(2) para mais informações.process.pidprocess.ppidString#
Strings de Bytes (Removidas)#
r.requestBuffer, r.rawVariables, devem ser usados.toUTF8() serializava uma string Unicode para uma string de bytes usando codificação UTF-8. O método toBytes() serializava uma string Unicode com pontos de código até 255 em uma string de bytes; caso contrário, null era retornado.String.bytesFrom() (removido na 0.8.0, use Buffer.from())String.prototype.fromBytes() (removido na 0.8.0)String.prototype.fromUTF8() (removido na 0.8.0, use TextDecoder)String.prototype.toBytes() (removido na 0.8.0)String.prototype.toString() com codificação (removido na 0.8.0)String.prototype.toUTF8() (removido na 0.8.0, use TextEncoder)Web API#
TextDecoder#
TextDecoder()TextDecoder.prototype.encodingTextDecoder.prototype.fatalTextDecoder.prototype.ignoreBOMTextDecoder.prototype.decode()TextDecoder produz um fluxo de pontos de código a partir de um fluxo de bytes (0.4.3).TextDecoder([[encoding], options])TextDecoder para a codificação especificada; atualmente, apenas UTF-8 é suportado. O options é um dicionário TextDecoderOptions com a propriedade:fatalTextDecoder.decode() deve lançar a exceção TypeError quando um erro de codificação é encontrado, por padrão é false.TextDecoder.prototype.encodingTextDecoder(), somente leitura.TextDecoder.prototype.fataltrue se o modo de erro é fatal, somente leitura.TextDecoder.prototype.ignoreBOMtrue se o marcador de ordem de byte é ignorado, somente leitura.TextDecoder.prototype.decode(buffer, [options])buffer por TextDecoder(). O buffer pode ser ArrayBuffer. O options é um dicionário TextDecodeOptions com a propriedade:streamdecode(): true se processando os dados em pedaços, e false para o pedaço final ou se os dados não estão em pedaços. Por padrão é false.>> (new TextDecoder()).decode(new Uint8Array([206,177,206,178]))
αβ
TextEncoder#
TextEncoder()TextEncoder.prototype.encode()TextEncoder.prototype.encodeInto()TextEncoder produz um fluxo de bytes com codificação UTF-8 a partir de um fluxo de pontos de código (0.4.3).TextEncoder()TextEncoder recém-construído que gerará um fluxo de bytes com codificação UTF-8.TextEncoder.prototype.encode(string)string em um Uint8Array com texto codificado em UTF-8.TextEncoder.prototype.encodeInto(string, uint8Array)string para UTF-8, coloca o resultado no Uint8Array de destino e retorna um objeto dicionário que mostra o progresso da codificação. O objeto dicionário contém dois membros:readstring de origem convertidas para UTF-8.writtenUint8Array de destino.Timers#
clearTimeout()setTimeout()clearTimeout(timeout)timeout criado por setTimeout().setTimeout(function, milliseconds[, argument1, argumentN])função após um número especificado de milissegundos. Um ou mais argumentos opcionais podem ser passados para a função especificada. Retorna um objeto timeout.function handler(v)
{
// ...
}
t = setTimeout(handler, 12);
// ...
clearTimeout(t);
Funções Globais#
atob()btoa()atob(encodedData)Base64. O parâmetro encodedData é uma string binária que contém dados codificados em Base64. Retorna uma string que contém dados decodificados de encodedData.btoa() pode ser usado para codificar e transmitir dados que, de outra forma, poderiam causar problemas de comunicação, depois transmiti-los e usar o método atob() para decodificar os dados novamente. Por exemplo, você pode codificar, transmitir e decodificar caracteres de controle como valores ASCII de 0 a 31.const encodedData = btoa("text to encode"); // encode a string
const decodedData = atob(encodedData); // decode the string
btoa(stringToEncode)stringToEncode é uma string binária a ser codificada. Retorna uma string ASCII contendo a representação Base64 de stringToEncode.atob() para decodificar os dados novamente. Por exemplo, você pode codificar caracteres de controle como valores ASCII de 0 a 31.const encodedData = btoa("text to encode"); // encode a string
const decodedData = atob(encodedData); // decode the string
Módulos Integrados#
Buffer#
Buffer é uma forma compatível com Node.js de trabalhar com dados binários. Devido ao tamanho extenso do arquivo, esta seção está limitada a uma lista abrangente de métodos Buffer.Buffer.alloc()Buffer.allocUnsafe()Buffer.byteLength()Buffer.compare()Buffer.concat()Buffer.from(array)Buffer.from(arrayBuffer)Buffer.from(buffer)Buffer.from(object)Buffer.from(string)Buffer.isBuffer()Buffer.isEncoding()buffer[]buf.bufferbuf.byteOffsetbuf.compare()buf.copy()buf.equals()buf.fill()buf.includes()buf.indexOf()buf.lastIndexOf()buf.lengthbuf.readIntBE()buf.readIntLE()buf.readUIntBE()buf.readUIntLE()buf.readDoubleBE()buf.readDoubleLE()buf.readFloatBE()buf.readFloatLE()buf.subarray()buf.slice()buf.swap16()buf.swap32()buf.swap64()buf.toJSON()buf.toString()buf.write()buf.writeIntBE()buf.writeIntLE()buf.writeUIntBE()buf.writeUIntLE()buf.writeDoubleBE()buf.writeDoubleLE()buf.writeFloatBE()buf.writeFloatLE()Crypto#
import crypto from 'crypto'.crypto.createHash()crypto.createHmac()crypto.createHash(algorithm)algorithm fornecido. O algoritmo pode ser md5, sha1 e sha256.crypto.createHmac(algorithm, secret key)algorithm e a secret key fornecidos. O algoritmo pode ser md5, sha1 e sha256.Hash#
hash.update()hash.digest()hash.update(data)data fornecidos.hash.digest([encoding])hash.update(). A codificação pode ser hex, base64 e base64url. Se a codificação não for fornecida, um objeto Buffer é retornado (0.4.4).hash.copy()import crypto from 'crypto';
crypto.createHash('sha1').update('A').update('B').digest('base64url');
/* BtlFlCqiamG-GMPiK_GbvKjdK10 */
HMAC#
hmac.update()hmac.digest()hmac.update(data)data fornecidos.hmac.digest([encoding])hmac.update(). A codificação pode ser hex, base64 e base64url. Se a codificação não for fornecida, um objeto Buffer é retornado (0.4.4).fs#
fs fornece operações com o sistema de arquivos. O objeto do módulo é importado usando import fs from 'fs'.fs.accessSync()fs.appendFileSync()fs.mkdirSync()fs.readdirSync()fs.readFileSync()fs.realpathSync()fs.renameSync()fs.rmdirSync()fs.symlinkSync()fs.unlinkSync()fs.writeFileSync()fs.promises.readFile()fs.promises.appendFile()fs.promises.writeFile()fs.promises.readdir()fs.promises.mkdir()fs.promises.rmdir()fs.promises.rename()fs.promises.unlink()fs.promises.symlink()fs.promises.access()fs.promises.realpath()Query String#
import qs from 'querystring'.querystring.decode()querystring.encode()querystring.escape()querystring.parse()querystring.stringify()querystring.unescape()querystring.decode()querystring.parse().querystring.encode()querystring.stringify().querystring.escape(string)string de maneira otimizada para os requisitos de strings de consulta de URL. O método é usado por querystring.stringify() e não deve ser usado diretamente.querystring.parse(string[, separator[, equal[, options]]])string como uma string de consulta de URL e retorna um objeto. O parâmetro opcional separator (padrão: &) especifica a substring para delimitar pares chave-valor. O parâmetro opcional equal (padrão: =) especifica a substring para delimitar chaves e valores. O parâmetro opcional options é um objeto que pode conter as seguintes propriedades:decodeURIComponentquerystring.unescape().maxKeys1000. O valor 0 remove limitações para contagem de chaves.>> qs.parse('foo=bar&abc=xyz&abc=123')
{
foo: 'bar',
abc: ['xyz', '123']
}
querystring.stringify(object[, separator[, equal[, options]]])object iterando através de suas próprias propriedades. O parâmetro opcional separator (padrão: &) especifica a substring para delimitar pares chave-valor. O parâmetro opcional equal (padrão: =) especifica a substring para delimitar chaves e valores. O parâmetro opcional options é um objeto que pode conter a seguinte propriedade:encodeURIComponentquerystring.escape().>> qs.stringify({ foo: 'bar', baz: ['qux', 'quux'], corge: '' })
'foo=bar&baz=qux&baz=quux&corge='
querystring.unescape(string)string. O método é usado por querystring.parse() e não deve ser usado diretamente.XML#
xml.parse()xml.c14n()xml.exclusiveC14n()xml.serialize()xml.serializeToString()XMLDocXMLNodeXMLAttrimport xml from 'xml'.import xml from 'xml';
let data = `<note><to b="bar" a= "foo" >Tove</to><from>Jani</from></note>`;
let doc = xml.parse(data);
console.log(doc.note.to.$text) /* 'Tove' */
console.log(doc.note.to.$attr$b) /* 'bar' */
console.log(doc.note.$tags[1].$text) /* 'Jani' */
let dec = new TextDecoder();
let c14n = dec.decode(xml.exclusiveC14n(doc.note));
console.log(c14n) /* '<note><to a="foo" b="bar">Tove</to><from>Jani</from></note>' */
c14n = dec.decode(xml.exclusiveC14n(doc.note.to));
console.log(c14n) /* '<to a="foo" b="bar">Tove</to>' */
c14n = dec.decode(xml.exclusiveC14n(doc.note, doc.note.to /* excluding 'to' */));
console.log(c14n) /* '<note><from>Jani</from></note>' */
parse(string | Buffer)XMLDoc representando o documento XML analisado.c14n(root_node[, excluding_node])root_node e seus filhos de acordo com Canonical XML Version 1.1. O root_node pode ser um objeto wrapper XMLNode ou XMLDoc em torno da estrutura XML. Retorna um objeto Buffer que contém a saída canonicalizada.excluding_nodeexclusiveC14n(root_node[, excluding_node[, withComments[,prefix_list]]])root_node e seus filhos de acordo com Exclusive XML Canonicalization Version 1.0.root_nodeXMLNode ou XMLDoc em torno da estrutura XML.excluding_nodewithCommentsfalse por padrão. Se true, a canonicalização corresponde a Exclusive XML Canonicalization Version 1.0. Retorna um objeto Buffer que contém a saída canonicalizada.prefix_listserialize()xml.c14n() (desde 0.7.11).serializeToString()xml.c14n() exceto que retorna o resultado como uma string (desde 0.7.11).XMLDocdoc.$rootdoc.abcabc como um objeto wrapper XMLNode.XMLNodenode.abcnode.$tag$abc.node.$attr$abcabc do nó, gravável desde 0.7.11.node.$attr$abc=xyznode.setAttribute('abc', xyz) (desde 0.7.11).node.$attrsXMLAttr para todos os atributos do nó.node.$namenode.$nsnode.$parentnode.$tag$abcabc, gravável desde 0.7.11.node.$tagsnode.$tags = [node1, node2, ...]node.removeChildren(); node.addChild(node1); node.addChild(node2) (desde 0.7.11).node.$tags$abcabc do nó, gravável desde 0.7.11.node.$textnode.$text = 'abc'node.setText('abc') (desde 0.7.11).node.addChild(nd)nd é copiado recursivamente antes de ser adicionado ao nó.node.removeAllAttributes()node.removeAttribute(attr_name)attr_name (desde 0.7.11).node.removeChildren(tag_name)tag_name (desde 0.7.11). Se tag_name estiver ausente, todas as tags filhas são removidas.node.removeText()node.setAttribute(attr_name, value)attr_name (desde 0.7.11). Quando o valor é null, o atributo chamado attr_name é excluído.node.setText(value)null, o texto do nó é excluído.XMLAttrattr.abcabc.zlib#
zlib (0.5.2) fornece funcionalidade de compressão e descompressão usando zlib. O objeto do módulo é importado usando import zlib from 'zlib'.zlib.constantszlib.deflateRawSync()zlib.deflateSync()zlib.inflateRawSync()zlib.inflateSync()zlib.constantszlib.deflateRawSync(data[, options])data usando o algoritmo Deflate sem o cabeçalho zlib.zlib.deflateSync(data[, options])data usando o algoritmo Deflate.zlib.inflateRawSync(data[, options])data usando o algoritmo Deflate sem o cabeçalho zlib.zlib.inflateSync(data[, options])data usando o algoritmo Deflate.options é um objeto que pode conter as seguintes propriedades:levelzlib.constants.Z_DEFAULT_COMPRESSION).memLevelzlib.constants.Z_DEFAULT_MEMLEVEL).strategyzlib.constants.Z_DEFAULT_STRATEGY).windowBitszlib.constants.Z_DEFAULT_WINDOWBITS).dictionaryinfotrue, retorna um objeto com buffer e engine.chunkSizezlib.constants.Z_DEFAULT_CHUNK).import zlib from 'zlib';
const deflated = zlib.deflateSync('Hello World!');
const inflated = zlib.inflateSync(deflated);
console.log(inflated.toString()); // 'Hello World!'