リファレンス

nginxオブジェクト
     HTTPリクエスト
     ストリームセッション
     定期セッション
     ヘッダー
     リクエスト
     レスポンス
     ngx
     ngx.shared
組み込みオブジェクト
     コンソール
     crypto
     CryptoKey
     CryptoKeyPair
     njs
     process
     String
Web API
     テキストデコーダー
     テキストエンコーダー
タイマー
     グローバル関数
組み込みモジュール
     Buffer
     Crypto
     ファイルシステム
     クエリ文字列
     XML
     zlib

njsは、nginxの機能を拡張するためのオブジェクト、メソッド、プロパティを提供します。

このリファレンスには、ECMAScriptに準拠していないnjs固有のプロパティ、メソッド、モジュールのみが含まれています。ECMAScriptに準拠したnjsプロパティとメソッドの定義は、ECMAScript仕様にあります。すべてのnjsプロパティとメソッドのリストは、互換性にあります。

nginxオブジェクト

HTTPリクエスト

r.args{}
r.done()
r.error()
r.finish()
r.headersIn{}
r.headersOut{}
r.httpVersion
r.internal
r.internalRedirect()
r.log()
r.method
r.parent
r.remoteAddress
r.requestBody
r.requestBuffer
r.requestText
r.rawHeadersIn[]
r.rawHeadersOut[]
r.responseBody
r.responseBuffer
r.responseText
r.return()
r.send()
r.sendBuffer()
r.sendHeader()
r.setReturnValue()
r.status
r.subrequest()
r.uri
r.rawVariables{}
r.variables{}
r.warn()

HTTPリクエストオブジェクトは、ngx_http_js_moduleモジュールでのみ使用できます。0.8.5より前は、オブジェクトのすべての文字列プロパティはバイト文字列でした。

r.args{}
リクエスト引数オブジェクト。読み取り専用。

クエリ文字列はオブジェクトとして返されます。0.7.6以降、重複するキーは配列として返され、キーは大文字と小文字が区別され、キーと値の両方がパーセントデコードされます。

たとえば、クエリ文字列

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

は、r.argsとして次のように変換されます。

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

より高度な解析シナリオは、クエリ文字列モジュールと、$args変数で実現できます。例:

import qs from 'querystring';

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

引数オブジェクトは、r.argsへの最初のアクセス時に評価されます。たとえば、fooのように単一の引数のみが必要な場合、nginx変数を使用できます。

r.variables.arg_foo

ここで、nginx変数オブジェクトは、パーセントデコードせずに、大文字と小文字を区別せずに、指定されたキーの最初の値を返します。

r.argsを文字列に戻すには、クエリ文字列のstringifyメソッドを使用できます。

r.done()
この関数を呼び出した後、次のデータチャンクは、js_body_filterを呼び出すことなくクライアントに渡されます(0.5.2)。js_body_filter関数からのみ呼び出すことができます。
r.error(文字列)
文字列をログのerrorレベルでエラーログに書き込みます

nginxにはハードコードされた最大行長制限があるため、文字列の最初の2048バイトのみがログに記録できます。

r.finish()
クライアントへの応答の送信を終了します
r.headersIn{}
受信ヘッダーオブジェクト。読み取り専用。

Fooリクエストヘッダーには、headersIn.fooまたはheadersIn['Foo']という構文でアクセスできます。

「Authorization」、「Content-Length」、「Content-Range」、「Content-Type」、「ETag」、「Expect」、「From」、「Host」、「If-Match」、「If-Modified-Since」、「If-None-Match」、「If-Range」、「If-Unmodified-Since」、「Max-Forwards」、「Proxy-Authorization」、「Referer」、「Transfer-Encoding」、および「User-Agent」リクエストヘッダーには、1つのフィールド値しか持つことができません(0.4.1)。「Cookie」ヘッダーの重複するフィールド値はセミコロン(;)で区切られます。他のすべてのリクエストヘッダーの重複するフィールド値は、コンマで区切られます。

r.headersOut{}
メインリクエストの送信ヘッダーオブジェクト。書き込み可能。

r.headersOut{}サブリクエストの応答オブジェクトである場合、応答ヘッダーを表します。この場合、「Accept-Ranges」、「Connection」、「Content-Disposition」、「Content-Encoding」、「Content-Length」、「Content-Range」、「Date」、「Keep-Alive」、「Server」、「Transfer-Encoding」、「X-Accel-*」応答ヘッダーのフィールド値は省略できます。

「Foo」応答ヘッダーには、headersOut.fooまたはheadersOut['Foo']という構文でアクセスできます。

送信ヘッダーは、応答ヘッダーがクライアントに送信される前に設定する必要があります。そうしないと、ヘッダーの更新は無視されます。これは、r.headersOut{}

マルチ値応答ヘッダーのフィールド値(0.4.0)は、次の構文で設定できます。

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

ここで、出力は次のようになります

Foo: a
Foo: b

「Foo」応答ヘッダーの以前のすべてのフィールド値は削除されます。

「Content-Type」などの単一のフィールド値のみを受け入れる標準応答ヘッダーの場合、配列の最後の要素のみが有効になります。「Set-Cookie」応答ヘッダーのフィールド値は常に配列として返されます。「Age」、「Content-Encoding」、「Content-Length」、「Content-Type」、「ETag」、「Expires」、「Last-Modified」、「Location」、「Retry-After」応答ヘッダーの重複するフィールド値は無視されます。他のすべての応答ヘッダーの重複するフィールド値は、コンマで区切られます。

r.httpVersion
HTTPバージョン。読み取り専用
r.internal
内部ロケーションの場合、ブール値はtrueです。
r.internalRedirect(uri)
指定されたuriへの内部リダイレクトを実行します。uriが「@」プレフィックスで始まる場合、名前付きロケーションと見なされます。新しいロケーションでは、すべてのリクエスト処理が、通常のロケーションの場合はNGX_HTTP_SERVER_REWRITE_PHASEから、名前付きロケーションの場合はNGX_HTTP_REWRITE_PHASEから繰り返されます。その結果、名前付きロケーションへのリダイレクトは、client_max_body_size制限をチェックしません。詳細については、開発ガイドを参照してください。リダイレクトされたリクエストは内部になり、内部ロケーションにアクセスできます。実際のリダイレクトは、ハンドラーの実行が完了した後に発生します。

リダイレクト後、新しいnjs VMがターゲットロケーションで開始され、元のロケーションのVMは停止します。nginx変数の値は保持され、ターゲットロケーションに情報を渡すために使用できます。0.5.3以降、httpまたはstreamjs_varディレクティブで宣言された変数を使用できます。

0.7.4以降、このメソッドはエスケープされたURIを受け入れます。

r.log(文字列)
文字列をログのinfoレベルでエラーログに書き込みます

nginxにはハードコードされた最大行長制限があるため、文字列の最初の2048バイトのみがログに記録できます。

r.method
HTTPメソッド。読み取り専用
r.parent
親リクエストオブジェクトを参照します
r.remoteAddress
クライアントアドレス。読み取り専用
r.requestBody
このプロパティは、0.5.0で廃止され、0.8.0で削除されました。代わりにr.requestBufferまたはr.requestTextプロパティを使用する必要があります。
r.requestBuffer
クライアントリクエストボディが一時ファイルに書き込まれていない場合(0.5.0以降)。クライアントリクエストボディがメモリ内にあることを確認するには、そのサイズをclient_max_body_sizeで制限し、client_body_buffer_sizeを使用して十分なバッファーサイズを設定する必要があります。このプロパティは、js_contentディレクティブでのみ使用できます。
r.requestText
r.requestBufferと同じですが、文字列を返します。UTF-8エンコーディングで無効なバイトは置換文字に変換される可能性があることに注意してください。
r.rawHeadersIn[]
クライアントから受信したとおりに、キーと値のペアの配列を返します(0.4.1)。

たとえば、次のリクエストヘッダーを使用した場合

Host: localhost
Foo:  bar
foo:  bar2

r.rawHeadersInの出力は次のようになります。

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

すべてのfooヘッダーは、次の構文で収集できます。

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

出力は次のようになります

['bar', 'bar2']

ヘッダーフィールド名は小文字に変換されず、重複するフィールド値はマージされません。

r.rawHeadersOut[]
応答ヘッダーのキーと値のペアの配列を返します(0.4.1)。ヘッダーフィールド名は小文字に変換されず、重複するフィールド値はマージされません。
r.responseBody
このプロパティは、0.5.0で廃止され、0.8.0で削除されました。代わりに、r.responseBufferまたはr.responseTextプロパティを使用する必要があります。
r.responseBuffer
サブリクエスト応答ボディを保持します。読み取り専用(0.5.0以降)。r.responseBufferのサイズは、subrequest_output_buffer_sizeディレクティブによって制限されます。
r.responseText
r.responseBufferと同じですが、文字列を返します(0.5.0以降)。UTF-8エンコーディングで無効なバイトは置換文字に変換される可能性があることに注意してください。
r.return(ステータス[, 文字列 | Buffer])
指定されたステータスで応答全体をクライアントに送信します。応答は文字列またはBufferにすることができます(0.5.0)。

リダイレクトURL(コード301、302、303、307、および308の場合)または応答本文テキスト(その他のコードの場合)を2番目の引数として指定できます

r.send(文字列 | Buffer)
応答本文の一部をクライアントに送信します。送信されるデータは、文字列またはBufferにすることができます(0.5.0)。
r.sendBuffer(data[, options])
次のボディフィルターに転送されるデータチャンクのチェーンにデータを追加します(0.5.2)。実際の転送は、現在のチェーンのすべてのデータチャンクが処理された後で後で行われます。

データは、文字列またはBufferにすることができます。optionsは、受信データチャンクバッファーから派生したnginxバッファーフラグをオーバーライドするために使用されるオブジェクトです。フラグは、次のフラグでオーバーライドできます。

last
ブール値。バッファーが最後のバッファーの場合はtrue
flush
ブール値。バッファーにflushフラグがある必要がある場合はtrue

このメソッドは、js_body_filter関数からのみ呼び出すことができます。
r.sendHeader()
HTTPヘッダーをクライアントに送信します
r.setReturnValue()
js_setハンドラーの戻り値を設定します(0.7.0)。通常のreturnステートメントとは異なり、ハンドラーがJS非同期関数の場合はこのメソッドを使用する必要があります。例:
async function js_set(r) {
    const digest = await crypto.subtle.digest('SHA-256', r.headersIn.host);
    r.setReturnValue(digest);
}
r.status
ステータス。書き込み可能
r.subrequest(uri[, options[, callback]])
指定されたurioptionsでサブリクエストを作成し、オプションの完了callbackをインストールします。

サブリクエストは、クライアントリクエストと入力ヘッダーを共有します。元のヘッダーとは異なるヘッダーをプロキシサーバーに送信するには、proxy_set_headerディレクティブを使用できます。完全に新しいヘッダーセットをプロキシサーバーに送信するには、proxy_pass_request_headersディレクティブを使用できます。

optionsが文字列の場合、サブリクエスト引数文字列を保持します。それ以外の場合、optionsは次のキーを持つオブジェクトであると想定されます。

args
引数文字列。デフォルトでは空の文字列が使用されます。
body
リクエストボディ。デフォルトでは、親リクエストオブジェクトのリクエストボディが使用されます。
method
HTTPメソッド。デフォルトではGETメソッドが使用されます。
分離(detached)
booleanフラグ(0.3.9)。trueの場合、作成されたサブリクエストは分離されたサブリクエストです。分離されたサブリクエストへの応答は無視されます。通常のサブリクエストとは異なり、分離されたサブリクエストは変数ハンドラ内で作成できます。detachedフラグとコールバック引数は相互に排他的です。

完了callbackは、親リクエストオブジェクトと同じメソッドとプロパティを持つサブリクエスト応答オブジェクトを受け取ります。

0.3.8以降、callbackが提供されない場合、サブリクエスト応答オブジェクトに解決されるPromiseオブジェクトが返されます。

たとえば、サブリクエスト内のすべての応答ヘッダーを表示するには、次のようにします。

async function handler(r) {
    const reply = await r.subrequest('/path');

    for (const h in reply.headersOut) {
        r.log(`${h}: ${reply.headersOut[h]}`);
    }

    r.return(200);
}

r.uri
リクエスト内の現在のURI正規化済み、読み取り専用
r.rawVariables{}
nginxの変数(Bufferとして)、書き込み可能(0.5.0以降)
r.variables{}
nginx変数オブジェクト、書き込み可能(0.2.8以降)。

たとえば、$foo変数を取得するには、次のいずれかの構文を使用できます。

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

0.8.6以降、次の構文を使用して正規表現キャプチャにアクセスできます。

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

