///
///
interface NginxStreamVariables {
readonly 'binary_remote_addr'?: string;
readonly 'bytes_received'?: string;
readonly 'bytes_sent'?: string;
readonly 'connection'?: string;
readonly 'geoip_area_code'?: string;
readonly 'geoip_city'?: string;
readonly 'geoip_city_continent_code'?: string;
readonly 'geoip_city_country_code'?: string;
readonly 'geoip_city_country_code3'?: string;
readonly 'geoip_city_country_name'?: string;
readonly 'geoip_country_code'?: string;
readonly 'geoip_country_code3'?: string;
readonly 'geoip_country_name'?: string;
readonly 'geoip_dma_code'?: string;
readonly 'geoip_latitude'?: string;
readonly 'geoip_longitude'?: string;
readonly 'geoip_org'?: string;
readonly 'geoip_postal_code'?: string;
readonly 'geoip_region'?: string;
readonly 'geoip_region_name'?: string;
readonly 'hostname'?: string;
readonly 'limit_conn_status'?: string;
readonly 'msec'?: string;
readonly 'nginx_version'?: string;
readonly 'pid'?: string;
readonly 'proxy_add_x_forwarded_for'?: string;
readonly 'proxy_host'?: string;
readonly 'proxy_port'?: string;
readonly 'proxy_protocol_addr'?: string;
readonly 'proxy_protocol_port'?: string;
readonly 'proxy_protocol_server_addr'?: string;
readonly 'proxy_protocol_server_port'?: string;
readonly 'realip_remote_addr'?: string;
readonly 'realip_remote_port'?: string;
readonly 'remote_addr'?: string;
readonly 'remote_port'?: string;
readonly 'server_addr'?: string;
readonly 'server_port'?: string;
readonly 'ssl_cipher'?: string;
readonly 'ssl_ciphers'?: string;
readonly 'ssl_client_cert'?: string;
readonly 'ssl_client_escaped_cert'?: string;
readonly 'ssl_client_fingerprint'?: string;
readonly 'ssl_client_i_dn'?: string;
readonly 'ssl_client_raw_cert'?: string;
readonly 'ssl_client_s_dn'?: string;
readonly 'ssl_client_s_dn_legacy'?: string;
readonly 'ssl_client_serial'?: string;
readonly 'ssl_client_v_end'?: string;
readonly 'ssl_client_v_remain'?: string;
readonly 'ssl_client_v_start'?: string;
readonly 'ssl_client_verify'?: string;
readonly 'ssl_curves'?: string;
readonly 'ssl_early_data'?: string;
readonly 'ssl_preread_alpn_protocols'?: string;
readonly 'ssl_preread_protocol'?: string;
readonly 'ssl_preread_server_name'?: string;
readonly 'ssl_protocol'?: string;
readonly 'ssl_server_name'?: string;
readonly 'ssl_session_id'?: string;
readonly 'ssl_session_reused'?: string;
readonly 'status'?: string;
readonly 'time_iso8601'?: string;
readonly 'time_local'?: string;
[prop: string]: string | undefined;
}
/**
* @since 0.5.0
*/
type NginxStreamRawVariables = {
[K in keyof NginxStreamVariables]: Buffer | undefined;
};
interface NginxStreamCallbackFlags {
/**
* True if data is a last buffer.
*/
last: boolean
}
interface NginxStreamSendOptions {
/**
* True if data is a last buffer.
*/
last?: boolean
/**
* True if the buffer should have the flush flag.
*/
flush?: boolean
}
interface NginxStreamRequest {
/**
* Successfully finalizes the phase handler. An alias to s.done(0).
*
* @since 0.2.4
* @see done()
*/
allow(): void;
/**
* Passing control to the next handler of the current phase (if any).
* An alias to s.done(-5).
*
* @since 0.2.4
* @see done()
*/
decline(): void;
/**
* Finalizes the phase handler with the access error code.
* An alias to s.done(403).
*
* @since 0.2.4
* @see done()
*/
deny(): void;
/**
* Sets an exit code for the current phase handler to a code value.
* The actual finalization happens when the js handler is completed and
* all pending events, for example from ngx.fetch() or setTimeout(),
* are processed.
*
* @param code Finalization code, by default is 0.
* Possible code values:
* 0 - successful finalization, passing control to the next phase
* -5 - undecided, passing control to the next handler of the current
* phase (if any)
* 403 - access is forbidden
* @since 0.2.4
* @see allow()
* @see decline()
* @see deny()
*/
done(code?: number): void;
/**
* Writes a string to the error log on the error level of logging.
* @param message Message to log.
*/
error(message: NjsStringOrBuffer): void;
/**
* Writes a string to the error log on the info level of logging.
* @param message Message to log.
*/
log(message: NjsStringOrBuffer): void;
/**
* Unregisters the callback set by on() method.
* @param event Event type to unregister.
* @see on()
*/
off(event: "upload" | "download" | "upstream" | "downstream"): void;
/**
* Registers a callback for the specified event.
* @param event Event type to register. The callback data value type
* depends on the event type. For "upload" | "download" the data type is string.
* For "upstream" | "downstream" the data type is Buffer.
* String and buffer events cannot be mixed for a single session.
*
* **Warning:** For string data type bytes invalid in UTF-8 encoding may be
* converted into the replacement character.
* @see off()
*/
on(event: "upload" | "download",
callback: (data: string, flags: NginxStreamCallbackFlags) => void): void;
on(event: "upstream" | "downstream",
callback: (data: Buffer, flags: NginxStreamCallbackFlags) => void): void;
/**
* Client address.
*/
readonly remoteAddress: string;
/**
* Adds data to the chain of data chunks that will be forwarded in
* the forward direction: in download callback to a client; in upload
* to an upstream server. The actual forwarding happens later, when the all
* the data chunks of the current chain are processed.
*
* @since 0.2.4
* @param data Data to send.
* @param options Object used to override nginx buffer flags derived from
* an incoming data chunk buffer.
* @see on()
*/
send(data: NjsStringOrBuffer, options?: NginxStreamSendOptions): void;
/**
* The stream session exit status. It is an alias to the $status variable.
* @since 0.5.2
*/
readonly status: number;
/**
* nginx variables as Buffers.
*
* @since 0.5.0
* @see variables
*/
readonly rawVariables: NginxStreamRawVariables;
/**
* nginx variables as strings.
*
* After 0.8.5 bytes invalid in UTF-8 encoding are converted into the replacement characters.
*
* @see rawVariables
*/
readonly variables: NginxStreamVariables;
/**
* Writes a string to the error log on the warn level of logging.
* @param message Message to log.
*/
warn(message: NjsStringOrBuffer): void;
}
/**
* NginxPeriodicSession object is available as the first argument in the js_periodic handler.
* @since 0.8.1
*/
interface NginxPeriodicSession {
/**
* nginx variables as Buffers.
*
* @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;
}