vue-types
Version:
Prop types utility for Vue
1 lines • 45.7 kB
Source Map (JSON)
{"version":3,"file":"index.cjs","sources":["../src/utils.ts","../src/validators/native.ts","../src/validators/custom.ts","../src/validators/oneof.ts","../src/validators/oneoftype.ts","../src/validators/arrayof.ts","../src/validators/instanceof.ts","../src/validators/objectof.ts","../src/validators/shape.ts","../src/index.ts"],"sourcesContent":["import './global-this'\nimport { config } from './config'\nimport {\n VueTypeDef,\n VueTypeValidableDef,\n VueProp,\n InferType,\n PropOptions,\n VueTypesConfig,\n ValidatorFunction,\n} from './types'\nimport { isPlainObject } from './is-plain-obj'\n\nexport { isPlainObject }\n\nconst ObjProto = Object.prototype\nconst toString = ObjProto.toString\nexport const hasOwn = ObjProto.hasOwnProperty\n\nconst FN_MATCH_REGEXP = /^\\s*function (\\w+)/\n\n// https://github.com/vuejs/vue/blob/dev/src/core/util/props.js#L177\nexport function getType(\n fn: VueProp<any> | (() => any) | (new (...args: any[]) => any),\n): string {\n const type = (fn as VueProp<any>)?.type ?? fn\n if (type) {\n const match = type.toString().match(FN_MATCH_REGEXP)\n return match ? match[1] : ''\n }\n return ''\n}\n\nexport function getNativeType(value: any): string {\n if (value === null || value === undefined) return ''\n const match = value.constructor.toString().match(FN_MATCH_REGEXP)\n return match ? match[1].replace(/^Async/, '') : ''\n}\n\nexport function deepClone<T>(input: T): T {\n if ('structuredClone' in globalThis) {\n return structuredClone(input)\n }\n if (Array.isArray(input)) {\n return [...input] as T\n }\n if (isPlainObject(input)) {\n return Object.assign({}, input)\n }\n return input\n}\n\n/**\n * No-op function\n */\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport function noop() {}\n\n/**\n * A function that returns its first argument\n *\n * @param arg - Any argument\n */\nexport const identity = (arg: any) => arg\n\nlet warn: (msg: string, level?: VueTypesConfig['logLevel']) => void = noop\n\nif (process.env.NODE_ENV !== 'production') {\n const hasConsole = typeof console !== 'undefined'\n warn = hasConsole\n ? function warn(msg: string, level = config.logLevel) {\n if (config.silent === false) {\n console[level](`[VueTypes warn]: ${msg}`)\n }\n }\n : noop\n}\n\nexport { warn }\n\n/**\n * Checks for a own property in an object\n *\n * @param {object} obj - Object\n * @param {string} prop - Property to check\n */\nexport const has = <T, U extends keyof T>(obj: T, prop: U) =>\n hasOwn.call(obj, prop)\n\n/**\n * Determines whether the passed value is an integer. Uses `Number.isInteger` if available\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger\n * @param {*} value - The value to be tested for being an integer.\n * @returns {boolean}\n */\nexport const isInteger =\n Number.isInteger ||\n function isInteger(value: unknown): value is number {\n return (\n typeof value === 'number' &&\n isFinite(value) &&\n Math.floor(value) === value\n )\n }\n\n/**\n * Determines whether the passed value is an Array.\n *\n * @param {*} value - The value to be tested for being an array.\n * @returns {boolean}\n */\nexport const isArray =\n Array.isArray ||\n function isArray(value): value is any[] {\n return toString.call(value) === '[object Array]'\n }\n\n/**\n * Checks if a value is a function\n *\n * @param {any} value - Value to check\n * @returns {boolean}\n */\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nexport const isFunction = <T extends Function>(value: unknown): value is T =>\n toString.call(value) === '[object Function]'\n\n/**\n * Checks if the passed-in value is a VueTypes type\n * @param value - The value to check\n * @param name - Optional validator name\n */\nexport const isVueTypeDef = <T>(\n value: any,\n name?: string,\n): value is VueTypeDef<T> | VueTypeValidableDef<T> =>\n isPlainObject(value) &&\n has(value, '_vueTypes_name') &&\n (!name || value._vueTypes_name === name)\n\n/**\n * Checks if the passed-in value is a Vue prop definition object or a VueTypes type\n * @param value - The value to check\n */\nexport const isComplexType = <T>(value: any): value is VueProp<T> =>\n isPlainObject(value) &&\n (has(value, 'type') ||\n ['_vueTypes_name', 'validator', 'default', 'required'].some((k) =>\n has(value, k),\n ))\n\nexport interface WrappedFn {\n (...args: any[]): any\n __original: (...args: any[]) => any\n}\n\n/**\n * Binds a function to a context and saves a reference to the original.\n *\n * @param fn - Target function\n * @param ctx - New function context\n */\nexport function bindTo(fn: (...args: any[]) => any, ctx: any): WrappedFn {\n return Object.defineProperty(fn.bind(ctx) as WrappedFn, '__original', {\n value: fn,\n })\n}\n\n/**\n * Returns the original function bounded with `bindTo`. If the passed-in function\n * has not be bound, the function itself will be returned instead.\n *\n * @param fn - Function to unwrap\n */\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nexport function unwrap<T extends WrappedFn | Function>(fn: T) {\n return (fn as WrappedFn).__original ?? fn\n}\n\n/**\n * Validates a given value against a prop type object.\n *\n * If `silent` is `false` (default) will return a boolean. If it is set to `true`\n * it will return `true` on success or a string error message on failure\n *\n * @param {Object|*} type - Type to use for validation. Either a type object or a constructor\n * @param {*} value - Value to check\n * @param {boolean} silent - Silence warnings\n */\nexport function validateType<T, U>(\n type: T,\n value: U,\n silent = false,\n): string | boolean {\n let typeToCheck: Record<string, any>\n let valid = true\n let expectedType = ''\n if (!isPlainObject(type)) {\n typeToCheck = { type }\n } else {\n typeToCheck = type\n }\n const namePrefix = isVueTypeDef(typeToCheck)\n ? typeToCheck._vueTypes_name + ' - '\n : ''\n\n if (isComplexType(typeToCheck) && typeToCheck.type !== null) {\n if (typeToCheck.type === undefined || typeToCheck.type === true) {\n return valid\n }\n if (!typeToCheck.required && value == null) {\n return valid\n }\n if (isArray(typeToCheck.type)) {\n valid = typeToCheck.type.some(\n (type: any) => validateType(type, value, true) === true,\n )\n expectedType = typeToCheck.type\n .map((type: any) => getType(type))\n .join(' or ')\n } else {\n expectedType = getType(typeToCheck)\n\n if (expectedType === 'Array') {\n valid = isArray(value)\n } else if (expectedType === 'Object') {\n valid = isPlainObject(value)\n } else if (\n expectedType === 'String' ||\n expectedType === 'Number' ||\n expectedType === 'Boolean' ||\n expectedType === 'Function'\n ) {\n valid = getNativeType(value) === expectedType\n } else {\n valid = value instanceof typeToCheck.type\n }\n }\n }\n\n if (!valid) {\n const msg = `${namePrefix}value \"${value}\" should be of type \"${expectedType}\"`\n if (silent === false) {\n warn(msg)\n return false\n }\n return msg\n }\n\n if (has(typeToCheck, 'validator') && isFunction(typeToCheck.validator)) {\n const oldWarn = warn\n const warnLog: string[] = []\n warn = (msg) => {\n warnLog.push(msg)\n }\n\n valid = typeToCheck.validator(value)\n warn = oldWarn\n\n if (!valid) {\n const msg = (warnLog.length > 1 ? '* ' : '') + warnLog.join('\\n* ')\n warnLog.length = 0\n if (silent === false) {\n warn(msg)\n return valid\n }\n return msg\n }\n }\n return valid\n}\n\n/**\n * Adds `isRequired` and `def` modifiers to an object\n *\n * @param {string} name - Type internal name\n * @param {object} obj - Object to enhance\n */\nexport function toType<T = any>(name: string, obj: PropOptions<T>) {\n const type: VueTypeDef<T> = Object.defineProperties(obj as VueTypeDef<T>, {\n _vueTypes_name: {\n value: name,\n writable: true,\n },\n isRequired: {\n get() {\n this.required = true\n return this\n },\n },\n def: {\n value(def?: any) {\n if (def === undefined) {\n if (\n this.type === Boolean ||\n (Array.isArray(this.type) && this.type.includes(Boolean))\n ) {\n this.default = undefined\n return\n }\n if (has(this, 'default')) {\n delete this.default\n }\n return this\n }\n if (!isFunction(def) && validateType(this, def, true) !== true) {\n warn(`${this._vueTypes_name} - invalid default value: \"${def}\"`)\n return this\n }\n if (isArray(def)) {\n this.default = () => deepClone(def)\n } else if (isPlainObject(def)) {\n this.default = () => deepClone(def)\n } else {\n this.default = def\n }\n return this\n },\n },\n })\n\n const { validator } = type\n if (isFunction(validator)) {\n type.validator = bindTo(validator, type)\n }\n\n return type\n}\n\n/**\n * Like `toType` but also adds the `validate()` method to the type object\n *\n * @param {string} name - Type internal name\n * @param {object} obj - Object to enhance\n */\nexport function toValidableType<T = any>(name: string, obj: PropOptions<T>) {\n const type = toType<T>(name, obj)\n return Object.defineProperty(type, 'validate', {\n value(fn: ValidatorFunction<T>) {\n if (isFunction(this.validator)) {\n warn(\n `${\n this._vueTypes_name\n } - calling .validate() will overwrite the current custom validator function. Validator info:\\n${JSON.stringify(\n this,\n )}`,\n )\n }\n this.validator = bindTo(fn, this)\n return this\n },\n }) as VueTypeValidableDef<T>\n}\n\n/**\n * Clones an object preserving all of it's own keys.\n *\n * @param obj - Object to clone\n */\n\nexport function clone<T extends object>(obj: T): T {\n const descriptors = {} as { [P in keyof T]: any }\n Object.getOwnPropertyNames(obj).forEach((key) => {\n descriptors[key as keyof T] = Object.getOwnPropertyDescriptor(obj, key)\n })\n return Object.defineProperties({}, descriptors) as T\n}\n\n/**\n * Return a new VueTypes type using another type as base.\n *\n * Properties in the `props` object will overwrite those defined in the source one\n * expect for the `validator` function. In that case both functions will be executed in series.\n *\n * @param name - Name of the new type\n * @param source - Source type\n * @param props - Custom type properties\n */\nexport function fromType<T extends VueTypeDef<any>>(name: string, source: T): T\nexport function fromType<\n T extends VueTypeDef<any>,\n V extends PropOptions<InferType<T>>,\n>(name: string, source: T, props: V): Omit<T, keyof V> & V\nexport function fromType<\n T extends VueTypeDef<any>,\n V extends PropOptions<InferType<T>>,\n>(name: string, source: T, props?: V) {\n // 1. create an exact copy of the source type\n const copy = clone(source)\n\n // 2. give it a new name\n copy._vueTypes_name = name\n\n if (!isPlainObject(props)) {\n return copy\n }\n const { validator, ...rest } = props\n\n // 3. compose the validator function\n // with the one on the source (if present)\n // and ensure it is bound to the copy\n if (isFunction(validator)) {\n let { validator: prevValidator } = copy\n\n if (prevValidator) {\n prevValidator = unwrap(prevValidator) as (_v: any) => boolean\n }\n\n copy.validator = bindTo(\n prevValidator\n ? function (this: T, value: any, props: any) {\n return (\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n prevValidator!.call(this, value, props) &&\n validator.call(this, value, props)\n )\n }\n : validator,\n copy,\n )\n }\n // 4. overwrite the rest, if present\n return Object.assign(copy, rest as V)\n}\n\nexport function indent(string: string) {\n return string.replace(/^(?!\\s*$)/gm, ' ')\n}\n","import { toType, toValidableType, isInteger, warn } from '../utils'\nimport { PropOptions, PropType } from '../types'\n\nexport const any = <T = any>() => toValidableType<T>('any', {})\n\nexport const func = <T extends (...args: any[]) => any>() =>\n toValidableType<T>('function', {\n type: Function as PropType<T>,\n })\n\nexport const bool = () =>\n toValidableType('boolean', {\n type: Boolean,\n })\n\nexport const string = <T extends string = string>() =>\n toValidableType<T>('string', {\n type: String as unknown as PropType<T>,\n })\n\nexport const number = <T extends number = number>() =>\n toValidableType<T>('number', {\n type: Number as unknown as PropType<T>,\n })\n\nexport const array = <T>() =>\n toValidableType<T[]>('array', {\n type: Array,\n })\n\nexport const object = <T extends Record<string, any>>() =>\n toValidableType<T>('object', {\n type: Object,\n })\n\nexport const integer = <T extends number = number>() =>\n toType<T>('integer', {\n type: Number as unknown as PropType<T>,\n validator(value) {\n const res = isInteger(value)\n if (res === false) {\n warn(`integer - \"${value}\" is not an integer`)\n }\n return res\n },\n })\n\nexport const symbol = () =>\n toType<symbol>('symbol', {\n validator(value: unknown) {\n const res = typeof value === 'symbol'\n if (res === false) {\n warn(`symbol - invalid value \"${value}\"`)\n }\n return res\n },\n })\n\nexport const nullable = () =>\n Object.defineProperty(\n {\n type: null as unknown as PropType<null>,\n validator(value: unknown) {\n const res = value === null\n if (res === false) {\n warn(`nullable - value should be null`)\n }\n return res\n },\n },\n '_vueTypes_name',\n { value: 'nullable' },\n ) as PropOptions<null>\n","import { toType, warn } from '../utils'\nimport { ValidatorFunction, VueTypeDef, PropType } from '../types'\n\nexport default function custom<T>(\n validatorFn: ValidatorFunction<T>,\n warnMsg = 'custom validation failed',\n) {\n if (typeof validatorFn !== 'function') {\n throw new TypeError(\n '[VueTypes error]: You must provide a function as argument',\n )\n }\n\n return toType<T>(validatorFn.name || '<<anonymous function>>', {\n type: null as unknown as PropType<T>,\n validator(this: VueTypeDef<T>, value: T) {\n const valid = validatorFn(value)\n if (!valid) warn(`${this._vueTypes_name} - ${warnMsg}`)\n return valid\n },\n })\n}\n","import { Prop, PropOptions } from '../types'\nimport { toType, warn, isArray } from '../utils'\n\nexport default function oneOf<D, T extends readonly D[] = readonly D[]>(\n arr: T,\n) {\n if (!isArray(arr)) {\n throw new TypeError(\n '[VueTypes error]: You must provide an array as argument.',\n )\n }\n const msg = `oneOf - value should be one of \"${arr\n .map((v: any) => (typeof v === 'symbol' ? v.toString() : v))\n .join('\", \"')}\".`\n const base: PropOptions<T[number]> = {\n validator(value) {\n const valid = arr.indexOf(value) !== -1\n if (!valid) warn(msg)\n return valid\n },\n }\n if (arr.indexOf(null) === -1) {\n const type = arr.reduce(\n (ret, v) => {\n if (v !== null && v !== undefined) {\n const constr = (v as any).constructor\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n ret.indexOf(constr) === -1 && ret.push(constr)\n }\n return ret\n },\n [] as Prop<T[number]>[],\n )\n\n if (type.length > 0) {\n base.type = type\n }\n }\n\n return toType<T[number]>('oneOf', base)\n}\n","import { Prop, VueProp, InferType, PropType } from '../types'\nimport {\n isArray,\n isComplexType,\n isVueTypeDef,\n isFunction,\n toType,\n validateType,\n warn,\n indent,\n} from '../utils'\n\nexport default function oneOfType<\n D extends V,\n U extends VueProp<any> | Prop<any> = any,\n V = InferType<U>,\n>(arr: U[]) {\n if (!isArray(arr)) {\n throw new TypeError(\n '[VueTypes error]: You must provide an array as argument',\n )\n }\n\n let hasCustomValidators = false\n let hasNullable = false\n\n let nativeChecks: (Prop<V> | null)[] = []\n\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < arr.length; i += 1) {\n const type = arr[i]\n if (isComplexType<V>(type)) {\n if (isFunction(type.validator)) {\n hasCustomValidators = true\n }\n if (isVueTypeDef<V>(type, 'oneOf') && type.type) {\n nativeChecks = nativeChecks.concat(type.type as PropType<V>)\n continue\n }\n if (isVueTypeDef<V>(type, 'nullable')) {\n hasNullable = true\n continue\n }\n if (type.type === true || !type.type) {\n warn('oneOfType - invalid usage of \"true\" and \"null\" as types.')\n continue\n }\n nativeChecks = nativeChecks.concat(type.type)\n } else {\n nativeChecks.push(type as Prop<V>)\n }\n }\n\n // filter duplicates\n nativeChecks = nativeChecks.filter((t, i) => nativeChecks.indexOf(t) === i)\n\n const typeProp =\n hasNullable === false && nativeChecks.length > 0 ? nativeChecks : null\n\n if (!hasCustomValidators) {\n // we got just native objects (ie: Array, Object)\n // delegate to Vue native prop check\n return toType<D>('oneOfType', {\n type: typeProp as unknown as PropType<D>,\n })\n }\n\n return toType<D>('oneOfType', {\n type: typeProp as unknown as PropType<D>,\n validator(value) {\n const err: string[] = []\n const valid = arr.some((type) => {\n const res = validateType(type, value, true)\n if (typeof res === 'string') {\n err.push(res)\n }\n return res === true\n })\n\n if (!valid) {\n warn(\n `oneOfType - provided value does not match any of the ${\n err.length\n } passed-in validators:\\n${indent(err.join('\\n'))}`,\n )\n }\n\n return valid\n },\n })\n}\n","import { Prop, VueProp, InferType } from '../types'\nimport { toType, validateType, warn, indent } from '../utils'\n\nexport default function arrayOf<T extends VueProp<any> | Prop<any>>(type: T) {\n return toType<InferType<T>[]>('arrayOf', {\n type: Array,\n validator(values: any[]) {\n let vResult: string | boolean = ''\n const valid = values.every((value) => {\n vResult = validateType(type, value, true)\n return vResult === true\n })\n if (!valid) {\n warn(`arrayOf - value validation error:\\n${indent(vResult as string)}`)\n }\n return valid\n },\n })\n}\n","import { toType } from '../utils'\nimport { Constructor } from '../types'\n\nexport default function instanceOf<C extends Constructor>(\n instanceConstructor: C,\n) {\n return toType<InstanceType<C>>('instanceOf', {\n type: instanceConstructor,\n })\n}\n","import { Prop, VueProp, InferType } from '../types'\nimport { toType, validateType, warn, indent, isPlainObject } from '../utils'\n\nexport default function objectOf<T extends VueProp<any> | Prop<any>>(type: T) {\n return toType<Record<string, InferType<T>>>('objectOf', {\n type: Object,\n validator(obj) {\n let vResult: string | boolean = ''\n if (!isPlainObject(obj)) {\n return false\n }\n const valid = Object.keys(obj).every((key) => {\n vResult = validateType(type, obj[key], true)\n return vResult === true\n })\n\n if (!valid) {\n warn(`objectOf - value validation error:\\n${indent(vResult as string)}`)\n }\n return valid\n },\n })\n}\n","import { Prop, VueProp, VueTypeShape, VueTypeLooseShape } from '../types'\nimport { toType, validateType, warn, isPlainObject, indent } from '../utils'\n\nexport default function shape<T extends object>(obj: {\n [K in keyof T]: Prop<T[K]> | VueProp<T[K]>\n}): VueTypeShape<T> {\n const keys = Object.keys(obj)\n const requiredKeys = keys.filter((key) => !!(obj as any)[key]?.required)\n\n const type = toType('shape', {\n type: Object,\n validator(this: VueTypeShape<T> | VueTypeLooseShape<T>, value) {\n if (!isPlainObject(value)) {\n return false\n }\n const valueKeys = Object.keys(value)\n\n // check for required keys (if any)\n if (\n requiredKeys.length > 0 &&\n requiredKeys.some((req) => valueKeys.indexOf(req) === -1)\n ) {\n const missing = requiredKeys.filter(\n (req) => valueKeys.indexOf(req) === -1,\n )\n if (missing.length === 1) {\n warn(`shape - required property \"${missing[0]}\" is not defined.`)\n } else {\n warn(\n `shape - required properties \"${missing.join(\n '\", \"',\n )}\" are not defined.`,\n )\n }\n\n return false\n }\n\n return valueKeys.every((key) => {\n if (keys.indexOf(key) === -1) {\n if ((this as VueTypeLooseShape<T>)._vueTypes_isLoose === true)\n return true\n warn(\n `shape - shape definition does not include a \"${key}\" property. Allowed keys: \"${keys.join(\n '\", \"',\n )}\".`,\n )\n return false\n }\n const type = (obj as any)[key]\n const valid = validateType(type, value[key], true)\n if (typeof valid === 'string') {\n warn(`shape - \"${key}\" property validation error:\\n ${indent(valid)}`)\n }\n return valid === true\n })\n },\n }) as VueTypeShape<T>\n\n Object.defineProperty(type, '_vueTypes_isLoose', {\n writable: true,\n value: false,\n })\n\n Object.defineProperty(type, 'loose', {\n get() {\n this._vueTypes_isLoose = true\n return this\n },\n })\n\n return type\n}\n","import { toType, toValidableType, validateType, fromType, warn } from './utils'\n\nimport {\n VueTypesDefaults,\n VueTypeDef,\n VueTypeValidableDef,\n VueTypeShape,\n VueTypeLooseShape,\n} from './types'\nimport { typeDefaults } from './sensibles'\nimport { PropOptions } from './types'\n\nimport {\n any,\n func,\n bool,\n string,\n number,\n array,\n integer,\n symbol,\n object,\n nullable,\n} from './validators/native'\nimport custom from './validators/custom'\nimport oneOf from './validators/oneof'\nimport oneOfType from './validators/oneoftype'\nimport arrayOf from './validators/arrayof'\nimport instanceOf from './validators/instanceof'\nimport objectOf from './validators/objectof'\nimport shape from './validators/shape'\nimport { config } from './config'\n\nconst BaseVueTypes = /*#__PURE__*/ (() =>\n // eslint-disable-next-line @typescript-eslint/no-extraneous-class\n class BaseVueTypes {\n static defaults: Partial<VueTypesDefaults> = {}\n\n static sensibleDefaults: Partial<VueTypesDefaults> | boolean\n\n static config = config\n\n static get any() {\n return any()\n }\n static get func() {\n return func().def(this.defaults.func)\n }\n static get bool() {\n // prevent undefined to be explicitly set\n if (this.defaults.bool === undefined) {\n return bool()\n }\n return bool().def(this.defaults.bool)\n }\n static get string() {\n return string().def(this.defaults.string)\n }\n static get number() {\n return number().def(this.defaults.number)\n }\n static get array() {\n return array().def(this.defaults.array)\n }\n static get object() {\n return object().def(this.defaults.object)\n }\n static get integer() {\n return integer().def(this.defaults.integer)\n }\n static get symbol() {\n return symbol()\n }\n\n static get nullable() {\n return nullable()\n }\n\n static readonly custom = custom\n static readonly oneOf = oneOf\n static readonly instanceOf = instanceOf\n static readonly oneOfType = oneOfType\n static readonly arrayOf = arrayOf\n static readonly objectOf = objectOf\n static readonly shape = shape\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n static extend(...args: any[]) {\n warn(\n `VueTypes.extend has been removed. Use the ES6+ method instead. See https://dwightjack.github.io/vue-types/advanced/extending-vue-types.html#extending-namespaced-validators-in-es6 for details.`,\n )\n }\n\n static utils = {\n validate<T, U>(value: T, type: U) {\n return validateType<U, T>(type, value, true) === true\n },\n toType<T = unknown, Validable extends boolean = false>(\n name: string,\n obj: PropOptions<T>,\n validable: Validable = false as Validable,\n ): Validable extends true ? VueTypeValidableDef<T> : VueTypeDef<T> {\n return (\n validable ? toValidableType<T>(name, obj) : toType<T>(name, obj)\n ) as any\n },\n }\n })()\n\nfunction createTypes(defs: Partial<VueTypesDefaults> = typeDefaults()) {\n return class extends BaseVueTypes {\n static defaults: Partial<VueTypesDefaults> = { ...defs }\n\n static get sensibleDefaults() {\n return { ...this.defaults }\n }\n\n static set sensibleDefaults(v: boolean | Partial<VueTypesDefaults>) {\n if (v === false) {\n this.defaults = {}\n return\n }\n if (v === true) {\n this.defaults = { ...defs }\n return\n }\n this.defaults = { ...v }\n }\n }\n}\n\nexport default class VueTypes /*#__PURE__*/ extends createTypes() {}\n\nexport {\n any,\n func,\n bool,\n string,\n number,\n array,\n integer,\n symbol,\n object,\n custom,\n oneOf,\n oneOfType,\n arrayOf,\n instanceOf,\n objectOf,\n shape,\n nullable,\n createTypes,\n toType,\n toValidableType,\n validateType,\n fromType,\n config,\n}\n\nexport type VueTypesInterface = ReturnType<typeof createTypes>\nexport type { VueTypeDef, VueTypeValidableDef, VueTypeShape, VueTypeLooseShape }\n"],"names":["isPlainObject","warn","config","isInteger","isArray","type","props","typeDefaults"],"mappings":"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"}