nginxは、nginx.confで参照される変数と参照されない変数を異なる方法で扱います。変数が参照されている場合、キャッシュ可能である可能性がありますが、参照されていない場合は常にキャッシュできません。たとえば、$request_id変数がnjsからのみアクセスされる場合、評価されるたびに新しい値になります。ただし、$request_idが参照されている場合、たとえば

proxy_set_header X-Request-Id $request_id;

r.variables.request_idは毎回同じ値を返します。

変数が書き込み可能なのは、次のいずれかの場合です。

  • httpまたはstream0.5.3以降)に対してjs_varディレクティブを使用して作成された場合
  • nginx構成ファイルで参照されている場合

それでも、一部の組み込み変数には値を割り当てることができません(たとえば、$http_)。

r.warn(string)
ログのwarningレベルでエラーログにstringを書き込みます

nginxにはハードコードされた最大行長制限があるため、文字列の最初の2048バイトのみがログに記録できます。

ストリームセッション

s.allow()
s.decline()
s.deny()
s.done()
s.error()
s.log()
s.off()
s.on()
s.remoteAddress
s.rawVariables{}
s.send()
s.sendDownstream()
s.sendUpstream()
s.status
s.setReturnValue()
s.variables{}
s.warn()

ストリームセッションオブジェクトは、ngx_stream_js_moduleモジュールでのみ使用可能です。0.8.5より前は、オブジェクトのすべての文字列プロパティはバイト文字列でした。

