| /// <reference path="index.d.ts" /> |
| /// <reference path="ngx_core.d.ts" /> |
| |
| interface NginxHTTPArgs { |
| readonly [prop: string]: NjsByteString; |
| } |
| |
| interface NginxHeadersIn { |
| // common request headers |
| readonly 'Accept'?: NjsByteString; |
| readonly 'Accept-Charset'?: NjsByteString; |
| readonly 'Accept-Encoding'?: NjsByteString; |
| readonly 'Accept-Language'?: NjsByteString; |
| readonly 'Authorization'?: NjsByteString; |
| readonly 'Cache-Control'?: NjsByteString; |
| readonly 'Connection'?: NjsByteString; |
| readonly 'Content-Length'?: NjsByteString; |
| readonly 'Content-Type'?: NjsByteString; |
| readonly 'Cookie'?: NjsByteString; |
| readonly 'Date'?: NjsByteString; |
| readonly 'Expect'?: NjsByteString; |
| readonly 'Forwarded'?: NjsByteString; |
| readonly 'From'?: NjsByteString; |
| readonly 'Host'?: NjsByteString; |
| readonly 'If-Match'?: NjsByteString; |
| readonly 'If-Modified-Since'?: NjsByteString; |
| readonly 'If-None-Match'?: NjsByteString; |
| readonly 'If-Range'?: NjsByteString; |
| readonly 'If-Unmodified-Since'?: NjsByteString; |
| readonly 'Max-Forwards'?: NjsByteString; |
| readonly 'Origin'?: NjsByteString; |
| readonly 'Pragma'?: NjsByteString; |
| readonly 'Proxy-Authorization'?: NjsByteString; |
| readonly 'Range'?: NjsByteString; |
| readonly 'Referer'?: NjsByteString; |
| readonly 'TE'?: NjsByteString; |
| readonly 'User-Agent'?: NjsByteString; |
| readonly 'Upgrade'?: NjsByteString; |
| readonly 'Via'?: NjsByteString; |
| readonly 'Warning'?: NjsByteString; |
| readonly 'X-Forwarded-For'?: NjsByteString; |
| |
| readonly [prop: string]: NjsByteString | undefined; |
| } |
| |
| interface NginxHeadersOut { |
| // common response headers |
| 'Age'?: NjsStringLike; |
| 'Allow'?: NjsStringLike; |
| 'Alt-Svc'?: NjsStringLike; |
| 'Cache-Control'?: NjsStringLike; |
| 'Connection'?: NjsStringLike; |
| 'Content-Disposition'?: NjsStringLike; |
| 'Content-Encoding'?: NjsStringLike; |
| 'Content-Language'?: NjsStringLike; |
| 'Content-Length'?: NjsStringLike; |
| 'Content-Location'?: NjsStringLike; |
| 'Content-Range'?: NjsStringLike; |
| 'Content-Type'?: NjsStringLike; |
| 'Date'?: NjsStringLike; |
| 'ETag'?: NjsStringLike; |
| 'Expires'?: NjsStringLike; |
| 'Last-Modified'?: NjsStringLike; |
| 'Link'?: NjsStringLike; |
| 'Location'?: NjsStringLike; |
| 'Pragma'?: NjsStringLike; |
| 'Proxy-Authenticate'?: NjsStringLike; |
| 'Retry-After'?: NjsStringLike; |
| 'Server'?: NjsStringLike; |
| 'Trailer'?: NjsStringLike; |
| 'Transfer-Encoding'?: NjsStringLike; |
| 'Upgrade'?: NjsStringLike; |
| 'Vary'?: NjsStringLike; |
| 'Via'?: NjsStringLike; |
| 'Warning'?: NjsStringLike; |
| 'WWW-Authenticate'?: NjsStringLike; |
| |
| 'Set-Cookie'?: NjsStringLike[]; |
| |
| [prop: string]: NjsStringLike | NjsStringLike[] | undefined; |
| } |
| |
| interface NginxVariables { |
| readonly 'ancient_browser'?: NjsByteString; |
| readonly 'arg_'?: NjsByteString; |
| readonly 'args'?: NjsByteString; |
| readonly 'binary_remote_addr'?: NjsByteString; |
| readonly 'body_bytes_sent'?: NjsByteString; |
| readonly 'bytes_received'?: NjsByteString; |
| readonly 'bytes_sent'?: NjsByteString; |
| readonly 'connection'?: NjsByteString; |
| readonly 'connection_requests'?: NjsByteString; |
| readonly 'connections_active'?: NjsByteString; |
| readonly 'connections_reading'?: NjsByteString; |
| readonly 'connections_waiting'?: NjsByteString; |
| readonly 'connections_writing'?: NjsByteString; |
| readonly 'content_length'?: NjsByteString; |
| readonly 'content_type'?: NjsByteString; |
| readonly 'cookie_'?: NjsByteString; |
| readonly 'date_gmt'?: NjsByteString; |
| readonly 'date_local'?: NjsByteString; |
| readonly 'document_root'?: NjsByteString; |
| readonly 'document_uri'?: NjsByteString; |
| readonly 'fastcgi_path_info'?: NjsByteString; |
| readonly 'fastcgi_script_name'?: NjsByteString; |
| readonly 'geoip_area_code'?: NjsByteString; |
| readonly 'geoip_city'?: NjsByteString; |
| readonly 'geoip_city_continent_code'?: NjsByteString; |
| readonly 'geoip_city_country_code'?: NjsByteString; |
| readonly 'geoip_city_country_code3'?: NjsByteString; |
| readonly 'geoip_city_country_name'?: NjsByteString; |
| readonly 'geoip_country_code'?: NjsByteString; |
| readonly 'geoip_country_code3'?: NjsByteString; |
| readonly 'geoip_country_name'?: NjsByteString; |
| readonly 'geoip_dma_code'?: NjsByteString; |
| readonly 'geoip_latitude'?: NjsByteString; |
| readonly 'geoip_longitude'?: NjsByteString; |
| readonly 'geoip_org'?: NjsByteString; |
| readonly 'geoip_postal_code'?: NjsByteString; |
| readonly 'geoip_region'?: NjsByteString; |
| readonly 'geoip_region_name'?: NjsByteString; |
| readonly 'gzip_ratio'?: NjsByteString; |
| readonly 'host'?: NjsByteString; |
| readonly 'hostname'?: NjsByteString; |
| readonly 'http2'?: NjsByteString; |
| readonly 'http_'?: NjsByteString; |
| readonly 'https'?: NjsByteString; |
| readonly 'invalid_referer'?: NjsByteString; |
| readonly 'is_args'?: NjsByteString; |
| readonly 'jwt_claim_'?: NjsByteString; |
| readonly 'jwt_header_'?: NjsByteString; |
| readonly 'limit_conn_status'?: NjsByteString; |
| readonly 'limit_rate'?: NjsByteString; |
| readonly 'limit_req_status'?: NjsByteString; |
| readonly 'memcached_key'?: NjsByteString; |
| readonly 'modern_browser'?: NjsByteString; |
| readonly 'msec'?: NjsByteString; |
| readonly 'msie'?: NjsByteString; |
| readonly 'nginx_version'?: NjsByteString; |
| readonly 'pid'?: NjsByteString; |
| readonly 'pipe'?: NjsByteString; |
| readonly 'protocol'?: NjsByteString; |
| readonly 'proxy_add_x_forwarded_for'?: NjsByteString; |
| readonly 'proxy_host'?: NjsByteString; |
| readonly 'proxy_port'?: NjsByteString; |
| readonly 'proxy_protocol_addr'?: NjsByteString; |
| readonly 'proxy_protocol_port'?: NjsByteString; |
| readonly 'proxy_protocol_server_addr'?: NjsByteString; |
| readonly 'proxy_protocol_server_port'?: NjsByteString; |
| readonly 'query_string'?: NjsByteString; |
| readonly 'realip_remote_addr'?: NjsByteString; |
| readonly 'realip_remote_port'?: NjsByteString; |
| readonly 'realpath_root'?: NjsByteString; |
| readonly 'remote_addr'?: NjsByteString; |
| readonly 'remote_port'?: NjsByteString; |
| readonly 'remote_user'?: NjsByteString; |
| readonly 'request'?: NjsByteString; |
| readonly 'request_body'?: NjsByteString; |
| readonly 'request_body_file'?: NjsByteString; |
| readonly 'request_completion'?: NjsByteString; |
| readonly 'request_filename'?: NjsByteString; |
| readonly 'request_id'?: NjsByteString; |
| readonly 'request_length'?: NjsByteString; |
| readonly 'request_method'?: NjsByteString; |
| readonly 'request_time'?: NjsByteString; |
| readonly 'request_uri'?: NjsByteString; |
| readonly 'scheme'?: NjsByteString; |
| readonly 'secure_link'?: NjsByteString; |
| readonly 'secure_link_expires'?: NjsByteString; |
| readonly 'sent_http_'?: NjsByteString; |
| readonly 'sent_trailer_'?: NjsByteString; |
| readonly 'server_addr'?: NjsByteString; |
| readonly 'server_name'?: NjsByteString; |
| readonly 'server_port'?: NjsByteString; |
| readonly 'server_protocol'?: NjsByteString; |
| readonly 'session_log_binary_id'?: NjsByteString; |
| readonly 'session_log_id'?: NjsByteString; |
| readonly 'session_time'?: NjsByteString; |
| readonly 'slice_range'?: NjsByteString; |
| readonly 'spdy'?: NjsByteString; |
| readonly 'spdy_request_priority'?: NjsByteString; |
| readonly 'ssl_cipher'?: NjsByteString; |
| readonly 'ssl_ciphers'?: NjsByteString; |
| readonly 'ssl_client_cert'?: NjsByteString; |
| readonly 'ssl_client_escaped_cert'?: NjsByteString; |
| readonly 'ssl_client_fingerprint'?: NjsByteString; |
| readonly 'ssl_client_i_dn'?: NjsByteString; |
| readonly 'ssl_client_i_dn_legacy'?: NjsByteString; |
| readonly 'ssl_client_raw_cert'?: NjsByteString; |
| readonly 'ssl_client_s_dn'?: NjsByteString; |
| readonly 'ssl_client_s_dn_legacy'?: NjsByteString; |
| readonly 'ssl_client_serial'?: NjsByteString; |
| readonly 'ssl_client_v_end'?: NjsByteString; |
| readonly 'ssl_client_v_remain'?: NjsByteString; |
| readonly 'ssl_client_v_start'?: NjsByteString; |
| readonly 'ssl_client_verify'?: NjsByteString; |
| readonly 'ssl_curves'?: NjsByteString; |
| readonly 'ssl_early_data'?: NjsByteString; |
| readonly 'ssl_preread_alpn_protocols'?: NjsByteString; |
| readonly 'ssl_preread_protocol'?: NjsByteString; |
| readonly 'ssl_preread_server_name'?: NjsByteString; |
| readonly 'ssl_protocol'?: NjsByteString; |
| readonly 'ssl_server_name'?: NjsByteString; |
| readonly 'ssl_session_id'?: NjsByteString; |
| readonly 'ssl_session_reused'?: NjsByteString; |
| readonly 'status'?: NjsByteString; |
| readonly 'tcpinfo_rtt'?: NjsByteString; |
| readonly 'tcpinfo_rttvar'?: NjsByteString; |
| readonly 'tcpinfo_snd_cwnd'?: NjsByteString; |
| readonly 'tcpinfo_rcv_space'?: NjsByteString; |
| readonly 'time_iso8601'?: NjsByteString; |
| readonly 'time_local'?: NjsByteString; |
| readonly 'uid_got'?: NjsByteString; |
| readonly 'uid_reset'?: NjsByteString; |
| readonly 'uid_set'?: NjsByteString; |
| readonly 'upstream_addr'?: NjsByteString; |
| readonly 'upstream_bytes_received'?: NjsByteString; |
| readonly 'upstream_bytes_sent'?: NjsByteString; |
| readonly 'upstream_cache_status'?: NjsByteString; |
| readonly 'upstream_connect_time'?: NjsByteString; |
| readonly 'upstream_cookie_'?: NjsByteString; |
| readonly 'upstream_first_byte_time'?: NjsByteString; |
| readonly 'upstream_header_time'?: NjsByteString; |
| readonly 'upstream_http_'?: NjsByteString; |
| readonly 'upstream_queue_time'?: NjsByteString; |
| readonly 'upstream_response_length'?: NjsByteString; |
| readonly 'upstream_response_time'?: NjsByteString; |
| readonly 'upstream_session_time'?: NjsByteString; |
| readonly 'upstream_status'?: NjsByteString; |
| readonly 'upstream_trailer_'?: NjsByteString; |
| readonly 'uri'?: NjsByteString; |
| |
| [prop: string]: NjsStringLike | undefined; |
| } |
| |
| /** |
| * @since 0.5.0 |
| */ |
| type NginxRawVariables = { |
| [K in keyof NginxVariables]: Buffer | undefined; |
| }; |
| |
| interface NginxSubrequestOptions { |
| /** |
| * Arguments string, by default an empty string is used. |
| */ |
| args?: NjsStringLike, |
| /** |
| * Request body, by default the request body of the parent request object is used. |
| */ |
| body?: NjsStringLike, |
| /** |
| * HTTP method, by default the GET method is used. |
| */ |
| method?: "GET" | "POST" | "OPTIONS" | "HEAD" | "PROPFIND" | "PUT" |
| | "MKCOL" | "DELETE" | "COPY" | "MOVE" | "PROPPATCH" |
| | "LOCK" | "PATCH" | "TRACE", |
| /** |
| * if true, the created subrequest is a detached subrequest. |
| * Responses to detached subrequests are ignored. |
| */ |
| detached?: boolean |
| } |
| |
| interface NginxHTTPSendBufferOptions { |
| /** |
| * True if data is a last buffer. |
| */ |
| last?: boolean |
| /** |
| * True if the buffer should have the flush flag. |
| */ |
| flush?: boolean |
| } |
| |
| interface NginxHTTPRequest { |
| /** |
| * Request arguments object. |
| */ |
| readonly args: NginxHTTPArgs; |
| /** |
| * After calling this function, next data chunks will be passed to |
| * the client without calling js_body_filter. |
| * |
| * **Warning:** May be called only from the js_body_filter function. |
| * |
| * @since 0.5.2 |
| */ |
| done(): void; |
| /** |
| * Writes a string to the error log on the error level of logging. |
| * @param message Message to log. |
| */ |
| error(message: NjsStringOrBuffer): void; |
| /** |
| * Finishes sending a response to the client. |
| */ |
| finish(): void; |
| /** |
| * Incoming headers object. |
| */ |
| readonly headersIn: NginxHeadersIn; |
| /** |
| * Outgoing headers object. |
| */ |
| readonly headersOut: NginxHeadersOut; |
| /** |
| * HTTP protocol version. |
| */ |
| readonly httpVersion: NjsByteString; |
| /** |
| * Performs an internal redirect to the specified uri. |
| * If the uri starts with the “@” prefix, it is considered a named location. |
| * The actual redirect happens after the handler execution is completed. |
| * @param uri Location to redirect to. |
| */ |
| internalRedirect(uri: NjsStringOrBuffer): void; |
| /** |
| * Writes a string to the error log on the info level of logging. |
| * @param message Message to log. |
| */ |
| log(message: NjsStringOrBuffer): void; |
| /** |
| * HTTP method. |
| */ |
| readonly method: NjsByteString; |
| /** |
| * Parent for subrequest object. |
| */ |
| readonly parent?: NginxHTTPRequest; |
| /** |
| * Client address. |
| */ |
| readonly remoteAddress: NjsByteString; |
| /** |
| * Client request body if it has not been written to a temporary file. |
| * To ensure that the client request body is in memory, its size should be |
| * limited by client_max_body_size, and a sufficient buffer size should be set |
| * using client_body_buffer_size. The property is available only in the js_content directive. |
| * |
| * @since 0.5.0 |
| */ |
| readonly requestBuffer?: Buffer; |
| /** |
| * The same as `requestBuffer`, but returns a string. |
| * |
| * **Warning:** It may convert bytes invalid in UTF-8 encoding into the replacement character. |
| * |
| * @see requestBuffer |
| * @since 0.5.0 |
| */ |
| readonly requestText?: NjsByteString; |
| /** |
| * The same as `requestBuffer`, but returns a string. |
| * |
| * **Warning:** It may convert bytes invalid in UTF-8 encoding into the replacement character. |
| * |
| * @see requestBuffer |
| * @see requestText |
| * @deprecated Use `requestText` or `requestBuffer` instead. |
| */ |
| readonly requestBody?: NjsByteString; |
| /** |
| * Subrequest response body. The size of response body is limited by |
| * the subrequest_output_buffer_size directive. |
| * |
| * @since 0.5.0 |
| */ |
| readonly responseBuffer?: Buffer; |
| /** |
| * The same as `responseBuffer`, but returns a string. |
| * |
| * **Warning:** It may convert bytes invalid in UTF-8 encoding into the replacement character. |
| * |
| * @see responseBuffer |
| */ |
| readonly responseText?: NjsByteString; |
| /** |
| * The same as `responseBuffer`, but returns a string. |
| * |
| * **Warning:** It may convert bytes invalid in UTF-8 encoding into the replacement character. |
| * |
| * @see responseBuffer |
| * @see responseText |
| * @deprecated Use `responseText` or `responseBuffer` instead. |
| */ |
| readonly responseBody?: NjsByteString; |
| /** |
| * Sends the entire response with the specified status to the client. |
| * It is possible to specify either a redirect URL (for codes 301, 302, 303, 307, and 308) |
| * or the response body text (for other codes) as the second argument. |
| * @param status Respose status code. |
| * @param body Respose body. |
| */ |
| return(status: number, body?: NjsStringOrBuffer): void; |
| /** |
| * Sends a part of the response body to the client. |
| */ |
| send(part: NjsStringOrBuffer): void; |
| /** |
| * Adds data to the chain of data chunks to be forwarded to the next body filter. |
| * The actual forwarding happens later, when the all the data chunks of the current |
| * chain are processed. |
| * |
| * **Warning:** May be called only from the js_body_filter function. |
| * |
| * @since 0.5.2 |
| * @param data Data to send. |
| * @param options Object used to override nginx buffer flags derived from |
| * an incoming data chunk buffer. |
| */ |
| sendBuffer(data: NjsStringOrBuffer, options?: NginxHTTPSendBufferOptions): void; |
| /** |
| * Sends the HTTP headers to the client. |
| */ |
| sendHeader(): void; |
| /** |
| * Respose status code. |
| */ |
| status: number; |
| /** |
| * Creates a subrequest with the given uri and options. |
| * A subrequest shares its input headers with the client request. |
| * To send headers different from original headers to a proxied server, |
| * the proxy_set_header directive can be used. To send a completely new |
| * set of headers to a proxied server, the proxy_pass_request_headers directive can be used. |
| * @param uri Subrequest location. |
| * @param options Subrequest options. |
| * @param callback Completion callback. |
| */ |
| subrequest(uri: NjsStringOrBuffer, options: NginxSubrequestOptions & { detached: true }): void; |
| subrequest(uri: NjsStringOrBuffer, options?: NginxSubrequestOptions | string): Promise<NginxHTTPRequest>; |
| subrequest(uri: NjsStringOrBuffer, options: NginxSubrequestOptions & { detached?: false } | string, |
| callback:(reply:NginxHTTPRequest) => void): void; |
| subrequest(uri: NjsStringOrBuffer, callback:(reply:NginxHTTPRequest) => void): void; |
| /** |
| * Current URI in request, normalized. |
| */ |
| readonly uri: NjsByteString; |
| /** |
| * nginx variables as Buffers. |
| * |
| * @since 0.5.0 |
| * @see variables |
| */ |
| readonly rawVariables: NginxRawVariables; |
| /** |
| * nginx variables as strings. |
| * |
| * **Warning:** Bytes invalid in UTF-8 encoding may be converted into the replacement character. |
| * |
| * @see rawVariables |
| */ |
| readonly variables: NginxVariables; |
| /** |
| * Writes a string to the error log on the warn level of logging. |
| * @param message Message to log. |
| */ |
| warn(message: NjsStringOrBuffer): void; |
| } |