yrv
Version:
Your routing!
2 lines (1 loc) • 9.97 kB
JavaScript
var W=Object.create;var v=Object.defineProperty;var X=Object.getOwnPropertyDescriptor;var Y=Object.getOwnPropertyNames;var Z=Object.getPrototypeOf,rr=Object.prototype.hasOwnProperty;var y=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports);var er=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of Y(e))!rr.call(r,a)&&a!==t&&v(r,a,{get:()=>e[a],enumerable:!(n=X(e,a))||n.enumerable});return r};var tr=(r,e,t)=>(t=r!=null?W(Z(r)):{},er(e||!r||!r.__esModule?v(t,"default",{value:r,enumerable:!0}):t,r));var A=y((pr,_)=>{"use strict";_.exports=r=>encodeURIComponent(r).replace(/[!'()*]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`)});var U=y((Fr,N)=>{"use strict";var $="%[a-f0-9]{2}",E=new RegExp($,"gi"),C=new RegExp("("+$+")+","gi");function S(r,e){try{return decodeURIComponent(r.join(""))}catch{}if(r.length===1)return r;e=e||1;var t=r.slice(0,e),n=r.slice(e);return Array.prototype.concat.call([],S(t),S(n))}function nr(r){try{return decodeURIComponent(r)}catch{for(var e=r.match(E),t=1;t<e.length;t++)r=S(e,t).join(""),e=r.match(E);return r}}function ar(r){for(var e={"%FE%FF":"\uFFFD\uFFFD","%FF%FE":"\uFFFD\uFFFD"},t=C.exec(r);t;){try{e[t[0]]=decodeURIComponent(t[0])}catch{var n=nr(t[0]);n!==t[0]&&(e[t[0]]=n)}t=C.exec(r)}e["%C2"]="\uFFFD";for(var a=Object.keys(e),c=0;c<a.length;c++){var i=a[c];r=r.replace(new RegExp(i,"g"),e[i])}return r}N.exports=function(r){if(typeof r!="string")throw new TypeError("Expected `encodedURI` to be of type `string`, got `"+typeof r+"`");try{return r=r.replace(/\+/g," "),decodeURIComponent(r)}catch{return ar(r)}}});var k=y((wr,R)=>{"use strict";R.exports=(r,e)=>{if(!(typeof r=="string"&&typeof e=="string"))throw new TypeError("Expected the arguments to be of type `string`");if(e==="")return[r];let t=r.indexOf(e);return t===-1?[r]:[r.slice(0,t),r.slice(t+e.length)]}});var D=y((Or,q)=>{"use strict";q.exports=function(r,e){for(var t={},n=Object.keys(r),a=Array.isArray(e),c=0;c<n.length;c++){var i=n[c],s=r[i];(a?e.indexOf(i)!==-1:e(i,s,r))&&(t[i]=s)}return t}});var V=y(o=>{"use strict";var cr=A(),ir=U(),M=k(),sr=D(),fr=r=>r==null;function ur(r){switch(r.arrayFormat){case"index":return e=>(t,n)=>{let a=t.length;return n===void 0||r.skipNull&&n===null||r.skipEmptyString&&n===""?t:n===null?[...t,[l(e,r),"[",a,"]"].join("")]:[...t,[l(e,r),"[",l(a,r),"]=",l(n,r)].join("")]};case"bracket":return e=>(t,n)=>n===void 0||r.skipNull&&n===null||r.skipEmptyString&&n===""?t:n===null?[...t,[l(e,r),"[]"].join("")]:[...t,[l(e,r),"[]=",l(n,r)].join("")];case"comma":case"separator":return e=>(t,n)=>n==null||n.length===0?t:t.length===0?[[l(e,r),"=",l(n,r)].join("")]:[[t,l(n,r)].join(r.arrayFormatSeparator)];default:return e=>(t,n)=>n===void 0||r.skipNull&&n===null||r.skipEmptyString&&n===""?t:n===null?[...t,l(e,r)]:[...t,[l(e,r),"=",l(n,r)].join("")]}}function lr(r){let e;switch(r.arrayFormat){case"index":return(t,n,a)=>{if(e=/\[(\d*)\]$/.exec(t),t=t.replace(/\[\d*\]$/,""),!e){a[t]=n;return}a[t]===void 0&&(a[t]={}),a[t][e[1]]=n};case"bracket":return(t,n,a)=>{if(e=/(\[\])$/.exec(t),t=t.replace(/\[\]$/,""),!e){a[t]=n;return}if(a[t]===void 0){a[t]=[n];return}a[t]=[].concat(a[t],n)};case"comma":case"separator":return(t,n,a)=>{let c=typeof n=="string"&&n.includes(r.arrayFormatSeparator),i=typeof n=="string"&&!c&&h(n,r).includes(r.arrayFormatSeparator);n=i?h(n,r):n;let s=c||i?n.split(r.arrayFormatSeparator).map(u=>h(u,r)):n===null?n:h(n,r);a[t]=s};default:return(t,n,a)=>{if(a[t]===void 0){a[t]=n;return}a[t]=[].concat(a[t],n)}}}function B(r){if(typeof r!="string"||r.length!==1)throw new TypeError("arrayFormatSeparator must be single character string")}function l(r,e){return e.encode?e.strict?cr(r):encodeURIComponent(r):r}function h(r,e){return e.decode?ir(r):r}function L(r){return Array.isArray(r)?r.sort():typeof r=="object"?L(Object.keys(r)).sort((e,t)=>Number(e)-Number(t)).map(e=>r[e]):r}function H(r){let e=r.indexOf("#");return e!==-1&&(r=r.slice(0,e)),r}function or(r){let e="",t=r.indexOf("#");return t!==-1&&(e=r.slice(t)),e}function I(r){r=H(r);let e=r.indexOf("?");return e===-1?"":r.slice(e+1)}function T(r,e){return e.parseNumbers&&!Number.isNaN(Number(r))&&typeof r=="string"&&r.trim()!==""?r=Number(r):e.parseBooleans&&r!==null&&(r.toLowerCase()==="true"||r.toLowerCase()==="false")&&(r=r.toLowerCase()==="true"),r}function P(r,e){e=Object.assign({decode:!0,sort:!0,arrayFormat:"none",arrayFormatSeparator:",",parseNumbers:!1,parseBooleans:!1},e),B(e.arrayFormatSeparator);let t=lr(e),n=Object.create(null);if(typeof r!="string"||(r=r.trim().replace(/^[?#&]/,""),!r))return n;for(let a of r.split("&")){if(a==="")continue;let[c,i]=M(e.decode?a.replace(/\+/g," "):a,"=");i=i===void 0?null:["comma","separator"].includes(e.arrayFormat)?i:h(i,e),t(h(c,e),i,n)}for(let a of Object.keys(n)){let c=n[a];if(typeof c=="object"&&c!==null)for(let i of Object.keys(c))c[i]=T(c[i],e);else n[a]=T(c,e)}return e.sort===!1?n:(e.sort===!0?Object.keys(n).sort():Object.keys(n).sort(e.sort)).reduce((a,c)=>{let i=n[c];return Boolean(i)&&typeof i=="object"&&!Array.isArray(i)?a[c]=L(i):a[c]=i,a},Object.create(null))}o.extract=I;o.parse=P;o.stringify=(r,e)=>{if(!r)return"";e=Object.assign({encode:!0,strict:!0,arrayFormat:"none",arrayFormatSeparator:","},e),B(e.arrayFormatSeparator);let t=i=>e.skipNull&&fr(r[i])||e.skipEmptyString&&r[i]==="",n=ur(e),a={};for(let i of Object.keys(r))t(i)||(a[i]=r[i]);let c=Object.keys(a);return e.sort!==!1&&c.sort(e.sort),c.map(i=>{let s=r[i];return s===void 0?"":s===null?l(i,e):Array.isArray(s)?s.reduce(n(i),[]).join("&"):l(i,e)+"="+l(s,e)}).filter(i=>i.length>0).join("&")};o.parseUrl=(r,e)=>{e=Object.assign({decode:!0},e);let[t,n]=M(r,"#");return Object.assign({url:t.split("?")[0]||"",query:P(I(r),e)},e&&e.parseFragmentIdentifier&&n?{fragmentIdentifier:h(n,e)}:{})};o.stringifyUrl=(r,e)=>{e=Object.assign({encode:!0,strict:!0},e);let t=H(r.url).split("?")[0]||"",n=o.extract(r.url),a=o.parse(n,{sort:!1}),c=Object.assign(a,r.query),i=o.stringify(c,e);i&&(i=`?${i}`);let s=or(r.url);return r.fragmentIdentifier&&(s=`#${l(r.fragmentIdentifier,e)}`),`${t}${i}${s}`};o.pick=(r,e,t)=>{t=Object.assign({parseFragmentIdentifier:!0},t);let{url:n,query:a,fragmentIdentifier:c}=o.parseUrl(r,t);return o.stringifyUrl({url:n,query:sr(a,e),fragmentIdentifier:c},t)};o.exclude=(r,e,t)=>{let n=Array.isArray(e)?a=>!e.includes(a):(a,c)=>!e(a,c);return o.pick(r,n,t)}});var K=tr(V());var p=function(r){function e(t,n){var a="Unreachable '"+(t!=="/"?t.replace(/\/$/,""):t)+"', segment '"+n+"' is not defined";r.call(this,a),this.message=a,this.route=t,this.path=n}return r&&(e.__proto__=r),e.prototype=Object.create(r&&r.prototype),e.prototype.constructor=e,e}(Error);function z(r,e){var t,n,a=-100,c=[];t=r.replace(/[-$.]/g,"\\$&").replace(/\(/g,"(?:").replace(/\)/g,")?").replace(/([:*]\w+)(?:<([^<>]+?)>)?/g,function(u,d,f){return c.push(d.substr(1)),d.charAt()===":"?(a+=100,"((?!#)"+(f||"[^#/]+?")+")"):(n=!0,a+=500,"((?!#)"+(f||"[^#]+?")+")")});try{t=new RegExp("^"+t+"$")}catch{throw new TypeError("Invalid route expression, given '"+e+"'")}var i=r.includes("#")?.5:1,s=r.length*a*i;return{keys:c,regex:t,_depth:s,_isSplat:n}}var m=function(e,t){var n=z(e,t),a=n.keys,c=n.regex,i=n._depth,s=n._isSplat;return{_isSplat:s,_depth:i,match:function(u){var d=u.match(c);if(d)return a.reduce(function(f,F,w){return f[F]=typeof d[w+1]=="string"?decodeURIComponent(d[w+1]):null,f},{})}}};m.push=function(e,t,n,a){var c=t[e]||(t[e]={});return c.pattern||(c.pattern=new m(e,a),c.route=(n||"").replace(/\/$/,"")||"/"),t.keys=t.keys||[],t.keys.includes(e)||(t.keys.push(e),m.sort(t)),c};m.sort=function(e){e.keys.sort(function(t,n){return e[t].pattern._depth-e[n].pattern._depth})};function G(r,e){return""+(e&&e!=="/"?e:"")+(r||"")}function b(r,e){var t=r.match(/<[^<>]*\/[^<>]*>/);if(t)throw new TypeError("RegExp cannot contain slashes, given '"+t+"'");var n=r.split(/(?=\/|#)/),a=[];n[0]!=="/"&&n.unshift("/"),n.some(function(c,i){var s=a.slice(1).concat(c).join("")||null,u=n.slice(i+1).join("")||null,d=e(c,s,u?""+(c!=="/"?c:"")+u:null);return a.push(c),d})}function dr(r,e,t){var n={},a=[],c;return b(r,function(i,s,u){var d;if(!e.keys)throw new p(r,i);if(e.keys.some(function(f){if(t.includes(f))return!1;var F=e[f].pattern,w=F.match,O=F._isSplat,x=w(O&&u||i);if(x){if(Object.assign(n,x),e[f].route){var g=Object.assign({},e[f].info),j=!1;g.exact?j=u===null:j=!(i&&s===null)||i===s||O||!u,g.matches=j,g.params=Object.assign({},n),g.route=e[f].route,g.path=O&&u||s||i,a.push(g)}return u===null&&!e[f].keys||(f!=="/"&&t.push(f),c=O,e=e[f],d=!0),!0}return!1}),!(d||e.keys.some(function(f){return e[f].pattern.match(i)})))throw new p(r,i);return c||!d}),a}function Q(r,e,t){for(var n=dr.bind(null,r,e),a=[];t>0;){t-=1;try{return n(a)}catch(c){if(t>0)return n(a);throw c}}}function hr(r,e,t,n){var a=G(r,t),c=e,i;return n&&n.nested!==!0&&(i=n.key,delete n.key),b(a,function(s,u){c=m.push(s,c,u,a),s!=="/"&&(c.info=c.info||Object.assign({},n))}),c.info=c.info||Object.assign({},n),i&&(c.info.key=i),a}function gr(r,e,t){var n=G(r,t),a=e,c=null,i=null;if(b(n,function(u){if(!a)return c=null,!0;if(!a.keys)throw new p(r,u);i=u,c=a,a=a[i]}),!(c&&i))throw new p(r,i);if(c===e&&(c=e["/"]),c.route!==i){var s=c.keys.indexOf(i);if(s===-1)throw new p(r,i);c.keys.splice(s,1),m.sort(c),delete c[i]}a.route===c.route&&(!a.info||a.info.key===c.info.key)&&delete c.info}var J=function(){var e={},t=[];return{resolve:function(n,a){var c=n.split("?")[0],i=[];b(c,function(s,u,d){try{a(null,Q(u,e,1).filter(function(f){return i.includes(f.path)?!1:(i.push(f.path),!0)}))}catch(f){a(f,[])}})},mount:function(n,a){n!=="/"&&t.push(n),a(),t.pop()},find:function(n,a){return Q(n,e,a===!0?2:a||1)},add:function(n,a){return hr(n,e,t.join(""),a)},rm:function(n){return gr(n,e,t.join(""))}}};J.matches=function(e,t){return z(e,t).regex.test(t)};var mr=J;var export_parse=K.parse;var export_stringify=K.stringify;export{mr as Router,export_parse as parse,export_stringify as stringify};