s.allow()
s.done(0)のエイリアス(0.2.4
s.decline()
s.done(-5)のエイリアス(0.2.4
s.deny()
s.done(403)のエイリアス(0.2.4
s.done([code]))
現在のフェーズハンドラの終了codeをコード値に設定します。デフォルトは0です。実際の終了処理は、jsハンドラが完了し、ngx.fetch()setTimeout()などからの保留中のイベントがすべて処理されたときに行われます(0.2.4)。

可能なコード値

  • 0 — 正常な終了処理。制御を次のフェーズに渡します。
  • -5 — 未決定。制御を現在のフェーズの次のハンドラ(存在する場合)に渡します。
  • 403 — アクセスが禁止されています。

フェーズハンドラ関数:js_accessまたはjs_prereadからのみ呼び出すことができます。
s.error(string)
送信されたstringをログのerrorレベルでエラーログに書き込みます

nginxにはハードコードされた最大行長制限があるため、文字列の最初の2048バイトのみがログに記録できます。

s.log(string)
送信されたstringをログのinfoレベルでエラーログに書き込みます

nginxにはハードコードされた最大行長制限があるため、文字列の最初の2048バイトのみがログに記録できます。

s.off(eventName)
s.on()メソッドで設定されたコールバックの登録を解除します(0.2.4
s.on(event, callback)
指定されたeventcallbackを登録します(0.2.4)。

eventは、次のいずれかの文字列です。

upload
クライアントからの新しいデータ(文字列)
ダウンロード
クライアントへの新しいデータ(文字列)
upstream
クライアントからの新しいデータ(Buffer)(0.5.0以降)
downstream
クライアントへの新しいデータ(Buffer)(0.5.0以降)

完了コールバックには次のプロトタイプがあります:callback(data, flags)。ここで、dataは文字列またはBuffer(イベントの種類によって異なります)、flagsは次のプロパティを持つオブジェクトです。

last
boolean値。データが最後のバッファの場合はtrue。

s.remoteAddress
クライアントアドレス。読み取り専用
s.rawVariables
nginxの変数(Bufferとして)、書き込み可能(0.5.0以降)
s.send(data[, options])
順方向(ダウンロードコールバックの場合はクライアントへ、アップロードの場合はアップストリームサーバーへ)に転送されるデータチャンクのチェーンにデータを追加します(0.2.4)。実際の転送は、現在のチェーンのすべてのデータチャンクが処理された後に行われます。

データは文字列またはBufferにすることができます(0.5.0)。optionsは、受信データチャンクバッファから派生したnginxバッファフラグをオーバーライドするために使用されるオブジェクトです。フラグは、次のフラグでオーバーライドできます。

last
ブール値。バッファーが最後のバッファーの場合はtrue
flush
ブール値。バッファーにflushフラグがある必要がある場合はtrue

このメソッドは、コールバックの呼び出しごとに複数回呼び出すことができます。
s.sendDownstream()
s.send()と同一ですが、常にクライアントにデータを送信します(0.7.8以降)。
s.sendUpstream()
s.send()と同一ですが、常にクライアントからデータを送信します(0.7.8以降)。
s.status
セッションステータスコード。$status変数のエイリアスで、読み取り専用です(0.5.2以降)。
s.setReturnValue(value)
js_setハンドラの戻り値を設定します(0.7.0)。通常のreturn文とは異なり、このメソッドはハンドラがJS非同期関数の場合に使用する必要があります。例えば、
async function js_set(r) {
    const digest = await crypto.subtle.digest('SHA-256', r.headersIn.host);
    r.setReturnValue(digest);
}
s.variables{}
nginx変数オブジェクト、書き込み可能(0.2.8以降)。変数が書き込み可能になるのは、nginx構成ファイルで参照されている場合のみです。それでも、一部の組み込み変数には値を割り当てることができません。
s.warn(string)
送信されたstringをログのwarningレベルでエラーログに書き込みます

nginxにはハードコードされた最大行長制限があるため、文字列の最初の2048バイトのみがログに記録できます。

定期セッション

PeriodicSession.rawVariables{}
PeriodicSession.variables{}

Periodic Sessionオブジェクトは、httpおよびstreamjs_periodicハンドラの最初の引数として提供されます(0.8.1以降)。

PeriodicSession.rawVariables{}
nginxの変数(Bufferとして)、書き込み可能。
PeriodicSession.variables{}
nginx変数オブジェクト、書き込み可能。

ヘッダー

Headers()
Headers.append()
Headers.delete()
Headers.get()
Headers.getAll()
Headers.forEach()
Headers.has()
Headers.set()

Fetch APIHeadersインターフェースは、0.5.1以降で使用可能です。

新しいHeadersオブジェクトは、Headers()コンストラクタを使用して作成できます(0.7.10以降)。

Headers([init])
init
Headersオブジェクトに事前にデータを設定するためのHTTPヘッダーを含むオブジェクト。string、名前と値のペアのarray、または既存のHeadersオブジェクトにすることができます。

新しいHeadersオブジェクトは、次のプロパティとメソッドで作成できます。

append()
Headersオブジェクト内の既存のヘッダーに新しい値を追加するか、ヘッダーが存在しない場合はヘッダーを追加します(0.7.10以降)。
delete()
Headersオブジェクトからヘッダーを削除します(0.7.10以降)。
get()
指定された名前のすべてのヘッダーの値をカンマとスペースで区切って含む文字列を返します。
getAll(name)
指定された名前のすべてのヘッダーの値を含む配列を返します。
forEach()
Headersオブジェクト内の各キーと値のペアに対して、指定された関数を一度実行します(0.7.10以降)。
has()
指定された名前のヘッダーが存在するかどうかを示すboolean値を返します。
set()
Headersオブジェクト内の既存のヘッダーの新しい値を設定するか、ヘッダーが存在しない場合はヘッダーを追加します(0.7.10以降)。

リクエスト

Request()
Request.arrayBuffer()
Request.bodyUsed
Request.cache
Request.credentials
Request.headers
Request.json()
Request.method
Request.mode
Request.text()
Request.url

Fetch APIRequestインターフェースは、0.7.10以降で使用可能です。

新しいRequestオブジェクトは、Request()コンストラクタを使用して作成できます

Request[resource[, options]]
ngx.fetch()に後で渡すことができるフェッチ用のRequestオブジェクトを作成します。resourceはURLまたは既存のRequestオブジェクトにすることができます。optionsは、次のキーを持つオブジェクトであると予想されるオプションの引数です。
body
リクエストボディ。デフォルトでは空です。
headers
応答ヘッダーオブジェクト — Headersオブジェクトに事前にデータを設定するためのHTTPヘッダーを含むオブジェクト。string、名前と値のペアのarray、または既存のHeadersオブジェクトにすることができます。
method
HTTPメソッド。デフォルトではGETメソッドが使用されます。

新しいRequestオブジェクトは、次のプロパティとメソッドで作成できます。

arrayBuffer()
ArrayBufferで解決されるPromiseを返します。
bodyUsed
リクエストでボディが使用された場合はtrueのboolean値。
cache
リクエストのキャッシュモードが含まれます。
credentials
リクエストの資格情報が含まれます。デフォルトはsame-originです。
headers
Requestに関連付けられたHeaders読み取り専用オブジェクト。
json()
リクエストボディをJSONとして解析した結果で解決されるPromiseを返します。
method
リクエストメソッドが含まれます。
mode
リクエストのモードが含まれます。
text()
リクエストボディの文字列表現で解決されるPromiseを返します。
url
リクエストのURLが含まれます。

レスポンス

Response()
Response.arrayBuffer()
Response.bodyUsed
Response.headers
Response.json()
Response.ok
Response.redirected
Response.status
Response.statusText
Response.text()
Response.type
Response.url

Responseインターフェースは、0.5.1以降で使用可能です。

新しいResponseオブジェクトは、Response()コンストラクタを使用して作成できます(0.7.10以降)

Response[body[, options]]
Responseオブジェクトを作成します。bodyはオプションの引数で、stringまたはbufferにすることができ、デフォルトはnullです。optionsは、次のキーを持つオブジェクトであると予想されるオプションの引数です。
headers
応答ヘッダーオブジェクト — Headersオブジェクトに事前にデータを設定するためのHTTPヘッダーを含むオブジェクト。string、名前と値のペアのarray、または既存のHeadersオブジェクトにすることができます。
status
応答のステータスコード。
statusText
ステータスコードに対応するステータスメッセージ。

新しいResponse()オブジェクトは、次のプロパティとメソッドを使用して作成できます。

arrayBuffer()
Responseストリームを受け取り、完了まで読み込みます。ArrayBufferで解決されるPromiseを返します。
bodyUsed
ボディが読み込まれた場合はtrueとなるブール値。
headers
Responseに関連付けられた読み取り専用のHeadersオブジェクト。
json()
Responseストリームを受け取り、完了まで読み込みます。ボディテキストをJSONとして解析した結果で解決されるPromiseを返します。
ok
レスポンスが成功した場合(ステータスコードが200〜299の場合)はtrueとなるブール値。
redirected
レスポンスがリダイレクトの結果である場合はtrueとなるブール値。
status
応答のステータスコード。
statusText
ステータスコードに対応するステータスメッセージ。
text()
Responseストリームを受け取り、完了まで読み込みます。文字列で解決されるPromiseを返します。
type
レスポンスのタイプ。
url
レスポンスのURL。

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

ngxグローバルオブジェクトは0.5.0以降で利用可能です。

ngx.build
オプションのnginxビルド名を含む文字列で、--build=name引数に対応します。configureスクリプトの引数に対応し、デフォルトは""です(0.8.0)。
ngx.conf_file_path
現在のnginx設定ファイルへのファイルパスを含む文字列です(0.8.0)。
ngx.conf_prefix
nginx設定プレフィックスへのファイルパスを含む文字列です。これは、nginxが現在設定を探しているディレクトリです(0.7.8)。
ngx.error_log_path
現在のエラーログファイルへのファイルパスを含む文字列です(0.8.0)。
ngx.fetch(resource, [options])

resource (0.5.1) を取得するためのリクエストを行います。これはURLまたはRequestオブジェクト(0.7.10)にすることができます。Responseオブジェクトで解決されるPromiseを返します。0.7.0以降、https://スキームがサポートされ、リダイレクトは処理されません。

resourceのURLがドメイン名として指定されている場合、リゾルバーを使用して決定されます。https://スキームが指定されている場合、resourceのHTTPSサーバーの認証のために、js_fetch_trusted_certificateディレクティブを設定する必要があります。

optionsパラメータは、次のキーを持つオブジェクトであると想定されます。

body
リクエストボディ。デフォルトは空です。
buffer_size
レスポンスを読み込むためのバッファサイズ。デフォルトは4096です。
headers
リクエストヘッダーオブジェクト
max_response_body_size
レスポンスボディの最大サイズ(バイト単位)。デフォルトは32768です。
method
HTTPメソッド。デフォルトではGETメソッドが使用されます。
verify
HTTPSサーバー証明書の検証を有効または無効にします。デフォルトはtrueです(0.7.0)。

let reply = await ngx.fetch('https://nginx.dokyumento.jp/');
let body = await reply.text();

r.return(200, body);

ngx.log(level, message)
指定されたログレベルでエラーログにメッセージを書き込みます。levelパラメータはログレベルの1つを指定し、messageパラメータは文字列またはBufferにすることができます。指定できるログレベルは、ngx.INFOngx.WARN、およびngx.ERRです。

nginxにはハードコードされた最大行長制限があるため、文字列の最初の2048バイトのみがログに記録できます。

ngx.prefix
nginxプレフィックスへのファイルパスを含む文字列です。これはサーバーファイルを保持するディレクトリです(0.8.0)。
ngx.version
nginxバージョンを含む文字列です。例: 1.25.0 (0.8.0)。
ngx.version_number
nginxバージョンを含む数値です。例: 1025000 (0.8.0)。
ngx.worker_id
nginx内部のワーカーIDに対応する数値で、値は0からworker_processesディレクティブで指定された値の間です(0.8.0)。

ngx.shared

ngx.sharedグローバルオブジェクトは、0.8.0以降で使用可能です。

SharedDict

ngx.shared.SharedDict.add()
ngx.shared.SharedDict.capacity
ngx.shared.SharedDict.clear()
ngx.shared.SharedDict.delete()
ngx.shared.SharedDict.freeSpace()
ngx.shared.SharedDict.get()
ngx.shared.SharedDict.has()
ngx.shared.SharedDict.incr()
ngx.shared.SharedDict.items()
ngx.shared.SharedDict.keys()
ngx.shared.SharedDict.name
ngx.shared.SharedDict.pop()
ngx.shared.SharedDict.replace()
ngx.shared.SharedDict.set()
ngx.shared.SharedDict.size()
ngx.shared.SharedDict.type

共有辞書オブジェクトは、0.8.0以降で使用可能です。共有辞書の名前、タイプ、サイズは、httpまたはstreamjs_shared_dict_zoneディレクティブで設定されます。

SharedDict()オブジェクトには、次のプロパティとメソッドがあります。

ngx.shared.SharedDict.add(key, value [,timeout])
キーがまだ存在しない場合にのみ、指定されたkeyvalueを辞書に設定します。keyは、追加する項目のキーを表す文字列で、valueは追加する項目の値です。

オプションのtimeout引数はミリ秒単位で指定され、httpまたはstreamjs_shared_dict_zoneディレクティブのtimeoutパラメータをオーバーライドします(0.8.5以降)。一部のキーに固有のタイムアウトを設定する必要がある場合に便利です。

値がSharedDict辞書に正常に追加された場合はtrueを返し、キーが既に辞書に存在する場合はfalseを返します。SharedDict辞書に十分な空き領域がない場合はSharedMemoryErrorをスローします。valueがこの辞書で想定されるタイプと異なる場合はTypeErrorをスローします。

ngx.shared.SharedDict.capacity
SharedDict辞書の容量を返します。これは、httpまたはstreamjs_shared_dict_zoneディレクティブのsizeパラメータに対応します。
ngx.shared.SharedDict.clear()
SharedDict辞書からすべての項目を削除します。
ngx.shared.SharedDict.delete(key)
指定されたキーに関連付けられた項目をSharedDict辞書から削除します。辞書に項目が存在し、削除された場合はtrueを返し、それ以外の場合はfalseを返します。
ngx.shared.SharedDict.freeSpace()
空きページサイズをバイト単位で返します。サイズがゼロの場合でも、占有されているページに空きがある場合は、SharedDict辞書は新しい値を受け入れます。
ngx.shared.SharedDict.get(key)
keyによって項目を取得し、keyに関連付けられた値を返します。存在しない場合はundefinedを返します。
ngx.shared.SharedDict.has(key)
keyで項目を検索し、そのような項目が存在する場合はtrueを返し、それ以外の場合はfalseを返します。
ngx.shared.SharedDict.incr(key,delta[[,init], timeout]])
keyに関連付けられた整数値をdeltaでインクリメントします。keyは文字列、deltaは値をインクリメントまたはデクリメントする数値です。キーが存在しない場合、項目はオプションのinit引数で初期化されます。デフォルトは0です。

オプションのtimeout引数はミリ秒単位で指定され、httpまたはstreamjs_shared_dict_zoneディレクティブのtimeoutパラメータをオーバーライドします(0.8.5以降)。一部のキーに固有のタイムアウトを設定する必要がある場合に便利です。

新しい値を返します。SharedDict辞書に十分な空き領域がない場合は、SharedMemoryErrorをスローします。この辞書が数値を想定していない場合は、TypeErrorをスローします。

このメソッドは、辞書のタイプがhttpまたはstreamjs_shared_dict_zoneディレクティブのtype=numberパラメータで宣言されている場合にのみ使用できます。

ngx.shared.SharedDict.items([maxCount])
SharedDict辞書のキーと値の項目の配列を返します(0.8.1以降)。maxCountパラメータは、取得する項目の最大数を設定します。デフォルトは1024です。
ngx.shared.SharedDict.keys([maxCount])
SharedDict辞書のキーの配列を返します。maxCountパラメータは、取得するキーの最大数を設定します。デフォルトは1024です。
ngx.shared.SharedDict.name
SharedDict辞書の名前を返します。これは、httpまたはstreamjs_shared_dict_zoneディレクティブのzone=パラメータに対応します。
ngx.shared.SharedDict.pop(key)
指定されたkeyに関連付けられた項目をSharedDict辞書から削除し、keyに関連付けられた値を返します。存在しない場合はundefinedを返します。
ngx.shared.SharedDict.replace(key, value)
キーが既に存在する場合にのみ、指定されたkeyvalueを置き換えます。値が正常に置き換えられた場合はtrueを返し、キーがSharedDict辞書に存在しない場合はfalseを返します。SharedDict辞書に十分な空き領域がない場合はSharedMemoryErrorをスローします。valueがこの辞書で想定されるタイプと異なる場合はTypeErrorをスローします。
ngx.shared.SharedDict.set(key, value [,timeout])
指定されたkeyvalueを設定し、このSharedDict辞書を返します(メソッドチェーン用)。

オプションのtimeout引数はミリ秒単位で指定され、httpまたはstreamjs_shared_dict_zoneディレクティブのtimeoutパラメータをオーバーライドします(0.8.5以降)。一部のキーに固有のタイムアウトを設定する必要がある場合に便利です。

ngx.shared.SharedDict.size()
SharedDict辞書の項目数を返します。
ngx.shared.SharedDict.type
httpまたはstreamjs_shared_dict_zoneディレクティブのtype=パラメータで設定されたSharedDict辞書タイプに対応するstringまたはnumberを返します。

組み込みオブジェクト

コンソール

console.error()
console.info()
console.log()
console.time()
console.timeEnd()
console.warn()

consoleオブジェクトは、nginxでは0.8.2以降、CLIでは0.2.6以降で使用可能です。

console.error(msg[, msg2 ...])
1つ以上のエラーメッセージを出力します。メッセージは文字列またはオブジェクトにすることができます。
console.info(msg[, msg2 ...])
1つ以上の情報メッセージを出力します。メッセージは文字列またはオブジェクトにすることができます。
console.log(msg[, msg2 ...])
1つ以上のログメッセージを出力します。メッセージは文字列またはオブジェクトにすることができます。
console.time(label)
操作にかかる時間を追跡できるタイマーを開始します。labelパラメータを使用すると、異なるタイマーに名前を付けることができます。console.timeEnd()が同じ名前で呼び出された場合、タイマーが開始されてからの経過時間(ミリ秒単位)が出力されます。
console.timeEnd(label)
以前にconsole.time()で開始されたタイマーを停止します。labelパラメータを使用すると、異なるタイマーに名前を付けることができます。
console.warn(msg[, msg2 ...])
1つ以上の警告メッセージを出力します。メッセージは文字列またはオブジェクトにすることができます。

crypto

сrypto.getRandomValues()
сrypto.subtle.encrypt()
сrypto.subtle.decrypt()
сrypto.subtle.deriveBits()
сrypto.subtle.deriveKey()
сrypto.subtle.digest()
сrypto.subtle.exportKey()
сrypto.subtle.generateKey()
сrypto.subtle.importKey()
сrypto.subtle.sign()
сrypto.subtle.verify()

cryptoオブジェクトは、暗号化機能の使用を可能にするグローバルオブジェクトです(0.7.0以降)。

сrypto.getRandomValues(typedArray)
暗号学的に強力な乱数値を取得します。typedArrayとして渡されたものと同じ配列を返しますが、その内容は新しく生成された乱数で置き換えられています。可能な値
typedArray
Int8ArrayInt16ArrayUint16ArrayInt32Array、またはUint32Arrayにすることができます。
сrypto.subtle.encrypt(algorithmkeydata)
提供されたalgorithmkeyを使用して、dataを暗号化します。暗号テキストを含むArrayBufferで解決されるPromiseを返します。可能な値
algorithm
使用するアルゴリズムと必要な追加パラメータを指定するオブジェクト
  • RSA-OAEPの場合は、次のキーを持つオブジェクトを渡します。
    • nameは文字列で、RSA-OAEPに設定する必要があります

      crypto.subtle.encrypt({name: "RSA-OAEP"}, key, data)
      

  • AES-CTRの場合は、次のキーを持つオブジェクトを渡します。
    • name は文字列で、AES-CTR に設定する必要があります。
    • counterArrayBufferTypedArray、または DataView であり、カウンターブロックの初期値です。16バイト長(AESブロックサイズ)である必要があります。このブロックの右端から length ビットがカウンターに使用され、残りがnonceに使用されます。例えば、length が 64 に設定されている場合、counter の前半がnonceで、後半がカウンターに使用されます。
    • length は、実際のカウンターに使用されるカウンターブロック内のビット数です。カウンターはラップしないように十分に大きくする必要があります。
  • AES-CBC の場合は、以下のキーを持つオブジェクトを渡します。
    • name は文字列で、AES-CBC に設定する必要があります。
    • iv または初期化ベクトルは、ArrayBufferTypedArray、または DataView であり、16バイトである必要があります。予測不可能で、できれば暗号学的にランダムである必要があります。ただし、秘密である必要はなく、例えば、暗号化されていない状態で暗号文と一緒に送信することができます。
  • AES-GCM の場合は、以下のキーを持つオブジェクトを渡します。
    • name は文字列で、AES-GCM に設定する必要があります。
    • iv または初期化ベクトルは、ArrayBufferTypedArray、または DataView であり、16バイトである必要があります。また、指定されたキーを使用して実行されるすべての暗号化操作に対して一意である必要があります。
    • additionalData(オプション)は、暗号化されないが、暗号化されたデータと一緒に認証される追加データを含む ArrayBufferTypedArray、または DataView です。additionalData が指定されている場合、対応する decrypt() の呼び出しで同じデータを指定する必要があります。decrypt() の呼び出しに与えられたデータが元のデータと一致しない場合、復号化は例外をスローします。additionalData のビット長は 2^64 - 1 より小さくする必要があります。
    • tagLength(オプション、デフォルトは 128) - 暗号化操作で生成され、対応する復号化での認証に使用される認証タグのサイズをビット単位で決定する number です。可能な値:326496104112120、または 128。AES-GCM の仕様では、96104112120、または 128 にすることを推奨していますが、一部のアプリケーションでは 32 または 64 ビットも許容される場合があります。
key
暗号化に使用するキーを含む CryptoKey
data
暗号化するデータ(平文とも呼ばれる)を含む ArrayBufferTypedArray、または DataView
сrypto.subtle.decrypt(algorithm, key, data)
暗号化されたデータを復号化します。復号化されたデータを含む Promise を返します。可能な値
algorithm
使用するアルゴリズムと、必要に応じて追加のパラメータを指定するオブジェクト。追加のパラメータに指定された値は、対応する encrypt() の呼び出しに渡された値と一致する必要があります。
  • RSA-OAEPの場合は、次のキーを持つオブジェクトを渡します。
    • nameは文字列で、RSA-OAEPに設定する必要があります

      crypto.subtle.encrypt({name: "RSA-OAEP"}, key, data)
      

  • AES-CTRの場合は、次のキーを持つオブジェクトを渡します。
    • name は文字列で、AES-CTR に設定する必要があります。
    • counterArrayBufferTypedArray、または DataView であり、カウンターブロックの初期値です。16バイト長(AESブロックサイズ)である必要があります。このブロックの右端から length ビットがカウンターに使用され、残りがnonceに使用されます。例えば、length が 64 に設定されている場合、counter の前半がnonceで、後半がカウンターに使用されます。
    • length は、実際のカウンターに使用されるカウンターブロック内のビット数です。カウンターはラップしないように十分に大きくする必要があります。
  • AES-CBC の場合は、以下のキーを持つオブジェクトを渡します。
    • name は文字列で、AES-CBC に設定する必要があります。
    • iv または初期化ベクトルは、ArrayBufferTypedArray、または DataView であり、16バイトである必要があります。予測不可能で、できれば暗号学的にランダムである必要があります。ただし、秘密である必要はありません(例えば、暗号化されていない状態で暗号文と一緒に送信することができます)。
  • AES-GCM の場合は、以下のキーを持つオブジェクトを渡します。
    • name は文字列で、AES-GCM に設定する必要があります。
    • iv または初期化ベクトルは、ArrayBufferTypedArray、または DataView であり、16バイトである必要があります。また、指定されたキーを使用して実行されるすべての暗号化操作に対して一意である必要があります。
    • additionalData(オプション)は、暗号化されないが、暗号化されたデータと一緒に認証される追加データを含む ArrayBufferTypedArray、または DataView です。additionalData が指定されている場合、対応する decrypt() の呼び出しで同じデータを指定する必要があります。decrypt() の呼び出しに与えられたデータが元のデータと一致しない場合、復号化は例外をスローします。additionalData のビット長は 2^64 - 1 より小さくする必要があります。
    • tagLength(オプション、デフォルトは 128) - 暗号化操作で生成され、対応する復号化での認証に使用される認証タグのサイズをビット単位で決定する number です。可能な値:326496104112120、または 128。AES-GCM の仕様では、96104112120、または 128 にすることを推奨していますが、一部のアプリケーションでは 32 または 64 ビットも許容される場合があります。
key
復号化に使用するキーを含む CryptoKeyRSA-OAEP が使用される場合、これは CryptoKeyPair オブジェクトの privateKey プロパティです。
data
復号化するデータ(暗号文とも呼ばれる)を含む ArrayBufferTypedArray、または DataView
сrypto.subtle.deriveBits(algorithm, baseKey, length)
ベースキーからビットの配列を導出します。導出されたビットを含む ArrayBuffer で満たされる Promise を返します。可能な値
algorithm
使用する導出アルゴリズムを定義するオブジェクトです。
  • HKDF の場合は、以下のキーを持つオブジェクトを渡します。
    • name は文字列で、HKDF に設定する必要があります。
    • hash は、使用するダイジェストアルゴリズムを含む文字列です:SHA-1SHA-256SHA-384、または SHA-512
    • salt は、digest 関数の出力と同じ長さのランダムまたは擬似ランダムな値を表す ArrayBufferTypedArray、または DataView です。deriveKey() に渡される入力キーマテリアルとは異なり、salt は秘密にしておく必要はありません。
    • info は、導出されたキーをアプリケーションまたはコンテキストにバインドするために使用されるアプリケーション固有のコンテキスト情報を表す ArrayBufferTypedArray、または DataView です。同じ入力キーマテリアルを使用しながら、異なるコンテキストに対して異なるキーを導出できます。このプロパティは必須ですが、空のバッファにすることもできます。
  • PBKDF2 の場合は、以下のキーを持つオブジェクトを渡します。
    • name は文字列で、PBKDF2 に設定する必要があります。
    • hash は、使用するダイジェストアルゴリズムを含む文字列です:SHA-1SHA-256SHA-384、または SHA-512
    • salt は、少なくとも 16 バイトのランダムまたは擬似ランダムな値を表す ArrayBufferTypedArray、または DataView です。deriveKey() に渡される入力キーマテリアルとは異なり、salt は秘密にしておく必要はありません。
    • iterations は、deriveKey() でハッシュ関数が実行される回数を表す number です。
baseKey
導出アルゴリズムへの入力を表す CryptoKey で、導出関数の初期キーマテリアルです。例えば、PBKDF2 の場合、パスワードであり、сrypto.subtle.importKey() を使用して CryptoKey としてインポートされる可能性があります。
length
導出するビット数を表す数値です。ブラウザの互換性のために、数値は 8 の倍数である必要があります。
сrypto.subtle.deriveKey(algorithm, baseKey, derivedKeyAlgorithm, extractable, keyUsages)
マスターキーから秘密鍵を導出します。可能な値
algorithm
使用する導出アルゴリズムを定義するオブジェクトです。
  • HKDF の場合は、以下のキーを持つオブジェクトを渡します。
    • name は文字列で、HKDF に設定する必要があります。
    • hash は、使用するダイジェストアルゴリズムを含む文字列です:SHA-1SHA-256SHA-384、または SHA-512
    • salt は、digest 関数の出力と同じ長さのランダムまたは擬似ランダムな値を表す ArrayBufferTypedArray、または DataView です。deriveKey() に渡される入力キーマテリアルとは異なり、salt は秘密にしておく必要はありません。
    • info は、導出されたキーをアプリケーションまたはコンテキストにバインドするために使用されるアプリケーション固有のコンテキスト情報を表す ArrayBufferTypedArray、または DataView です。同じ入力キーマテリアルを使用しながら、異なるコンテキストに対して異なるキーを導出できます。このプロパティは必須ですが、空のバッファにすることもできます。
  • PBKDF2 の場合は、以下のキーを持つオブジェクトを渡します。
    • name は文字列で、PBKDF2 に設定する必要があります。
    • hash は、使用するダイジェストアルゴリズムを含む文字列です:SHA-1SHA-256SHA-384、または SHA-512
    • salt は、少なくとも 16 バイトのランダムまたは擬似ランダムな値を表す ArrayBufferTypedArray、または DataView です。deriveKey() に渡される入力キーマテリアルとは異なり、salt は秘密にしておく必要はありません。
    • iterations は、deriveKey() でハッシュ関数が実行される回数を表す number です。
baseKey
導出アルゴリズムへの入力を表す CryptoKey で、導出関数の初期キーマテリアルです。例えば、PBKDF2 の場合、パスワードであり、сrypto.subtle.importKey() を使用して CryptoKey としてインポートされる可能性があります。
derivedKeyAlgorithm
導出されたキーが使用されるアルゴリズムを定義するオブジェクトです。
  • HMAC の場合は、以下のキーを持つオブジェクトを渡します。
    • name は文字列で、HMAC に設定する必要があります。
    • hash は、使用するダイジェスト関数の名前を含む文字列です:SHA-1SHA-256SHA-384、または SHA-512
    • length(オプション)は、キーのビット長を表す number です。指定されていない場合、キーの長さは選択したハッシュ関数のブロックサイズと同じになります。
  • AES-CTRAES-CBC、または AES-GCM の場合は、以下のキーを持つオブジェクトを渡します。
    • name は文字列で、使用するアルゴリズムに応じて、AES-CTRAES-CBC、または AES-GCM に設定する必要があります。
    • length は、生成するキーのビット長を表す number です:128192、または 256
extractable
キーをエクスポートできるかどうかを示すブール値です。
keyUsages
導出されたキーで何ができるかを示す Array です。キーの使用法は、derivedKeyAlgorithm で設定されたアルゴリズムで許可されている必要があります。可能な値
encrypt
メッセージを暗号化するためのキー
decrypt
メッセージを復号化するためのキー
sign
メッセージに署名するためのキー
verify
署名を検証するためのキー
deriveKey
新しいキーを導出するためのキー
deriveBits
ビットを導出するためのキー
wrapKey
キーをラップするためのキー
unwrapKey
キーをアンラップするためのキー
сrypto.subtle.digest(algorithm, data)
指定されたデータのダイジェストを生成します。使用するダイジェストアルゴリズムの識別子とダイジェストするデータを引数として取ります。ダイジェストで満たされる Promise を返します。可能な値
algorithm
使用するハッシュ関数を定義する文字列です:SHA-1(暗号化アプリケーションには使用しないでください)、SHA-256SHA-384、または SHA-512
data
ダイジェストするデータを含む ArrayBufferTypedArray、または DataView
сrypto.subtle.exportKey(format, key)
キーをエクスポートします:キーを CryptoKey オブジェクトとして受け取り、外部の移植可能な形式でキーを返します(0.7.10以降)。formatjwk の場合、Promise はキーを含む JSON オブジェクトで満たされます。それ以外の場合、promise はキーを含む ArrayBuffer で満たされます。可能な値
format
キーをエクスポートするデータ形式を記述する文字列で、次のいずれかになります。
raw
生のデータ形式
pkcs8
PKCS #8 形式
spki
SubjectPublicKeyInfo 形式
jwk
JSON Web Key (JWK) 形式 ( 0.7.10 以降)
key
エクスポートされるキーを含むCryptoKey
сrypto.subtle.generateKey(algorithm, extractable, usage)
対称アルゴリズムの新しいキー、または公開鍵アルゴリズムのキーペアを生成します ( 0.7.10 以降)。生成されたキーをCryptoKeyまたはCryptoKeyPairオブジェクトとして解決するPromiseを返します。指定可能な値
algorithm
生成するキーのタイプを定義し、アルゴリズム固有の追加パラメータを提供する辞書オブジェクト
  • RSASSA-PKCS1-v1_5RSA-PSS、またはRSA-OAEPの場合、次のキーを持つオブジェクトを渡します。
    • name は文字列で、使用するアルゴリズムに応じて、RSASSA-PKCS1-v1_5RSA-PSS、またはRSA-OAEPに設定する必要があります。
    • hash は、使用するdigest関数の名前を表す文字列で、SHA-256SHA-384、またはSHA-512を指定できます。
  • ECDSAの場合、次のキーを持つオブジェクトを渡します。
    • name は文字列で、ECDSAに設定する必要があります。
    • namedCurve は、使用する楕円曲線の名前を表す文字列で、P-256P-384、またはP-521を指定できます。
  • HMAC の場合は、以下のキーを持つオブジェクトを渡します。
    • name は文字列で、HMAC に設定する必要があります。
    • hash は、使用するdigest関数の名前を表す文字列で、SHA-256SHA-384、またはSHA-512を指定できます。
    • length (オプション) は、キーのビット長を表す数値です。省略した場合、キーの長さは、選択したダイジェスト関数によって生成されるダイジェストの長さに等しくなります。
  • AES-CTRAES-CBC、またはAES-GCMの場合、アルゴリズムを識別する文字列、または{ "name": "ALGORITHM" }形式のオブジェクトを渡します。ここで、ALGORITHMはアルゴリズムの名前です。
extractable
キーをエクスポートできるかどうかを示すブール値
使用法
キーで可能なアクションを示すarray
encrypt
メッセージを暗号化するためのキー
decrypt
メッセージを復号化するためのキー
sign
メッセージに署名するためのキー
verify
署名を検証するためのキー
deriveKey
新しいキーを導出するためのキー
deriveBits
ビットを導出するためのキー
wrapKey
キーをラップするためのキー
unwrapKey
キーをアンラップするためのキー
сrypto.subtle.importKey(format, keyData, algorithm, extractable, keyUsages)
キーをインポートします。外部のポータブル形式のキーを入力として受け取り、CryptoKeyオブジェクトを返します。インポートされたキーをCryptoKeyオブジェクトとして解決するPromiseを返します。指定可能な値
format
インポートするキーのデータ形式を記述する文字列。次のいずれかになります。
raw
生のデータ形式
pkcs8
PKCS #8 形式
spki
SubjectPublicKeyInfo 形式
jwk
JSON Web Key (JWK) 形式 ( 0.7.10 以降)
keyData
指定された形式でキーを含むArrayBufferTypedArray、またはDataViewオブジェクト
algorithm
インポートするキーのタイプを定義し、アルゴリズム固有の追加パラメータを提供する辞書オブジェクト
  • RSASSA-PKCS1-v1_5RSA-PSS、またはRSA-OAEPの場合、次のキーを持つオブジェクトを渡します。
    • name は文字列で、使用するアルゴリズムに応じて、RSASSA-PKCS1-v1_5RSA-PSS、またはRSA-OAEPに設定する必要があります。
    • hash は、使用するdigest関数の名前を表す文字列で、SHA-1SHA-256SHA-384、またはSHA-512を指定できます。
  • ECDSAの場合、次のキーを持つオブジェクトを渡します。
    • name は文字列で、ECDSAに設定する必要があります。
    • namedCurve は、使用する楕円曲線の名前を表す文字列で、P-256P-384、またはP-521を指定できます。
  • HMAC の場合は、以下のキーを持つオブジェクトを渡します。
    • name は文字列で、HMAC に設定する必要があります。
    • hash は、使用するdigest関数の名前を表す文字列で、SHA-256SHA-384、またはSHA-512を指定できます。
    • length (オプション) は、キーのビット長を表す数値です。省略した場合、キーの長さは、選択したダイジェスト関数によって生成されるダイジェストの長さに等しくなります。
  • AES-CTRAES-CBC、またはAES-GCMの場合、アルゴリズムを識別する文字列、または{ "name": "ALGORITHM" }形式のオブジェクトを渡します。ここで、ALGORITHMはアルゴリズムの名前です。
  • PBKDF2の場合、PBKDF2文字列を渡します。
  • HKDFの場合、HKDF文字列を渡します。
extractable
キーをエクスポートできるかどうかを示すブール値
keyUsages
キーで可能なアクションを示すarray
encrypt
メッセージを暗号化するためのキー
decrypt
メッセージを復号化するためのキー
sign
メッセージに署名するためのキー
verify
署名を検証するためのキー
deriveKey
新しいキーを導出するためのキー
deriveBits
ビットを導出するためのキー
wrapKey
キーをラップするためのキー
unwrapKey
キーをアンラップするためのキー
сrypto.subtle.sign(algorithm, key, data)
署名を含むArrayBufferで解決するPromiseとしてsignatureを返します。指定可能な値
algorithm
使用する署名アルゴリズムとそのパラメータを指定する文字列またはオブジェクト
  • RSASSA-PKCS1-v1_5の場合、アルゴリズムを識別する文字列、または{ "name": "ALGORITHM" }形式のオブジェクトを渡します。
  • RSA-PSSの場合、次のキーを持つオブジェクトを渡します。
    • name は文字列で、RSA-PSSに設定する必要があります。
    • saltLength は、使用するランダムソルトの長さ(バイト単位)を表す long integerです。
  • ECDSAの場合、次のキーを持つオブジェクトを渡します。
    • name は文字列で、ECDSAに設定する必要があります。
    • hash は、使用するダイジェストアルゴリズムの識別子で、SHA-256SHA-384、またはSHA-512を指定できます。
  • HMACの場合、アルゴリズムを識別する文字列、または{ "name": "ALGORITHM" }形式のオブジェクトを渡します。
key
署名に使用するキーであるCryptoKeyオブジェクト。アルゴリズムが公開鍵暗号システムを識別する場合、これは秘密鍵です。
data
署名するデータを含むArrayBufferTypedArray、またはDataViewオブジェクト
сrypto.subtle.verify(algorithm, key, signature, data)
デジタル署名を検証し、署名が有効な場合はtrue、それ以外の場合はfalseのブール値で解決するPromiseを返します。指定可能な値
algorithm
使用するアルゴリズムとそのパラメータを指定する文字列またはオブジェクト
  • RSASSA-PKCS1-v1_5の場合、アルゴリズムを識別する文字列、または{ "name": "ALGORITHM" }形式のオブジェクトを渡します。
  • RSA-PSSの場合、次のキーを持つオブジェクトを渡します。
    • name は文字列で、RSA-PSSに設定する必要があります。
    • saltLength は、使用するランダムソルトの長さ(バイト単位)を表す long integerです。
  • ECDSAの場合、次のキーを持つオブジェクトを渡します。
    • name は文字列で、ECDSAに設定する必要があります。
    • hash は、使用するダイジェストアルゴリズムの識別子で、SHA-256SHA-384、またはSHA-512を指定できます。
  • HMACの場合、アルゴリズムを識別する文字列、または{ "name": "ALGORITHM" }形式のオブジェクトを渡します。
key
検証に使用するキーであるCryptoKeyオブジェクト。対称アルゴリズムの場合は秘密鍵、公開鍵システムの場合は公開鍵です。
signature
検証する署名を含むArrayBufferTypedArray、またはDataView
data
署名を検証するデータを含むArrayBufferTypedArray、またはDataViewオブジェクト

CryptoKey

CryptoKey.algorithm
CryptoKey.extractable
CryptoKey.type
CryptoKey.usages

CryptoKeyオブジェクトは、SubtleCryptoメソッドのいずれか、сrypto.subtle.generateKey()сrypto.subtle.deriveKey()сrypto.subtle.importKey()から取得した暗号化keyを表します。

CryptoKey.algorithm
このキーを使用できるアルゴリズムと、関連する追加パラメータを記述したオブジェクトを返します ( 0.8.0 以降)。読み取り専用。
CryptoKey.extractable
キーをエクスポートできる場合はtrueであるブール値 ( 0.8.0 以降)。読み取り専用。
CryptoKey.type
オブジェクトが表すキーの種類を示す文字列値。読み取り専用。指定可能な値
secret
このキーは、対称アルゴリズムで使用するための秘密鍵です。
private
このキーは、非対称アルゴリズムのCryptoKeyPairの秘密鍵部分です。
public
このキーは、非対称アルゴリズムのCryptoKeyPairの公開鍵部分です。
CryptoKey.usages
このキーを使用できることを示す文字列の配列 ( 0.8.0 以降)。読み取り専用。配列で指定可能な値
encrypt
メッセージを暗号化するためのキー
decrypt
メッセージを復号化するためのキー
sign
メッセージに署名するためのキー
verify
署名を検証するためのキー
deriveKey
新しいキーを導出するためのキー
deriveBits
ビットを導出するためのキー

CryptoKeyPair

CryptoKeyPair.privateKey
CryptoKeyPair.publicKey

CryptoKeyPairは、WebCrypto APIの非対称キーペアを表す辞書オブジェクトです。

CryptoKeyPair.privateKey
秘密鍵を表すCryptoKeyオブジェクト。
CryptoKeyPair.publicKey
公開鍵を表すCryptoKeyオブジェクト。

njs

njs.version
njs.version_number
njs.dump()
njs.memoryStats
njs.on()

njsオブジェクトは、現在のVMインスタンスを表すグローバルオブジェクトです ( 0.2.0 以降)。

njs.version
njsの現在のバージョン(例:「0.7.4」)を含む文字列を返します。
njs.version_number
njsの現在のバージョンを数値で返します。たとえば、「0.7.4」は0x000704として返されます ( 0.7.4 以降)。
njs.dump(value)
値の整形された文字列表現を返します。
njs.memoryStats
現在のVMインスタンスのメモリ統計を含むオブジェクト ( 0.7.8 以降)。
size
オペレーティングシステムから要求したnjsメモリプールのメモリ量(バイト単位)。
njs.on(event, callback)
指定されたVMイベントのコールバックを登録します ( 0.5.2 以降)。イベントは、次のいずれかの文字列です。
exit
VMが破棄される前に呼び出されます。コールバックは引数なしで呼び出されます。

process

process.argv
process.env
process.kill()
process.pid
process.ppid

processオブジェクトは、現在のプロセスに関する情報を提供するグローバルオブジェクトです ( 0.3.3)。

process.argv
現在のプロセスが起動されたときに渡されたコマンドライン引数を含む配列を返します。
process.env
ユーザー環境を含むオブジェクトを返します。
デフォルトでは、nginxはTZ変数を除く親プロセスから継承されたすべての環境変数を削除します。継承された変数の一部を保持するには、envディレクティブを使用してください。
process.kill(pid, number | string)
pidで識別されるプロセスにシグナルを送信します。シグナル名は、'SIGINT'や'SIGHUP'などの数値または文字列です。詳細については、kill(2)を参照してください。
process.pid
現在のプロセスのPIDを返します。
process.ppid
現在の親プロセスのPIDを返します。

String

デフォルトでは、njsのすべての文字列はUnicode文字列です。これらは、Unicode文字を含むECMAScript文字列に対応します。0.8.0より前は、バイト文字列もサポートされていました。

バイト文字列

0.8.0以降、バイト文字列とバイト文字列メソッドのサポートは削除されました。バイトシーケンスを扱う場合は、Bufferオブジェクトと、r.requestBufferr.rawVariablesなどのBufferプロパティを使用する必要があります。

バイト文字列にはバイトのシーケンスが含まれており、Unicode文字列を外部データにシリアル化し、外部ソースからデシリアル化するために使用されます。たとえば、toUTF8()メソッドは、Unicode文字列をUTF-8エンコーディングを使用してバイト文字列にシリアル化します。

>> '£'.toUTF8().toString('hex')
'c2a3'  /* C2 A3 is the UTF-8 representation of 00A3 ('£') code point */

toBytes()メソッドは、コードポイントが255までのUnicode文字列をバイト文字列にシリアル化します。それ以外の場合は、nullが返されます。

>> '£'.toBytes().toString('hex')
'a3'  /* a3 is a byte equal to 00A3 ('£') code point  */

String.bytesFrom(array | string, encoding)
このメソッドは0.4.4で廃止され、0.8.0で削除されました。代わりにBuffer.fromメソッドを使用する必要があります。
>> Buffer.from([0x62, 0x75, 0x66, 0x66, 0x65, 0x72]).toString()
'buffer'

>> Buffer.from('YnVmZmVy', 'base64').toString()
'buffer'
0.4.4より前は、オクテットを含む配列、またはエンコードされた文字列(0.2.3)からバイト文字列を作成しました。エンコーディングは、hexbase64、およびbase64urlを指定できました。
String.prototype.fromBytes(start[, end])
このプロパティは0.7.7で廃止され、0.8.0で削除されました。0.7.7より前は、バイト文字列から新しいUnicode文字列を返しました。各バイトは、対応するUnicodeコードポイントに置き換えられました。
String.prototype.fromUTF8(start[, end])
このプロパティは0.7.7で廃止され、0.8.0で削除されました。代わりに、TextDecoderメソッドを使用する必要があります。0.7.7より前は、有効なUTF-8文字列を含むバイト文字列をUnicode文字列に変換しました。それ以外の場合は、nullが返されました。
String.prototype.toBytes(start[, end])
このプロパティは0.7.7で廃止され、0.8.0で削除されました。0.7.7より前は、Unicode文字列をバイト文字列にシリアル化しました。文字列に255より大きい文字が見つかった場合は、nullを返しました。
String.prototype.toString(encoding)

このプロパティは0.7.7で廃止され、0.8.0で削除されました。0.7.7より前は、文字列をhexbase64、またはbase64urlにエンコードしました。

>>  'αβγδ'.toString('base64url')
'zrHOss6zzrQ'

バージョン0.4.3より前は、バイト文字列のみをエンコードできました。

>>  'αβγδ'.toUTF8().toString('base64url')
'zrHOss6zzrQ'

String.prototype.toUTF8(start[, end])
このプロパティは0.7.7で廃止され、0.8.0で削除されました。代わりに、TextEncoderメソッドを使用する必要があります。0.7.7より前は、Unicode文字列をUTF-8エンコーディングを使用してバイト文字列にシリアル化しました。
>> 'αβγδ'.toUTF8().length
8
>> 'αβγδ'.length
4

Web API

テキストデコーダー

TextDecoder()
TextDecoder.prototype.encoding
TextDecoder.prototype.fatal
TextDecoder.prototype.ignoreBOM
TextDecoder.prototype.decode()

TextDecoderは、バイトストリームからコードポイントのストリームを生成します ( 0.4.3)。

TextDecoder([[encoding], options])
指定されたencodingに対して新しいTextDecoderオブジェクトを作成します。現在、UTF-8のみがサポートされています。optionsは、次のプロパティを持つTextDecoderOptions辞書です。
fatal
コーディングエラーが見つかった場合に、TextDecoder.decode()TypeError例外をスローする必要があるかどうかを示すブールフラグ。デフォルトはfalseです。
TextDecoder.prototype.encoding
TextDecoder()で使用されるエンコーディングの名前を含む文字列を返します。読み取り専用。
TextDecoder.prototype.fatal
エラーモードが致命的である場合はtrueとなるブール値フラグ(読み取り専用)。
TextDecoder.prototype.ignoreBOM
バイトオーダーマークが無視される場合はtrueとなるブール値フラグ(読み取り専用)。
TextDecoder.prototype.decode(buffer, [options])
TextDecoder()によってbufferからデコードされたテキストを含む文字列を返します。bufferはArrayBufferを指定できます。optionsは、次のプロパティを持つTextDecodeOptionsディクショナリです。
stream
後続のdecode()呼び出しで追加データが続くかどうかを示すブール値フラグ。データをチャンクで処理する場合はtrue、最後のチャンクの場合やデータがチャンク化されていない場合はfalseです。デフォルトはfalseです。
>> (new TextDecoder()).decode(new Uint8Array([206,177,206,178]))
αβ

テキストエンコーダー

TextEncoder()
TextEncoder.prototype.encode()
TextEncoder.prototype.encodeInto()

TextEncoderオブジェクトは、コードポイントのストリームからUTF-8エンコーディングによるバイトストリームを生成します(0.4.3)。

TextEncoder()
UTF-8エンコーディングによるバイトストリームを生成する新しく構築されたTextEncoderを返します。
TextEncoder.prototype.encode(string)
stringをUTF-8エンコードされたテキストを持つUint8Arrayにエンコードします。
TextEncoder.prototype.encodeInto(string, uint8Array)
stringをUTF-8にエンコードし、その結果を宛先のUint8Arrayに格納して、エンコーディングの進捗状況を示すディクショナリオブジェクトを返します。ディクショナリオブジェクトには2つのメンバが含まれます。
read
ソースstringからUTF-8に変換されたコードのUTF-16ユニット数。
written
宛先Uint8Arrayで変更されたバイト数。

タイマー

clearTimeout()
setTimeout()

clearTimeout(timeout)
setTimeout()によって作成されたtimeoutオブジェクトをキャンセルします。
setTimeout(function, milliseconds[, argument1, argumentN])
指定されたmilliseconds数後にfunctionを呼び出します。1つ以上のオプションのargumentsを、指定された関数に渡すことができます。timeoutオブジェクトを返します。
function handler(v)
{
    // ...
}

t = setTimeout(handler, 12);

// ...

clearTimeout(t);

グローバル関数

atob()
btoa()

atob(encodedData)
Base64エンコーディングを使用してエンコードされたデータの文字列をデコードします。encodedDataパラメーターは、Base64エンコードされたデータを含むバイナリ文字列です。encodedDataからデコードされたデータを含む文字列を返します。

同様のbtoa()メソッドを使用して、通信上の問題を引き起こす可能性のあるデータをエンコードして送信し、atob()メソッドを使用してデータを再びデコードできます。たとえば、ASCII値0から31までの制御文字をエンコード、送信、およびデコードできます。

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

btoa(stringToEncode)
バイナリ文字列からBase64エンコードされたASCII文字列を作成します。stringToEncodeパラメーターはエンコードするバイナリ文字列です。stringToEncodeのBase64表現を含むASCII文字列を返します。

このメソッドを使用して、通信上の問題を引き起こす可能性のあるデータをエンコードし、送信し、atob()メソッドを使用してデータを再びデコードできます。たとえば、ASCII値0から31までの制御文字をエンコードできます。

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

組み込みモジュール

Buffer

Buffer.alloc()
Buffer.allocUnsafe()
Buffer.byteLength()
Buffer.compare()
Buffer.concat()
Buffer.from(array)
Buffer.from(arrayBuffer)
Buffer.from(buffer)
Buffer.from(object)
Buffer.from(string)
Buffer.isBuffer()
Buffer.isEncoding()
buffer[]
buf.buffer
buf.byteOffset
buf.compare()
buf.copy()
buf.equals()
buf.fill()
buf.includes()
buf.indexOf()
buf.lastIndexOf()
buf.length
buf.readIntBE()
buf.readIntLE()
buf.readUIntBE()
buf.readUIntLE()
buf.readDoubleBE
buf.readDoubleLE()
buf.readFloatBE()
buf.readFloatLE()
buf.subarray()
buf.slice()
buf.swap16()
buf.swap32()
buf.swap64()
buf.toJSON()
buf.toString()
buf.write()
buf.writeIntBE()
buf.writeIntLE()
buf.writeUIntBE()
buf.writeUIntLE()
buf.writeDoubleBE()
buf.writeDoubleLE()
buf.writeFloatBE()
buf.writeFloatLE()

Buffer.alloc(size[, fill[, encoding]])

指定されたsizeの新しいBufferを割り当てます。fillが指定されていない場合、Bufferはゼロで埋められます。fillが指定されている場合、割り当てられたBufferはbuf.fill(fill)を呼び出すことによって初期化されます。fillencodingが指定されている場合、割り当てられたBufferはbuf.fill(fill, encoding)を呼び出すことによって初期化されます。

fillパラメーターは、stringBufferUint8Array、またはintegerを指定できます。

Buffer.allocUnsafe(size)

バッファに割り当てられたメモリが初期化されない点が異なることを除いて、Buffer.alloc()と同じです。新しいバッファの内容は不明であり、機密データが含まれている可能性があります。

Buffer.byteLength(value[, encoding])
encodingを使用してエンコードされた場合の、指定された値のバイト長を返します。値には、stringBufferTypedArrayDataView、またはArrayBufferを指定できます。値がstringの場合、encodingパラメーターはそのエンコーディングであり、utf8hexbase64base64urlを指定できます。デフォルトはutf8です。
Buffer.compare(buffer1, buffer2)
Bufferインスタンスの配列をソートするときに、buffer1buffer2と比較します。buffer1buffer2と同じ場合は0、ソート時にbuffer2buffer1の前に来る必要がある場合は1、ソート時にbuffer2buffer1の後に来る必要がある場合は-1を返します。
Buffer.concat(list[, totalLength])
リスト内のすべてのBufferインスタンスを連結した結果である新しいBufferを返します。リストに項目がない場合、または合計長が0の場合、新しい長さ0のBufferが返されます。totalLengthが指定されていない場合、リスト内のBufferインスタンスの長さを加算することで計算されます。totalLengthが指定されている場合は、符号なし整数に強制変換されます。リスト内のバッファの合計長がtotalLengthを超える場合、結果はtotalLengthに切り捨てられます。
Buffer.from(array)
0255の範囲のバイト配列を使用して新しいBufferを割り当てます。範囲外の配列エントリは切り捨てられます。
Buffer.from(arrayBuffer, byteOffset[, length]])
基になるメモリをコピーせずに、ArrayBufferのビューを作成します。オプションのbyteOffsetlength引数は、Bufferによって共有されるarrayBuffer内のメモリ範囲を指定します。
Buffer.from(buffer)
渡されたバッファデータを新しいBufferインスタンスにコピーします。
Buffer.from(object[, offsetOrEncoding[, length]])
valueOf()関数がオブジェクトと厳密に等しくない値を返すオブジェクトの場合、Buffer.from(object.valueOf(), offsetOrEncoding, length)を返します。
Buffer.from(string[, encoding])
stringを使用して新しいBufferを作成します。encodingパラメーターは、文字列をバイトに変換するときに使用する文字エンコーディングを識別します。エンコーディングには、utf8hexbase64base64urlを指定できます。デフォルトはutf8です。
Buffer.isBuffer(object)
ブール値で、objectがBufferの場合はtrueを返します。
Buffer.isEncoding(encoding)
ブール値で、エンコーディングがサポートされている文字エンコーディングの名前である場合はtrueを返します。
buffer[index]
buffer内の位置indexにあるオクテットを取得および設定するために使用できるインデックス演算子。値は個々のバイトを参照するため、有効な値の範囲は0〜255(10進数)です。
buf.buffer
このBufferオブジェクトが作成される基になるArrayBufferオブジェクト。
buf.byteOffset
Bufferの基になるArrayBufferオブジェクトのbyteOffsetを指定する整数。
buf.compare(target[, targetStart[, targetEnd[, sourceStart[, sourceEnd]]]])
bufferをtargetと比較し、ソート順でbufferがtargetの前、後、または同じであるかを示す数値を返します。比較は、各Buffer内の実際のバイトシーケンスに基づいています。targetStartは、比較を開始するtarget内のオフセットを指定する整数で、デフォルトは0です。targetEndは、比較を終了するtarget内のオフセットを指定する整数で、デフォルトはtarget.lengthです。sourceStartは、比較を開始するbuffer内のオフセットを指定する整数で、デフォルトは0です。sourceEndは、比較を終了するbuffer内のオフセットを指定する整数(排他的)で、デフォルトはbuf.lengthです。
buf.copy(target[, targetStart[, sourceStart[, sourceEnd]]])
ターゲットメモリ領域がbufferと重複する場合でも、bufferの領域からtargetの領域にデータをコピーします。targetパラメーターは、コピー先のBufferまたはUint8Arrayです。

targetStartは、書き込みを開始するtarget内のオフセットを指定する整数で、デフォルトは0です。sourceStartは、コピーを開始するbuffer内のオフセットを指定する整数で、デフォルトは0です。sourceEndは、コピーを停止するbuffer内のオフセットを指定する整数(排他的)で、デフォルトはbuf.lengthです。

buf.equals(otherBuffer)
ブール値で、BufferとotherBufferの両方がまったく同じバイトを持っている場合はtrueを返します。
buf.fill(value[, offset[, end]][, encoding])
指定されたvalueでBufferを埋めます。offsetendが指定されていない場合、Buffer全体が埋められます。valuestringBuffer、またはintegerではない場合、uint32に強制変換されます。結果の整数が255より大きい場合、Bufferはvalueと255で埋められます。
buf.includes(value[, byteOffset][, encoding])
buf.indexOf() !== -1と同等で、valueがBufferで見つかった場合はtrueを返します。
buf.indexOf(value[, byteOffset][, encoding])
Buffer内のvalueが最初に出現するインデックスを整数で返します。Bufferに値が含まれていない場合は-1を返します。valueには、指定されたencoding(デフォルトはutf8)を持つstringBufferUnit8Array、または0から255の数値を使用できます。
buf.lastIndexOf(value[, byteOffset][, encoding])
buf.indexOf()と同じですが、最初に出現するvalueではなく、最後に出現するvalueが検索されます。valueには、文字列、Buffer、または1から255の整数を使用できます。valueが空の文字列または空のBufferの場合、byteOffsetが返されます。
buf.length
Buffer内のバイト数を返します。
buf.readIntBE(offset, byteLength)
指定されたoffsetからbufからbyteLengthを読み取り、結果をビッグエンディアンの2の補数付き符号付き値として解釈します。最大48ビットの精度をサポートします。byteLengthパラメータは、読み取るバイト数を指定する1から6の整数です。

同様のメソッドもサポートされています:buf.readInt8([offset])buf.readInt16BE([offset])buf.readInt32BE([offset])

buf.readIntLE(offset, byteLength)
指定されたoffsetからbufからbyteLengthを読み取り、結果をリトルエンディアンの2の補数付き符号付き値として解釈します。最大48ビットの精度をサポートします。byteLengthパラメータは、読み取るバイト数を指定する1から6の整数です。

同様のメソッドもサポートされています:buf.readInt8([offset])buf.readInt16LE([offset])buf.readInt32LE([offset])

buf.readUIntBE(offset, byteLength)
指定されたoffsetからbufからbyteLengthを読み取り、結果をビッグエンディアンの整数として解釈します。最大48ビットの精度をサポートします。byteLengthパラメータは、読み取るバイト数を指定する1から6の整数です。

同様のメソッドもサポートされています:buf.readUInt8([offset])buf.readUInt16BE([offset])buf.readUInt32BE([offset])

buf.readUIntLE(offset, byteLength)
指定されたoffsetからbufからbyteLengthを読み取り、結果をリトルエンディアンの整数として解釈します。最大48ビットの精度をサポートします。byteLengthパラメータは、読み取るバイト数を指定する1から6の整数です。

同様のメソッドもサポートされています:buf.readUInt8([offset])buf.readUInt16LE([offset])buf.readUInt32LE([offset])

buf.readDoubleBE([offset])
指定されたoffsetからbufから64ビットのビッグエンディアンのdouble値を読み取ります。
buf.readDoubleLE([offset])
指定されたoffsetからbufから64ビットのリトルエンディアンのdouble値を読み取ります。
buf.readFloatBE([offset])
指定されたoffsetからbufから32ビットのビッグエンディアンのfloat値を読み取ります。
buf.readFloatLE([offset])
指定されたoffsetからbufから32ビットのリトルエンディアンのfloat値を読み取ります。
buf.subarray([start[, end]])
元のBufferと同じメモリを参照し、startendでオフセットおよび切り取られた新しいbufを返します。endbuf.lengthより大きい場合、buf.lengthに等しいendの場合と同じ結果が返されます。
buf.slice([start[, end]])
元のBufferと同じメモリを参照し、startendの値でオフセットおよび切り取られた新しいbufを返します。このメソッドは、BufferのスーパークラスであるUint8Array.prototype.slice()と互換性がありません。スライスをコピーするには、Uint8Array.prototype.slice()を使用してください。
buf.swap16()
bufを符号なし16ビット数値の配列として解釈し、バイトオーダーをインプレースで入れ替えます。buf.lengthが2の倍数でない場合はエラーをスローします。
buf.swap32()
bufを符号なし32ビット数値の配列として解釈し、バイトオーダーをインプレースで入れ替えます。buf.lengthが4の倍数でない場合はエラーをスローします。
buf.swap64()
bufを64ビット数値の配列として解釈し、バイトオーダーをインプレースで入れ替えます。buf.lengthが8の倍数でない場合はエラーをスローします。
buf.toJSON()
bufのJSON表現を返します。JSON.stringify()は、Bufferインスタンスを文字列化する際にこの関数を暗黙的に呼び出します。
buf.toString([encoding[, start[, end]]])
指定された文字encodingに従ってbufを文字列にデコードします。encodingには、utf8hexbase64base64urlを使用できます。startおよびendパラメータを渡して、Bufferのサブセットのみをデコードできます。
buf.write(string[, offset[, length]][, encoding])
文字encodingに従って、stringoffsetbufに書き込みます。lengthパラメータは、書き込むバイト数です。Bufferに文字列全体を格納するのに十分なスペースがない場合、文字列の一部のみが書き込まれますが、部分的にエンコードされた文字は書き込まれません。encodingには、utf8hexbase64base64urlを使用できます。
buf.writeIntBE(value, offset, byteLength)
指定されたoffsetbufvaluebyteLengthバイトをビッグエンディアンとして書き込みます。最大48ビットの精度をサポートします。byteLengthパラメータは、読み取るバイト数を指定する1から6の整数です。

次の同様のメソッドもサポートされています:buf.writeInt8buf.writeInt16BEbuf.writeInt32BE

buf.writeIntLE(value, offset, byteLength)
指定されたoffsetbufvaluebyteLengthバイトをリトルエンディアンとして書き込みます。最大48ビットの精度をサポートします。byteLengthパラメータは、読み取るバイト数を指定する1から6の整数です。

次の同様のメソッドもサポートされています:buf.writeInt8buf.writeInt16LEbuf.writeInt32LE

buf.writeUIntBE(value, offset, byteLength)
指定されたoffsetbufvaluebyteLengthバイトをビッグエンディアンとして書き込みます。最大48ビットの精度をサポートします。byteLengthパラメータは、読み取るバイト数を指定する1から6の整数です。

次の同様のメソッドもサポートされています:buf.writeUInt8buf.writeUInt16BEbuf.writeUInt32BE

buf.writeUIntLE(value, offset, byteLength)
指定されたoffsetbufvaluebyteLengthバイトをリトルエンディアンとして書き込みます。最大48ビットの精度をサポートします。byteLengthパラメータは、読み取るバイト数を指定する1から6の整数です。

次の同様のメソッドもサポートされています:buf.writeUInt8buf.writeUInt16LEbuf.writeUInt32LE

buf.writeDoubleBE(value, [offset])
指定されたoffsetbufvalueをビッグエンディアンとして書き込みます。
buf.writeDoubleLE(value, [offset])
指定されたoffsetbufvalueをリトルエンディアンとして書き込みます。
buf.writeFloatBE(value, [offset])
指定されたoffsetbufvalueをビッグエンディアンとして書き込みます。
buf.writeFloatLE(value, [offset])
指定されたoffsetbufvalueをリトルエンディアンとして書き込みます。

Crypto

crypto.createHash()
crypto.createHmac()

0.7.0以降、拡張されたcrypto APIはグローバルなcryptoオブジェクトとして利用できます。

Cryptoモジュールは暗号化機能のサポートを提供します。Cryptoモジュールオブジェクトはrequire('crypto')によって返されます。

crypto.createHash(algorithm)
指定されたalgorithmを使用してハッシュダイジェストを生成するために使用できるHashオブジェクトを作成して返します。アルゴリズムには、md5sha1、およびsha256を使用できます。
crypto.createHmac(algorithm, secret key)
指定されたalgorithmsecret keyを使用するHMACオブジェクトを作成して返します。アルゴリズムには、md5sha1、およびsha256を使用できます。

Hash

hash.update()
hash.digest()

hash.update(data)
指定されたdataでハッシュコンテンツを更新します。
hash.digest([encoding])
hash.update()を使用して渡されたすべてのデータのダイジェストを計算します。エンコードには、hexbase64、およびbase64urlを使用できます。エンコードが指定されていない場合は、Bufferオブジェクト(0.4.4)が返されます。
バージョン(0.4.4)より前は、Bufferオブジェクトの代わりにバイト文字列が返されました。
hash.copy()
ハッシュの現在の状態のコピーを作成します(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)
指定されたdataでHMACコンテンツを更新します。
hmac.digest([encoding])
hmac.update()を使用して渡されたすべてのデータのHMACダイジェストを計算します。エンコードには、hexbase64、およびbase64urlを使用できます。エンコードが指定されていない場合は、Bufferオブジェクト(0.4.4)が返されます。
バージョン0.4.4より前は、Bufferオブジェクトの代わりにバイト文字列が返されました。

>> var cr = require('crypto')
undefined

>> cr.createHmac('sha1', 'secret.key').update('AB').digest('base64url')
'Oglm93xn23_MkiaEq_e9u8zk374'

ファイルシステム

fs.accessSync()
fs.appendFileSync()
fs.closeSync()
fs.existsSync()
fs.fstatSync()
fs.lstatSync()
fs.mkdirSync()
fs.openSync()
fs.promises.open()
fs.readdirSync()
fs.readFileSync()
fs.readlinkSync()
fs.readSync()
fs.realpathSync()
fs.renameSync()
fs.rmdirSync()
fs.statSync()
fs.symlinkSync()
fs.unlinkSync()
fs.writeFileSync()
fs.writeSync()
fs.writeSync()

fs.Dirent
fs.FileHandle
fs.Stats
ファイルアクセス定数
ファイルシステムフラグ

ファイルシステムモジュールは、ファイル操作を提供します。

モジュールオブジェクトはrequire('fs')によって返されます。0.3.9以降、ファイルシステムメソッドのプロミス化されたバージョンは、require('fs').promisesオブジェクトを通じて利用できます。

> var fs = require('fs').promises;
undefined
> fs.readFile("/file/path").then((data)=>console.log(data))
<file data>

accessSync(path[, mode])
pathで指定されたファイルまたはディレクトリのアクセス許可を同期的にテストします(0.3.9)。チェックが失敗するとエラーが返され、それ以外の場合は、メソッドはundefinedを返します。
mode
実行するアクセシビリティチェックを指定するオプションの整数で、デフォルトはfs.constants.F_OKです。
try {
    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])
