Files
hiring-test-one/lib/local-web-server.js

55 lines
2.5 KiB
JavaScript
Raw Normal View History

2017-06-12 00:18:32 +01:00
const Lws = require('lws')
const path = require('path')
2017-07-08 16:30:57 +01:00
/**
* @module local-web-server
* @example
* const LocalWebServer = require('local-web-server')
* const localWebServer = new LocalWebServer()
* const server = localWebServer.create({
* port: port,
* directory: 'src'
* })
*/
/**
* @alias module:local-web-server
*/
2017-06-12 00:18:32 +01:00
class LocalWebServer extends Lws {
2017-07-08 16:30:57 +01:00
/**
* Create a listening HTTP/HTTPS server.
* @param [options] {object} - Server options
* @param [options.port] {number} - Port
* @param [options.hostname] {string} -The hostname (or IP address) to listen on. Defaults to 0.0.0.0.
* @param [options.maxConnections] {number} - The maximum number of concurrent connections supported by the server.
* @param [options.keepAliveTimeout] {number} - The period (in milliseconds) of inactivity a connection will remain open before being destroyed. Set to `0` to keep connections open indefinitely.
* @param [options.configFile] {string} - Config file path, defaults to 'lws.config.js'.
* @param [options.https] {boolean} - Enable HTTPS using a built-in key and cert registered to the domain 127.0.0.1.
* @param [options.key] {string} - SSL key file path. Supply along with --cert to launch a https server.
* @param [options.cert] {string} - SSL cert file path. Supply along with --key to launch a https server.
* @param [options.pfx] {string} - Path to an PFX or PKCS12 encoded private key and certificate chain. An alternative to providing --key and --cert.
* @param [options.ciphers] {string} - Optional cipher suite specification, replacing the default.
* @param [options.secureProtocol] {string} - Optional SSL method to use, default is "SSLv23_method".
* @param [options.stack] {string[]|Middlewares[]} - Array of feature classes, or filenames of modules exporting a feature class.
* @param [options.server] {string|ServerFactory} - Custom server factory, e.g. lws-http2.
* @param [options.websocket] {string|Websocket} - Path to a websocket module
* @param [options.moduleDir] {string[]} - One or more directories to search for feature modules.
* @returns {Server}
*/
2017-06-25 19:21:38 +01:00
create (options) {
2017-06-26 14:24:48 +01:00
const usage = require('lws/lib/usage')
2017-06-27 00:46:42 +01:00
usage.defaults
.set('an', 'ws')
.set('av', require('../package').version)
.set('cd4', 'api')
2017-06-12 00:18:32 +01:00
options = Object.assign({
2017-06-25 19:21:38 +01:00
moduleDir: path.resolve(__dirname, `../node_modules`),
2017-06-12 00:18:32 +01:00
modulePrefix: 'lws-',
2017-07-05 12:49:26 +01:00
stack: require('./default-stack')
2017-06-12 00:18:32 +01:00
}, options)
2017-06-25 19:21:38 +01:00
return super.create(options)
2017-06-12 00:18:32 +01:00
}
}
module.exports = LocalWebServer