New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

vue-types

Package Overview
Dependencies
Maintainers
1
Versions
99
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

vue-types - npm Package Compare versions

Comparing version

to
2.0.0-rc.0

dist/shim.m.js

19

dist/index.d.ts
import { toType, toValidableType, validateType, fromType } from './utils';
import { VueTypesDefaults, ExtendProps, VueTypeDef, VueTypeValidableDef } from './types';
import { PropOptions } from 'vue';
import { VueTypesDefaults, ExtendProps, VueTypeDef, VueTypeValidableDef, VueTypeShape, VueTypeLooseShape } from './types';
import { PropOptions } from './types';
import { any, func, bool, string, number, array, integer, symbol, object } from './validators/native';

@@ -17,4 +17,4 @@ import custom from './validators/custom';

readonly any: VueTypeValidableDef<any>;
readonly func: VueTypeValidableDef<Function> & {
default: Function;
readonly func: VueTypeValidableDef<(...args: any[]) => any> & {
default: (...args: any[]) => any;
};

@@ -43,3 +43,3 @@ readonly bool: VueTypeValidableDef<boolean> & {

};
readonly symbol: VueTypeValidableDef<symbol>;
readonly symbol: VueTypeDef<symbol>;
readonly custom: typeof custom;

@@ -63,4 +63,4 @@ readonly oneOf: typeof oneOf;

readonly any: VueTypeValidableDef<any>;
readonly func: VueTypeValidableDef<Function> & {
default: Function;
readonly func: VueTypeValidableDef<(...args: any[]) => any> & {
default: (...args: any[]) => any;
};

@@ -89,3 +89,3 @@ readonly bool: VueTypeValidableDef<boolean> & {

};
readonly symbol: VueTypeValidableDef<symbol>;
readonly symbol: VueTypeDef<symbol>;
readonly custom: typeof custom;

@@ -107,2 +107,3 @@ readonly oneOf: typeof oneOf;

export { any, func, bool, string, number, array, integer, symbol, object, custom, oneOf, oneOfType, arrayOf, instanceOf, objectOf, shape, createTypes, toType, toValidableType, validateType, fromType, };
export { VueTypeDef, VueTypeValidableDef };
export declare type VueTypesInterface = ReturnType<typeof createTypes>;
export { VueTypeDef, VueTypeValidableDef, VueTypeShape, VueTypeLooseShape };

@@ -1,34 +0,92 @@

import { VueTypeDef, VueTypeShape, VueTypeValidableDef, VueTypesDefaults } from './types';
declare class BaseVueTypes {
static defaults: Partial<VueTypesDefaults>;
static any: VueTypeValidableDef<any>;
static func: VueTypeValidableDef<Function>;
static bool: VueTypeValidableDef<boolean>;
static string: VueTypeValidableDef<string>;
static number: VueTypeValidableDef<number>;
static array: VueTypeValidableDef<unknown[]>;
static object: VueTypeValidableDef<{
[key: string]: any;
}>;
static symbol: VueTypeValidableDef<symbol>;
static integer: VueTypeDef<number>;
static oneOf: (arr: any[]) => VueTypeDef<any>;
static custom: (fn: (v: any) => boolean) => VueTypeDef<any>;
static instanceOf: (i: any) => VueTypeDef<any>;
static oneOfType: (arr: any[]) => VueTypeDef<any>;
static arrayOf: (t: any) => VueTypeDef<any>;
static objectOf: (t: any) => VueTypeDef<any>;
static shape: (o: any) => VueTypeShape<any>;
static extend: (props: any) => any;
static utils: {
toType: (...args: any[]) => VueTypeDef<any> | VueTypeValidableDef<any>;
import { VueTypesDefaults } from './types';
export { VueTypeDef, VueTypeValidableDef } from './types';
export declare const any: () => any;
export declare const func: <T = any>() => T;
export declare const bool: () => any;
export declare const string: () => any;
export declare const number: () => any;
export declare const array: <T = any>() => T;
export declare const object: <T = any>() => T;
export declare const symbol: () => any;
export declare const integer: () => any;
export declare const oneOf: <T = any>(a: any) => T;
export declare const custom: <T = any>(a: any) => T;
export declare const instanceOf: <T = any>(Constr: any) => T;
export declare const oneOfType: <T = any>(a: any) => T;
export declare const arrayOf: <T = any>(a: any) => T;
export declare const objectOf: <T = any>(a: any) => T;
export declare const shape: <T = any>(a: any) => any;
export declare function createTypes(defs?: Partial<VueTypesDefaults>): {
new (): {};
defaults: {
func?: (...args: any[]) => any;
bool?: boolean;
string?: string;
number?: number;
array?: () => any[];
object?: () => {
[key: string]: any;
};
integer?: number;
};
sensibleDefaults: boolean | Partial<VueTypesDefaults>;
readonly any: any;
readonly func: any;
readonly bool: any;
readonly string: any;
readonly number: any;
readonly array: any;
readonly object: any;
readonly symbol: any;
readonly integer: any;
oneOf: <T = any>(a: any) => T;
custom: <T_1 = any>(a: any) => T_1;
instanceOf: <T_2 = any>(Constr: any) => T_2;
oneOfType: <T_3 = any>(a: any) => T_3;
arrayOf: <T_4 = any>(a: any) => T_4;
objectOf: <T_5 = any>(a: any) => T_5;
shape: <T_6 = any>(a: any) => any;
extend<T_7 = any>(props: any): T_7;
utils: {
toType: (...args: any[]) => any;
validate: (...args: any[]) => boolean;
};
};
declare const VueTypes_base: {
new (): {};
defaults: {
func?: (...args: any[]) => any;
bool?: boolean;
string?: string;
number?: number;
array?: () => any[];
object?: () => {
[key: string]: any;
};
integer?: number;
};
sensibleDefaults: boolean | Partial<VueTypesDefaults>;
readonly any: any;
readonly func: any;
readonly bool: any;
readonly string: any;
readonly number: any;
readonly array: any;
readonly object: any;
readonly symbol: any;
readonly integer: any;
oneOf: <T = any>(a: any) => T;
custom: <T_1 = any>(a: any) => T_1;
instanceOf: <T_2 = any>(Constr: any) => T_2;
oneOfType: <T_3 = any>(a: any) => T_3;
arrayOf: <T_4 = any>(a: any) => T_4;
objectOf: <T_5 = any>(a: any) => T_5;
shape: <T_6 = any>(a: any) => any;
extend<T_7 = any>(props: any): T_7;
utils: {
toType: (...args: any[]) => any;
validate: (...args: any[]) => boolean;
};
};
export default class VueTypes extends VueTypes_base {
}
export declare function createTypes(defs?: Partial<VueTypesDefaults>): typeof BaseVueTypes;
declare class VueTypes extends BaseVueTypes {
static defaults: Partial<VueTypesDefaults>;
static get sensibleDefaults(): boolean | Partial<VueTypesDefaults>;
static set sensibleDefaults(v: boolean | Partial<VueTypesDefaults>);
}
export default VueTypes;

@@ -1,15 +0,2 @@

import t from"vue";function e(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function n(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}function r(){return(r=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}).apply(this,arguments)}function o(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,t.__proto__=e}
/*!
* isobject <https://github.com/jonschlinkert/isobject>
*
* Copyright (c) 2014-2017, Jon Schlinkert.
* Released under the MIT License.
*/
/*!
* is-plain-object <https://github.com/jonschlinkert/is-plain-object>
*
* Copyright (c) 2014-2017, Jon Schlinkert.
* Released under the MIT License.
*/
function u(t){return 1==(null!=(e=t)&&"object"==typeof e&&!1===Array.isArray(e))&&"[object Object]"===Object.prototype.toString.call(t);var e}function i(t){var e,n;return!1!==u(t)&&"function"==typeof(e=t.constructor)&&!1!==u(n=e.prototype)&&!1!==n.hasOwnProperty("isPrototypeOf")}var c=Object.defineProperty,a=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)};function f(t,e,n){void 0===n&&(n=!1);var r={_vueTypes_name:{value:t,writable:!0},def:{value:function(t){var e=this;return void 0!==t||e.default?(e.default=a(t)?function(){return[].concat(t)}:i(t)?function(){return Object.assign({},t)}:t,e):e}},isRequired:{get:function(){return this.required=!0,this}}};return n&&(r.validate={value:function(){}}),Object.assign(Object.defineProperties({validator:function(){return!0}},r),e)}var s={func:Function,bool:Boolean,string:String,number:Number,array:Array,object:Object,arrayOf:Array,objectOf:Object,shape:Object},l=["any","func","bool","string","number","array","object","symbol"],p=["oneOf","custom","instanceOf","oneOfType","arrayOf","objectOf"],b=function(){};function y(t){function e(e,n,r,o,u){var i;void 0===o&&(o=!1),void 0===u&&(u=!1);var a=((i={})[o?"get":"value"]=function(){return f(n,r,u).def(o?t.sensibleDefaults[n]:void 0)},i);return c(e,n,a)}function n(t,n,r){return void 0===r&&(r=!1),function(o){return e(t,o,{type:s[o]||null},n,r)}}return t.extend=function(t){var n=t.validate,r=t.getter,o=void 0!==r&&r,u=t.type,c=void 0===u?null:u;return e(this,t.name,{type:i(c)&&c.type?null:c},o,!!n)},l.forEach(n(t,!0,!0)),p.forEach(n(t,!1)),e(t,"integer",{type:Number},!0),c(t,"shape",{value:function(){return c(f("shape",{type:Object}),"loose",{get:function(){return this}})}}),t}function v(t){var e;return void 0===t&&(t={func:function(){},bool:!0,string:"",number:0,array:function(){return[]},object:function(){return{}},integer:0}),y(((e=function(e){function u(){return e.apply(this,arguments)||this}return o(u,e),n(u,null,[{key:"sensibleDefaults",get:function(){return r({},this.defaults)},set:function(e){this.defaults=!1!==e?r({},!0!==e?e:t):{}}}]),u}(b)).defaults=r({},t),e))}b.defaults={},b.utils={toType:f,validate:function(){return!![].slice.call(arguments)}},"production"!==process.env.NODE_ENV&&!1===t.config.silent&&console.warn("You are using the production shimmed version of VueTypes in a development build. Refer to https://github.com/dwightjack/vue-types#production-build to learn how to configure VueTypes for usage in multiple environments.");var d=function(t){function e(){return t.apply(this,arguments)||this}return o(e,t),n(e,null,[{key:"sensibleDefaults",get:function(){return r({},this.defaults)},set:function(t){this.defaults=!1!==t?!0!==t?r({},t):{func:function(){},bool:!0,string:"",number:0,array:function(){return[]},object:function(){return{}},integer:0}:{}}}]),e}(b);d.defaults={func:function(){},bool:!0,string:"",number:0,array:function(){return[]},object:function(){return{}},integer:0},y(d);export default d;export{v as createTypes};
var t,e=(t=require("vue"))&&"object"==typeof t&&"default"in t?t.default:t;function n(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function r(t,e,r){return e&&n(t.prototype,e),r&&n(t,r),t}function o(){return(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}).apply(this,arguments)}function u(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,t.__proto__=e}function i(t){return 1==(null!=(e=t)&&"object"==typeof e&&!1===Array.isArray(e))&&"[object Object]"===Object.prototype.toString.call(t);var e}function f(t){var e,n;return!1!==i(t)&&"function"==typeof(e=t.constructor)&&!1!==i(n=e.prototype)&&!1!==n.hasOwnProperty("isPrototypeOf")}var c=Object.defineProperty,a=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)};function s(t,e,n){void 0===e&&(e={}),void 0===n&&(n=!1);var r={_vueTypes_name:{value:t,writable:!0},def:{value:function(t){var e=this;return void 0!==t||e.default?(e.default=a(t)?function(){return[].concat(t)}:f(t)?function(){return Object.assign({},t)}:t,e):e}},isRequired:{get:function(){return this.required=!0,this}}};return n&&(r.validate={value:function(){}}),Object.assign(Object.defineProperties({validator:function(){return!0}},r),e)}var p=function(){return s("any",{},!0)},l=function(){return s("func",{type:Function},!0)},y=function(){return s("bool",{type:Boolean},!0)},d=function(){return s("string",{type:String},!0)},b=function(){return s("number",{type:Number},!0)},v=function(){return s("array",{type:Array},!0)},g=function(){return s("object",{type:Object},!0)},O=function(){return s("symbol")},h=function(){return s("integer",{type:Number})},j=function(t){return s("oneOf")},m=function(t){return s("custom")},x=function(t){return s("instanceOf",{type:t})},k=function(t){return s("oneOfType")},T=function(t){return s("arrayOf",{type:Array})},w=function(t){return s("objectOf",{type:Object})},A=function(t){return c(s("shape",{type:Object}),"loose",{get:function(){return this}})};function _(t,e,n,r,o){var u;void 0===r&&(r=!1),void 0===o&&(o=!1);var i=((u={})[r?"get":"value"]=function(){return s(e,n,o).def(r?t.defaults[e]:void 0)},u);return c(t,e,i)}var P=function(){function t(){}return t.extend=function(t){var e=t.validate,n=t.getter,r=void 0!==n&&n,o=t.type,u=void 0===o?null:o;return _(this,t.name,{type:f(u)&&u.type?null:u},r,!!e)},r(t,null,[{key:"any",get:function(){return p()}},{key:"func",get:function(){return l().def(this.defaults.func)}},{key:"bool",get:function(){return y().def(this.defaults.bool)}},{key:"string",get:function(){return d().def(this.defaults.string)}},{key:"number",get:function(){return b().def(this.defaults.number)}},{key:"array",get:function(){return v().def(this.defaults.array)}},{key:"object",get:function(){return g().def(this.defaults.object)}},{key:"symbol",get:function(){return O()}},{key:"integer",get:function(){return h().def(this.defaults.integer)}}]),t}();function N(t){var e;return void 0===t&&(t={func:function(){},bool:!0,string:"",number:0,array:function(){return[]},object:function(){return{}},integer:0}),(e=function(e){function n(){return e.apply(this,arguments)||this}return u(n,e),r(n,null,[{key:"sensibleDefaults",get:function(){return o({},this.defaults)},set:function(e){this.defaults=!1!==e?o({},!0!==e?e:t):{}}}]),n}(P)).defaults=o({},t),e}P.defaults={},P.oneOf=j,P.custom=m,P.instanceOf=x,P.oneOfType=k,P.arrayOf=T,P.objectOf=w,P.shape=A,P.utils={toType:s,validate:function(){return!![].slice.call(arguments)}},"production"!==process.env.NODE_ENV&&!1===e.config.silent&&console.warn("You are using the production shimmed version of VueTypes in a development build. Refer to https://github.com/dwightjack/vue-types#production-build to learn how to configure VueTypes for usage in multiple environments.");var q=function(t){function e(){return t.apply(this,arguments)||this}return u(e,t),e}(N());exports.any=p,exports.array=v,exports.arrayOf=T,exports.bool=y,exports.createTypes=N,exports.custom=m,exports.default=q,exports.func=l,exports.instanceOf=x,exports.integer=h,exports.number=b,exports.object=g,exports.objectOf=w,exports.oneOf=j,exports.oneOfType=k,exports.shape=A,exports.string=d,exports.symbol=O;
//# sourceMappingURL=shim.js.map

@@ -1,15 +0,2 @@

