mirror of
https://github.com/alkimake/paperclip.git
synced 2026-06-14 18:10:39 +09:00
19 lines
610 B
TypeScript
19 lines
610 B
TypeScript
|
|
import net from "node:net";
|
||
|
|
|
||
|
|
export function checkPort(port: number): Promise<{ available: boolean; error?: string }> {
|
||
|
|
return new Promise((resolve) => {
|
||
|
|
const server = net.createServer();
|
||
|
|
server.once("error", (err: NodeJS.ErrnoException) => {
|
||
|
|
if (err.code === "EADDRINUSE") {
|
||
|
|
resolve({ available: false, error: `Port ${port} is already in use` });
|
||
|
|
} else {
|
||
|
|
resolve({ available: false, error: err.message });
|
||
|
|
}
|
||
|
|
});
|
||
|
|
server.once("listening", () => {
|
||
|
|
server.close(() => resolve({ available: true }));
|
||
|
|
});
|
||
|
|
server.listen(port, "127.0.0.1");
|
||
|
|
});
|
||
|
|
}
|