"use strict"; /* eslint-disable */ /** * @param {string[]} pathComponents * @returns {string} */ function normalizeUrl(pathComponents) { return pathComponents.reduce(function (accumulator, item) { switch (item) { case "..": accumulator.pop(); break; case ".": break; default: accumulator.push(item); } return accumulator; }, /** @type {string[]} */[]).join("/"); } /** * @param {string} urlString * @returns {string} */ module.exports = function (urlString) { urlString = urlString.trim(); if (/^data:/i.test(urlString)) { return urlString; } var protocol = urlString.indexOf("//") !== -1 ? urlString.split("//")[0] + "//" : ""; var components = urlString.replace(new RegExp(protocol, "i"), "").split("/"); var host = components[0].toLowerCase().replace(/\.$/, ""); components[0] = ""; var path = normalizeUrl(components); return protocol + host + path; };