/* eslint-disable */

function normalizeUrl(pathComponents) {
  return pathComponents
    .reduce(function (accumulator, item) {
      switch (item) {
        case '..':
          accumulator.pop();
          break;
        case '.':
          break;
        default:
          accumulator.push(item);
      }

      return accumulator;
    }, [])
    .join('/');
}

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