2 lines
16 KiB
JavaScript
2 lines
16 KiB
JavaScript
|
|
"use strict";var M=Object.defineProperty;var Se=Object.getOwnPropertyDescriptor;var ke=Object.getOwnPropertyNames;var Ee=Object.prototype.hasOwnProperty;var Re=(e,t)=>{for(var r in t)M(e,r,{get:t[r],enumerable:!0})},ye=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of ke(t))!Ee.call(e,a)&&a!==r&&M(e,a,{get:()=>t[a],enumerable:!(n=Se(t,a))||n.enumerable});return e};var Oe=e=>ye(M({},"__esModule",{value:!0}),e);var Ne={};Re(Ne,{URLPattern:()=>Y});module.exports=Oe(Ne);var k=class{type=3;name="";prefix="";value="";suffix="";modifier=3;constructor(t,r,n,a,c,l){this.type=t,this.name=r,this.prefix=n,this.value=a,this.suffix=c,this.modifier=l}hasCustomName(){return this.name!==""&&typeof this.name!="number"}},Te=/[$_\p{ID_Start}]/u,Ae=/[$_\u200C\u200D\p{ID_Continue}]/u,v=".*";function we(e,t){return(t?/^[\x00-\xFF]*$/:/^[\x00-\x7F]*$/).test(e)}function D(e,t=!1){let r=[],n=0;for(;n<e.length;){let a=e[n],c=function(l){if(!t)throw new TypeError(l);r.push({type:"INVALID_CHAR",index:n,value:e[n++]})};if(a==="*"){r.push({type:"ASTERISK",index:n,value:e[n++]});continue}if(a==="+"||a==="?"){r.push({type:"OTHER_MODIFIER",index:n,value:e[n++]});continue}if(a==="\\"){r.push({type:"ESCAPED_CHAR",index:n++,value:e[n++]});continue}if(a==="{"){r.push({type:"OPEN",index:n,value:e[n++]});continue}if(a==="}"){r.push({type:"CLOSE",index:n,value:e[n++]});continue}if(a===":"){let l="",s=n+1;for(;s<e.length;){let i=e.substr(s,1);if(s===n+1&&Te.test(i)||s!==n+1&&Ae.test(i)){l+=e[s++];continue}break}if(!l){c(`Missing parameter name at ${n}`);continue}r.push({type:"NAME",index:n,value:l}),n=s;continue}if(a==="("){let l=1,s="",i=n+1,o=!1;if(e[i]==="?"){c(`Pattern cannot start with "?" at ${i}`);continue}for(;i<e.length;){if(!we(e[i],!1)){c(`Invalid character '${e[i]}' at ${i}.`),o=!0;break}if(e[i]==="\\"){s+=e[i++]+e[i++];continue}if(e[i]===")"){if(l--,l===0){i++;break}}else if(e[i]==="("&&(l++,e[i+1]!=="?")){c(`Capturing groups are not allowed at ${i}`),o=!0;break}s+=e[i++]}if(o)continue;if(l){c(`Unbalanced pattern at ${n}`);continue}if(!s){c(`Missing pattern at ${n}`);continue}r.push({type:"REGEX",index:n,value:s}),n=i;continue}r.push({type:"CHAR",index:n,value:e[n++]})}return r.push({type:"END",index:n,value:""}),r}function F(e,t={}){let r=D(e);t.delimiter??="/#?",t.prefixes??="./";let n=`[^${x(t.delimiter)}]+?`,a=[],c=0,l=0,s="",i=new Set,o=f=>{if(l<r.length&&r[l].type===f)return r[l++].value},h=()=>o("OTHER_MODIFIER")??o("ASTERISK"),p=f=>{let u=o(f);if(u!==void 0)return u;let{type:d,index:T}=r[l];throw new TypeError(`Unexpected ${d} at ${T}, expected ${f}`)},O=()=>{let f="",u;for(;u=o("CHAR")??o("ESCAPED_CHAR");)f+=u;return f},be=f=>f,L=t.encodePart||be,I="",H=f=>{I+=f},$=()=>{I.length&&(a.push(new k(3,"","",L(I),"",3)),I="")},X=(f,u,d,T,Z)=>{let g=3;switch(Z){case"?":g=1;break;case"*":g=0;break;case"+":g=2;break}if(!u&&!d&&g===3){H(f);return}if($(),!u&&!d){if(!f)return;a.push(new k(3,"","",L(f),"",g));return}let m;d?d==="*"?m=v:m=d:m=n;let R=2;m===n?(R=1,m=""):m===v&&(R=0,m="");let S;if(u?S=u:d&&(S=c++),i.has(S))throw new TypeError(`Duplicate name '${S}'.`);i.add(S),a.push(new k(R,S,L(f),m,L(T),g))};for(;l<r.length;){let f=o("CHAR"),u=o("NAME"),d=o("REGEX");if(!u&&!d&&(d=o("ASTERISK")),u||d){let g=f??"";t.prefixes.indexOf(g)===-1&&(H(g),g=""),$();let m=h();X(g,u,d,"",m);continue}let T=f??o("ESCAPED_CHAR");if(T){H(T);continue}if(o("OPEN")){let g=O(),m=o("NAME"),R=o("REGEX");!m&&!R&&(R=o("ASTERISK"));let S=O();p("CLOSE");let Pe=h();X(g,m,R,S,Pe);continue}$(),p("END")}return a}function x(e){return e.replace(/([.+*?^${}()[\]|/\\])/g,"\\$1")}function B(e){return e&&e.ignoreCase?"ui":"u"}function q(e,t,r){return W(F(e,r),t,r)}function y(e){switch(e){case 0:return"*";case 1:return"?";case 2:return"+";case 3:return""}}function W(e,t,r={}){r.delimiter??="/#?",r.prefixes??="./",r.sensitive??=!1,r.strict??=!1,r.end??=!0,r.start??=!0,r.endsWith="";let n=r.start?"^":"";for(let s of e){if(s.type===3){s.modifier===3?n+=x(s.value):n+=`(?:${x(s.value)})${y(s.modifier)}`;continue}t&&t.push(s.name);let i=`[^${x(r.delimiter)}]+?`,o=s.value;if(
|