import e from"vue";
/*!
* isobject <https://github.com/jonschlinkert/isobject>
*
* Copyright (c) 2014-2017, Jon Schlinkert.
* Released under the MIT License.
*/
/*!
* is-plain-object <https://github.com/jonschlinkert/is-plain-object>
*
* Copyright (c) 2014-2017, Jon Schlinkert.
* Released under the MIT License.
*/
function t(e){return 1==(null!=(t=e)&&"object"==typeof t&&!1===Array.isArray(t))&&"[object Object]"===Object.prototype.toString.call(e);var t}function r(e){var r,n;return!1!==t(e)&&"function"==typeof(r=e.constructor)&&!1!==t(n=r.prototype)&&!1!==n.hasOwnProperty("isPrototypeOf")}const n=Object.defineProperty,o=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};function s(e,t,n=!1){const s={_vueTypes_name:{value:e,writable:!0},def:{value(e){const t=this;return void 0!==e||t.default?(t.default=o(e)?()=>[].concat(e):r(e)?()=>Object.assign({},e):e,t):t}},isRequired:{get(){return this.required=!0,this}}};return n&&(s.validate={value(){}}),Object.assign(Object.defineProperties({validator:()=>!0},s),t)}const a={func:Function,bool:Boolean,string:String,number:Number,array:Array,object:Object,arrayOf:Array,objectOf:Object,shape:Object},u=["any","func","bool","string","number","array","object","symbol"],i=["oneOf","custom","instanceOf","oneOfType","arrayOf","objectOf"];class c{}function l(e){function t(t,r,o,a=!1,u=!1){return n(t,r,{[a?"get":"value"]:()=>s(r,o,u).def(a?e.sensibleDefaults[r]:void 0)})}function o(e,r,n=!1){return o=>t(e,o,{type:a[o]||null},r,n)}return e.extend=function(e){const{name:n,validate:o,getter:s=!1,type:a=null}=e;return t(this,n,{type:r(a)&&a.type?null:a},s,!!o)},u.forEach(o(e,!0,!0)),i.forEach(o(e,!1)),t(e,"integer",{type:Number},!0),n(e,"shape",{value:()=>n(s("shape",{type:Object}),"loose",{get(){return this}})}),e}function f(e={func:()=>{},bool:!0,string:"",number:0,array:()=>[],object:()=>({}),integer:0}){var t;return l(((t=class extends c{static get sensibleDefaults(){return{...this.defaults}}static set sensibleDefaults(t){this.defaults=!1!==t?!0!==t?{...t}:{...e}:{}}}).defaults={...e},t))}c.defaults={},c.utils={toType:s,validate:(...e)=>!!e},"production"!==process.env.NODE_ENV&&!1===e.config.silent&&console.warn("You are using the production shimmed version of VueTypes in a development build. Refer to https://github.com/dwightjack/vue-types#production-build to learn how to configure VueTypes for usage in multiple environments.");class b extends c{static get sensibleDefaults(){return{...this.defaults}}static set sensibleDefaults(e){this.defaults=!1!==e?!0!==e?{...e}:{func:()=>{},bool:!0,string:"",number:0,array:()=>[],object:()=>({}),integer:0}:{}}}b.defaults={func:()=>{},bool:!0,string:"",number:0,array:()=>[],object:()=>({}),integer:0},l(b);export default b;export{f as createTypes};
import t from"vue";function e(t){return 1==(null!=(e=t)&&"object"==typeof e&&!1===Array.isArray(e))&&"[object Object]"===Object.prototype.toString.call(t);var e}function r(t){var r,n;return!1!==e(t)&&"function"==typeof(r=t.constructor)&&!1!==e(n=r.prototype)&&!1!==n.hasOwnProperty("isPrototypeOf")}const n=Object.defineProperty,s=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)};function o(t,e={},n=!1){const o={_vueTypes_name:{value:t,writable:!0},def:{value(t){const e=this;return void 0!==t||e.default?(e.default=s(t)?()=>[].concat(t):r(t)?()=>Object.assign({},t):t,e):e}},isRequired:{get(){return this.required=!0,this}}};return n&&(o.validate={value(){}}),Object.assign(Object.defineProperties({validator:()=>!0},o),e)}const a=()=>o("any",{},!0),i=()=>o("func",{type:Function},!0),u=()=>o("bool",{type:Boolean},!0),c=()=>o("string",{type:String},!0),f=()=>o("number",{type:Number},!0),l=()=>o("array",{type:Array},!0),y=()=>o("object",{type:Object},!0),d=()=>o("symbol"),p=()=>o("integer",{type:Number}),b=t=>o("oneOf"),g=t=>o("custom"),h=t=>o("instanceOf",{type:t}),O=t=>o("oneOfType"),j=t=>o("arrayOf",{type:Array}),m=t=>o("objectOf",{type:Object}),v=t=>n(o("shape",{type:Object}),"loose",{get(){return this}});function A(t,e,r,s=!1,a=!1){return n(t,e,{[s?"get":"value"]:()=>o(e,r,a).def(s?t.defaults[e]:void 0)})}class T{static get any(){return a()}static get func(){return i().def(this.defaults.func)}static get bool(){return u().def(this.defaults.bool)}static get string(){return c().def(this.defaults.string)}static get number(){return f().def(this.defaults.number)}static get array(){return l().def(this.defaults.array)}static get object(){return y().def(this.defaults.object)}static get symbol(){return d()}static get integer(){return p().def(this.defaults.integer)}static extend(t){const{name:e,validate:n,getter:s=!1,type:o=null}=t;return A(this,e,{type:r(o)&&o.type?null:o},s,!!n)}}function w(t={func:()=>{},bool:!0,string:"",number:0,array:()=>[],object:()=>({}),integer:0}){var e;return(e=class extends T{static get sensibleDefaults(){return{...this.defaults}}static set sensibleDefaults(e){this.defaults=!1!==e?!0!==e?{...e}:{...t}:{}}}).defaults={...t},e}T.defaults={},T.oneOf=b,T.custom=g,T.instanceOf=h,T.oneOfType=O,T.arrayOf=j,T.objectOf=m,T.shape=v,T.utils={toType:o,validate:(...t)=>!!t},"production"!==process.env.NODE_ENV&&!1===t.config.silent&&console.warn("You are using the production shimmed version of VueTypes in a development build. Refer to https://github.com/dwightjack/vue-types#production-build to learn how to configure VueTypes for usage in multiple environments.");class x extends(w()){}export default x;export{a as any,l as array,j as arrayOf,u as bool,w as createTypes,g as custom,i as func,h as instanceOf,p as integer,f as number,y as object,m as objectOf,b as oneOf,O as oneOfType,v as shape,c as string,d as symbol};
//# sourceMappingURL=shim.modern.js.map

@@ -1,15 +0,2 @@

!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("vue")):"function"==typeof define&&define.amd?define(["exports","vue"],e):e((t=t||self).VueTypes={},t.vue)}(this,function(t,e){function n(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function r(t,e,r){return e&&n(t.prototype,e),r&&n(t,r),t}function o(){return(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}).apply(this,arguments)}function u(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,t.__proto__=e}
/*!
* isobject <https://github.com/jonschlinkert/isobject>
*
* Copyright (c) 2014-2017, Jon Schlinkert.
* Released under the MIT License.
*/
/*!
* is-plain-object <https://github.com/jonschlinkert/is-plain-object>
*
* Copyright (c) 2014-2017, Jon Schlinkert.
* Released under the MIT License.
*/
function i(t){return 1==(null!=(e=t)&&"object"==typeof e&&!1===Array.isArray(e))&&"[object Object]"===Object.prototype.toString.call(t);var e}function a(t){var e,n;return!1!==i(t)&&"function"==typeof(e=t.constructor)&&!1!==i(n=e.prototype)&&!1!==n.hasOwnProperty("isPrototypeOf")}e=e&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e;var c=Object.defineProperty,f=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)};function l(t,e,n){void 0===n&&(n=!1);var r={_vueTypes_name:{value:t,writable:!0},def:{value:function(t){var e=this;return void 0!==t||e.default?(e.default=f(t)?function(){return[].concat(t)}:a(t)?function(){return Object.assign({},t)}:t,e):e}},isRequired:{get:function(){return this.required=!0,this}}};return n&&(r.validate={value:function(){}}),Object.assign(Object.defineProperties({validator:function(){return!0}},r),e)}var s={func:Function,bool:Boolean,string:String,number:Number,array:Array,object:Object,arrayOf:Array,objectOf:Object,shape:Object},p=["any","func","bool","string","number","array","object","symbol"],y=["oneOf","custom","instanceOf","oneOfType","arrayOf","objectOf"],b=function(){};function d(t){function e(e,n,r,o,u){var i;void 0===o&&(o=!1),void 0===u&&(u=!1);var a=((i={})[o?"get":"value"]=function(){return l(n,r,u).def(o?t.sensibleDefaults[n]:void 0)},i);return c(e,n,a)}function n(t,n,r){return void 0===r&&(r=!1),function(o){return e(t,o,{type:s[o]||null},n,r)}}return t.extend=function(t){var n=t.validate,r=t.getter,o=void 0!==r&&r,u=t.type,i=void 0===u?null:u;return e(this,t.name,{type:a(i)&&i.type?null:i},o,!!n)},p.forEach(n(t,!0,!0)),y.forEach(n(t,!1)),e(t,"integer",{type:Number},!0),c(t,"shape",{value:function(){return c(l("shape",{type:Object}),"loose",{get:function(){return this}})}}),t}b.defaults={},b.utils={toType:l,validate:function(){return!![].slice.call(arguments)}};var v=function(t){function e(){return t.apply(this,arguments)||this}return u(e,t),r(e,null,[{key:"sensibleDefaults",get:function(){return o({},this.defaults)},set:function(t){this.defaults=!1!==t?!0!==t?o({},t):{func:function(){},bool:!0,string:"",number:0,array:function(){return[]},object:function(){return{}},integer:0}:{}}}]),e}(b);v.defaults={func:function(){},bool:!0,string:"",number:0,array:function(){return[]},object:function(){return{}},integer:0},d(v),t.createTypes=function(t){var e;return void 0===t&&(t={func:function(){},bool:!0,string:"",number:0,array:function(){return[]},object:function(){return{}},integer:0}),d(((e=function(e){function n(){return e.apply(this,arguments)||this}return u(n,e),r(n,null,[{key:"sensibleDefaults",get:function(){return o({},this.defaults)},set:function(e){this.defaults=!1!==e?o({},!0!==e?e:t):{}}}]),n}(b)).defaults=o({},t),e))},t.default=v});
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("vue")):"function"==typeof define&&define.amd?define(["exports","vue"],e):e((t=t||self).VueTypes={},t.vue)}(this,function(t,e){function n(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function r(t,e,r){return e&&n(t.prototype,e),r&&n(t,r),t}function u(){return(u=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}).apply(this,arguments)}function o(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,t.__proto__=e}function i(t){return 1==(null!=(e=t)&&"object"==typeof e&&!1===Array.isArray(e))&&"[object Object]"===Object.prototype.toString.call(t);var e}function f(t){var e,n;return!1!==i(t)&&"function"==typeof(e=t.constructor)&&!1!==i(n=e.prototype)&&!1!==n.hasOwnProperty("isPrototypeOf")}e=e&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e;var c=Object.defineProperty,a=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)};function s(t,e,n){void 0===e&&(e={}),void 0===n&&(n=!1);var r={_vueTypes_name:{value:t,writable:!0},def:{value:function(t){var e=this;return void 0!==t||e.default?(e.default=a(t)?function(){return[].concat(t)}:f(t)?function(){return Object.assign({},t)}:t,e):e}},isRequired:{get:function(){return this.required=!0,this}}};return n&&(r.validate={value:function(){}}),Object.assign(Object.defineProperties({validator:function(){return!0}},r),e)}var y=function(){return s("any",{},!0)},l=function(){return s("func",{type:Function},!0)},p=function(){return s("bool",{type:Boolean},!0)},d=function(){return s("string",{type:String},!0)},b=function(){return s("number",{type:Number},!0)},v=function(){return s("array",{type:Array},!0)},O=function(){return s("object",{type:Object},!0)},g=function(){return s("symbol")},h=function(){return s("integer",{type:Number})},j=function(t){return s("oneOf")},m=function(t){return s("custom")},k=function(t){return s("instanceOf",{type:t})},A=function(t){return s("oneOfType")},P=function(t){return s("arrayOf",{type:Array})},T=function(t){return s("objectOf",{type:Object})},_=function(t){return c(s("shape",{type:Object}),"loose",{get:function(){return this}})};function w(t,e,n,r,u){var o;void 0===r&&(r=!1),void 0===u&&(u=!1);var i=((o={})[r?"get":"value"]=function(){return s(e,n,u).def(r?t.defaults[e]:void 0)},o);return c(t,e,i)}var x=function(){function t(){}return t.extend=function(t){var e=t.validate,n=t.getter,r=void 0!==n&&n,u=t.type,o=void 0===u?null:u;return w(this,t.name,{type:f(o)&&o.type?null:o},r,!!e)},r(t,null,[{key:"any",get:function(){return y()}},{key:"func",get:function(){return l().def(this.defaults.func)}},{key:"bool",get:function(){return p().def(this.defaults.bool)}},{key:"string",get:function(){return d().def(this.defaults.string)}},{key:"number",get:function(){return b().def(this.defaults.number)}},{key:"array",get:function(){return v().def(this.defaults.array)}},{key:"object",get:function(){return O().def(this.defaults.object)}},{key:"symbol",get:function(){return g()}},{key:"integer",get:function(){return h().def(this.defaults.integer)}}]),t}();function q(t){var e;return void 0===t&&(t={func:function(){},bool:!0,string:"",number:0,array:function(){return[]},object:function(){return{}},integer:0}),(e=function(e){function n(){return e.apply(this,arguments)||this}return o(n,e),r(n,null,[{key:"sensibleDefaults",get:function(){return u({},this.defaults)},set:function(e){this.defaults=!1!==e?u({},!0!==e?e:t):{}}}]),n}(x)).defaults=u({},t),e}x.defaults={},x.oneOf=j,x.custom=m,x.instanceOf=k,x.oneOfType=A,x.arrayOf=P,x.objectOf=T,x.shape=_,x.utils={toType:s,validate:function(){return!![].slice.call(arguments)}};var S=function(t){function e(){return t.apply(this,arguments)||this}return o(e,t),e}(q());t.any=y,t.array=v,t.arrayOf=P,t.bool=p,t.createTypes=q,t.custom=m,t.default=S,t.func=l,t.instanceOf=k,t.integer=h,t.number=b,t.object=O,t.objectOf=T,t.oneOf=j,t.oneOfType=A,t.shape=_,t.string=d,t.symbol=g});
//# sourceMappingURL=shim.umd.js.map

@@ -1,68 +0,95 @@

