Referencia de la API de NJS#

El módulo NJS proporciona objetos, métodos y propiedades para extender la funcionalidad de Angie.

Esta referencia contiene únicamente propiedades, métodos y módulos específicos de NJS que no cumplen con ECMAScript. Las definiciones de propiedades y métodos de NJS que cumplen con ECMAScript se pueden encontrar en la especificación de ECMAScript.

Objetos de Angie#

Solicitud HTTP#

  • r.args{}

  • r.done()

  • r.error()

  • r.finish()

  • r.headersIn{}

  • r.headersOut{}

  • r.httpVersion

  • r.internal

  • r.internalRedirect()

  • r.log()

  • r.method

  • r.parent

  • r.remoteAddress

  • r.requestBody

  • r.requestBuffer

  • r.requestText

  • r.rawHeadersIn[]

  • r.rawHeadersOut[]

  • r.responseBody

  • r.responseBuffer

  • r.responseText

  • r.return()

  • r.send()

  • r.sendBuffer()

  • r.sendHeader()

  • r.setReturnValue()

  • r.status

  • r.subrequest()

  • r.uri

  • r.rawVariables{}

  • r.variables{}

  • r.warn()

El objeto de solicitud HTTP está disponible únicamente en el módulo HTTP JS. Antes de la versión 0.8.5, todas las propiedades de cadena del objeto eran cadenas de bytes.

r.args{}

Objeto de argumentos de la solicitud, solo lectura.

La cadena de consulta se devuelve como un objeto. Desde la versión 0.7.6, las claves duplicadas se devuelven como un array, las claves distinguen entre mayúsculas y minúsculas, tanto las claves como los valores se decodifican en porcentaje.

Por ejemplo, la cadena de consulta

a=1&b=%32&A=3&b=4&B=two%20words

se convierte a r.args como:

{a: "1", b: ["2", "4"], A: "3", B: "two words"}

Se pueden lograr escenarios de análisis más avanzados con el módulo Query String y la variable $args, por ejemplo:

import qs from 'querystring';

function args(r) {
    return qs.parse(r.variables.args);
}

El objeto de argumentos se evalúa en el primer acceso a r.args. Si solo se necesita un único argumento, por ejemplo foo, se pueden usar las variables de Angie:

r.variables.arg_foo

Aquí, el objeto de variables de Angie devuelve el primer valor para una clave dada, sin distinguir entre mayúsculas y minúsculas, sin decodificación de porcentaje.

Para convertir r.args de nuevo a una cadena, se puede usar el método stringify de Query String.

r.done()

Después de llamar a esta función, los siguientes fragmentos de datos se pasarán al cliente sin llamar a js_body_filter (0.5.2). Solo se puede llamar desde la función js_body_filter.

r.error(string)

Escribe una string en el registro de errores en el nivel de registro error.

Nota

Como Angie tiene un límite de longitud máxima de línea codificado, solo se pueden registrar los primeros 2048 bytes de la cadena.

r.finish()

Finaliza el envío de una respuesta al cliente.

r.headersIn{}

Objeto de encabezados entrantes, solo lectura.

Se puede acceder al encabezado de solicitud Foo con la sintaxis: headersIn.foo o headersIn['Foo'].

Los encabezados de solicitud 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 y User-Agent pueden tener solo un valor de campo (0.4.1). Los valores de campo duplicados en los encabezados Cookie se separan por punto y coma (;). Los valores de campo duplicados en todos los demás encabezados de solicitud se separan por comas.

r.headersOut{}

Objeto de encabezados salientes para la solicitud principal, escribible.

Si r.headersOut{} es el objeto de respuesta de una subsolicitud, representa los encabezados de respuesta. En este caso, los valores de campo en los encabezados de respuesta Accept-Ranges, Connection, Content-Disposition, Content-Encoding, Content-Length, Content-Range, Date, Keep-Alive, Server, Transfer-Encoding, X-Accel-* pueden omitirse.

Se puede acceder al encabezado de respuesta Foo con la sintaxis: headersOut.foo o headersOut['Foo'].

Los encabezados salientes deben establecerse antes de que se envíe un encabezado de respuesta a un cliente; de lo contrario, la actualización del encabezado se ignorará. Esto significa que r.headersOut{} es efectivamente escribible en:

  • el manejador js_content antes de que se llame a r.sendHeader() o r.return()

  • el manejador js_header_filter

Los valores de campo de los encabezados de respuesta multivalor (0.4.0) se pueden establecer con la sintaxis:

r.headersOut['Foo'] = ['a', 'b']

donde la salida será:

Foo: a
Foo: b

Se eliminarán todos los valores de campo anteriores del encabezado de respuesta Foo.

Para los encabezados de respuesta estándar que aceptan solo un valor de campo único como Content-Type, solo el último elemento del array tendrá efecto. Los valores de campo del encabezado de respuesta Set-Cookie siempre se devuelven como un array. Los valores de campo duplicados en los encabezados de respuesta Age, Content-Encoding, Content-Length, Content-Type, ETag, Expires, Last-Modified, Location, Retry-After se ignoran. Los valores de campo duplicados en todos los demás encabezados de respuesta se separan por comas.

r.httpVersion

Versión HTTP, solo lectura.

r.internal

Valor booleano, true para ubicaciones internas.

r.internalRedirect(uri)

Realiza una redirección interna al uri especificado. Si el URI comienza con el prefijo @, se considera una ubicación con nombre. En una nueva ubicación, todo el procesamiento de la solicitud se repite comenzando desde NGX_HTTP_SERVER_REWRITE_PHASE para ubicaciones ordinarias y desde NGX_HTTP_REWRITE_PHASE para ubicaciones con nombre. Como resultado, una redirección a una ubicación con nombre no verifica el límite client_max_body_size. Las solicitudes redirigidas se vuelven internas y pueden acceder a ubicaciones internas. La redirección real ocurre después de que se completa la ejecución del manejador.

Nota

Después de la redirección, se inicia una nueva VM de NJS en la ubicación de destino, y la VM en la ubicación original se detiene. Los valores de las variables de Angie se mantienen y se pueden usar para pasar información a la ubicación de destino. Desde la versión 0.5.3, se puede usar una variable declarada con la directiva js_var para HTTP o Stream.

Nota

Desde la versión 0.7.4, el método acepta URI escapados.

r.log(string)

Escribe una string en el registro de errores en el nivel de registro info.

Nota

Como Angie tiene un límite de longitud máxima de línea codificado, solo se pueden registrar los primeros 2048 bytes de la cadena.

r.method

Método HTTP, solo lectura.

r.parent

Hace referencia al objeto de solicitud padre.

r.remoteAddress

Dirección del cliente, solo lectura.

r.requestBody

La propiedad quedó obsoleta en la versión 0.5.0 y se eliminó en la versión 0.8.0. En su lugar, se debe usar la propiedad r.requestBuffer o r.requestText.

r.requestBuffer

Cuerpo de la solicitud del cliente si no se ha escrito en un archivo temporal (desde la versión 0.5.0). Para asegurar que el cuerpo de la solicitud del cliente esté en memoria, su tamaño debe limitarse mediante client_max_body_size, y se debe establecer un tamaño de búfer suficiente usando client_body_buffer_size. La propiedad está disponible solo en la directiva js_content.

r.requestText

Lo mismo que r.requestBuffer, pero devuelve una string. Tenga en cuenta que puede convertir bytes no válidos en la codificación UTF-8 en el carácter de reemplazo.

r.rawHeadersIn[]

Devuelve un array de pares clave-valor exactamente como se recibieron del cliente (0.4.1).

Por ejemplo, con los siguientes encabezados de solicitud:

Host: localhost
Foo:  bar
foo:  bar2

la salida de r.rawHeadersIn será:

[
    ['Host', 'localhost'],
    ['Foo', 'bar'],
    ['foo', 'bar2']
]

Todos los encabezados foo se pueden recopilar con la sintaxis:

r.rawHeadersIn.filter(v=>v[0].toLowerCase() == 'foo').map(v=>v[1])

la salida será:

['bar', 'bar2']

Los nombres de los campos de encabezado no se convierten a minúsculas, los valores de campo duplicados no se fusionan.

r.rawHeadersOut[]

Devuelve un array de pares clave-valor de encabezados de respuesta (0.4.1). Los nombres de los campos de encabezado no se convierten a minúsculas, los valores de campo duplicados no se fusionan.

r.responseBody

La propiedad quedó obsoleta en la versión 0.5.0 y se eliminó en la versión 0.8.0. En su lugar, se debe usar la propiedad r.responseBuffer o r.responseText.

r.responseBuffer

Contiene el cuerpo de respuesta de la subsolicitud, solo lectura (desde la versión 0.5.0). El tamaño de r.responseBuffer está limitado por la directiva subrequest_output_buffer_size.

r.responseText

Lo mismo que r.responseBuffer pero devuelve una cadena (desde 0.5.0). Tenga en cuenta que puede convertir bytes no válidos en codificación UTF-8 en el carácter de reemplazo.

r.return(status[, string | Buffer])

Envía la respuesta completa con el status especificado al cliente. La respuesta puede ser una cadena o Buffer (0.5.0).

Es posible especificar una URL de redirección (para los códigos 301, 302, 303, 307 y 308) o el texto del cuerpo de la respuesta (para otros códigos) como segundo argumento.

r.send(string | Buffer)

Envía una parte del cuerpo de la respuesta al cliente. Los datos enviados pueden ser una cadena o Buffer (0.5.0).

