export function parseHostTarget(input: string) {
    try {
        const normalized = input.match(/^(https?|h2c):\/\//)
            ? input
            : `http://${input}`;
        const url = new URL(normalized);

        const protocol = url.protocol.replace(":", ""); // http | https | h2c
        const host = url.hostname;

        let defaultPort: number;
        switch (protocol) {
            case "https":
                defaultPort = 443;
                break;
            case "h2c":
                defaultPort = 80;
                break;
            default: // http
                defaultPort = 80;
                break;
        }

        const port = url.port ? parseInt(url.port, 10) : defaultPort;

        return { protocol, host, port };
    } catch {
        return null;
    }
}
