import net, { AddressInfo } from "net" import logger from "./logger" // todo: check https://github.com/http-party/node-portfinder ? export async function getFreePort(): Promise { logger.debug("Lookup new free port.."); return new Promise((resolve, reject) => { const server = net.createServer() server.unref() server.on("listening", () => { const port = (server.address() as AddressInfo).port server.close(() => resolve(port)); logger.debug(`New port found: ${port}`); }); server.on("error", error => { logger.error(`Can't resolve new port: "${error}"`); reject(error); }); server.listen({ host: "127.0.0.1", port: 0 }) }) }