UNPKG

@beenotung/tslib

Version:
40 lines (39 loc) 1.19 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.findPort = findPort; exports.testPort = testPort; const net_1 = require("net"); /** @description find a port that is available for server port */ async function findPort(options) { if ('candidates' in options) { for (const port of options.candidates) { if (await testPort(port)) { return port; } } throw new Error('no port available'); } for (let port = options.initialPort; port <= 65535; port += options.step) { if (await testPort(port)) { return port; } } throw new Error('no port available'); } /** @description test if the port is available for server port */ function testPort(port) { return new Promise(resolve => { const server = (0, net_1.createServer)(); server.on('error', () => resolve(false)); server.listen(port, () => { server.close(error => { if (error) { resolve(false); } else { resolve(true); } }); }); }); }