指定されたdataを、指定されたfilenameを持つファイルに同期的に追加します。dataは、文字列またはBufferオブジェクトであると想定されます(0.4.4)。ファイルが存在しない場合は、作成されます。optionsパラメータは、次のキーを持つオブジェクトであると想定されます
mode
modeオプション。デフォルトは0o666です
flag
ファイルシステムフラグ。デフォルトはaです
closeSync(fd)
メソッドで使用される整数で表されるfdファイル記述子を閉じます。undefinedを返します。
existsSync(path)
ブール値。指定されたpathが存在する場合はtrueを返します。(0.8.2
fstatSync(fd)
ファイル記述子に対するfs.Statsオブジェクトを取得します (0.7.7)。fd パラメータは、メソッドで使用されるファイル記述子を表す整数です。
lstatSync(path[, options])
path で参照されるシンボリックリンクのfs.Statsオブジェクトを同期的に取得します (0.7.1)。options パラメータは、次のキーを持つオブジェクトである必要があります。
throwIfNoEntry
ファイルシステムエントリが存在しない場合に、undefinedを返すのではなく例外をスローするかどうかを示すブール値。デフォルトはfalseです。
mkdirSync(path[, options])
指定されたpathにディレクトリを同期的に作成します(0.4.2)。optionsパラメータは、modeを指定するintegerか、次のキーを持つオブジェクトである必要があります。
mode
modeオプション。デフォルトは0o777です。
openSync(path[, flags[, mode]])
開かれたファイルpathのファイル記述子を表す整数を返します (0.7.7)。
flags
ファイルシステムのフラグ。デフォルトはrです。
mode
modeオプション。デフォルトは0o666です
promises.open(path[, flags[, mode]])
開かれたファイルpathを表すFileHandleオブジェクトを返します (0.7.7)。
flags
ファイルシステムのフラグ。デフォルトはrです。
mode
modeオプション。デフォルトは0o666です
readdirSync(path[, options])
指定されたpathにあるディレクトリの内容を同期的に読み取ります (0.4.2)。optionsパラメータは、エンコーディングを指定する文字列、または次のキーを持つオブジェクトである必要があります。
encoding
エンコーディング。デフォルトはutf8です。エンコーディングは、utf8bufferにすることができます(0.4.4)。
withFileTypes
trueに設定すると、files配列にfs.Direntオブジェクトが含まれます。デフォルトはfalseです。
readFileSync(filename[, options])
提供されたfilenameを持つファイルの内容を同期的に返します。optionsパラメータは、エンコーディングを指定するstringを保持します。エンコーディングが指定されている場合、文字列が返されます。それ以外の場合は、Bufferオブジェクト(0.4.4)が返されます。
バージョン0.4.4より前は、エンコーディングが指定されていない場合は、バイト文字列が返されていました。
それ以外の場合、optionsは、次のキーを持つオブジェクトである必要があります。
encoding
エンコーディング。デフォルトでは指定されていません。エンコーディングは、utf8hex (0.4.4)、base64 (0.4.4)、base64url (0.4.4)にすることができます。
flag
ファイルシステムのフラグ。デフォルトは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])
readlink(2)を使用して、シンボリックリンクpathの内容を同期的に取得します (0.8.7)。options引数は、エンコーディングを指定する文字列、または使用する文字エンコーディングを指定するencodingプロパティを持つオブジェクトにすることができます。encodingbufferの場合、結果はBufferオブジェクトとして返され、それ以外の場合は文字列として返されます。
readSync(fd, buffer, offset[, length[, position]])
ファイル記述子fdを使用してファイルパスの内容を読み取り、読み取られたバイト数を返します (0.7.7)。
buffer
bufferの値は、BufferTypedArray、またはDataViewにすることができます。
offset
データの書き込み先のバッファ内の位置を表すintegerです。
length
読み取るバイト数を表すintegerです。
position
ファイル内の読み取りを開始する場所を指定します。値はintegerまたはnullにできます。デフォルトはnullです。positionnullの場合、データは現在のファイル位置から読み取られ、ファイル位置が更新されます。positionがintegerの場合、ファイル位置は変更されません。
realpathSync(path[, options])
realpath(3)を使用して、...、およびシンボリックリンクを解決することにより、正規のパス名を同期的に計算します。options引数は、エンコーディングを指定する文字列、またはコールバックに渡されるパスに使用する文字エンコーディングを指定するエンコーディングプロパティを持つオブジェクトにすることができます(0.3.9)。
renameSync(oldPath, newPath)
ファイルの名前または場所をoldPathからnewPathに同期的に変更します (0.3.4)。
>> var fs = require('fs')
undefined
>> var file = fs.renameSync('hello.txt', 'HelloWorld.txt')
undefined
rmdirSync(path)
指定されたpathにあるディレクトリを同期的に削除します(0.4.2)。
statSync(path,[ options])
指定されたpathfs.Statsオブジェクトを同期的に取得します(0.7.1)。pathは、stringまたはbufferにすることができます。optionsパラメータは、次のキーを持つオブジェクトである必要があります。
throwIfNoEntry
ファイルシステムエントリが存在しない場合に、undefinedを返すのではなく例外をスローするかどうかを示すブール値。デフォルトはtrueです。
symlinkSync(target, path)
symlink(2)を使用して、targetを指すpathという名前のリンクを同期的に作成します(0.3.9)。相対ターゲットは、リンクの親ディレクトリに対して相対的です。
unlinkSync(path)
pathによるファイルのリンクを同期的に解除します(0.3.9)。
writeFileSync(filename, data[, options])
提供されたfilenameを持つファイルにdataを同期的に書き込みます。dataは、文字列またはBufferオブジェクトである必要があります(0.4.4)。ファイルが存在しない場合は作成され、ファイルが存在する場合は置き換えられます。optionsパラメータは、次のキーを持つオブジェクトである必要があります。
mode
modeオプション。デフォルトは0o666です
flag
ファイルシステムのフラグ。デフォルトはwです。
>> var fs = require('fs')
undefined
>> var file = fs.writeFileSync('hello.txt', 'Hello world')
undefined
writeSync(fd, buffer, offset[, length[, position]])
ファイル記述子を使用してバッファをファイルに書き込み、書き込まれたバイトのnumberを返します (0.7.7)。
fd
ファイル記述子を表すinteger
buffer
bufferの値は、BufferTypedArray、またはDataViewにすることができます。
offset
書き込むバッファの一部を決定するinteger。デフォルトは0です。
length
書き込むバイト数を指定するinteger。デフォルトは、Buffer.byteLengthのオフセットです。
position
このデータの書き込み先のファイルの先頭からのオフセットを参照します。integerまたはnullにすることができます。デフォルトはnullです。pwrite(2)も参照してください。
writeSync(fd, string[, position[, encoding]])
ファイル記述子fdを使用してstringをファイルに書き込み、書き込まれたバイトのnumberを返します (0.7.7)。
fd
ファイル記述子を表すinteger
position
このデータの書き込み先のファイルの先頭からのオフセットを参照します。integerまたはnullにすることができます。デフォルトはnullです。pwrite(2)も参照してください。
encoding
stringです。デフォルトはutf8です。

