import type { Server as HttpsServer } from "node:https"; export async function collectFailures(promises: ReadonlyArray | undefined>, failures: unknown[]): Promise { const settled = await Promise.allSettled(promises.filter((promise): promise is Promise => promise !== undefined)); for (const result of settled) if (result.status === "rejected") failures.push(result.reason); } export function configureServer(server: HttpsServer): void { server.keepAliveTimeout = 20_000; server.on("tlsClientError", () => {}); server.on("clientError", (_error, socket) => socket.destroy()); server.on("error", () => {}); } export function listen(server: HttpsServer, port: number): Promise { return new Promise((resolve, reject) => { const onError = (error: Error) => { server.off("listening", onListening); reject(error); }; const onListening = () => { server.off("error", onError); resolve(); }; server.once("error", onError); server.once("listening", onListening); server.listen(port, "0.0.0.0"); }); } export function lanVoiceUrls(hostnames: string[], ipAddresses: string[], port: number): string[] { const hosts = [...hostnames.filter((value) => value !== "localhost"), ...ipAddresses.filter((value) => value !== "127.0.0.1")]; if (hosts.length === 0) hosts.push("localhost"); return [...new Set(hosts.map((host) => `https://${host}:${port}`))]; }