UNPKG

2.54 kBJavaScriptView Raw
1const t=(t,e)=>new RegExp("^"+e+"(\\/|\\?|#|$)","i").test(t),e=(e,a)=>t(e,a)?e.substr(a.length):e,a=t=>"/"===t.charAt(t.length-1)?t.slice(0,-1):t,r=t=>"/"===t.charAt(0)?t:"/"+t,s=t=>"/"===t.charAt(0)?t.substr(1):t,n=t=>{const{pathname:e,search:a,hash:r}=t;let s=e||"/";return a&&"?"!==a&&(s+="?"===a.charAt(0)?a:`?${a}`),r&&"#"!==r&&(s+="#"===r.charAt(0)?r:`#${r}`),s},h=t=>"/"===t.charAt(0),c=t=>Math.random().toString(36).substr(2,t),l=(t,e)=>{for(let a=e,r=a+1,s=t.length;r<s;a+=1,r+=1)t[a]=t[r];t.pop()},o=(t,e)=>{if(t===e)return!0;if(null==t||null==e)return!1;if(Array.isArray(t))return Array.isArray(e)&&t.length===e.length&&t.every((t,a)=>o(t,e[a]));const a=typeof t;if(a!==typeof e)return!1;if("object"===a){const a=t.valueOf(),r=e.valueOf();if(a!==t||r!==e)return o(a,r);const s=Object.keys(t),n=Object.keys(e);return s.length===n.length&&s.every(a=>o(t[a],e[a]))}return!1},i=(t,e)=>t.pathname===e.pathname&&t.search===e.search&&t.hash===e.hash&&t.key===e.key&&o(t.state,e.state),p=(t,e,a,r)=>{let s;"string"==typeof t?(s=(t=>{let e=t||"/",a="",r="";const s=e.indexOf("#");-1!==s&&(r=e.substr(s),e=e.substr(0,s));const n=e.indexOf("?");return-1!==n&&(a=e.substr(n),e=e.substr(0,n)),{pathname:e,search:"?"===a?"":a,hash:"#"===r?"":r,query:{},key:""}})(t),void 0!==e&&(s.state=e)):((s=Object.assign({pathname:""},t)).search&&"?"!==s.search.charAt(0)&&(s.search="?"+s.search),s.hash&&"#"!==s.hash.charAt(0)&&(s.hash="#"+s.hash),void 0!==e&&void 0===s.state&&(s.state=e));try{s.pathname=decodeURI(s.pathname)}catch(t){throw t instanceof URIError?new URIError('Pathname "'+s.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):t}return s.key=a,r?s.pathname?"/"!==s.pathname.charAt(0)&&(s.pathname=((t,e="")=>{let a,r=e&&e.split("/")||[],s=0;const n=t&&t.split("/")||[],c=t&&h(t),o=e&&h(e),i=c||o;if(t&&h(t)?r=n:n.length&&(r.pop(),r=r.concat(n)),!r.length)return"/";if(r.length){const t=r[r.length-1];a="."===t||".."===t||""===t}else a=!1;for(let t=r.length;t>=0;t--){const e=r[t];"."===e?l(r,t):".."===e?(l(r,t),s++):s&&(l(r,t),s--)}if(!i)for(;s--;s)r.unshift("..");!i||""===r[0]||r[0]&&h(r[0])||r.unshift("");let p=r.join("/");return a&&"/"!==p.substr(-1)&&(p+="/"),p})(s.pathname,r.pathname)):s.pathname=r.pathname:s.pathname||(s.pathname="/"),s.query=(t=>t?(/^[?#]/.test(t)?t.slice(1):t).split("&").reduce((t,e)=>{let[a,r]=e.split("=");return t[a]=r?decodeURIComponent(r.replace(/\+/g," ")):"",t},{}):{})(s.search||""),s};export{r as a,e as b,p as c,c as d,n as e,s as f,t as h,i as l,a as s,o as v};
\No newline at end of file