@gabliam/web-core
Version:
Gabliam plugin for add web-core
61 lines (60 loc) • 2.12 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.HttpServerStarter = void 0;
const http_1 = require("http");
/**
* This class is used for start the http server
* If you want use a Https, or use an other class (ex: unit-http), override this class
*
* Graphql override this class
*/
class HttpServerStarter {
start(restConfig, webConfiguration, listenerCreator) {
const { port, verbose } = restConfig;
let server = (0, http_1.createServer)(listenerCreator());
server.listen(port, restConfig.hostname);
/* istanbul ignore next */
function onError(error) {
if (error.syscall !== 'listen')
throw error;
const bind = typeof port === 'string' ? `Pipe ${port}` : `Port ${port}`;
switch (error.code) {
case 'EACCES':
if (verbose) {
console.error(`${bind} requires elevated privileges`);
}
process.exit(1);
break;
case 'EADDRINUSE':
if (verbose) {
console.error(`${bind} is already in use`);
}
process.exit(1);
break;
default:
throw error;
}
}
/* istanbul ignore next */
function onListening() {
if (verbose) {
const addr = server.address();
let bind = '';
if (typeof addr === 'string') {
bind = `pipe ${addr}`;
}
else if (addr && addr.port) {
bind = `port ${addr.port}`;
}
console.log(`Listening on ${bind}`);
}
}
server.on('error', onError);
server.on('listening', onListening);
for (const serverConfig of webConfiguration.serverConfigs) {
server = serverConfig(server);
}
return server;
}
}
exports.HttpServerStarter = HttpServerStarter;