@beenotung/tslib
Version:
utils library in Typescript
40 lines (39 loc) • 1.19 kB
JavaScript
;
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);
}
});
});
});
}