UNPKG

vue-types

Version:
1 lines 14.4 kB
{"version":3,"file":"shim.cjs","sources":["../src/shim.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\nimport { isPlainObject } from './is-plain-obj'\nimport './global-this'\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 =\n Array.isArray ||\n function (value) {\n return Object.prototype.toString.call(value) === '[object Array]'\n }\n\nfunction 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\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 // eslint-disable-next-line @typescript-eslint/no-this-alias\n const t = this\n if (v === undefined) {\n if ('default' in this) {\n delete this.default\n }\n return this\n }\n if (isArray(v)) {\n t.default = () => deepClone(v)\n } else if (isPlainObject(v)) {\n t.default = () => deepClone(v)\n } else {\n t.default = v\n }\n return t\n },\n },\n isRequired: {\n get(this: any) {\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 if (!props.validator) {\n props.validator = () => true\n }\n\n return Object.defineProperties(props, descriptors)\n}\n\nexport { config }\n\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/* 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, 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 // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n t.validator && delete t.validator\n return t\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport const toValidableType = <T>(name: string, props: any) =>\n type(name, props, true)\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport const toType = <T>(name: string, props: any) => type(name, props)\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 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<T = any>(props: any): T {\n if (isArray(props)) {\n props.forEach((p) => this.extend(p))\n return this as any\n }\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 = 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<T, U>(\n _type: T,\n _value: U,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _silent = false,\n): string | boolean {\n return true\n}\n\nif (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\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\nexport default class VueTypes /*#__PURE__*/ extends createTypes() {}\n"],"names":["isPlainObject","type","config","typeDefaults"],"mappings":"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"}