r.sendBuffer(data[, options])

Añade datos a la cadena de fragmentos de datos que se reenviarán al siguiente filtro de cuerpo (0.5.2). El reenvío real ocurre más tarde, cuando se procesan todos los fragmentos de datos de la cadena actual.

Los datos pueden ser una cadena o Buffer. options es un objeto utilizado para anular las banderas de búfer de Angie derivadas de un búfer de fragmento de datos entrante. Las banderas se pueden anular con las siguientes banderas:

last

Booleano, true si el búfer es el último búfer.

flush

Booleano, true si el búfer debe tener la bandera flush.

El método solo se puede llamar desde la función js_body_filter.

r.sendHeader()

Envía las cabeceras HTTP al cliente.

r.setReturnValue(value)

Establece el valor de retorno del manejador js_set (0.7.0). A diferencia de una declaración de retorno ordinaria, este método debe usarse cuando el manejador es una función asíncrona de JS. Por ejemplo:

async function js_set(r) {
    const digest = await crypto.subtle.digest('SHA-256', r.headersIn.host);
    r.setReturnValue(digest);
}
r.status

Estado, escribible.

r.subrequest(uri[, options[, callback]])

Crea una subsolicitud con el uri y options dados, e instala un callback de finalización opcional.

Una subsolicitud comparte sus cabeceras de entrada con la solicitud del cliente. Para enviar cabeceras diferentes de las cabeceras originales a un servidor proxy, se puede usar la directiva proxy_set_header. Para enviar un conjunto completamente nuevo de cabeceras a un servidor proxy, se puede usar la directiva proxy_pass_request_headers.

Si options es una cadena, entonces contiene la cadena de argumentos de la subsolicitud. De lo contrario, se espera que options sea un objeto con las siguientes claves:

args

Cadena de argumentos, por defecto se usa una cadena vacía.

body

Cuerpo de la solicitud, por defecto se usa el cuerpo de la solicitud del objeto de solicitud padre.

method

Método HTTP, por defecto se usa el método GET.

detached

Bandera booleana (0.3.9); si es true, la subsolicitud creada es una subsolicitud independiente. Las respuestas a subsolicitudes independientes se ignoran. A diferencia de las subsolicitudes ordinarias, una subsolicitud independiente se puede crear dentro de un manejador de variable. La bandera detached y el argumento callback son mutuamente excluyentes.

El callback de finalización recibe un objeto de respuesta de subsolicitud con métodos y propiedades idénticos al objeto de solicitud padre.

Desde 0.3.8, si no se proporciona un callback, se devuelve el objeto Promise que se resuelve en el objeto de respuesta de subsolicitud.

Por ejemplo, para ver todas las cabeceras de respuesta en la subsolicitud:

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.uri

URI actual en la solicitud, normalizado, solo lectura.

r.rawVariables{}

Variables de Angie como Buffers, escribible (desde 0.5.0).

r.variables{}

Objeto de variables de Angie, escribible (desde 0.2.8).

Por ejemplo, para obtener la variable $foo, se puede usar una de las siguientes sintaxis:

r.variables['foo']
r.variables.foo

Desde 0.8.6, las capturas de expresiones regulares se pueden acceder usando la siguiente sintaxis:

r.variables['1']
r.variables[1]

Angie trata las variables referenciadas en angie.conf y las variables no referenciadas de manera diferente. Cuando se referencia una variable, puede ser cacheable, pero cuando no se referencia, siempre es no cacheable. Por ejemplo, cuando la variable $request_id solo se accede desde NJS, tiene un nuevo valor cada vez que se evalúa. Pero, cuando $request_id se referencia, por ejemplo:

proxy_set_header X-Request-Id $request_id;

el r.variables.request_id devuelve el mismo valor cada vez.

Una variable es escribible si:

  • fue creada usando la directiva js_var para HTTP o Stream (desde 0.5.3)

  • está referenciada en el archivo de configuración de Angie

Aun así, algunas variables integradas todavía no se les puede asignar un valor (por ejemplo, $http_).

r.warn(string)

Escribe una string en el registro de errores en el nivel de registro warning.

Nota

Como Angie tiene un límite de longitud máxima de línea codificado, solo se pueden registrar los primeros 2048 bytes de la cadena.

Sesión de Stream#

  • s.allow()

  • s.decline()

  • s.deny()

  • s.done()

  • s.error()

  • s.log()

  • s.off()

  • s.on()

  • s.remoteAddress

  • s.rawVariables{}

  • s.send()

  • s.sendDownstream()

  • s.sendUpstream()

  • s.status

  • s.setReturnValue()

  • s.variables{}

  • s.warn()

El objeto de sesión de stream solo está disponible en el módulo Stream JS. Antes de 0.8.5, todas las propiedades de cadena del objeto eran cadenas de bytes.

s.allow()

Un alias de s.done(0) (0.2.4).

s.decline()

Un alias de s.done(-5) (0.2.4).

s.deny()

Un alias de s.done(403) (0.2.4).

s.done([code])

Establece un code de salida para el manejador de fase actual a un valor de código, por defecto 0. La finalización real ocurre cuando se completa el manejador js y se procesan todos los eventos pendientes, por ejemplo, de ngx.fetch() o setTimeout() (0.2.4).

Valores de código posibles:

  • 0 — finalización exitosa, pasando el control a la siguiente fase

  • -5 — indeciso, pasando el control al siguiente manejador de la fase actual (si existe)

  • 403 — acceso prohibido

Solo se puede llamar desde una función de manejador de fase: js_access o js_preread.

s.error(string)

Escribe una string enviada en el registro de errores en el nivel de registro error.

Nota

Como Angie tiene un límite de longitud máxima de línea codificado, solo se pueden registrar los primeros 2048 bytes de la cadena.

s.log(string)

Escribe una string enviada en el registro de errores en el nivel de registro info.

Nota

Como Angie tiene un límite de longitud máxima de línea codificado, solo se pueden registrar los primeros 2048 bytes de la cadena.

s.off(eventName)

Anula el registro del callback establecido por el método s.on() (0.2.4).

s.on(event, callback)

Registra un callback para el event especificado (0.2.4).

Un event puede ser una de las siguientes cadenas:

upload

Nuevos datos (cadena) de un cliente.

download

Nuevos datos (cadena) a un cliente.

upstream

Nuevos datos (Buffer) de un cliente (desde 0.5.0).

downstream

Nuevos datos (Buffer) a un cliente (desde 0.5.0).

El callback de finalización tiene el siguiente prototipo: callback(data, flags), donde data es cadena o Buffer (dependiendo del tipo de evento); flags es un objeto con las siguientes propiedades:

last

Un valor booleano, true si los datos son el último búfer.

s.remoteAddress

Dirección del cliente, solo lectura.

s.rawVariables

Variables de Angie como Buffers, escribible (desde 0.5.0).

s.send(data[, options])

Añade datos a la cadena de fragmentos de datos que se reenviarán en la dirección de avance: en el callback de descarga a un cliente; en la carga a un servidor upstream (0.2.4). El reenvío real ocurre más tarde, cuando se procesan todos los fragmentos de datos de la cadena actual.

Los datos pueden ser una cadena o Buffer (0.5.0). options es un objeto utilizado para anular las banderas de búfer de Angie derivadas de un búfer de fragmento de datos entrante. Las banderas se pueden anular con las siguientes banderas:

last

Booleano, true si el búfer es el último búfer.

flush

Booleano, true si el búfer debe tener la bandera flush.

El método se puede llamar varias veces por invocación de callback.

s.sendDownstream()

Idéntico a s.send(), excepto que siempre envía datos a un cliente (desde 0.7.8).

s.sendUpstream()

Idéntico a s.send(), excepto que siempre envía datos desde un cliente (desde 0.7.8).

s.status

Código de estado de la sesión, un alias de la variable $status, solo lectura (desde 0.5.2).

s.setReturnValue(value)

Establece el valor de retorno del manejador js_set (0.7.0). A diferencia de una sentencia return ordinaria, este método debe usarse cuando el manejador es una función JS asíncrona. Por ejemplo:

async function js_set(r) {
    const digest = await crypto.subtle.digest('SHA-256', r.headersIn.host);
    r.setReturnValue(digest);
}
s.variables{}

Objeto de variables de Angie, escribible (desde 0.2.8). Una variable solo puede ser escribible si está referenciada en el archivo de configuración de Angie. Aun así, algunas variables integradas todavía no pueden ser asignadas con un valor.

s.warn(string)

Escribe la string enviada en el registro de errores con el nivel de registro warning.

Nota

Como Angie tiene un límite de longitud máxima de línea codificado, solo se pueden registrar los primeros 2048 bytes de la cadena.

Sesión Periódica#

  • PeriodicSession.rawVariables{}

  • PeriodicSession.variables{}

El objeto Periodic Session se proporciona como el primer argumento para el manejador js_periodic para HTTP y Stream (desde 0.8.1).

PeriodicSession.rawVariables{}

Variables de Angie como Buffers, escribibles.

PeriodicSession.variables{}

Objeto de variables de Angie, escribible.

Headers#

  • Headers()

  • Headers.append()

  • Headers.delete()

  • Headers.get()

  • Headers.getAll()

  • Headers.forEach()

  • Headers.has()

  • Headers.set()

La interfaz Headers de la API Fetch está disponible desde 0.5.1.

Se puede crear un nuevo objeto Headers usando el constructor Headers() (desde 0.7.10):

Headers([init])
init

