mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Signed-off-by: Roman <ixrock@gmail.com> Co-authored-by: Sebastian Malton <sebastian@malton.name> Co-authored-by: Sebastian Malton <smalton@mirantis.com> Co-authored-by: Lauri Nevala <lauri.nevala@gmail.com> Co-authored-by: Alex Andreev <alex.andreev.email@gmail.com>
23 lines
699 B
TypeScript
23 lines
699 B
TypeScript
import net, { AddressInfo } from "net"
|
|
import logger from "./logger"
|
|
|
|
// todo: check https://github.com/http-party/node-portfinder ?
|
|
|
|
export async function getFreePort(): Promise<number> {
|
|
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 })
|
|
})
|
|
}
|