mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
28 lines
786 B
TypeScript
28 lines
786 B
TypeScript
import logger from "./logger"
|
|
import { createServer } from "net"
|
|
|
|
// Adapted from https://gist.github.com/mikeal/1840641#gistcomment-2896667
|
|
function checkPort(port: number) {
|
|
const server = createServer()
|
|
server.unref()
|
|
return new Promise((resolve, reject) =>
|
|
server
|
|
.on('error', error => reject(error))
|
|
.on('listening', () => server.close(() => resolve(port)))
|
|
.listen({host: "127.0.0.1", port: port}))
|
|
}
|
|
|
|
export async function getFreePort(firstPort: number, lastPort: number): Promise<number> {
|
|
let port = firstPort
|
|
|
|
while(true) {
|
|
try {
|
|
logger.debug("Checking port " + port + " availability ...")
|
|
await checkPort(port)
|
|
return(port)
|
|
} catch(error) {
|
|
if(++port > lastPort) throw("Could not find a free port")
|
|
}
|
|
}
|
|
}
|