Un objeto que contiene cabeceras HTTP para prepoblar el objeto Headers, puede ser un string, un array de pares nombre-valor, o un objeto Headers existente.

Un nuevo objeto Headers tiene las siguientes propiedades y métodos:

append()

Añade un nuevo valor a una cabecera existente en el objeto Headers, o añade la cabecera si aún no existe (desde 0.7.10).

delete()

Elimina una cabecera del objeto Headers (desde 0.7.10).

get()

Devuelve una cadena que contiene los valores de todas las cabeceras con el nombre especificado separados por una coma y un espacio.

getAll(name)

Devuelve un array que contiene los valores de todas las cabeceras con el nombre especificado.

forEach()

Ejecuta una función proporcionada una vez por cada par clave/valor en el objeto Headers (desde 0.7.10).

has()

Devuelve un valor booleano que indica si existe una cabecera con el nombre especificado.

set()

Establece un nuevo valor para una cabecera existente dentro del objeto Headers, o añade la cabecera si aún no existe (desde 0.7.10).

Request#

  • Request()

  • Request.arrayBuffer()

  • Request.bodyUsed

  • Request.cache

  • Request.credentials

  • Request.headers

  • Request.json()

  • Request.method

  • Request.mode

  • Request.text()

  • Request.url

La interfaz Request de la API Fetch está disponible desde 0.7.10.

Se puede crear un nuevo objeto Request usando el constructor Request():

Request[resource[, options]])

Crea un objeto Request para obtener que puede pasarse posteriormente a ngx.fetch(). El resource puede ser una URL o un objeto Request existente. El options es un argumento opcional que se espera que sea un objeto con las siguientes claves:

body

El cuerpo de la petición, por defecto está vacío.

headers

El objeto de cabeceras de la petición — el objeto que contiene cabeceras HTTP para prepoblar el objeto Headers, puede ser un string, un array de pares nombre-valor, o un objeto Headers existente.

method

El método HTTP, por defecto se usa el método GET.

Un nuevo objeto Request tiene las siguientes propiedades y métodos:

arrayBuffer()

Devuelve una Promise que se resuelve con un ArrayBuffer.

bodyUsed

Un valor booleano, true si el cuerpo fue usado en la petición.

cache

Contiene el modo de caché de la petición.

credentials

Contiene las credenciales de la petición, por defecto es same-origin.

headers

El objeto Headers de solo lectura asociado con el Request.

json()

Devuelve una Promise que se resuelve con el resultado de analizar el cuerpo de la petición como JSON.

method

Contiene el método de la petición.

mode

Contiene el modo de la petición.

text()

Devuelve una Promise que se resuelve con una representación de cadena del cuerpo de la petición.

url

Contiene la URL de la petición.

Response#

  • Response()

  • Response.arrayBuffer()

  • Response.bodyUsed

  • Response.headers

  • Response.json()

  • Response.ok

  • Response.redirected

  • Response.status

  • Response.statusText

  • Response.text()

  • Response.type

  • Response.url

La interfaz Response está disponible desde 0.5.1.

Se puede crear un nuevo objeto Response usando el constructor Response() (desde 0.7.10):

Response[body[, options]])

Crea un objeto Response. El body es un argumento opcional, puede ser un string o un buffer, por defecto es null. El options es un argumento opcional que se espera que sea un objeto con las siguientes claves:

headers

El objeto de cabeceras de respuesta — el objeto que contiene cabeceras HTTP para prepoblar el objeto Headers, puede ser un string, un array de pares nombre-valor, o un objeto Headers existente.

status

El código de estado de la respuesta.

statusText

El mensaje de estado correspondiente al código de estado.

Un nuevo objeto Response() tiene las siguientes propiedades y métodos:

arrayBuffer()

Toma un flujo Response y lo lee hasta completarlo. Devuelve una Promise que se resuelve con un ArrayBuffer.

bodyUsed

Un valor booleano, true si el cuerpo fue leído.

headers

El objeto Headers de solo lectura asociado con el Response.

json()

Toma un flujo Response y lo lee hasta completarlo. Devuelve una Promise que se resuelve con el resultado de analizar el texto del cuerpo como JSON.

ok

Un valor booleano, true si la respuesta fue exitosa (códigos de estado entre 200–299).

redirected

Un valor booleano, true si la respuesta es el resultado de una redirección.

status

El código de estado de la respuesta.

statusText

El mensaje de estado correspondiente al código de estado.

text()

Toma un flujo Response y lo lee hasta completarlo. Devuelve una Promise que se resuelve con una cadena.

type

El tipo de la respuesta.

url

La URL de la respuesta.

ngx#

  • ngx.build

  • ngx.conf_file_path

  • ngx.conf_prefix

  • ngx.error_log_path

  • ngx.fetch()

  • ngx.log()

  • ngx.prefix

  • ngx.version

  • ngx.version_number

  • ngx.worker_id

El objeto global ngx está disponible desde 0.5.0.

ngx.build

Una cadena que contiene un nombre de compilación opcional de Angie, corresponde al argumento --build=name del script configure, por defecto es "" (0.8.0).

ngx.conf_file_path

Una cadena que contiene la ruta del archivo al archivo de configuración actual de Angie (0.8.0).

ngx.conf_prefix

Una cadena que contiene la ruta del archivo al prefijo de configuración de Angie — el directorio donde Angie está buscando actualmente la configuración (0.7.8).

ngx.error_log_path

Una cadena que contiene la ruta del archivo al archivo de registro de errores actual (0.8.0).

ngx.fetch(resource, [options])

Realiza una solicitud para obtener un resource (0.5.1), que puede ser una URL o el objeto Request (0.7.10). Devuelve una Promise que se resuelve con el objeto Response. Desde 0.7.0, se admite el esquema https://; las redirecciones no se gestionan.

Si la URL en el resource se especifica como un nombre de dominio, se resuelve utilizando un resolver. Si se especifica el esquema https://, la directiva js_fetch_trusted_certificate debe configurarse para la autenticación del servidor HTTPS del resource.

Se espera que el parámetro options sea un objeto con las siguientes claves:

body

Cuerpo de la solicitud, por defecto está vacío.

buffer_size

El tamaño del búfer para leer la respuesta, por defecto es 4096.

headers

Objeto de encabezados de la solicitud.

max_response_body_size

El tamaño máximo del cuerpo de la respuesta en bytes, por defecto es 32768.

method

Método HTTP, por defecto se utiliza el método GET.

verify

Habilita o deshabilita la verificación del certificado del servidor HTTPS, por defecto es true (0.7.0).

Ejemplo:

let reply = await ngx.fetch('http://example.com/');
let body = await reply.text();

r.return(200, body);
ngx.log(level, message)

Escribe un mensaje en el registro de errores con el nivel de registro especificado. El parámetro level especifica uno de los niveles de registro; el parámetro message puede ser una cadena o Buffer. Se pueden especificar los siguientes niveles de registro: ngx.INFO, ngx.WARN y ngx.ERR.

Nota

Como Angie tiene un límite de longitud máxima de línea codificado, solo se pueden registrar los primeros 2048 bytes de la cadena.

ngx.prefix

Una cadena que contiene la ruta del archivo al prefijo de Angie — un directorio que contiene los archivos del servidor (0.8.0).

ngx.version

Una cadena que contiene la versión de Angie, por ejemplo: 1.25.0 (0.8.0).

ngx.version_number

Un número que contiene la versión de Angie, por ejemplo: 1025000 (0.8.0).

ngx.worker_id

Un número que corresponde al ID interno del worker de Angie, el valor está entre 0 y el valor especificado en la directiva worker_processes (0.8.0).

ngx.shared#

El objeto global ngx.shared está disponible desde 0.8.0.

SharedDict#

  • ngx.shared.SharedDict.add()

  • ngx.shared.SharedDict.capacity

  • ngx.shared.SharedDict.clear()

  • ngx.shared.SharedDict.delete()

  • ngx.shared.SharedDict.freeSpace()

  • ngx.shared.SharedDict.get()

  • ngx.shared.SharedDict.has()

  • ngx.shared.SharedDict.incr()

  • ngx.shared.SharedDict.items()

  • ngx.shared.SharedDict.keys()

  • ngx.shared.SharedDict.name

  • ngx.shared.SharedDict.pop()

  • ngx.shared.SharedDict.replace()

  • ngx.shared.SharedDict.set()

  • ngx.shared.SharedDict.size()

  • ngx.shared.SharedDict.type

El objeto de diccionario compartido está disponible desde 0.8.0. El nombre, tipo y tamaño del diccionario compartido se establecen con la directiva js_shared_dict_zone en HTTP o Stream.

Un objeto SharedDict() tiene las siguientes propiedades y métodos:

ngx.shared.SharedDict.add(key, value [,timeout])

Establece el value para la key especificada en el diccionario solo si la clave aún no existe. El argumento key es una cadena que representa la clave del elemento a agregar; el argumento value es el valor del elemento a agregar.

El argumento opcional timeout se especifica en milisegundos y anula el parámetro timeout de la directiva js_shared_dict_zone en HTTP o Stream (desde 0.8.5). Puede ser útil cuando se espera que algunas claves tengan tiempos de espera únicos.

Devuelve true si el valor se ha agregado correctamente al diccionario SharedDict; false si la clave ya existe en el diccionario. Lanza SharedMemoryError si no hay suficiente espacio libre en el diccionario SharedDict. Lanza TypeError si el value es de un tipo diferente al esperado por este diccionario.

ngx.shared.SharedDict.capacity

