UNPKG

7.87 kBJavaScriptView Raw
1/*! vue-types - v1.5.7
2 * https://github.com/dwightjack/vue-types
3 * Copyright (c) 2019 - Marco Solazzi;
4 * Licensed MIT
5 */
6!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("vue")):"function"==typeof define&&define.amd?define(["vue"],t):(e=e||self).VueTypes=t(e.Vue)}(this,function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n="object"==typeof t&&t&&t.Object===Object&&t,r="object"==typeof self&&self&&self.Object===Object&&self,o=(n||r||Function("return this")()).Symbol,u=Object.prototype,i=u.hasOwnProperty,a=u.toString,f=o?o.toStringTag:void 0;var c=function(e){var t=i.call(e,f),n=e[f];try{var r=!(e[f]=void 0)}catch(e){}var o=a.call(e);return r&&(t?e[f]=n:delete e[f]),o},l=Object.prototype.toString;var s=function(e){return l.call(e)},y=o?o.toStringTag:void 0;var p=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":y&&y in Object(e)?c(e):s(e)};var d=function(t,n){return function(e){return t(n(e))}}(Object.getPrototypeOf,Object);var b=function(e){return null!=e&&"object"==typeof e},v=Function.prototype,m=Object.prototype,O=v.toString,g=m.hasOwnProperty,j=O.call(Object);var h=function(e){if(!b(e)||"[object Object]"!=p(e))return!1;var t=d(e);if(null===t)return!0;var n=g.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&O.call(n)==j},T=Object.prototype,w=T.toString,_=T.hasOwnProperty,P=/^\s*function (\w+)/;function S(e){var t=null!=e?e.type?e.type:e:null,n=t&&t.toString().match(P);return n&&n[1]}function x(){}var D=Number.isInteger||function(e){return"number"==typeof e&&isFinite(e)&&Math.floor(e)===e},A=Array.isArray||function(e){return"[object Array]"===w.call(e)},q=function(e){return"[object Function]"===w.call(e)};function F(e,t,n){return void 0===n&&(n=!1),Object.defineProperty(t,"_vueTypes_name",{enumerable:!1,writable:!1,value:e}),function(e){Object.defineProperty(e,"def",{value:function(e){return(void 0!==e||this.default)&&(q(e)||V(this,e)?A(e)?this.default=function(){return[].concat(e)}:h(e)?this.default=function(){return Object.assign({},e)}:this.default=e:E(this._vueTypes_name+' - invalid default value: "'+e+'"',e)),this},enumerable:!1,writable:!1})}(function(e){return Object.defineProperty(e,"isRequired",{get:function(){return this.required=!0,this},enumerable:!1})}(t)),n&&function(e){Object.defineProperty(e,"validate",{value:function(e){return this.validator=e.bind(this),this},enumerable:!1})}(t),q(t.validator)&&(t.validator=t.validator.bind(t)),t}function V(e,t,n){void 0===n&&(n=!1);var r,o=e,u=!0;h(e)||(o={type:e});var i,a=o._vueTypes_name?o._vueTypes_name+" - ":"";if(_.call(o,"type")&&null!==o.type){if(void 0===o.type)throw new TypeError("[VueTypes error]: Setting type to undefined is not allowed.");if(!o.required&&void 0===t)return u;A(o.type)?(u=o.type.some(function(e){return V(e,t,!0)}),r=o.type.map(function(e){return S(e)}).join(" or ")):u="Array"===(r=S(o))?A(t):"Object"===r?h(t):"String"===r||"Number"===r||"Boolean"===r||"Function"===r?function(e){if(null==e)return null;var t=e.constructor.toString().match(P);return t&&t[1]}(t)===r:t instanceof o.type}return u?(_.call(o,"validator")&&q(o.validator)&&(n&&(i=E,E=x),u=o.validator(t),i&&(E=i),u||!1!==n||E(a+"custom validation failed")),u):(!1===n&&E(a+'value "'+t+'" should be of type "'+r+'"'),!1)}var N,k,E=x,L={get any(){return F("any",{type:null},!0)},get func(){return F("function",{type:Function},!0).def(L.sensibleDefaults.func)},get bool(){return F("boolean",{type:Boolean},!0).def(L.sensibleDefaults.bool)},get string(){return F("string",{type:String},!0).def(L.sensibleDefaults.string)},get number(){return F("number",{type:Number},!0).def(L.sensibleDefaults.number)},get array(){return F("array",{type:Array},!0).def(L.sensibleDefaults.array)},get object(){return F("object",{type:Object},!0).def(L.sensibleDefaults.object)},get integer(){return F("integer",{type:Number,validator:function(e){return D(e)}}).def(L.sensibleDefaults.integer)},get symbol(){return F("symbol",{type:null,validator:function(e){return"symbol"==typeof e}},!0)},extend:function(e){void 0===e&&(e={});var t,n=e,o=n.name,r=n.validate,u=void 0!==r&&r,i=n.getter,a=void 0!==i&&i,f=function(e,t){if(null==e)return{};var n,r,o={},u=Object.keys(e);for(r=0;r<u.length;r++)n=u[r],0<=t.indexOf(n)||(o[n]=e[n]);return o}(n,["name","validate","getter"]);if(a)t={get:function(){return F(o,Object.assign({},f),u)},enumerable:!0,configurable:!1};else{var c=f.validator;t={value:function(){var e=F(o,Object.assign({},f),u);if(c){for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];e.validator=c.bind.apply(c,[e].concat(n))}return e},writable:!1,enumerable:!0,configurable:!1}}return Object.defineProperty(this,o,t)},custom:function(n,r){if(void 0===r&&(r="custom validation failed"),"function"!=typeof n)throw new TypeError("[VueTypes error]: You must provide a function as argument");return F(n.name||"<<anonymous function>>",{validator:function(e){var t=n(e);return t||E(this._vueTypes_name+" - "+r),t}})},oneOf:function(n){if(!A(n))throw new TypeError("[VueTypes error]: You must provide an array as argument");var r='oneOf - value should be one of "'+n.join('", "')+'"',e=n.reduce(function(e,t){return null!=t&&-1===e.indexOf(t.constructor)&&e.push(t.constructor),e},[]);return F("oneOf",{type:0<e.length?e:null,validator:function(e){var t=-1!==n.indexOf(e);return t||E(r),t}})},instanceOf:function(e){return F("instanceOf",{type:e})},oneOfType:function(n){if(!A(n))throw new TypeError("[VueTypes error]: You must provide an array as argument");var r=!1,e=n.reduce(function(e,t){if(h(t)){if("oneOf"===t._vueTypes_name)return e.concat(t.type||[]);if(t.type&&!q(t.validator)){if(A(t.type))return e.concat(t.type);e.push(t.type)}else q(t.validator)&&(r=!0);return e}return e.push(t),e},[]);if(!r)return F("oneOfType",{type:e});var o=n.map(function(e){return e&&A(e.type)?e.type.map(S):S(e)}).reduce(function(e,t){return e.concat(A(t)?t:[t])},[]).join('", "');return this.custom(function(t){var e=n.some(function(e){return"oneOf"===e._vueTypes_name?!e.type||V(e.type,t,!0):V(e,t,!0)});return e||E('oneOfType - value type should be one of "'+o+'"'),e})},arrayOf:function(n){return F("arrayOf",{type:Array,validator:function(e){var t=e.every(function(e){return V(n,e)});return t||E('arrayOf - value must be an array of "'+S(n)+'"'),t}})},objectOf:function(n){return F("objectOf",{type:Object,validator:function(t){var e=Object.keys(t).every(function(e){return V(n,t[e])});return e||E('objectOf - value must be an object of "'+S(n)+'"'),e}})},shape:function(o){var u=Object.keys(o),e=u.filter(function(e){return o[e]&&!0===o[e].required}),t=F("shape",{type:Object,validator:function(t){var n=this;if(!h(t))return!1;var r=Object.keys(t);return 0<e.length&&e.some(function(e){return-1===r.indexOf(e)})?(E('shape - at least one of required properties "'+e.join('", "')+'" is not present'),!1):r.every(function(e){return-1===u.indexOf(e)?!0===n._vueTypes_isLoose||(E('shape - object is missing "'+e+'" property'),!1):V(o[e],t[e])})}});return Object.defineProperty(t,"_vueTypes_isLoose",{enumerable:!1,writable:!0,value:!1}),Object.defineProperty(t,"loose",{get:function(){return this._vueTypes_isLoose=!0,this},enumerable:!1}),t}};return N=L,k={func:function(){},bool:!0,string:"",number:0,array:function(){return[]},object:function(){return{}},integer:0},Object.defineProperty(N,"sensibleDefaults",{enumerable:!1,set:function(e){k=!1===e?{}:!0===e?{func:function(){},bool:!0,string:"",number:0,array:function(){return[]},object:function(){return{}},integer:0}:e},get:function(){return k}}),L.utils={validate:function(e,t){return V(t,e,!0)},toType:F},L});
7//# sourceMappingURL=vue-types.min.js.map