Nativefier/src/options/normalizeUrl.ts

32 lines
899 B
TypeScript

import * as url from 'url';
import * as log from 'loglevel';
function appendProtocol(inputUrl: string): string {
const parsed = url.parse(inputUrl);
if (!parsed.protocol) {
const urlWithProtocol = `https://${inputUrl}`;
log.warn(
`URL "${inputUrl}" lacks a protocol.`,
`Will try to parse it as HTTPS: "${urlWithProtocol}".`,
`Please pass "http://${inputUrl}" if this is what you meant.`,
);
return urlWithProtocol;
}
return inputUrl;
}
export function normalizeUrl(urlToNormalize: string): string {
const urlWithProtocol = appendProtocol(urlToNormalize);
let parsedUrl: url.URL;
try {
parsedUrl = new url.URL(urlWithProtocol);
} catch (err) {
throw `Your url "${urlWithProtocol}" is invalid`;
}
const normalizedUrl = parsedUrl.toString();
log.debug(`Normalized URL ${urlToNormalize} to:`, normalizedUrl);
return normalizedUrl;
}