fs.Dirent

fs.Direntは、ディレクトリのエントリ(ファイルまたはサブディレクトリ)の表現です。readdirSync()withFileTypesオプションとともに呼び出されると、結果の配列にfs.Direntオブジェクトが含まれます。

fs.FileHandle

filehandle.close()
filehandle.fd
filehandle.read()
filehandle.stat()
filehandle.write(buf)
filehandle.write(str)

FileHandleオブジェクトは、数値ファイル記述子のオブジェクトラッパーです(0.7.7)。FileHandleオブジェクトのインスタンスは、fs.promises.open()メソッドによって作成されます。filehandle.close()メソッドを使用してFileHandleが閉じられない場合、メモリリークを防ぐために、ファイル記述子を自動的に閉じようとします。この動作は信頼できない可能性があるため、頼らないでください。代わりに、常に明示的にFileHandleを閉じてください。

filehandle.close()
ハンドルに対する保留中の操作が完了するのを待ってから、ファイルハンドルを閉じます。成功するとundefinedで完了するpromiseを返します。
filehandle.fd
FileHandleオブジェクトによって管理される数値ファイル記述子。
filehandle.read(buffer, offset[, length[, position]])
ファイルからデータを読み取り、指定されたバッファに格納します。
buffer
読み取られたファイルデータで埋められるバッファ。値は、BufferTypedArray、またはDataViewにすることができます。
offset
バッファへの書き込みを開始する位置を表すintegerです。
length
読み取るバイト数を表すintegerです。
position
ファイルからのデータ読み取りを開始する場所。値は、integernullにすることができます。nullの場合、データは現在のファイル位置から読み取られ、位置が更新されます。positionがintegerの場合、現在のファイル位置は変更されません。
成功時に、2つのプロパティを持つオブジェクトで完了するPromiseを返します。
bytesRead
読み取られたバイト数を表すintegerです。
buffer
バッファに渡された引数への参照です。BufferTypedArray、またはDataViewにすることができます。
filehandle.stat()
ファイルのfs.Statsで完了します。promiseを返します。
filehandle.write(buffer, offset[, length[, position]])
ファイルにバッファを書き込みます。
buffer
bufferの値は、BufferTypedArray、またはDataViewにすることができます。
offset
buffer 内のどの位置から書き込みを開始するかを示す整数値です。
length
buffer から書き込むバイト数を示す整数値です。デフォルトでは、Buffer.byteLength のオフセットになります。
position
buffer からのデータを書き込むファイル先頭からのオフセットです。integer または null を指定できます。デフォルトは null です。positionnumber でない場合、データは現在の位置に書き込まれます。詳細は POSIX の pwrite(2) ドキュメントを参照してください。
2つのプロパティを含むオブジェクトで解決される Promise を返します。
bytesWritten
書き込まれたバイト数を示す integer 値です。
buffer
書き込まれたバッファへの参照です。BufferTypedArray、または DataView を指定できます。