Devuelve la capacidad del diccionario SharedDict, corresponde al parámetro size de la directiva js_shared_dict_zone en HTTP o Stream.

ngx.shared.SharedDict.clear()

Elimina todos los elementos del diccionario SharedDict.

ngx.shared.SharedDict.delete(key)

Elimina el elemento asociado con la clave especificada del diccionario SharedDict; true si el elemento en el diccionario existía y fue eliminado, false en caso contrario.

ngx.shared.SharedDict.freeSpace()

Devuelve el tamaño de página libre en bytes. Si el tamaño es cero, el diccionario SharedDict seguirá aceptando nuevos valores si hay espacio en las páginas ocupadas.

ngx.shared.SharedDict.get(key)

Recupera el elemento por su key; devuelve el valor asociado con la key o undefined si no hay ninguno.

ngx.shared.SharedDict.has(key)

Busca un elemento por su key; devuelve true si tal elemento existe o false en caso contrario.

ngx.shared.SharedDict.incr(key,delta[[,init], timeout])

Incrementa el valor entero asociado con la key por delta. El argumento key es una cadena; el argumento delta es el número por el cual incrementar o decrementar el valor. Si la clave no existe, el elemento se inicializará al argumento opcional init, por defecto es 0.

El argumento opcional timeout se especifica en milisegundos y anula el parámetro timeout de la directiva js_shared_dict_zone en HTTP o Stream (desde 0.8.5). Puede ser útil cuando se espera que algunas claves tengan tiempos de espera únicos.

Devuelve el nuevo valor. Lanza SharedMemoryError si no hay suficiente espacio libre en el diccionario SharedDict. Lanza TypeError si este diccionario no espera números.

Nota

Este método solo se puede utilizar si el tipo de diccionario se declaró con el parámetro type=number de la directiva js_shared_dict_zone en HTTP o Stream.

ngx.shared.SharedDict.items([maxCount])

Devuelve un array de los elementos clave-valor del diccionario SharedDict (desde 0.8.1). El parámetro maxCount establece el número máximo de elementos a recuperar, por defecto es 1024.

ngx.shared.SharedDict.keys([maxCount])

Devuelve un array de las claves del diccionario SharedDict. El parámetro maxCount establece el número máximo de claves a recuperar, por defecto es 1024.

ngx.shared.SharedDict.name

Devuelve el nombre del diccionario SharedDict, corresponde al parámetro zone= de la directiva js_shared_dict_zone en HTTP o Stream.

ngx.shared.SharedDict.pop(key)

Elimina el elemento asociado con la key especificada del diccionario SharedDict; devuelve el valor asociado con la key o undefined si no hay ninguno.

ngx.shared.SharedDict.replace(key, value)

Reemplaza el value para la key especificada solo si la clave ya existe; devuelve true si el valor se reemplazó correctamente, false si la clave no existe en el diccionario SharedDict. Lanza SharedMemoryError si no hay suficiente espacio libre en el diccionario SharedDict. Lanza TypeError si el value es de un tipo diferente al esperado por este diccionario.

ngx.shared.SharedDict.set(key, value [,timeout])

Establece el value para la key especificada; devuelve este diccionario SharedDict (para encadenamiento de métodos).

El argumento opcional timeout se especifica en milisegundos y anula el parámetro timeout de la directiva js_shared_dict_zone en HTTP o Stream (desde 0.8.5). Puede ser útil cuando se espera que algunas claves tengan tiempos de espera únicos.

ngx.shared.SharedDict.size()

Devuelve el número de elementos del diccionario SharedDict.

ngx.shared.SharedDict.type

Devuelve string o number que corresponde al tipo de diccionario SharedDict establecido por el parámetro type= de la directiva js_shared_dict_zone en HTTP o Stream.

Objetos Integrados#

console#

  • console.error()

  • console.info()

  • console.log()

  • console.time()

  • console.timeEnd()

  • console.warn()

El objeto console está disponible en Angie desde 0.8.2, en CLI desde 0.2.6.

console.error(msg[, msg2 ...])

Emite uno o más mensajes de error. El mensaje puede ser una cadena o un objeto.

console.info(msg[, msg2 ...])

Emite uno o más mensajes informativos. El mensaje puede ser una cadena o un objeto.

console.log(msg[, msg2 ...])

Emite uno o más mensajes de registro. El mensaje puede ser una cadena o un objeto.

console.time(label)

Inicia un temporizador que puede rastrear cuánto tiempo tarda una operación. El parámetro label permite nombrar diferentes temporizadores. Si se llama a console.timeEnd() con el mismo nombre, se emitirá el tiempo transcurrido desde que se inició el temporizador, en milisegundos.

console.timeEnd(label)

Detiene un temporizador iniciado previamente por console.time(). El parámetro label permite nombrar diferentes temporizadores.

console.warn(msg[, msg2 ...])

Emite uno o más mensajes de advertencia. El mensaje puede ser una cadena o un objeto.

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()

El objeto crypto es un objeto global que permite utilizar funcionalidad criptográfica (desde 0.7.0).

crypto.getRandomValues(typedArray)

Obtiene valores aleatorios criptográficamente fuertes. Devuelve el mismo array pasado como typedArray pero con su contenido reemplazado por los números aleatorios recién generados. Valores posibles:

typedArray

Puede ser Int8Array, Int16Array, Uint16Array, Int32Array, o Uint32Array.

crypto.subtle.encrypt(algorithm, key, data)

Cifra data utilizando el algorithm y la key proporcionados. Devuelve una Promise que se cumple con un ArrayBuffer que contiene el texto cifrado. Valores posibles:

algorithm

Un objeto que especifica el algoritmo a utilizar y cualquier parámetro adicional si es necesario:

  • Para RSA-OAEP, pase un objeto con las siguientes claves:

    name

    Una cadena, debe establecerse en RSA-OAEP:

    crypto.subtle.encrypt({name: "RSA-OAEP"}, key, data)
    
  • Para AES-CTR, pase un objeto con las siguientes claves:

    name

    Una cadena, debe establecerse en AES-CTR.

    counter

    Un ArrayBuffer, TypedArray, o DataView — el valor inicial del bloque contador, debe tener 16 bytes de longitud (el tamaño de bloque AES). Los bits de longitud más a la derecha de este bloque se utilizan para el contador, y el resto se utiliza para el nonce. Por ejemplo, si la longitud se establece en 64, entonces la primera mitad del contador es el nonce y la segunda mitad se utiliza para el contador.

    length

    El número de bits en el bloque contador que se utilizan para el contador real. El contador debe ser lo suficientemente grande como para que no se desborde.

  • Para AES-CBC, pase un objeto con las siguientes claves:

    name

    Una cadena, debe establecerse en AES-CBC.

    iv

    El vector de inicialización, es un ArrayBuffer, TypedArray, o DataView, debe tener 16 bytes, ser impredecible y preferiblemente criptográficamente aleatorio. Sin embargo, no necesita ser secreto, por ejemplo, puede transmitirse sin cifrar junto con el texto cifrado.

  • Para AES-GCM, pase un objeto con las siguientes claves:

    name

    Una cadena, debe establecerse en AES-GCM.

    iv

    El vector de inicialización, es un ArrayBuffer, TypedArray, o DataView, debe tener 16 bytes, y debe ser único para cada operación de cifrado realizada con una clave dada.

    additionalData

    (opcional) es un ArrayBuffer, TypedArray, o DataView que contiene datos adicionales que no se cifrarán pero se autenticarán junto con los datos cifrados. Si se especifica additionalData, entonces los mismos datos deben especificarse en la llamada correspondiente a decrypt(): si los datos proporcionados a la llamada decrypt() no coinciden con los datos originales, el descifrado lanzará una excepción. La longitud en bits de additionalData debe ser menor que 2^64 - 1.

    tagLength

    (opcional, por defecto es 128) - un number que determina el tamaño en bits de la etiqueta de autenticación generada en la operación de cifrado y utilizada para la autenticación en el descifrado correspondiente. Valores posibles: 32, 64, 96, 104, 112, 120, o 128. La especificación AES-GCM recomienda que debe ser 96, 104, 112, 120, o 128, aunque 32 o 64 bits pueden ser aceptables en algunas aplicaciones.

key

Una CryptoKey que contiene la clave a utilizar para el cifrado.

data

Un ArrayBuffer, TypedArray, o DataView que contiene los datos a cifrar (también conocidos como texto plano).

crypto.subtle.decrypt(algorithm, key, data)

Descifra datos cifrados. Devuelve una Promise con los datos descifrados. Valores posibles:

algorithm

Un objeto que especifica el algoritmo a utilizar, y cualquier parámetro adicional según sea necesario. Los valores proporcionados para los parámetros adicionales deben coincidir con los pasados en la llamada correspondiente a encrypt().

  • Para RSA-OAEP, pase un objeto con las siguientes claves:

    name

    Una cadena, debe establecerse en RSA-OAEP:

    crypto.subtle.encrypt({name: "RSA-OAEP"}, key, data)
    
  • Para AES-CTR, pase un objeto con las siguientes claves:

    name

    Una cadena, debe establecerse en AES-CTR.

    counter

    Un ArrayBuffer, TypedArray, o DataView — el valor inicial del bloque contador, debe tener 16 bytes de longitud (el tamaño de bloque AES). Los bits de longitud más a la derecha de este bloque se utilizan para el contador, y el resto se utiliza para el nonce. Por ejemplo, si la longitud se establece en 64, entonces la primera mitad del contador es el nonce y la segunda mitad se utiliza para el contador.

    length

    El número de bits en el bloque contador que se utilizan para el contador real. El contador debe ser lo suficientemente grande como para que no se desborde.

  • Para AES-CBC, pase un objeto con las siguientes claves:

    name

    Una cadena, debe establecerse en AES-CBC.

    iv

    El vector de inicialización, es un ArrayBuffer, TypedArray, o DataView, debe tener 16 bytes, ser impredecible y preferiblemente criptográficamente aleatorio. Sin embargo, no necesita ser secreto (por ejemplo, puede transmitirse sin cifrar junto con el texto cifrado).

  • Para AES-GCM, pase un objeto con las siguientes claves:

    name

    Una cadena, debe establecerse en AES-GCM.

    iv

    El vector de inicialización, es un ArrayBuffer, TypedArray, o DataView, debe tener 16 bytes, y debe ser único para cada operación de cifrado realizada con una clave dada.

    additionalData

    (opcional) es un ArrayBuffer, TypedArray, o DataView que contiene datos adicionales que no se cifrarán pero se autenticarán junto con los datos cifrados. Si se especifica additionalData, entonces los mismos datos deben especificarse en la llamada correspondiente a decrypt(): si los datos proporcionados a la llamada decrypt() no coinciden con los datos originales, el descifrado lanzará una excepción. La longitud en bits de additionalData debe ser menor que 2^64 - 1.

    tagLength

    (opcional, por defecto es 128) - un number que determina el tamaño en bits de la etiqueta de autenticación generada en la operación de cifrado y utilizada para la autenticación en el descifrado correspondiente. Valores posibles: 32, 64, 96, 104, 112, 120, o 128. La especificación AES-GCM recomienda que debe ser 96, 104, 112, 120, o 128, aunque 32 o 64 bits pueden ser aceptables en algunas aplicaciones.

key

Una CryptoKey que contiene la clave a utilizar para el descifrado. Si se utiliza RSA-OAEP, esta es la propiedad privateKey del objeto CryptoKeyPair.

data

Un ArrayBuffer, TypedArray, o DataView que contiene los datos a descifrar (también conocidos como texto cifrado).

crypto.subtle.deriveBits(algorithm, baseKey, length)

Deriva un array de bits de una clave base. Devuelve una Promise que se cumplirá con un ArrayBuffer que contiene los bits derivados. Valores posibles:

algorithm

Un objeto que define el algoritmo de derivación a utilizar:

  • Para HKDF, pase un objeto con las siguientes claves:

    name

    Una cadena, debe establecerse en HKDF.

    hash

    Una cadena con el algoritmo de resumen a utilizar: SHA-1, SHA-256, SHA-384, o SHA-512.

    salt

    Un ArrayBuffer, TypedArray, o DataView que representa un valor aleatorio o pseudoaleatorio con la misma longitud que la salida de la función digest. A diferencia del material de clave de entrada pasado a deriveKey(), el salt no necesita mantenerse en secreto.

    info

    Un ArrayBuffer, TypedArray, o DataView que representa información contextual específica de la aplicación utilizada para vincular la clave derivada a una aplicación o contexto, y permite derivar diferentes claves para diferentes contextos mientras se utiliza el mismo material de clave de entrada. Esta propiedad es obligatoria pero puede ser un búfer vacío.

  • Para PBKDF2, pase un objeto con las siguientes claves:

    name

    Una cadena, debe establecerse en PBKDF2.

    hash

    Una cadena con el algoritmo de resumen a utilizar: SHA-1, SHA-256, SHA-384, o SHA-512.

    salt

    Un ArrayBuffer, TypedArray, o DataView que representa un valor aleatorio o pseudoaleatorio de al menos 16 bytes. A diferencia del material de clave de entrada pasado a deriveKey(), el salt no necesita mantenerse en secreto.

    iterations

    Un number que representa el número de veces que se ejecutará la función hash en deriveKey().

  • Para ECDH, pase un objeto con las siguientes claves (desde 0.9.1):

    name

    Una cadena, debe establecerse en ECDH.

    public

    Una CryptoKey que representa la clave pública de la otra parte. La clave debe generarse utilizando la misma curva que la clave base.

baseKey

Una CryptoKey que representa la entrada al algoritmo de derivación. Si algorithm es HKDF o PBKDF2, debe ser una clave secreta. Si algorithm es ECDH, debe ser una clave privada ECDH.

length

Un número que representa el número de bits a derivar. Para ser compatible con todos los navegadores, el número debe ser múltiplo de 8.

crypto.subtle.deriveKey(algorithm, baseKey, derivedKeyAlgorithm, extractable, keyUsages)

Deriva una clave secreta de una clave maestra. Devuelve una Promise que se cumple con un objeto CryptoKey que representa la nueva clave. Valores posibles:

algorithm

Un objeto que define el algoritmo de derivación a utilizar:

  • Para HKDF, pase el objeto con las siguientes claves:

    name

    Una cadena, debe establecerse en HKDF.

    hash

    Una cadena con el algoritmo de resumen a utilizar: SHA-1, SHA-256, SHA-384, o SHA-512.

    salt

    Un ArrayBuffer, TypedArray, o DataView que representa un valor aleatorio o pseudoaleatorio con la misma longitud que la salida de la función digest. A diferencia del material de clave de entrada pasado a deriveKey(), el salt no necesita mantenerse en secreto.

    info

    Un ArrayBuffer, TypedArray, o DataView que representa información contextual específica de la aplicación utilizada para vincular la clave derivada a una aplicación o contexto, y permite derivar diferentes claves para diferentes contextos mientras se utiliza el mismo material de clave de entrada. Esta propiedad es obligatoria pero puede ser un búfer vacío.

  • Para PBKDF2, pase el objeto con las siguientes claves:

    name

    Una cadena, debe establecerse en PBKDF2.

    hash

    Una cadena con el algoritmo de resumen a utilizar: SHA-1, SHA-256, SHA-384, o SHA-512.

    salt

    Un ArrayBuffer, TypedArray, o DataView que representa un valor aleatorio o pseudoaleatorio de al menos 16 bytes. A diferencia del material de clave de entrada pasado a deriveKey(), el salt no necesita mantenerse en secreto.

    iterations

    Un number que representa el número de veces que se ejecutará la función hash en deriveKey().

  • Para ECDH, pase un objeto con las siguientes claves (desde 0.9.1):

    name

    Una cadena, debe establecerse en ECDH.

    publicKey

    Una CryptoKey que representa la clave pública de la otra parte. La clave debe generarse utilizando la misma curva que la clave base.

baseKey

Una CryptoKey que representa la entrada al algoritmo de derivación. Si algorithm es HKDF o PBKDF2, debe ser una clave secreta. Si algorithm es ECDH, debe ser una clave privada ECDH.

derivedKeyAlgorithm

Un objeto que define el algoritmo que utilizará la clave derivada:

  • Para HMAC, pase un objeto con las siguientes claves:

    name

    Una cadena, debe establecerse en HMAC.

    hash

    Una cadena con el nombre de la función de resumen a utilizar: SHA-1, SHA-256, SHA-384, o SHA-512.

    length

    (opcional) un number que representa la longitud en bits de la clave. Si se omite, la longitud de la clave es igual al tamaño de bloque de la función hash elegida.

  • Para AES-CTR, AES-CBC, o AES-GCM, pase un objeto con las siguientes claves:

    name

    Una cadena, debe establecerse en AES-CTR, AES-CBC, o AES-GCM, dependiendo del algoritmo utilizado.

    length

    Un number que representa la longitud en bits de la clave a generar: puede ser 128, 192, o 256.

extractable

Un valor boolean que indica si será posible exportar la clave utilizando exportKey() o wrapKey().

keyUsages

Un array de cadenas que indica qué se puede hacer con la clave derivada. Los valores posibles del array son encrypt, decrypt, sign, verify, deriveKey, deriveBits, wrapKey, unwrapKey.

crypto.subtle.digest(algorithm, data)

Genera un resumen de los datos proporcionados. Devuelve una Promise que se cumple con un ArrayBuffer que contiene el resumen. Valores posibles:

algorithm

Una cadena que define la función hash a utilizar: SHA-1, SHA-256, SHA-384, o SHA-512.

data

Un ArrayBuffer, TypedArray, o DataView que contiene los datos de los que se generará el resumen.

crypto.subtle.exportKey(format, key)

Exporta una clave. Devuelve una Promise. Si format era jwk, entonces la promesa se cumple con un objeto JSON que contiene la clave. De lo contrario, la promesa se cumple con un ArrayBuffer que contiene la clave. Valores posibles:

format

Una cadena que describe el formato de datos en el que se exportará la clave. Puede ser uno de los siguientes:

  • raw: formato Raw, un ArrayBuffer que contiene los bytes de la clave.

  • pkcs8: formato PKCS #8, un ArrayBuffer que contiene los datos de clave privada codificados en PKCS #8.

  • spki: formato SubjectPublicKeyInfo, un ArrayBuffer que contiene los datos de clave pública codificados en SubjectPublicKeyInfo.

  • jwk: formato JSON Web Key, un objeto JSON que contiene la clave.

key

La CryptoKey a exportar.

crypto.subtle.generateKey(algorithm, extractable, keyUsages)

Genera una nueva clave (para algoritmos simétricos) o un par de claves (para algoritmos de clave pública). Devuelve una Promise que se cumple con una CryptoKey (para algoritmos simétricos) o un objeto CryptoKeyPair (para algoritmos de clave pública). Valores posibles:

algorithm

Un objeto que define el tipo de clave a generar y proporciona atributos específicos del algoritmo adicionales:

  • Para RSASSA-PKCS1-v1_5, RSA-PSS, o RSA-OAEP, pase un objeto con las siguientes claves:

    name

    Una cadena, debe establecerse en RSASSA-PKCS1-v1_5, RSA-PSS, o RSA-OAEP, dependiendo del algoritmo utilizado.

    modulusLength

    Un number que representa la longitud en bits del módulo RSA, debe ser al menos 1024.

    publicExponent

    Un Uint8Array que representa el exponente público. A menos que tenga una buena razón para usar algo más, especifique 65537 aquí ([0x01, 0x00, 0x01]).

    hash

    Una cadena que representa el nombre de la función de resumen a utilizar: SHA-256, SHA-384, o SHA-512.

  • Para ECDSA o ECDH, pase un objeto con las siguientes claves:

    name

    Una cadena, debe establecerse en ECDSA o ECDH, dependiendo del algoritmo utilizado.

    namedCurve

    Una cadena que representa el nombre de la curva elíptica a utilizar: P-256, P-384, o P-521.

  • Para HMAC, pase un objeto con las siguientes claves:

    name

    Una cadena, debe establecerse en HMAC.

    hash

    Una cadena que representa el nombre de la función de resumen a utilizar: SHA-1, SHA-256, SHA-384, o SHA-512.

    length

    (opcional) un number que representa la longitud en bits de la clave. Si se omite, la longitud de la clave es igual al tamaño de bloque de la función hash elegida.

  • Para AES-CTR, AES-CBC, o AES-GCM, pase un objeto con las siguientes claves:

    name

    Una cadena, debe establecerse en AES-CTR, AES-CBC, o AES-GCM, dependiendo del algoritmo utilizado.

    length

    Un number que representa la longitud en bits de la clave a generar: puede ser 128, 192, o 256.

extractable

Un valor boolean que indica si será posible exportar la clave utilizando exportKey() o wrapKey().

keyUsages

Un array de cadenas que indica qué se puede hacer con la clave. Los valores posibles del array son encrypt, decrypt, sign, verify, deriveKey, deriveBits, wrapKey, unwrapKey.

crypto.subtle.importKey(format, keyData, algorithm, extractable, keyUsages)

Importa una clave. Devuelve una Promise que se cumple con el objeto CryptoKey importado. Valores posibles:

format

Una cadena que describe el formato de datos de la clave a importar. Puede ser uno de los siguientes:

  • raw: formato Raw, un ArrayBuffer que contiene los bytes de la clave.

  • pkcs8: formato PKCS #8, un ArrayBuffer que contiene los datos de clave privada codificados en PKCS #8.

  • spki: formato SubjectPublicKeyInfo, un ArrayBuffer que contiene los datos de clave pública codificados en SubjectPublicKeyInfo.

  • jwk: formato JSON Web Key, un objeto JSON que contiene la clave.

keyData

Un ArrayBuffer, TypedArray, DataView, o JSONWebKey que contiene la clave en el formato dado.

algorithm

Un objeto que define el tipo de clave a importar y proporciona atributos específicos del algoritmo adicionales:

  • Para RSASSA-PKCS1-v1_5, RSA-PSS, o RSA-OAEP, pase un objeto con las siguientes claves:

    name

    Una cadena, debe establecerse en RSASSA-PKCS1-v1_5, RSA-PSS, o RSA-OAEP, dependiendo del algoritmo utilizado.

    hash

    Una cadena que representa el nombre de la función de resumen a utilizar: SHA-256, SHA-384, o SHA-512.

  • Para ECDSA o ECDH, pase un objeto con las siguientes claves:

    name

    Una cadena, debe establecerse en ECDSA o ECDH, dependiendo del algoritmo utilizado.

    namedCurve

    Una cadena que representa el nombre de la curva elíptica a utilizar: P-256, P-384, o P-521.

  • Para HMAC, pase un objeto con las siguientes claves:

    name

    Una cadena, debe establecerse en HMAC.

    hash

    Una cadena que representa el nombre de la función de resumen a utilizar: SHA-1, SHA-256, SHA-384, o SHA-512.

    length

    (opcional) un number que representa la longitud en bits de la clave. Si se omite, la longitud de la clave es igual al tamaño de bloque de la función hash elegida.

  • Para AES-CTR, AES-CBC, o AES-GCM, pase un objeto con las siguientes claves:

    name

    Una cadena, debe establecerse en AES-CTR, AES-CBC, o AES-GCM, dependiendo del algoritmo utilizado.

  • Para PBKDF2, pase la cadena PBKDF2.

  • Para HKDF, pase la cadena HKDF.

extractable

Un valor boolean que indica si será posible exportar la clave utilizando exportKey() o wrapKey().

keyUsages

Un array de cadenas que indica qué se puede hacer con la clave. Los valores posibles del array son encrypt, decrypt, sign, verify, deriveKey, deriveBits, wrapKey, unwrapKey.

crypto.subtle.sign(algorithm, key, data)

Firma datos. Devuelve una Promise que se cumple con un ArrayBuffer que contiene la firma. Valores posibles:

algorithm

Una cadena o un objeto que especifica el algoritmo de firma a utilizar y sus parámetros:

  • Para RSASSA-PKCS1-v1_5, pase la cadena RSASSA-PKCS1-v1_5 o un objeto con las siguientes claves:

    name

    Una cadena, debe establecerse en RSASSA-PKCS1-v1_5.

  • Para RSA-PSS, pase un objeto con las siguientes claves:

    name

    Una cadena, debe establecerse en RSA-PSS.

    saltLength

    Un number que representa la longitud del salt aleatorio a utilizar, en bytes.

  • Para ECDSA, pase un objeto con las siguientes claves:

    name

    Una cadena, debe establecerse en ECDSA.

    hash

    Una cadena que representa el nombre de la función de resumen a utilizar: SHA-256, SHA-384, o SHA-512.

  • Para HMAC, pase la cadena HMAC o un objeto con las siguientes claves:

    name

    Una cadena, debe establecerse en HMAC.

key

Una CryptoKey que contiene la clave a utilizar para firmar. Si algorithm identifica un algoritmo de clave pública, esta es la clave privada.

data

Un ArrayBuffer, TypedArray, o DataView que contiene los datos a firmar.

crypto.subtle.verify(algorithm, key, signature, data)

Verifica una firma. Devuelve una Promise que se cumple con un valor boolean: true si la firma es válida, false en caso contrario. Valores posibles:

algorithm

Una cadena o un objeto que especifica el algoritmo a utilizar y sus parámetros: los valores deben coincidir con los pasados a la llamada correspondiente a sign().

  • Para RSASSA-PKCS1-v1_5, pase la cadena RSASSA-PKCS1-v1_5 o un objeto con las siguientes claves:

    name

    Una cadena, debe establecerse en RSASSA-PKCS1-v1_5.

  • Para RSA-PSS, pase un objeto con las siguientes claves:

    name

    Una cadena, debe establecerse en RSA-PSS.

    saltLength

    Un number que representa la longitud del salt aleatorio a utilizar, en bytes.

  • Para ECDSA, pase un objeto con las siguientes claves:

    name

    Una cadena, debe establecerse en ECDSA.

    hash

    Una cadena que representa el nombre de la función de resumen a utilizar: SHA-256, SHA-384, o SHA-512.

  • Para HMAC, pase la cadena HMAC o un objeto con las siguientes claves:

    name

    Una cadena, debe establecerse en HMAC.

key

Una CryptoKey que contiene la clave a utilizar para la verificación. Es la clave secreta para un algoritmo simétrico y la clave pública para un sistema de clave pública.

signature

Un ArrayBuffer que contiene la firma a verificar.

data

Un ArrayBuffer, TypedArray, o DataView que contiene los datos cuya firma se va a verificar.

CryptoKey#

  • CryptoKey.algorithm

  • CryptoKey.extractable

  • CryptoKey.type

  • CryptoKey.usages

El objeto CryptoKey representa una clave criptográfica obtenida de uno de los métodos SubtleCrypto: crypto.subtle.generateKey(), crypto.subtle.deriveKey(), crypto.subtle.importKey().

CryptoKey.algorithm

Devuelve un objeto que describe el algoritmo para el cual se puede usar esta clave y cualquier parámetro adicional asociado (desde 0.8.0), solo lectura.

CryptoKey.extractable

Un valor booleano, true si la clave se puede exportar (desde 0.8.0), solo lectura.

CryptoKey.type

Un valor de cadena que indica qué tipo de clave está representada por el objeto, solo lectura. Valores posibles:

secret

Esta clave es una clave secreta para usar con un algoritmo simétrico.

private

Esta clave es la mitad privada de un CryptoKeyPair de algoritmo asimétrico.

public

Esta clave es la mitad pública de un CryptoKeyPair de algoritmo asimétrico.

CryptoKey.usages

Un array de cadenas que indica para qué se puede usar esta clave (desde 0.8.0), solo lectura. Valores posibles del array:

encrypt

Clave para cifrar mensajes.

decrypt

Clave para descifrar mensajes.

sign

Clave para firmar mensajes.

verify

Clave para verificar firmas.

deriveKey

Clave para derivar una nueva clave.

deriveBits

Clave para derivar bits.

CryptoKeyPair#

  • CryptoKeyPair.privateKey

  • CryptoKeyPair.publicKey

