UNPKG

@gabliam/web-core

Version:
61 lines (60 loc) 2.12 kB
"use strict"; 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;