path-to-regexp-9e03f644.js 3.1 KB

1
  1. var d={exports:{}};d.exports=D;d.exports.parse=o;d.exports.compile=M;d.exports.tokensToFunction=$;d.exports.tokensToRegExp=A;var y="/",R="./",G=new RegExp(["(\\\\.)","(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?"].join("|"),"g");function o(r,i){for(var e=[],p=0,l=0,n="",x=i&&i.delimiter||y,v=i&&i.delimiters||R,a=!1,t;(t=G.exec(r))!==null;){var c=t[0],u=t[1],f=t.index;if(n+=r.slice(l,f),l=f+c.length,u){n+=u[1],a=!0;continue}var g="",m=r[l],I=t[2],F=t[3],L=t[4],s=t[5];if(!a&&n.length){var E=n.length-1;v.indexOf(n[E])>-1&&(g=n[E],n=n.slice(0,E))}n&&(e.push(n),n="",a=!1);var S=g!==""&&m!==void 0&&m!==g,U=s==="+"||s==="*",_=s==="?"||s==="*",T=g||x,w=F||L;e.push({name:I||p++,prefix:g,delimiter:T,optional:_,repeat:U,partial:S,pattern:w?O(w):"[^"+h(T)+"]+?"})}return(n||l<r.length)&&e.push(n+r.substr(l)),e}function M(r,i){return $(o(r,i))}function $(r){for(var i=new Array(r.length),e=0;e<r.length;e++)typeof r[e]=="object"&&(i[e]=new RegExp("^(?:"+r[e].pattern+")$"));return function(p,l){for(var n="",x=l&&l.encode||encodeURIComponent,v=0;v<r.length;v++){var a=r[v];if(typeof a=="string"){n+=a;continue}var t=p?p[a.name]:void 0,c;if(Array.isArray(t)){if(!a.repeat)throw new TypeError('Expected "'+a.name+'" to not repeat, but got array');if(t.length===0){if(a.optional)continue;throw new TypeError('Expected "'+a.name+'" to not be empty')}for(var u=0;u<t.length;u++){if(c=x(t[u],a),!i[v].test(c))throw new TypeError('Expected all "'+a.name+'" to match "'+a.pattern+'"');n+=(u===0?a.prefix:a.delimiter)+c}continue}if(typeof t=="string"||typeof t=="number"||typeof t=="boolean"){if(c=x(String(t),a),!i[v].test(c))throw new TypeError('Expected "'+a.name+'" to match "'+a.pattern+'", but got "'+c+'"');n+=a.prefix+c;continue}if(a.optional){a.partial&&(n+=a.prefix);continue}throw new TypeError('Expected "'+a.name+'" to be '+(a.repeat?"an array":"a string"))}return n}}function h(r){return r.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1")}function O(r){return r.replace(/([=!:$/()])/g,"\\$1")}function b(r){return r&&r.sensitive?"":"i"}function P(r,i){if(!i)return r;var e=r.source.match(/\((?!\?)/g);if(e)for(var p=0;p<e.length;p++)i.push({name:p,prefix:null,delimiter:null,optional:!1,repeat:!1,partial:!1,pattern:null});return r}function W(r,i,e){for(var p=[],l=0;l<r.length;l++)p.push(D(r[l],i,e).source);return new RegExp("(?:"+p.join("|")+")",b(e))}function j(r,i,e){return A(o(r,e),i,e)}function A(r,i,e){e=e||{};for(var p=e.strict,l=e.start!==!1,n=e.end!==!1,x=h(e.delimiter||y),v=e.delimiters||R,a=[].concat(e.endsWith||[]).map(h).concat("$").join("|"),t=l?"^":"",c=r.length===0,u=0;u<r.length;u++){var f=r[u];if(typeof f=="string")t+=h(f),c=u===r.length-1&&v.indexOf(f[f.length-1])>-1;else{var g=f.repeat?"(?:"+f.pattern+")(?:"+h(f.delimiter)+"(?:"+f.pattern+"))*":f.pattern;i&&i.push(f),f.optional?f.partial?t+=h(f.prefix)+"("+g+")?":t+="(?:"+h(f.prefix)+"("+g+"))?":t+=h(f.prefix)+"("+g+")"}}return n?(p||(t+="(?:"+x+")?"),t+=a==="$"?"$":"(?="+a+")"):(p||(t+="(?:"+x+"(?="+a+"))?"),c||(t+="(?="+x+"|"+a+")")),new RegExp(t,b(e))}function D(r,i,e){return r instanceof RegExp?P(r,i):Array.isArray(r)?W(r,i,e):j(r,i,e)}