import { PropOptions, PropType } from 'vue';
export declare type Prop<T> = {
(): T;
} | {
new (...args: never[]): T & object;
} | {
new (...args: string[]): Function;
};
export { PropOptions, PropType };
export declare type NativeType = string | boolean | number | null | undefined | Function;
export declare type Constructor = new (...args: any[]) => any;
export declare type InferType<T> = T extends {
type: null | true;
} ? any : T extends ObjectConstructor | {
type: ObjectConstructor;
} ? {
[key: string]: any;
} : T extends Prop<infer V> ? V : T extends PropOptions<infer V> ? V : T extends VueTypeDef<infer V> ? V : T extends VueTypeValidableDef<infer V> ? V : T;
export declare type ValidatorFunction<T> = (value: T) => boolean;
export declare type DefaultFactory<T> = (() => T) | T;
export declare type DefaultType<T> = T extends NativeType ? T : DefaultFactory<T>;
export interface VueTypeBaseDef<T = unknown, D = DefaultType<T>, U = T extends NativeType ? T : () => T> extends PropOptions<T> {
_vueTypes_name: string;
readonly def: (def?: D) => this & {
default: U;
};
readonly isRequired: this & {
required: true;
};
import { PropOptions, PropType } from 'vue'
export { PropType, PropOptions }
export type Prop<T> =
| { (): T }
// eslint-disable-next-line @typescript-eslint/ban-types
| { new (...args: never[]): T & object }
// eslint-disable-next-line @typescript-eslint/ban-types
| { new (...args: string[]): Function }
// eslint-disable-next-line @typescript-eslint/ban-types
export type NativeType = string | boolean | number | null | undefined | Function
export type Constructor = new (...args: any[]) => any
// see https://github.com/vuejs/vue-next/blob/22717772dd83b67ffaa6ad9805c6269e184c7e41/packages/runtime-core/src/componentProps.ts#L67
export type InferType<T> = T extends { type: null | true }
? any
: T extends ObjectConstructor | { type: ObjectConstructor }
? { [key: string]: any }
: T extends Prop<infer V>
? V
: T extends PropOptions<infer V>
? V
: T extends VueTypeDef<infer V>
? V
: T extends VueTypeValidableDef<infer V>
? V
: T
export type ValidatorFunction<T> = (value: T) => boolean
export type DefaultFactory<T> = (() => T) | T
export type DefaultType<T> = T extends NativeType ? T : DefaultFactory<T>
export interface VueTypeBaseDef<
T = unknown,
D = DefaultType<T>,
U = T extends NativeType ? T : () => T
> extends PropOptions<T> {
_vueTypes_name: string
readonly def: (
def?: D,
) => this & {
default: U
}
readonly isRequired: this & { required: true }
}
export declare type VueTypeDef<T = unknown> = VueTypeBaseDef<T>;
export type VueTypeDef<T = unknown> = VueTypeBaseDef<T>
export interface VueTypeValidableDef<T = unknown> extends VueTypeBaseDef<T> {
readonly validate: (fn: ValidatorFunction<T>) => this & {
validator: ValidatorFunction<T>;
};
readonly validate: (
fn: ValidatorFunction<T | unknown>,
) => this & { validator: ValidatorFunction<T | unknown> }
}
export declare type VueProp<T> = VueTypeBaseDef<T> | PropOptions<T>;
export interface VueTypeShape<T> extends VueTypeBaseDef<T, DefaultType<Partial<T>>, () => Partial<T>> {
readonly loose: VueTypeLooseShape<T>;
export type VueProp<T> = VueTypeBaseDef<T> | PropOptions<T>
export interface VueTypeShape<T>
extends VueTypeBaseDef<T, DefaultType<Partial<T>>, () => Partial<T>> {
readonly loose: VueTypeLooseShape<T>
}
export interface VueTypeLooseShape<T> extends VueTypeBaseDef<T, DefaultFactory<Partial<T & {
[key: string]: any;
}>>, () => Partial<T> & {
[key: string]: any;
}> {
readonly loose: VueTypeLooseShape<T>;
readonly _vueTypes_isLoose: true;
export interface VueTypeLooseShape<T>
extends VueTypeBaseDef<
T,
DefaultFactory<Partial<T & { [key: string]: any }>>,
() => Partial<T> & { [key: string]: any }
> {
readonly loose: VueTypeLooseShape<T>
readonly _vueTypes_isLoose: true
}
export interface VueTypesDefaults {
func: Function;
bool: boolean;
string: string;
number: number;
array: () => any[];
object: () => {
[key: string]: any;
};
integer: number;
func: (...args: any[]) => any
bool: boolean
string: string
number: number
array: () => any[]
object: () => { [key: string]: any }
integer: number
}
export interface ExtendProps<T = any> {
name: string;
getter?: boolean;
validate?: boolean;
type?: PropType<T> | VueTypeDef<T> | VueTypeValidableDef<T>;
required?: boolean;
default?: T | null | undefined | (() => T | null | undefined);
validator?(value: T): boolean;
name: string
getter?: boolean
validate?: boolean
type?: PropType<T> | VueTypeDef<T> | VueTypeValidableDef<T>
required?: boolean
default?: T | null | undefined | (() => T | null | undefined)
validator?(...args: any[]): boolean
}

@@ -13,3 +13,9 @@ import { VueTypeDef, VueTypeValidableDef, VueProp, InferType, PropOptions } from './types';

export declare function noop(): void;
declare let warn: (msg: string) => void;
/**
* A function that returns its first argument
*
* @param arg - Any argument
*/
export declare const identity: (arg: any) => any;
declare let warn: (msg: string) => string | void;
export { warn };

@@ -22,3 +28,3 @@ /**

*/
export declare const has: <T extends object, U extends keyof T>(obj: T, prop: U) => any;
export declare const has: <T extends unknown, U extends keyof T>(obj: T, prop: U) => any;
/**

@@ -46,3 +52,11 @@ * Determines whether the passed value is an integer. Uses `Number.isInteger` if available

export declare const isFunction: (value: unknown) => value is Function;
/**
* Checks if the passed-in value is a VueTypes type
* @param value - The value to check
*/
export declare const isVueTypeDef: <T>(value: any) => value is VueTypeDef<T> | VueTypeValidableDef<T>;
/**
* Checks if the passed-in value is a Vue prop definition object or a VueTypes type
* @param value - The value to check
*/
export declare const isComplexType: <T>(value: any) => value is VueProp<T>;

@@ -53,7 +67,22 @@ export interface WrappedFn {

}
/**
* Binds a function to a context and saves a reference to the original.
*
* @param fn - Target function
* @param ctx - New function context
*/
export declare function bindTo(fn: (...args: any[]) => any, ctx: any): WrappedFn;
/**
* Returns the original function bounded with `bindTo`. If the passed-in function
* has not be bound, the function itself will be returned instead.
*
* @param fn - Function to unwrap
*/
export declare function unwrap<T extends WrappedFn | Function>(fn: T): ((...args: any[]) => any) | T;
/**
* Validates a given value against a prop type object
* Validates a given value against a prop type object.
*
* If `silent` is `false` (default) will return a boolean. If it is set to `true`
* it will return `true` on success or a string error message on failure
*
* @param {Object|*} type - Type to use for validation. Either a type object or a constructor

@@ -63,3 +92,3 @@ * @param {*} value - Value to check

*/
export declare function validateType<T, U>(type: T, value: U, silent?: boolean): boolean;
export declare function validateType<T, U>(type: T, value: U, silent?: boolean): string | boolean;
/**

@@ -79,3 +108,19 @@ * Adds `isRequired` and `def` modifiers to an object

export declare function toValidableType<T = any>(name: string, obj: PropOptions<T>): VueTypeValidableDef<T>;
export declare function clone<T extends object>(type: T): T;
export declare function fromType<T extends VueTypeDef<any>, U = InferType<T>>(name: string, source: T, props?: PropOptions<U>): VueTypeDef<U>;
/**
* Clones an object preserving all of it's own keys.
*
* @param obj - Object to clone
*/
export declare function clone<T extends object>(obj: T): T;
/**
* Return a new VueTypes type using another type as base.
*
* Properties in the `props` object will overwrite those defined in the source one
* expect for the `validator` function. In that case both functions will be executed in series.
*
* @param name - Name of the new type
* @param source - Source type
* @param props - Custom type properties
*/
export declare function fromType<T extends VueTypeDef<any>>(name: string, source: T): T;
export declare function fromType<T extends VueTypeDef<any>, V extends PropOptions<InferType<T>>>(name: string, source: T, props: V): Omit<T, keyof V> & V;
import { Prop, VueProp, InferType } from '../types';
export default function arrayOf<T extends VueProp<any> | Prop<any>, U = InferType<T>>(type: T): import("../types").VueTypeDef<U[]>;
export default function arrayOf<T extends VueProp<any> | Prop<any>>(type: T): import("../types").VueTypeDef<InferType<T>[]>;

@@ -1,11 +0,11 @@

export declare const any: () => import("..").VueTypeValidableDef<any>;
export declare const func: <T extends Function>() => import("..").VueTypeValidableDef<T>;
export declare const bool: () => import("..").VueTypeValidableDef<boolean>;
export declare const string: () => import("..").VueTypeValidableDef<string>;
export declare const number: () => import("..").VueTypeValidableDef<number>;
export declare const array: <T>() => import("..").VueTypeValidableDef<T[]>;
export declare const any: () => import("../types").VueTypeValidableDef<any>;
export declare const func: <T extends (...args: any[]) => any>() => import("../types").VueTypeValidableDef<T>;
export declare const bool: () => import("../types").VueTypeValidableDef<boolean>;
export declare const string: () => import("../types").VueTypeValidableDef<string>;
export declare const number: () => import("../types").VueTypeValidableDef<number>;
export declare const array: <T>() => import("../types").VueTypeValidableDef<T[]>;
export declare const object: <T extends {
[key: string]: any;
}>() => import("..").VueTypeValidableDef<T>;
export declare const integer: () => import("..").VueTypeDef<number>;
export declare const symbol: () => import("..").VueTypeValidableDef<symbol>;
}>() => import("../types").VueTypeValidableDef<T>;
export declare const integer: () => import("../types").VueTypeDef<number>;
export declare const symbol: () => import("../types").VueTypeDef<symbol>;
import { Prop, VueProp, InferType } from '../types';
export default function objectOf<T extends VueProp<any> | Prop<any>, U = InferType<T>>(type: T): import("../types").VueTypeDef<{
[key: string]: U;
export default function objectOf<T extends VueProp<any> | Prop<any>>(type: T): import("../types").VueTypeDef<{
[key: string]: InferType<T>;
}>;

@@ -1,1 +0,1 @@

export default function oneOf<T extends readonly any[], U = T[number]>(arr: T): import("../types").VueTypeDef<U>;
export default function oneOf<T extends readonly any[]>(arr: T): import("../types").VueTypeDef<T[number]>;
import { Prop, VueProp, VueTypeShape } from '../types';
export default function shape<T extends object>(obj: {
[K in keyof T]?: Prop<T[K]> | VueProp<T[K]>;
[K in keyof T]: Prop<T[K]> | VueProp<T[K]>;
}): VueTypeShape<T>;

@@ -1,15 +0,2 @@

import e from"vue";function t(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function n(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}function r(){return(r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function o(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function u(e,t){if(null==e)return{};var n,r,o={},u=Object.keys(e);for(r=0;r<u.length;r++)t.indexOf(n=u[r])>=0||(o[n]=e[n]);return o}
/*!
* isobject <https://github.com/jonschlinkert/isobject>
*
* Copyright (c) 2014-2017, Jon Schlinkert.
* Released under the MIT License.
*/
/*!
* is-plain-object <https://github.com/jonschlinkert/is-plain-object>
*
* Copyright (c) 2014-2017, Jon Schlinkert.
* Released under the MIT License.
*/
function i(e){return 1==(null!=(t=e)&&"object"==typeof t&&!1===Array.isArray(t))&&"[object Object]"===Object.prototype.toString.call(e);var t}var a=Object.prototype,f=a.toString,c=a.hasOwnProperty,s=/^\s*function (\w+)/;function l(e){var t,n=null!==(t=null==e?void 0:e.type)&&void 0!==t?t:e;if(n){var r=n.toString().match(s);return r?r[1]:""}return""}var y=function(e){var t,n;return!1!==i(e)&&"function"==typeof(t=e.constructor)&&!1!==i(n=t.prototype)&&!1!==n.hasOwnProperty("isPrototypeOf")};function p(){}var v=p;if("production"!==process.env.NODE_ENV){var d="undefined"!=typeof console;v=d?function(t){!1===e.config.silent&&console.warn("[VueTypes warn]: "+t)}:p}var b=function(e,t){return c.call(e,t)},h=Number.isInteger||function(e){return"number"==typeof e&&isFinite(e)&&Math.floor(e)===e},O=Array.isArray||function(e){return"[object Array]"===f.call(e)},g=function(e){return"[object Function]"===f.call(e)},m=function(e){return y(e)&&b(e,"_vueTypes_name")},j=function(e){return y(e)&&(b(e,"type")||["_vueTypes_name","validator","default","required"].some(function(t){return b(e,t)}))};function _(e,t){return Object.defineProperty(e.bind(t),"__original",{value:e})}function T(e,t,n){var r;void 0===n&&(n=!1);var o=!0,u="";r=y(e)?e:{type:e};var i,a=m(r)?r._vueTypes_name+" - ":"";if(j(r)&&null!==r.type){if(void 0===r.type)return o;if(!r.required&&void 0===t)return o;void 0===r.type?u="any":O(r.type)?(o=r.type.some(function(e){return T(e,t,!0)}),u=r.type.map(function(e){return l(e)}).join(" or ")):o="Array"===(u=l(r))?O(t):"Object"===u?y(t):"String"===u||"Number"===u||"Boolean"===u||"Function"===u?function(e){if(null==e)return"";var t=e.constructor.toString().match(s);return t?t[1]:""}(t)===u:t instanceof r.type}return o?b(r,"validator")&&g(r.validator)?(n&&(i=v,v=p),o=r.validator(t),i&&(v=i),o||!1!==n||v(a+"custom validation failed"),o):o:(!1===n&&v(a+'value "'+t+'" should be of type "'+u+'"'),!1)}function w(e,t){var n=Object.defineProperties(t,{_vueTypes_name:{value:e,writable:!0},isRequired:{get:function(){return this.required=!0,this}},def:{value:function(e){return void 0!==e||this.default?g(e)||T(this,e)?(this.default=O(e)?function(){return[].concat(e)}:y(e)?function(){return Object.assign({},e)}:e,this):(v(this._vueTypes_name+' - invalid default value: "'+e+'"'),this):this}}}),r=n.validator;return g(r)&&(n.validator=_(r,n)),n}function k(e,t){var n=w(e,t);return Object.defineProperty(n,"validate",{value:function(e){return this.validator=_(e,this),this}})}function P(e,t,n){void 0===n&&(n={});var r,o,i,a,f=n.validator,c=u(n,["validator"]),s=(r=t,o={},Object.getOwnPropertyNames(r).forEach(function(e){o[e]=Object.getOwnPropertyDescriptor(r,e)}),Object.defineProperties({},o));if(s._vueTypes_name=e,g(f)){var l=s.validator;l&&(l=null!==(a=(i=l).__original)&&void 0!==a?a:i),s.validator=_(l?function(e){return l.call(this,e)&&f.call(this,e)}:f,s)}return Object.assign(s,c)}var x=function(){return k("any",{})},A=function(){return k("function",{type:Function})},E=function(){return k("boolean",{type:Boolean})},N=function(){return k("string",{type:String})},q=function(){return k("number",{type:Number})},S=function(){return k("array",{type:Array})},V=function(){return k("object",{type:Object})},F=function(){return w("integer",{type:Number,validator:function(e){return h(e)}})},D=function(){return k("symbol",{validator:function(e){return"symbol"==typeof e}})};function L(e,t){if(void 0===t&&(t="custom validation failed"),"function"!=typeof e)throw new TypeError("[VueTypes error]: You must provide a function as argument");return w(e.name||"<<anonymous function>>",{validator:function(n){var r=e(n);return r||v(this._vueTypes_name+" - "+t),r}})}function Y(e){if(!O(e))throw new TypeError("[VueTypes error]: You must provide an array as argument");var t='oneOf - value should be one of "'+e.join('", "')+'"',n=e.reduce(function(e,t){if(null!=t){var n=t.constructor;-1===e.indexOf(n)&&e.push(n)}return e},[]);return w("oneOf",{type:n.length>0?n:void 0,validator:function(n){var r=-1!==e.indexOf(n);return r||v(t),r}})}function B(e){if(!O(e))throw new TypeError("[VueTypes error]: You must provide an array as argument");for(var t=!1,n=[],r=0;r<e.length;r+=1){var o=e[r];if(j(o)){if(m(o)&&"oneOf"===o._vueTypes_name&&o.type){n=n.concat(o.type);continue}if(g(o.validator)){t=!0;continue}if(o.type){n=n.concat(o.type);continue}}n.push(o)}if(!t)return w("oneOfType",{type:n});var u=e.reduce(function(e,t){return e.concat(j(t)&&O(t.type)?t.type.map(l):l(t))},[]).join('", "');return w("oneOfType",{validator:function(t){var n=e.some(function(e){return m(e)&&"oneOf"===e._vueTypes_name?!e.type||T(e.type,t,!0):T(e,t,!0)});return n||v('oneOfType - value type should be one of "'+u+'"'),n}})}function I(e){return w("arrayOf",{type:Array,validator:function(t){var n=t.every(function(t){return T(e,t)});return n||v('arrayOf - value must be an array of "'+l(e)+'"'),n}})}function M(e){return w("instanceOf",{type:e})}function R(e){return w("objectOf",{type:Object,validator:function(t){var n=Object.keys(t).every(function(n){return T(e,t[n])});return n||v('objectOf - value must be an object of "'+l(e)+'"'),n}})}function z(e){var t=Object.keys(e),n=t.filter(function(t){var n;return!!(null===(n=e[t])||void 0===n?void 0:n.required)}),r=w("shape",{type:Object,validator:function(r){var o=this;if(!y(r))return!1;var u=Object.keys(r);return n.length>0&&n.some(function(e){return-1===u.indexOf(e)})?(v('shape - at least one of required properties "'+n.join('", "')+'" is not present'),!1):u.every(function(n){return-1===t.indexOf(n)?!0===o._vueTypes_isLoose||(v('shape - object is missing "'+n+'" property'),!1):T(e[n],r[n])})}});return Object.defineProperty(r,"_vueTypes_isLoose",{writable:!0,value:!1}),Object.defineProperty(r,"loose",{get:function(){return this._vueTypes_isLoose=!0,this}}),r}var C=function(){function e(){}return e.extend=function(e){var t=this;if(O(e))return e.forEach(function(e){return t.extend(e)}),this;var n=e.name,r=e.validate,o=void 0!==r&&r,i=e.getter,a=void 0!==i&&i,f=u(e,["name","validate","getter"]);if(b(this,n))throw new TypeError('[VueTypes error]: Type "'+n+'" already defined');var c,s=f.type;return m(s)?(delete f.type,Object.defineProperty(this,n,a?{get:function(){return P(n,s,f)}}:{value:function(){var e,t=P(n,s,f);return t.validator&&(t.validator=(e=t.validator).bind.apply(e,[t].concat([].slice.call(arguments)))),t}})):(c=a?{get:function(){var e=Object.assign({},f);return o?k(n,e):w(n,e)},enumerable:!0}:{value:function(){var e,t,r=Object.assign({},f);return e=o?k(n,r):w(n,r),r.validator&&(e.validator=(t=r.validator).bind.apply(t,[e].concat([].slice.call(arguments)))),e},enumerable:!0},Object.defineProperty(this,n,c))},n(e,null,[{key:"any",get:function(){return x()}},{key:"func",get:function(){return A().def(this.defaults.func)}},{key:"bool",get:function(){return E().def(this.defaults.bool)}},{key:"string",get:function(){return N().def(this.defaults.string)}},{key:"number",get:function(){return q().def(this.defaults.number)}},{key:"array",get:function(){return S().def(this.defaults.array)}},{key:"object",get:function(){return V().def(this.defaults.object)}},{key:"integer",get:function(){return F().def(this.defaults.integer)}},{key:"symbol",get:function(){return D()}}]),e}();function G(e){var t;return void 0===e&&(e={func:function(){},bool:!0,string:"",number:0,array:function(){return[]},object:function(){return{}},integer:0}),(t=function(t){function u(){return t.apply(this,arguments)||this}return o(u,t),n(u,null,[{key:"sensibleDefaults",get:function(){return r({},this.defaults)},set:function(t){this.defaults=!1!==t?r({},!0!==t?t:e):{}}}]),u}(C)).defaults=r({},e),t}C.defaults={},C.custom=L,C.oneOf=Y,C.instanceOf=M,C.oneOfType=B,C.arrayOf=I,C.objectOf=R,C.shape=z,C.utils={validate:function(e,t){return T(t,e,!0)},toType:function(e,t,n){return void 0===n&&(n=!1),n?k(e,t):w(e,t)}};var H=function(e){function t(){return e.apply(this,arguments)||this}return o(t,e),t}(G());export default H;export{x as any,S as array,I as arrayOf,E as bool,G as createTypes,L as custom,P as fromType,A as func,M as instanceOf,F as integer,q as number,V as object,R as objectOf,Y as oneOf,B as oneOfType,z as shape,N as string,D as symbol,w as toType,k as toValidableType,T as validateType};
var e,t=(e=require("vue"))&&"object"==typeof e&&"default"in e?e.default:e;function r(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function n(e,t,n){return t&&r(e.prototype,t),n&&r(e,n),e}function o(){return(o=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}function i(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function u(e,t){if(null==e)return{};var r,n,o={},i=Object.keys(e);for(n=0;n<i.length;n++)t.indexOf(r=i[n])>=0||(o[r]=e[r]);return o}function a(e){return 1==(null!=(t=e)&&"object"==typeof t&&!1===Array.isArray(t))&&"[object Object]"===Object.prototype.toString.call(e);var t}var f=Object.prototype,c=f.toString,s=f.hasOwnProperty,l=/^\s*function (\w+)/;function p(e){var t,r=null!==(t=null==e?void 0:e.type)&&void 0!==t?t:e;if(r){var n=r.toString().match(l);return n?n[1]:""}return""}var y=function(e){var t,r;return!1!==a(e)&&"function"==typeof(t=e.constructor)&&!1!==a(r=t.prototype)&&!1!==r.hasOwnProperty("isPrototypeOf")},v=function(e){return e},d=v;if("production"!==process.env.NODE_ENV){var b="undefined"!=typeof console;d=b?function(e){!1===t.config.silent&&console.warn("[VueTypes warn]: "+e)}:v}var h=function(e,t){return s.call(e,t)},O=Number.isInteger||function(e){return"number"==typeof e&&isFinite(e)&&Math.floor(e)===e},g=Array.isArray||function(e){return"[object Array]"===c.call(e)},m=function(e){return"[object Function]"===c.call(e)},j=function(e){return y(e)&&h(e,"_vueTypes_name")},_=function(e){return y(e)&&(h(e,"type")||["_vueTypes_name","validator","default","required"].some(function(t){return h(e,t)}))};function T(e,t){return Object.defineProperty(e.bind(t),"__original",{value:e})}function x(e,t,r){var n;void 0===r&&(r=!1);var o=!0,i="";n=y(e)?e:{type:e};var u=j(n)?n._vueTypes_name+" - ":"";if(_(n)&&null!==n.type){if(void 0===n.type)return o;if(!n.required&&void 0===t)return o;void 0===n.type?i="any":g(n.type)?(o=n.type.some(function(e){return!0===x(e,t,!0)}),i=n.type.map(function(e){return p(e)}).join(" or ")):o="Array"===(i=p(n))?g(t):"Object"===i?y(t):"String"===i||"Number"===i||"Boolean"===i||"Function"===i?function(e){if(null==e)return"";var t=e.constructor.toString().match(l);return t?t[1]:""}(t)===i:t instanceof n.type}if(!o){var a=u+'value "'+t+'" should be of type "'+i+'"';return!1===r?(d(a),!1):a}if(h(n,"validator")&&m(n.validator)){var f=d,c=[];if(d=function(e){c.push(e)},o=n.validator(t),d=f,!o){var s="* "+c.join("\n* ");return c.length=0,!1===r?(d(s),o):s}}return o}function w(e,t){var r=Object.defineProperties(t,{_vueTypes_name:{value:e,writable:!0},isRequired:{get:function(){return this.required=!0,this}},def:{value:function(e){return void 0!==e||this.default?m(e)||!0===x(this,e,!0)?(this.default=g(e)?function(){return[].concat(e)}:y(e)?function(){return Object.assign({},e)}:e,this):(d(this._vueTypes_name+' - invalid default value: "'+e+'"'),this):this}}}),n=r.validator;return m(n)&&(r.validator=T(n,r)),r}function k(e,t){var r=w(e,t);return Object.defineProperty(r,"validate",{value:function(e){return m(this.validator)&&d(this._vueTypes_name+" - calling .validate() will overwrite the current custom validator function. Validator info:\n"+JSON.stringify(this)),this.validator=T(e,this),this}})}function P(e,t,r){var n,o,i=(n=t,o={},Object.getOwnPropertyNames(n).forEach(function(e){o[e]=Object.getOwnPropertyDescriptor(n,e)}),Object.defineProperties({},o));if(i._vueTypes_name=e,!y(r))return i;var a,f,c=r.validator,s=u(r,["validator"]);if(m(c)){var l=i.validator;l&&(l=null!==(f=(a=l).__original)&&void 0!==f?f:a),i.validator=T(l?function(e){return l.call(this,e)&&c.call(this,e)}:c,i)}return Object.assign(i,s)}var A=function(){return k("any",{})},q=function(){return k("function",{type:Function})},E=function(){return k("boolean",{type:Boolean})},N=function(){return k("string",{type:String})},V=function(){return k("number",{type:Number})},S=function(){return k("array",{type:Array})},F=function(){return k("object",{type:Object})},D=function(){return w("integer",{type:Number,validator:function(e){return O(e)}})},L=function(){return w("symbol",{validator:function(e){return"symbol"==typeof e}})};function Y(e,t){if(void 0===t&&(t="custom validation failed"),"function"!=typeof e)throw new TypeError("[VueTypes error]: You must provide a function as argument");return w(e.name||"<<anonymous function>>",{validator:function(r){var n=e(r);return n||d(this._vueTypes_name+" - "+t),n}})}function B(e){if(!g(e))throw new TypeError("[VueTypes error]: You must provide an array as argument.");var t='oneOf - value should be one of "'+e.join('", "')+'."',r=e.reduce(function(e,t){if(null!=t){var r=t.constructor;-1===e.indexOf(r)&&e.push(r)}return e},[]);return w("oneOf",{type:r.length>0?r:void 0,validator:function(r){var n=-1!==e.indexOf(r);return n||d(t),n}})}function I(e){if(!g(e))throw new TypeError("[VueTypes error]: You must provide an array as argument");for(var t=!1,r=[],n=0;n<e.length;n+=1){var o=e[n];if(_(o)){if(j(o)&&"oneOf"===o._vueTypes_name){r=r.concat(o.type||[]);continue}if(m(o.validator)&&(t=!0),void 0!==o.type){r=r.concat(o.type);continue}}r.push(o)}return r=r.filter(function(e,t){return r.indexOf(e)===t}),w("oneOfType",t?{type:r,validator:function(t){var r=e.some(function(e){return!0===x(j(e)&&"oneOf"===e._vueTypes_name?e.type||null:e,t,!0)});return r||d('oneOfType - value "'+t+'" does not match any of the passed-in validators.'),r}}:{type:r})}function J(e){return w("arrayOf",{type:Array,validator:function(t){var r=t.every(function(t){return x(e,t)});return r||d('arrayOf - value must be an array of "'+p(e)+'"'),r}})}function M(e){return w("instanceOf",{type:e})}function R(e){return w("objectOf",{type:Object,validator:function(t){var r=Object.keys(t).every(function(r){return x(e,t[r])});return r||d('objectOf - value must be an object of "'+p(e)+'"'),r}})}function z(e){var t=Object.keys(e),r=t.filter(function(t){var r;return!!(null===(r=e[t])||void 0===r?void 0:r.required)}),n=w("shape",{type:Object,validator:function(n){var o=this;if(!y(n))return!1;var i=Object.keys(n);if(r.length>0&&r.some(function(e){return-1===i.indexOf(e)})){var u=r.filter(function(e){return-1===i.indexOf(e)});return d(1===u.length?'shape - required property "'+u[0]+'" is not defined.':'shape - required properties "'+u.join('", "')+'" are not defined.'),!1}return i.every(function(r){if(-1===t.indexOf(r))return!0===o._vueTypes_isLoose||(d('shape - shape definition does not include a "'+r+'" property. Allowed keys: "'+t.join('", "')+'".'),!1);var i=x(e[r],n[r],!0);return"string"==typeof i&&d('shape - "'+r+'" property validation error:\n'+i),!0===i})}});return Object.defineProperty(n,"_vueTypes_isLoose",{writable:!0,value:!1}),Object.defineProperty(n,"loose",{get:function(){return this._vueTypes_isLoose=!0,this}}),n}var C=function(){function e(){}return e.extend=function(e){var t=this;if(g(e))return e.forEach(function(e){return t.extend(e)}),this;var r=e.name,n=e.validate,o=void 0!==n&&n,i=e.getter,a=void 0!==i&&i,f=u(e,["name","validate","getter"]);if(h(this,r))throw new TypeError('[VueTypes error]: Type "'+r+'" already defined');var c,s=f.type;return j(s)?(delete f.type,Object.defineProperty(this,r,a?{get:function(){return P(r,s,f)}}:{value:function(){var e,t=P(r,s,f);return t.validator&&(t.validator=(e=t.validator).bind.apply(e,[t].concat([].slice.call(arguments)))),t}})):(c=a?{get:function(){var e=Object.assign({},f);return o?k(r,e):w(r,e)},enumerable:!0}:{value:function(){var e,t,n=Object.assign({},f);return e=o?k(r,n):w(r,n),n.validator&&(e.validator=(t=n.validator).bind.apply(t,[e].concat([].slice.call(arguments)))),e},enumerable:!0},Object.defineProperty(this,r,c))},n(e,null,[{key:"any",get:function(){return A()}},{key:"func",get:function(){return q().def(this.defaults.func)}},{key:"bool",get:function(){return E().def(this.defaults.bool)}},{key:"string",get:function(){return N().def(this.defaults.string)}},{key:"number",get:function(){return V().def(this.defaults.number)}},{key:"array",get:function(){return S().def(this.defaults.array)}},{key:"object",get:function(){return F().def(this.defaults.object)}},{key:"integer",get:function(){return D().def(this.defaults.integer)}},{key:"symbol",get:function(){return L()}}]),e}();function G(e){var t;return void 0===e&&(e={func:function(){},bool:!0,string:"",number:0,array:function(){return[]},object:function(){return{}},integer:0}),(t=function(t){function r(){return t.apply(this,arguments)||this}return i(r,t),n(r,null,[{key:"sensibleDefaults",get:function(){return o({},this.defaults)},set:function(t){this.defaults=!1!==t?o({},!0!==t?t:e):{}}}]),r}(C)).defaults=o({},e),t}C.defaults={},C.custom=Y,C.oneOf=B,C.instanceOf=M,C.oneOfType=I,C.arrayOf=J,C.objectOf=R,C.shape=z,C.utils={validate:function(e,t){return!0===x(t,e,!0)},toType:function(e,t,r){return void 0===r&&(r=!1),r?k(e,t):w(e,t)}};var H=function(e){function t(){return e.apply(this,arguments)||this}return i(t,e),t}(G());exports.any=A,exports.array=S,exports.arrayOf=J,exports.bool=E,exports.createTypes=G,exports.custom=Y,exports.default=H,exports.fromType=P,exports.func=q,exports.instanceOf=M,exports.integer=D,exports.number=V,exports.object=F,exports.objectOf=R,exports.oneOf=B,exports.oneOfType=I,exports.shape=z,exports.string=N,exports.symbol=L,exports.toType=w,exports.toValidableType=k,exports.validateType=x;
//# sourceMappingURL=vue-types.js.map

@@ -1,15 +0,2 @@

import e from"vue";
/*!
* isobject <https://github.com/jonschlinkert/isobject>
*
* Copyright (c) 2014-2017, Jon Schlinkert.
* Released under the MIT License.
*/
/*!
* is-plain-object <https://github.com/jonschlinkert/is-plain-object>
*
* Copyright (c) 2014-2017, Jon Schlinkert.
* Released under the MIT License.
*/
function t(e){return 1==(null!=(t=e)&&"object"==typeof t&&!1===Array.isArray(t))&&"[object Object]"===Object.prototype.toString.call(e);var t}const r=Object.prototype,n=r.toString,o=r.hasOwnProperty,i=/^\s*function (\w+)/;function a(e){var t;const r=null!==(t=null==e?void 0:e.type)&&void 0!==t?t:e;if(r){const e=r.toString().match(i);return e?e[1]:""}return""}const s=function(e){var r,n;return!1!==t(e)&&"function"==typeof(r=e.constructor)&&!1!==t(n=r.prototype)&&!1!==n.hasOwnProperty("isPrototypeOf")};function u(){}let c=u;if("production"!==process.env.NODE_ENV){const t="undefined"!=typeof console;c=t?function(t){!1===e.config.silent&&console.warn("[VueTypes warn]: "+t)}:u}const l=(e,t)=>o.call(e,t),f=Number.isInteger||function(e){return"number"==typeof e&&isFinite(e)&&Math.floor(e)===e},y=Array.isArray||function(e){return"[object Array]"===n.call(e)},p=e=>"[object Function]"===n.call(e),d=e=>s(e)&&l(e,"_vueTypes_name"),v=e=>s(e)&&(l(e,"type")||["_vueTypes_name","validator","default","required"].some(t=>l(e,t)));function b(e,t){return Object.defineProperty(e.bind(t),"__original",{value:e})}function h(e,t,r=!1){let n,o=!0,f="";n=s(e)?e:{type:e};const b=d(n)?n._vueTypes_name+" - ":"";if(v(n)&&null!==n.type){if(void 0===n.type)return o;if(!n.required&&void 0===t)return o;void 0===n.type?f="any":y(n.type)?(o=n.type.some(e=>h(e,t,!0)),f=n.type.map(e=>a(e)).join(" or ")):(f=a(n),o="Array"===f?y(t):"Object"===f?s(t):"String"===f||"Number"===f||"Boolean"===f||"Function"===f?function(e){if(null==e)return"";const t=e.constructor.toString().match(i);return t?t[1]:""}(t)===f:t instanceof n.type)}if(!o)return!1===r&&c(`${b}value "${t}" should be of type "${f}"`),!1;if(l(n,"validator")&&p(n.validator)){let e;return r&&(e=c,c=u),o=n.validator(t),e&&(c=e),o||!1!==r||c(b+"custom validation failed"),o}return o}function O(e,t){const r=Object.defineProperties(t,{_vueTypes_name:{value:e,writable:!0},isRequired:{get(){return this.required=!0,this}},def:{value(e){return void 0!==e||this.default?p(e)||h(this,e)?(this.default=y(e)?()=>[...e]:s(e)?()=>Object.assign({},e):e,this):(c(`${this._vueTypes_name} - invalid default value: "${e}"`),this):this}}}),{validator:n}=r;return p(n)&&(r.validator=b(n,r)),r}function m(e,t){const r=O(e,t);return Object.defineProperty(r,"validate",{value(e){return this.validator=b(e,this),this}})}function g(e,t,r={}){const{validator:n,...o}=r,i=function(e){const t={};return Object.getOwnPropertyNames(e).forEach(r=>{t[r]=Object.getOwnPropertyDescriptor(e,r)}),Object.defineProperties({},t)}(t);if(i._vueTypes_name=e,p(n)){let{validator:e}=i;e&&(e=null!==(s=(a=e).__original)&&void 0!==s?s:a),i.validator=b(e?function(t){return e.call(this,t)&&n.call(this,t)}:n,i)}var a,s;return Object.assign(i,o)}const j=()=>m("any",{}),_=()=>m("function",{type:Function}),T=()=>m("boolean",{type:Boolean}),w=()=>m("string",{type:String}),$=()=>m("number",{type:Number}),P=()=>m("array",{type:Array}),x=()=>m("object",{type:Object}),A=()=>O("integer",{type:Number,validator:e=>f(e)}),E=()=>m("symbol",{validator:e=>"symbol"==typeof e});function N(e,t="custom validation failed"){if("function"!=typeof e)throw new TypeError("[VueTypes error]: You must provide a function as argument");return O(e.name||"<<anonymous function>>",{validator(r){const n=e(r);return n||c(`${this._vueTypes_name} - ${t}`),n}})}function q(e){if(!y(e))throw new TypeError("[VueTypes error]: You must provide an array as argument");const t=`oneOf - value should be one of "${e.join('", "')}"`,r=e.reduce((e,t)=>{if(null!=t){const r=t.constructor;-1===e.indexOf(r)&&e.push(r)}return e},[]);return O("oneOf",{type:r.length>0?r:void 0,validator(r){const n=-1!==e.indexOf(r);return n||c(t),n}})}function S(e){if(!y(e))throw new TypeError("[VueTypes error]: You must provide an array as argument");let t=!1,r=[];for(let n=0;n<e.length;n+=1){const o=e[n];if(v(o)){if(d(o)&&"oneOf"===o._vueTypes_name&&o.type){r=r.concat(o.type);continue}if(p(o.validator)){t=!0;continue}if(o.type){r=r.concat(o.type);continue}}r.push(o)}if(!t)return O("oneOfType",{type:r});const n=e.reduce((e,t)=>e.concat(v(t)&&y(t.type)?t.type.map(a):a(t)),[]).join('", "');return O("oneOfType",{validator(t){const r=e.some(e=>d(e)&&"oneOf"===e._vueTypes_name?!e.type||h(e.type,t,!0):h(e,t,!0));return r||c(`oneOfType - value type should be one of "${n}"`),r}})}function V(e){return O("arrayOf",{type:Array,validator(t){const r=t.every(t=>h(e,t));return r||c(`arrayOf - value must be an array of "${a(e)}"`),r}})}function D(e){return O("instanceOf",{type:e})}function F(e){return O("objectOf",{type:Object,validator(t){const r=Object.keys(t).every(r=>h(e,t[r]));return r||c(`objectOf - value must be an object of "${a(e)}"`),r}})}function k(e){const t=Object.keys(e),r=t.filter(t=>{var r;return!!(null===(r=e[t])||void 0===r?void 0:r.required)}),n=O("shape",{type:Object,validator(n){if(!s(n))return!1;const o=Object.keys(n);return r.length>0&&r.some(e=>-1===o.indexOf(e))?(c(`shape - at least one of required properties "${r.join('", "')}" is not present`),!1):o.every(r=>-1===t.indexOf(r)?!0===this._vueTypes_isLoose||(c(`shape - object is missing "${r}" property`),!1):h(e[r],n[r]))}});return Object.defineProperty(n,"_vueTypes_isLoose",{writable:!0,value:!1}),Object.defineProperty(n,"loose",{get(){return this._vueTypes_isLoose=!0,this}}),n}class L{static get any(){return j()}static get func(){return _().def(this.defaults.func)}static get bool(){return T().def(this.defaults.bool)}static get string(){return w().def(this.defaults.string)}static get number(){return $().def(this.defaults.number)}static get array(){return P().def(this.defaults.array)}static get object(){return x().def(this.defaults.object)}static get integer(){return A().def(this.defaults.integer)}static get symbol(){return E()}static extend(e){if(y(e))return e.forEach(e=>this.extend(e)),this;const{name:t,validate:r=!1,getter:n=!1,...o}=e;if(l(this,t))throw new TypeError(`[VueTypes error]: Type "${t}" already defined`);const{type:i}=o;if(d(i))return delete o.type,Object.defineProperty(this,t,n?{get:()=>g(t,i,o)}:{value(...e){const r=g(t,i,o);return r.validator&&(r.validator=r.validator.bind(r,...e)),r}});let a;return a=n?{get(){const e=Object.assign({},o);return r?m(t,e):O(t,e)},enumerable:!0}:{value(...e){const n=Object.assign({},o);let i;return i=r?m(t,n):O(t,n),n.validator&&(i.validator=n.validator.bind(i,...e)),i},enumerable:!0},Object.defineProperty(this,t,a)}}function Y(e={func:()=>{},bool:!0,string:"",number:0,array:()=>[],object:()=>({}),integer:0}){var t;return(t=class extends L{static get sensibleDefaults(){return{...this.defaults}}static set sensibleDefaults(t){this.defaults=!1!==t?!0!==t?{...t}:{...e}:{}}}).defaults={...e},t}L.defaults={},L.custom=N,L.oneOf=q,L.instanceOf=D,L.oneOfType=S,L.arrayOf=V,L.objectOf=F,L.shape=k,L.utils={validate:(e,t)=>h(t,e,!0),toType:(e,t,r=!1)=>r?m(e,t):O(e,t)};class B extends(Y()){}export default B;export{j as any,P as array,V as arrayOf,T as bool,Y as createTypes,N as custom,g as fromType,_ as func,D as instanceOf,A as integer,$ as number,x as object,F as objectOf,q as oneOf,S as oneOfType,k as shape,w as string,E as symbol,O as toType,m as toValidableType,h as validateType};
import e from"vue";function t(e){return 1==(null!=(t=e)&&"object"==typeof t&&!1===Array.isArray(t))&&"[object Object]"===Object.prototype.toString.call(e);var t}const r=Object.prototype,n=r.toString,o=r.hasOwnProperty,i=/^\s*function (\w+)/;function a(e){var t;const r=null!==(t=null==e?void 0:e.type)&&void 0!==t?t:e;if(r){const e=r.toString().match(i);return e?e[1]:""}return""}const s=function(e){var r,n;return!1!==t(e)&&"function"==typeof(r=e.constructor)&&!1!==t(n=r.prototype)&&!1!==n.hasOwnProperty("isPrototypeOf")},u=e=>e;let c=u;if("production"!==process.env.NODE_ENV){const t="undefined"!=typeof console;c=t?function(t){!1===e.config.silent&&console.warn("[VueTypes warn]: "+t)}:u}const l=(e,t)=>o.call(e,t),f=Number.isInteger||function(e){return"number"==typeof e&&isFinite(e)&&Math.floor(e)===e},d=Array.isArray||function(e){return"[object Array]"===n.call(e)},y=e=>"[object Function]"===n.call(e),p=e=>s(e)&&l(e,"_vueTypes_name"),v=e=>s(e)&&(l(e,"type")||["_vueTypes_name","validator","default","required"].some(t=>l(e,t)));function h(e,t){return Object.defineProperty(e.bind(t),"__original",{value:e})}function b(e,t,r=!1){let n,o=!0,u="";n=s(e)?e:{type:e};const f=p(n)?n._vueTypes_name+" - ":"";if(v(n)&&null!==n.type){if(void 0===n.type)return o;if(!n.required&&void 0===t)return o;void 0===n.type?u="any":d(n.type)?(o=n.type.some(e=>!0===b(e,t,!0)),u=n.type.map(e=>a(e)).join(" or ")):(u=a(n),o="Array"===u?d(t):"Object"===u?s(t):"String"===u||"Number"===u||"Boolean"===u||"Function"===u?function(e){if(null==e)return"";const t=e.constructor.toString().match(i);return t?t[1]:""}(t)===u:t instanceof n.type)}if(!o){const e=`${f}value "${t}" should be of type "${u}"`;return!1===r?(c(e),!1):e}if(l(n,"validator")&&y(n.validator)){const e=c,i=[];if(c=e=>{i.push(e)},o=n.validator(t),c=e,!o){const e="* "+i.join("\n* ");return i.length=0,!1===r?(c(e),o):e}}return o}function O(e,t){const r=Object.defineProperties(t,{_vueTypes_name:{value:e,writable:!0},isRequired:{get(){return this.required=!0,this}},def:{value(e){return void 0!==e||this.default?y(e)||!0===b(this,e,!0)?(this.default=d(e)?()=>[...e]:s(e)?()=>Object.assign({},e):e,this):(c(`${this._vueTypes_name} - invalid default value: "${e}"`),this):this}}}),{validator:n}=r;return y(n)&&(r.validator=h(n,r)),r}function g(e,t){const r=O(e,t);return Object.defineProperty(r,"validate",{value(e){return y(this.validator)&&c(`${this._vueTypes_name} - calling .validate() will overwrite the current custom validator function. Validator info:\n${JSON.stringify(this)}`),this.validator=h(e,this),this}})}function m(e,t,r){const n=function(e){const t={};return Object.getOwnPropertyNames(e).forEach(r=>{t[r]=Object.getOwnPropertyDescriptor(e,r)}),Object.defineProperties({},t)}(t);if(n._vueTypes_name=e,!s(r))return n;const{validator:o,...i}=r;if(y(o)){let{validator:e}=n;e&&(e=null!==(u=(a=e).__original)&&void 0!==u?u:a),n.validator=h(e?function(t){return e.call(this,t)&&o.call(this,t)}:o,n)}var a,u;return Object.assign(n,i)}const j=()=>g("any",{}),_=()=>g("function",{type:Function}),T=()=>g("boolean",{type:Boolean}),w=()=>g("string",{type:String}),$=()=>g("number",{type:Number}),P=()=>g("array",{type:Array}),x=()=>g("object",{type:Object}),A=()=>O("integer",{type:Number,validator:e=>f(e)}),E=()=>O("symbol",{validator:e=>"symbol"==typeof e});function N(e,t="custom validation failed"){if("function"!=typeof e)throw new TypeError("[VueTypes error]: You must provide a function as argument");return O(e.name||"<<anonymous function>>",{validator(r){const n=e(r);return n||c(`${this._vueTypes_name} - ${t}`),n}})}function q(e){if(!d(e))throw new TypeError("[VueTypes error]: You must provide an array as argument.");const t=`oneOf - value should be one of "${e.join('", "')}."`,r=e.reduce((e,t)=>{if(null!=t){const r=t.constructor;-1===e.indexOf(r)&&e.push(r)}return e},[]);return O("oneOf",{type:r.length>0?r:void 0,validator(r){const n=-1!==e.indexOf(r);return n||c(t),n}})}function S(e){if(!d(e))throw new TypeError("[VueTypes error]: You must provide an array as argument");let t=!1,r=[];for(let n=0;n<e.length;n+=1){const o=e[n];if(v(o)){if(p(o)&&"oneOf"===o._vueTypes_name){r=r.concat(o.type||[]);continue}if(y(o.validator)&&(t=!0),void 0!==o.type){r=r.concat(o.type);continue}}r.push(o)}return r=r.filter((e,t)=>r.indexOf(e)===t),O("oneOfType",t?{type:r,validator(t){const r=e.some(e=>!0===b(p(e)&&"oneOf"===e._vueTypes_name?e.type||null:e,t,!0));return r||c(`oneOfType - value "${t}" does not match any of the passed-in validators.`),r}}:{type:r})}function V(e){return O("arrayOf",{type:Array,validator(t){const r=t.every(t=>b(e,t));return r||c(`arrayOf - value must be an array of "${a(e)}"`),r}})}function k(e){return O("instanceOf",{type:e})}function D(e){return O("objectOf",{type:Object,validator(t){const r=Object.keys(t).every(r=>b(e,t[r]));return r||c(`objectOf - value must be an object of "${a(e)}"`),r}})}function F(e){const t=Object.keys(e),r=t.filter(t=>{var r;return!!(null===(r=e[t])||void 0===r?void 0:r.required)}),n=O("shape",{type:Object,validator(n){if(!s(n))return!1;const o=Object.keys(n);if(r.length>0&&r.some(e=>-1===o.indexOf(e))){const e=r.filter(e=>-1===o.indexOf(e));return c(1===e.length?`shape - required property "${e[0]}" is not defined.`:`shape - required properties "${e.join('", "')}" are not defined.`),!1}return o.every(r=>{if(-1===t.indexOf(r))return!0===this._vueTypes_isLoose||(c(`shape - shape definition does not include a "${r}" property. Allowed keys: "${t.join('", "')}".`),!1);const o=b(e[r],n[r],!0);return"string"==typeof o&&c(`shape - "${r}" property validation error:\n${o}`),!0===o})}});return Object.defineProperty(n,"_vueTypes_isLoose",{writable:!0,value:!1}),Object.defineProperty(n,"loose",{get(){return this._vueTypes_isLoose=!0,this}}),n}class L{static get any(){return j()}static get func(){return _().def(this.defaults.func)}static get bool(){return T().def(this.defaults.bool)}static get string(){return w().def(this.defaults.string)}static get number(){return $().def(this.defaults.number)}static get array(){return P().def(this.defaults.array)}static get object(){return x().def(this.defaults.object)}static get integer(){return A().def(this.defaults.integer)}static get symbol(){return E()}static extend(e){if(d(e))return e.forEach(e=>this.extend(e)),this;const{name:t,validate:r=!1,getter:n=!1,...o}=e;if(l(this,t))throw new TypeError(`[VueTypes error]: Type "${t}" already defined`);const{type:i}=o;if(p(i))return delete o.type,Object.defineProperty(this,t,n?{get:()=>m(t,i,o)}:{value(...e){const r=m(t,i,o);return r.validator&&(r.validator=r.validator.bind(r,...e)),r}});let a;return a=n?{get(){const e=Object.assign({},o);return r?g(t,e):O(t,e)},enumerable:!0}:{value(...e){const n=Object.assign({},o);let i;return i=r?g(t,n):O(t,n),n.validator&&(i.validator=n.validator.bind(i,...e)),i},enumerable:!0},Object.defineProperty(this,t,a)}}function Y(e={func:()=>{},bool:!0,string:"",number:0,array:()=>[],object:()=>({}),integer:0}){var t;return(t=class extends L{static get sensibleDefaults(){return{...this.defaults}}static set sensibleDefaults(t){this.defaults=!1!==t?!0!==t?{...t}:{...e}:{}}}).defaults={...e},t}L.defaults={},L.custom=N,L.oneOf=q,L.instanceOf=k,L.oneOfType=S,L.arrayOf=V,L.objectOf=D,L.shape=F,L.utils={validate:(e,t)=>!0===b(t,e,!0),toType:(e,t,r=!1)=>r?g(e,t):O(e,t)};class B extends(Y()){}export default B;export{j as any,P as array,V as arrayOf,T as bool,Y as createTypes,N as custom,m as fromType,_ as func,k as instanceOf,A as integer,$ as number,x as object,D as objectOf,q as oneOf,S as oneOfType,F as shape,w as string,E as symbol,O as toType,g as toValidableType,b as validateType};
//# sourceMappingURL=vue-types.modern.js.map

@@ -1,15 +0,2 @@

!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("vue")):"function"==typeof define&&define.amd?define(["exports","vue"],t):t((e=e||self).VueTypes={},e.vue)}(this,function(e,t){function n(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function r(e,t,r){return t&&n(e.prototype,t),r&&n(e,r),e}function o(){return(o=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function u(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function i(e,t){if(null==e)return{};var n,r,o={},u=Object.keys(e);for(r=0;r<u.length;r++)t.indexOf(n=u[r])>=0||(o[n]=e[n]);return o}
/*!
* isobject <https://github.com/jonschlinkert/isobject>
*
* Copyright (c) 2014-2017, Jon Schlinkert.
* Released under the MIT License.
*/
/*!
* is-plain-object <https://github.com/jonschlinkert/is-plain-object>
*
* Copyright (c) 2014-2017, Jon Schlinkert.
* Released under the MIT License.
*/
function a(e){return 1==(null!=(t=e)&&"object"==typeof t&&!1===Array.isArray(t))&&"[object Object]"===Object.prototype.toString.call(e);var t}t=t&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t;var f=Object.prototype,c=f.toString,s=f.hasOwnProperty,l=/^\s*function (\w+)/;function y(e){var t,n=null!==(t=null==e?void 0:e.type)&&void 0!==t?t:e;if(n){var r=n.toString().match(l);return r?r[1]:""}return""}var p=function(e){var t,n;return!1!==a(e)&&"function"==typeof(t=e.constructor)&&!1!==a(n=t.prototype)&&!1!==n.hasOwnProperty("isPrototypeOf")};function v(){}var d=v,b=function(e,t){return s.call(e,t)},h=Number.isInteger||function(e){return"number"==typeof e&&isFinite(e)&&Math.floor(e)===e},O=Array.isArray||function(e){return"[object Array]"===c.call(e)},m=function(e){return"[object Function]"===c.call(e)},g=function(e){return p(e)&&b(e,"_vueTypes_name")},j=function(e){return p(e)&&(b(e,"type")||["_vueTypes_name","validator","default","required"].some(function(t){return b(e,t)}))};function T(e,t){return Object.defineProperty(e.bind(t),"__original",{value:e})}function _(e,t,n){var r;void 0===n&&(n=!1);var o=!0,u="";r=p(e)?e:{type:e};var i,a=g(r)?r._vueTypes_name+" - ":"";if(j(r)&&null!==r.type){if(void 0===r.type)return o;if(!r.required&&void 0===t)return o;void 0===r.type?u="any":O(r.type)?(o=r.type.some(function(e){return _(e,t,!0)}),u=r.type.map(function(e){return y(e)}).join(" or ")):o="Array"===(u=y(r))?O(t):"Object"===u?p(t):"String"===u||"Number"===u||"Boolean"===u||"Function"===u?function(e){if(null==e)return"";var t=e.constructor.toString().match(l);return t?t[1]:""}(t)===u:t instanceof r.type}return o?b(r,"validator")&&m(r.validator)?(n&&(i=d,d=v),o=r.validator(t),i&&(d=i),o||!1!==n||d(a+"custom validation failed"),o):o:(!1===n&&d(a+'value "'+t+'" should be of type "'+u+'"'),!1)}function w(e,t){var n=Object.defineProperties(t,{_vueTypes_name:{value:e,writable:!0},isRequired:{get:function(){return this.required=!0,this}},def:{value:function(e){return void 0!==e||this.default?m(e)||_(this,e)?(this.default=O(e)?function(){return[].concat(e)}:p(e)?function(){return Object.assign({},e)}:e,this):(d(this._vueTypes_name+' - invalid default value: "'+e+'"'),this):this}}}),r=n.validator;return m(r)&&(n.validator=T(r,n)),n}function P(e,t){var n=w(e,t);return Object.defineProperty(n,"validate",{value:function(e){return this.validator=T(e,this),this}})}function k(e,t,n){void 0===n&&(n={});var r,o,u,a,f=n.validator,c=i(n,["validator"]),s=(r=t,o={},Object.getOwnPropertyNames(r).forEach(function(e){o[e]=Object.getOwnPropertyDescriptor(r,e)}),Object.defineProperties({},o));if(s._vueTypes_name=e,m(f)){var l=s.validator;l&&(l=null!==(a=(u=l).__original)&&void 0!==a?a:u),s.validator=T(l?function(e){return l.call(this,e)&&f.call(this,e)}:f,s)}return Object.assign(s,c)}var x=function(){return P("any",{})},A=function(){return P("function",{type:Function})},q=function(){return P("boolean",{type:Boolean})},E=function(){return P("string",{type:String})},S=function(){return P("number",{type:Number})},V=function(){return P("array",{type:Array})},N=function(){return P("object",{type:Object})},F=function(){return w("integer",{type:Number,validator:function(e){return h(e)}})},L=function(){return P("symbol",{validator:function(e){return"symbol"==typeof e}})};function Y(e,t){if(void 0===t&&(t="custom validation failed"),"function"!=typeof e)throw new TypeError("[VueTypes error]: You must provide a function as argument");return w(e.name||"<<anonymous function>>",{validator:function(n){var r=e(n);return r||d(this._vueTypes_name+" - "+t),r}})}function B(e){if(!O(e))throw new TypeError("[VueTypes error]: You must provide an array as argument");var t='oneOf - value should be one of "'+e.join('", "')+'"',n=e.reduce(function(e,t){if(null!=t){var n=t.constructor;-1===e.indexOf(n)&&e.push(n)}return e},[]);return w("oneOf",{type:n.length>0?n:void 0,validator:function(n){var r=-1!==e.indexOf(n);return r||d(t),r}})}function D(e){if(!O(e))throw new TypeError("[VueTypes error]: You must provide an array as argument");for(var t=!1,n=[],r=0;r<e.length;r+=1){var o=e[r];if(j(o)){if(g(o)&&"oneOf"===o._vueTypes_name&&o.type){n=n.concat(o.type);continue}if(m(o.validator)){t=!0;continue}if(o.type){n=n.concat(o.type);continue}}n.push(o)}if(!t)return w("oneOfType",{type:n});var u=e.reduce(function(e,t){return e.concat(j(t)&&O(t.type)?t.type.map(y):y(t))},[]).join('", "');return w("oneOfType",{validator:function(t){var n=e.some(function(e){return g(e)&&"oneOf"===e._vueTypes_name?!e.type||_(e.type,t,!0):_(e,t,!0)});return n||d('oneOfType - value type should be one of "'+u+'"'),n}})}function I(e){return w("arrayOf",{type:Array,validator:function(t){var n=t.every(function(t){return _(e,t)});return n||d('arrayOf - value must be an array of "'+y(e)+'"'),n}})}function M(e){return w("instanceOf",{type:e})}function R(e){return w("objectOf",{type:Object,validator:function(t){var n=Object.keys(t).every(function(n){return _(e,t[n])});return n||d('objectOf - value must be an object of "'+y(e)+'"'),n}})}function z(e){var t=Object.keys(e),n=t.filter(function(t){var n;return!!(null===(n=e[t])||void 0===n?void 0:n.required)}),r=w("shape",{type:Object,validator:function(r){var o=this;if(!p(r))return!1;var u=Object.keys(r);return n.length>0&&n.some(function(e){return-1===u.indexOf(e)})?(d('shape - at least one of required properties "'+n.join('", "')+'" is not present'),!1):u.every(function(n){return-1===t.indexOf(n)?!0===o._vueTypes_isLoose||(d('shape - object is missing "'+n+'" property'),!1):_(e[n],r[n])})}});return Object.defineProperty(r,"_vueTypes_isLoose",{writable:!0,value:!1}),Object.defineProperty(r,"loose",{get:function(){return this._vueTypes_isLoose=!0,this}}),r}var C=function(){function e(){}return e.extend=function(e){var t=this;if(O(e))return e.forEach(function(e){return t.extend(e)}),this;var n=e.name,r=e.validate,o=void 0!==r&&r,u=e.getter,a=void 0!==u&&u,f=i(e,["name","validate","getter"]);if(b(this,n))throw new TypeError('[VueTypes error]: Type "'+n+'" already defined');var c,s=f.type;return g(s)?(delete f.type,Object.defineProperty(this,n,a?{get:function(){return k(n,s,f)}}:{value:function(){var e,t=k(n,s,f);return t.validator&&(t.validator=(e=t.validator).bind.apply(e,[t].concat([].slice.call(arguments)))),t}})):(c=a?{get:function(){var e=Object.assign({},f);return o?P(n,e):w(n,e)},enumerable:!0}:{value:function(){var e,t,r=Object.assign({},f);return e=o?P(n,r):w(n,r),r.validator&&(e.validator=(t=r.validator).bind.apply(t,[e].concat([].slice.call(arguments)))),e},enumerable:!0},Object.defineProperty(this,n,c))},r(e,null,[{key:"any",get:function(){return x()}},{key:"func",get:function(){return A().def(this.defaults.func)}},{key:"bool",get:function(){return q().def(this.defaults.bool)}},{key:"string",get:function(){return E().def(this.defaults.string)}},{key:"number",get:function(){return S().def(this.defaults.number)}},{key:"array",get:function(){return V().def(this.defaults.array)}},{key:"object",get:function(){return N().def(this.defaults.object)}},{key:"integer",get:function(){return F().def(this.defaults.integer)}},{key:"symbol",get:function(){return L()}}]),e}();function G(e){var t;return void 0===e&&(e={func:function(){},bool:!0,string:"",number:0,array:function(){return[]},object:function(){return{}},integer:0}),(t=function(t){function n(){return t.apply(this,arguments)||this}return u(n,t),r(n,null,[{key:"sensibleDefaults",get:function(){return o({},this.defaults)},set:function(t){this.defaults=!1!==t?o({},!0!==t?t:e):{}}}]),n}(C)).defaults=o({},e),t}C.defaults={},C.custom=Y,C.oneOf=B,C.instanceOf=M,C.oneOfType=D,C.arrayOf=I,C.objectOf=R,C.shape=z,C.utils={validate:function(e,t){return _(t,e,!0)},toType:function(e,t,n){return void 0===n&&(n=!1),n?P(e,t):w(e,t)}};var H=function(e){function t(){return e.apply(this,arguments)||this}return u(t,e),t}(G());e.any=x,e.array=V,e.arrayOf=I,e.bool=q,e.createTypes=G,e.custom=Y,e.default=H,e.fromType=k,e.func=A,e.instanceOf=M,e.integer=F,e.number=S,e.object=N,e.objectOf=R,e.oneOf=B,e.oneOfType=D,e.shape=z,e.string=E,e.symbol=L,e.toType=w,e.toValidableType=P,e.validateType=_});
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("vue")):"function"==typeof define&&define.amd?define(["exports","vue"],t):t((e=e||self).VueTypes={},e.vue)}(this,function(e,t){function n(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function r(e,t,r){return t&&n(e.prototype,t),r&&n(e,r),e}function o(){return(o=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function i(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function u(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)t.indexOf(n=i[r])>=0||(o[n]=e[n]);return o}function a(e){return 1==(null!=(t=e)&&"object"==typeof t&&!1===Array.isArray(t))&&"[object Object]"===Object.prototype.toString.call(e);var t}t=t&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t;var f=Object.prototype,c=f.toString,l=f.hasOwnProperty,s=/^\s*function (\w+)/;function y(e){var t,n=null!==(t=null==e?void 0:e.type)&&void 0!==t?t:e;if(n){var r=n.toString().match(s);return r?r[1]:""}return""}var p=function(e){var t,n;return!1!==a(e)&&"function"==typeof(t=e.constructor)&&!1!==a(n=t.prototype)&&!1!==n.hasOwnProperty("isPrototypeOf")},v=function(e){return e},d=function(e,t){return l.call(e,t)},b=Number.isInteger||function(e){return"number"==typeof e&&isFinite(e)&&Math.floor(e)===e},h=Array.isArray||function(e){return"[object Array]"===c.call(e)},O=function(e){return"[object Function]"===c.call(e)},g=function(e){return p(e)&&d(e,"_vueTypes_name")},m=function(e){return p(e)&&(d(e,"type")||["_vueTypes_name","validator","default","required"].some(function(t){return d(e,t)}))};function j(e,t){return Object.defineProperty(e.bind(t),"__original",{value:e})}function _(e,t,n){var r;void 0===n&&(n=!1);var o=!0,i="";r=p(e)?e:{type:e};var u=g(r)?r._vueTypes_name+" - ":"";if(m(r)&&null!==r.type){if(void 0===r.type)return o;if(!r.required&&void 0===t)return o;void 0===r.type?i="any":h(r.type)?(o=r.type.some(function(e){return!0===_(e,t,!0)}),i=r.type.map(function(e){return y(e)}).join(" or ")):o="Array"===(i=y(r))?h(t):"Object"===i?p(t):"String"===i||"Number"===i||"Boolean"===i||"Function"===i?function(e){if(null==e)return"";var t=e.constructor.toString().match(s);return t?t[1]:""}(t)===i:t instanceof r.type}if(!o){var a=u+'value "'+t+'" should be of type "'+i+'"';return!1===n?(v(a),!1):a}if(d(r,"validator")&&O(r.validator)){var f=v,c=[];if(v=function(e){c.push(e)},o=r.validator(t),v=f,!o){var l="* "+c.join("\n* ");return c.length=0,!1===n?(v(l),o):l}}return o}function T(e,t){var n=Object.defineProperties(t,{_vueTypes_name:{value:e,writable:!0},isRequired:{get:function(){return this.required=!0,this}},def:{value:function(e){return void 0!==e||this.default?O(e)||!0===_(this,e,!0)?(this.default=h(e)?function(){return[].concat(e)}:p(e)?function(){return Object.assign({},e)}:e,this):(v(this._vueTypes_name+' - invalid default value: "'+e+'"'),this):this}}}),r=n.validator;return O(r)&&(n.validator=j(r,n)),n}function w(e,t){var n=T(e,t);return Object.defineProperty(n,"validate",{value:function(e){return O(this.validator)&&v(this._vueTypes_name+" - calling .validate() will overwrite the current custom validator function. Validator info:\n"+JSON.stringify(this)),this.validator=j(e,this),this}})}function k(e,t,n){var r,o,i=(r=t,o={},Object.getOwnPropertyNames(r).forEach(function(e){o[e]=Object.getOwnPropertyDescriptor(r,e)}),Object.defineProperties({},o));if(i._vueTypes_name=e,!p(n))return i;var a,f,c=n.validator,l=u(n,["validator"]);if(O(c)){var s=i.validator;s&&(s=null!==(f=(a=s).__original)&&void 0!==f?f:a),i.validator=j(s?function(e){return s.call(this,e)&&c.call(this,e)}:c,i)}return Object.assign(i,l)}var P=function(){return w("any",{})},x=function(){return w("function",{type:Function})},A=function(){return w("boolean",{type:Boolean})},q=function(){return w("string",{type:String})},S=function(){return w("number",{type:Number})},V=function(){return w("array",{type:Array})},E=function(){return w("object",{type:Object})},N=function(){return T("integer",{type:Number,validator:function(e){return b(e)}})},F=function(){return T("symbol",{validator:function(e){return"symbol"==typeof e}})};function L(e,t){if(void 0===t&&(t="custom validation failed"),"function"!=typeof e)throw new TypeError("[VueTypes error]: You must provide a function as argument");return T(e.name||"<<anonymous function>>",{validator:function(n){var r=e(n);return r||v(this._vueTypes_name+" - "+t),r}})}function Y(e){if(!h(e))throw new TypeError("[VueTypes error]: You must provide an array as argument.");var t='oneOf - value should be one of "'+e.join('", "')+'."',n=e.reduce(function(e,t){if(null!=t){var n=t.constructor;-1===e.indexOf(n)&&e.push(n)}return e},[]);return T("oneOf",{type:n.length>0?n:void 0,validator:function(n){var r=-1!==e.indexOf(n);return r||v(t),r}})}function B(e){if(!h(e))throw new TypeError("[VueTypes error]: You must provide an array as argument");for(var t=!1,n=[],r=0;r<e.length;r+=1){var o=e[r];if(m(o)){if(g(o)&&"oneOf"===o._vueTypes_name){n=n.concat(o.type||[]);continue}if(O(o.validator)&&(t=!0),void 0!==o.type){n=n.concat(o.type);continue}}n.push(o)}return n=n.filter(function(e,t){return n.indexOf(e)===t}),T("oneOfType",t?{type:n,validator:function(t){var n=e.some(function(e){return!0===_(g(e)&&"oneOf"===e._vueTypes_name?e.type||null:e,t,!0)});return n||v('oneOfType - value "'+t+'" does not match any of the passed-in validators.'),n}}:{type:n})}function D(e){return T("arrayOf",{type:Array,validator:function(t){var n=t.every(function(t){return _(e,t)});return n||v('arrayOf - value must be an array of "'+y(e)+'"'),n}})}function I(e){return T("instanceOf",{type:e})}function J(e){return T("objectOf",{type:Object,validator:function(t){var n=Object.keys(t).every(function(n){return _(e,t[n])});return n||v('objectOf - value must be an object of "'+y(e)+'"'),n}})}function M(e){var t=Object.keys(e),n=t.filter(function(t){var n;return!!(null===(n=e[t])||void 0===n?void 0:n.required)}),r=T("shape",{type:Object,validator:function(r){var o=this;if(!p(r))return!1;var i=Object.keys(r);if(n.length>0&&n.some(function(e){return-1===i.indexOf(e)})){var u=n.filter(function(e){return-1===i.indexOf(e)});return v(1===u.length?'shape - required property "'+u[0]+'" is not defined.':'shape - required properties "'+u.join('", "')+'" are not defined.'),!1}return i.every(function(n){if(-1===t.indexOf(n))return!0===o._vueTypes_isLoose||(v('shape - shape definition does not include a "'+n+'" property. Allowed keys: "'+t.join('", "')+'".'),!1);var i=_(e[n],r[n],!0);return"string"==typeof i&&v('shape - "'+n+'" property validation error:\n'+i),!0===i})}});return Object.defineProperty(r,"_vueTypes_isLoose",{writable:!0,value:!1}),Object.defineProperty(r,"loose",{get:function(){return this._vueTypes_isLoose=!0,this}}),r}var R=function(){function e(){}return e.extend=function(e){var t=this;if(h(e))return e.forEach(function(e){return t.extend(e)}),this;var n=e.name,r=e.validate,o=void 0!==r&&r,i=e.getter,a=void 0!==i&&i,f=u(e,["name","validate","getter"]);if(d(this,n))throw new TypeError('[VueTypes error]: Type "'+n+'" already defined');var c,l=f.type;return g(l)?(delete f.type,Object.defineProperty(this,n,a?{get:function(){return k(n,l,f)}}:{value:function(){var e,t=k(n,l,f);return t.validator&&(t.validator=(e=t.validator).bind.apply(e,[t].concat([].slice.call(arguments)))),t}})):(c=a?{get:function(){var e=Object.assign({},f);return o?w(n,e):T(n,e)},enumerable:!0}:{value:function(){var e,t,r=Object.assign({},f);return e=o?w(n,r):T(n,r),r.validator&&(e.validator=(t=r.validator).bind.apply(t,[e].concat([].slice.call(arguments)))),e},enumerable:!0},Object.defineProperty(this,n,c))},r(e,null,[{key:"any",get:function(){return P()}},{key:"func",get:function(){return x().def(this.defaults.func)}},{key:"bool",get:function(){return A().def(this.defaults.bool)}},{key:"string",get:function(){return q().def(this.defaults.string)}},{key:"number",get:function(){return S().def(this.defaults.number)}},{key:"array",get:function(){return V().def(this.defaults.array)}},{key:"object",get:function(){return E().def(this.defaults.object)}},{key:"integer",get:function(){return N().def(this.defaults.integer)}},{key:"symbol",get:function(){return F()}}]),e}();function z(e){var t;return void 0===e&&(e={func:function(){},bool:!0,string:"",number:0,array:function(){return[]},object:function(){return{}},integer:0}),(t=function(t){function n(){return t.apply(this,arguments)||this}return i(n,t),r(n,null,[{key:"sensibleDefaults",get:function(){return o({},this.defaults)},set:function(t){this.defaults=!1!==t?o({},!0!==t?t:e):{}}}]),n}(R)).defaults=o({},e),t}R.defaults={},R.custom=L,R.oneOf=Y,R.instanceOf=I,R.oneOfType=B,R.arrayOf=D,R.objectOf=J,R.shape=M,R.utils={validate:function(e,t){return!0===_(t,e,!0)},toType:function(e,t,n){return void 0===n&&(n=!1),n?w(e,t):T(e,t)}};var C=function(e){function t(){return e.apply(this,arguments)||this}return i(t,e),t}(z());e.any=P,e.array=V,e.arrayOf=D,e.bool=A,e.createTypes=z,e.custom=L,e.default=C,e.fromType=k,e.func=x,e.instanceOf=I,e.integer=N,e.number=S,e.object=E,e.objectOf=J,e.oneOf=Y,e.oneOfType=B,e.shape=M,e.string=q,e.symbol=F,e.toType=T,e.toValidableType=w,e.validateType=_});
//# sourceMappingURL=vue-types.umd.js.map
{
"name": "vue-types",
"version": "2.0.0-alpha.1",
"version": "2.0.0-rc.0",
"description": "Prop types utility for Vue",

@@ -28,6 +28,7 @@ "author": "Marco Solazzi",

"scripts": {
"prepublishOnly": "npm run build",
"build": "run-s build:clean build:ts build:umd",
"prepublishOnly": "run-s lint test build",
"build": "run-s build:clean build:copy build:ts build:umd",
"build:clean": "del dist",
"build:ts": "microbundle --external=vue --tsconfig=./tsconfig.build.json --format=modern,esm,cjs",
"build:copy": "cpy src/*.d.ts dist",
"build:ts": "microbundle --external=vue --tsconfig=./tsconfig.build.json --format=modern,es,cjs",
"build:umd": "cross-env NODE_ENV=production microbundle --external=vue --tsconfig=./tsconfig.build.json --format=umd",

@@ -37,5 +38,7 @@ "test": "karma start karma.conf.js --single-run --browsers ChromeHeadless",

"lint": "eslint src/*.ts test/*.ts",
"build:examples": "node ./scripts/build-examples.js",
"serve": "sirv",
"examples": "run-s build:examples serve"
"build:examples": "cross-env NODE_ENV=production node ./scripts/build-examples.js",
"serve": "sirv examples",
"examples": "run-s build:examples serve",
"docs:dev": "vuepress dev docs",
"docs:build": "vuepress build docs"
},

@@ -52,41 +55,41 @@ "keywords": [

"peerDependencies": {
"vue": "*"
"vue": "^2.0.0"
},
"devDependencies": {
"@babel/plugin-proposal-nullish-coalescing-operator": "7.10.1",
"@babel/plugin-proposal-optional-chaining": "7.10.1",
"@types/mocha": "7.0.2",
"@types/node": "13.13.4",
"@typescript-eslint/eslint-plugin": "2.30.0",
"@typescript-eslint/parser": "2.30.0",
"@babel/plugin-proposal-nullish-coalescing-operator": "7.10.4",
"@babel/plugin-proposal-optional-chaining": "7.10.4",
"@types/jasmine": "3.5.11",
"@types/node": "14.0.23",
"@typescript-eslint/eslint-plugin": "3.6.1",
"@typescript-eslint/parser": "3.6.1",
"babel-plugin-transform-node-env-inline": "0.4.3",
"core-js": "3.6.5",
"cpy-cli": "3.1.1",
"cross-env": "7.0.2",
"del": "5.1.0",
"del-cli": "3.0.1",
"eslint": "6.8.0",
"eslint": "7.4.0",
"eslint-config-prettier": "6.11.0",
"eslint-plugin-node": "11.1.0",
"eslint-plugin-prettier": "3.1.3",
"eslint-plugin-prettier": "3.1.4",
"eslint-plugin-vue": "6.2.2",
"expect": "1.20.2",
"karma": "5.0.4",
"jasmine": "3.5.0",
"karma": "5.1.0",
"karma-chrome-launcher": "3.1.0",
"karma-mocha": "2.0.1",
"karma-mocha-reporter": "2.2.5",
"karma-sauce-launcher": "4.1.4",
"karma-jasmine": "3.3.1",
"karma-sauce-launcher": "4.1.5",
"karma-typescript": "5.0.3",
"karma-typescript-es6-transform": "5.0.3",
"microbundle": "0.12.0",
"mocha": "7.1.2",
"microbundle": "0.12.3",
"npm-run-all": "4.1.5",
"prettier": "2.0.5",
"puppeteer": "3.0.2",
"sirv-cli": "1.0.0",
"typescript": "3.9.5",
"vue": "2.6.11",
"vue-class-component": "7.2.3"
"puppeteer": "5.1.0",
"sirv-cli": "1.0.3",
"typescript": "3.9.6",
"vue": "^2.0.0",
"vue-class-component": "7.2.3",
"vuepress": "1.5.2"
},
"dependencies": {
"is-plain-object": "3.0.0"
"is-plain-object": "3.0.1"
},

@@ -93,0 +96,0 @@ "browserslist": [

@@ -176,3 +176,3 @@ # vue-types

- a `isRequired` flag to set the `required: true` key.
- a `validate(function)` method to set a custom validator function (not available in `.integer`).
- a `validate(function)` method to set a custom validator function (not available in `.integer` and `symbol`).

@@ -179,0 +179,0 @@ ```js

@@ -20,4 +20,5 @@ {

"@typescript-eslint/explicit-function-return-type": 0,
"@typescript-eslint/no-explicit-any": 0
"@typescript-eslint/no-explicit-any": 0,
"@typescript-eslint/explicit-module-boundary-types": 0
}
}

@@ -16,5 +16,7 @@ import {

VueTypeValidableDef,
VueTypeShape,
VueTypeLooseShape,
} from './types'
import { typeDefaults } from './sensibles'
import { PropOptions } from 'vue'
import { PropOptions } from './types'

@@ -43,2 +45,4 @@ import {

static sensibleDefaults: Partial<VueTypesDefaults> | boolean
static get any() {

@@ -153,3 +157,3 @@ return any()

validate<T, U>(value: T, type: U) {
return validateType<U, T>(type, value, true)
return validateType<U, T>(type, value, true) === true
},

@@ -214,2 +218,3 @@ toType<T = unknown>(

export { VueTypeDef, VueTypeValidableDef }
export type VueTypesInterface = ReturnType<typeof createTypes>
export { VueTypeDef, VueTypeValidableDef, VueTypeShape, VueTypeLooseShape }
import Vue from 'vue'
import isPlainObject from 'is-plain-object'
import { typeDefaults } from './sensibles'
import {
PropOptions,
VueTypeDef,
VueTypeShape,
VueTypeValidableDef,
VueTypesDefaults,
} from './types'
import { VueTypesDefaults } from './types'
export { VueTypeDef, VueTypeValidableDef } from './types'
const dfn = Object.defineProperty

@@ -20,5 +14,4 @@

function type(name: string, props: PropOptions<any>, validable = false) {
function type<T = any>(name: string, props: any = {}, validable = false): T {
const descriptors: PropertyDescriptorMap = {
// eslint-disable-next-line @typescript-eslint/camelcase
_vueTypes_name: {

@@ -70,96 +63,91 @@ value: name,

const typeMap = {
func: Function,
bool: Boolean,
string: String,
number: Number,
array: Array,
object: Object,
arrayOf: Array,
objectOf: Object,
shape: Object,
}
export const any = () => type('any', {}, true)
export const func = <T = any>() => type<T>('func', { type: Function }, true)
export const bool = () => type('bool', { type: Boolean }, true)
export const string = () => type('string', { type: String }, true)
export const number = () => type('number', { type: Number }, true)
export const array = <T = any>() => type<T>('array', { type: Array }, true)
export const object = <T = any>() => type<T>('object', { type: Object }, true)
export const symbol = () => type('symbol')
export const integer = () => type('integer', { type: Number })
/* eslint-disable @typescript-eslint/no-unused-vars */
export const oneOf = <T = any>(a: any) => type<T>('oneOf')
export const custom = <T = any>(a: any) => type<T>('custom')
export const instanceOf = <T = any>(Constr: any) =>
type<T>('instanceOf', { type: Constr })
export const oneOfType = <T = any>(a: any) => type<T>('oneOfType')
export const arrayOf = <T = any>(a: any) => type<T>('arrayOf', { type: Array })
const getters = [
'any',
'func',
'bool',
'string',
'number',
'array',
'object',
'symbol',
]
const methods = [
'oneOf',
'custom',
'instanceOf',
'oneOfType',
'arrayOf',
'objectOf',
]
export const objectOf = <T = any>(a: any) =>
type<T>('objectOf', { type: Object })
export const shape = <T = any>(a: any) =>
dfn(
type<T>('shape', { type: Object }),
'loose',
{
get() {
return this
},
},
)
/* eslint-enable @typescript-eslint/no-unused-vars */
class BaseVueTypes {
static defaults: Partial<VueTypesDefaults> = {}
function createValidator(
root: any,
name: string,
props: any,
getter = false,
validable = false,
) {
const prop = getter ? 'get' : 'value'
const descr = {
[prop]: () =>
type(name, props, validable).def(
getter ? root.defaults[name] : undefined,
),
}
static any: VueTypeValidableDef<any>
static func: VueTypeValidableDef<Function>
static bool: VueTypeValidableDef<boolean>
static string: VueTypeValidableDef<string>
static number: VueTypeValidableDef<number>
static array: VueTypeValidableDef<unknown[]>
static object: VueTypeValidableDef<{ [key: string]: any }>
static symbol: VueTypeValidableDef<symbol>
static integer: VueTypeDef<number>
static oneOf: (arr: any[]) => VueTypeDef<any>
static custom: (fn: (v: any) => boolean) => VueTypeDef<any>
static instanceOf: (i: any) => VueTypeDef<any>
static oneOfType: (arr: any[]) => VueTypeDef<any>
static arrayOf: (t: any) => VueTypeDef<any>
static objectOf: (t: any) => VueTypeDef<any>
static shape: (o: any) => VueTypeShape<any>
static extend: (props: any) => any
static utils = {
toType: type as (
...args: any[]
) => VueTypeDef<any> | VueTypeValidableDef<any>,
validate: (...args: any[]) => !!args,
}
return dfn(root, name, descr)
}
function enhanceClass(vueTypeClass: typeof BaseVueTypes) {
function createValidator(
root: any,
name: string,
props: PropOptions<any>,
getter = false,
validable = false,
) {
const prop = getter ? 'get' : 'value'
const descr = {
[prop]: () =>
type(name, props, validable).def(
getter ? (vueTypeClass as any).sensibleDefaults[name] : undefined,
),
}
class BaseVueTypes {
static defaults: Partial<VueTypesDefaults> = {}
return dfn(root, name, descr)
}
static sensibleDefaults: Partial<VueTypesDefaults> | boolean
function recurseValidator(
root: typeof vueTypeClass,
getter: boolean,
validable = false,
) {
return (name: string) =>
createValidator(
root,
name,
{ type: typeMap[name] || null },
getter,
validable,
)
static get any() {
return any()
}
vueTypeClass.extend = function extend(props) {
static get func() {
return func().def(this.defaults.func)
}
static get bool() {
return bool().def(this.defaults.bool)
}
static get string() {
return string().def(this.defaults.string)
}
static get number() {
return number().def(this.defaults.number)
}
static get array() {
return array().def(this.defaults.array)
}
static get object() {
return object().def(this.defaults.object)
}
static get symbol() {
return symbol()
}
static get integer() {
return integer().def(this.defaults.integer)
}
static oneOf = oneOf
static custom = custom
static instanceOf = instanceOf
static oneOfType = oneOfType
static arrayOf = arrayOf
static objectOf = objectOf
static shape = shape
static extend<T = any>(props): T {
const { name, validate, getter = false, type = null } = props

@@ -170,42 +158,28 @@ // If we are inheriting from a custom type, let's ignore the type property

}
getters.forEach(recurseValidator(vueTypeClass, true, true))
methods.forEach(recurseValidator(vueTypeClass, false))
createValidator(vueTypeClass, 'integer', { type: Number }, true) // does not have a validate method
dfn(vueTypeClass, 'shape', {
value() {
return dfn(type('shape', { type: Object }), 'loose', {
get() {
return this
},
})
},
})
return vueTypeClass
static utils = {
toType: type as (...args: any[]) => any,
validate: (...args: any[]) => !!args,
}
}
export function createTypes(defs: Partial<VueTypesDefaults> = typeDefaults()) {
return enhanceClass(
class extends BaseVueTypes {
static defaults = { ...defs }
return class extends BaseVueTypes {
static defaults = { ...defs }
static get sensibleDefaults() {
return { ...this.defaults }
}
static get sensibleDefaults() {
return { ...this.defaults }
}
static set sensibleDefaults(v: boolean | Partial<VueTypesDefaults>) {
if (v === false) {
this.defaults = {}
return
}
if (v === true) {
this.defaults = { ...defs }
return
}
this.defaults = { ...v }
static set sensibleDefaults(v: boolean | Partial<VueTypesDefaults>) {
if (v === false) {
this.defaults = {}
return
}
},
)
if (v === true) {
this.defaults = { ...defs }
return
}
this.defaults = { ...v }
}
}
}

@@ -222,24 +196,2 @@

class VueTypes extends BaseVueTypes {
static defaults: Partial<VueTypesDefaults> = typeDefaults()
static get sensibleDefaults() {
return { ...this.defaults }
}
static set sensibleDefaults(v: boolean | Partial<VueTypesDefaults>) {
if (v === false) {
this.defaults = {}
return
}
if (v === true) {
this.defaults = typeDefaults()
return
}
this.defaults = { ...v }
}
}
enhanceClass(VueTypes)
export default VueTypes
export default class VueTypes extends createTypes() {}

@@ -44,4 +44,11 @@ import _isPlainObject from 'is-plain-object'

let warn: (msg: string) => void = noop
/**
* A function that returns its first argument
*
* @param arg - Any argument
*/
export const identity = (arg: any) => arg
let warn: (msg: string) => string | void = identity
if (process.env.NODE_ENV !== 'production') {

@@ -54,3 +61,3 @@ const hasConsole = typeof console !== 'undefined'

}
: noop
: identity
}

@@ -66,3 +73,3 @@

*/
export const has = <T extends object, U extends keyof T>(obj: T, prop: U) =>
export const has = <T extends any, U extends keyof T>(obj: T, prop: U) =>
hasOwn.call(obj, prop)

@@ -105,5 +112,10 @@

*/
// eslint-disable-next-line @typescript-eslint/ban-types
export const isFunction = (value: unknown): value is Function =>
toString.call(value) === '[object Function]'
/**
* Checks if the passed-in value is a VueTypes type
* @param value - The value to check
*/
export const isVueTypeDef = <T>(

@@ -114,2 +126,6 @@ value: any,

/**
* Checks if the passed-in value is a Vue prop definition object or a VueTypes type
* @param value - The value to check
*/
export const isComplexType = <T>(value: any): value is VueProp<T> =>

@@ -127,2 +143,8 @@ isPlainObject(value) &&

/**
* Binds a function to a context and saves a reference to the original.
*
* @param fn - Target function
* @param ctx - New function context
*/
export function bindTo(fn: (...args: any[]) => any, ctx: any): WrappedFn {

@@ -134,2 +156,9 @@ return Object.defineProperty(fn.bind(ctx), '__original', {

/**
* Returns the original function bounded with `bindTo`. If the passed-in function
* has not be bound, the function itself will be returned instead.
*
* @param fn - Function to unwrap
*/
// eslint-disable-next-line @typescript-eslint/ban-types
export function unwrap<T extends WrappedFn | Function>(fn: T) {

@@ -140,4 +169,7 @@ return (fn as WrappedFn).__original ?? fn

/**
* Validates a given value against a prop type object
* Validates a given value against a prop type object.
*
* If `silent` is `false` (default) will return a boolean. If it is set to `true`
* it will return `true` on success or a string error message on failure
*
* @param {Object|*} type - Type to use for validation. Either a type object or a constructor

@@ -147,3 +179,7 @@ * @param {*} value - Value to check

*/
export function validateType<T, U>(type: T, value: U, silent = false) {
export function validateType<T, U>(
type: T,
value: U,
silent = false,
): string | boolean {
let typeToCheck: { [key: string]: any }

@@ -171,4 +207,4 @@ let valid = true

} else if (isArray(typeToCheck.type)) {
valid = typeToCheck.type.some((type: any) =>
validateType(type, value, true),
valid = typeToCheck.type.some(
(type: any) => validateType(type, value, true) === true,
)

@@ -199,21 +235,29 @@ expectedType = typeToCheck.type

if (!valid) {
silent === false &&
warn(`${namePrefix}value "${value}" should be of type "${expectedType}"`)
return false
const msg = `${namePrefix}value "${value}" should be of type "${expectedType}"`
if (silent === false) {
warn(msg)
return false
}
return msg
}
if (has(typeToCheck, 'validator') && isFunction(typeToCheck.validator)) {
// swallow warn
let oldWarn: any
if (silent) {
oldWarn = warn
warn = noop
const oldWarn = warn
const warnLog = []
warn = (msg) => {
warnLog.push(msg)
}
valid = typeToCheck.validator(value)
oldWarn && (warn = oldWarn)
warn = oldWarn
if (!valid && silent === false)
warn(`${namePrefix}custom validation failed`)
return valid
if (!valid) {
const msg = '* ' + warnLog.join('\n* ')
warnLog.length = 0
if (silent === false) {
warn(msg)
return valid
}
return msg
}
}

@@ -231,3 +275,2 @@ return valid

const type: VueTypeDef<T> = Object.defineProperties(obj, {
// eslint-disable-next-line @typescript-eslint/camelcase
_vueTypes_name: {

@@ -248,3 +291,3 @@ value: name,

}
if (!isFunction(def) && !validateType(this, def)) {
if (!isFunction(def) && validateType(this, def, true) !== true) {
warn(`${this._vueTypes_name} - invalid default value: "${def}"`)

@@ -283,2 +326,11 @@ return this

value(fn: (value: T) => boolean) {
if (isFunction(this.validator)) {
warn(
`${
this._vueTypes_name
} - calling .validate() will overwrite the current custom validator function. Validator info:\n${JSON.stringify(
this,
)}`,
)
}
this.validator = bindTo(fn, this)

@@ -290,6 +342,12 @@ return this

export function clone<T extends object>(type: T): T {
/**
* Clones an object preserving all of it's own keys.
*
* @param obj - Object to clone
*/
// eslint-disable-next-line @typescript-eslint/ban-types
export function clone<T extends object>(obj: T): T {
const descriptors = {} as { [P in keyof T]: any }
Object.getOwnPropertyNames(type).forEach((key) => {
descriptors[key as keyof T] = Object.getOwnPropertyDescriptor(type, key)
Object.getOwnPropertyNames(obj).forEach((key) => {
descriptors[key as keyof T] = Object.getOwnPropertyDescriptor(obj, key)
})

@@ -299,16 +357,32 @@ return Object.defineProperties({}, descriptors)

export function fromType<T extends VueTypeDef<any>, U = InferType<T>>(
name: string,
source: T,
props = {} as PropOptions<U>,
): VueTypeDef<U> {
const { validator, ...rest } = props
/**
* Return a new VueTypes type using another type as base.
*
* Properties in the `props` object will overwrite those defined in the source one
* expect for the `validator` function. In that case both functions will be executed in series.
*
* @param name - Name of the new type
* @param source - Source type
* @param props - Custom type properties
*/
export function fromType<T extends VueTypeDef<any>>(name: string, source: T): T
export function fromType<
T extends VueTypeDef<any>,
V extends PropOptions<InferType<T>>
>(name: string, source: T, props: V): Omit<T, keyof V> & V
export function fromType<
T extends VueTypeDef<any>,
V extends PropOptions<InferType<T>>
>(name: string, source: T, props?: V) {
// 1. create an exact copy of the source type
const copy = clone<VueTypeDef<U>>(source)
const copy = clone(source)
// 2. give it a new name
// eslint-disable-next-line @typescript-eslint/camelcase
copy._vueTypes_name = name
if (!isPlainObject(props)) {
return copy
}
const { validator, ...rest } = props
// 3. compose the validator function

@@ -326,3 +400,3 @@ // with the one on the source (if present)

prevValidator
? function (this: VueTypeDef<U>, value: any) {
? function (this: T, value: any) {
return (

@@ -337,3 +411,3 @@ prevValidator.call(this, value) && validator.call(this, value)

// 4. overwrite the rest, if present
return Object.assign(copy, rest)
return Object.assign(copy, rest as V)
}
import { Prop, VueProp, InferType } from '../types'
import { getType, toType, validateType, warn } from '../utils'
export default function arrayOf<
T extends VueProp<any> | Prop<any>,
U = InferType<T>
>(type: T) {
return toType<U[]>('arrayOf', {
export default function arrayOf<T extends VueProp<any> | Prop<any>>(type: T) {
return toType<InferType<T>[]>('arrayOf', {
type: Array,

@@ -10,0 +7,0 @@ validator(values: any[]) {

import { toType, toValidableType, isInteger } from '../utils'
import { PropType } from '../types'
export const any = () => toValidableType('any', {})
export const func = <T extends Function>() =>
export const func = <T extends (...args: any[]) => any>() =>
toValidableType<T>('function', {
type: Function,
type: Function as PropType<T>,
})

@@ -44,3 +45,3 @@

export const symbol = () =>
toValidableType<symbol>('symbol', {
toType<symbol>('symbol', {
validator(value) {

@@ -47,0 +48,0 @@ return typeof value === 'symbol'

import { Prop, VueProp, InferType } from '../types'
import { getType, toType, validateType, warn } from '../utils'
export default function objectOf<
T extends VueProp<any> | Prop<any>,
U = InferType<T>
>(type: T) {
return toType<{ [key: string]: U }>('objectOf', {
export default function objectOf<T extends VueProp<any> | Prop<any>>(type: T) {
return toType<{ [key: string]: InferType<T> }>('objectOf', {
type: Object,

@@ -10,0 +7,0 @@ validator(obj) {

import { Prop } from '../types'
import { toType, warn, isArray } from '../utils'
export default function oneOf<T extends readonly any[], U = T[number]>(arr: T) {
export default function oneOf<T extends readonly any[]>(arr: T) {
if (!isArray(arr)) {
throw new TypeError(
'[VueTypes error]: You must provide an array as argument',
'[VueTypes error]: You must provide an array as argument.',
)
}
const msg = `oneOf - value should be one of "${arr.join('", "')}"`
const msg = `oneOf - value should be one of "${arr.join('", "')}."`
const allowedTypes = arr.reduce((ret, v) => {

@@ -17,5 +17,5 @@ if (v !== null && v !== undefined) {

return ret
}, [] as Prop<U>[])
}, [] as Prop<T[number]>[])
return toType<U>('oneOf', {
return toType<T[number]>('oneOf', {
type: allowedTypes.length > 0 ? allowedTypes : undefined,

@@ -22,0 +22,0 @@ validator(value) {

@@ -30,8 +30,4 @@ import { Prop, VueProp, InferType } from '../types'

if (isComplexType<V>(type)) {
if (
isVueTypeDef<V>(type) &&
type._vueTypes_name === 'oneOf' &&
type.type
) {
nativeChecks = nativeChecks.concat(type.type)
if (isVueTypeDef<V>(type) && type._vueTypes_name === 'oneOf') {
nativeChecks = nativeChecks.concat(type.type || [])
continue

@@ -41,5 +37,4 @@ }

hasCustomValidators = true
continue
}
if (type.type) {
if (typeof type.type !== 'undefined') {
nativeChecks = nativeChecks.concat(type.type)

@@ -52,2 +47,5 @@ continue

// filter duplicates
nativeChecks = nativeChecks.filter((t, i) => nativeChecks.indexOf(t) === i)
if (!hasCustomValidators) {

@@ -61,23 +59,16 @@ // we got just native objects (ie: Array, Object)

const typesStr = arr
.reduce<string[]>(
(ret, type) =>
ret.concat(
isComplexType<V>(type) && isArray((type as any).type)
? (type as any).type.map(getType)
: getType(type),
),
[],
)
.join('", "')
return toType<V>('oneOfType', {
type: nativeChecks,
validator(value) {
const valid = arr.some((type) => {
if (isVueTypeDef(type) && type._vueTypes_name === 'oneOf') {
return type.type ? validateType(type.type, value, true) : true
}
return validateType(type, value, true)
const t =
isVueTypeDef(type) && type._vueTypes_name === 'oneOf'
? type.type || null
: type
return validateType(t, value, true) === true
})
if (!valid) warn(`oneOfType - value type should be one of "${typesStr}"`)
if (!valid)
warn(
`oneOfType - value "${value}" does not match any of the passed-in validators.`,
)
return valid

@@ -84,0 +75,0 @@ },

@@ -5,3 +5,3 @@ import { Prop, VueProp, VueTypeShape, VueTypeLooseShape } from '../types'

export default function shape<T extends object>(
obj: { [K in keyof T]?: Prop<T[K]> | VueProp<T[K]> },
obj: { [K in keyof T]: Prop<T[K]> | VueProp<T[K]> },
): VueTypeShape<T> {

@@ -24,7 +24,15 @@ const keys = Object.keys(obj)

) {
warn(
`shape - at least one of required properties "${requiredKeys.join(
'", "',
)}" is not present`,
const missing = requiredKeys.filter(
(req) => valueKeys.indexOf(req) === -1,
)
if (missing.length === 1) {
warn(`shape - required property "${missing[0]}" is not defined.`)
} else {
warn(
`shape - required properties "${missing.join(
'", "',
)}" are not defined.`,
)
}
return false

@@ -37,7 +45,15 @@ }

return true
warn(`shape - object is missing "${key}" property`)
warn(
`shape - shape definition does not include a "${key}" property. Allowed keys: "${keys.join(
'", "',
)}".`,
)
return false
}
const type = (obj as any)[key]
return validateType(type, value[key])
const valid = validateType(type, value[key], true)
if (typeof valid === 'string') {
warn(`shape - "${key}" property validation error:\n${valid}`)
}
return valid === true
})

@@ -44,0 +60,0 @@ },

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet