Reference
njs provides objects, methods and properties for extending nginx functionality.
This reference contains only njs specific properties, methods and modules not compliant with ECMAScript. Definitions of njs properties and methods compliant with ECMAScript can be found in ECMAScript specification. List of all njs properties and methods can be found in Compatibility.
nginx objects
HTTP Request
The HTTP request object is available only in the ngx_http_js_module module. Before 0.8.5, all string properties of the object were byte strings.
r.args{}-
request arguments object, read-only.
The query string is returned as an object. Since 0.7.6, duplicate keys are returned as an array, keys are case-sensitive, both keys and values are percent-decoded.
For example, the query string
'a=1&b=%32&A=3&b=4&B=two%20words'
is converted to
r.argsas:{a: "1", b: ["2", "4"], A: "3", B: "two words"}More advanced parsing scenarios can be achieved with the Query String module and with the
$argsvariable, for example:import qs from 'querystring'; function args(r) { return qs.parse(r.variables.args); }The argument object is evaluated at the first access to
r.args. If only a single argument is needed, for examplefoo, nginx variables can be used:r.variables.arg_foo
Here, nginx variables object returns the first value for a given key, case-insensitive, without percent-decoding.
To convert
r.argsback to a string, the Query Stringstringifymethod can be used. r.done()- after calling this function, next data chunks will be passed to client without calling js_body_filter (0.5.2). May be called only from the js_body_filter function
r.error(string)-
writes a
stringto the error log on theerrorlevel of loggingAs nginx has a hardcoded maximum line length limit, only first 2048 bytes of the string can be logged.
r.finish()- finishes sending a response to the client
r.headersIn{}-
incoming headers object, read-only.
The
Foorequest header can be accessed with the syntax:headersIn.fooorheadersIn['Foo'].The “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”, and “User-Agent” request headers can have only one field value (0.4.1). Duplicate field values in “Cookie” headers are separated by semicolon (
;). Duplicate field values in all other request headers are separated by commas. r.headersOut{}-
outgoing headers object for the main request, writable.
If
r.headersOut{}is the response object of a subrequest, it represents response headers. In this case, field values in “Accept-Ranges”, “Connection”, “Content-Disposition”, “Content-Encoding”, “Content-Length”, “Content-Range”, “Date”, “Keep-Alive”, “Server”, “Transfer-Encoding”, “X-Accel-*” response headers may be omitted.The “Foo” response header can be accessed with the syntax:
headersOut.fooorheadersOut['Foo'].Outgoing headers should be set before a response header is sent to a client, otherwise header update will be ignored. This means that
r.headersOut{}is effectively writable in:-
the js_content handler before
r.sendHeader()orr.return()are called - the js_header_filter handler
Field values of multi-value response headers (0.4.0) can be set with the syntax:
r.headersOut['Foo'] = ['a', 'b']
where the output will be:
Foo: a Foo: b
All previous field values of the “Foo” response header will be deleted.
For standard response headers that accept only a single field value such as “Content-Type”, only the last element of the array will take effect. Field values of the “Set-Cookie” response header are always returned as an array. Duplicate field values in “Age”, “Content-Encoding”, “Content-Length”, “Content-Type”, “ETag”, “Expires”, “Last-Modified”, “Location”, “Retry-After” response headers are ignored. Duplicate field values in all other response headers are separated by commas.
-
the js_content handler before
r.httpVersion- HTTP version, read-only
r.internal- boolean value, true for internal locations
r.internalRedirect(uri)-
performs an
internal
redirect
to the specified
uri. If the uri starts with the “@” prefix, it is considered a named location. In a new location, all request processing is repeated starting from NGX_HTTP_SERVER_REWRITE_PHASE for ordinary locations and from NGX_HTTP_REWRITE_PHASE for named locations. As a result, a redirect to a named location does not check client_max_body_size limit. See dev guide for more details. Redirected requests become internal and can access the internal locations. The actual redirect happens after the handler execution is completed.After redirect, a new njs VM is started in the target location, the VM in the original location is stopped. Values of nginx variables are kept and can be used to pass information to the target location. Since 0.5.3, the variable declared with the
js_vardirective for http or stream can be used.Since 0.7.4, the method accepts escaped URIs.
r.log(string)-
writes a
stringto the error log on theinfolevel of loggingAs nginx has a hardcoded maximum line length limit, only first 2048 bytes of the string can be logged.
r.method- HTTP method, read-only
r.parent- references the parent request object
r.remoteAddress- client address, read-only
r.requestBody-
the property was made obsolete in
0.5.0
and was removed in 0.8.0.
The
r.requestBufferorr.requestTextproperty should be used instead. r.requestBuffer- client request body if it has not been written to a temporary file (since 0.5.0). To ensure that the client request body is in memory, its size should be limited by client_max_body_size, and a sufficient buffer size should be set using client_body_buffer_size. The property is available only in the js_content directive.
r.requestText-
the same as
r.requestBuffer, but returns astring. Note that it may convert bytes invalid in UTF-8 encoding into the replacement character. r.rawHeadersIn[]-
returns an array of key-value pairs
exactly as they were received from the client
(0.4.1).
For example, with the following request headers:
Host: localhost Foo: bar foo: bar2
the output of
r.rawHeadersInwill be:[ ['Host', 'localhost'], ['Foo', 'bar'], ['foo', 'bar2'] ]All
fooheaders can be collected with the syntax:r.rawHeadersIn.filter(v=>v[0].toLowerCase() == 'foo').map(v=>v[1])
the output will be:
['bar', 'bar2']
Header field names are not converted to lower case, duplicate field values are not merged.
r.rawHeadersOut[]- returns an array of key-value pairs of response headers (0.4.1). Header field names are not converted to lower case, duplicate field values are not merged.
r.responseBody-
the property was made obsolete in
0.5.0
and was removed in 0.8.0.
The
r.responseBufferor ther.responseTextproperty should be used instead. r.responseBuffer-
holds the subrequest response body,
read-only
(since 0.5.0).
The size of
r.responseBufferis limited by the subrequest_output_buffer_size directive. r.responseText-
the same as
r.responseBufferbut returns a string (since 0.5.0). Note that it may convert bytes invalid in UTF-8 encoding into the replacement character. r.return(status[, string | Buffer])-
sends the entire response
with the specified
statusto the client. The response can be a string or Buffer (0.5.0).It is possible to specify either a redirect URL (for codes 301, 302, 303, 307, and 308) or the response body text (for other codes) as the second argument
r.send(string | Buffer)- sends a part of the response body to the client. The data sent can be a string or Buffer (0.5.0)
r.sendBuffer(data[,options])-
adds data to the chain of data chunks to be forwarded to the next body filter
(0.5.2).
The actual forwarding happens later,
when the all the data chunks of the current chain are processed.
The data can be a string or Buffer. The
optionsis an object used to override nginx buffer flags derived from an incoming data chunk buffer. The flags can be overridden with the following flags:last- boolean, true if the buffer is the last buffer
flush-
boolean,
true if the buffer should have the
flushflag
The method may be called only from the js_body_filter function. r.sendHeader()- sends the HTTP headers to the client
r.setReturnValue(value)-
sets the return value of the
js_set handler
(0.7.0).
Unlike an ordinary return statement,
this method should be used when the handler is JS async function.
For example:
async function js_set(r) { const digest = await crypto.subtle.digest('SHA-256', r.headersIn.host); r.setReturnValue(digest); } r.status- status, writable
r.subrequest(uri[,options[,callback]])-
creates a subrequest with the given
uriandoptions, and installs an optional completioncallback.A subrequest shares its input headers with the client request. To send headers different from original headers to a proxied server, the proxy_set_header directive can be used. To send a completely new set of headers to a proxied server, the proxy_pass_request_headers directive can be used.
If
optionsis a string, then it holds the subrequest arguments string. Otherwise,optionsis expected to be an object with the following keys:args- arguments string, by default an empty string is used
body- request body, by default the request body of the parent request object is used
method-
HTTP method, by default the
GETmethod is used detached-
boolean flag (0.3.9),
if
true, the created subrequest is a detached subrequest. Responses to detached subrequests are ignored. Unlike ordinary subrequests, a detached subrequest can be created inside a variable handler. Thedetachedflag and callback argument are mutually exclusive.
The completion
callbackreceives a subrequest response object with methods and properties identical to the parent request object.Since 0.3.8, if a
callbackis not provided, thePromiseobject that resolves to the subrequest response object is returned.For example, to view all response headers in the subrequest:
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- current URI in request, normalized, read-only
r.rawVariables{}- nginx variables as Buffers, writable (since 0.5.0)
r.variables{}-
nginx variables object, writable
(since 0.2.8).
For example, to get the
$foovariable, one of the following syntax can be used:r.variables['foo'] r.variables.foo
Since 0.8.6, regular expression captures can be accessed using the following syntax:
r.variables['1'] r.variables[1]
nginx treats variables referenced in
nginx.confand unreferenced variables differently. When a variable is referenced, it may be cacheable, but when it is unreferenced it is always uncacheable. For example, when the $request_id variable is only accessed from njs, it has a new value every time it is evaluated. But, when the $request_id is referenced, for example:proxy_set_header X-Request-Id $request_id;
the
r.variables.request_idreturns the same value every time.A variable is writable if:
-
it was created using the
js_vardirective for http or stream (since 0.5.3) - it is referenced in nginx configuration file
Even so, some embedded variables still cannot be assigned a value (for example,
$http_). -
it was created using the
r.warn(string)-
writes a
stringto the error log on thewarninglevel of loggingAs nginx has a hardcoded maximum line length limit, only first 2048 bytes of the string can be logged.
Stream Session
The stream session object is available only in the ngx_stream_js_module module. Before 0.8.5, all string properties of the object were byte strings.
s.allow()-
an alias to
s.done(0)(0.2.4) s.decline()-
an alias to
s.done(-5)(0.2.4) s.deny()-
an alias to
s.done(403)(0.2.4) s.done([)code]-
sets an exit
codefor the current phase handler to a code value, by default0. The actual finalization happens when the js handler is completed and all pending events, for example, fromngx.fetch()orsetTimeout(), are processed (0.2.4).Possible code values:
-
0— successful finalization, passing control to the next phase -
-5— undecided, passing control to the next handler of the current phase (if any) -
403— access is forbidden
May be called only from a phase handler function:js_accessorjs_preread. -
s.error(string)-
writes a sent
stringto the error log on theerrorlevel of loggingAs nginx has a hardcoded maximum line length limit, only first 2048 bytes of the string can be logged.
s.log(string)-
writes a sent
stringto the error log on theinfolevel of loggingAs nginx has a hardcoded maximum line length limit, only first 2048 bytes of the string can be logged.
s.off(eventName)- unregisters the callback set by the s.on() method (0.2.4)
s.on(event,callback)-
registers a
callbackfor the specifiedevent(0.2.4).An
eventmay be one of the following strings:upload- new data (string) from a client
download- new data (string) to a client
upstream- new data (Buffer) from a client (since 0.5.0)
downstream- new data (Buffer) to a client (since 0.5.0)
The completion callback has the following prototype:
callback(data, flags), wheredatais string or Buffer (depending on the event type)flagsis an object with the following properties:last- a boolean value, true if data is a last buffer.
s.remoteAddress- client address, read-only
s.rawVariables- nginx variables as Buffers, writable (since 0.5.0)
s.send(data[,options])-
adds data to the chain of data chunks that will be forwarded in
the forward direction:
in download callback to a client; in upload to an upstream server
(0.2.4).
The actual forwarding happens later,
when the all the data chunks of the current chain are processed.
The data can be a string or Buffer (0.5.0). The
optionsis an object used to override nginx buffer flags derived from an incoming data chunk buffer. The flags can be overridden with the following flags:last- boolean, true if the buffer is the last buffer
flush-
boolean,
true if the buffer should have the
flushflag
The method can be called multiple times per callback invocation. s.sendDownstream()- is identical to s.send(), except for it always sends data to a client (since 0.7.8).
s.sendUpstream()- is identical to s.send(), except for it always sends data from a client (since 0.7.8).
s.status-
session status code, an alias to the
$statusvariable, read only (since 0.5.2) s.setReturnValue(value)-
sets the return value of the
js_set handler
(0.7.0).
Unlike an ordinary return statement,
this method should be used when the handler is JS async function.
For example:
async function js_set(r) { const digest = await crypto.subtle.digest('SHA-256', r.headersIn.host); r.setReturnValue(digest); } s.variables{}- nginx variables object, writable (since 0.2.8). A variable can be writable only if it is referenced in nginx configuration file. Even so, some embedded variables still cannot be assigned a value.
s.warn(string)-
writes a sent
stringto the error log on thewarninglevel of loggingAs nginx has a hardcoded maximum line length limit, only first 2048 bytes of the string can be logged.
Periodic Session
PeriodicSession.rawVariables{} |
PeriodicSession.variables{} |
The Periodic Session object is provided as the first argument
for the js_periodic handler for
http
and
stream
(since 0.8.1).
PeriodicSession.rawVariables{}- nginx variables as Buffers, writable.
PeriodicSession.variables{}- nginx variables object, writable.
Headers
Headers() |
Headers.append() |
Headers.delete() |
Headers.get() |
Headers.getAll() |
Headers.forEach() |
Headers.has() |
Headers.set() |
The Headers interface of the
Fetch API
is available since 0.5.1.
A new Headers object can be created using the
Headers() constructor:
(since 0.7.10):
Headers([init])-
init-
An object containing HTTP headers for
prepopulating the
Headersobject, can be astring, anarrayof name-value pairs, or an existingHeadersobject.
A new Headers object can be created
with the following properties and methods:
append()-
Appends a new value into an existing header in the
Headersobject, or adds the header if it does not already exist (since 0.7.10). delete()-
Deletes a header from the
Headersobject (since 0.7.10). get()- Returns a string containing the values of all headers with the specified name separated by a comma and a space.
getAll(name)- Returns an array containing the values of all headers with the specified name.
forEach()-
Executes a provided function once for each key/value pair
in the
Headersobject (since 0.7.10). has()- Returns a boolean value indicating whether a header with the specified name exists.
set()-
Sets a new value for an existing header inside
the
Headersobject, or adds the header if it does not already exist (since 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 |
The Request interface of the
Fetch API
is available since 0.7.10.
A new Request object can be created using the
Request() constructor:
Request[resource[,options]])-
Creates a
Requestobject to fetch that can be passed later tongx.fetch(). Theresourcecan be a URL or an existingRequestobject. Theoptionsis an optional argument that is expected to be an object with the following keys:
A new Request object can be created
with the following properties and methods:
arrayBuffer()-
Returns a
Promisethat resolves with anArrayBuffer. bodyUsed-
A boolean value,
trueif the body was used in the request. cache- Contains the cache mode of the request.
credentials-
Contains the credentials of the request,
by default is
same-origin. headers-
The
Headersread-only object associated with theRequest. json()-
Returns a
Promisethat resolves with the result of parsing the request body as JSON. method- Contains the request method.
mode- Contains the mode of the request.
text()-
Returns a
Promisethat resolves with a string representation of the request body. url- Contains the URL of the request.
Response
Response() |
Response.arrayBuffer() |
Response.bodyUsed |
Response.headers |
Response.json() |
Response.ok |
Response.redirected |
Response.status |
Response.statusText |
Response.text() |
Response.type |
Response.url |
The Response interface is available since
0.5.1.
A new Response object can be created using the
Response() constructor
(since 0.7.10):
Response[body[,options]])-
Creates a
Responseobject. Thebodyis an optional argument, can be astringor abuffer, by default isnull. Theoptionsis an optional argument that is expected to be an object with the following keys:
A new Response() object can be created
with the following properties and methods:
arrayBuffer()-
Takes a
Responsestream and reads it to completion. Returns aPromisethat resolves with anArrayBuffer. bodyUsed-
A boolean value,
trueif the body was read. headers-
The
Headersread-only object associated with theResponse. json()-
Takes a
Responsestream and reads it to completion. Returns aPromisethat resolves with the result of parsing the body text as JSON. ok-
A boolean value,
trueif the response was successful (status codes between 200–299). redirected-
A boolean value,
trueif the response is the result of a redirect. status- The status code of the response.
statusText- The status message corresponding to the status code.
text()-
Takes a
Responsestream and reads it to completion. Returns aPromisethat resolves with a string. type- The type of the response.
url- The URL of the response.
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 |
The ngx global object is available
since 0.5.0.
ngx.build-
a string containing an optional nginx build name, corresponds to the
--build=nameargument of the configure script, by default is""(0.8.0) ngx.conf_file_path- a string containing the file path to current nginx configuration file (0.8.0)
ngx.conf_prefix- a string containing the file path to nginx configuration prefix — the directory where nginx is currently looking for configuration (0.7.8)
ngx.error_log_path- a string containing the file path to the current error log file (0.8.0)
ngx.fetch(resource, [options])-
Makes a request to fetch a
resource(0.5.1), which can be an URL or theRequestobject (0.7.10). Returns aPromisethat resolves with theResponseobject. Since 0.7.0, thehttps://scheme is supported, redirects are not handled.If the URL in the
resourceis specified as a domain name, it is determined using a resolver. If thehttps://scheme is specified, the js_fetch_trusted_certificate directive should be configured for the authentication of theresource's HTTPS server.The
optionsparameter is expected to be an object with the following keys:body- request body, by default is empty
buffer_size-
the buffer size for reading the response,
by default is
4096 headers- request headers object
max_response_body_size-
the maximum size of the response body in bytes,
by default is
32768 method-
HTTP method,
by default the
GETmethod is used verify-
enables or disables verification of the HTTPS server certificate,
by default is
true(0.7.0)
Example:
let reply = await ngx.fetch('http://nginx.org/'); let body = await reply.text(); r.return(200, body); ngx.log(level,message)-
writes a message to the error log with the specified level of logging.
The
levelparameter specifies one of the log levels, themessageparameter can be a string or Buffer. The following log levels can be specified:ngx.INFO,ngx.WARN, andngx.ERR.As nginx has a hardcoded maximum line length limit, only first 2048 bytes of the string can be logged.
ngx.prefix- a string containing the file path to nginx prefix — a directory that keeps server files (0.8.0)
ngx.version-
a string containing nginx version,
for example:
1.25.0(0.8.0) ngx.version_number-
a number containing nginx version,
for example:
1025000(0.8.0) ngx.worker_id-
a number that corresponds to nginx internal worker id,
the value is between
0and the value specified in the worker_processes directive (0.8.0)
ngx.shared
The ngx.shared global object is available
since 0.8.0.
SharedDict
The shared dictionary object is available
since 0.8.0.
The shared dictionary name, type, and size
are set with the js_shared_dict_zone directive in
http
or
stream.
A SharedDict() object
has the following properties and methods:
ngx.shared.SharedDict.add(key,value[,timeout])-
Sets the
valuefor the specifiedkeyin the dictionary only if the key does not exist yet. Thekeyis a string representing the key of the item to add, thevalueis the value of the item to add.The optional
timeoutargument is specified in milliseconds and overrides thetimeoutparameter of thejs_shared_dict_zonedirective in http or stream (since 0.8.5). It can be useful when some keys are expected to have unique timeouts.Returns
trueif the value has been successfully added to theSharedDictdictionary,falseif the key already exists in the dictionary. ThrowsSharedMemoryErrorif there is not enough free space in theSharedDictdictionary. ThrowsTypeErrorif thevalueis of a different type than expected by this dictionary. ngx.shared.SharedDict.capacity-
Returns the capacity of the
SharedDictdictionary, corresponds to thesizeparameter ofjs_shared_dict_zonedirective in http or stream. ngx.shared.SharedDict.clear()-
Removes all items from the
SharedDictdictionary. ngx.shared.SharedDict.delete(key)-
Removes the item associated with the specified key
from the
SharedDictdictionary,trueif the item in the dictionary existed and was removed,falseotherwise. ngx.shared.SharedDict.freeSpace()-
Returns the free page size in bytes.
If the size is zero, the
SharedDictdictionary will still accept new values if there is space in the occupied pages. ngx.shared.SharedDict.get(key)-
Retrieves the item by its
key, returns the value associated with thekeyorundefinedif there is none. ngx.shared.SharedDict.has(key)-
Searches for an item by its
key, returnstrueif such item exists orfalseotherwise. ngx.shared.SharedDict.incr(key,delta[[,init],timeout]))-
Increments the integer value associated with the
keybydelta. Thekeyis a string, thedeltais the number to increment or decrement the value by. If the key does not exist, the item will be initialized to an optionalinitargument, by default is0.The optional
timeoutargument is specified in milliseconds and overrides thetimeoutparameter of thejs_shared_dict_zonedirective in http or stream (since 0.8.5). It can be useful when some keys are expected to have unique timeouts.Returns the new value. Throws
SharedMemoryErrorif there is not enough free space in theSharedDictdictionary. ThrowsTypeErrorif this dictionary does not expect numbers.This method can be used only if the dictionary type was declared with
type=numberparameter of thejs_shared_dict_zonedirective in http or stream. ngx.shared.SharedDict.items([maxCount])-
Returns an array of the
SharedDictdictionary key-value items (since 0.8.1). ThemaxCountparameter sets maximum number of items to retrieve, by default is1024. ngx.shared.SharedDict.keys([maxCount])-
Returns an array of the
SharedDictdictionary keys. ThemaxCountparameter sets maximum number of keys to retrieve, by default is1024. ngx.shared.SharedDict.name-
Returns the name of the
SharedDictdictionary, corresponds to thezone=parameter ofjs_shared_dict_zonedirective in http or stream. ngx.shared.SharedDict.pop(key)-
Removes the item associated with the specified
keyfrom theSharedDictdictionary, returns the value associated with thekeyorundefinedif there is none. ngx.shared.SharedDict.replace(key,value)-
Replaces the
valuefor the specifiedkeyonly if the key already exists, returnstrueif the value was successfully replaced,falseif the key does not exist in theSharedDictdictionary. ThrowsSharedMemoryErrorif there is not enough free space in theSharedDictdictionary. ThrowsTypeErrorif thevalueis of a different type than expected by this dictionary. ngx.shared.SharedDict.set(key,value[,timeout])-
Sets the
valuefor the specifiedkey, returns thisSharedDictdictionary (for method chaining).The optional
timeoutargument is specified in milliseconds and overrides thetimeoutparameter of thejs_shared_dict_zonedirective in http or stream (since 0.8.5). It can be useful when some keys are expected to have unique timeouts. ngx.shared.SharedDict.size()-
Returns the number of items for the
SharedDictdictionary. ngx.shared.SharedDict.type-
Returns
stringornumberthat corresponds to theSharedDictdictionary type set by thetype=parameter ofjs_shared_dict_zonedirective in http or stream.
built-in objects
console
console.error() |
console.info() |
console.log() |
console.time() |
console.timeEnd() |
console.warn() |
The console object is available
in nginx since 0.8.2,
in CLI since 0.2.6.
console.error(msg[,msg2...])- Outputs one or more error messages. The message may be a string or an object.
console.info(msg[,msg2...])- Outputs one or more info messages. The message may be a string or an object.
console.log(msg[,msg2...])- Outputs one or more log messages. The message may be a string or an object.
console.time(label)-
Starts a timer that can track how long an operation takes.
The
labelparameter allows naming different timers. Ifconsole.timeEnd()with the same name is called, the time that elapsed since the timer was started will be output, in milliseconds. console.timeEnd(label)-
Stops a timer previously started by
console.time()Thelabelparameter allows naming different timers. console.warn(msg[,msg2...])- Outputs one or more warning messages. The message may be a string or an object.
crypto
The crypto object is a global object
that allows using cryptographic functionality
(since 0.7.0).
сrypto.getRandomValues(typedArray)-
Gets cryptographically strong random values.
Returns the same array passed as
typedArraybut with its contents replaced with the newly generated random numbers. Possible values:typedArray-
can be
Int8Array,Int16Array,Uint16Array,Int32Array, orUint32Array
сrypto.subtle.encrypt(algorithm,key,data)-
Encrypts
datausing the providedalgorithmandkey. Returns aPromisethat fulfills with anArrayBuffercontaining the ciphertext. Possible values:algorithm-
an object that specifies
the algorithm to be used and any extra parameters if required:
-
for
RSA-OAEP, pass the object with the following keys:-
nameis a string, should be set toRSA-OAEP:crypto.subtle.encrypt({name: "RSA-OAEP"}, key, data)
-
-
for
AES-CTR, pass the object with the following keys:-
nameis a string, should be set toAES-CTR -
counteris anArrayBuffer,TypedArray, orDataView— the initial value of the counter block, must be 16 bytes long (the AES block size). The rightmost length bits of this block are used for the counter, and the rest is used for the nonce. For example, if length is set to 64, then the first half of counter is the nonce and the second half is used for the counter -
lengthis the number of bits in the counter block that are used for the actual counter. The counter must be big enough that it doesn't wrap.
-
-
for
AES-CBC, pass the object with the following keys:-
nameis a string, should be set toAES-CBC -
ivor the initialization vector, is anArrayBuffer,TypedArray, orDataView, must be 16 bytes, unpredictable, and preferably cryptographically random. However, it need not be secret, for example, it may be transmitted unencrypted along with the ciphertext.
-
-
for
AES-GCM, pass the object with the following keys:-
nameis a string, should be set toAES-GCM -
ivor the initialization vector, is anArrayBuffer,TypedArray, orDataView, must be 16 bytes, and must be unique for every encryption operation carried out with a given key -
additionalData(optional) is anArrayBuffer,TypedArray, orDataViewthat contains additional data that will not be encrypted but will be authenticated along with the encrypted data. IfadditionalDatais specified, then the same data must be specified in the corresponding call todecrypt(): if the data given to thedecrypt()call does not match the original data, the decryption will throw an exception. The bit length ofadditionalDatamust be smaller than2^64 - 1. -
tagLength(optional, default is128) - anumberthat determines the size in bits of the authentication tag generated in the encryption operation and used for authentication in the corresponding decryption Possible values:32,64,96,104,112,120, or128. The AES-GCM specification recommends that it should be96,104,112,120, or128, although32or64bits may be acceptable in some applications.
-
-
for
key-
a
CryptoKeythat contains the key to be used for encryption data-
an
ArrayBuffer,TypedArray, orDataViewthat contains the data to be encrypted (also known as the plaintext)
сrypto.subtle.decrypt(algorithm,key,data)-
Decrypts encrypted data.
Returns a
Promisewith the decrypted data. Possible values:algorithm-
an object
that specifies the algorithm to be used, and any extra parameters as required.
The values given for the extra parameters must match
those passed into the corresponding
encrypt()call.-
for
RSA-OAEP, pass the object with the following keys:-
nameis a string, should be set toRSA-OAEP:crypto.subtle.encrypt({name: "RSA-OAEP"}, key, data)
-
-
for
AES-CTR, pass the object with the following keys:-
nameis a string, should be set toAES-CTR -
counteris anArrayBuffer,TypedArray, orDataView— the initial value of the counter block, must be 16 bytes long (the AES block size). The rightmost length bits of this block are used for the counter, and the rest is used for the nonce. For example, if length is set to 64, then the first half of counter is the nonce and the second half is used for the counter. -
lengthis the number of bits in the counter block that are used for the actual counter. The counter must be big enough that it doesn't wrap.
-
-
for
AES-CBC, pass the object with the following keys:-
nameis a string, should be set toAES-CBC -
ivor the initialization vector, is anArrayBuffer,TypedArray, orDataView, must be 16 bytes, unpredictable, and preferably cryptographically random. However, it need not be secret (for example, it may be transmitted unencrypted along with the ciphertext).
-
-
for
AES-GCM, pass the object with the following keys:-
nameis a string, should be set toAES-GCM -
ivor the initialization vector, is anArrayBuffer,TypedArray, orDataView, must be 16 bytes, and must be unique for every encryption operation carried out with a given key -
additionalData(optional) is anArrayBuffer,TypedArray, orDataViewthat contains additional data that will not be encrypted but will be authenticated along with the encrypted data. IfadditionalDatais specified, then the same data must be specified in the corresponding call todecrypt(): if the data given to thedecrypt()call does not match the original data, the decryption will throw an exception. The bit length ofadditionalDatamust be smaller than2^64 - 1. -
tagLength(optional, default is128) - anumberthat determines the size in bits of the authentication tag generated in the encryption operation and used for authentication in the corresponding decryption. Possible values:32,64,96,104,112,120, or128. The AES-GCM specification recommends that it should be96,104,112,120, or128, although32or64bits may be acceptable in some applications.
-
-
for
key-
a
CryptoKeythat contains the key to be used for decryption. IfRSA-OAEPis used, this is theprivateKeyproperty of theCryptoKeyPairobject. data-
an
ArrayBuffer,TypedArray, orDataViewthat contains the data to be decrypted (also known as ciphertext)
сrypto.subtle.deriveBits(algorithm,baseKey,length)-
Derives an array of bits from a base key.
Returns a
Promisewhich will be fulfilled with anArrayBufferthat contains the derived bits. Possible values:algorithm-
is an object that defines the derivation algorithm to use:
-
for
HKDF, pass the object with the following keys:-
nameis a string, should be set toHKDF -
hashis a string with the digest algorithm to use:SHA-1,SHA-256,SHA-384, orSHA-512 -
saltis anArrayBuffer,TypedArray, orDataViewthat represents random or pseudo-random value with the same length as the output of thedigestfunction. Unlike the input key material passed intoderiveKey(), salt does not need to be kept secret. -
infois anArrayBuffer,TypedArray, orDataViewthat represents application-specific contextual information used to bind the derived key to an application or context, and enables deriving different keys for different contexts while using the same input key material. This property is required but may be an empty buffer.
-
-
for
PBKDF2, pass the object with the following keys:-
nameis a string, should be set toPBKDF2 -
hashis a string with the digest algorithm to use:SHA-1,SHA-256,SHA-384, orSHA-512 -
saltis anArrayBuffer,TypedArray, orDataViewthat represents random or pseudo-random value of at least16bytes. Unlike the input key material passed intoderiveKey(), salt does not need to be kept secret. -
iterationsis anumberthat represents the number of times the hash function will be executed inderiveKey()
-
-
for
baseKey-
is a
CryptoKeythat represents the input to the derivation algorithm - the initial key material for the derivation function: for example, forPBKDF2it might be a password, imported as aCryptoKeyusingсrypto.subtle.importKey() length-
is a number representing the number of bits to derive.
For browsers compatibility,
the number should be a multiple of
8
сrypto.subtle.deriveKey(algorithm,baseKey,derivedKeyAlgorithm,extractable,keyUsages)-
Derives a secret key from a master key.
Possible values:
algorithm-
is an object that defines the derivation algorithm to use:
-
for
HKDF, pass the object with the following keys:-
nameis a string, should be set toHKDF -
hashis a string with the digest algorithm to use:SHA-1,SHA-256,SHA-384, orSHA-512 -
saltis anArrayBuffer,TypedArray, orDataViewthat represents random or pseudo-random value with the same length as the output of thedigestfunction. Unlike the input key material passed intoderiveKey(), salt does not need to be kept secret. -
infois anArrayBuffer,TypedArray, orDataViewthat represents application-specific contextual information used to bind the derived key to an application or context, and enables deriving different keys for different contexts while using the same input key material. This property is required but may be an empty buffer.
-
-
for
PBKDF2, pass the object with the following keys:-
nameis a string, should be set toPBKDF2 -
hashis a string with the digest algorithm to use:SHA-1,SHA-256,SHA-384, orSHA-512 -
saltis anArrayBuffer,TypedArray, orDataViewthat represents random or pseudo-random value of at least16bytes. Unlike the input key material passed intoderiveKey(), salt does not need to be kept secret. -
iterationsis anumberthat represents the number of times the hash function will be executed inderiveKey()
-
-
for
baseKey-
is a
CryptoKeythat represents the input to the derivation algorithm - the initial key material for the derivation function: for example, forPBKDF2it might be a password, imported as aCryptoKeyusingсrypto.subtle.importKey(). derivedKeyAlgorithm-
is an object
that defines the algorithm the derived key will be used for:
-
for
HMAC, pass the object with the following keys:-
nameis a string, should be set toHMAC -
hashis a string with the name of the digest function to use:SHA-1,SHA-256,SHA-384, orSHA-512 -
length(optional) is anumberthat represents the length in bits of the key. If not specified, the length of the key is equal to the block size of the chozen hash function
-
-
for
AES-CTR,AES-CBC, orAES-GCM, pass the object with the following keys:-
nameis a string, should be set toAES-CTR,AES-CBC, orAES-GCM, depending on the algorithm used -
lengthis anumberthat represents the length in bits of the key to generate:128,192, or256
-
-
for
extractable- is a boolean value that indicates whether it will be possible to export the key
keyUsages-
is an
Arraythat indicates what can be done with the derived key. The key usages must be allowed by the algorithm set inderivedKeyAlgorithm. Possible values:encrypt- key for encrypting messages
decrypt- key for decrypting messages
sign- key for signing messages
verify- key for verifying signatures
deriveKey- key for deriving a new key
deriveBits- key for deriving bits
wrapKey- key for wrapping a key
unwrapKey- key for unwrapping a key
сrypto.subtle.digest(algorithm,data)-
Generates a digest of the given data.
Takes as its arguments an identifier for the digest algorithm to use
and the data to digest.
Returns a
Promisewhich will be fulfilled with the digest. Possible values:algorithm-
is a string that defines the hash function to use:
SHA-1(not for cryptographic applications),SHA-256,SHA-384, orSHA-512 data-
is an
ArrayBuffer,TypedArray, orDataViewthat contains the data to be digested
сrypto.subtle.exportKey(format,key)-
Exports a key: takes a key as
a
CryptoKeyobject and returns the key in an external, portable format (since 0.7.10). If theformatwasjwk, then thePromisefulfills with a JSON object containing the key. Otherwise, the promise fulfills with anArrayBuffercontaining the key. Possible values:format-
a string that describes the data format in which the key should be exported,
can be the following:
raw- the raw data format
pkcs8- the PKCS #8 format
spki- the SubjectPublicKeyInfo format
jwk- the JSON Web Key (JWK) format (since 0.7.10)
key-
the
CryptoKeythat contains the key to be exported
сrypto.subtle.generateKey(algorithm,extractable,usage)-
Generates a new key for symmetric algorithms
or key pair for public-key algorithms
(since 0.7.10).
Returns a
Promisethat fulfills with the generated key as aCryptoKeyorCryptoKeyPairobject. Possible values:algorithm-
a dictionary object that defines the type of key to generate
and provides extra algorithm-specific parameters:
-
for
RSASSA-PKCS1-v1_5,RSA-PSS, orRSA-OAEP, pass the object with the following keys:-
nameis a string, should be set toRSASSA-PKCS1-v1_5,RSA-PSS, orRSA-OAEP, depending on the used algorithm -
hashis a string that represents the name of thedigestfunction to use, can beSHA-256,SHA-384, orSHA-512
-
-
for
ECDSA, pass the object with the following keys:-
nameis a string, should be set toECDSA -
namedCurveis a string that represents the name of the elliptic curve to use, may beP-256,P-384, orP-521
-
-
for
HMAC, pass the object with the following keys:-
nameis a string, should be set toHMAC -
hashis a string that represents the name of thedigestfunction to use, can beSHA-256,SHA-384, orSHA-512 -
length(optional) is a number that represents the length in bits of the key. If omitted, the length of the key is equal to the length of the digest generated by the chosen digest function.
-
-
for
AES-CTR,AES-CBC, orAES-GCM, pass the string identifying the algorithm or an object of the form{ "name": "ALGORITHM" }, whereALGORITHMis the name of the algorithm
-
for
extractable- boolean value that indicates if it is possible to export the key
usage-
an
arraythat indicates possible actions with the key:encrypt- key for encrypting messages
decrypt- key for decrypting messages
sign- key for signing messages
verify- key for verifying signatures
deriveKey- key for deriving a new key
deriveBits- key for deriving bits
wrapKey- key for wrapping a key
unwrapKey- key for unwrapping a key
сrypto.subtle.importKey(format,keyData,algorithm,extractable,keyUsages)-
Imports a key: takes as input a key in an external, portable format
and gives a
CryptoKeyobject. Returns aPromisethat fulfills with the imported key as aCryptoKeyobject. Possible values:format-
a string that describes the data format of the key to import,
can be the following:
raw- the raw data format
pkcs8- the PKCS #8 format
spki- the SubjectPublicKeyInfo format
jwk- the JSON Web Key (JWK) format (since 0.7.10)
keyData-
the
ArrayBuffer,TypedArray, orDataViewobject that contains the key in the given format algorithm-
a dictionary object that defines the type of key to import
and provides extra algorithm-specific parameters:
-
for
RSASSA-PKCS1-v1_5,RSA-PSS, orRSA-OAEP, pass the object with the following keys:-
nameis a string, should be set toRSASSA-PKCS1-v1_5,RSA-PSS, orRSA-OAEP, depending on the used algorithm -
hashis a string that represents the name of thedigestfunction to use, can beSHA-1,SHA-256,SHA-384, orSHA-512
-
-
for
ECDSA, pass the object with the following keys:-
nameis a string, should be set toECDSA -
namedCurveis a string that represents the name of the elliptic curve to use, may beP-256,P-384, orP-521
-
-
for
HMAC, pass the object with the following keys:-
nameis a string, should be set toHMAC -
hashis a string that represents the name of thedigestfunction to use, can beSHA-256,SHA-384, orSHA-512 -
length(optional) is a number that represents the length in bits of the key. If omitted, the length of the key is equal to the length of the digest generated by the chosen digest function.
-
-
for
AES-CTR,AES-CBC, orAES-GCM, pass the string identifying the algorithm or an object of the form{ "name": "ALGORITHM" }, whereALGORITHMis the name of the algorithm -
for
PBKDF2, pass thePBKDF2string -
for
HKDF, pass theHKDFstring
-
for
extractable- boolean value that indicates if it is possible to export the key
keyUsages-
an
arraythat indicates possible actions with the key:encrypt- key for encrypting messages
decrypt- key for decrypting messages
sign- key for signing messages
verify- key for verifying signatures
deriveKey- key for deriving a new key
deriveBits- key for deriving bits
wrapKey- key for wrapping a key
unwrapKey- key for unwrapping a key
сrypto.subtle.sign(algorithm,key,data)-
Returns
signatureas aPromisethat fulfills with anArrayBuffercontaining the signature. Possible values:algorithm-
is a string or object that specifies the signature algorithm to use
and its parameters:
-
for
RSASSA-PKCS1-v1_5, pass the string identifying the algorithm or an object of the form{ "name": "ALGORITHM" } -
for
RSA-PSS, pass the object with the following keys:-
nameis a string, should be set toRSA-PSS -
saltLengthis a longintegerthat represents the length of the random salt to use, in bytes
-
-
for
ECDSA, pass the object with the following keys:-
nameis a string, should be set toECDSA -
hashis an identifier for the digest algorithm to use, can beSHA-256,SHA-384, orSHA-512
-
-
for
HMAC, pass the string identifying the algorithm or an object of the form{ "name": "ALGORITHM" }
-
for
key-
is a
CryptoKeyobject that the key to be used for signing. If algorithm identifies a public-key cryptosystem, this is the private key. data-
is an
ArrayBuffer,TypedArray, orDataViewobject that contains the data to be signed
сrypto.subtle.verify(algorithm,key,signature,data)-
Verifies a digital signature,
returns a
Promisethat fulfills with a boolean value:trueif the signature is valid, otherwisefalse. Possible values:algorithm-
is a string or object that specifies the algorithm to use
and its parameters:
-
for
RSASSA-PKCS1-v1_5, pass the string identifying the algorithm or an object of the form{ "name": "ALGORITHM" } -
for
RSA-PSS, pass the object with the following keys:-
nameis a string, should be set toRSA-PSS -
saltLengthis a longintegerthat represents the length of the random salt to use, in bytes
-
-
for
ECDSA, pass the object with the following keys:-
nameis a string, should be set toECDSA -
hashis an identifier for the digest algorithm to use, can beSHA-256,SHA-384, orSHA-512
-
-
for
HMAC, pass the string identifying the algorithm or an object of the form{ "name": "ALGORITHM" }
-
for
key-
is a
CryptoKeyobject that the key to be used for verifying. It is the secret key for a symmetric algorithm and the public key for a public-key system. signature-
is an
ArrayBuffer,TypedArray, orDataViewthat contains the signature to verify data-
is an
ArrayBuffer,TypedArray, orDataViewobject that contains the data whose signature is to be verified
CryptoKey
CryptoKey.algorithm |
CryptoKey.extractable |
CryptoKey.type |
CryptoKey.usages |
The CryptoKey object
represents a cryptographic key obtained
from one of the SubtleCrypto methods:
сrypto.subtle.generateKey(),
сrypto.subtle.deriveKey(),
сrypto.subtle.importKey().
CryptoKey.algorithm- returns an object describing the algorithm for which this key can be used and any associated extra parameters (since 0.8.0), read-only
CryptoKey.extractable-
a boolean value,
trueif the key can be exported (since 0.8.0), read-only CryptoKey.type-
a string value that indicates which kind of key is represented by the object,
read-only.
Possible values:
secret- This key is a secret key for use with a symmetric algorithm.
private-
This key is the private half of an asymmetric algorithm's
CryptoKeyPair public-
This key is the public half of an asymmetric algorithm's
CryptoKeyPair.
CryptoKey.usages-
An array of strings indicating what this key can be used for
(since 0.8.0),
read-only.
Possible array values:
encrypt- key for encrypting messages
decrypt- key for decrypting messages
sign- key for signing messages
verify- key for verifying signatures
deriveKey- key for deriving a new key
deriveBits- key for deriving bits
CryptoKeyPair
CryptoKeyPair.privateKey |
CryptoKeyPair.publicKey |
The CryptoKeyPair is a dictionary object
of the WebCrypto API
that represents an asymmetric key pair.
CryptoKeyPair.privateKey-
A
CryptoKeyobject representing the private key. CryptoKeyPair.publicKey-
A
CryptoKeyobject representing the public key.
njs
njs.version |
njs.version_number |
njs.dump() |
njs.memoryStats |
njs.on() |
The njs object is a global object
that represents the current VM instance
(since 0.2.0).
njs.version- Returns a string with the current version of njs (for example, “0.7.4”).
njs.version_number-
Returns a number with the current version of njs.
For example, “0.7.4” is returned as
0x000704(since 0.7.4). njs.dump(value)- Returns the pretty-print string representation for a value.
njs.memoryStats-
Object containing memory statistics for current VM instance
(since 0.7.8).
size- amount of memory in bytes njs memory pool claimed from the operating system.
njs.on(event,callback)-
Registers a callback for the specified VM event
(since 0.5.2).
An event may be one of the following strings:
exit- is called before the VM is destroyed. The callback is called without arguments.
process
process.argv |
process.env |
process.kill() |
process.pid |
process.ppid |
The process object is a global object
that provides information about the current process
(0.3.3).
process.argv- Returns an array that contains the command line arguments passed when the current process was launched.
process.env-
Returns an object containing the user environment.
By default, nginx removes all environment variables inherited from its parent process except the TZ variable. Use the env directive to preserve some of the inherited variables.
process.kill(pid,number|string)-
Sends the signal to the process identified by
pid. Signal names are numbers or strings such as 'SIGINT' or 'SIGHUP'. See kill(2) for more information. process.pid- Returns the PID of the current process.
process.ppid- Returns the PID of the current parent process.
String
By default all strings in njs are Unicode strings. They correspond to ECMAScript strings that contain Unicode characters. Before 0.8.0, byte strings were also supported.
Byte strings
Since 0.8.0, the support for byte strings and byte string methods were removed. When working with byte sequence, the Buffer object andBufferproperties, such asr.requestBuffer,r.rawVariables, should be used.
Byte strings contain a sequence of bytes and are used to serialize Unicode strings to external data and deserialize from external sources. For example, the toUTF8() method serializes a Unicode string to a byte string using UTF-8 encoding:
>> '£'.toUTF8().toString('hex')
'c2a3' /* C2 A3 is the UTF-8 representation of 00A3 ('£') code point */
The toBytes() method serializes
a Unicode string with code points up to 255 into a byte string,
otherwise, null is returned:
>> '£'.toBytes().toString('hex')
'a3' /* a3 is a byte equal to 00A3 ('£') code point */
String.bytesFrom(array|string,encoding)-
The method was made obsolete in
0.4.4
and was removed in 0.8.0.
The
Buffer.frommethod should be used instead:
Before 0.4.4, created a byte string either from an array that contained octets, or from an encoded string (0.2.3), the encoding could be>> Buffer.from([0x62, 0x75, 0x66, 0x66, 0x65, 0x72]).toString() 'buffer' >> Buffer.from('YnVmZmVy', 'base64').toString() 'buffer'hex,base64, andbase64url. String.prototype.fromBytes(start[,end])- the property was made obsolete in 0.7.7 and was removed in 0.8.0. Before 0.7.7, returned a new Unicode string from a byte string where each byte was replaced with a corresponding Unicode code point.
String.prototype.fromUTF8(start[,end])-
the property was made obsolete in
0.7.7
and was removed in 0.8.0.
The
TextDecodermethod should be used instead. Before 0.7.7, converted a byte string containing a valid UTF-8 string into a Unicode string, otherwisenullwas returned. String.prototype.toBytes(start[,end])-
the property was made obsolete in
0.7.7
and was removed in 0.8.0.
Before 0.7.7,
serialized a Unicode string to a byte string,
returned
nullif a character larger than 255 was found in the string. String.prototype.toString(encoding)-
the property was made obsolete in 0.7.7 and was removed in 0.8.0. Before 0.7.7, encoded a string to
hex,base64, orbase64url:>> 'αβγδ'.toString('base64url') 'zrHOss6zzrQ'Before version 0.4.3, only a byte string could be encoded:
>> 'αβγδ'.toUTF8().toString('base64url') 'zrHOss6zzrQ' String.prototype.toUTF8(start[,end])-
the property was made obsolete in
0.7.7
and was removed in 0.8.0.
The
TextEncodermethod should be used instead. Before 0.7.7, serialized a Unicode string to a byte string using UTF-8 encoding:>> 'αβγδ'.toUTF8().length 8 >> 'αβγδ'.length 4
web API
Text Decoder
TextDecoder() |
TextDecoder.prototype.encoding |
TextDecoder.prototype.fatal |
TextDecoder.prototype.ignoreBOM |
TextDecoder.prototype.decode() |
The TextDecoder
produces a stream of code points
from a stream of bytes
(0.4.3).
TextDecoder([[encoding],options])-
Creates a new
TextDecoderobject for specifiedencoding, currently, only UTF-8 is supported. TheoptionsisTextDecoderOptionsdictionary with the property:fatal-
boolean flag indicating if
TextDecoder.decode()must throw theTypeErrorexception when a coding error is found, by default isfalse.
TextDecoder.prototype.encoding-
Returns a string with the name of the encoding used by
TextDecoder(), read-only. TextDecoder.prototype.fatal-
boolean flag,
trueif the error mode is fatal, read-only. TextDecoder.prototype.ignoreBOM-
boolean flag,
trueif the byte order marker is ignored, read-only. TextDecoder.prototype.decode(buffer, [options])-
Returns a string with the text
decoded from the
bufferbyTextDecoder(). The buffer can beArrayBuffer. TheoptionsisTextDecodeOptionsdictionary with the property:stream-
boolean flag indicating if
additional data will follow in subsequent calls to
decode():trueif processing the data in chunks, andfalsefor the final chunk or if the data is not chunked. By default isfalse.
>> (new TextDecoder()).decode(new Uint8Array([206,177,206,178])) αβ
Text Encoder
TextEncoder() |
TextEncoder.prototype.encode() |
TextEncoder.prototype.encodeInto() |
The TextEncoder object
produces a byte stream with UTF-8 encoding
from a stream of code points
(0.4.3).
TextEncoder()-
Returns a newly constructed
TextEncoderthat will generate a byte stream with UTF-8 encoding. TextEncoder.prototype.encode(string)-
Encodes
stringinto aUint8Arraywith UTF-8 encoded text. TextEncoder.prototype.encodeInto(string,uint8Array)-
Encodes a
stringto UTF-8, puts the result into destinationUint8Array, and returns a dictionary object that shows the progress of the encoding. The dictionary object contains two members:read-
the number of UTF-16 units of code from the source
stringconverted to UTF-8 written-
the number of bytes modified in the destination
Uint8Array
timers
clearTimeout() |
setTimeout() |
clearTimeout(timeout)-
Cancels a
timeoutobject created bysetTimeout(). setTimeout(function,milliseconds[,argument1,argumentN])-
Calls a
functionafter a specified number ofmilliseconds. One or more optionalargumentscan be passed to the specified function. Returns atimeoutobject.function handler(v) { // ... } t = setTimeout(handler, 12); // ... clearTimeout(t);
Global functions
atob() |
btoa() |
atob(encodedData)-
Decodes a string of data which has been encoded
using
Base64encoding. TheencodedDataparameter is a binary string that contains Base64-encoded data. Returns a string that contains decoded data fromencodedData.The similar
btoa()method can be used to encode and transmit data which may otherwise cause communication problems, then transmit it and use theatob()method to decode the data again. For example, you can encode, transmit, and decode control characters such as ASCII values0through31.const encodedData = btoa("text to encode"); // encode a string const decodedData = atob(encodedData); // decode the string btoa(stringToEncode)-
Creates a Base64-encoded ASCII string from a binary string.
The
stringToEncodeparameter is a binary string to encode. Returns an ASCII string containing the Base64 representation ofstringToEncode.The method can be used to encode data which may otherwise cause communication problems, transmit it, then use the
atob()method to decode the data again. For example, you can encode control characters such as ASCII values0through31.const encodedData = btoa("text to encode"); // encode a string const decodedData = atob(encodedData); // decode the string
built-in modules
Buffer
Buffer.alloc(size[,fill[,encoding]]))-
Allocates a new Buffer of a specified
size. Iffillis not specified, the Buffer will be zero-filled. Iffillis specified, the allocated Buffer will be initialized by callingbuf.fill(fill). Iffillandencodingare specified, the allocated Buffer will be initialized by callingbuf.fill(fill, encoding).The
fillparameter may be astring,Buffer,Uint8Array, orinteger. Buffer.allocUnsafe(size)-
The same as
Buffer.alloc(), with the difference that the memory allocated for the buffer is not initialized, the contents of the new buffer is unknown and may contain sensitive data. Buffer.byteLength(value[,encoding])-
Returns the byte length of a specified value,
when encoded using
encoding. The value can be astring,Buffer,TypedArray,DataView, orArrayBuffer. If the value is astring, theencodingparameter is its encoding, can beutf8,hex,base64,base64url; by default isutf8. Buffer.compare(buffer1,buffer2)-
Compares
buffer1withbuffer2when sorting arrays of Buffer instances. Returns0ifbuffer1is the same asbuffer2,1ifbuffer2should come beforebuffer1when sorted, or-1ifbuffer2should come afterbuffer1when sorted. Buffer.concat(list[,totalLength])-
Returns a new Buffer
which is the result of concatenating all the Buffer instances in the list.
If there are no items in the list or the total length is 0,
a new zero-length Buffer is returned.
If
totalLengthis not specified, it is calculated from the Buffer instances in list by adding their lengths. IftotalLengthis specified, it is coerced to an unsigned integer. If the combined length of the Buffers in list exceedstotalLength, the result is truncated tototalLength. Buffer.from(array)-
Allocates a new Buffer using an array of bytes
in the range
0–255. Array entries outside that range will be truncated. Buffer.from(arrayBuffer,byteOffset[,length]])-
Creates a view of the
ArrayBufferwithout copying the underlying memory. The optionalbyteOffsetandlengtharguments specify a memory range within thearrayBufferthat will be shared by the Buffer. Buffer.from(buffer)- Copies the passed buffer data onto a new Buffer instance.
Buffer.from(object[,offsetOrEncoding[,length]])-
For objects whose
valueOf()function returns a value not strictly equal to object, returnsBuffer.from(object.valueOf(),offsetOrEncoding,length). Buffer.from(string[,encoding])-
Creates a new Buffer with a
string. Theencodingparameter identifies the character encoding to be used when converting a string into bytes. The encoding can beutf8,hex,base64,base64url; by default isutf8. Buffer.isBuffer(object)-
A boolean value,
returns
trueifobjectis a Buffer. Buffer.isEncoding(encoding)-
A boolean value,
returns
trueif encoding is the name of a supported character encoding. buffer[index]-
The index operator that can be used to get and set the octet
at position
indexinbuffer. The values refer to individual bytes, so the legal value range is between 0 and 255 (decimal). buf.buffer-
The underlying
ArrayBufferobject based on which this Buffer object is created. buf.byteOffset-
An integer,
specifying the
byteOffsetof the Buffers underlyingArrayBufferobject. buf.compare(target[,targetStart[,targetEnd[,sourceStart[,sourceEnd]]]])-
Compares buffer with
targetand returns a number indicating whether buffer comes before, after, or is the same astargetin sort order. Comparison is based on the actual sequence of bytes in each Buffer. ThetargetStartis an integer specifying the offset withintargetat which to begin comparison, by default is 0. ThetargetEndis an integer specifying the offset withintargetat which to end comparison, by default istarget.length. ThesourceStartis an integer specifying the offset within buffer at which to begin comparison, by default is 0. ThesourceEndis an integer specifying the offset within buffer at which to end comparison (not inclusive), by default isbuf.length. buf.copy(target[,targetStart[,sourceStart[,sourceEnd]]])-
Copies data from a region of buffer to a region in
target, even if the target memory region overlaps with buffer. Thetargetparameter is aBufferorUint8Arrayto copy into.The
targetStartis an integer specifying the offset within target at which to begin writing, by default is 0. ThesourceStartis an integer specifying the offset within buffer from which to begin copying, by default is 0. ThesourceEndis an integer specifying the offset within buffer at which to stop copying (not inclusive) by default isbuf.length. buf.equals(otherBuffer)-
A boolean value,
returns
trueif both Buffer andotherBufferhave exactly the same bytes. buf.fill(value[,offset[,end]][,encoding])-
Fills the Buffer with the specified
value. If theoffsetandendare not specified, the entire Buffer will be filled. Thevalueis coerced touint32if it is not astring,Buffer, orinteger. If the resulting integer is greater than 255, the Buffer will be filled withvalueand 255. buf.includes(value[,byteOffset][,encoding])-
Equivalent to
buf.indexOf()!== -1, returnstrueif thevaluewas found in Buffer. buf.indexOf(value[,byteOffset][,encoding])-
Returns an integer which is the index of the first occurrence of
valuein Buffer, or-1if Buffer does not contain value. Thevaluecan be astringwith specifiedencoding(by defaultutf8),Buffer,Unit8Array, or a number between 0 and 255. buf.lastIndexOf(value[,byteOffset][,encoding])-
The same as
buf.indexOf(), except the last occurrence of thevalueis found instead of the first occurrence. Thevaluecan be a string, Buffer, or integer between 1 and 255. If thevalueis an empty string or empty Buffer,byteOffsetwill be returned. buf.length- Returns the number of bytes in Buffer.
buf.readIntBE(offset,byteLength)-
Reads the
byteLengthfrombufat the specifiedoffsetand interprets the result as a big-endian, two's complement signed value supporting up to 48 bits of accuracy. ThebyteLengthparameter is an integer between 1 and 6 specifying the number of bytes to read.The similar methods are also supported:
buf.readInt8([offset]),buf.readInt16BE([offset]),buf.readInt32BE([offset]). buf.readIntLE(offset,byteLength)-
Reads the
byteLengthfrombufat the specifiedoffsetand interprets the result as a little-endian, two's complement signed value supporting up to 48 bits of accuracy. ThebyteLengthparameter is an integer between 1 and 6 specifying the number of bytes to read.The similar methods are also supported:
buf.readInt8([offset]),buf.readInt16LE([offset]),buf.readInt32LE([offset]). buf.readUIntBE(offset,byteLength)-
Reads the
byteLengthfrombufat the specifiedoffsetand interprets the result as a big-endian integer supporting up to 48 bits of accuracy. ThebyteLengthparameter is an integer between 1 and 6 specifying the number of bytes to read.The similar methods are also supported:
buf.readUInt8([offset]),buf.readUInt16BE([offset]),buf.readUInt32BE([offset]). buf.readUIntLE(offset,byteLength)-
Reads the
byteLengthfrombufat the specifiedoffsetand interprets the result as a little-endian integer supporting up to 48 bits of accuracy. ThebyteLengthparameter is an integer between 1 and 6 specifying the number of bytes to read.The similar methods are also supported:
buf.readUInt8([offset]),buf.readUInt16LE([offset]),buf.readUInt32LE([offset]). buf.readDoubleBE([offset])-
Reads a 64-bit, big-endian double from
bufat the specifiedoffset. buf.readDoubleLE([offset])-
Reads a 64-bit, little-endian double from
bufat the specifiedoffset. buf.readFloatBE([offset])-
Reads a 32-bit, big-endian float from
bufat the specifiedoffset. buf.readFloatLE([offset])-
Reads a 32-bit, little-endian float from
bufat the specifiedoffset. buf.subarray([start[,end]])-
Returns a new
bufthat references the same memory as the original, but offset and cropped bystartandend. Ifendis greater thanbuf.length, the same result as that of end equal tobuf.lengthis returned. buf.slice([start[,end]])-
Returns a new
bufthat references the same memory as the original, but offset and cropped by thestartandendvalues. The method is not compatible with theUint8Array.prototype.slice(), which is a superclass of Buffer. To copy the slice, useUint8Array.prototype.slice(). buf.swap16()-
Interprets
bufas an array of unsigned 16-bit numbers and swaps the byte order in-place. Throws an error ifbuf.lengthis not a multiple of 2. buf.swap32()-
Interprets
bufas an array of unsigned 32-bit numbers and swaps the byte order in-place. Throws an error ifbuf.lengthis not a multiple of 4. buf.swap64()-
Interprets
bufas an array of 64-bit numbers and swaps byte order in-place. Throws an error ifbuf.lengthis not a multiple of 8. buf.toJSON()-
Returns a JSON representation of
buf.JSON.stringify()implicitly calls this function when stringifying a Buffer instance. buf.toString([encoding[,start[,end]]])-
Decodes
bufto a string according to the specified characterencodingwhich can beutf8,hex,base64,base64url. Thestartandendparameters may be passed to decode only a subset of Buffer. buf.write(string[,offset[,length]][,encoding])-
Writes a
stringtobufatoffsetaccording to the characterencoding. Thelengthparameter is the number of bytes to write. If Buffer did not contain enough space to fit the entire string, only part of string will be written, however, partially encoded characters will not be written. Theencodingcan beutf8,hex,base64,base64url. buf.writeIntBE(value,offset,byteLength)-
Writes
byteLengthbytes ofvaluetobufat the specifiedoffsetas big-endian. Supports up to 48 bits of accuracy. ThebyteLengthparameter is an integer between 1 and 6 specifying the number of bytes to read.The following similar methods are also supported:
buf.writeInt8,buf.writeInt16BE,buf.writeInt32BE. buf.writeIntLE(value,offset,byteLength)-
Writes
byteLengthbytes ofvaluetobufat the specifiedoffsetas little-endian. Supports up to 48 bits of accuracy. ThebyteLengthparameter is an integer between 1 and 6 specifying the number of bytes to read.The following similar methods are also supported:
buf.writeInt8,buf.writeInt16LE,buf.writeInt32LE. buf.writeUIntBE(value,offset,byteLength)-
Writes
byteLengthbytes ofvaluetobufat the specifiedoffsetas big-endian. Supports up to 48 bits of accuracy. ThebyteLengthparameter is an integer between 1 and 6 specifying the number of bytes to read.The following similar methods are also supported:
buf.writeUInt8,buf.writeUInt16BE,buf.writeUInt32BE. buf.writeUIntLE(value,offset,byteLength)-
Writes
byteLengthbytes ofvaluetobufat the specifiedoffsetas little-endian. Supports up to 48 bits of accuracy. ThebyteLengthparameter is an integer between 1 and 6 specifying the number of bytes to read.The following similar methods are also supported:
buf.writeUInt8,buf.writeUInt16LE,buf.writeUInt32LE. buf.writeDoubleBE(value, [offset])-
Writes the
valuetobufat the specifiedoffsetas big-endian. buf.writeDoubleLE(value, [offset])-
Writes the
valuetobufat the specifiedoffsetas little-endian. buf.writeFloatBE(value, [offset])-
Writes the
valuetobufat the specifiedoffsetas big-endian. buf.writeFloatLE(value, [offset])-
Writes the
valuetobufat the specifiedoffsetas little-endian.
Crypto
crypto.createHash() |
crypto.createHmac() |
Since 0.7.0, extended crypto API is available as a global crypto object.
The Crypto module provides cryptographic functionality support.
The Crypto module object is returned by require('crypto').
crypto.createHash(algorithm)-
Creates and returns a Hash object
that can be used to generate hash digests
using the given
algorithm. The algorithm can bemd5,sha1, andsha256. crypto.createHmac(algorithm,secret key)-
Creates and returns an HMAC object that uses
the given
algorithmandsecret key. The algorithm can bemd5,sha1, andsha256.
Hash
hash.update() |
hash.digest() |
hash.update(data)-
Updates the hash content with the given
data. hash.digest([encoding])-
Calculates the digest of all of the data passed using
hash.update(). The encoding can behex,base64, andbase64url. If encoding is not provided, a Buffer object (0.4.4) is returned.Before version (0.4.4), a byte string was returned instead of a Buffer object.
hash.copy()- Makes a copy of the current state of the hash (since 0.7.12).
>> var cr = require('crypto')
undefined
>> cr.createHash('sha1').update('A').update('B').digest('base64url')
'BtlFlCqiamG-GMPiK_GbvKjdK10'
HMAC
hmac.update() |
hmac.digest() |
hmac.update(data)-
Updates the HMAC content with the given
data. hmac.digest([encoding])-
Calculates the HMAC digest of all of the data passed using
hmac.update(). The encoding can behex,base64, andbase64url. If encoding is not provided, a Buffer object (0.4.4) is returned.Before version 0.4.4, a byte string was returned instead of a Buffer object.
>> var cr = require('crypto')
undefined
>> cr.createHmac('sha1', 'secret.key').update('AB').digest('base64url')
'Oglm93xn23_MkiaEq_e9u8zk374'
File System
fs.Dirent |
fs.FileHandle |
fs.Stats |
File Access Constants |
File System Flags |
The File System module provides operations with files.
The module object is returned by require('fs').
Since 0.3.9,
promissified versions of file system methods are available through
require('fs').promises object:
> var fs = require('fs').promises;
undefined
> fs.readFile("/file/path").then((data)=>console.log(data))
<file data>
accessSync(path[,mode])-
Synchronously tests permissions for a file or directory
specified in the
path(0.3.9). If the check fails, an error will be returned, otherwise, the method will return undefined.mode-
an optional integer
that specifies the accessibility checks to be performed,
by default is
fs.constants.F_OKtry { fs.accessSync('/file/path', fs.constants.R_OK | fs.constants.W_OK); console.log('has access'); } catch (e) { console.log('no access');) }
appendFileSync(filename,data[,options])-
Synchronously appends specified
datato a file with providedfilename. Thedatais expected to be a string or a Buffer object (0.4.4). If the file does not exist, it will be created. Theoptionsparameter is expected to be an object with the following keys:mode-
mode option, by default is
0o666 flag-
file system flag,
by default is
a
closeSync(fd)-
Closes the
fdfile descriptor represented by an integer used by the method. Returnsundefined. existsSync(path)-
Boolean value, returns
trueif the specifiedpathexists. (0.8.2) fstatSync(fd)-
Retrieves the
fs.Statsobject for the file descriptor (0.7.7). Thefdparameter is an integer representing the file descriptor used by the method. lstatSync(path[,options])-
Synchronously retrieves
the
fs.Statsobject for the symbolic link referred to bypath(0.7.1). Theoptionsparameter is expected to be an object with the following keys:throwIfNoEntry-
a boolean value which indicates
whether an exception is thrown if no file system entry exists,
rather than returning
undefined, by default isfalse.
mkdirSync(path[,options])-
Synchronously creates a directory at the specified
path(0.4.2). Theoptionsparameter is expected to be anintegerthat specifies the mode, or an object with the following keys:mode-
mode option, by default is
0o777.
openSync(path[,flags[,mode]])-
Returns an integer
representing the file descriptor for the opened file
path(0.7.7).flags-
file system flag,
by default is
r mode-
mode option, by default is
0o666
promises.open(path[,flags[,mode]])-
Returns a
FileHandleobject representing the opened filepath(0.7.7).flags-
file system flag,
by default is
r mode-
mode option, by default is
0o666
readdirSync(path[,options])-
Synchronously reads the contents of a directory
at the specified
path(0.4.2). Theoptionsparameter is expected to be a string that specifies encoding or an object with the following keys: readFileSync(filename[,options])-
Synchronously returns the contents of the file
with provided
filename. Theoptionsparameter holdsstringthat specifies encoding. If an encoding is specified, a string is returned, otherwise, a Buffer object (0.4.4) is returned.Before version 0.4.4, a byte string was returned if encoding was not specified.
Otherwise,optionsis expected to be an object with the following keys:encoding-
encoding, by default is not specified.
The encoding can be
utf8,hex(0.4.4),base64(0.4.4),base64url(0.4.4). flag-
file system flag,
by default is
r
>> var fs = require('fs') undefined >> var file = fs.readFileSync('/file/path.tar.gz') undefined >> var gzipped = file.slice(0,2).toString('hex') === '1f8b'; gzipped true readlinkSync(path[,options])-
Synchronously gets the contents of the symbolic link
pathusing readlink(2) (0.8.7). Theoptionsargument can be a string specifying an encoding, or an object withencodingproperty specifying the character encoding to use. If theencodingisbuffer, the result is returned as aBufferobject, otherwise as a string. readSync(fd,buffer,offset[,length[,position]])-
Reads the content of a file path using file descriptor
fd, returns the number of bytes read (0.7.7).buffer-
the
buffervalue can be aBuffer,TypedArray, orDataView offset-
is an
integerrepresenting the position in buffer to write the data to length-
is an
integerrepresenting the number of bytes to read position-
specifies where to begin reading from in the file,
the value can be
integerornull, by default isnull. Ifpositionisnull, data will be read from the current file position, and the file position will be updated. If position is aninteger, the file position will be unchanged
realpathSync(path[,options])-
Synchronously computes the canonical pathname by resolving
.,..and symbolic links using realpath(3). Theoptionsargument can be a string specifying an encoding, or an object with an encoding property specifying the character encoding to use for the path passed to the callback (0.3.9). renameSync(oldPath,newPath)-
Synchronously changes the name or location of a file from
oldPathtonewPath(0.3.4).>> var fs = require('fs') undefined >> var file = fs.renameSync('hello.txt', 'HelloWorld.txt') undefined rmdirSync(path)-
Synchronously removes a directory at the specified
path(0.4.2). statSync(path,[options])-
Synchronously retrieves
the
fs.Statsobject for the specifiedpath(0.7.1). Thepathcan be astringorbuffer. Theoptionsparameter is expected to be an object with the following keys:throwIfNoEntry-
a boolean value which indicates whether
an exception is thrown if no file system entry exists
rather than returning
undefined, by default istrue.
symlinkSync(target,path)-
Synchronously creates the link called
pathpointing totargetusing symlink(2) (0.3.9). Relative targets are relative to the link’s parent directory. unlinkSync(path)-
Synchronously unlinks a file by
path(0.3.9). writeFileSync(filename,data[,options])-
Synchronously writes
datato a file with providedfilename. Thedatais expected to be a string or a Buffer object (0.4.4). If the file does not exist, it will be created, if the file exists, it will be replaced. Theoptionsparameter is expected to be an object with the following keys:mode-
mode option, by default is
0o666 flag-
file system flag,
by default is
w
>> var fs = require('fs') undefined >> var file = fs.writeFileSync('hello.txt', 'Hello world') undefined writeSync(fd,buffer,offset[,length[,position]])-
Writes a buffer to a file using file descriptor,
returns the
numberof bytes written (0.7.7).fd-
an
integerrepresenting the file descriptor buffer-
the
buffervalue can be aBuffer,TypedArray, orDataView offset-
is an
integerthat determines the part of the buffer to be written, by default0 length-
is an
integerspecifying the number of bytes to write, by default is an offset of Buffer.byteLength position-
refers to the offset from the beginning of the file
where this data should be written,
can be an
integerornull, by default isnull. See also pwrite(2).
writeSync(fd,string[,position[,encoding]])-
Writes a
stringto a file using file descriptorfd, returns thenumberof bytes written (0.7.7).fd-
is an
integerrepresenting a file descriptor position-
refers to the offset from the beginning of the file
where this data should be written,
can be an
integerornull, by default isnull. See also pwrite(2) encoding-
is a
string, by default isutf8
fs.Dirent
fs.Dirent is a representation of a directory entry —
a file or a subdirectory.
When
readdirSync()
is called with the
withFileTypes
option,
the resulting array contains fs.Dirent objects.
-
dirent.isBlockDevice()— returnstrueif thefs.Direntobject describes a block device. -
dirent.isCharacterDevice()— returnstrueif thefs.Direntobject describes a character device. -
dirent.isDirectory()— returnstrueif thefs.Direntobject describes a file system directory. -
dirent.isFIFO()— returnstrueif thefs.Direntobject describes a first-in-first-out (FIFO) pipe. -
dirent.isFile()— returnstrueif thefs.Direntobject describes a regular file. -
dirent.isSocket()— returnstrueif thefs.Direntobject describes a socket. -
dirent.isSymbolicLink()— returnstrueif thefs.Direntobject describes a symbolic link. -
dirent.name— the name of the filefs.Direntobject refers to.
fs.FileHandle
filehandle.close() |
filehandle.fd |
filehandle.read() |
filehandle.stat() |
filehandle.write( |
filehandle.write( |
The FileHandle object is an object wrapper
for a numeric file descriptor
(0.7.7).
Instances of the FileHandle object are created by the
fs.promises.open() method.
If a FileHandle is not closed using the
filehandle.close() method,
it will try to automatically close the file descriptor,
helping to prevent memory leaks.
Please do not rely on this behavior because it can be unreliable.
Instead, always explicitly close a FileHandle.
filehandle.close()-
Closes the file handle after waiting for any pending operation on the handle
to complete.
Returns a
promise, fulfills with undefined upon success. filehandle.fd-
The numeric file descriptor
managed by the
FileHandleobject. filehandle.read(buffer,offset[,length[,position]])-
Reads data from the file and stores that in the given buffer.
buffer-
a buffer that will be filled with the file data read,
the value can be a
Buffer,TypedArray, orDataView offset-
is an
integerrepresenting the location in the buffer at which to start filling length-
is an
integerrepresenting the number of bytes to read position-
the location where to begin reading data from the file,
the value can be
integer,null. Ifnull, data will be read from the current file position and the position will be updated. If position is aninteger, the current file position will remain unchanged.
Promisewhich fulfills upon success with an object with two properties:bytesRead-
is an
integerrepresenting the number of bytes read buffer-
is a reference to the passed argument in buffer, can be
Buffer,TypedArray, orDataView
filehandle.stat()-
Fulfills with an
fs.Stats for the file,
returns a
promise. filehandle.write(buffer,offset[,length[,position]])-
Writes a buffer to the file.
buffer-
the
buffervalue can be aBuffer,TypedArray, orDataView offset-
is an
integerrepresenting the start position from within buffer where the data to write begins length-
is an
integerrepresenting the number of bytes from buffer to write, by default is an offset of Buffer.byteLength position-
the offset from the beginning of the file
where the data from buffer should be written,
can be an
integerornull, by default isnull. Ifpositionis not anumber, the data will be written at the current position. See the POSIX pwrite(2) documentation for details.
Promisewhich is resolved with an object containing two properties:bytesWritten-
is an
integerrepresenting the number of bytes written buffer-
a reference to the buffer written, can be a
Buffer,TypedArray, orDataView
It is unsafe to use
filehandle.write()multiple times on the same file without waiting for the promise to be resolved or rejected. filehandle.write(string[,position[,encoding]])-
Writes a
stringto the file.position-
the offset from the beginning of the file
where the data from buffer should be written,
can be an
integerornull, by default isnull. Ifpositionis not anumber, the data will be written at the current position. See the POSIX pwrite(2) documentation for details. encoding-
the expected encoding of the string, by default
utf8
Promisewhich is resolved with an object containing two properties:bytesWritten-
is an
integerrepresenting the number of bytes written buffer-
a reference to the buffer written, can be a
Buffer,TypedArray, orDataView
It is unsafe to use
filehandle.write()multiple times on the same file without waiting for the promise to be resolved or rejected.
fs.Stats
The fs.Stats object provides information about a file.
The object is returned from
fs.statSync() and
fs.lstatSync().
-
stats.isBlockDevice()— returnstrueif thefs.Statsobject describes a block device. -
stats.isDirectory()— returnstrueif thefs.Statsobject describes a file system directory. -
stats.isFIFO()— returnstrueif thefs.Statsobject describes a first-in-first-out (FIFO) pipe. -
stats.isFile()— returnstrueif thefs.Statsobject describes a regular file. -
stats.isSocket()— returnstrueif thefs.Statsobject describes a socket. -
stats.isSymbolicLink()— returnstrueif thefs.Statsobject describes a symbolic link. -
stats.dev— the numeric identifier of the device containing the file. -
stats.ino— the file system specificInodenumber for the file. -
stats.mode— a bit-field describing the file type and mode. -
stats.nlink— the number of hard-links that exist for the file. -
stats.uid— the numeric user identifier of the user that owns the file (POSIX). -
stats.gid— the numeric group identifier of the group that owns the file (POSIX). -
stats.rdev— the numeric device identifier if the file represents a device. -
stats.size— the size of the file in bytes. -
stats.blksize— the file system block size for i/o operations. -
stats.blocks— the number of blocks allocated for this file. -
stats.atimeMs— the timestamp indicating the last time this file was accessed expressed in milliseconds since the POSIX Epoch. -
stats.mtimeMs— the timestamp indicating the last time this file was modified expressed in milliseconds since the POSIX Epoch. -
stats.ctimeMs— the timestamp indicating the last time this file was changed expressed in milliseconds since the POSIX Epoch. -
stats.birthtimeMs— the timestamp indicating the creation time of this file expressed in milliseconds since the POSIX Epoch. -
stats.atime— the timestamp indicating the last time this file was accessed. -
stats.mtime— the timestamp indicating the last time this file was modified. -
stats.ctime— the timestamp indicating the last time this file was changed. -
stats.birthtime— the timestamp indicating the creation time of this file.
File Access Constants
The access() method
can accept the following flags.
These flags are exported by fs.constants:
-
F_OK— indicates that the file is visible to the calling process, used by default if no mode is specified -
R_OK— indicates that the file can be read by the calling process -
W_OK— indicates that the file can be written by the calling process -
X_OK— indicates that the file can be executed by the calling process
File System Flags
The flag option can accept the following values:
-
a— open a file for appending. The file is created if it does not exist -
ax— the same asabut fails if the file already exists -
a+— open a file for reading and appending. If the file does not exist, it will be created -
ax+— the same asa+but fails if the file already exists -
as— open a file for appending in synchronous mode. If the file does not exist, it will be created -
as+— open a file for reading and appending in synchronous mode. If the file does not exist, it will be created -
r— open a file for reading. An exception occurs if the file does not exist -
r+— open a file for reading and writing. An exception occurs if the file does not exist -
rs+— open a file for reading and writing in synchronous mode. Instructs the operating system to bypass the local file system cache -
w— open a file for writing. If the file does not exist, it will be created. If the file exists, it will be replaced -
wx— the same aswbut fails if the file already exists -
w+— open a file for reading and writing. If the file does not exist, it will be created. If the file exists, it will be replaced -
wx+— the same asw+but fails if the file already exists
Query String
querystring.decode() |
querystring.encode() |
querystring.escape() |
querystring.parse() |
querystring.stringify() |
querystring.unescape() |
The Query String module provides support
for parsing and formatting URL query strings
(0.4.3).
The Query String module object is returned by
require('querystring').
querystring.decode()-
is an alias for
querystring.parse(). querystring.encode()-
is an alias for
querystring.stringify(). querystring.escape(string)-
Performs URL encoding of the given
string, returns an escaped query string. The method is used byquerystring.stringify()and should not be used directly. querystring.parse(string[,separator[,equal[,options]]])-
Parses the query string URL and returns an object.
The
separatorparameter is a substring for delimiting key and value pairs in the query string, by default is “&”.The
equalparameter is a substring for delimiting keys and values in the query string, by default is “=”.The
optionsparameter is expected to be an object with the following keys:decodeURIComponentfunction-
Function used
to decode percent-encoded characters in the query string,
by default is
querystring.unescape() maxKeysnumber-
the maximum number of keys to parse,
by default is
1000. The0value removes limitations for counting keys.
By default, percent-encoded characters within the query string are assumed to use the UTF-8 encoding, invalid UTF-8 sequences will be replaced with the
U+FFFDreplacement character.For example, for the following query string
'foo=bar&abc=xyz&abc=123'
the output will be:
{ foo: 'bar', abc: ['xyz', '123'] } querystring.stringify(object[,separator[,equal[,options]]])-
Serializes an object and returns a URL query string.
The
separatorparameter is a substring for delimiting key and value pairs in the query string, by default is “&”.The
equalparameter is a substring for delimiting keys and values in the query string, by default is “=”.The
optionsparameter is expected to be an object with the following keys:encodeURIComponentfunction-
The function to use when converting
URL-unsafe characters to percent-encoding in the query string,
by default is
querystring.escape().
By default, characters that require percent-encoding within the query string are encoded as UTF-8. If other encoding is required, then
encodeURIComponentoption should be specified.For example, for the following command
querystring.stringify({ foo: 'bar', baz: ['qux', 'quux'], 123: '' });the query string will be:
'foo=bar&baz=qux&baz=quux&123='
querystring.unescape(string)-
Performs decoding of URL percent-encoded characters of the
string, returns an unescaped query string. The method is used byquerystring.parse()and should not be used directly.
XML
xml.parse() |
xml.c14n() |
xml.exclusiveC14n() |
xml.serialize() |
xml.serializeToString() |
XMLDoc |
XMLNode |
XMLAttr |
The XML module allows working with XML documents
(since 0.7.10).
The XML module object is returned by
require('xml').
Example:
const xml = require("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)-
Parses a string or Buffer for an XML document,
returns an
XMLDocwrapper object representing the parsed XML document. c14n(root_node[,excluding_node])-
Canonicalizes
root_nodeand its children according to Canonical XML Version 1.1. Theroot_nodecan beXMLNodeorXMLDocwrapper object around XML structure. Returns Buffer object that contains canonicalized output.excluding_node- allows omitting from the output a part of the document
exclusiveC14n(root_node[,excluding_node[,withComments[,prefix_list]]])-
Canonicalizes
root_nodeand its children according to Exclusive XML Canonicalization Version 1.0.root_node-
is
XMLNodeorXMLDocwrapper object around XML structure excluding_node- allows omitting from the output a part of the document corresponding to the node and its children
withComments-
a boolean value,
falseby default. Iftrue, canonicalization corresponds to Exclusive XML Canonicalization Version 1.0. Returns Buffer object that contains canonicalized output. prefix_list- an optional string with a space separated namespace prefixes for namespaces that should also be included into the output
serialize()-
The same as
xml.c14n()(since 0.7.11). serializeToString()-
The same as
xml.c14n()except it returns the result as astring(since 0.7.11). XMLDoc-
An XMLDoc wrapper object around XML structure,
the root node of the document.
doc.$root- the document's root by its name or undefined
doc.abc-
the first root tag named
abcasXMLNodewrapper object
XMLNode-
An XMLNode wrapper object around XML tag node.
node.abc-
the same as
node.$tag$abc node.$attr$abc-
the node's attribute value of
abc, writable since 0.7.11 node.$attr$=abcxyz-
the same as
node.setAttribute('(since 0.7.11)abc',xyz) node.$attrs-
an
XMLAttrwrapper object for all attributes of the node node.$name- the name of the node
node.$ns- the namespace of the node
node.$parent- the parent node of the current node
node.$tag$abc-
the first child tag of the node named
abc, writable since 0.7.11 - an array of all children tags
-
the same as
node.removeChildren();node.addChild(;node1)node.addChild((since 0.7.11).node2) -
all children tags named
abcof the node, writable since 0.7.11 node.$text- the content of the node, writable since 0.7.11
node.$text = 'abc'-
the same as
node.setText('abc')(since 0.7.11) node.addChild(nd)-
adds XMLNode as a child to node
(since 0.7.11).
ndis recursively copied before adding to the node node.removeAllAttributes()- removes all attributes of the node (since 0.7.11)
node.removeAttribute(attr_name)-
removes the attribute named
attr_name(since 0.7.11) node.removeChildren(tag_name)-
removes all the children tags named
tag_name(since 0.7.11). Iftag_nameis absent, all children tags are removed node.removeText()- removes the node's text value (0.7.11)
node.setAttribute(attr_name,value)-
sets a value for an
attr_name(since 0.7.11). When the value isnull, the attribute namedattr_nameis deleted node.setText(value)-
sets a text value for the node
(since 0.7.11).
When the value is
null, the text of the node is deleted.
XMLAttr-
An XMLAttrs wrapper object around XML node attributes.
attr.abc-
the attribute value of
abc
zlib
zlib.deflateRawSync() |
zlib.deflateSync() |
zlib.inflateRawSync() |
zlib.inflateSync() |
The zlib module provides compression functionality using the
“deflate” and “inflate” algorithms
(since 0.7.12).
The zlib module object is returned by
require('zlib').
deflateRawSync(string|Buffer[,options])-
Compresses data using the “deflate” algorithm provided as a string or Buffer
and does not append a zlib header.
The buffer value can be a
Buffer,TypedArray, orDataView.Optionsis an optional object that contains zlib_options. Returns Buffer instance that contains the compressed data. deflateSync(string|Buffer[,options])-
Compresses data using the “deflate” algorithm provided as a string or Buffer.
The Buffer value can be a
Buffer,TypedArray, orDataView.Optionsis an optional object that contains zlib_options. Returns Buffer instance that contains the compressed data. inflateRawSync(string|Buffer)- Decompresses a raw stream by using the “deflate” algorithm. Returns Buffer instance that contains the decompressed data.
inflateSync(string|Buffer)- Decompresses a stream by using the “deflate” algorithm. Returns Buffer instance that contains the decompressed data.
zlib options
-
chunkSize— is an integer, by default is1024 -
dictionary— is aBuffer,TypedArray, orDataView. by default is empty -
level— is an integer, compression only, see zlib_compression_levels -
memLevel— is an integer from1to9, compression only -
strategy— is an integer, compression only, see zlib_compression_strategy -
windowBits— is an integer from-15to-9for raw data, from9to15for an ordinary stream
zlib compression levels
| Name | Description |
zlib.constants.Z_NO_COMPRESSION | no compression |
zlib.constants.Z_BEST_SPEED | fastest, produces the least compression |
zlib.constants.Z_DEFAULT_COMPRESSION | trade-off between speed and compression |
zlib.constants.Z_BEST_COMPRESSION | slowest, produces the most compression |
zlib compression strategy
| Name | Description |
zlib.constants.Z_FILTERED | Filtered strategy: for the data produced by a filter or predictor |
zlib.constants.Z_HUFFMAN_ONLY | Huffman-only strategy: only Huffman encoding, no string matching |
zlib.constants.Z_RLE | Run Length Encoding strategy: limit match distances to one, better compression of PNG image data |
zlib.constants.Z_FIXED | Fixed table strategy: prevents the use of dynamic Huffman codes, a simpler decoder for special applications |
zlib.constants.Z_DEFAULT_STRATEGY | Default strategy, suitable for general purpose compression |