UNPKG

diesel-core

Version:

Web framework built on Web Standards

2 lines (1 loc) 2.8 kB
var X=(f)=>{let w=f.split("/");if(w[0]==="")w.shift();return w},G=(f)=>{let{groups:w,path:z}=Y(f),B=X(z);return Z(B,w)},Y=(f)=>{let w=[];return f=f.replace(/\{[^}]+\}/g,(z,B)=>{let A=`@${B}`;return w.push([A,z]),A}),{groups:w,path:f}},Z=(f,w)=>{for(let z=w.length-1;z>=0;z--){let[B]=w[z];for(let A=f.length-1;A>=0;A--)if(f[A].includes(B)){f[A]=f[A].replace(B,w[z][1]);break}}return f},O={},Q=(f,w)=>{if(f==="*")return"*";let z=f.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/);if(z){let B=`${f}#${w}`;if(!O[B])if(z[2])O[B]=w&&w[0]!==":"&&w[0]!=="*"?[B,z[1],new RegExp(`^${z[2]}(?=/${w})`)]:[f,z[1],new RegExp(`^${z[2]}$`)];else O[B]=[f,z[1],!0];return O[B]}return null},V=(f,w)=>{try{return w(f)}catch{return f.replace(/(?:%[0-9A-Fa-f]{2})+/g,(z)=>{try{return w(z)}catch{return z}})}},$=(f)=>V(f,decodeURI),F=(f)=>{let w=f.indexOf("/",f.indexOf(":")+4),z=w;for(;z<f.length;z++){let B=f.charCodeAt(z);if(B===37){let A=f.indexOf("?",z),H=f.slice(w,A===-1?void 0:A);return $(H.includes("%25")?H.replace(/%25/g,"%2525"):H)}else if(B===63)break}return f.slice(w,z)},D=(f)=>{let w=f.indexOf("?",8);return w===-1?"":"?"+f.slice(w+1)},j=(f)=>{let w=F(f.url);return w.length>1&&w.at(-1)==="/"?w.slice(0,-1):w},M=(f,w,...z)=>{if(z.length)w=M(w,...z);return`${f?.[0]==="/"?"":"/"}${f}${w==="/"?"":`${f?.at(-1)==="/"?"":"/"}${w?.[0]==="/"?w.slice(1):w}`}`},R=(f)=>{if(f.charCodeAt(f.length-1)!==63||!f.includes(":"))return null;let w=f.split("/"),z=[],B="";return w.forEach((A)=>{if(A!==""&&!/\:/.test(A))B+="/"+A;else if(/\:/.test(A))if(/\?/.test(A)){if(z.length===0&&B==="")z.push("/");else z.push(B);let H=A.replace("?","");B+="/"+H,z.push(B)}else B+="/"+A}),z.filter((A,H,E)=>E.indexOf(A)===H)},T=(f)=>{if(!/[%+]/.test(f))return f;if(f.indexOf("+")!==-1)f=f.replace(/\+/g," ");return f.indexOf("%")!==-1?V(f,S):f},W=(f,w,z)=>{let B;if(!z&&w&&!/[%+]/.test(w)){let E=f.indexOf(`?${w}`,8);if(E===-1)E=f.indexOf(`&${w}`,8);while(E!==-1){let L=f.charCodeAt(E+w.length+1);if(L===61){let J=E+w.length+2,N=f.indexOf("&",J);return T(f.slice(J,N===-1?void 0:N))}else if(L==38||isNaN(L))return"";E=f.indexOf(`&${w}`,E+1)}if(B=/[%+]/.test(f),!B)return}let A={};B??=/[%+]/.test(f);let H=f.indexOf("?",8);while(H!==-1){let E=f.indexOf("&",H+1),L=f.indexOf("=",H);if(L>E&&E!==-1)L=-1;let J=f.slice(H+1,L===-1?E===-1?void 0:E:L);if(B)J=T(J);if(H=E,J==="")continue;let N;if(L===-1)N="";else if(N=f.slice(L+1,E===-1?void 0:E),B)N=T(N);if(z){if(!(A[J]&&Array.isArray(A[J])))A[J]=[];A[J].push(N)}else A[J]??=N}return w?A[w]:A},U=W,_=(f,w)=>{return W(f,w,!0)},S=decodeURIComponent;export{$ as tryDecodeURI,V as tryDecode,G as splitRoutingPath,X as splitPath,M as mergePath,D as getQueryStrings,_ as getQueryParams,U as getQueryParam,Q as getPattern,j as getPathNoStrict,F as getPath,S as decodeURIComponent_,R as checkOptionalParameter};