Promise が解決または拒否されるのを待たずに、同じファイルに対して filehandle.write() を複数回使用することは安全ではありません。

filehandle.write(string[, position[, encoding]])
ファイルに string を書き込みます。
position
buffer からのデータを書き込むファイル先頭からのオフセットです。integer または null を指定できます。デフォルトは null です。positionnumber でない場合、データは現在の位置に書き込まれます。詳細は POSIX の pwrite(2) ドキュメントを参照してください。
encoding
文字列のエンコーディングを指定します。デフォルトは utf8 です。
2つのプロパティを含むオブジェクトで解決される Promise を返します。
bytesWritten
書き込まれたバイト数を示す integer 値です。
buffer
書き込まれたバッファへの参照です。BufferTypedArray、または DataView を指定できます。

Promise が解決または拒否されるのを待たずに、同じファイルに対して filehandle.write() を複数回使用することは安全ではありません。

fs.Stats

fs.Stats オブジェクトは、ファイルに関する情報を提供します。このオブジェクトは、fs.statSync()fs.lstatSync() から返されます。

ファイルアクセス定数

access() メソッドは、次のフラグを受け入れることができます。これらのフラグは fs.constants によってエクスポートされます。

ファイルシステムフラグ

flag オプションは、次の値を受け入れることができます

