function search(input: string, template: string) { try { // input is a valid URL: // eg: https://example.com, https://example.com/test?q=param return new URL(input).toString(); } catch (err) { // input was not a valid URL } try { // input is a valid URL when http:// is added to the start: // eg: example.com, https://example.com/test?q=param const url = new URL(`http://${input}`); // only if the hostname has a TLD/subdomain if (url.hostname.includes(".")) return url.toString(); } catch (err) { // input was not valid URL } // input may have been a valid URL, however the hostname was invalid // Attempts to convert the input to a fully qualified URL have failed // Treat the input as a search query return template.replace("%s", encodeURIComponent(input)); } export { search };