vue-types
Version:
Prop types utility for Vue
1 lines • 10.8 kB
Source Map (JSON)
{"version":3,"file":"shim.cjs","sources":["../node_modules/is-plain-object/dist/is-plain-object.mjs","../src/config.ts","../src/shim.ts","../src/sensibles.ts","../src/shim.cjs.ts"],"sourcesContent":["/*!\n * is-plain-object <https://github.com/jonschlinkert/is-plain-object>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nfunction isObject(o) {\n return Object.prototype.toString.call(o) === '[object Object]';\n}\n\nfunction isPlainObject(o) {\n var ctor,prot;\n\n if (isObject(o) === false) return false;\n\n // If has modified constructor\n ctor = o.constructor;\n if (ctor === undefined) return true;\n\n // If has modified prototype\n prot = ctor.prototype;\n if (isObject(prot) === false) return false;\n\n // If constructor does not have an Object-specific method\n if (prot.hasOwnProperty('isPrototypeOf') === false) {\n return false;\n }\n\n // Most likely a plain Object\n return true;\n}\n\nexport { isPlainObject };\n","export const config = {\n silent: false,\n}\n","import { isPlainObject } from 'is-plain-object'\nimport { typeDefaults } from './sensibles'\nimport { config } from './config'\nimport { VueTypesDefaults } from './types'\nexport { VueTypeDef, VueTypeValidableDef } from './types'\nconst dfn = Object.defineProperty\n\nconst isArray =\n Array.isArray ||\n function (value) {\n return Object.prototype.toString.call(value) === '[object Array]'\n }\n\nfunction type<T = any>(name: string, props: any = {}, validable = false): T {\n const descriptors: PropertyDescriptorMap = {\n _vueTypes_name: {\n value: name,\n writable: true,\n },\n def: {\n value(v) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const t = this\n if (v === undefined && !t.default) {\n return t\n }\n if (isArray(v)) {\n t.default = () => [].concat(v)\n } else if (isPlainObject(v)) {\n t.default = () => Object.assign({}, v)\n } else {\n t.default = v\n }\n return t\n },\n },\n isRequired: {\n get() {\n this.required = true\n return this\n },\n },\n }\n\n if (validable) {\n ;(descriptors as any).validate = {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n value() {},\n }\n }\n return Object.assign(\n Object.defineProperties(\n {\n validator: () => true,\n },\n descriptors,\n ),\n props,\n )\n}\n\nexport { config }\n\nexport const any = () => type('any', {}, true)\nexport const func = <T = any>() => type<T>('func', { type: Function }, true)\nexport const bool = () => type('bool', { type: Boolean }, true)\nexport const string = () => type('string', { type: String }, true)\nexport const number = () => type('number', { type: Number }, true)\nexport const array = <T = any>() => type<T>('array', { type: Array }, true)\nexport const object = <T = any>() => type<T>('object', { type: Object }, true)\nexport const symbol = () => type('symbol')\nexport const integer = () => type('integer', { type: Number })\n/* eslint-disable @typescript-eslint/no-unused-vars */\nexport const oneOf = <T = any>(a: any) => type<T>('oneOf')\nexport const custom = <T = any>(a: any) => type<T>('custom')\nexport const instanceOf = <T = any>(Constr: any) =>\n type<T>('instanceOf', { type: Constr })\nexport const oneOfType = <T = any>(a: any) => type<T>('oneOfType')\nexport const arrayOf = <T = any>(a: any) => type<T>('arrayOf', { type: Array })\n\nexport const objectOf = <T = any>(a: any) =>\n type<T>('objectOf', { type: Object })\nexport const shape = <T = any>(a: any) =>\n dfn(\n type<T>('shape', { type: Object }),\n 'loose',\n {\n get() {\n return this\n },\n },\n )\n/* eslint-enable @typescript-eslint/no-unused-vars */\n\nfunction createValidator(\n root: any,\n name: string,\n props: any,\n getter = false,\n validable = false,\n) {\n const prop = getter ? 'get' : 'value'\n const descr = {\n [prop]: () =>\n type(name, props, validable).def(\n getter ? root.defaults[name] : undefined,\n ),\n }\n\n return dfn(root, name, descr)\n}\n\nconst BaseVueTypes = /*#__PURE__*/ (() =>\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 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 symbol() {\n return symbol()\n }\n static get integer() {\n return integer().def(this.defaults.integer)\n }\n static oneOf = oneOf\n static custom = custom\n static instanceOf = instanceOf\n static oneOfType = oneOfType\n static arrayOf = arrayOf\n static objectOf = objectOf\n static shape = shape\n static extend<T = any>(props): T {\n const { name, validate, getter = false, type = null } = props\n // If we are inheriting from a custom type, let's ignore the type property\n const extType = isPlainObject(type) && type.type ? null : type\n return createValidator(this, name, { type: extType }, getter, !!validate)\n }\n static utils = {\n toType: type as (...args: any[]) => any,\n validate: (...args: any[]) => !!args,\n }\n })()\n\nexport function createTypes(defs: Partial<VueTypesDefaults> = typeDefaults()) {\n return class extends BaseVueTypes {\n static defaults = { ...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\n/* eslint-disable no-console */\nif (process.env.NODE_ENV !== 'production') {\n config.silent === false &&\n console.warn(\n 'You are using the production shimmed version of VueTypes in a development build. Refer to https://dwightjack.github.io/vue-types/guide/installation.html#production-build to learn how to configure VueTypes for usage in multiple environments.',\n )\n}\n/* eslint-enable no-console */\n\nexport default class VueTypes /*#__PURE__*/ extends createTypes() {}\n","import { VueTypesDefaults } from './types'\n\nexport const typeDefaults = (): VueTypesDefaults => ({\n func: () => undefined,\n bool: true,\n string: '',\n number: 0,\n array: () => [],\n object: () => ({}),\n integer: 0,\n})\n","import VueTypes from './shim'\nObject.defineProperty(exports, '__esModule', {\n value: true,\n})\n\nexport default VueTypes\n\nexport * from './shim'\n"],"names":["isObject","o","Object","prototype","toString","call","isPlainObject","ctor","prot","undefined","constructor","hasOwnProperty","config","silent","dfn","defineProperty","isArray","Array","value","type","name","props","validable","descriptors","_vueTypes_name","writable","def","v","t","this","concat","assign","isRequired","get","required","validate","defineProperties","validator","any","func","Function","bool","Boolean","string","String","number","Number","array","object","symbol","integer","oneOf","a","custom","instanceOf","Constr","oneOfType","arrayOf","objectOf","shape","createValidator","root","getter","descr","defaults","BaseVueTypes","extend","_a","toType","createTypes","defs","process","env","NODE_ENV","console","warn","VueTypes","exports"],"mappings":"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"}