normalize-url.js 811 B

1234567891011121314151617181920212223242526272829303132333435
  1. "use strict";
  2. /* eslint-disable */
  3. function normalizeUrl(pathComponents) {
  4. return pathComponents.reduce(function (accumulator, item) {
  5. switch (item) {
  6. case '..':
  7. accumulator.pop();
  8. break;
  9. case '.':
  10. break;
  11. default:
  12. accumulator.push(item);
  13. }
  14. return accumulator;
  15. }, []).join('/');
  16. }
  17. module.exports = function (urlString) {
  18. urlString = urlString.trim();
  19. if (/^data:/i.test(urlString)) {
  20. return urlString;
  21. }
  22. var protocol = urlString.indexOf('//') !== -1 ? urlString.split('//')[0] + '//' : '';
  23. var components = urlString.replace(new RegExp(protocol, 'i'), '').split('/');
  24. var host = components[0].toLowerCase().replace(/\.$/, '');
  25. components[0] = '';
  26. var path = normalizeUrl(components);
  27. return protocol + host + path;
  28. };