(hostname: string)
| 267 | }); |
| 268 | |
| 269 | const pickEphemeralPort = (hostname: string): Effect.Effect<number, Error> => |
| 270 | Effect.tryPromise({ |
| 271 | try: () => |
| 272 | new Promise<number>((resolve, reject) => { |
| 273 | const server = createServer() as ProbeServer; |
| 274 | |
| 275 | server.once("error", (error: unknown) => { |
| 276 | reject(error); |
| 277 | }); |
| 278 | |
| 279 | server.once("listening", () => { |
| 280 | const address = server.address(); |
| 281 | const port = typeof address === "object" && address !== null ? address.port : 0; |
| 282 | server.close(() => resolve(port)); |
| 283 | }); |
| 284 | |
| 285 | server.listen({ port: 0, host: toProbeHost(hostname) }); |
| 286 | }), |
| 287 | catch: (cause) => |
| 288 | cause instanceof Error |
| 289 | ? cause |
| 290 | : new Error(`Failed selecting ephemeral port: ${String(cause)}`), |
| 291 | }); |
| 292 | |
| 293 | export const chooseDaemonPort = (input: { |
| 294 | preferredPort: number; |
no test coverage detected