| 1 |
- var e,t={};var n=function(){if(e)return t;e=1,Object.defineProperty(t,"__esModule",{value:!0}),t.PathError=t.TokenData=void 0,t.parse=f,t.compile=function(e,t={}){const{encode:r=encodeURIComponent,delimiter:o=n}=t,i=l(("object"==typeof e?e:f(e,t)).tokens,o,r);return function(e={}){const t=[],n=i(e,t);if(t.length)throw new TypeError(`Missing parameters: ${t.join(", ")}`);return n}},t.match=function(e,t={}){const{decode:o=decodeURIComponent,delimiter:i=n}=t,{regexp:a,keys:u}=h(e,t),s=u.map(e=>!1===o?r:"param"===e.type?o:e=>e.split(i).map(o));return function(e){const t=a.exec(e);if(!t)return!1;const n=t[0],r=Object.create(null);for(let o=1;o<t.length;o++){if(void 0===t[o])continue;const e=u[o-1],n=s[o-1];r[e.name]=n(t[o])}return{path:n,params:r}}},t.pathToRegexp=h,t.stringify=function(e){return g(e.tokens,0)};const n="/",r=e=>e,o=/^[$_\p{ID_Start}]$/u,i=/^[$\u200c\u200d\p{ID_Continue}]$/u,a=/^[$_\p{ID_Start}][$\u200c\u200d\p{ID_Continue}]*$/u;function u(e){return e.replace(/[{}()\[\]+?!:*\\]/g,"\\$&")}function s(e){return e.replace(/[.+*?^${}()[\]|/\\]/g,"\\$&")}class c{constructor(e,t){this.tokens=e,this.originalPath=t}}t.TokenData=c;class p extends TypeError{constructor(e,t){let n=e;t&&(n+=`: ${t}`),n+="; visit https://git.new/pathToRegexpError for info",super(n),this.originalPath=t}}function f(e,t={}){const{encodePath:n=r}=t,a=[...e];let u=0;return new c(function t(r){const s=[];let c="";function f(){c&&(s.push({type:"text",value:n(c)}),c="")}for(;u<a.length;){const n=a[u++];if(n===r)return f(),s;if("\\"!==n){if(":"===n||"*"===n){const t=":"===n?"param":"wildcard";let r="";if(o.test(a[u]))do{r+=a[u++]}while(i.test(a[u]));else if('"'===a[u]){let t=u;for(;u<a.length;){if('"'===a[++u]){u++,t=0;break}"\\"===a[u]&&u++,r+=a[u]}if(t)throw new p(`Unterminated quote at index ${t}`,e)}if(!r)throw new p(`Missing parameter name at index ${u}`,e);f(),s.push({type:t,name:r});continue}if("{"!==n){if("}"===n||"("===n||")"===n||"["===n||"]"===n||"+"===n||"?"===n||"!"===n)throw new p(`Unexpected ${n} at index ${u-1}`,e);c+=n}else f(),s.push({type:"group",tokens:t("}")})}else{if(u===a.length)throw new p(`Unexpected end after \\ at index ${u}`,e);c+=a[u++]}}if(r)throw new p(`Unexpected end at index ${u}, expected ${r}`,e);return f(),s}(""),e)}function l(e,t,n){const o=e.map(e=>function(e,t,n){if("text"===e.type)return()=>e.value;if("group"===e.type){const r=l(e.tokens,t,n);return(e,t)=>{const n=t.length,o=r(e,t);return t.length===n?o:(t.length=n,"")}}const o=n||r;if("wildcard"===e.type&&!1!==n)return(n,r)=>{const i=n[e.name];if(null==i)return r.push(e.name),"";if(!Array.isArray(i)||0===i.length)throw new TypeError(`Expected "${e.name}" to be a non-empty array`);let a="";for(let u=0;u<i.length;u++){if("string"!=typeof i[u])throw new TypeError(`Expected "${e.name}/${u}" to be a string`);u>0&&(a+=t),a+=o(i[u])}return a};return(t,n)=>{const r=t[e.name];if(null==r)return n.push(e.name),"";if("string"!=typeof r)throw new TypeError(`Expected "${e.name}" to be a string`);return o(r)}}(e,t,n));return(e,t)=>{let n="";for(const r of o)n+=r(e,t);return n}}function h(e,t={}){const{delimiter:r=n,end:o=!0,sensitive:i=!1,trailing:a=!0}=t,u=[];let c="",l=0;!function e(n){if(Array.isArray(n)){for(const t of n)e(t);return}const o="object"==typeof n?n:f(n,t);y(o.tokens,0,[],e=>{if(l>=256)throw new p("Too many path combinations",o.originalPath);l>0&&(c+="|"),c+=function(e,t,n,r){let o="",i="",a="",u=0,c=0,f=0;function l(n,r){for(;n<e.length;){const o=e[n++];if(o.type===r)return!0;if("text"===o.type&&o.value.includes(t))break}return!1}function h(t){let n="";for(;t<e.length;){const r=e[t++];if("text"!==r.type)break;n+=r.value}return n}for(;f<e.length;){const y=e[f++];if("text"!==y.type){if("param"!==y.type&&"wildcard"!==y.type)throw new TypeError(`Unknown token type: ${y.type}`);if(u&&!i)throw new p(`Missing text before "${y.name}" ${y.type}`,r);"param"===y.type?(o+=2&c?`(${d(t,i)}+)`:l(f,"wildcard")?`(${d(t,h(f))}+)`:1&c?`(${d(t,i)}+|${s(i)})`:`(${d(t,"")}+)`,c|=u=1):(o+=2&c?`(${d(i,"")}+)`:a?`(${d(a,"")}+|${d(t,"")}+)`:"([^]+)",a="",c|=u=2),n.push(y),i=""}else o+=s(y.value),i+=y.value,2===u&&(a+=y.value),y.value.includes(t)&&(c=0)}return o}(e,r,u,o.originalPath),l++})}(e);let h=`^(?:${c})`;return a&&(h+="(?:"+s(r)+"$)?"),h+=o?"$":"(?="+s(r)+"|$)",{regexp:new RegExp(h,i?"":"i"),keys:u}}function y(e,t,n,r){for(;t<e.length;){const o=e[t++];if("group"===o.type){const i=n.length;y(o.tokens,0,n,n=>y(e,t,n,r)),n.length=i;continue}n.push(o)}r(n)}function d(e,t){return t.length>e.length?d(t,e):(e===t&&(t=""),t.length>1?`(?:(?!${s(e)}|${s(t)})[^])`:e.length>1?`(?:(?!${s(e)})[^${s(t)}])`:`[^${s(e+t)}]`)}function g(e,t){let n="";for(;t<e.length;){const r=e[t++];if("text"!==r.type)if("group"!==r.type)if("param"!==r.type){if("wildcard"!==r.type)throw new TypeError(`Unknown token type: ${r.type}`);n+="*"+$(r.name,e[t])}else n+=":"+$(r.name,e[t]);else n+="{"+g(r.tokens,0)+"}";else n+=u(r.value)}return n}function $(e,t){return a.test(e)?"text"===(null==t?void 0:t.type)&&i.test(t.value[0])?JSON.stringify(e):e:JSON.stringify(e)}return t.PathError=p,t}();export{n as d};
|