El CryptoKeyPair es un objeto de diccionario de la API WebCrypto que representa un par de claves asimétricas.

CryptoKeyPair.privateKey

Un objeto CryptoKey que representa la clave privada.

CryptoKeyPair.publicKey

Un objeto CryptoKey que representa la clave pública.

njs#

  • njs.version

  • njs.version_number

  • njs.dump()

  • njs.memoryStats

  • njs.on()

El objeto njs es un objeto global que representa la instancia actual de la VM (desde 0.2.0).

njs.version

Devuelve una cadena con la versión actual de NJS (por ejemplo, "0.7.4").

njs.version_number

Devuelve un número con la versión actual de NJS. Por ejemplo, "0.7.4" se devuelve como 0x000704 (desde 0.7.4).

njs.dump(value)

Devuelve la representación de cadena con formato legible para un valor.

njs.memoryStats

Objeto que contiene estadísticas de memoria para la instancia actual de la VM (desde 0.7.8).

size

Cantidad de memoria en bytes que el pool de memoria de NJS ha reclamado del sistema operativo.

njs.on(event, callback)

Registra un callback para el evento de VM especificado (desde 0.5.2). Un evento puede ser una de las siguientes cadenas:

exit

Se llama antes de que se destruya la VM. El callback se llama sin argumentos.

process#

  • process.argv

  • process.env

  • process.kill()

  • process.pid

  • process.ppid

El objeto process es un objeto global que proporciona información sobre el proceso actual (0.3.3).

process.argv

Devuelve un array que contiene los argumentos de línea de comandos pasados cuando se inició el proceso actual.

process.env

Devuelve un objeto que contiene el entorno del usuario.

Nota

Por defecto, Angie elimina todas las variables de entorno heredadas de su proceso padre excepto la variable TZ. Use la directiva env para preservar algunas de las variables heredadas.

process.kill(pid, number | string)

Envía la señal al proceso identificado por pid. Los nombres de señal son números o cadenas como SIGINT o SIGHUP. Consulte kill(2) para más información.

process.pid

Devuelve el PID del proceso actual.

process.ppid

Devuelve el PID del proceso padre actual.

String#

Por defecto, todas las cadenas en NJS son cadenas Unicode. Corresponden a cadenas ECMAScript que contienen caracteres Unicode. Antes de 0.8.0, también se admitían cadenas de bytes.

Cadenas de Bytes (Eliminadas)#

Nota

Desde 0.8.0, se eliminó el soporte para cadenas de bytes y métodos de cadenas de bytes. Al trabajar con secuencias de bytes, se debe usar el objeto Buffer y las propiedades Buffer, como r.requestBuffer, r.rawVariables.

Las cadenas de bytes contenían una secuencia de bytes y se usaban para serializar cadenas Unicode a datos externos y deserializar desde fuentes externas. Por ejemplo, el método toUTF8() serializaba una cadena Unicode a una cadena de bytes usando codificación UTF-8. El método toBytes() serializaba una cadena Unicode con puntos de código hasta 255 en una cadena de bytes; de lo contrario, se devolvía null.

Los siguientes métodos quedaron obsoletos y se eliminaron en 0.8.0:

  • String.bytesFrom() (eliminado en 0.8.0, use Buffer.from())

  • String.prototype.fromBytes() (eliminado en 0.8.0)

  • String.prototype.fromUTF8() (eliminado en 0.8.0, use TextDecoder)

  • String.prototype.toBytes() (eliminado en 0.8.0)

  • String.prototype.toString() con codificación (eliminado en 0.8.0)

  • String.prototype.toUTF8() (eliminado en 0.8.0, use TextEncoder)

API Web#

TextDecoder#

  • TextDecoder()

  • TextDecoder.prototype.encoding

  • TextDecoder.prototype.fatal

  • TextDecoder.prototype.ignoreBOM

  • TextDecoder.prototype.decode()

El TextDecoder produce un flujo de puntos de código a partir de un flujo de bytes (0.4.3).

TextDecoder([[encoding], options])

Crea un nuevo objeto TextDecoder para la codificación especificada; actualmente, solo se admite UTF-8. El options es un diccionario TextDecoderOptions con la propiedad:

fatal

Indicador booleano que indica si TextDecoder.decode() debe lanzar la excepción TypeError cuando se encuentra un error de codificación, por defecto es false.

TextDecoder.prototype.encoding

Devuelve una cadena con el nombre de la codificación usada por TextDecoder(), solo lectura.

TextDecoder.prototype.fatal

Indicador booleano, true si el modo de error es fatal, solo lectura.

TextDecoder.prototype.ignoreBOM

Indicador booleano, true si se ignora la marca de orden de bytes, solo lectura.

TextDecoder.prototype.decode(buffer, [options])

Devuelve una cadena con el texto decodificado del buffer por TextDecoder(). El buffer puede ser ArrayBuffer. El options es un diccionario TextDecodeOptions con la propiedad:

stream

Indicador booleano que indica si seguirán datos adicionales en llamadas posteriores a decode(): true si se procesan los datos en fragmentos, y false para el fragmento final o si los datos no están fragmentados. Por defecto es false.

Ejemplo:

>> (new TextDecoder()).decode(new Uint8Array([206,177,206,178]))
αβ

TextEncoder#

  • TextEncoder()

  • TextEncoder.prototype.encode()

  • TextEncoder.prototype.encodeInto()

El objeto TextEncoder produce un flujo de bytes con codificación UTF-8 a partir de un flujo de puntos de código (0.4.3).

TextEncoder()

Devuelve un TextEncoder recién construido que generará un flujo de bytes con codificación UTF-8.

TextEncoder.prototype.encode(string)

Codifica string en un Uint8Array con texto codificado en UTF-8.

TextEncoder.prototype.encodeInto(string, uint8Array)

Codifica una string a UTF-8, coloca el resultado en el Uint8Array de destino y devuelve un objeto de diccionario que muestra el progreso de la codificación. El objeto de diccionario contiene dos miembros:

read

El número de unidades UTF-16 de código de la string de origen convertidas a UTF-8.

written

El número de bytes modificados en el Uint8Array de destino.

Temporizadores#

  • clearTimeout()

  • setTimeout()

clearTimeout(timeout)

Cancela un objeto timeout creado por setTimeout().

setTimeout(function, milliseconds[, argument1, argumentN])

Llama a una function después de un número especificado de milliseconds. Se pueden pasar uno o más arguments opcionales a la función especificada. Devuelve un objeto timeout.

Ejemplo:

function handler(v)
{
    // ...
}

t = setTimeout(handler, 12);

// ...

clearTimeout(t);

Funciones Globales#

  • atob()

  • btoa()

atob(encodedData)

Decodifica una cadena de datos que ha sido codificada usando codificación Base64. El parámetro encodedData es una cadena binaria que contiene datos codificados en Base64. Devuelve una cadena que contiene los datos decodificados de encodedData.

El método similar btoa() puede usarse para codificar y transmitir datos que de otro modo podrían causar problemas de comunicación, luego transmitirlos y usar el método atob() para decodificar los datos nuevamente. Por ejemplo, puede codificar, transmitir y decodificar caracteres de control como los valores ASCII 0 hasta 31.

Ejemplo:

const encodedData = btoa("text to encode"); // encode a string
const decodedData = atob(encodedData); // decode the string
btoa(stringToEncode)

Crea una cadena ASCII codificada en Base64 a partir de una cadena binaria. El parámetro stringToEncode es una cadena binaria a codificar. Devuelve una cadena ASCII que contiene la representación Base64 de stringToEncode.

El método puede usarse para codificar datos que de otro modo podrían causar problemas de comunicación, transmitirlos y luego usar el método atob() para decodificar los datos nuevamente. Por ejemplo, puede codificar caracteres de control como los valores ASCII 0 hasta 31.

Ejemplo:

const encodedData = btoa("text to encode"); // encode a string
const decodedData = atob(encodedData); // decode the string

Módulos Integrados#

Buffer#

El objeto Buffer es una forma compatible con Node.js de trabajar con datos binarios. Debido al extenso tamaño del archivo, esta sección se limita a una lista completa de métodos de 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.buffer

  • buf.byteOffset

  • buf.compare()

  • buf.copy()

  • buf.equals()

  • buf.fill()

  • buf.includes()

  • buf.indexOf()

  • buf.lastIndexOf()

  • buf.length

  • buf.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()

Para documentación detallada de los métodos de Buffer, consulte la documentación de Buffer de Node.js.

Crypto#

El módulo Crypto proporciona soporte de funcionalidad criptográfica. El objeto del módulo Crypto se importa usando import crypto from 'crypto'.

Nota

Desde la versión 0.7.0, la API de crypto extendida está disponible como un objeto global crypto.

  • crypto.createHash()

  • crypto.createHmac()

crypto.createHash(algorithm)

Crea y devuelve un objeto Hash que puede usarse para generar resúmenes hash usando el algorithm dado. El algoritmo puede ser md5, sha1 y sha256.

crypto.createHmac(algorithm, secret key)

Crea y devuelve un objeto HMAC que usa el algorithm y la secret key dados. El algoritmo puede ser md5, sha1 y sha256.

Hash#

  • hash.update()

  • hash.digest()

  • hash.copy()

hash.update(data)

Actualiza el contenido del hash con los data dados.

hash.digest([encoding])

Calcula el resumen de todos los datos pasados usando hash.update(). La codificación puede ser hex, base64 y base64url. Si no se proporciona codificación, se devuelve un objeto Buffer (0.4.4).

Nota

