hurt
Version:
HTTP and SPA routing using RFC 6570 URI templates
1 lines • 20.2 kB
JavaScript
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.hurt=e():t.hurt=e()}(this,function(){return function(t){function e(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,e),i.l=!0,i.exports}var n={};return e.m=t,e.c=n,e.i=function(t){return t},e.d=function(t,n,r){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:r})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=4)}([function(t,e,n){"use strict";function r(t,e){return function(){function n(e){for(e&&(f=!0);f;)if(f=!1,e||s>=t.length)a(e);else try{t[s++].apply(u,i)}catch(t){f=!0,e=t}f=!0}for(var r=arguments.length,i=Array(r),o=0;o<r;o++)i[o]=arguments[o];var u=e||this,a=i.pop(),s=0,f=!0;i.push(n),n()}}Object.defineProperty(e,"__esModule",{value:!0}),e.default=r},function(t,e,n){"use strict";function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(t,e){var n=Object.getOwnPropertyDescriptor(t,e);return"function"==typeof n.value&&(n.value=o(n.value,t)),Object.create(t,r({},e,n))}function o(t,e){function n(){var n=t.apply(e,arguments);return n===e?this:n}return n}Object.defineProperty(e,"__esModule",{value:!0}),e.proxy=i,e.bind=o},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(9),i=function(t){return t&&t.__esModule?t:{default:t}}(r),o=n(5),u=n(7),a=n(11),s=n(13);i.default.mixins.push(o.mixin,a.mixin,u.mixin,s.mixin),e.default=i.default},function(t,e,n){"use strict";function r(t,e){var n={};for(var r in t)e.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(t,r)&&(n[r]=t[r]);return n}function i(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{attach:function(){return o(arguments.length>0&&void 0!==arguments[0]?arguments[0]:t.window,this,t),this}}}function o(t,e){function n(t){var n=t.url,i=t.event,u=r(t,["url","event"]),s={method:(u.method||"GET").toUpperCase(),replace:u.replace||!1,state:u.state||{}},f=o();if(n.substr(0,c.length)!==c)return!1;s.url=n.substr(c.length),s.baseUrl=c,i&&(i.stopPropagation(),i.preventDefault()),e(s,f,function(t){if(!t){var e=s.replace?a.replaceState:a.pushState,n=s.state;e.call(a,n,n.title,c+s.url)}})}function i(t){var e=f.createElement("a");return e.href=t,e.href}function o(){var e=void 0,n={setTimeout:function(n,r){e&&(clearTimeout(e),e=null),n&&(e=t.setTimeout(r,n))},end:function(){n.setTimeout(0),n.finished=!0},finished:!1};return n}var u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=t.history,s=t.location,f=t.document,c=(u.base?i(u.base):f.baseURI).replace(/\/$/,""),l=null;f.addEventListener("click",function(t){var e=t.target,r=t.altKey,i=t.metaKey;r||i||("button"===e.localName&&"submit"===e.type&&(l=e),"a"===e.localName&&e.href&&n({url:e.href,event:t}))}),f.addEventListener("submit",function(t){var e=t.target;if("form"===e.localName&&e.action){var r=i(e.action),o=l.formMethod||e.method;l=null,n({url:r,method:o,event:t})}}),t.addEventListener("popstate",function(t){n({url:s.href,replace:!0,state:a.state,event:t})})}Object.defineProperty(e,"__esModule",{value:!0}),e.mixin=i,e.attach=o},function(t,e,n){"use strict";var r=n(2),i=function(t){return t&&t.__esModule?t:{default:t}}(r),o=n(3);i.default.mixins.unshift(o.mixin),t.exports=i.default},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function i(){var t=new a.default;return o({},t,a.default.prototype,{pre:[(0,f.default)(function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];this.emit.apply(this,["request"].concat(e))})],post:[(0,f.default)(function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];this.emit.apply(this,["finish"].concat(e))})],use:function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];return this.emit.apply(this,["handler"].concat(e)),this.use.apply(this,e)}})}Object.defineProperty(e,"__esModule",{value:!0});var o=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t};e.mixin=i;var u=n(14),a=r(u),s=n(10),f=r(s)},function(t,e,n){"use strict";function r(t,e){Object.getOwnPropertyNames(e).forEach(function(n){var r=Object.getOwnPropertyDescriptor(e,n),a=o.call(t,n);if(a&&Array.isArray(t[n]))return void u.apply(t[n],Array.isArray(r.value)?r.value:[r.value]);"function"==typeof r.value&&(r.value=(0,i.bind)(r.value,a?(0,i.proxy)(t,n):t));try{Object.defineProperty(t,n,r)}catch(t){}})}Object.defineProperty(e,"__esModule",{value:!0}),e.default=r;var i=n(1),o=Object.prototype.hasOwnProperty,u=Array.prototype.push},function(t,e,n){"use strict";function r(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.name,n=void 0===e?"":e,r={};return{name:n,route:function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];var i=e.reduce(function(t,e){return t||e.name},""),o=r[i]||this.route.apply(this,e);return o.name&&(r[i]=o),o}}}Object.defineProperty(e,"__esModule",{value:!0}),e.mixin=r},function(t,e,n){"use strict";function r(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e<t.length;e++)n[e]=t[e];return n}return Array.from(t)}function i(t){for(var e,n=arguments.length,r=Array(n>1?n-1:0),i=1;i<n;i++)r[i-1]=arguments[i];(e=t[c]).unshift.apply(e,r)}function o(t){for(var e,n=arguments.length,r=Array(n>1?n-1:0),i=1;i<n;i++)r[i-1]=arguments[i];(e=t[c]).push.apply(e,r)}function u(t){return"function"==typeof t&&t[c]&&t[l]}function a(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];if(1===e.length&&u(e[0]))return e[0];var i=[],o={},a=(0,f.default)(i);return e.forEach(function(t){u(t)?(i.push.apply(i,r(t[c])),t=t[l]):"function"==typeof t&&(i.push(t),t={name:t.name}),Object.keys(t).forEach(function(e){if(!o.hasOwnProperty(e)){o[e]=t[e];try{Object.defineProperty(a,e,{value:o[e],writable:!1})}catch(t){}}})}),a[c]=i,a[l]=o,a}Object.defineProperty(e,"__esModule",{value:!0}),e.unshift=i,e.push=o,e.default=a;var s=n(0),f=function(t){return t&&t.__esModule?t:{default:t}}(s),c=Symbol("stack"),l=Symbol("options")},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function i(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e<t.length;e++)n[e]=t[e];return n}return Array.from(t)}function o(t,e){var n={};for(var r in t)e.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(t,r)&&(n[r]=t[r]);return n}function u(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.mixins,n=void 0===e?u.mixins:e,r=o(t,["mixins"]),a=[],l=[],v=[],d=(0,c.default)((0,s.default)(l));return(0,f.unshift)(d,(0,s.default)(a,d)),(0,f.push)(d,(0,s.default)(v,d)),(0,h.default)(d,{pre:a,post:v,route:c.default,use:function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];var r=this.route.apply(this,e),i=(0,p.proxy)(this,"route");return i.route=r,l.push(function(){return i.route.apply(i,arguments)}),this},mixin:function(){for(var t=this,e=arguments.length,n=Array(e),r=0;r<e;r++)n[r]=arguments[r];return n.forEach(function(e){return(0,h.default)(t,e)}),this}}),d.mixin.apply(d,i(n.map(function(t){return t(r)})))}Object.defineProperty(e,"__esModule",{value:!0}),e.default=u;var a=n(0),s=r(a),f=n(8),c=r(f),l=n(6),h=r(l),p=n(1);u.mixins=[]},function(t,e,n){"use strict";function r(t){return function(){for(var e=arguments.length,n=Array(e),r=0;r<e;r++)n[r]=arguments[r];var i=n.pop();try{t.apply(this,n),i()}catch(t){i(t)}}}Object.defineProperty(e,"__esModule",{value:!0}),e.default=r},function(t,e,n){"use strict";function r(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.timeout,n=void 0===e?0:e,r=void 0;return{pre:[function(t,e){for(var o=arguments.length,u=Array(o>2?o-2:0),a=2;a<o;a++)u[a-2]=arguments[a];var s=this,f=u.pop(),c=r||i;e.setTimeout&&e.setTimeout(n,function(){"function"==typeof s.emit&&s.emit.apply(s,["timeout",t,e].concat(u)),c.apply(void 0,[t,e].concat(u,[i]))}),f()}],post:[function(t,e){for(var n=arguments.length,r=Array(n>2?n-2:0),i=2;i<n;i++)r[i-2]=arguments[i];var o=r.pop();e.setTimeout&&e.setTimeout(0),o()}],timeout:function(t,e){return n=t,e&&(r=e),this}}}Object.defineProperty(e,"__esModule",{value:!0});var i=function(){};e.mixin=r},function(t,e,n){"use strict";function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{flatten:function(){return a(t)},match:function(e,n){return u(t,e,n)},add:function(e){for(var n=arguments.length,r=Array(n>1?n-1:0),i=1;i<n;i++)r[i-1]=arguments[i];return t=o(t,e,r)}}}function o(t,e,n){if(!t||Array.isArray(t)&&0===t.length)return e?r({},e,n):n;if(Array.isArray(t))return e?r({"":t},e,n):t.concat(n);if(!e)return c({},t,{"":o(t[""],"",n)});for(var i in t)if(i&&t.hasOwnProperty(i)){var u=f(i,e);if(u===i)return c({},t,r({},u,o(t[i],e.substr(u.length),n)));if(u){var a;return s(i,c({},t,r({},u,(a={},r(a,i.substr(u.length),t[i]),r(a,e.substr(u.length),n),a))))}}return c({},t,r({},e,n))}function u(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return Array.isArray(t)?Array.isArray(n)?Array.prototype.push.apply(n,t):n[e]=t:Object.keys(t).filter(function(t){return e.substr(0,t.length)===t}).forEach(function(r){return u(t[r],e.substr(r.length),n)}),n}function a(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return Array.isArray(t)?n[e]=t:Object.keys(t).forEach(function(r){return a(t[r],e+r,n)}),n}function s(t,e){return delete e[t],e}function f(t,e){var n=void 0;for(n=0;t[n]===e[n]&&n<t.length;n++);return t.substr(0,n)}Object.defineProperty(e,"__esModule",{value:!0});var c=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t};e.default=i,e.add=o,e.match=u,e.flatten=a},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function i(t){var e=t.indexOf("{");return e<0?t:t.substr(0,e)}function o(t){var e=(0,d.default)(t);return function(t){return e.fromUri(t)}}function u(t){var e=t.source.replace(/(^\^|\$$)/g,""),n=/(^|[^\\])([[({.]|\\[dDsSwWxu])/.exec(e);return(n?e.substr(0,n.index+n[1].length):e).replace(/\\([\/\\().*\[\]])/g,"$1")}function a(t){return function(e){var n=t.exec(e);return n&&n[0]===e&&n}}function s(t,e){return function(n){for(var r=arguments.length,i=Array(r>1?r-1:0),o=1;o<r;o++)i[o-1]=arguments[o];var u=i.pop(),a=t(n.url);a?(n.params=c({},n.params,a),e.call.apply(e,[this,n].concat(i,[function(t){t||(n.handled=!0),u(t)}]))):u()}}function f(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.base,n=void 0===e?"":e,r={},f=[r],c=[],h=(0,p.default)(c);return{post:[function(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];if(t.handled){(0,n[n.length-1])()}else h.call.apply(h,[this,t].concat(n))}],base:function(t){return"string"==typeof t?(n=t,this):n},use:function(t){for(var e=arguments.length,n=Array(e>1?e-1:0),c=1;c<e;c++)n[c-1]=arguments[c];var h=void 0,v=void 0,d=void 0;if("string"==typeof t||t instanceof RegExp?(h=t,t={url:h}):h=t.url,"string"==typeof h)v=i(h),d=o(h);else{if(!(h instanceof RegExp))return f[f.length-1]!==r&&f.push(r),this.use.apply(this,[t].concat(n));v=u(h),d=a(h)}var y=this.route.apply(this,[t].concat(n)),g=f.pop(),m=f.length;return f.push((0,l.add)(g,v,[s(d,y)])),g===r?this.use(function(t){for(var e=(0,l.match)(f[m],t.url,[]),n=arguments.length,r=Array(n>1?n-1:0),i=1;i<n;i++)r[i-1]=arguments[i];if(e.length){var o;(o=(0,p.default)(e)).call.apply(o,[this,t].concat(r))}else{(0,r[r.length-1])()}}):this},notfound:function(){return c.push.apply(c,arguments),this}}}Object.defineProperty(e,"__esModule",{value:!0}),e.mixin=void 0;var c=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},l=n(12),h=n(0),p=r(h),v=n(15),d=r(v);e.mixin=f},function(t,e,n){"use strict";function r(){}function i(t,e,n){this.fn=t,this.context=e,this.once=n||!1}function o(){this._events=new r,this._eventsCount=0}var u=Object.prototype.hasOwnProperty,a="~";Object.create&&(r.prototype=Object.create(null),(new r).__proto__||(a=!1)),o.prototype.eventNames=function(){var t,e,n=[];if(0===this._eventsCount)return n;for(e in t=this._events)u.call(t,e)&&n.push(a?e.slice(1):e);return Object.getOwnPropertySymbols?n.concat(Object.getOwnPropertySymbols(t)):n},o.prototype.listeners=function(t,e){var n=a?a+t:t,r=this._events[n];if(e)return!!r;if(!r)return[];if(r.fn)return[r.fn];for(var i=0,o=r.length,u=new Array(o);i<o;i++)u[i]=r[i].fn;return u},o.prototype.emit=function(t,e,n,r,i,o){var u=a?a+t:t;if(!this._events[u])return!1;var s,f,c=this._events[u],l=arguments.length;if(c.fn){switch(c.once&&this.removeListener(t,c.fn,void 0,!0),l){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,e),!0;case 3:return c.fn.call(c.context,e,n),!0;case 4:return c.fn.call(c.context,e,n,r),!0;case 5:return c.fn.call(c.context,e,n,r,i),!0;case 6:return c.fn.call(c.context,e,n,r,i,o),!0}for(f=1,s=new Array(l-1);f<l;f++)s[f-1]=arguments[f];c.fn.apply(c.context,s)}else{var h,p=c.length;for(f=0;f<p;f++)switch(c[f].once&&this.removeListener(t,c[f].fn,void 0,!0),l){case 1:c[f].fn.call(c[f].context);break;case 2:c[f].fn.call(c[f].context,e);break;case 3:c[f].fn.call(c[f].context,e,n);break;case 4:c[f].fn.call(c[f].context,e,n,r);break;default:if(!s)for(h=1,s=new Array(l-1);h<l;h++)s[h-1]=arguments[h];c[f].fn.apply(c[f].context,s)}}return!0},o.prototype.on=function(t,e,n){var r=new i(e,n||this),o=a?a+t:t;return this._events[o]?this._events[o].fn?this._events[o]=[this._events[o],r]:this._events[o].push(r):(this._events[o]=r,this._eventsCount++),this},o.prototype.once=function(t,e,n){var r=new i(e,n||this,!0),o=a?a+t:t;return this._events[o]?this._events[o].fn?this._events[o]=[this._events[o],r]:this._events[o].push(r):(this._events[o]=r,this._eventsCount++),this},o.prototype.removeListener=function(t,e,n,i){var o=a?a+t:t;if(!this._events[o])return this;if(!e)return 0==--this._eventsCount?this._events=new r:delete this._events[o],this;var u=this._events[o];if(u.fn)u.fn!==e||i&&!u.once||n&&u.context!==n||(0==--this._eventsCount?this._events=new r:delete this._events[o]);else{for(var s=0,f=[],c=u.length;s<c;s++)(u[s].fn!==e||i&&!u[s].once||n&&u[s].context!==n)&&f.push(u[s]);f.length?this._events[o]=1===f.length?f[0]:f:0==--this._eventsCount?this._events=new r:delete this._events[o]}return this},o.prototype.removeAllListeners=function(t){var e;return t?(e=a?a+t:t,this._events[e]&&(0==--this._eventsCount?this._events=new r:delete this._events[e])):(this._events=new r,this._eventsCount=0),this},o.prototype.off=o.prototype.removeListener,o.prototype.addListener=o.prototype.on,o.prototype.setMaxListeners=function(){return this},o.prefixed=a,o.EventEmitter=o,t.exports=o},function(t,e,n){var r,i,o;!function(n,u){i=[],r=u,void 0!==(o="function"==typeof r?r.apply(e,i):r)&&(t.exports=o)}(0,function(){function t(t){return encodeURI(t).replace(/%25[0-9][0-9]/g,function(t){return"%"+t.substring(3)})}function e(t){return t=t.replace(/%../g,""),encodeURIComponent(t)===t}function n(n){var r="";i[n.charAt(0)]&&(r=n.charAt(0),n=n.substring(1));var u="",a="",s=!0,f=!1,c=!1;"+"==r?s=!1:"."==r?(a=".",u="."):"/"==r?(a="/",u="/"):"#"==r?(a="#",s=!1):";"==r?(a=";",u=";",f=!0,c=!0):"?"==r?(a="?",u="&",f=!0):"&"==r&&(a="&",u="&",f=!0);for(var l=[],h=n.split(","),p=[],v={},d=0;d<h.length;d++){var y=h[d],g=null;if(-1!=y.indexOf(":")){var m=y.split(":");y=m[0],g=parseInt(m[1])}for(var b={};o[y.charAt(y.length-1)];)b[y.charAt(y.length-1)]=!0,y=y.substring(0,y.length-1);var _={truncate:g,name:y,suffices:b};p.push(_),v[y]=_,l.push(y)}return{varNames:l,prefix:a,substitution:function(e){for(var n="",r=0,i=0;i<p.length;i++){var o=p[i],l=e(o.name);if(null==l||Array.isArray(l)&&0==l.length||"object"==typeof l&&0==Object.keys(l).length)r++;else if(n+=i==r?a:u||",",Array.isArray(l)){f&&(n+=o.name+"=");for(var h=0;h<l.length;h++)h>0&&(n+=o.suffices["*"]?u||",":",",o.suffices["*"]&&f&&(n+=o.name+"=")),n+=s?encodeURIComponent(l[h]).replace(/!/g,"%21"):t(l[h])}else if("object"==typeof l){f&&!o.suffices["*"]&&(n+=o.name+"=");var v=!0;for(var d in l)v||(n+=o.suffices["*"]?u||",":","),v=!1,n+=s?encodeURIComponent(d).replace(/!/g,"%21"):t(d),n+=o.suffices["*"]?"=":",",n+=s?encodeURIComponent(l[d]).replace(/!/g,"%21"):t(l[d])}else f&&(n+=o.name,c&&""==l||(n+="=")),null!=o.truncate&&(l=l.substring(0,o.truncate)),n+=s?encodeURIComponent(l).replace(/!/g,"%21"):t(l)}return n},unSubstitution:function(t,n,r){if(a&&(t=t.substring(a.length)),1==p.length&&p[0].suffices["*"]){for(var i=p[0],o=i.name,c=i.suffices["*"]?t.split(u||","):[t],l=s&&-1!=t.indexOf("="),h=1;h<c.length;h++){var t=c[h];l&&-1==t.indexOf("=")&&(c[h-1]+=(u||",")+t,c.splice(h,1),h--)}for(var h=0;h<c.length;h++){var t=c[h];s&&-1!=t.indexOf("=")&&(l=!0);var d=t.split(",");1==d.length?c[h]=d[0]:c[h]=d}if(f||l){for(var y=n[o]||{},g=0;g<c.length;g++){var m=t;if(!f||m){if("string"==typeof c[g]){var t=c[g],b=t.split("=",1)[0],t=t.substring(b.length+1);if(s){if(r&&!e(t))return;t=decodeURIComponent(t)}m=t}else{var t=c[g][0],b=t.split("=",1)[0],t=t.substring(b.length+1);if(s){if(r&&!e(t))return;t=decodeURIComponent(t)}c[g][0]=t,m=c[g]}if(s){if(r&&!e(b))return;b=decodeURIComponent(b)}void 0!==y[b]?Array.isArray(y[b])?y[b].push(m):y[b]=[y[b],m]:y[b]=m}}1==Object.keys(y).length&&void 0!==y[o]?n[o]=y[o]:n[o]=y}else{if(s)for(var g=0;g<c.length;g++){var d=c[g];if(Array.isArray(d))for(var _=0;_<d.length;_++){if(r&&!e(d[_]))return;d[_]=decodeURIComponent(d[_])}else{if(r&&!e(d))return;c[g]=decodeURIComponent(d)}}void 0!==n[o]?Array.isArray(n[o])?n[o]=n[o].concat(c):n[o]=[n[o]].concat(c):1!=c.length||i.suffices["*"]?n[o]=c:n[o]=c[0]}}else{for(var c=1==p.length?[t]:t.split(u||","),x={},h=0;h<c.length;h++){for(var O=0;O<p.length-1&&O<h&&!p[O].suffices["*"];O++);if(O!=h){for(var A=p.length-1;A>0&&p.length-A<c.length-h&&!p[A].suffices["*"];A--);p.length-A!=c.length-h?x[h]=O:x[h]=A}else x[h]=h}for(var h=0;h<c.length;h++){var t=c[h];if(t||!f){var d=t.split(","),l=!1;if(f){var t=d[0],o=t.split("=",1)[0],t=t.substring(o.length+1);d[0]=t;var i=v[o]||p[0]}else var i=p[x[h]],o=i.name;for(var g=0;g<d.length;g++)if(s){if(r&&!e(d[g]))return;d[g]=decodeURIComponent(d[g])}(f||i.suffices["*"])&&void 0!==n[o]?Array.isArray(n[o])?n[o]=n[o].concat(d):n[o]=[n[o]].concat(d):1!=d.length||i.suffices["*"]?n[o]=d:n[o]=d[0]}}}return 1}}}function r(t){if(!(this instanceof r))return new r(t);for(var e=t.split("{"),i=[e.shift()],o=[],u=[],a=[],s=[];e.length>0;){var f=e.shift(),c=f.split("}")[0],l=f.substring(c.length+1),h=n(c);u.push(h.substitution),a.push(h.unSubstitution),o.push(h.prefix),i.push(l),s=s.concat(h.varNames)}this.fill=function(t){if(t&&"function"!=typeof t){var e=t;t=function(t){return e[t]}}for(var n=i[0],r=0;r<u.length;r++){n+=(0,u[r])(t),n+=i[r+1]}return n},this.fromUri=function(t,e){e=e||{};for(var n={},r=0;r<i.length;r++){var u=i[r];if(t.substring(0,u.length)!==u)return;if(t=t.substring(u.length),r>=i.length-1){if(""==t)break;return}var s=o[r];if(!s||t.substring(0,s.length)===s){for(var f=i[r+1],c=r;;){if(c==i.length-2){var l=t.substring(t.length-f.length);if(l!==f)return;var h=t.substring(0,t.length-f.length);t=l}else if(f){var p=t.indexOf(f),h=t.substring(0,p);t=t.substring(p)}else if(o[c+1]){var p=t.indexOf(o[c+1]);-1===p&&(p=t.length);var h=t.substring(0,p);t=t.substring(p)}else{if(i.length>c+2){c++,f=i[c+1];continue}var h=t;t=""}break}if(!a[r](h,n,e.strict))return}}return n},this.varNames=s,this.template=t}var i={"+":!0,"#":!0,".":!0,"/":!0,";":!0,"?":!0,"&":!0},o={"*":!0};return r.prototype={toString:function(){return this.template},fillFromObject:function(t){return this.fill(t)},test:function(t,e){return!!this.fromUri(t,e)}},r})}])});