クエリ文字列

querystring.decode()
querystring.encode()
querystring.escape()
querystring.parse()
querystring.stringify()
querystring.unescape()

Query String モジュールは、URL クエリ文字列の解析とフォーマットをサポートします (0.4.3)。Query String モジュールオブジェクトは、require('querystring') によって返されます。

querystring.decode()
querystring.parse() のエイリアスです。
querystring.encode()
querystring.stringify() のエイリアスです。
querystring.escape(string)

指定された string の URL エンコードを実行し、エスケープされたクエリ文字列を返します。このメソッドは querystring.stringify() によって使用され、直接使用すべきではありません。

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

クエリ文字列 URL を解析し、オブジェクトを返します。

separator パラメータは、クエリ文字列内のキーと値のペアを区切るためのサブストリングです。デフォルトは "&" です。

equal パラメータは、クエリ文字列内のキーと値を区切るためのサブストリングです。デフォルトは "=" です。

optionsパラメータは、次のキーを持つオブジェクトであると想定されます。

decodeURIComponent function
クエリ文字列内のパーセントエンコードされた文字をデコードするために使用される関数です。デフォルトは querystring.unescape() です。
maxKeys number
解析するキーの最大数です。デフォルトは 1000 です。0 値は、キーをカウントするための制限を削除します。