Antes de la versión 0.4.4, se devolvía una cadena de bytes en lugar de un objeto Buffer.

hash.copy()

Hace una copia del estado actual del hash (desde 0.7.12).

Ejemplo:

import crypto from 'crypto';

crypto.createHash('sha1').update('A').update('B').digest('base64url');
/* BtlFlCqiamG-GMPiK_GbvKjdK10 */

HMAC#

  • hmac.update()

  • hmac.digest()

hmac.update(data)

Actualiza el contenido del HMAC con los data dados.

hmac.digest([encoding])

Calcula el resumen HMAC de todos los datos pasados usando hmac.update(). La codificación puede ser hex, base64 y base64url. Si no se proporciona codificación, se devuelve un objeto Buffer (0.4.4).

Nota

Antes de la versión 0.4.4, se devolvía una cadena de bytes en lugar de un objeto Buffer.

fs#

El módulo fs proporciona operaciones con el sistema de archivos. El objeto del módulo se importa 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()

Para documentación detallada de los métodos de fs, consulte la documentación de fs de Node.js.

Query String#

El módulo Query String proporciona métodos para analizar y formatear cadenas de consulta de URL. El objeto del módulo se importa usando import qs from 'querystring'.

  • querystring.decode()

  • querystring.encode()

  • querystring.escape()

  • querystring.parse()

  • querystring.stringify()

  • querystring.unescape()

querystring.decode()

Un alias de querystring.parse().

querystring.encode()

Un alias de querystring.stringify().

querystring.escape(string)

Realiza la codificación de porcentaje de URL de la string de manera optimizada para los requisitos de las cadenas de consulta de URL. El método es usado por querystring.stringify() y no debe usarse directamente.

querystring.parse(string[, separator[, equal[, options]]])

Analiza la string como una cadena de consulta de URL y devuelve un objeto. El parámetro opcional separator (predeterminado: &) especifica la subcadena para delimitar pares clave-valor. El parámetro opcional equal (predeterminado: =) especifica la subcadena para delimitar claves y valores. El parámetro opcional options es un objeto que puede contener la siguiente propiedad:

decodeURIComponent

Función a usar al decodificar caracteres codificados en porcentaje en la cadena de consulta, predeterminado: querystring.unescape().

maxKeys

El número máximo de claves a analizar, predeterminado: 1000. El valor 0 elimina las limitaciones para contar claves.

Ejemplo:

>> qs.parse('foo=bar&abc=xyz&abc=123')
{
    foo: 'bar',
    abc: ['xyz', '123']
}
querystring.stringify(object[, separator[, equal[, options]]])

Produce una cadena de consulta de URL a partir del object iterando a través de sus propias propiedades. El parámetro opcional separator (predeterminado: &) especifica la subcadena para delimitar pares clave-valor. El parámetro opcional equal (predeterminado: =) especifica la subcadena para delimitar claves y valores. El parámetro opcional options es un objeto que puede contener la siguiente propiedad:

encodeURIComponent

Función a usar al convertir caracteres no seguros para URL a codificación de porcentaje en la cadena de consulta, predeterminado: querystring.escape().

Ejemplo:

>> qs.stringify({ foo: 'bar', baz: ['qux', 'quux'], corge: '' })
'foo=bar&baz=qux&baz=quux&corge='
querystring.unescape(string)

Realiza la decodificación de caracteres codificados en porcentaje de URL en la string. El método es usado por querystring.parse() y no debe usarse directamente.

XML#

  • xml.parse()

  • xml.c14n()

  • xml.exclusiveC14n()

  • xml.serialize()

  • xml.serializeToString()

  • XMLDoc

  • XMLNode

  • XMLAttr

El módulo XML permite trabajar con documentos XML (desde 0.7.10). El objeto del módulo XML se importa usando import xml from 'xml'.

Ejemplo:

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)

Analiza una cadena o Buffer para obtener un documento XML; devuelve un objeto envolvente XMLDoc que representa el documento XML analizado.

c14n(root_node[, excluding_node])

Canonicaliza root_node y sus hijos según Canonical XML Version 1.1. El root_node puede ser un objeto envolvente XMLNode o XMLDoc alrededor de la estructura XML. Devuelve un objeto Buffer que contiene la salida canonicalizada.

excluding_node

Permite omitir de la salida una parte del documento.

exclusiveC14n(root_node[, excluding_node[, withComments[,prefix_list]]])

Canonicaliza root_node y sus hijos según Exclusive XML Canonicalization Version 1.0.

root_node

Un objeto envolvente XMLNode o XMLDoc alrededor de la estructura XML.

excluding_node

Permite omitir de la salida una parte del documento correspondiente al nodo y sus hijos.

withComments

Un valor booleano, false por defecto. Si es true, la canonicalización corresponde a Exclusive XML Canonicalization Version 1.0. Devuelve un objeto Buffer que contiene la salida canonicalizada.

prefix_list

Una cadena opcional con prefijos de espacios de nombres separados por espacios para espacios de nombres que también deben incluirse en la salida.

serialize()

Lo mismo que xml.c14n() (desde 0.7.11).

serializeToString()

Lo mismo que xml.c14n() excepto que devuelve el resultado como string (desde 0.7.11).

XMLDoc

Un objeto envolvente XMLDoc alrededor de la estructura XML, el nodo raíz del documento.

doc.$root

La raíz del documento por su nombre o undefined.

doc.abc

La primera etiqueta raíz llamada abc como un objeto envolvente XMLNode.

XMLNode

Un objeto envolvente XMLNode alrededor de un nodo de etiqueta XML.

node.abc

Lo mismo que node.$tag$abc.

node.$attr$abc

El valor del atributo abc del nodo, escribible desde 0.7.11.

node.$attr$abc=xyz

Lo mismo que node.setAttribute('abc', xyz) (desde 0.7.11).

node.$attrs

Un objeto envolvente XMLAttr para todos los atributos del nodo.

node.$name

El nombre del nodo.

node.$ns

El espacio de nombres del nodo.

node.$parent

El nodo padre del nodo actual.

node.$tag$abc

La primera etiqueta hija del nodo llamada abc, escribible desde 0.7.11.

node.$tags

Un array de todas las etiquetas hijas.

node.$tags = [node1, node2, ...]

Lo mismo que node.removeChildren(); node.addChild(node1); node.addChild(node2) (desde 0.7.11).

node.$tags$abc

Todas las etiquetas hijas llamadas abc del nodo, escribible desde 0.7.11.

node.$text

El contenido del nodo, escribible desde 0.7.11.

node.$text = 'abc'

Lo mismo que node.setText('abc') (desde 0.7.11).

node.addChild(nd)

Añade un XMLNode como hijo al nodo (desde 0.7.11). nd se copia recursivamente antes de añadirse al nodo.

node.removeAllAttributes()

Elimina todos los atributos del nodo (desde 0.7.11).

node.removeAttribute(attr_name)

Elimina el atributo llamado attr_name (desde 0.7.11).

node.removeChildren(tag_name)

Elimina todas las etiquetas hijas llamadas tag_name (desde 0.7.11). Si tag_name está ausente, se eliminan todas las etiquetas hijas.

node.removeText()

Elimina el valor de texto del nodo (0.7.11).

node.setAttribute(attr_name, value)

Establece un valor para attr_name (desde 0.7.11). Cuando el valor es null, se elimina el atributo llamado attr_name.

node.setText(value)

Establece un valor de texto para el nodo (desde 0.7.11). Cuando el valor es null, se elimina el texto del nodo.

XMLAttr

Un objeto envolvente XMLAttr alrededor de los atributos del nodo XML.

attr.abc

El valor del atributo abc.

zlib#

El módulo zlib (0.5.2) proporciona funcionalidad de compresión y descompresión usando zlib. El objeto del módulo se importa usando import zlib from 'zlib'.

  • zlib.constants

  • zlib.deflateRawSync()

  • zlib.deflateSync()

  • zlib.inflateRawSync()

  • zlib.inflateSync()

zlib.constants

Devuelve un diccionario de constantes de zlib.

zlib.deflateRawSync(data[, options])

Comprime data usando el algoritmo Deflate sin la cabecera zlib.

zlib.deflateSync(data[, options])

Comprime data usando el algoritmo Deflate.

zlib.inflateRawSync(data[, options])

Descomprime data usando el algoritmo Deflate sin la cabecera zlib.

zlib.inflateSync(data[, options])

Descomprime data usando el algoritmo Deflate.

El parámetro options es un objeto que puede contener las siguientes propiedades:

level

Nivel de compresión (por defecto: zlib.constants.Z_DEFAULT_COMPRESSION).

memLevel

Especifica cuánta memoria debe asignarse para el estado de compresión (por defecto: zlib.constants.Z_DEFAULT_MEMLEVEL).

strategy

Ajusta el algoritmo de compresión (por defecto: zlib.constants.Z_DEFAULT_STRATEGY).

windowBits

Establece el tamaño de la ventana (por defecto: zlib.constants.Z_DEFAULT_WINDOWBITS).

dictionary

Buffer que contiene el diccionario de compresión predefinido.

info

Un valor booleano, si es true, devuelve un objeto con buffer y engine.

chunkSize

Tamaño de fragmento para la compresión (por defecto: zlib.constants.Z_DEFAULT_CHUNK).

Ejemplo:

import zlib from 'zlib';

const deflated = zlib.deflateSync('Hello World!');
const inflated = zlib.inflateSync(deflated);

console.log(inflated.toString()); // 'Hello World!'