vue-types
Version:
Prop types utility for Vue
1 lines • 13.2 kB
Source Map (JSON)
{"version":3,"file":"shim.cjs","sources":["../src/shim.ts"],"sourcesContent":["import { isPlainObject } from './is-plain-obj'\nimport { typeDefaults } from './sensibles'\nimport { config } from './config'\nimport type { VueTypesDefaults } from './types'\nexport type { VueTypeDef, VueTypeValidableDef } from './types'\nconst dfn = Object.defineProperty\n\nconst isArray = Array.isArray\n\nfunction deepClone<T>(input: T): T {\n if ('structuredClone' in globalThis) {\n return structuredClone(input)\n }\n if (Array.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\nfunction type(name: string, props: any = {}, validable = false): any {\n const descriptors: PropertyDescriptorMap = {\n _vueTypes_name: {\n value: name,\n writable: true,\n },\n def: {\n value(this: any, v: any) {\n if (v === undefined) {\n if ('default' in this) {\n delete this.default\n }\n return this\n }\n if (isArray(v)) {\n this.default = () => deepClone(v)\n } else if (isPlainObject(v)) {\n this.default = () => deepClone(v)\n } else {\n this.default = v\n }\n return this\n },\n },\n isRequired: {\n get(this: any) {\n this.required = true\n return this\n },\n },\n }\n\n if (validable) {\n descriptors.validate = {\n value() {},\n }\n }\n if (!props.validator) {\n props.validator = () => true\n }\n\n return Object.defineProperties(props, descriptors)\n}\n\nexport { config }\n\n// oxlint-disable-next-line typescript/no-unnecessary-type-parameters\ntype TypeShim = <_T = any>(...args: any[]) => any\n\nexport const any: TypeShim = () => type('any', {}, true)\nexport const func: TypeShim = () => type('func', { type: Function }, true)\nexport const bool = () => type('bool', { type: Boolean }, true)\nexport const string: TypeShim = () => type('string', { type: String }, true)\nexport const number: TypeShim = () => type('number', { type: Number }, true)\nexport const array: TypeShim = () => type('array', { type: Array }, true)\nexport const object: TypeShim = () => type('object', { type: Object }, true)\nexport const symbol = () => type('symbol')\nexport const integer: TypeShim = () => type('integer', { type: Number })\nexport const oneOf: TypeShim = (_a: any) => type('oneOf')\nexport const custom: TypeShim = (_a: any) => type('custom')\nexport const instanceOf: TypeShim = (Constr: any) =>\n type('instanceOf', { type: Constr })\nexport const oneOfType: TypeShim = (_a: any) => type('oneOfType')\nexport const arrayOf: TypeShim = (_a: any) => type('arrayOf', { type: Array })\n\nexport const objectOf: TypeShim = (_a: any) =>\n type('objectOf', { type: Object })\nexport const shape: TypeShim = (_a: any) =>\n dfn(type('shape', { type: Object }), 'loose', {\n get() {\n return this\n },\n })\nexport const nullable: TypeShim = () => ({\n type: null,\n})\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, Object.assign({}, props), validable).def(\n getter ? root.defaults[name] : undefined,\n ),\n }\n\n return dfn(root, name, descr)\n}\n\nexport function fromType(name: string, source: any, props: any = {}) {\n const t = type(name, Object.assign({}, source, props), !!source.validable)\n if (t.validator) {\n delete t.validator\n }\n return t\n}\n\n// oxlint-disable-next-line no-unused-vars typescript/no-unnecessary-type-parameters\nexport const toValidableType = <T>(name: string, props: any) =>\n type(name, props, true)\n// oxlint-disable-next-line no-unused-vars typescript/no-unnecessary-type-parameters\nexport const toType = <T>(name: string, props: any) => type(name, props)\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 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 get nullable() {\n return nullable()\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(props: any) {\n if (isArray(props)) {\n props.forEach((p) => this.extend(p))\n return this\n }\n const { name, validate, getter = false, type: _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 = Object.assign({}, defs)\n\n static get sensibleDefaults() {\n return Object.assign({}, 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 = Object.assign({}, defs)\n return\n }\n this.defaults = Object.assign({}, v)\n }\n }\n}\n\nexport function validateType(\n _type: any,\n _value: any,\n _silent = false,\n): string | boolean {\n return true\n}\n\nif (process.env.NODE_ENV !== 'production') {\n // oxlint-disable-next-line no-unused-expressions\n !config.silent &&\n console.warn(\n 'You are using the production shimmed version of VueTypes in a development build. Refer to https://vue-types.codeful.dev/guide/installation.html#production-build to learn how to configure VueTypes for usage in multiple environments.',\n )\n}\n\nexport default class VueTypes /*#__PURE__*/ extends createTypes() {}\n"],"names":["isPlainObject","config","typeDefaults"],"mappings":"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"}