typed-function.min.js (11497B)
1 "use strict";!function(n,t){"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?module.exports=t():n.typed=t()}(this,function(){function O(){return!0}function en(){return!1}function an(){}return function n(){var t=[{name:"number",test:function(n){return"number"==typeof n}},{name:"string",test:function(n){return"string"==typeof n}},{name:"boolean",test:function(n){return"boolean"==typeof n}},{name:"Function",test:function(n){return"function"==typeof n}},{name:"Array",test:Array.isArray},{name:"Date",test:function(n){return n instanceof Date}},{name:"RegExp",test:function(n){return n instanceof RegExp}},{name:"Object",test:function(n){return"object"==typeof n&&null!==n&&n.constructor===Object}},{name:"null",test:function(n){return null===n}},{name:"undefined",test:function(n){return void 0===n}}],r={name:"any",test:O},e=[],a=[],q={types:t,conversions:a,ignore:e};function u(t){var n=tn(q.types,function(n){return n.name===t});if(n)return n;if("any"===t)return r;throw n=tn(q.types,function(n){return n.name.toLowerCase()===t.toLowerCase()}),new TypeError('Unknown type "'+t+'"'+(n?'. Did you mean "'+n.name+'"?':""))}function i(n){return n===r?999:q.types.indexOf(n)}function c(t){var n=tn(q.types,function(n){return n.test(t)});if(n)return n.name;throw new TypeError("Value has unknown type. Value: "+t)}function z(n){return n.map(function(n){var t=n.types.map(o);return(n.restParam?"...":"")+t.join("|")}).join(",")}function B(n,r){var t,e,a=0===n.indexOf("..."),o=(a?3<n.length?n.slice(3):"any":n).split("|").map(Z).filter(w).filter(d),n=(t=o,e={},r.forEach(function(n){-1!==t.indexOf(n.from)||-1===t.indexOf(n.to)||e[n.from]||(e[n.from]=n)}),Object.keys(e).map(function(n){return e[n]})),o=o.map(function(n){var t=u(n);return{name:n,typeIndex:i(t),test:t.test,conversion:null,conversionIndex:-1}}),n=n.map(function(n){var t=u(n.from);return{name:n.from,typeIndex:i(t),test:t.test,conversion:n,conversionIndex:r.indexOf(n)}});return{types:o.concat(n),restParam:a}}function G(n){return!!(n=x(n))&&n.restParam}function H(n){return n.types.some(function(n){return null!=n.conversion})}function J(n){if(n&&0!==n.types.length){if(1===n.types.length)return u(n.types[0].name).test;if(2===n.types.length){var t=u(n.types[0].name).test,r=u(n.types[1].name).test;return function(n){return t(n)||r(n)}}var e=n.types.map(function(n){return u(n.name).test});return function(n){for(var t=0;t<e.length;t++)if(e[t](n))return!0;return!1}}return O}function K(n){var t,r,e;if(G(n)){var a,o=(a=(e=n).slice(0,e.length-1).map(J)).length,i=J(x(n));return function(n){for(var t=0;t<a.length;t++)if(!a[t](n[t]))return!1;return function(n){for(var t=o;t<n.length;t++)if(!i(n[t]))return!1;return!0}(n)&&n.length>=o+1}}return 0===n.length?function(n){return 0===n.length}:1===n.length?(t=J(n[0]),function(n){return t(n[0])&&1===n.length}):2===n.length?(t=J(n[0]),r=J(n[1]),function(n){return t(n[0])&&r(n[1])&&2===n.length}):(a=n.map(J),function(n){for(var t=0;t<a.length;t++)if(!a[t](n[t]))return!1;return n.length===a.length})}function p(n,t){return t<n.params.length?n.params[t]:G(n.params)?x(n.params):null}function s(n,t,r){return((t=p(n,t))?r?t.types.filter(f):t.types:[]).map(o)}function o(n){return n.name}function f(n){return null===n.conversion||void 0===n.conversion}function m(n,t){return-1!==(n=function(n){for(var t={},r=0;r<n.length;r++)t[n[r]]=!0;return Object.keys(t)}(rn(n,function(n){return s(n,t,!1)}))).indexOf("any")?["any"]:n}function l(n,r,t){for(var e,a=n||"unnamed",o=t,i=0;i<r.length;i++){var u=o.filter(function(n){var t=J(p(n,i));return(i<n.params.length||G(n.params))&&t(r[i])});if(0===u.length){if(0<(e=m(o,i)).length){var s,f=c(r[i]);return(s=new TypeError("Unexpected type of argument in function "+a+" (expected: "+e.join(" or ")+", actual: "+f+", index: "+i+")")).data={category:"wrongType",fn:a,index:i,actual:f,expected:e},s}}else o=u}return t=o.map(function(n){return G(n.params)?1/0:n.params.length}),r.length<Math.min.apply(null,t)?(e=m(o,i),(s=new TypeError("Too few arguments in function "+a+" (expected: "+e.join(" or ")+", index: "+r.length+")")).data={category:"tooFewArgs",fn:a,index:r.length,expected:e}):(t=Math.max.apply(null,t),r.length>t?(s=new TypeError("Too many arguments in function "+a+" (expected: "+t+", actual: "+r.length+")")).data={category:"tooManyArgs",fn:a,index:r.length,expectedLength:t}:(s=new TypeError('Arguments of type "'+r.join(", ")+'" do not match any of the defined signatures of function '+a+".")).data={category:"mismatch",actual:r.map(c)}),s}function h(n){for(var t=999,r=0;r<n.types.length;r++)f(n.types[r])&&(t=Math.min(t,n.types[r].typeIndex));return t}function g(n){for(var t=999,r=0;r<n.types.length;r++)f(n.types[r])||(t=Math.min(t,n.types[r].conversionIndex));return t}function Q(n,t){var r,e,a,o,i=Math.min(n.params.length,t.params.length),u=n.params.some(H)-t.params.some(H);if(0!==u)return u;for(r=0;r<i;r++)if(0!=(u=H(n.params[r])-H(t.params[r])))return u;for(r=0;r<i;r++)if(e=n.params[r],a=t.params[r],o=void 0,0!==(u=0!=(o=e.restParam-a.restParam)||0!=(o=H(e)-H(a))||0!=(o=h(e)-h(a))?o:g(e)-g(a)))return u;return n.params.length-t.params.length}function W(n){var t,r,e,a,o=[],i=[];switch(n.types.forEach(function(n){n.conversion&&(o.push(u(n.conversion.from).test),i.push(n.conversion.convert))}),i.length){case 0:return function(n){return n};case 1:return t=o[0],e=i[0],function(n){return t(n)?e(n):n};case 2:return t=o[0],r=o[1],e=i[0],a=i[1],function(n){return t(n)?e(n):r(n)?a(n):n};default:return function(n){for(var t=0;t<i.length;t++)if(o[t](n))return i[t](n);return n}}}function X(n,i){return function t(r,e,a){if(e<r.length){var n=r[e],o=i?n.types.filter(f):n.types;return rn(n.restParam?(n=o.filter(f)).length<o.length?[n,o]:[o]:o.map(function(n){return[n]}),function(n){return t(r,e+1,a.concat([n]))})}return[a.map(function(n,t){return{types:n,restParam:t===r.length-1&&G(r)}})]}(n,0,[])}function Y(n,t){for(var r=Math.max(n.params.length,t.params.length),e=0;e<r;e++)if(!function(n,t){for(var r=0;r<n.length;r++)if(function(n,t){return-1!==n.indexOf(t)}(t,n[r]))return 1}(s(n,e,!0),s(t,e,!0)))return!1;var a=n.params.length,o=t.params.length,i=G(n.params),u=G(t.params);return i?u?a===o:a<=o:u?o<=a:a===o}function y(e,o){if(0===Object.keys(o).length)throw new SyntaxError("No signatures provided");var r=[];Object.keys(o).map(function(n){return r=o[t=n],a=q.conversions,n=[],(n=""!==t.trim()?t.split(",").map(Z).map(function(n,t,r){var e=B(n,a);if(e.restParam&&t!==r.length-1)throw new SyntaxError('Unexpected rest parameter "'+n+'": only allowed for the last parameter');return e}):n).some(_)?null:{params:n,fn:r};var t,r,a}).filter($).forEach(function(t){var n=tn(r,function(n){return Y(n,t)});if(n)throw new TypeError('Conflicting signatures "'+z(n.params)+'" and "'+z(t.params)+'".');r.push(t)});var a=rn(r,function(t){return(t?X(t.params,!1):[]).map(function(n){return{params:n,fn:t.fn}})}).filter($);a.sort(Q);var i,n=a[0]&&a[0].params.length<=2&&!G(a[0].params),t=a[1]&&a[1].params.length<=2&&!G(a[1].params),u=a[2]&&a[2].params.length<=2&&!G(a[2].params),s=a[3]&&a[3].params.length<=2&&!G(a[3].params),f=a[4]&&a[4].params.length<=2&&!G(a[4].params),c=a[5]&&a[5].params.length<=2&&!G(a[5].params),p=n&&t&&u&&s&&f&&c,m=a.map(function(n){return K(n.params)}),l=n?J(a[0].params[0]):en,h=t?J(a[1].params[0]):en,g=u?J(a[2].params[0]):en,y=s?J(a[3].params[0]):en,v=f?J(a[4].params[0]):en,d=c?J(a[5].params[0]):en,w=n?J(a[0].params[1]):en,x=t?J(a[1].params[1]):en,E=u?J(a[2].params[1]):en,j=s?J(a[3].params[1]):en,O=f?J(a[4].params[1]):en,b=c?J(a[5].params[1]):en,T=a.map(function(n){return function(n,e){var a,o,t=e;n.some(H)&&(a=G(n),o=n.map(W),t=function(){for(var n=[],t=a?arguments.length-1:arguments.length,r=0;r<t;r++)n[r]=o[r](arguments[r]);return a&&(n[t]=arguments[t].map(o[t])),e.apply(this,n)});var r,i=t;return G(n)&&(r=n.length-1,i=function(){return t.apply(this,nn(arguments,0,r).concat([nn(arguments,r)]))}),i}(n.params,n.fn)}),P=n?T[0]:an,A=t?T[1]:an,M=u?T[2]:an,F=s?T[3]:an,k=f?T[4]:an,I=c?T[5]:an,C=n?a[0].params.length:-1,S=t?a[1].params.length:-1,D=u?a[2].params.length:-1,L=s?a[3].params.length:-1,U=f?a[4].params.length:-1,R=c?a[5].params.length:-1,V=p?6:0,N=a.length,p=function n(t,r){return(arguments.length===C&&l(t)&&w(r)?P:arguments.length===S&&h(t)&&x(r)?A:arguments.length===D&&g(t)&&E(r)?M:arguments.length===L&&y(t)&&j(r)?F:arguments.length===U&&v(t)&&O(r)?k:arguments.length===R&&d(t)&&b(r)?I:function(){for(var n=V;n<N;n++)if(m[n](arguments))return T[n].apply(this,arguments);return q.onMismatch(e,arguments,a)}).apply(n,arguments)};try{Object.defineProperty(p,"name",{value:e})}catch(n){}return p.signatures=(i={},a.forEach(function(t){t.params.some(H)||X(t.params,!0).forEach(function(n){i[z(n)]=t.fn})}),i),p}function v(n,t,r){throw l(n,t,r)}function d(n){return-1===q.ignore.indexOf(n)}function Z(n){return n.trim()}function w(n){return!!n}function $(n){return null!==n}function _(n){return 0===n.types.length}function x(n){return n[n.length-1]}function nn(n,t,r){return Array.prototype.slice.call(n,t,r)}function tn(n,t){for(var r=0;r<n.length;r++)if(t(n[r]))return n[r]}function rn(n,t){return Array.prototype.concat.apply([],n.map(t))}function E(n){for(var t="",r=0;r<n.length;r++){var e=n[r];if(("object"==typeof e.signatures||"string"==typeof e.signature)&&""!==e.name)if(""===t)t=e.name;else if(t!==e.name){var a=new Error("Function names do not match (expected: "+t+", actual: "+e.name+")");throw a.data={actual:e.name,expected:t},a}}return t}function j(n){var r,e={};function t(n,t){if(e.hasOwnProperty(n)&&t!==e[n])throw(r=new Error('Signature "'+n+'" is defined twice')).data={signature:n},r}for(var a=0;a<n.length;a++){var o=n[a];if("object"==typeof o.signatures)for(var i in o.signatures)o.signatures.hasOwnProperty(i)&&(t(i,o.signatures[i]),e[i]=o.signatures[i]);else{if("string"!=typeof o.signature)throw(r=new TypeError("Function is no typed-function (index: "+a+")")).data={index:a},r;t(o.signature,o),e[o.signature]=o}}return e}return(q=y("typed",{"string, Object":y,Object:function(n){var t,r=[];for(t in n)n.hasOwnProperty(t)&&r.push(n[t]);return y(E(r),n)},"...Function":function(n){return y(E(n),j(n))},"string, ...Function":function(n,t){return y(n,j(t))}})).create=n,q.types=t,q.conversions=a,q.ignore=e,q.onMismatch=v,q.throwMismatchError=v,q.createError=l,q.convert=function(n,t){var r=c(n);if(t===r)return n;for(var e=0;e<q.conversions.length;e++){var a=q.conversions[e];if(a.from===r&&a.to===t)return a.convert(n)}throw new Error("Cannot convert from "+r+" to "+t)},q.find=function(n,t){if(!n.signatures)throw new TypeError("Function is no typed-function");if("string"==typeof t)for(var r=t.split(","),e=0;e<r.length;e++)r[e]=r[e].trim();else{if(!Array.isArray(t))throw new TypeError("String array or a comma separated string expected");r=t}if(t=r.join(","),t=n.signatures[t])return t;throw new TypeError("Signature not found (signature: "+(n.name||"unnamed")+"("+r.join(", ")+"))")},q.addType=function(n,t){if(!n||"string"!=typeof n.name||"function"!=typeof n.test)throw new TypeError("Object with properties {name: string, test: function} expected");if(!1!==t)for(var r=0;r<q.types.length;r++)if("Object"===q.types[r].name)return void q.types.splice(r,0,n);q.types.push(n)},q.addConversion=function(n){if(!n||"string"!=typeof n.from||"string"!=typeof n.to||"function"!=typeof n.convert)throw new TypeError("Object with properties {from: string, to: string, convert: function} expected");q.conversions.push(n)},q}()});