リファレンス
njsは、nginxの機能を拡張するためのオブジェクト、メソッド、プロパティを提供します。
このリファレンスには、ECMAScriptに準拠していないnjs固有のプロパティ、メソッド、モジュールのみが含まれています。ECMAScriptに準拠したnjsプロパティとメソッドの定義は、ECMAScript仕様にあります。すべてのnjsプロパティとメソッドのリストは、互換性にあります。
nginxオブジェクト
HTTPリクエスト
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{}
が- js_contentハンドラーで、
r.sendHeader()
またはr.return()
が呼び出される前に効果的に書き込み可能であることを意味します。 - js_header_filterハンドラー
マルチ値応答ヘッダーのフィールド値(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」応答ヘッダーの重複するフィールド値は無視されます。他のすべての応答ヘッダーの重複するフィールド値は、コンマで区切られます。
- js_contentハンドラーで、
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またはstreamの
js_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
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
]])- 指定された
uri
とoptions
でサブリクエストを作成し、オプションの完了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_
)。 r.warn(
string
)- ログの
warning
レベルでエラーログにstring
を書き込みますnginxにはハードコードされた最大行長制限があるため、文字列の最初の2048バイトのみがログに記録できます。
ストリームセッション
ストリームセッションオブジェクトは、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
)- 指定された
event
のcallback
を登録します(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およびstreamのjs_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 API
のHeaders
インターフェースは、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 API
のRequest
インターフェースは、0.7.10以降で使用可能です。
新しいRequest
オブジェクトは、Request()
コンストラクタを使用して作成できます
Request[
resource
[,options
]]ngx.fetch()
に後で渡すことができるフェッチ用のRequest
オブジェクトを作成します。resource
はURLまたは既存のRequest
オブジェクトにすることができます。options
は、次のキーを持つオブジェクトであると予想されるオプションの引数です。
新しい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
は、次のキーを持つオブジェクトであると予想されるオプションの引数です。
新しい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.INFO
、ngx.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
共有辞書オブジェクトは、0.8.0以降で使用可能です。共有辞書の名前、タイプ、サイズは、httpまたはstreamのjs_shared_dict_zone
ディレクティブで設定されます。
SharedDict()
オブジェクトには、次のプロパティとメソッドがあります。
ngx.shared.SharedDict.add(
key
,value
[,timeout
])- キーがまだ存在しない場合にのみ、指定された
key
のvalue
を辞書に設定します。key
は、追加する項目のキーを表す文字列で、value
は追加する項目の値です。オプションの
timeout
引数はミリ秒単位で指定され、httpまたはstreamのjs_shared_dict_zone
ディレクティブのtimeout
パラメータをオーバーライドします(0.8.5以降)。一部のキーに固有のタイムアウトを設定する必要がある場合に便利です。値が
SharedDict
辞書に正常に追加された場合はtrue
を返し、キーが既に辞書に存在する場合はfalse
を返します。SharedDict
辞書に十分な空き領域がない場合はSharedMemoryError
をスローします。value
がこの辞書で想定されるタイプと異なる場合はTypeError
をスローします。 ngx.shared.SharedDict.capacity
SharedDict
辞書の容量を返します。これは、httpまたはstreamのjs_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またはstreamのjs_shared_dict_zone
ディレクティブのtimeout
パラメータをオーバーライドします(0.8.5以降)。一部のキーに固有のタイムアウトを設定する必要がある場合に便利です。新しい値を返します。
SharedDict
辞書に十分な空き領域がない場合は、SharedMemoryError
をスローします。この辞書が数値を想定していない場合は、TypeError
をスローします。このメソッドは、辞書のタイプがhttpまたはstreamの
js_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またはstreamのjs_shared_dict_zone
ディレクティブのzone=
パラメータに対応します。ngx.shared.SharedDict.pop(
key
)- 指定された
key
に関連付けられた項目をSharedDict
辞書から削除し、key
に関連付けられた値を返します。存在しない場合はundefined
を返します。 ngx.shared.SharedDict.replace(
key
,value
)- キーが既に存在する場合にのみ、指定された
key
のvalue
を置き換えます。値が正常に置き換えられた場合はtrue
を返し、キーがSharedDict
辞書に存在しない場合はfalse
を返します。SharedDict
辞書に十分な空き領域がない場合はSharedMemoryError
をスローします。value
がこの辞書で想定されるタイプと異なる場合はTypeError
をスローします。 ngx.shared.SharedDict.set(
key
,value
[,timeout
])- 指定された
key
のvalue
を設定し、このSharedDict
辞書を返します(メソッドチェーン用)。オプションの
timeout
引数はミリ秒単位で指定され、httpまたはstreamのjs_shared_dict_zone
ディレクティブのtimeout
パラメータをオーバーライドします(0.8.5以降)。一部のキーに固有のタイムアウトを設定する必要がある場合に便利です。 ngx.shared.SharedDict.size()
SharedDict
辞書の項目数を返します。ngx.shared.SharedDict.type
- httpまたはstreamの
js_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
crypto
オブジェクトは、暗号化機能の使用を可能にするグローバルオブジェクトです(0.7.0以降)。
сrypto.getRandomValues
(typedArray
)- 暗号学的に強力な乱数値を取得します。
typedArray
として渡されたものと同じ配列を返しますが、その内容は新しく生成された乱数で置き換えられています。可能な値typedArray
Int8Array
、Int16Array
、Uint16Array
、Int32Array
、またはUint32Array
にすることができます。
сrypto.subtle.encrypt
(algorithm
、key
、data
)- 提供された
algorithm
とkey
を使用して、data
を暗号化します。暗号テキストを含むArrayBuffer
で解決されるPromise
を返します。可能な値algorithm
- 使用するアルゴリズムと必要な追加パラメータを指定するオブジェクト
RSA-OAEP
の場合は、次のキーを持つオブジェクトを渡します。-
name
は文字列で、RSA-OAEP
に設定する必要がありますcrypto.subtle.encrypt({name: "RSA-OAEP"}, key, data)
-
AES-CTR
の場合は、次のキーを持つオブジェクトを渡します。-
name
は文字列で、AES-CTR
に設定する必要があります。 -
counter
はArrayBuffer
、TypedArray
、またはDataView
であり、カウンターブロックの初期値です。16バイト長(AESブロックサイズ)である必要があります。このブロックの右端から length ビットがカウンターに使用され、残りがnonceに使用されます。例えば、length が 64 に設定されている場合、counter の前半がnonceで、後半がカウンターに使用されます。 -
length
は、実際のカウンターに使用されるカウンターブロック内のビット数です。カウンターはラップしないように十分に大きくする必要があります。
-
AES-CBC
の場合は、以下のキーを持つオブジェクトを渡します。-
name
は文字列で、AES-CBC
に設定する必要があります。 -
iv
または初期化ベクトルは、ArrayBuffer
、TypedArray
、またはDataView
であり、16バイトである必要があります。予測不可能で、できれば暗号学的にランダムである必要があります。ただし、秘密である必要はなく、例えば、暗号化されていない状態で暗号文と一緒に送信することができます。
-
AES-GCM
の場合は、以下のキーを持つオブジェクトを渡します。-
name
は文字列で、AES-GCM
に設定する必要があります。 -
iv
または初期化ベクトルは、ArrayBuffer
、TypedArray
、またはDataView
であり、16バイトである必要があります。また、指定されたキーを使用して実行されるすべての暗号化操作に対して一意である必要があります。 -
additionalData
(オプション)は、暗号化されないが、暗号化されたデータと一緒に認証される追加データを含むArrayBuffer
、TypedArray
、またはDataView
です。additionalData
が指定されている場合、対応するdecrypt()
の呼び出しで同じデータを指定する必要があります。decrypt()
の呼び出しに与えられたデータが元のデータと一致しない場合、復号化は例外をスローします。additionalData
のビット長は2^64 - 1
より小さくする必要があります。 -
tagLength
(オプション、デフォルトは128
) - 暗号化操作で生成され、対応する復号化での認証に使用される認証タグのサイズをビット単位で決定するnumber
です。可能な値:32
、64
、96
、104
、112
、120
、または128
。AES-GCM の仕様では、96
、104
、112
、120
、または128
にすることを推奨していますが、一部のアプリケーションでは32
または64
ビットも許容される場合があります。
-
key
- 暗号化に使用するキーを含む
CryptoKey
。 data
- 暗号化するデータ(平文とも呼ばれる)を含む
ArrayBuffer
、TypedArray
、または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
に設定する必要があります。 -
counter
はArrayBuffer
、TypedArray
、またはDataView
であり、カウンターブロックの初期値です。16バイト長(AESブロックサイズ)である必要があります。このブロックの右端から length ビットがカウンターに使用され、残りがnonceに使用されます。例えば、length が 64 に設定されている場合、counter の前半がnonceで、後半がカウンターに使用されます。 -
length
は、実際のカウンターに使用されるカウンターブロック内のビット数です。カウンターはラップしないように十分に大きくする必要があります。
-
AES-CBC
の場合は、以下のキーを持つオブジェクトを渡します。-
name
は文字列で、AES-CBC
に設定する必要があります。 -
iv
または初期化ベクトルは、ArrayBuffer
、TypedArray
、またはDataView
であり、16バイトである必要があります。予測不可能で、できれば暗号学的にランダムである必要があります。ただし、秘密である必要はありません(例えば、暗号化されていない状態で暗号文と一緒に送信することができます)。
-
AES-GCM
の場合は、以下のキーを持つオブジェクトを渡します。-
name
は文字列で、AES-GCM
に設定する必要があります。 -
iv
または初期化ベクトルは、ArrayBuffer
、TypedArray
、またはDataView
であり、16バイトである必要があります。また、指定されたキーを使用して実行されるすべての暗号化操作に対して一意である必要があります。 -
additionalData
(オプション)は、暗号化されないが、暗号化されたデータと一緒に認証される追加データを含むArrayBuffer
、TypedArray
、またはDataView
です。additionalData
が指定されている場合、対応するdecrypt()
の呼び出しで同じデータを指定する必要があります。decrypt()
の呼び出しに与えられたデータが元のデータと一致しない場合、復号化は例外をスローします。additionalData
のビット長は2^64 - 1
より小さくする必要があります。 -
tagLength
(オプション、デフォルトは128
) - 暗号化操作で生成され、対応する復号化での認証に使用される認証タグのサイズをビット単位で決定するnumber
です。可能な値:32
、64
、96
、104
、112
、120
、または128
。AES-GCM の仕様では、96
、104
、112
、120
、または128
にすることを推奨していますが、一部のアプリケーションでは32
または64
ビットも許容される場合があります。
-
key
- 復号化に使用するキーを含む
CryptoKey
。RSA-OAEP
が使用される場合、これはCryptoKeyPair
オブジェクトのprivateKey
プロパティです。 data
- 復号化するデータ(暗号文とも呼ばれる)を含む
ArrayBuffer
、TypedArray
、またはDataView
。
сrypto.subtle.deriveBits
(algorithm
,baseKey
,length
)- ベースキーからビットの配列を導出します。導出されたビットを含む
ArrayBuffer
で満たされるPromise
を返します。可能な値algorithm
- 使用する導出アルゴリズムを定義するオブジェクトです。
HKDF
の場合は、以下のキーを持つオブジェクトを渡します。-
name
は文字列で、HKDF
に設定する必要があります。 -
hash
は、使用するダイジェストアルゴリズムを含む文字列です:SHA-1
、SHA-256
、SHA-384
、またはSHA-512
。 -
salt
は、digest
関数の出力と同じ長さのランダムまたは擬似ランダムな値を表すArrayBuffer
、TypedArray
、またはDataView
です。deriveKey()
に渡される入力キーマテリアルとは異なり、salt は秘密にしておく必要はありません。 -
info
は、導出されたキーをアプリケーションまたはコンテキストにバインドするために使用されるアプリケーション固有のコンテキスト情報を表すArrayBuffer
、TypedArray
、またはDataView
です。同じ入力キーマテリアルを使用しながら、異なるコンテキストに対して異なるキーを導出できます。このプロパティは必須ですが、空のバッファにすることもできます。
-
PBKDF2
の場合は、以下のキーを持つオブジェクトを渡します。-
name
は文字列で、PBKDF2
に設定する必要があります。 -
hash
は、使用するダイジェストアルゴリズムを含む文字列です:SHA-1
、SHA-256
、SHA-384
、またはSHA-512
。 -
salt
は、少なくとも16
バイトのランダムまたは擬似ランダムな値を表すArrayBuffer
、TypedArray
、または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-1
、SHA-256
、SHA-384
、またはSHA-512
。 -
salt
は、digest
関数の出力と同じ長さのランダムまたは擬似ランダムな値を表すArrayBuffer
、TypedArray
、またはDataView
です。deriveKey()
に渡される入力キーマテリアルとは異なり、salt は秘密にしておく必要はありません。 -
info
は、導出されたキーをアプリケーションまたはコンテキストにバインドするために使用されるアプリケーション固有のコンテキスト情報を表すArrayBuffer
、TypedArray
、またはDataView
です。同じ入力キーマテリアルを使用しながら、異なるコンテキストに対して異なるキーを導出できます。このプロパティは必須ですが、空のバッファにすることもできます。
-
PBKDF2
の場合は、以下のキーを持つオブジェクトを渡します。-
name
は文字列で、PBKDF2
に設定する必要があります。 -
hash
は、使用するダイジェストアルゴリズムを含む文字列です:SHA-1
、SHA-256
、SHA-384
、またはSHA-512
。 -
salt
は、少なくとも16
バイトのランダムまたは擬似ランダムな値を表すArrayBuffer
、TypedArray
、またはDataView
です。deriveKey()
に渡される入力キーマテリアルとは異なり、salt は秘密にしておく必要はありません。 -
iterations
は、deriveKey()
でハッシュ関数が実行される回数を表すnumber
です。
-
baseKey
- 導出アルゴリズムへの入力を表す
CryptoKey
で、導出関数の初期キーマテリアルです。例えば、PBKDF2
の場合、パスワードであり、сrypto.subtle.importKey()
を使用してCryptoKey
としてインポートされる可能性があります。 derivedKeyAlgorithm
- 導出されたキーが使用されるアルゴリズムを定義するオブジェクトです。
HMAC
の場合は、以下のキーを持つオブジェクトを渡します。-
name
は文字列で、HMAC
に設定する必要があります。 -
hash
は、使用するダイジェスト関数の名前を含む文字列です:SHA-1
、SHA-256
、SHA-384
、またはSHA-512
。 -
length
(オプション)は、キーのビット長を表すnumber
です。指定されていない場合、キーの長さは選択したハッシュ関数のブロックサイズと同じになります。
-
AES-CTR
、AES-CBC
、またはAES-GCM
の場合は、以下のキーを持つオブジェクトを渡します。-
name
は文字列で、使用するアルゴリズムに応じて、AES-CTR
、AES-CBC
、またはAES-GCM
に設定する必要があります。 -
length
は、生成するキーのビット長を表すnumber
です:128
、192
、または256
。
-
extractable
- キーをエクスポートできるかどうかを示すブール値です。
keyUsages
- 導出されたキーで何ができるかを示す
Array
です。キーの使用法は、derivedKeyAlgorithm
で設定されたアルゴリズムで許可されている必要があります。可能な値encrypt
- メッセージを暗号化するためのキー
decrypt
- メッセージを復号化するためのキー
sign
- メッセージに署名するためのキー
verify
- 署名を検証するためのキー
deriveKey
- 新しいキーを導出するためのキー
deriveBits
- ビットを導出するためのキー
wrapKey
- キーをラップするためのキー
unwrapKey
- キーをアンラップするためのキー
сrypto.subtle.digest
(algorithm
,data
)- 指定されたデータのダイジェストを生成します。使用するダイジェストアルゴリズムの識別子とダイジェストするデータを引数として取ります。ダイジェストで満たされる
Promise
を返します。可能な値algorithm
- 使用するハッシュ関数を定義する文字列です:
SHA-1
(暗号化アプリケーションには使用しないでください)、SHA-256
、SHA-384
、またはSHA-512
。 data
- ダイジェストするデータを含む
ArrayBuffer
、TypedArray
、またはDataView
。
сrypto.subtle.exportKey
(format
,key
)- キーをエクスポートします:キーを
CryptoKey
オブジェクトとして受け取り、外部の移植可能な形式でキーを返します(0.7.10以降)。format
がjwk
の場合、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_5
、RSA-PSS
、またはRSA-OAEP
の場合、次のキーを持つオブジェクトを渡します。-
name
は文字列で、使用するアルゴリズムに応じて、RSASSA-PKCS1-v1_5
、RSA-PSS
、またはRSA-OAEP
に設定する必要があります。 -
hash
は、使用するdigest
関数の名前を表す文字列で、SHA-256
、SHA-384
、またはSHA-512
を指定できます。
-
ECDSA
の場合、次のキーを持つオブジェクトを渡します。-
name
は文字列で、ECDSA
に設定する必要があります。 -
namedCurve
は、使用する楕円曲線の名前を表す文字列で、P-256
、P-384
、またはP-521
を指定できます。
-
HMAC
の場合は、以下のキーを持つオブジェクトを渡します。-
name
は文字列で、HMAC
に設定する必要があります。 -
hash
は、使用するdigest
関数の名前を表す文字列で、SHA-256
、SHA-384
、またはSHA-512
を指定できます。 -
length
(オプション) は、キーのビット長を表す数値です。省略した場合、キーの長さは、選択したダイジェスト関数によって生成されるダイジェストの長さに等しくなります。
-
AES-CTR
、AES-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
- 指定された形式でキーを含む
ArrayBuffer
、TypedArray
、またはDataView
オブジェクト algorithm
- インポートするキーのタイプを定義し、アルゴリズム固有の追加パラメータを提供する辞書オブジェクト
RSASSA-PKCS1-v1_5
、RSA-PSS
、またはRSA-OAEP
の場合、次のキーを持つオブジェクトを渡します。-
name
は文字列で、使用するアルゴリズムに応じて、RSASSA-PKCS1-v1_5
、RSA-PSS
、またはRSA-OAEP
に設定する必要があります。 -
hash
は、使用するdigest
関数の名前を表す文字列で、SHA-1
、SHA-256
、SHA-384
、またはSHA-512
を指定できます。
-
ECDSA
の場合、次のキーを持つオブジェクトを渡します。-
name
は文字列で、ECDSA
に設定する必要があります。 -
namedCurve
は、使用する楕円曲線の名前を表す文字列で、P-256
、P-384
、またはP-521
を指定できます。
-
HMAC
の場合は、以下のキーを持つオブジェクトを渡します。-
name
は文字列で、HMAC
に設定する必要があります。 -
hash
は、使用するdigest
関数の名前を表す文字列で、SHA-256
、SHA-384
、またはSHA-512
を指定できます。 -
length
(オプション) は、キーのビット長を表す数値です。省略した場合、キーの長さは、選択したダイジェスト関数によって生成されるダイジェストの長さに等しくなります。
-
AES-CTR
、AES-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
は、使用するランダムソルトの長さ(バイト単位)を表す longinteger
です。
-
ECDSA
の場合、次のキーを持つオブジェクトを渡します。-
name
は文字列で、ECDSA
に設定する必要があります。 -
hash
は、使用するダイジェストアルゴリズムの識別子で、SHA-256
、SHA-384
、またはSHA-512
を指定できます。
-
HMAC
の場合、アルゴリズムを識別する文字列、または{ "name": "ALGORITHM" }
形式のオブジェクトを渡します。
key
- 署名に使用するキーである
CryptoKey
オブジェクト。アルゴリズムが公開鍵暗号システムを識別する場合、これは秘密鍵です。 data
- 署名するデータを含む
ArrayBuffer
、TypedArray
、またはDataView
オブジェクト
сrypto.subtle.verify
(algorithm
,key
,signature
,data
)- デジタル署名を検証し、署名が有効な場合は
true
、それ以外の場合はfalse
のブール値で解決するPromise
を返します。指定可能な値algorithm
- 使用するアルゴリズムとそのパラメータを指定する文字列またはオブジェクト
RSASSA-PKCS1-v1_5
の場合、アルゴリズムを識別する文字列、または{ "name": "ALGORITHM" }
形式のオブジェクトを渡します。RSA-PSS
の場合、次のキーを持つオブジェクトを渡します。-
name
は文字列で、RSA-PSS
に設定する必要があります。 -
saltLength
は、使用するランダムソルトの長さ(バイト単位)を表す longinteger
です。
-
ECDSA
の場合、次のキーを持つオブジェクトを渡します。-
name
は文字列で、ECDSA
に設定する必要があります。 -
hash
は、使用するダイジェストアルゴリズムの識別子で、SHA-256
、SHA-384
、またはSHA-512
を指定できます。
-
HMAC
の場合、アルゴリズムを識別する文字列、または{ "name": "ALGORITHM" }
形式のオブジェクトを渡します。
key
- 検証に使用するキーである
CryptoKey
オブジェクト。対称アルゴリズムの場合は秘密鍵、公開鍵システムの場合は公開鍵です。 signature
- 検証する署名を含む
ArrayBuffer
、TypedArray
、またはDataView
data
- 署名を検証するデータを含む
ArrayBuffer
、TypedArray
、または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の非対称キーペアを表す辞書オブジェクトです。
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.requestBuffer
、r.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
メソッドを使用する必要があります。
0.4.4より前は、オクテットを含む配列、またはエンコードされた文字列(0.2.3)からバイト文字列を作成しました。エンコーディングは、>> Buffer.from([0x62, 0x75, 0x66, 0x66, 0x65, 0x72]).toString() 'buffer' >> Buffer.from('YnVmZmVy', 'base64').toString() 'buffer'
hex
、base64
、および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より前は、文字列を
hex
、base64
、または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(
size
[,fill
[,encoding
]])-
指定された
size
の新しいBufferを割り当てます。fill
が指定されていない場合、Bufferはゼロで埋められます。fill
が指定されている場合、割り当てられたBufferはbuf.fill(fill)
を呼び出すことによって初期化されます。fill
とencoding
が指定されている場合、割り当てられたBufferはbuf.fill(fill, encoding)
を呼び出すことによって初期化されます。fill
パラメーターは、string
、Buffer
、Uint8Array
、またはinteger
を指定できます。 Buffer.allocUnsafe(
size
)-
バッファに割り当てられたメモリが初期化されない点が異なることを除いて、
Buffer.alloc()
と同じです。新しいバッファの内容は不明であり、機密データが含まれている可能性があります。 Buffer.byteLength(
value
[,encoding
])encoding
を使用してエンコードされた場合の、指定された値のバイト長を返します。値には、string
、Buffer
、TypedArray
、DataView
、またはArrayBuffer
を指定できます。値がstring
の場合、encoding
パラメーターはそのエンコーディングであり、utf8
、hex
、base64
、base64url
を指定できます。デフォルトはutf8
です。Buffer.compare(
buffer1
,buffer2
)- Bufferインスタンスの配列をソートするときに、
buffer1
をbuffer2
と比較します。buffer1
がbuffer2
と同じ場合は0
、ソート時にbuffer2
がbuffer1
の前に来る必要がある場合は1
、ソート時にbuffer2
がbuffer1
の後に来る必要がある場合は-1
を返します。 Buffer.concat(
list
[,totalLength
])- リスト内のすべてのBufferインスタンスを連結した結果である新しいBufferを返します。リストに項目がない場合、または合計長が0の場合、新しい長さ0のBufferが返されます。
totalLength
が指定されていない場合、リスト内のBufferインスタンスの長さを加算することで計算されます。totalLength
が指定されている場合は、符号なし整数に強制変換されます。リスト内のバッファの合計長がtotalLength
を超える場合、結果はtotalLength
に切り捨てられます。 Buffer.from(
array
)0
〜255
の範囲のバイト配列を使用して新しいBufferを割り当てます。範囲外の配列エントリは切り捨てられます。Buffer.from(
arrayBuffer
,byteOffset
[,length
]])- 基になるメモリをコピーせずに、
ArrayBuffer
のビューを作成します。オプションのbyteOffset
とlength
引数は、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
パラメーターは、文字列をバイトに変換するときに使用する文字エンコーディングを識別します。エンコーディングには、utf8
、hex
、base64
、base64url
を指定できます。デフォルトは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を埋めます。offset
とend
が指定されていない場合、Buffer全体が埋められます。value
がstring
、Buffer
、または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
)を持つstring
、Buffer
、Unit8Array
、または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と同じメモリを参照し、
start
とend
でオフセットおよび切り取られた新しいbuf
を返します。end
がbuf.length
より大きい場合、buf.length
に等しいendの場合と同じ結果が返されます。 buf.slice([
start
[,end
]])- 元のBufferと同じメモリを参照し、
start
とend
の値でオフセットおよび切り取られた新しい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
には、utf8
、hex
、base64
、base64url
を使用できます。start
およびend
パラメータを渡して、Bufferのサブセットのみをデコードできます。 buf.write(
string
[,offset
[,length
]][,encoding
])- 文字
encoding
に従って、string
をoffset
のbuf
に書き込みます。length
パラメータは、書き込むバイト数です。Bufferに文字列全体を格納するのに十分なスペースがない場合、文字列の一部のみが書き込まれますが、部分的にエンコードされた文字は書き込まれません。encoding
には、utf8
、hex
、base64
、base64url
を使用できます。 buf.writeIntBE(
value
,offset
,byteLength
)- 指定された
offset
のbuf
にvalue
のbyteLength
バイトをビッグエンディアンとして書き込みます。最大48ビットの精度をサポートします。byteLength
パラメータは、読み取るバイト数を指定する1から6の整数です。次の同様のメソッドもサポートされています:
buf.writeInt8
、buf.writeInt16BE
、buf.writeInt32BE
。 buf.writeIntLE(
value
,offset
,byteLength
)- 指定された
offset
のbuf
にvalue
のbyteLength
バイトをリトルエンディアンとして書き込みます。最大48ビットの精度をサポートします。byteLength
パラメータは、読み取るバイト数を指定する1から6の整数です。次の同様のメソッドもサポートされています:
buf.writeInt8
、buf.writeInt16LE
、buf.writeInt32LE
。 buf.writeUIntBE(
value
,offset
,byteLength
)- 指定された
offset
のbuf
にvalue
のbyteLength
バイトをビッグエンディアンとして書き込みます。最大48ビットの精度をサポートします。byteLength
パラメータは、読み取るバイト数を指定する1から6の整数です。次の同様のメソッドもサポートされています:
buf.writeUInt8
、buf.writeUInt16BE
、buf.writeUInt32BE
。 buf.writeUIntLE(
value
,offset
,byteLength
)- 指定された
offset
のbuf
にvalue
のbyteLength
バイトをリトルエンディアンとして書き込みます。最大48ビットの精度をサポートします。byteLength
パラメータは、読み取るバイト数を指定する1から6の整数です。次の同様のメソッドもサポートされています:
buf.writeUInt8
、buf.writeUInt16LE
、buf.writeUInt32LE
。 buf.writeDoubleBE(
value
, [offset
])- 指定された
offset
のbuf
にvalue
をビッグエンディアンとして書き込みます。 buf.writeDoubleLE(
value
, [offset
])- 指定された
offset
のbuf
にvalue
をリトルエンディアンとして書き込みます。 buf.writeFloatBE(
value
, [offset
])- 指定された
offset
のbuf
にvalue
をビッグエンディアンとして書き込みます。 buf.writeFloatLE(
value
, [offset
])- 指定された
offset
のbuf
にvalue
をリトルエンディアンとして書き込みます。
Crypto
crypto.createHash() |
crypto.createHmac() |
0.7.0以降、拡張されたcrypto APIはグローバルなcryptoオブジェクトとして利用できます。
Cryptoモジュールは暗号化機能のサポートを提供します。Cryptoモジュールオブジェクトはrequire('crypto')
によって返されます。
crypto.createHash(
algorithm
)- 指定された
algorithm
を使用してハッシュダイジェストを生成するために使用できるHashオブジェクトを作成して返します。アルゴリズムには、md5
、sha1
、およびsha256
を使用できます。 crypto.createHmac(
algorithm
,secret key
)- 指定された
algorithm
とsecret key
を使用するHMACオブジェクトを作成して返します。アルゴリズムには、md5
、sha1
、およびsha256
を使用できます。
Hash
hash.update() |
hash.digest() |
hash.update(
data
)- 指定された
data
でハッシュコンテンツを更新します。 hash.digest([
encoding
])hash.update()
を使用して渡されたすべてのデータのダイジェストを計算します。エンコードには、hex
、base64
、および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ダイジェストを計算します。エンコードには、hex
、base64
、および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.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
パラメータは、エンコーディングを指定する文字列、または次のキーを持つオブジェクトである必要があります。 readFileSync(
filename
[,options
])- 提供された
filename
を持つファイルの内容を同期的に返します。options
パラメータは、エンコーディングを指定するstring
を保持します。エンコーディングが指定されている場合、文字列が返されます。それ以外の場合は、Bufferオブジェクト(0.4.4)が返されます。バージョン0.4.4より前は、エンコーディングが指定されていない場合は、バイト文字列が返されていました。
それ以外の場合、options
は、次のキーを持つオブジェクトである必要があります。encoding
- エンコーディング。デフォルトでは指定されていません。エンコーディングは、
utf8
、hex
(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
プロパティを持つオブジェクトにすることができます。encoding
がbuffer
の場合、結果はBuffer
オブジェクトとして返され、それ以外の場合は文字列として返されます。 readSync(
fd
,buffer
,offset
[,length
[,position
]])- ファイル記述子
fd
を使用してファイルパスの内容を読み取り、読み取られたバイト数を返します (0.7.7)。buffer
buffer
の値は、Buffer
、TypedArray
、またはDataView
にすることができます。offset
- データの書き込み先のバッファ内の位置を表す
integer
です。 length
- 読み取るバイト数を表す
integer
です。 position
- ファイル内の読み取りを開始する場所を指定します。値は
integer
またはnull
にできます。デフォルトはnull
です。position
がnull
の場合、データは現在のファイル位置から読み取られ、ファイル位置が更新されます。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
])- 指定された
path
のfs.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
の値は、Buffer
、TypedArray
、または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
オブジェクトが含まれます。
-
dirent.isBlockDevice()
—fs.Dirent
オブジェクトがブロックデバイスを表している場合はtrue
を返します。 -
dirent.isCharacterDevice()
—fs.Dirent
オブジェクトが文字デバイスを表している場合はtrue
を返します。 -
dirent.isDirectory()
—fs.Dirent
オブジェクトがファイルシステムのディレクトリを表している場合はtrue
を返します。 -
dirent.isFIFO()
—fs.Dirent
オブジェクトが先入れ先出し (FIFO) パイプを表している場合はtrue
を返します。 -
dirent.isFile()
—fs.Dirent
オブジェクトが通常ファイルを表している場合はtrue
を返します。 -
dirent.isSocket()
—fs.Dirent
オブジェクトがソケットを表している場合はtrue
を返します。 -
dirent.isSymbolicLink()
—fs.Dirent
オブジェクトがシンボリックリンクを表している場合はtrue
を返します。 -
dirent.name
—fs.Dirent
オブジェクトが参照するファイルの名前です。
fs.FileHandle
filehandle.close() |
filehandle.fd |
filehandle.read() |
filehandle.stat() |
filehandle.write( |
filehandle.write( |
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
- 読み取られたファイルデータで埋められるバッファ。値は、
Buffer
、TypedArray
、またはDataView
にすることができます。 offset
- バッファへの書き込みを開始する位置を表す
integer
です。 length
- 読み取るバイト数を表す
integer
です。 position
- ファイルからのデータ読み取りを開始する場所。値は、
integer
、null
にすることができます。null
の場合、データは現在のファイル位置から読み取られ、位置が更新されます。positionがinteger
の場合、現在のファイル位置は変更されません。
Promise
を返します。bytesRead
- 読み取られたバイト数を表す
integer
です。 buffer
- バッファに渡された引数への参照です。
Buffer
、TypedArray
、またはDataView
にすることができます。
filehandle.stat()
- ファイルのfs.Statsで完了します。
promise
を返します。 filehandle.write(
buffer
,offset
[,length
[,position
]])- ファイルにバッファを書き込みます。
buffer
buffer
の値は、Buffer
、TypedArray
、またはDataView
にすることができます。offset
buffer
内のどの位置から書き込みを開始するかを示す整数値です。length
buffer
から書き込むバイト数を示す整数値です。デフォルトでは、Buffer.byteLength のオフセットになります。position
buffer
からのデータを書き込むファイル先頭からのオフセットです。integer
またはnull
を指定できます。デフォルトはnull
です。position
がnumber
でない場合、データは現在の位置に書き込まれます。詳細は POSIX の pwrite(2) ドキュメントを参照してください。
Promise
を返します。bytesWritten
- 書き込まれたバイト数を示す
integer
値です。 buffer
- 書き込まれたバッファへの参照です。
Buffer
、TypedArray
、またはDataView
を指定できます。
Promise が解決または拒否されるのを待たずに、同じファイルに対して
filehandle.write()
を複数回使用することは安全ではありません。 filehandle.write(
string
[,position
[,encoding
]])- ファイルに
string
を書き込みます。position
buffer
からのデータを書き込むファイル先頭からのオフセットです。integer
またはnull
を指定できます。デフォルトはnull
です。position
がnumber
でない場合、データは現在の位置に書き込まれます。詳細は POSIX の pwrite(2) ドキュメントを参照してください。encoding
- 文字列のエンコーディングを指定します。デフォルトは
utf8
です。
Promise
を返します。bytesWritten
- 書き込まれたバイト数を示す
integer
値です。 buffer
- 書き込まれたバッファへの参照です。
Buffer
、TypedArray
、またはDataView
を指定できます。
Promise が解決または拒否されるのを待たずに、同じファイルに対して
filehandle.write()
を複数回使用することは安全ではありません。
fs.Stats
fs.Stats
オブジェクトは、ファイルに関する情報を提供します。このオブジェクトは、fs.statSync() と fs.lstatSync() から返されます。
-
stats.isBlockDevice()
—fs.Stats
オブジェクトがブロックデバイスを表す場合にtrue
を返します。 -
stats.isDirectory()
—fs.Stats
オブジェクトがファイルシステムディレクトリを表す場合にtrue
を返します。 -
stats.isFIFO()
—fs.Stats
オブジェクトが先入れ先出し (FIFO) パイプを表す場合にtrue
を返します。 -
stats.isFile()
—fs.Stats
オブジェクトが通常ファイルを表す場合にtrue
を返します。 -
stats.isSocket()
—fs.Stats
オブジェクトがソケットを表す場合にtrue
を返します。 -
stats.isSymbolicLink()
—fs.Stats
オブジェクトがシンボリックリンクを表す場合にtrue
を返します。 -
stats.dev
— ファイルが含まれるデバイスの数値識別子です。 -
stats.ino
— ファイルのファイルシステム固有のInode
番号です。 -
stats.mode
— ファイルの種類とモードを記述するビットフィールドです。 -
stats.nlink
— ファイルに存在するハードリンクの数です。 -
stats.uid
— ファイルを所有するユーザーの数値ユーザー識別子 (POSIX) です。 -
stats.gid
— ファイルを所有するグループの数値グループ識別子 (POSIX) です。 -
stats.rdev
— ファイルがデバイスを表す場合の数値デバイス識別子です。 -
stats.size
— ファイルのサイズ (バイト単位) です。 -
stats.blksize
— I/O 操作のファイルシステムブロックサイズです。 -
stats.blocks
— このファイルに割り当てられたブロックの数です。 -
stats.atimeMs
— このファイルが最後にアクセスされた時刻を示すタイムスタンプです。POSIX エポックからのミリ秒数で表されます。 -
stats.mtimeMs
— このファイルが最後に変更された時刻を示すタイムスタンプです。POSIX エポックからのミリ秒数で表されます。 -
stats.ctimeMs
— このファイルが最後に変更された時刻を示すタイムスタンプです。POSIX エポックからのミリ秒数で表されます。 -
stats.birthtimeMs
— このファイルの作成時刻を示すタイムスタンプです。POSIX エポックからのミリ秒数で表されます。 -
stats.atime
— このファイルが最後にアクセスされた時刻を示すタイムスタンプです。 -
stats.mtime
— このファイルが最後に変更された時刻を示すタイムスタンプです。 -
stats.ctime
— このファイルが最後に変更された時刻を示すタイムスタンプです。 -
stats.birthtime
— このファイルの作成時刻を示すタイムスタンプです。
ファイルアクセス定数
access()
メソッドは、次のフラグを受け入れることができます。これらのフラグは fs.constants
によってエクスポートされます。
-
F_OK
— ファイルが呼び出しプロセスから見えることを示します。モードが指定されていない場合、デフォルトで使用されます -
R_OK
— ファイルが呼び出しプロセスによって読み取り可能であることを示します -
W_OK
— ファイルが呼び出しプロセスによって書き込み可能であることを示します -
X_OK
— ファイルが呼び出しプロセスによって実行可能であることを示します
ファイルシステムフラグ
flag
オプションは、次の値を受け入れることができます
-
a
— ファイルを追記用に開きます。ファイルが存在しない場合は作成されます -
ax
—a
と同じですが、ファイルが既に存在する場合は失敗します -
a+
— ファイルを読み取りおよび追記用に開きます。ファイルが存在しない場合は作成されます -
ax+
—a+
と同じですが、ファイルが既に存在する場合は失敗します -
as
— ファイルを同期モードで追記用に開きます。ファイルが存在しない場合は作成されます -
as+
— ファイルを同期モードで読み取りおよび追記用に開きます。ファイルが存在しない場合は作成されます -
r
— ファイルを読み取り用に開きます。ファイルが存在しない場合は例外が発生します -
r+
— ファイルを読み取りおよび書き込み用に開きます。ファイルが存在しない場合は例外が発生します -
rs+
— ファイルを同期モードで読み取りおよび書き込み用に開きます。ローカルファイルシステムキャッシュをバイパスするようにオペレーティングシステムに指示します -
w
— ファイルを書き込み用に開きます。ファイルが存在しない場合は作成されます。ファイルが存在する場合は上書きされます -
wx
—w
と同じですが、ファイルが既に存在する場合は失敗します -
w+
— ファイルを読み取りおよび書き込み用に開きます。ファイルが存在しない場合は作成されます。ファイルが存在する場合は上書きされます -
wx+
—w+
と同じですが、ファイルが既に存在する場合は失敗します
クエリ文字列
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('
と同じです ( 0.7.11 以降)abc
',xyz
)node.$attrs
- ノードのすべての属性の
XMLAttr
ラッパーオブジェクトです node.$name
- ノードの名前
node.$ns
- ノードの名前空間
node.$parent
- 現在のノードの親ノード
node.$tag$
abc
abc
という名前のノードの最初の子供タグ。 0.7.11から書き込み可能- すべての子タグの配列
node.removeChildren
();node.addChild(
;node1
)node.addChild(
と同じ (0.7.11以降)。node2
)- ノードの
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 ヘッダーを追加しません。バッファ値は
Buffer
、TypedArray
、またはDataView
にすることができます。Options
は、zlib_options を含むオプションのオブジェクトです。圧縮されたデータを含む Buffer インスタンスを返します。 deflateSync(
string
|Buffer
[,options
])- 文字列または Buffer として提供された "deflate" アルゴリズムを使用してデータを圧縮します。Buffer 値は
Buffer
、TypedArray
、またはDataView
にすることができます。Options
は、zlib_options を含むオプションのオブジェクトです。圧縮されたデータを含む Buffer インスタンスを返します。 inflateRawSync(
string
|Buffer
)- "deflate" アルゴリズムを使用して生のストリームを解凍します。解凍されたデータを含む Buffer インスタンスを返します。
inflateSync(
string
|Buffer
)- "deflate" アルゴリズムを使用してストリームを解凍します。解凍されたデータを含む Buffer インスタンスを返します。
zlib オプション
-
chunkSize
— 整数、デフォルトは1024
-
dictionary
—Buffer
、TypedArray
、またはDataView
。デフォルトは空 -
level
— 整数、圧縮のみ、zlib_compression_levels を参照 -
memLevel
—1
から9
の整数、圧縮のみ -
strategy
— 整数、圧縮のみ、zlib_compression_strategy を参照 -
windowBits
— 生データの場合は-15
から-9
の整数、通常のストリームの場合は9
から15
の整数
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 | 汎用圧縮に適したデフォルトのストラテジー |