UNPKG

vue-types

Version:
1 lines 44.6 kB
{"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 { 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 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 // oxlint-disable-next-line typescript/no-unsafe-type-assertion\n const type = (fn as VueProp<any>)?.type ?? fn\n if (type) {\n // oxlint-disable-next-line typescript/no-base-to-string\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 (isArray(input)) {\n // oxlint-disable-next-line typescript/no-unsafe-type-assertion\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 */\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 ? (msg: string, level = config.logLevel) => {\n if (!config.silent) {\n console[level](`[VueTypes warn]: ${msg}`)\n }\n }\n : noop\n}\n\nexport { warn }\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 */\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\nexport const isArray = Array.isArray\nconst hasOwn = Object.hasOwn\n\n/**\n * Checks if a value is a function\n *\n * @param value - Value to check\n */\nexport const isFunction = (value: unknown): value is Function =>\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 hasOwn(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 (hasOwn(value, 'type') ||\n ['_vueTypes_name', 'validator', 'default', 'required'].some((k) =>\n hasOwn(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 // oxlint-disable-next-line typescript/no-unsafe-type-assertion\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 */\nexport function unwrap(fn: WrappedFn | Function) {\n // oxlint-disable-next-line typescript/no-unsafe-type-assertion\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 type - Type to use for validation. Either a type object or a constructor\n * @param value - Value to check\n * @param silent - Silence warnings\n */\nexport function validateType(\n type: unknown,\n value: unknown,\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 (t: any) => validateType(t, value, true) === true,\n )\n expectedType = typeToCheck.type.map((t: any) => getType(t)).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 // oxlint-disable-next-line typescript/restrict-template-expressions\n const msg = `${namePrefix}value \"${value}\" should be of type \"${expectedType}\"`\n if (!silent) {\n warn(msg)\n return false\n }\n return msg\n }\n\n if (\n hasOwn(typeToCheck, 'validator') &&\n // oxlint-disable-next-line typescript/unbound-method\n isFunction(typeToCheck.validator)\n ) {\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) {\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 name - Type internal name\n * @param obj - Object to enhance\n */\nexport function toType<T = any>(name: string, obj: PropOptions<T>) {\n // oxlint-disable-next-line typescript/no-unsafe-type-assertion\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 (isArray(this.type) && this.type.includes(Boolean))\n ) {\n this.default = undefined\n return this\n }\n if (hasOwn(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 // oxlint-disable-next-line typescript/unbound-method\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 name - Type internal name\n * @param obj - Object to enhance\n */\n\nexport function toValidableType<T = any>(name: string, obj: PropOptions<T>) {\n const type = toType<T>(name, obj)\n // oxlint-disable-next-line typescript/no-unsafe-type-assertion\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 return Object.create(\n Object.getPrototypeOf(obj),\n Object.getOwnPropertyDescriptors(obj),\n )\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 // oxlint-disable-next-line typescript/unbound-method\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 // oxlint-disable-next-line typescript/unbound-method\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, p: any) {\n return (\n prevValidator.call(this, value, p) &&\n validator.call(this, value, p)\n )\n }\n : validator,\n copy,\n )\n }\n // 4. overwrite the rest, if present\n // oxlint-disable-next-line typescript/no-unsafe-type-assertion\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 // oxlint-disable-next-line typescript/no-unsafe-type-assertion\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 // oxlint-disable-next-line typescript/no-unsafe-type-assertion\n type: String as unknown as PropType<T>,\n })\n\nexport const number = <T extends number = number>() =>\n toValidableType<T>('number', {\n // oxlint-disable-next-line typescript/no-unsafe-type-assertion\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 // oxlint-disable-next-line typescript/no-unsafe-type-assertion\n type: Number as unknown as PropType<T>,\n validator(value) {\n const res = isInteger(value)\n if (!res) {\n warn(`integer - \"${value?.toString()}\" 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) {\n warn(`symbol - invalid value \"${value?.toString()}\"`)\n }\n return res\n },\n })\n\nexport const nullable = () =>\n Object.defineProperty(\n {\n // oxlint-disable-next-line typescript/no-unsafe-type-assertion\n type: null as unknown as PropType<null>,\n validator(value: unknown) {\n const res = value === null\n if (!res) {\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 // oxlint-disable-next-line typescript/no-unsafe-type-assertion\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 // oxlint-disable-next-line typescript/no-unsafe-type-assertion\n const constr = v.constructor as Prop<T[number]>\n // oxlint-disable-next-line 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 InferType<U>,\n U extends VueProp<any> | Prop<any> = any,\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 type V = InferType<U>\n\n let hasCustomValidators = false\n let hasNullable = false\n\n let nativeChecks: (Prop<V> | null)[] = []\n\n for (let i = 0; i < arr.length; i += 1) {\n const type = arr[i]\n if (isComplexType<V>(type)) {\n // oxlint-disable-next-line typescript/unbound-method\n if (isFunction(type.validator)) {\n hasCustomValidators = true\n }\n if (isVueTypeDef<V>(type, 'oneOf') && type.type) {\n nativeChecks = nativeChecks.concat(type.type)\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 // oxlint-disable-next-line typescript/no-unsafe-type-assertion\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 = !hasNullable && 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 // oxlint-disable-next-line typescript/no-unsafe-type-assertion\n type: typeProp as unknown as PropType<D>,\n })\n }\n\n return toType<D>('oneOfType', {\n // oxlint-disable-next-line typescript/no-unsafe-type-assertion\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)}`)\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)}`)\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 // oxlint-disable-next-line typescript/no-unsafe-type-assertion\n const keys = Object.keys(obj) as (keyof T)[]\n // oxlint-disable-next-line typescript/no-unsafe-type-assertion\n const requiredKeys = keys.filter((key) => !!(obj as any)[key]?.required)\n\n // oxlint-disable-next-line typescript/no-unsafe-type-assertion\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 // oxlint-disable-next-line typescript/no-unsafe-type-assertion\n const valueKeys = Object.keys(value) as (keyof T)[]\n\n // check for required keys (if any)\n if (requiredKeys.some((req) => valueKeys.indexOf(req) === -1)) {\n const missing = requiredKeys.filter(\n (req) => valueKeys.indexOf(req) === -1,\n )\n if (missing.length === 1) {\n warn(\n `shape - required property \"${missing[0]?.toString()}\" is not defined.`,\n )\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 // oxlint-disable-next-line typescript/no-unsafe-type-assertion\n if ((this as VueTypeLooseShape<T>)._vueTypes_isLoose) return true\n warn(\n `shape - shape definition does not include a \"${key.toString()}\" property. Allowed keys: \"${keys.join(\n '\", \"',\n )}\".`,\n )\n return false\n }\n const _type = obj[key]\n // oxlint-disable-next-line typescript/no-unsafe-type-assertion\n const valid = validateType(_type, (value as T)[key], true)\n if (typeof valid === 'string') {\n warn(\n `shape - \"${key?.toString()}\" property validation error:\\n ${indent(valid)}`,\n )\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\nfunction utilsToType<T = unknown>(\n name: string,\n obj: PropOptions<T>,\n validable: true,\n): VueTypeValidableDef<T>\nfunction utilsToType<T = unknown>(\n name: string,\n obj: PropOptions<T>,\n validable?: false,\n): VueTypeDef<T>\nfunction utilsToType<T = unknown>(\n name: string,\n obj: PropOptions<T>,\n validable = false,\n): VueTypeDef<T> | VueTypeValidableDef<T> {\n return validable ? toValidableType<T>(name, obj) : toType<T>(name, obj)\n}\n\nconst BaseVueTypes = /*#__PURE__*/ (() =>\n // oxlint-disable-next-line no-shadow, typescript/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 static extend(..._args: any[]) {\n warn(\n `VueTypes.extend has been removed. Use the ES6+ method instead. See https://vue-types.codeful.dev/namespaced-usage/extend.html#extending-namespaced-validators-in-es6 for details.`,\n )\n }\n\n static utils = {\n validate(value: unknown, type: unknown) {\n return validateType(type, value, true) === true\n },\n toType: utilsToType,\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","config","isInteger","typeDefaults"],"mappings":"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"}