UNPKG

@swplabs/peanutforwp

Version:

Peanut for WordPress. Build your themes and blocks with components.

72 lines (58 loc) 1.56 kB
const http = require('http'); const https = require('https'); const { readFileSync } = require('fs'); const extendServer = (server) => { const connections = {}; server.on('connection', (conn) => { const key = conn.remoteAddress + ':' + conn.remotePort; connections[key] = conn; conn.on('close', () => { delete connections[key]; }); }); server.destroy = () => { // server.close(cb); Object.keys(connections).forEach((key) => { connections[key].destroy(); }); return new Promise((resolve, reject) => { server.close((err) => { if (err) { reject(err); } else { resolve(); } }); }); }; }; const createServer = ({ env, port, httpsPort, requestHandler }) => { let httpsServer; const httpServer = http.createServer({}, requestHandler); httpServer.listen(port, () => { console.log(`[server] App runing on http://localhost:${port}`); console.log('[server]', 'Environment set to: ' + env); }); extendServer(httpServer); if (httpsPort) { httpsServer = https.createServer( { key: readFileSync('./certs/localhost.key.pem'), cert: readFileSync('./certs/localhost.cert.pem'), allowHTTP1: true }, requestHandler ); httpsServer.listen(httpsPort, () => { console.log('[server]', 'HTTPS is enabled and running on https://localhost:' + httpsPort); }); extendServer(httpsServer); } return { httpServer, httpsServer }; }; module.exports = { createServer };