123456789101112131415161718192021222324252627282930313233343536373839 |
- "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;
- };
|