デフォルトでは、クエリ文字列内のパーセントエンコードされた文字は UTF-8 エンコードを使用すると想定されています。無効な UTF-8 シーケンスは、U+FFFD 置換文字で置き換えられます。

たとえば、次のクエリ文字列の場合

'foo=bar&abc=xyz&abc=123'

出力は次のようになります

{
  foo: 'bar',
  abc: ['xyz', '123']
}

querystring.stringify(object[, separator[, equal[, options]]])

オブジェクトをシリアル化し、URL クエリ文字列を返します。

separator パラメータは、クエリ文字列内のキーと値のペアを区切るためのサブストリングです。デフォルトは "&" です。

equal パラメータは、クエリ文字列内のキーと値を区切るためのサブストリングです。デフォルトは "=" です。

optionsパラメータは、次のキーを持つオブジェクトであると想定されます。

encodeURIComponent function
クエリ文字列内の URL セーフでない文字をパーセントエンコードに変換するときに使用する関数です。デフォルトは querystring.escape() です。

デフォルトでは、クエリ文字列内でパーセントエンコードが必要な文字は UTF-8 でエンコードされます。他のエンコーディングが必要な場合は、encodeURIComponent オプションを指定する必要があります。

たとえば、次のコマンドの場合

querystring.stringify({ foo: 'bar', baz: ['qux', 'quux'], 123: '' });

クエリ文字列は次のようになります

'foo=bar&baz=qux&baz=quux&123='

querystring.unescape(string)

string の URL パーセントエンコードされた文字のデコードを実行し、エスケープされていないクエリ文字列を返します。このメソッドは querystring.parse() によって使用され、直接使用すべきではありません。

XML

xml.parse()
xml.c14n()
xml.exclusiveC14n()
xml.serialize()
xml.serializeToString()
XMLDoc
XMLNode
XMLAttr

XML モジュールを使用すると、XML ドキュメントを操作できます ( 0.7.10 以降)。XML モジュールオブジェクトは、require('xml') によって返されます。

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)
文字列またはバッファを XML ドキュメントとして解析し、解析された XML ドキュメントを表す XMLDoc ラッパーオブジェクトを返します。
c14n(root_node[, excluding_node])
Canonical XML Version 1.1 に従って、root_node とその子を正規化します。root_node は、XML 構造体の周りの XMLNode または XMLDoc ラッパーオブジェクトにすることができます。正規化された出力を含むバッファオブジェクトを返します。

excluding_node
ドキュメントの一部を出力から除外できます

exclusiveC14n(root_node[, excluding_node[, withComments [,prefix_list]]])
Exclusive XML Canonicalization Version 1.0 に従って、root_node とその子を正規化します。

root_node
XML 構造体の周りの XMLNode または XMLDoc ラッパーオブジェクトです
excluding_node
ノードとその子に対応するドキュメントの一部を出力から除外できます
withComments
デフォルトでは false のブール値です。true の場合、正規化は Exclusive XML Canonicalization Version 1.0 に対応します。正規化された出力を含むバッファオブジェクトを返します。
prefix_list
出力にも含める必要がある名前空間の、スペースで区切られた名前空間プレフィックスを含むオプションの文字列です

serialize()
xml.c14n() と同じです (0.7.11 以降)。
serializeToString()
結果を string として返すことを除いて、xml.c14n() と同じです (0.7.11 以降)。
XMLDoc
XML 構造体の周りの XMLDoc ラッパーオブジェクト。ドキュメントのルートノードです。

doc.$root
名前によるドキュメントのルート。または未定義
doc.abc
abc という名前の最初のルートタグを XMLNode ラッパーオブジェクトとして取得します

XMLNode
XML タグノードの周りの XMLNode ラッパーオブジェクトです。

node.abc
node.$tag$abc と同じです
node.$attr$abc
abc のノードの属性値。 0.7.11 以降、書き込み可能です
node.$attr$abc=xyz
node.setAttribute('abc', xyz) と同じです ( 0.7.11 以降)
node.$attrs
ノードのすべての属性の XMLAttr ラッパーオブジェクトです
node.$name
ノードの名前
node.$ns
ノードの名前空間
node.$parent
現在のノードの親ノード
node.$tag$abc
abcという名前のノードの最初の子供タグ。 0.7.11から書き込み可能
node.$tags
すべての子タグの配列
node.$tags = [node1, node2, ...]
node.removeChildren(); node.addChild(node1); node.addChild(node2) と同じ (0.7.11以降)。
node.$tags$abc
ノードの abc という名前のすべての子タグ。 0.7.11以降書き込み可能
node.$text
ノードの内容。0.7.11以降書き込み可能
node.$text = 'abc'
node.setText('abc') と同じ (0.7.11以降)
node.addChild(nd)
XMLNode をノードの子として追加します (0.7.11以降)。nd はノードに追加される前に再帰的にコピーされます。
node.removeAllAttributes()
ノードのすべてのアトリビュートを削除します(0.7.11以降)
node.removeAttribute(attr_name)
attr_name という名前のアトリビュートを削除します(0.7.11以降)
node.removeChildren(tag_name)
tag_name という名前のすべての子タグを削除します (0.7.11以降)。tag_name がない場合は、すべての子タグが削除されます。
node.removeText()
ノードのテキスト値を削除します(0.7.11)
node.setAttribute(attr_name, value)
attr_name の値を設定します (0.7.11以降)。値が null の場合、attr_name という名前のアトリビュートは削除されます。
node.setText(value)
ノードのテキスト値を設定します (0.7.11以降)。値が null の場合、ノードのテキストは削除されます。

XMLAttr
XMLノードのアトリビュートをラップする XMLAttrs ラッパーオブジェクト。

attr.abc
abc のアトリビュート値

zlib

zlib.deflateRawSync()
zlib.deflateSync()
zlib.inflateRawSync()
zlib.inflateSync()

zlib モジュールは、"deflate" および "inflate" アルゴリズムを使用した圧縮機能を提供します (0.7.12以降)。zlib モジュールオブジェクトは、require('zlib') によって返されます。

deflateRawSync(string | Buffer[, options])
文字列または Buffer として提供された "deflate" アルゴリズムを使用してデータを圧縮し、zlib ヘッダーを追加しません。バッファ値は BufferTypedArray、または DataView にすることができます。Options は、zlib_options を含むオプションのオブジェクトです。圧縮されたデータを含む Buffer インスタンスを返します。
deflateSync(string | Buffer[, options])
文字列または Buffer として提供された "deflate" アルゴリズムを使用してデータを圧縮します。Buffer 値は BufferTypedArray、または DataView にすることができます。Options は、zlib_options を含むオプションのオブジェクトです。圧縮されたデータを含む Buffer インスタンスを返します。
inflateRawSync(string | Buffer)
"deflate" アルゴリズムを使用して生のストリームを解凍します。解凍されたデータを含む Buffer インスタンスを返します。
inflateSync(string | Buffer)
"deflate" アルゴリズムを使用してストリームを解凍します。解凍されたデータを含む Buffer インスタンスを返します。

zlib オプション

zlib 圧縮レベル

名前説明
zlib.constants.Z_NO_COMPRESSION圧縮なし
zlib.constants.Z_BEST_SPEED最速、圧縮率は最小
zlib.constants.Z_DEFAULT_COMPRESSION速度と圧縮率のトレードオフ
zlib.constants.Z_BEST_COMPRESSION最遅、圧縮率は最大

zlib 圧縮ストラテジー

名前説明
zlib.constants.Z_FILTEREDフィルター処理されたストラテジー: フィルターまたは予測子によって生成されたデータ用
zlib.constants.Z_HUFFMAN_ONLYハフマンのみのストラテジー: ハフマン符号化のみ、文字列照合なし
zlib.constants.Z_RLEランレングスエンコーディングストラテジー: 一致距離を 1 に制限、PNG 画像データの圧縮率を向上
zlib.constants.Z_FIXED固定テーブルストラテジー: 動的ハフマンコードの使用を防止、特殊なアプリケーション向けのよりシンプルなデコーダー
zlib.constants.Z_DEFAULT_STRATEGY汎用圧縮に適したデフォルトのストラテジー