/*
* @license Apache-2.0
*
* Copyright (c) 2021 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// TypeScript Version: 4.1
/* eslint-disable max-lines */
import tempHttpServer = require( './../../disposable-http-server' );
import httpServer = require( './../../http-server' );
import http2SecureServer = require( './../../http2-secure-server' );
import simpleHttpServer = require( './../../simple-http-server' );
/**
* Interface describing the `net` namespace.
*/
interface Namespace {
/**
* Creates a disposable HTTP server.
*
* @param options - server options
* @param options.html - HTML content to serve
* @param options.javascript - JavaScript to serve
* @param options.port - server port (default: 0)
* @param options.maxport - max server port
* @param options.hostname - server hostname
* @param options.address - server address (default: '0.0.0.0')
* @param options.open - boolean indicating whether to launch a web browser (default: false)
* @param clbk - callback to invoke upon creating a server
* @throws must provide valid options
* @throws error encountered when starting server
*
* @example
* var opts = {
* 'html': '
Beep
'
* };
*
* ns.tempHttpServer( opts, onReady );
*
* function onReady( error, server ) {
* if ( error ) {
* throw error;
* }
* server.close();
* }
*/
tempHttpServer: typeof tempHttpServer;
/**
* Returns a function which creates an HTTP server.
*
* ## Notes
*
* - In addition to options documented below, the function supports any options supported by `http.createServer`. Which server options are supported depends on the Node.js version. Older Node.js versions (e.g., <= v8.12.0) do not support an options object when calling `http.createServer`, and, for those versions, any options supported by `http.createServer` in later Node.js versions are ignored.
*
* @param options - server options
* @param options.port - server port (default: 0)
* @param options.maxport - max server port
* @param options.hostname - server hostname
* @param options.address - server address (default: '127.0.0.1')
* @param requestListener - callback invoked upon receiving an HTTP request
* @throws must provide valid options
* @returns function which creates an HTTP server
*
* @example
* var opts = {
* 'port': 7331,
* 'address': '0.0.0.0'
* };
* var ns.httpServer = ns.httpServer( opts );
*
* @example
* var opts = {
* 'port': 7331,
* 'address': '0.0.0.0'
* };
* function onRequest( request, response ) {
* console.log( request.url );
* response.end( 'OK' );
* }
* var ns.httpServer = ns.httpServer( opts, onRequest );
*/
httpServer: typeof httpServer;
/**
* Returns a function which creates an HTTP/2 server.
*
* ## Notes
*
* - The function requires that either the PFX option is provided or a cert/key pair is provided.
* - In addition to options documented below, the function supports any options supported by `http2.createSecureServer`. Which server options are supported depends on the Node.js version.
*
* @param options - server options
* @param options.port - server port (default: 0)
* @param options.maxport - max server port
* @param options.hostname - server hostname
* @param options.address - server address (default: '127.0.0.1')
* @param options.pfx - PFX or PKCS12 encoded private key and certificate chain
* @param options.cert - cert chains in PEM format
* @param options.key - private keys in PEM format
* @param requestListener - callback invoked upon receiving an HTTP request
* @throws must provide valid options
* @returns function which creates an HTTP/2 server
*
* @example
* var readFileSync = require( '@stdlib/fs/read-file' ).sync;
*
* var opts = {
* 'port': 7331,
* 'address': '0.0.0.0',
* 'cert': readFileSync( './path/to/cert.pem' ),
* 'key': readFileSync( './path/to/key.pem' )
* };
* var http2Server = ns.http2SecureServer( opts );
*
* @example
* var readFileSync = require( '@stdlib/fs/read-file' ).sync;
*
* var opts = {
* 'port': 7331,
* 'address': '0.0.0.0',
* 'cert': readFileSync( './path/to/cert.pem' ),
* 'key': readFileSync( './path/to/key.pem' )
* };
* function onRequest( request, response ) {
* console.log( request.url );
* response.end( 'OK' );
* }
* var http2Server = ns.http2SecureServer( opts, onRequest );
*/
http2SecureServer: typeof http2SecureServer;
/**
* Creates a simple HTTP server. The implementation takes inspiration from Python's [SimpleHTTPServer][python-simplehttpserver].
*
* [python-simplehttpserver]: https://docs.python.org/2/library/simplehttpserver.html
*
* @param options - server options
* @param options.dir - directory from which to serve files
* @param options.port - server port (default: 0)
* @param options.maxport - max server port
* @param options.hostname - server hostname
* @param options.address - server address (default: '0.0.0.0')
* @param options.open - indicates whether to launch a web browser (default: false)
* @param clbk - callback to invoke upon creating a server
* @throws must provide valid options
* @throws error encountered when starting server
*
* @example
* var opts = {
* 'dir': './',
* 'port': 7331,
* 'hostname': 'localhost',
* 'open': false
* };
* ns.simpleHttpServer( opts, onReady );
*
* function onReady( error, server ) {
* if ( error ) {
* throw error;
* }
* server.close();
* }
*/
simpleHttpServer: typeof simpleHttpServer;
}
/**
* Networking.
*/
declare var ns: Namespace;
// EXPORTS //
export = ns;