-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathnames.min.js
1 lines (1 loc) · 3.42 KB
/
names.min.js
1
typeof define=="undefined"&&(define=function(){typeof arguments[0]=="function"?arguments[0]():typeof arguments[1]=="function"?arguments[1]():typeof arguments[2]=="function"&&arguments[2](),define=undefined}),define("names",[],function(){function i(i){var s,o,u,a,f,l=[];if(typeof i=="function"){i.__names=i.__names||{};if(!i.__names.args){s=i.toString().replace(r,""),o=s.match(e)[1],u=o.split(t);for(f=0;f<u.length;f++)a=u[f].match(n),a!==null&&l.push(a[1]);i.__names.args=l}return i.__names.args}throw new Error("names.js getArgNamesFromFunction: func must be a function")}function s(e,t,n){if(!n)throw new Error("names.js passesTypeCheck: name is required");if((!e||!e[n])&&t&&t[n])throw new Error('names.js passesTypeCheck: argument "'+n+'" is required');if(!t||!t[n])return!0;if(e&&e[n]){if(typeof t[n]=="string"&&typeof e[n]===t[n])return!0;if(typeof t[n]=="function"&&e[n]instanceof t[n])return!0}return!1}function o(e,t,n){if(!n)throw new Error("names.js passesValidation: name is required");if(!e||e[n]===undefined){if(t&&t[n]&&t[n].required)throw new Error('names.js passesValidation: argument "'+n+'" is required');return!0}return!t||!t[n]||!t[n].test?!0:typeof t[n].test=="function"?t[n].test(e[n]):typeof t[n].test!="object"||!t[n].test.test?!1:t[n].test.test(e[n])}function u(){var e,t,n,r={};for(e=0;e<arguments.length;e++){n=arguments[e];for(t in n)n.hasOwnProperty(t)&&(r[t]=n[t])}return r}function a(e,t){var n,r;if(e instanceof Array){t.__names=t.__names||{},t.__names.args=t.__names.args||[],t.__names.types=t.__names.types||{},t.__names.defaults=t.__names.defaults||{};for(n=0;n<e.length;n++){r=e[n];if(!(r instanceof Array))throw new Error("names.js create: all args' values must be arrays");if(typeof r[0]!="string")throw new Error("names.js create: the first value in an arg must be a string");t.__names.args[n]=r[0];if(typeof r[1]=="string"||typeof r[1]=="function")t.__names.types[r[0]]=r[1];else if(r[1]!==undefined&&r[1]!==null)throw new Error("names.js create: the second value in an arg must be a string or a Class/function");if(r[2]!==undefined&&r[2]!==null){if(!r[1]||!s({test:r[2]},{test:r[1]},"test"))throw new Error("names.js create: the third value in an arg must match the type specified by the second value");t.__names.defaults[r[0]]=r[2]}}return t}throw new Error("names.js create: args must be an array")}var e=/^function\s*[^\(]*\(\s*([^\)]*)\)/m,t=/,/,n=/^\s*(.+?)\s*$/,r=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg;a.__names={args:["args","method"]},Function.prototype.applyNamed=function(e,t){var n,r,a,f,l=[],c=i(this);f=u(this.__names&&this.__names.defaults?this.__names.defaults:{},t);for(n=0;n<c.length;n++){a=c[n],r=f[a];if(!s(f,this.__names.types,a))throw new Error("names.js applyNamed: "+f[a]+" is not of type "+this.__names.types[a]);if(!o(f,this.__names.validation,a))throw new Error("names.js applyNamed: "+f[a]+" is not valid");l.push(r||null)}return this.apply(e,l)},Function.createNamed=function(e){return a.applyNamed(null,e)},Function.prototype.addValidation=Function.createNamed({args:[["validations","object"]],method:function(e){var t,n;this.__names=this.__names||{},this.__names.validation=this.__names.validation||{};for(t in e)n=e[t],this.__names.validation[t]=n}}),Function.prototype.addValidation.addValidation({validations:{test:function(e){var t,n;for(t in e){n=e[t];if(!n.test||typeof n.test!="function"&&(typeof n.test!="object"||!n.test.test))return!1;if(n.required!==undefined&&typeof n!="boolean")return!1}return!0},required:!0}})})