-
Notifications
You must be signed in to change notification settings - Fork 2
/
url-parser.min.js
1 lines (1 loc) · 7.5 KB
/
url-parser.min.js
1
!function(a){"use strict";var b;b=function(a){if(!(this instanceof b))return new b(a);void 0===a&&(a=void 0!==location?location.href:"");var f,c={},d={},e={};c.data_uri=new RegExp("^(?:([a-z\\u00a1-\\uffff0-9]+-?)\\:(?:(.*)))$"),c.valid_url=new RegExp("^(?:([a-z\\u00a1-\\uffff0-9]+-?)?(?:(?:\\:)?//)(?:((?:\\S*)(?::\\S*)?)@)?((?:(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])|(?:(?:[a-z\\u00a1-\\uffff0-9]|[a-z\\u00a1-\\uffff0-9][a-z0-9\\u00a1-\\uffff\\-]*[a-z0-9\\u00a1-\\uffff])\\.)*(?:[a-z\\u00a1-\\uffff]|[a-z\\u00a1-\\uffff][a-z0-9\\u00a1-\\uffff\\-]*[a-z0-9\\u00a1-\\uffff])|(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))))(?::(\\d{2,5}))?)?((?:(?:[\\/])|(?:\\.{2})||(?:\\.{1})|(?:^[a-z\\u00a1-\\uffff]))(?:[^\\?^#^:]*))?(?:\\?([^\\#]+)*)?(?:\\#(.*))?$","i");var g=function(a,b){var c,d=!0;for(c in b)if(b.hasOwnProperty(c)){if(d=!1,typeof b[c]!=typeof a[c])return!1;if(null===b[c]!=(null===a[c]))return!1;switch(typeof b[c]){case"undefined":if(void 0!==typeof a[c])return!1;break;case"object":if(null!==b[c]&&null!==a[c]&&(b[c].constructor.toString()!==a[c].constructor.toString()||!g(b[c],a[c])))return!1;break;case"function":if(b[c].toString()!==a[c].toString())return!1;break;default:if(b[c]!==a[c])return!1}}if(d){for(c in a)if(a.hasOwnProperty(c))return!1;return!0}return!0},h=function(a){var b=c.valid_url.exec(a);if(b){if(f=b[0]||null,d.protocol=b[1]||null,d.userinfo=b[2]||null,d.userinfo){var e=d.userinfo.indexOf(":");e>-1?(d.username=d.userinfo.substring(0,e),d.password=d.userinfo.substring(e+1)):(d.username=d.userinfo,d.password=null)}else d.username=null,d.password=null;return d.hostname=b[3]?encodeURIComponent(b[3]):null,d.port=b[4]||null,d.path=b[5]?encodeURI(b[5]):null,d.path&&(d.path=i(d.path),l()),d.queryString=b[6]?encodeURI(b[6]):null,d.fragment=b[7]?encodeURI(b[7]):null,!0}return(b=c.data_uri.exec(a))?(f=b[0]||null,d.protocol=b[1]||null,d.data=b[2]||null,!0):!1},i=function(a){var b,c;for(a=a.replace(/(\/(\.\/)+)|\/{2,}/g,"/");;){if(b=a.indexOf("/../"),-1===b)break;if(0===b){a=a.substring(3);break}c=a.substring(0,b).lastIndexOf("/"),-1===c&&(c=b),a=a.substring(0,c)+a.substring(b+3)}return a},j=function(a){if(void 0===a&&(a=d.queryString),a=decodeURI(a)){var b={};return a.replace(new RegExp("([^?=&]+)(=([^&]*))?","g"),function(a,c,d,e){var f=c;f.match(/\[\]$/)?(f=f.replace(/\[\]$/,""),b[f]?b[f].push(e):(b[f]=[],b[f].push(e))):b[f]=e}),b}return null},k=function(a,b){var c=[];for(var e in a)if(a.hasOwnProperty(e)){var f=b?b+"["+e+"]":e,g=a[e];c.push("object"==typeof g?k(g,f):encodeURIComponent(f)+"="+encodeURIComponent(g))}return d.queryString=c.join("&")},l=function(){var a=d.path.lastIndexOf("/");a>-1?(d.directory=d.path.substring(0,a+1),d.filename=d.path.substring(a+1)):(d.directory="/",d.filename=d.path),a=d.filename.lastIndexOf("."),d.suffix=a>-1?d.filename.substring(a+1):null};return this.src=function(a){return void 0===a?f:this.isURL(a)?(d={},e={},f="",h(a),d.queryString&&(e=j(d.queryString)),this):!1},this.parse=function(a){return this.src(a).getParts()},this.url=function(){return this.computed},this.computed=function(){var a="";return a+=d.protocol?d.protocol+"://":"",a+=d.username&&d.password?d.username+":"+d.password+"@":"",a+=d.username&&!d.password?d.username+"@":"",a+=d.hostname||"",a+=d.port?":"+d.port:"",a+=d.path||"",a+=d.queryString?"?"+d.queryString:"",a+=d.fragment?"#"+d.fragment:""},this.protocol=function(a){return void 0===a?d.protocol:(d.protocol=String(a),this)},this.userinfo=function(a){if(void 0===a)return d.username+":"+d.password;var b=a.indexOf(":");return b>-1?(d.username=encodeURI(a.substring(0,b)),d.password=encodeURI(a.substring(b+1)),d.userinfo=d.username+":"+d.password):(d.username=encodeURI(a),d.password=null,d.userinfo=d.username),this},this.username=function(a){return void 0===a?d.username:(d.username=encodeURI(String(a)),this)},this.password=function(a){return void 0===a?d.password:(d.password=encodeURI(String(a)),this)},this.hostname=function(a){return void 0===a?d.hostname:(d.hostname=encodeURI(String(a)),this)},this.port=function(a){return void 0===a?parseInt(d.port,10):(d.port=parseInt(a,10),this)},this.path=function(a){return void 0===a?d.path:(d.path=encodeURI(String(a)),l(),this)},this.normalizePath=function(a){return i(a)},this.directory=function(a){return void 0===a?d.directory:(d.directory=encodeURI(String(a)),d.path=d.directory+d.filename,this)},this.cd=function(a){var b;return b=this.normalizePath(d.directory+a),b="/"==b.substr(-1)?b:b+="/",d.directory=b,d.path=encodeURI(String(d.directory))+d.filename,this},this.filename=function(a){return void 0===a?d.filename:(d.filename=encodeURIComponent(String(a)),d.path=d.directory+d.filename,this)},this.suffix=function(a){if(void 0===a)return d.suffix;d.suffix=encodeURIComponent(String(a));var b=d.filename.lastIndexOf(".");return b>-1&&(d.filename=d.filename.substring(0,b)+"."+d.suffix),d.path=d.directory+d.filename,this},this.queryString=function(a){return void 0===a?d.queryString:(d.queryString=encodeURI(String(a)),this)},this.query=function(a){return void 0===a?e:"string"==typeof a?e[a]:"object"==typeof a?(e=a,k(e),this):!1},this.addQuery=function(a){var b;if("object"==typeof a){for(b in a)a.hasOwnProperty(b)&&(e[b]=encodeURI(String(a[b])));return k(e),this}return!1},this.removeQuery=function(a,b){return"string"==typeof a?"number"==typeof b?(delete e[a][b],k(e),this):(delete e[a],k(e),this):!1},this.fragment=function(a){return void 0===a?d.fragment:(d.fragment=encodeURI(String(a)),this)},this.getParts=function(){return d},this.isEqual=function(a,c,f){var h=!0;return"string"==typeof a&&(a=new b(a)),void 0===a?!1:(c=void 0===c||c===!1?!1:c,f=void 0===f||f===!1?!1:f,d.hostname&&a.hostname()&&(h=d.hostname===a.hostname()),h&&(h=d.path===a.path()),c&&(h=d.hostname===a.hostname()),h&&f&&(h=g(e,a.query())),h)},this.setBase=function(a){return void 0===a&&(a=new b(location.href)),"string"==typeof a&&(a=new b(a)),d.protocol=a.protocol(),d.userinfo=a.userinfo(),d.username=a.username(),d.password=a.password(),d.port=a.port(),d.hostname=a.hostname(),this},this.isRelative=function(a){return void 0===a&&(a=this),"string"==typeof a&&(a=new b(a)),!a.hostname()},this.isAbsolute=function(a){return!this.isRelative(a)},this.isURL=function(a){return c.valid_url.test(a)},h(a)?(d.queryString&&(e=j(d.queryString)),this):!1},"undefined"!=typeof module&&module.exports?module.exports=b:"undefined"!=typeof define?define([],function(){return b}):a.URI=b}(this);